@salla.sa/twilight-components 2.14.250 → 2.14.252
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/{app-globals-BgNFpKiG.js → app-globals-ChKTQEJ9.js} +3 -3
- package/dist/cjs/{app-globals-BgNFpKiG.js.map → app-globals-ChKTQEJ9.js.map} +1 -1
- package/dist/cjs/{index-DFk4JQs_.js → index-DtXwvL5X.js} +4 -4
- package/dist/cjs/index-DtXwvL5X.js.map +1 -0
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/salla-accordion-body.cjs.entry.js +1 -1
- package/dist/cjs/salla-accordion-head.cjs.entry.js +1 -1
- package/dist/cjs/salla-accordion.cjs.entry.js +1 -1
- package/dist/cjs/salla-add-product-button_51.cjs.entry.js +1 -1
- 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-booking-field_2.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-filters-widget.cjs.entry.js +1 -1
- package/dist/cjs/salla-filters.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-summary.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-product-options.cjs.entry.js +22 -1
- package/dist/cjs/salla-product-options.cjs.entry.js.map +1 -1
- package/dist/cjs/salla-product-options.entry.cjs.js.map +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-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/collection/components/salla-product-options/salla-product-options.js +21 -0
- package/dist/collection/components/salla-product-options/salla-product-options.js.map +1 -1
- package/dist/components/index.js +2 -2
- package/dist/components/index.js.map +1 -1
- package/dist/components/salla-product-options.js +21 -0
- package/dist/components/salla-product-options.js.map +1 -1
- package/dist/esm/{app-globals-DoDOGg4t.js → app-globals-3b0DwjjK.js} +3 -3
- package/dist/esm/{app-globals-DoDOGg4t.js.map → app-globals-3b0DwjjK.js.map} +1 -1
- package/dist/esm/{index-Fh3juwdj.js → index-D4D34Ujk.js} +4 -4
- package/dist/esm/index-D4D34Ujk.js.map +1 -0
- package/dist/esm/loader.js +3 -3
- package/dist/esm/salla-accordion-body.entry.js +1 -1
- package/dist/esm/salla-accordion-head.entry.js +1 -1
- package/dist/esm/salla-accordion.entry.js +1 -1
- package/dist/esm/salla-add-product-button_51.entry.js +1 -1
- 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-booking-field_2.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-filters-widget.entry.js +1 -1
- package/dist/esm/salla-filters.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-summary.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-product-options.entry.js +22 -1
- package/dist/esm/salla-product-options.entry.js.map +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-verify.entry.js +1 -1
- package/dist/esm/salla-wallet.entry.js +1 -1
- package/dist/esm/twilight.js +3 -3
- package/dist/esm-es5/{app-globals-DoDOGg4t.js → app-globals-3b0DwjjK.js} +2 -2
- package/dist/esm-es5/{app-globals-DoDOGg4t.js.map → app-globals-3b0DwjjK.js.map} +1 -1
- package/dist/esm-es5/{index-Fh3juwdj.js → index-D4D34Ujk.js} +3 -3
- package/dist/esm-es5/index-D4D34Ujk.js.map +1 -0
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/salla-accordion-body.entry.js +1 -1
- package/dist/esm-es5/salla-accordion-head.entry.js +1 -1
- package/dist/esm-es5/salla-accordion.entry.js +1 -1
- package/dist/esm-es5/salla-add-product-button_51.entry.js +1 -1
- package/dist/esm-es5/salla-advertisement.entry.js +1 -1
- package/dist/esm-es5/salla-app-install-alert.entry.js +1 -1
- package/dist/esm-es5/salla-apps-icons.entry.js +1 -1
- package/dist/esm-es5/salla-booking-field_2.entry.js +1 -1
- package/dist/esm-es5/salla-cart-item-offers.entry.js +1 -1
- package/dist/esm-es5/salla-conditional-offer.entry.js +1 -1
- package/dist/esm-es5/salla-contacts.entry.js +1 -1
- package/dist/esm-es5/salla-filters-widget.entry.js +1 -1
- package/dist/esm-es5/salla-filters.entry.js +1 -1
- package/dist/esm-es5/salla-installment.entry.js +1 -1
- package/dist/esm-es5/salla-loyalty-prize-item.entry.js +1 -1
- package/dist/esm-es5/salla-loyalty-program.entry.js +1 -1
- package/dist/esm-es5/salla-metadata.entry.js +1 -1
- package/dist/esm-es5/salla-notification-item.entry.js +1 -1
- package/dist/esm-es5/salla-notifications.entry.js +1 -1
- package/dist/esm-es5/salla-offer.entry.js +1 -1
- package/dist/esm-es5/salla-order-summary.entry.js +1 -1
- package/dist/esm-es5/salla-orders.entry.js +1 -1
- package/dist/esm-es5/salla-payments.entry.js +1 -1
- package/dist/esm-es5/salla-price-range.entry.js +1 -1
- package/dist/esm-es5/salla-product-options.entry.js +1 -1
- package/dist/esm-es5/salla-product-options.entry.js.map +1 -1
- package/dist/esm-es5/salla-review-card.entry.js +1 -1
- package/dist/esm-es5/salla-reviews-page.entry.js +1 -1
- package/dist/esm-es5/salla-reviews.entry.js +1 -1
- package/dist/esm-es5/salla-social.entry.js +1 -1
- package/dist/esm-es5/salla-tiered-offer.entry.js +1 -1
- package/dist/esm-es5/salla-tooltip.entry.js +1 -1
- package/dist/esm-es5/salla-verify.entry.js +1 -1
- package/dist/esm-es5/salla-wallet.entry.js +1 -1
- package/dist/esm-es5/twilight.js +1 -1
- package/dist/twilight/{p-c8409d01.system.entry.js → p-06b95a05.system.entry.js} +2 -2
- package/dist/twilight/{p-8c4ff806.entry.js → p-1055f2fb.entry.js} +2 -2
- package/dist/twilight/{p-feb47383.system.entry.js → p-13324cdd.system.entry.js} +2 -2
- package/dist/twilight/{p-2c7106a0.entry.js → p-154fc672.entry.js} +2 -2
- package/dist/twilight/{p-3f5fc0ac.entry.js → p-17c50686.entry.js} +2 -2
- package/dist/twilight/{p-41858b7a.entry.js → p-17ee3d18.entry.js} +2 -2
- package/dist/twilight/{p-65e55582.system.entry.js → p-1a9eebb6.system.entry.js} +2 -2
- package/dist/twilight/{p-af947a45.system.entry.js → p-1b24ea99.system.entry.js} +2 -2
- package/dist/twilight/{p-51fff39f.entry.js → p-2ae75a1c.entry.js} +2 -2
- package/dist/twilight/{p-ea4cddf9.system.entry.js → p-2af0da5a.system.entry.js} +2 -2
- package/dist/twilight/{p-969a72ac.entry.js → p-2ecf868e.entry.js} +2 -2
- package/dist/twilight/{p-ef1c9026.system.entry.js → p-3483eb09.system.entry.js} +2 -2
- package/dist/twilight/p-3483eb09.system.entry.js.map +1 -0
- package/dist/twilight/{p-90b19a52.entry.js → p-396198a2.entry.js} +2 -2
- package/dist/twilight/{p-f4dd7c30.entry.js → p-3eaddcf1.entry.js} +2 -2
- package/dist/twilight/{p-6e2c5013.system.entry.js → p-407d19d8.system.entry.js} +2 -2
- package/dist/twilight/{p-ce2994fb.system.entry.js → p-40e20722.system.entry.js} +2 -2
- package/dist/twilight/{p-c5bdc891.system.entry.js → p-423d91f5.system.entry.js} +3 -3
- package/dist/twilight/{p-5aa8dd63.system.entry.js → p-442340d3.system.entry.js} +2 -2
- package/dist/twilight/{p-67a30d9c.entry.js → p-45b61475.entry.js} +2 -2
- package/dist/twilight/{p-b0342394.entry.js → p-4af5ffea.entry.js} +2 -2
- package/dist/twilight/{p-ed74ff73.system.entry.js → p-4d6baea7.system.entry.js} +2 -2
- package/dist/twilight/{p-4f532944.system.entry.js → p-553bc6b4.system.entry.js} +2 -2
- package/dist/twilight/{p-12ec4275.entry.js → p-5542a867.entry.js} +2 -2
- package/dist/twilight/{p-dca1a091.entry.js → p-58085711.entry.js} +2 -2
- package/dist/twilight/{p-c143cae6.system.entry.js → p-5b882c52.system.entry.js} +2 -2
- package/dist/twilight/{p-caf5e9c0.system.entry.js → p-60bf8746.system.entry.js} +3 -3
- package/dist/twilight/{p-a4373a58.entry.js → p-63a5bdc6.entry.js} +2 -2
- package/dist/twilight/{p-9b377923.entry.js → p-63cba8e3.entry.js} +2 -2
- package/dist/twilight/{p-8422a030.entry.js → p-648fb6ca.entry.js} +2 -2
- package/dist/twilight/{p-3011ae50.entry.js → p-669db4df.entry.js} +2 -2
- package/dist/twilight/{p-07e383ed.entry.js → p-6a0b5799.entry.js} +2 -2
- package/dist/twilight/{p-2fc264a5.system.entry.js → p-6b716e82.system.entry.js} +2 -2
- package/dist/twilight/{p-d2f4c095.system.entry.js → p-6e24a5f0.system.entry.js} +2 -2
- package/dist/twilight/{p-0093b63c.system.entry.js → p-7234c5f2.system.entry.js} +2 -2
- package/dist/twilight/{p-bcb8b7a7.system.entry.js → p-7eff7dc5.system.entry.js} +2 -2
- package/dist/twilight/{p-d3177b59.entry.js → p-81aeef6a.entry.js} +2 -2
- package/dist/twilight/{p-3c7322ea.system.entry.js → p-8213a9ef.system.entry.js} +2 -2
- package/dist/twilight/{p-d6d41f95.entry.js → p-8359eb2a.entry.js} +2 -2
- package/dist/twilight/{p-48c8c116.system.entry.js → p-8c0822f7.system.entry.js} +2 -2
- package/dist/twilight/{p-f8232bd5.entry.js → p-95adf84e.entry.js} +2 -2
- package/dist/twilight/{p-CXK1rNlC.system.js → p-B0xoNOFR.system.js} +3 -3
- package/dist/twilight/p-B0xoNOFR.system.js.map +1 -0
- package/dist/twilight/{p-B5711wvS.system.js.map → p-BHI6mAw4.system.js.map} +1 -1
- package/dist/twilight/{p-kq1kexdS.system.js.map → p-BJUBMQeL.system.js.map} +1 -1
- package/dist/twilight/{p-ClGf-mQe.system.js.map → p-BN8tVPbo.system.js.map} +1 -1
- package/dist/twilight/{p-DFHtpaXy.system.js.map → p-BRsVFuI-.system.js.map} +1 -1
- package/dist/twilight/{p-B_e6C9C7.system.js.map → p-BXoB3JpD.system.js.map} +1 -1
- package/dist/twilight/{p-CQ0P5lf7.system.js.map → p-B_aBck2N.system.js.map} +1 -1
- package/dist/twilight/{p-BlIQW2lO.system.js.map → p-BbDuw4AO.system.js.map} +1 -1
- package/dist/twilight/{p-yR-D_QVV.system.js.map → p-Bqv1miCk.system.js.map} +1 -1
- package/dist/twilight/{p-CjFC0ce0.system.js.map → p-BrxIkK1y.system.js.map} +1 -1
- package/dist/twilight/{p-Dm-9Eytr.system.js.map → p-BxORDCZ3.system.js.map} +1 -1
- package/dist/twilight/{p-F0k7g9iY.system.js.map → p-ByNC3ygM.system.js.map} +1 -1
- package/dist/twilight/{p-C7zV68dE.system.js.map → p-C-vbYsMC.system.js.map} +1 -1
- package/dist/twilight/{p-RTeyQLWy.system.js.map → p-C9DFiJHW.system.js.map} +1 -1
- package/dist/twilight/{p-CuT3SRo-.system.js.map → p-CB3G0Z8y.system.js.map} +1 -1
- package/dist/twilight/{p-C7pQcCCO.system.js.map → p-CDmxJQ_1.system.js.map} +1 -1
- package/dist/twilight/{p-CJCijTkx.system.js.map → p-CNqFfslE.system.js.map} +1 -1
- package/dist/twilight/{p-AKVBtuMk.system.js.map → p-CVW8a0jw.system.js.map} +1 -1
- package/dist/twilight/{p-oQO9FKN9.system.js.map → p-CZGaqTus.system.js.map} +1 -1
- package/dist/twilight/{p-BEv7FXnl.system.js.map → p-CaCB348j.system.js.map} +1 -1
- package/dist/twilight/{p-D7rVz8w9.system.js.map → p-Cc6e2YrQ.system.js.map} +1 -1
- package/dist/twilight/{p-I3V9OjUh.system.js.map → p-Ccj70VFr.system.js.map} +1 -1
- package/dist/twilight/{p-DL20L4sR.system.js.map → p-CgDN9ZEV.system.js.map} +1 -1
- package/dist/twilight/{p-BGI8pwzX.system.js.map → p-CiGTTlgd.system.js.map} +1 -1
- package/dist/twilight/{p-xqp4ddQE.system.js.map → p-Cs3Irr4v.system.js.map} +1 -1
- package/dist/twilight/{p-Fh3juwdj.js → p-D4D34Ujk.js} +3 -3
- package/dist/twilight/p-D4D34Ujk.js.map +1 -0
- package/dist/twilight/{p-6K3EacFl.system.js → p-DMKkUrkS.system.js} +2 -2
- package/dist/twilight/{p-6K3EacFl.system.js.map → p-DMKkUrkS.system.js.map} +1 -1
- package/dist/twilight/{p-C5ceUSVS.js → p-DNiQ_YXx.js} +2 -2
- package/dist/twilight/{p-C5ceUSVS.js.map → p-DNiQ_YXx.js.map} +1 -1
- package/dist/twilight/{p-C1ANpTev.system.js.map → p-DVnmchft.system.js.map} +1 -1
- package/dist/twilight/{p-JqK0adg-.system.js.map → p-Daef3WlT.system.js.map} +1 -1
- package/dist/twilight/{p-DDYb73x9.system.js.map → p-DlRNuq8n.system.js.map} +1 -1
- package/dist/twilight/{p-DXIfbc_E.system.js.map → p-DvrwOwqK.system.js.map} +1 -1
- package/dist/twilight/{p-CsNoOX-E.system.js → p-DxRZfb-O.system.js} +2 -2
- package/dist/twilight/{p-CsNoOX-E.system.js.map → p-DxRZfb-O.system.js.map} +1 -1
- package/dist/twilight/p-O_6m6zp3.system.js.map +1 -0
- package/dist/twilight/{p-0Yb-UePn.system.js.map → p-OzJ9XEsV.system.js.map} +1 -1
- package/dist/twilight/{p-CV9enCHU.system.js.map → p-TrPvZWq-.system.js.map} +1 -1
- package/dist/twilight/{p-11c6d38a.system.entry.js → p-a18f81a8.system.entry.js} +2 -2
- package/dist/twilight/{p-5e07c206.system.entry.js → p-a1d102d3.system.entry.js} +2 -2
- package/dist/twilight/{p-b3e42e7f.system.entry.js → p-aad20f10.system.entry.js} +2 -2
- package/dist/twilight/{p-0d5aa57d.system.entry.js → p-ab7cc63a.system.entry.js} +2 -2
- package/dist/twilight/{p-0ecc5067.system.entry.js → p-ad0fedcd.system.entry.js} +2 -2
- package/dist/twilight/{p-89bfcbd9.entry.js → p-c0363ba7.entry.js} +2 -2
- package/dist/twilight/{p-72dbdf8a.entry.js → p-c84819d5.entry.js} +2 -2
- package/dist/twilight/{p-84efc4e5.system.entry.js → p-c87d6aa6.system.entry.js} +2 -2
- package/dist/twilight/{p-f0ad1f7a.system.entry.js → p-c9678188.system.entry.js} +2 -2
- package/dist/twilight/{p-a74c3613.entry.js → p-d0004953.entry.js} +2 -2
- package/dist/twilight/{p-aa17ca75.system.entry.js → p-d097a67d.system.entry.js} +2 -2
- package/dist/twilight/{p-cc88bd11.entry.js → p-d15630dd.entry.js} +2 -2
- package/dist/twilight/{p-15109abe.entry.js → p-d513da6f.entry.js} +2 -2
- package/dist/twilight/{p-be0c1dee.entry.js → p-d5750810.entry.js} +2 -2
- package/dist/twilight/{p-1d675685.entry.js → p-d84eb47c.entry.js} +2 -2
- package/dist/twilight/{p-8e87d5bb.entry.js → p-dd83a408.entry.js} +2 -2
- package/dist/twilight/{p-BqsAYW_z.system.js.map → p-e-FAhVeu.system.js.map} +1 -1
- package/dist/twilight/{p-2ae3f0e1.system.entry.js → p-e2ab2b64.system.entry.js} +2 -2
- package/dist/twilight/{p-31c2d596.entry.js → p-e784d087.entry.js} +2 -2
- package/dist/twilight/{p-777970a0.system.entry.js → p-e823d4e8.system.entry.js} +2 -2
- package/dist/twilight/{p-eab0ef43.system.entry.js → p-e9bc1fa4.system.entry.js} +2 -2
- package/dist/twilight/{p-5b0c8164.system.entry.js → p-ebd4ac51.system.entry.js} +2 -2
- package/dist/twilight/{p-314b3b1d.system.entry.js → p-ef38f4ac.system.entry.js} +2 -2
- package/dist/twilight/{p-cbd8cbee.entry.js → p-f57bcc51.entry.js} +2 -2
- package/dist/twilight/{p-b07d4935.entry.js → p-f745fcad.entry.js} +2 -2
- package/dist/twilight/p-fbe10567.entry.js +5 -0
- package/dist/twilight/p-fbe10567.entry.js.map +1 -0
- package/dist/twilight/{p-d8605d58.entry.js → p-fcc64f6d.entry.js} +2 -2
- package/dist/twilight/{p-BeIXRKnY.system.js.map → p-ofxyuLsh.system.js.map} +1 -1
- package/dist/twilight/{p-OPHJjNOp.system.js.map → p-u0que_SA.system.js.map} +1 -1
- package/dist/twilight/salla-product-options.entry.esm.js.map +1 -1
- package/dist/twilight/twilight.esm.js +1 -1
- package/dist/twilight/twilight.js +1 -1
- package/dist/types/components/salla-product-options/salla-product-options.d.ts +1 -0
- package/package.json +5 -5
- package/dist/cjs/index-DFk4JQs_.js.map +0 -1
- package/dist/esm/index-Fh3juwdj.js.map +0 -1
- package/dist/esm-es5/index-Fh3juwdj.js.map +0 -1
- package/dist/twilight/p-86a30b82.entry.js +0 -5
- package/dist/twilight/p-86a30b82.entry.js.map +0 -1
- package/dist/twilight/p-CXK1rNlC.system.js.map +0 -1
- package/dist/twilight/p-DydKtKGm.system.js.map +0 -1
- package/dist/twilight/p-Fh3juwdj.js.map +0 -1
- package/dist/twilight/p-ef1c9026.system.entry.js.map +0 -1
- /package/dist/twilight/{p-c8409d01.system.entry.js.map → p-06b95a05.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-8c4ff806.entry.js.map → p-1055f2fb.entry.js.map} +0 -0
- /package/dist/twilight/{p-feb47383.system.entry.js.map → p-13324cdd.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-2c7106a0.entry.js.map → p-154fc672.entry.js.map} +0 -0
- /package/dist/twilight/{p-3f5fc0ac.entry.js.map → p-17c50686.entry.js.map} +0 -0
- /package/dist/twilight/{p-41858b7a.entry.js.map → p-17ee3d18.entry.js.map} +0 -0
- /package/dist/twilight/{p-65e55582.system.entry.js.map → p-1a9eebb6.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-af947a45.system.entry.js.map → p-1b24ea99.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-51fff39f.entry.js.map → p-2ae75a1c.entry.js.map} +0 -0
- /package/dist/twilight/{p-ea4cddf9.system.entry.js.map → p-2af0da5a.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-969a72ac.entry.js.map → p-2ecf868e.entry.js.map} +0 -0
- /package/dist/twilight/{p-90b19a52.entry.js.map → p-396198a2.entry.js.map} +0 -0
- /package/dist/twilight/{p-f4dd7c30.entry.js.map → p-3eaddcf1.entry.js.map} +0 -0
- /package/dist/twilight/{p-6e2c5013.system.entry.js.map → p-407d19d8.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-ce2994fb.system.entry.js.map → p-40e20722.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-c5bdc891.system.entry.js.map → p-423d91f5.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-5aa8dd63.system.entry.js.map → p-442340d3.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-67a30d9c.entry.js.map → p-45b61475.entry.js.map} +0 -0
- /package/dist/twilight/{p-b0342394.entry.js.map → p-4af5ffea.entry.js.map} +0 -0
- /package/dist/twilight/{p-ed74ff73.system.entry.js.map → p-4d6baea7.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-4f532944.system.entry.js.map → p-553bc6b4.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-12ec4275.entry.js.map → p-5542a867.entry.js.map} +0 -0
- /package/dist/twilight/{p-dca1a091.entry.js.map → p-58085711.entry.js.map} +0 -0
- /package/dist/twilight/{p-c143cae6.system.entry.js.map → p-5b882c52.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-caf5e9c0.system.entry.js.map → p-60bf8746.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-a4373a58.entry.js.map → p-63a5bdc6.entry.js.map} +0 -0
- /package/dist/twilight/{p-9b377923.entry.js.map → p-63cba8e3.entry.js.map} +0 -0
- /package/dist/twilight/{p-8422a030.entry.js.map → p-648fb6ca.entry.js.map} +0 -0
- /package/dist/twilight/{p-3011ae50.entry.js.map → p-669db4df.entry.js.map} +0 -0
- /package/dist/twilight/{p-07e383ed.entry.js.map → p-6a0b5799.entry.js.map} +0 -0
- /package/dist/twilight/{p-2fc264a5.system.entry.js.map → p-6b716e82.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-d2f4c095.system.entry.js.map → p-6e24a5f0.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-0093b63c.system.entry.js.map → p-7234c5f2.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-bcb8b7a7.system.entry.js.map → p-7eff7dc5.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-d3177b59.entry.js.map → p-81aeef6a.entry.js.map} +0 -0
- /package/dist/twilight/{p-3c7322ea.system.entry.js.map → p-8213a9ef.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-d6d41f95.entry.js.map → p-8359eb2a.entry.js.map} +0 -0
- /package/dist/twilight/{p-48c8c116.system.entry.js.map → p-8c0822f7.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-f8232bd5.entry.js.map → p-95adf84e.entry.js.map} +0 -0
- /package/dist/twilight/{p-11c6d38a.system.entry.js.map → p-a18f81a8.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-5e07c206.system.entry.js.map → p-a1d102d3.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-b3e42e7f.system.entry.js.map → p-aad20f10.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-0d5aa57d.system.entry.js.map → p-ab7cc63a.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-0ecc5067.system.entry.js.map → p-ad0fedcd.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-89bfcbd9.entry.js.map → p-c0363ba7.entry.js.map} +0 -0
- /package/dist/twilight/{p-72dbdf8a.entry.js.map → p-c84819d5.entry.js.map} +0 -0
- /package/dist/twilight/{p-84efc4e5.system.entry.js.map → p-c87d6aa6.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-f0ad1f7a.system.entry.js.map → p-c9678188.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-a74c3613.entry.js.map → p-d0004953.entry.js.map} +0 -0
- /package/dist/twilight/{p-aa17ca75.system.entry.js.map → p-d097a67d.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-cc88bd11.entry.js.map → p-d15630dd.entry.js.map} +0 -0
- /package/dist/twilight/{p-15109abe.entry.js.map → p-d513da6f.entry.js.map} +0 -0
- /package/dist/twilight/{p-be0c1dee.entry.js.map → p-d5750810.entry.js.map} +0 -0
- /package/dist/twilight/{p-1d675685.entry.js.map → p-d84eb47c.entry.js.map} +0 -0
- /package/dist/twilight/{p-8e87d5bb.entry.js.map → p-dd83a408.entry.js.map} +0 -0
- /package/dist/twilight/{p-2ae3f0e1.system.entry.js.map → p-e2ab2b64.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-31c2d596.entry.js.map → p-e784d087.entry.js.map} +0 -0
- /package/dist/twilight/{p-777970a0.system.entry.js.map → p-e823d4e8.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-eab0ef43.system.entry.js.map → p-e9bc1fa4.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-5b0c8164.system.entry.js.map → p-ebd4ac51.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-314b3b1d.system.entry.js.map → p-ef38f4ac.system.entry.js.map} +0 -0
- /package/dist/twilight/{p-cbd8cbee.entry.js.map → p-f57bcc51.entry.js.map} +0 -0
- /package/dist/twilight/{p-b07d4935.entry.js.map → p-f745fcad.entry.js.map} +0 -0
- /package/dist/twilight/{p-d8605d58.entry.js.map → p-fcc64f6d.entry.js.map} +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* Crafted with ❤ by Salla
|
|
3
3
|
*/
|
|
4
|
-
import{r as s,h as t}from"./p-
|
|
5
|
-
//# sourceMappingURL=p-
|
|
4
|
+
import{r as s,h as t}from"./p-D4D34Ujk.js";import{I as a}from"./p-uTyAzPSy.js";var e=`\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>file-archive</title>\n<path d="M17.333 16h-5.333c-0.737 0-1.333 0.597-1.333 1.333v2.667c0 2.205 1.795 4 4 4s4-1.795 4-4v-2.667c0-0.736-0.596-1.333-1.333-1.333zM16 20c0 0.735-0.597 1.333-1.333 1.333s-1.333-0.599-1.333-1.333v-1.333h2.667zM17.333 12h-5.333c-0.737 0-1.333 0.597-1.333 1.333s0.596 1.333 1.333 1.333h5.333c0.737 0 1.333-0.597 1.333-1.333s-0.596-1.333-1.333-1.333zM28.943 8.391l-8-8c-0.249-0.251-0.588-0.391-0.943-0.391h-13.333c-2.205 0-4 1.795-4 4v24c0 2.205 1.795 4 4 4h18.667c2.205 0 4-1.795 4-4v-18.667c0-0.353-0.14-0.693-0.391-0.943zM26.667 28c0 0.735-0.597 1.333-1.333 1.333h-18.667c-0.736 0-1.333-0.599-1.333-1.333v-24c0-0.735 0.597-1.333 1.333-1.333h12.781l7.219 7.219zM17.333 8h-5.333c-0.737 0-1.333 0.597-1.333 1.333s0.596 1.333 1.333 1.333h5.333c0.737 0 1.333-0.597 1.333-1.333s-0.596-1.333-1.333-1.333zM17.333 4h-5.333c-0.737 0-1.333 0.597-1.333 1.333s0.596 1.333 1.333 1.333h5.333c0.737 0 1.333-0.597 1.333-1.333s-0.596-1.333-1.333-1.333z"></path>\n</svg>\n`;var c=`\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>download</title>\n<path d="M15.056 20.941c0.123 0.124 0.271 0.221 0.435 0.289 0.163 0.067 0.336 0.103 0.509 0.103s0.347-0.036 0.509-0.103c0.164-0.068 0.311-0.165 0.435-0.289l5.332-5.332c0.521-0.521 0.521-1.364 0-1.885s-1.364-0.521-1.885 0l-3.057 3.057v-12.781c0-0.737-0.597-1.333-1.333-1.333s-1.333 0.596-1.333 1.333v12.781l-3.057-3.057c-0.521-0.521-1.364-0.521-1.885 0s-0.521 1.364 0 1.885zM25.333 26.667h-18.667c-0.736 0-1.333 0.596-1.333 1.333s0.597 1.333 1.333 1.333h18.667c0.736 0 1.333-0.596 1.333-1.333s-0.597-1.333-1.333-1.333z"></path>\n</svg>\n`;var i=`\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>swap-stroke</title>\n<path d="M6.667 18.667h-2.667c-0.736 0-1.333-0.597-1.333-1.333v-13.333c0-0.736 0.597-1.333 1.333-1.333h13.333c0.736 0 1.333 0.597 1.333 1.333v2.667c0 0.737 0.596 1.333 1.333 1.333s1.333-0.596 1.333-1.333v-2.667c0-2.205-1.795-4-4-4h-13.333c-2.205 0-4 1.795-4 4v13.333c0 2.205 1.795 4 4 4h2.667c0.737 0 1.333-0.596 1.333-1.333s-0.596-1.333-1.333-1.333zM28 10.667h-13.333c-2.205 0-4 1.795-4 4v13.333c0 2.205 1.795 4 4 4h13.333c2.205 0 4-1.795 4-4v-13.333c0-2.205-1.795-4-4-4zM29.333 28c0 0.736-0.597 1.333-1.333 1.333h-13.333c-0.736 0-1.333-0.597-1.333-1.333v-13.333c0-0.736 0.597-1.333 1.333-1.333h13.333c0.736 0 1.333 0.597 1.333 1.333z"></path>\n</svg>\n`;var 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>debit-card-back</title>\n<path d="M30 28h-28c-1.105 0-2-0.895-2-2v0-18c0-1.105 0.895-2 2-2v0h28c1.105 0 2 0.895 2 2v0 18c0 1.105-0.895 2-2 2v0zM30 26v0zM2 8v18h28v-18zM31 14h-30c-0.552 0-1-0.448-1-1s0.448-1 1-1v0h30c0.552 0 1 0.448 1 1s-0.448 1-1 1v0zM11 22h-6c-0.552 0-1-0.448-1-1s0.448-1 1-1v0h6c0.552 0 1 0.448 1 1s-0.448 1-1 1v0zM24 24c-2.209 0-4-1.791-4-4s1.791-4 4-4c2.209 0 4 1.791 4 4v0c0 2.209-1.791 4-4 4v0zM24 18c-1.105 0-2 0.895-2 2s0.895 2 2 2c1.105 0 2-0.895 2-2v0c0-1.105-0.895-2-2-2v0zM20 24c-2.209 0-4-1.791-4-4s1.791-4 4-4v0c0.002 0 0.005 0 0.007 0 1.032 0 1.972 0.398 2.673 1.048l-0.003-0.002c0.191 0.183 0.311 0.439 0.311 0.724 0 0.552-0.448 1-1 1-0.257 0-0.492-0.097-0.669-0.257l0.001 0.001c-0.345-0.319-0.807-0.514-1.315-0.514-0.002 0-0.003 0-0.005 0h0c-1.105 0-2 0.895-2 2s0.895 2 2 2v0c0.002 0 0.004 0 0.007 0 0.508 0 0.971-0.195 1.317-0.515l-0.001 0.001c0.179-0.171 0.422-0.276 0.689-0.276 0.552 0 1 0.448 1 1 0 0.295-0.128 0.56-0.331 0.743l-0.001 0.001c-0.699 0.648-1.638 1.046-2.671 1.046-0.003 0-0.007 0-0.010 0h0.001z"></path>\n</svg>\n`;const n=":host{display:block}";const h=class{constructor(t){s(this,t);this.codeCopied=null;this.noItemFound=true;this.order_items=[];this.isDigitalCard=s=>s.product.type==="codes";this.isDigitalProduct=s=>s.product.type==="digital"}async componentWillLoad(){salla.lang.onLoaded((()=>{this.codes_text=salla.lang.get("pages.thank_you.codes");this.copy_text=salla.lang.get("common.elements.copy");this.files_text=salla.lang.get("pages.thank_you.files");this.download_text=salla.lang.get("pages.thank_you.download")}));return await this.getOrderItems()}copyToClipboardHandler(s){if(navigator&&"clipboard"in navigator){try{navigator.clipboard.writeText(s).then((()=>{this.codeCopied=s;this.copyCodeButtonTimeout=setTimeout((()=>{this.codeCopied=null}),3e3)}))}catch(s){salla.loggers.error("copy functionality is not supported by the browser")}}}async getOrderItems(){const s=this.orderId||salla.config.get("page.id");const t="Failed to fetch order items";if(!s){salla.logger.error(t);throw new Error(t)}try{const{data:{items:t=[]}}=await salla.api.request(`orders/${s}`);const a=t.some((s=>this.isDigitalCard(s)||this.isDigitalProduct(s)));if(a){this.order_items=t;this.noItemFound=false}}catch(s){salla.logger.error(t)}}disconnectedCallback(){this.copyCodeButtonTimeout&&clearTimeout(this.copyCodeButtonTimeout)}render(){return t("ul",{key:"6358d81e74e1fd966b7046deab946f33391b2fc6",class:"s-order-summary-wrapper"},this.noItemFound?t("salla-placeholder",{alignment:"center"},t("span",{slot:"title"})):this.order_items.map((s=>this.isDigitalCard(s)?t("li",{key:s.product.id,class:"s-order-summary-item"},t("h2",{class:"s-order-summary-item-title"},this.codes_text," (",s.name,")"),s.codes.map((s=>t("div",{key:s.code,class:"s-order-summary-code-item-wrapper"},t("p",null,t("span",{innerHTML:l}),t("span",null,s.code)),t("salla-button",{class:`s-order-summary-item-copy-button ${this.codeCopied===s.code?"copied":""}`,onClick:()=>this.copyToClipboardHandler(s.code),shape:"link"},t("span",{innerHTML:this.codeCopied===s.code?a:i}),t("span",null,this.copy_text)))))):this.isDigitalProduct(s)?t("li",{key:s.product.id,class:"s-order-summary-item"},t("h2",{class:"s-order-summary-item-title"},this.files_text," (",s.name,")"),t("ul",null,s.files.map((s=>t("li",{class:"s-order-summary-digital-item-wrapper"},t("div",null,t("span",{innerHTML:e}),t("span",null,s.name)),t("a",{href:s.url,target:"_blank",class:"s-order-summary-item-download"},t("span",{innerHTML:c}),t("span",null,this.download_text))))))):null)))}};h.style=n;export{h as salla_order_summary};
|
|
5
|
+
//# sourceMappingURL=p-f745fcad.entry.js.map
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Crafted with ❤ by Salla
|
|
3
|
+
*/
|
|
4
|
+
import{r as t,c as i,h as o,H as s,g as n}from"./p-D4D34Ujk.js";import{I as e}from"./p-uTyAzPSy.js";import{C as a}from"./p-C6jIkM-X.js";var l;(function(t){t["COLOR"]="color";t["DATE"]="date";t["DATETIME"]="datetime";t["DONATION"]="donation";t["IMAGE"]="image";t["MULTIPLE_OPTIONS"]="multiple-options";t["NUMBER"]="number";t["SINGLE_OPTION"]="single-option";t["DIGITAL_CARD_VALUE"]="digital-code-value";t["COUNTRY"]="country";t["SPLITTER"]="splitter";t["TEXT"]="text";t["TEXTAREA"]="textarea";t["THUMBNAIL"]="thumbnail";t["TIME"]="time";t["RADIO"]="radio";t["CHECKBOX"]="checkbox";t["MAP"]="map";t["FILE"]="file";t["COLOR_PICKER"]="color_picker";t["BOOKING"]="booking"})(l||(l={}));var r;(function(t){t["Sar"]="SAR"})(r||(r={}));var d=`\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>file-upload</title>\n<path d="M21.333 24c0.341 0 0.683-0.131 0.943-0.391 0.521-0.521 0.521-1.364 0-1.885l-5.333-5.333c-0.123-0.123-0.271-0.22-0.433-0.288-0.327-0.135-0.693-0.135-1.019 0-0.163 0.068-0.311 0.165-0.433 0.288l-5.333 5.333c-0.521 0.521-0.521 1.364 0 1.885s1.364 0.521 1.885 0l3.057-3.057v10.115c0 0.736 0.597 1.333 1.333 1.333s1.333-0.597 1.333-1.333v-10.115l3.057 3.057c0.26 0.26 0.601 0.391 0.943 0.391zM28.943 9.724l-9.333-9.333c-0.249-0.251-0.589-0.391-0.943-0.391h-12c-2.205 0-4 1.795-4 4v24c0 2.205 1.795 4 4 4h4c0.736 0 1.333-0.597 1.333-1.333s-0.597-1.333-1.333-1.333h-4c-0.735 0-1.333-0.599-1.333-1.333v-24c0-0.735 0.599-1.333 1.333-1.333h11.448l8.552 8.552v16.781c0 0.735-0.599 1.333-1.333 1.333h-4c-0.736 0-1.333 0.597-1.333 1.333s0.597 1.333 1.333 1.333h4c2.205 0 4-1.795 4-4v-17.333c0-0.353-0.14-0.693-0.391-0.943z"></path>\n</svg>\n`;const p="";const c=class{constructor(s){t(this,s);this.changed=i(this,"changed");this.fileTypes={pdf:"application/pdf",png:"image/png",jpg:"image/jpeg",word:"application/doc,application/ms-doc,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document",exl:"application/excel,application/vnd.ms-excel,application/x-excel,application/x-msexcel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",txt:"text/plain"};this.outOfStockText="";this.donationAmount=salla.lang.get("pages.products.donation_amount");this.selectDonationAmount=salla.lang.getWithDefault("pages.products.select_donation_amount","تحديد مبلغ التبرع");this.selectAmount=salla.lang.getWithDefault("pages.products.select_amount","اختر المبلغ");this.isCustomDonation=false;this.selectedOptions=[];this.disableCardValue=true;this.availableDigitalCardValues=[];this.outSkus=[];this.ignoreDefaultCardValue=false;this.productId=salla.config.get("page.id");this.handleDonationOptions=(t,i,o)=>{if(i==="custom"&&o==="input"){salla.helpers.inputDigitsOnly(t.target);salla.event.emit("product-options::donation-changed",{id:this.productId,price:t.target.value});return}t.preventDefault();t.stopPropagation();this.isCustomDonation=t.target.value==="custom";if(this.donationInput){if(t.target.value==="custom"){this.donationInput.value="";this.donationInput.focus()}else{this.donationInput.value=t.target.value}if(i==="custom"){return}salla.event.emit("product-options::donation-changed",{id:this.productId,price:t.target.value})}};this.hideLabel=t=>{if(t.type===l.DONATION&&(t.donation&&!t.donation.can_donate)){return true}return false};this.getExpireDonationMessage=t=>{if(!t.donation){return}const i=t.donation.target_amount<=t.donation.collected_amount;return o("div",{class:{"s-product-options-donation-message":true,"s-product-options-donation-completed":i,"s-product-options-donation-expired":!i}},o("p",null,t.donation.target_message),o("span",{innerHTML:i?salla.money(t.donation.target_amount):""}))};this.canDisabled=!salla.config.get("store.settings.product.notify_options_availability")||salla.url.is_page("cart");salla.lang.onLoaded((()=>{this.outOfStockText=salla.lang.get("pages.products.out_of_stock");this.donationAmount=salla.lang.get("pages.products.donation_amount");this.selectDonationAmount=salla.lang.getWithDefault("pages.products.select_donation_amount","تحديد مبلغ التبرع");this.selectAmount=salla.lang.getWithDefault("pages.products.select_amount","اختر المبلغ")}));if(this.options){try{this.setOptionsData(Array.isArray(this.options)?this.options:JSON.parse(this.options));return}catch(t){salla.log("Bad json passed via options prop")}}if(!Array.isArray(this.optionsData)){salla.log("Options is not an array[] ---\x3e ",this.optionsData);this.setOptionsData([])}if(this.productId&&!salla.url.is_page("cart")){salla.api.product.getDetails(this.productId,["options"]).then((t=>this.setOptionsData(t.data.options)))}}async setOptionsData(t){var i,o;this.optionsData=t;const s=this;(o=(i=this.optionsData[0])===null||i===void 0?void 0:i.details)===null||o===void 0?void 0:o.forEach((function(t){Object.entries(t.skus_availability||{}).filter((t=>!t[1])).map((t=>s.outSkus.push(Number(t[0]))))}))}async getSelectedOptionsData(){const t={};const i=this.host.getElementSallaData();i.forEach(((i,o)=>{if(o.startsWith("options[")){t[o.replace("options[","").replace("]","")]=i}}));return t}async reportValidity(){const t=this.host.querySelectorAll("[required]");let i=true;for(let o=0;o<t.length;o++){if("reportValidity"in t[o]&&!t[o].reportValidity()){i=false}}return i}async hasOutOfStockOption(){var t,i;return this.selectedOptions.some((t=>t.is_out))||((t=this.selectedSkus)===null||t===void 0?void 0:t.length)&&((i=this.selectedSkus)===null||i===void 0?void 0:i.every((t=>this.outSkus.includes(t))))}async getSelectedOptions(){return this.selectedOptions}async getOption(t){return this.optionsData.find((i=>i.id===t))}invalidHandler(t,i){const o=t.target.closest(".s-product-options-option");if(!o.classList.contains("s-product-options-option-error")){o.classList.add("s-product-options-option-error")}if(!salla.url.is_page("cart")){const t=this.host.querySelector(".s-product-options-option-error");if(t===o){this.scrollToElement(o)}}}scrollToElement(t){if(t){t.scrollIntoView({behavior:"smooth",block:"center"})}}changedHandler(t,i,o=true){const s={event:t,option:i,detail:null,productId:this.productId};if(i.details){const o=i.details.find((i=>Number(i.id)===Number(t.target.value)));s.detail=o}if(i.type==="country"){this.handleCountryOptionChange(t,s.detail)}const n=t.target.closest(".s-product-options-option");if(t.target.value||(i.type===l.FILE||i.type===l.IMAGE)&&t.type==="added"||i.type===l.MAP&&t.type==="selected"&&(t.target.lat&&t.target.lng)){setTimeout((()=>{n.classList.remove("s-product-options-option-error")}),200)}if(i.type===l.DONATION){salla.event.emit("product-options::donation-changed",{id:this.productId,price:t.target.value})}this.setSelectedSkus();this.handleRequiredMultipleOptions(i);const e=this.selectedOptions.findIndex((t=>t.option_id===s.option.id));if(s.option.type===l.MULTIPLE_OPTIONS){const t=this.selectedOptions.findIndex((t=>{var i;return t.option_id===s.option.id&&(t===null||t===void 0?void 0:t.id)===((i=s.detail)===null||i===void 0?void 0:i.id)}));if(t>-1){this.selectedOptions.splice(t,1)}else{this.selectedOptions.push(Object.assign(Object.assign({},s.detail),{option_id:s.option.id}))}}else{if(!s.detail||Object.keys(s.detail).length===0){if(e>-1){this.selectedOptions.splice(e,1)}}else{if(e>-1){this.selectedOptions[e]=Object.assign(Object.assign({},s.detail),{option_id:s.option.id})}else{this.selectedOptions.push(Object.assign(Object.assign({},s.detail),{option_id:s.option.id}))}}}this.optionsData=this.optionsData.map((t=>{if(t.id===s.option.id){return Object.assign(Object.assign({},t),{details:t.details.map((t=>{var i,o;return Object.assign(Object.assign({},t),{is_selected:s.option.type===l.MULTIPLE_OPTIONS?this.selectedOptions.some((i=>i.id===t.id)):Number(t.id)===Number((i=s.detail)===null||i===void 0?void 0:i.id),value:(o=s.detail)===null||o===void 0?void 0:o.value})}))})}return t}));if(o){this.changed.emit(s);salla.event.emit("product-options::change",s)}}setSelectedSkus(){this.selectedSkus=this.selectedOptions.map((t=>Object.keys(t.skus_availability||{}))).reduce(((t,i)=>t.filter((t=>i.includes(t)))),[]).map((t=>Number(t)))}handleRequiredMultipleOptions(t){if(t.type!==l.MULTIPLE_OPTIONS||!t.required){return}const i=this.host.querySelector(`[data-option-id="${t.id}"]`);const o=i.querySelectorAll("input:checked").length;i.querySelectorAll("input").forEach((t=>t.toggleAttribute("required",!o)))}getLatLng(t,i){return t?t.split(",")[i==="lat"?0:1]:""}getDisplayForType(t){if(this[`${t.type}Option`]){return this[`${t.type}Option`](t)}if(t.type===l.COLOR_PICKER){return this.colorPickerOption(t)}if(t.type===l.MULTIPLE_OPTIONS){return this.multipleOptions(t)}if(t.type===l.SINGLE_OPTION){return this.singleOption(t)}if(t.type===l.DIGITAL_CARD_VALUE){return this.digitalCardValuesOption(t)}if(t.type===l.COUNTRY){return this.countryOption(t)}if(t.type===l.BOOKING&&salla.url.is_page("cart")){return o("salla-booking-field",{onInvalidInput:i=>this.invalidHandler(i,t),option:t,productId:t.value})}salla.log(`Couldn't find options type(${t.type})😢`);return""}getOptionShownWhen(t){return t.visibility_condition?{"data-show-when":`options[${t.visibility_condition.option}] ${t.visibility_condition.operator} ${t.visibility_condition.value}`}:{}}getAvailableDigitalCardSKUs(t){const i=this.optionsData.find((({type:t})=>t==="digital-code-value"));if(!i)throw new Error("product-options:: No digital card options found");const o=Object.keys(t.skus_availability).filter((i=>t.skus_availability[i]===false));this.availableDigitalCardValues=i.details.filter((t=>!Object.keys(t.skus_availability).filter((t=>o.includes(t))).length))}handleCountryOptionChange(t,i){t.stopImmediatePropagation();this.ignoreDefaultCardValue=true;const o=this.host.querySelector("input[data-code-value]:checked");if(o)o.checked=false;const s=this.optionsData.find((({type:t})=>t==="digital-code-value"));if(!s)throw new Error("product-options:: No digital card options found");this.getAvailableDigitalCardSKUs(i)}getSelectedDigitalCardOptions(t){const i=t.details.find((t=>t.is_selected));const o=t.details.find((t=>!!t.is_default))||t.details[0];if(!["digital-code-value","country"].includes(t.type))return;return i||o}async componentWillLoad(){if(salla.url.is_page("cart")){this.disableCardValue=false;this.fillSelectedOptions()}if(this.config){try{this.optionConfig=typeof this.config==="string"?JSON.parse(this.config):this.config}catch(t){console.error("Failed to parse JSON in config prop:",t)}}const t=this.optionsData.filter((({type:t})=>["country","digital-card-value"].includes(t))).length>0&&salla.url.is_page("cart");if(t){const t=this.optionsData.find((t=>t.type==="country"));const i=t&&this.getSelectedDigitalCardOptions(t);if(i){this.getAvailableDigitalCardSKUs(i)}}this.outOfStockText=salla.lang.get("pages.products.out_of_stock");await salla.onReady();document.addEventListener("paste",this.handlePaste.bind(this));const i=!salla.storage.get("cart.id")&&this.optionsData.some((t=>["file","image"].includes(t.type)));return i?salla.api.cart.getCurrentCartId(false,"salla-product-options"):null}handlePaste(t){var i;const o=t.target;if(!Salla.config.get("store.settings.content_copyright")||!Salla.helpers.hasApplePay()||!(o instanceof HTMLInputElement||o instanceof HTMLTextAreaElement)||!o.classList.contains("s-form-control")||!o.name.startsWith("options[")){return}t.preventDefault();const s=((i=t.clipboardData)===null||i===void 0?void 0:i.getData("text"))||"";const n=o.selectionStart;const e=o.selectionEnd;const a=o.value.slice(0,n)+s+o.value.slice(e);o.value=a;o.setSelectionRange(n+s.length,n+s.length)}hideDigitalCardsOptions(t){return this.disableCardValue&&t.type===l.DIGITAL_CARD_VALUE&&!salla.url.is_page("cart")}render(){var t;if(((t=this.optionsData)===null||t===void 0?void 0:t.length)===0){return}return o(s,{class:"s-product-options-wrapper"},o("salla-conditional-fields",null,this.optionsData.map((t=>o("div",Object.assign({key:t.id,class:`s-product-options-option-container${t.visibility_condition||this.hideDigitalCardsOptions(t)?" hidden":""}`,"data-option-id":t.id},this.getOptionShownWhen(t)),t.name==="splitter"?this.splitterOption():o("div",{class:{"s-product-options-option":true,"s-product-options-option-booking":t.type===l.BOOKING&&salla.url.is_page("cart")},"data-option-type":t.type,"data-option-required":`${t.required}`},o("label",{htmlFor:`options[${t.id}]`,class:`s-product-options-option-label ${this.hideLabel(t)?"s-product-options-option-label-hidden":""}`},o("b",null,t.name,t.required&&o("span",null," * ")," "),o("small",null,t.placeholder)),o("div",{class:`s-product-options-option-content ${this.hideLabel(t)||t.type===l.BOOKING&&salla.url.is_page("cart")?"s-product-options-option-content-full-width":""}`},this.getDisplayForType(t))))))))}generateUniqueKey(t){return this.uniqueKey?`${t}-${this.uniqueKey}`:t}fillSelectedOptions(){this.selectedOptions=this.optionsData.reduce(((t,i)=>{const o=i.details.filter((t=>t.is_selected));const s=o.map((t=>Object.assign(Object.assign({},t),{option_id:i.id})));return t.concat(s)}),[])}triggerProductFormSelectionEvents(){const t=t=>["change","input"].forEach((i=>t.dispatchEvent(new window.Event(i,{bubbles:true}))));const i=this.host.closest("form");if(i){t(i)}else{const i=new MutationObserver((()=>{const o=this.host.closest("form");if(o){t(o);i.disconnect()}}));i.observe(document.body,{childList:true,subtree:true})}}componentDidLoad(){var t,i;if(salla.url.is_page("product.single")){this.triggerProductFormSelectionEvents()}if(((t=this.optionsData)===null||t===void 0?void 0:t.length)===0&&!this.optionsData.some((t=>t.type===l.DONATION))){return}const o=(i=this.optionsData.find((t=>t.type===l.DONATION)))===null||i===void 0?void 0:i.details.find((t=>t.is_selected));if(!o){return}setTimeout((()=>{salla.event.emit("product-options::donation-changed",{id:this.productId,price:o.additional_price})}),1e3)}donationOption(t,i){var s,n;return o("div",{class:"s-product-options-donation-wrapper"},((s=t.donation)===null||s===void 0?void 0:s.can_donate)?[t.donation?o("div",{key:t.id,class:"s-product-options-donation-progress"},o("salla-progress-bar",{donation:t.donation})):"",t.details.length?[o("h4",{key:t.id},this.selectAmount),o("div",{key:t.id,class:"s-product-options-donation-options"},t.details.map(((i,s)=>o("div",{key:t.id,class:"s-product-options-donation-options-item"},o("input",{id:this.generateUniqueKey(`donation-option-${s}`),type:"radio",name:"donating_option",checked:i.is_selected,value:i.additional_price,onChange:t=>this.handleDonationOptions(t,i,"option")}),o("label",{htmlFor:this.generateUniqueKey(`donation-option-${s}`)},o("span",{innerHTML:salla.money(i.name)}))))),((n=t.donation)===null||n===void 0?void 0:n.custom_amount_enabled)?o("div",{class:"s-product-options-donation-options-item"},o("input",{id:this.generateUniqueKey("donation-option-custom"),type:"radio",name:"donating_option",value:"custom",onChange:t=>this.handleDonationOptions(t,"custom","option")}),o("label",{htmlFor:this.generateUniqueKey("donation-option-custom")},o("span",null," ",this.selectDonationAmount," "))):"")]:"",o("div",{key:t.id,class:{"s-product-options-donation-input-group":true,shown:!t.details.length||t.details.length&&this.isCustomDonation}},o("input",{type:"text",id:"donating-amount",name:"donation_amount",class:"s-form-control",ref:t=>{this.donationInput=t},value:t.details.length&&t.details.some((t=>t.is_selected))?t.details.find((t=>t.is_selected)).additional_price:t.value,placeholder:t.placeholder,onInput:t=>this.handleDonationOptions(t,"custom","input"),onBlur:i=>this.changedHandler(i,t),onInvalid:i=>this.invalidHandler(i,t)}),o("span",{class:"s-product-options-donation-amount-currency"},salla.config.currency(salla.config.get("user.currency_code")).symbol))]:this.getExpireDonationMessage(t))}fileUploader(t,i=null){var s;return o("salla-file-upload",Object.assign({},i||{},{"payload-name":"file",value:t.value,"instant-upload":true,name:`options[${t.id}]`,required:!t.visibility_condition&&t.required,height:"120px",onAdded:i=>this.changedHandler(i,t),url:salla.cart.api.getUploadImageEndpoint(),"form-data":{cart_item_id:this.productId,product_id:this.productId},onInvalidInput:i=>this.invalidHandler(i,t),class:{"s-product-options-image-input":true,required:t.required}}),o("div",{class:"s-product-options-filepond-placeholder"},o("span",{class:"s-product-options-filepond-placeholder-icon",innerHTML:((s=i.accept)===null||s===void 0?void 0:s.split(",").every((t=>t.includes("image"))))?a:d}),o("p",{class:"s-product-options-filepond-placeholder-text"},salla.lang.get("common.uploader.drag_and_drop")),o("span",{class:"filepond--label-action"},salla.lang.get("common.uploader.browse"))))}imageOption(t){return this.fileUploader(t,{accept:"image/png,image/jpeg,image/jpg,image/gif"})}fileOption(t){const i=t.details.map((t=>this.fileTypes[t.name])).filter(Boolean);return(i===null||i===void 0?void 0:i.length)?this.fileUploader(t,{accept:i.join(",")}):"File types not selected."}numberOption(t){return o("input",{type:"text",value:t.value,class:"s-form-control",required:!t.visibility_condition&&t.required,name:`options[${t.id}]`,placeholder:t.placeholder,onBlur:i=>this.changedHandler(i,t),onInvalid:i=>this.invalidHandler(i,t),onInput:t=>salla.helpers.inputDigitsOnly(t.target)})}splitterOption(){return o("div",{class:"s-product-options-splitter"})}textOption(t){return o("div",{class:"s-product-options-text"},o("input",{type:"text",value:t.value,maxLength:t===null||t===void 0?void 0:t.length,class:"s-form-control",required:!t.visibility_condition&&t.required,name:`options[${t.id}]`,placeholder:t.placeholder,onInvalid:i=>this.invalidHandler(i,t),onChange:i=>this.changedHandler(i,t)}))}textareaOption(t){return o("div",{class:"s-product-options-textarea"},o("div",{class:"mt-1"},o("textarea",{rows:4,value:t.value,maxLength:t===null||t===void 0?void 0:t.length,class:"s-form-control",required:!t.visibility_condition&&t.required,id:`options[${t.id}]`,name:`options[${t.id}]`,placeholder:t.placeholder,onInvalid:i=>this.invalidHandler(i,t),onChange:i=>this.changedHandler(i,t)})))}mapOption(t){return o("salla-map",{zoom:15,lat:this.getLatLng(t.value,"lat"),lng:this.getLatLng(t.value,"lng"),name:`options[${t.id}]`,searchable:true,required:t.required,onInvalidInput:i=>this.invalidHandler(i,t),onSelected:i=>this.changedHandler(i,t)})}colorPickerOption(t){return o("salla-color-picker",{onSubmitted:i=>this.changedHandler(i,t),name:`options[${t.id}]`,required:!t.visibility_condition&&t.required,onInvalidInput:i=>this.invalidHandler(i,t),color:t.value})}timeOption(t){return o("salla-datetime-picker",{noCalendar:true,enableTime:true,dateFormat:"h:i K",value:t.value,placeholder:t.name,required:!t.visibility_condition&&t.required,name:`options[${t.id}]`,class:"s-product-options-time-element",onInvalidInput:i=>this.invalidHandler(i,t),onPicked:i=>this.changedHandler(i,t)})}dateOption(t){return o("div",{class:"s-product-options-date-element"},o("salla-datetime-picker",{value:t.value,placeholder:t.name,required:!t.visibility_condition&&t.required,minDate:new Date,name:`options[${t.id}]`,onInvalidInput:i=>this.invalidHandler(i,t),onPicked:i=>this.changedHandler(i,t)}))}datetimeOption(t){return o("div",{class:"s-product-options-datetime-element"},o("salla-datetime-picker",{enableTime:true,value:t.value,dateFormat:"Y-m-d G:i:K",placeholder:t.name,required:!t.visibility_condition&&t.required,name:`options[${t.id}]`,maxDate:t.to_date_time,minDate:t.from_date_time,onInvalidInput:i=>this.invalidHandler(i,t),onPicked:i=>this.changedHandler(i,t)}))}getOptionDetailName(t,i=true,o){var s;let n;if(o&&o===l.COLOR){n=t.name+(i&&this.isOptionDetailOut(t)&&!salla.url.is_page("cart")&&!this.hideOutLabel?` <br/> <p> ${this.outOfStockText} </p>`:"")+(t.additional_price?` <p> (${salla.money(t.additional_price,false)}) </p>`:"")}if(!n){n=t.name+(i&&this.isOptionDetailOut(t)&&!salla.url.is_page("cart")&&!this.hideOutLabel?` - ${this.outOfStockText}`:"")+(t.additional_price?` (${salla.money(t.additional_price,false)})`:"")}return n.replace("<i class=sicon-sar></i>",((s=salla.config.currency())===null||s===void 0?void 0:s.symbol)||"ر.س")}isOptionDetailOut(t){var i;if(t.is_out||!t.skus_availability||!((i=this.selectedSkus)===null||i===void 0?void 0:i.length)){return t.is_out}const o=this.selectedOptions.filter((i=>i.id===t.id)).length;if(o&&this.selectedOptions.length===1){return false}if(o){const i=this.selectedSkus.filter((t=>this.outSkus.includes(t)));return Object.keys(t.skus_availability).some((t=>i.includes(Number(t))))}return this.selectedOptions.some((i=>i.is_out&&i.option_id!==t.option_id))}renderInput(t,i,s,n,e,a){const l=this.generateUniqueKey(`${t}-${s.id}-${i.id}`);const r=this.isOptionDetailOut(i);return o("label",{class:{"s-product-options-disabled":r}},o("input",{id:l,type:t,name:e,value:i.id,disabled:r,required:n,checked:i.is_selected,onInvalid:t=>this.invalidHandler(t,s),onChange:t=>this.changedHandler(t,s)}),o("div",{class:{"s-product-options-grid-mode-span":a,"s-product-options-disabled":r}},this.getOptionDetailName(i)))}renderOptionDetails(t,i,o,s=false){const n=t==="radio"?`options[${i.id}]`:`options[${i.id}][]`;return i===null||i===void 0?void 0:i.details.map((e=>this.renderInput(t,e,i,o,n,s)))}renderSelect(t){return o("div",null,o("select",{name:`options[${t.id}]`,required:!t.visibility_condition&&t.required,class:"s-form-control",onInvalid:i=>this.invalidHandler(i,t),onChange:i=>this.changedHandler(i,t)},o("option",{value:""},t.placeholder),t===null||t===void 0?void 0:t.details.map((t=>o("option",{key:t.id,value:t.id,disabled:this.canDisabled&&this.isOptionDetailOut(t),selected:t.is_selected},this.getOptionDetailName(t))))))}renderButtonStyle(t,i,s){return o("div",{class:"s-product-options-grid-mode"},this.renderOptionDetails(t,i,s,true))}singleOption(t){var i,o;const s=((o=(i=this.optionConfig)===null||i===void 0?void 0:i["single-option"])===null||o===void 0?void 0:o.type)==="button";const n=!t.visibility_condition&&t.required;return s?this.renderButtonStyle("radio",t,n):this.renderSelect(t)}multipleOptions(t){var i,s;const n=((s=(i=this.optionConfig)===null||i===void 0?void 0:i["multiple-option"])===null||s===void 0?void 0:s.type)==="button";const e=t.required&&!t.details.some((t=>t.is_selected))&&!t.visibility_condition;return n?this.renderButtonStyle("checkbox",t,e):o("div",{class:{"s-product-options-multiple-options-wrapper":true,required:t.required}},this.renderOptionDetails("checkbox",t,e))}colorOption(t){return o("fieldset",{class:"s-product-options-colors-wrapper"},t===null||t===void 0?void 0:t.details.map((i=>o("div",{class:"s-product-options-colors-item",key:i.id},o("input",{type:"radio",value:i.id,required:!t.visibility_condition&&t.required,checked:i.is_selected,name:`options[${t.id}]`,disabled:this.canDisabled&&this.isOptionDetailOut(i),id:this.generateUniqueKey(`color-${this.productId}-${t.id}-${i.id}`),onInvalid:i=>this.invalidHandler(i,t),onChange:i=>this.changedHandler(i,t)}),o("label",{htmlFor:this.generateUniqueKey(`color-${this.productId}-${t.id}-${i.id}`)},o("span",{style:{backgroundColor:i.color}}),o("div",{innerHTML:this.getOptionDetailName(i,true,t.type)}))))))}thumbnailOption(t){return o("div",{class:"s-product-options-thumbnails-wrapper"},t.details.map((i=>o("div",{key:i.id},o("input",{type:"radio",value:i.id,"data-itemid":i.id,required:!t.visibility_condition&&t.required,checked:i.is_selected,name:`options[${t.id}]`,"data-img-id":i.option_value,disabled:this.canDisabled&&this.isOptionDetailOut(i),id:this.generateUniqueKey(`option_${this.productId}-${t.id}_${i.id}`),onInvalid:i=>this.invalidHandler(i,t),onChange:i=>this.changedHandler(i,t)}),o("label",{htmlFor:this.generateUniqueKey(`option_${this.productId}-${t.id}_${i.id}`),"data-img-id":i.option_value,class:"go-to-slide"},o("img",{"data-src":i.image,src:i.image,title:i.name,alt:i.name}),o("span",{innerHTML:e,class:"s-product-options-thumbnails-icon"}),this.isOptionDetailOut(i)?[o("small",{key:i.id,class:"s-product-options-thumbnails-stock-badge"},this.outOfStockText),this.canDisabled?o("div",{key:i.id,class:"s-product-options-thumbnails-badge-overlay"}):""]:""),o("p",null,this.getOptionDetailName(i,false)," ")))))}digitalCardValuesOption(t){return o("div",{class:"s-product-options-digital-card-wrapper"},this.availableDigitalCardValues.length>0?this.availableDigitalCardValues.map((i=>{var s,n,e;const a=String(i.id);return o("label",{htmlFor:this.generateUniqueKey(a.toString()),key:a,class:"s-product-options-digital-card-option"},o("input",Object.assign({type:"radio","data-code-value":true,class:"s-form-control s-product-options-digital-card-input",value:i.id,name:`options[${t.id}]`,id:this.generateUniqueKey(a.toString()),required:!t.visibility_condition&&t.required,onInvalid:i=>this.invalidHandler(i,t)},!this.ignoreDefaultCardValue?{defaultChecked:((s=this.getSelectedDigitalCardOptions(t))===null||s===void 0?void 0:s.id)===i.id}:{})),o("span",null,i.name," ",(e=(n=salla.config)===null||n===void 0?void 0:n.currency())===null||e===void 0?void 0:e.symbol))})):o("div",{class:"s-product-options-digital-card-out-of-stock"}))}countryOption(t){return o("div",{class:"s-product-options-digital-card-wrapper"},t.details.map((i=>{var s;return o("label",{htmlFor:this.generateUniqueKey(i.id.toString()),key:i.id,class:{"s-product-options-digital-card-option":true,"s-product-options-digital-card-option-stock-out":i.is_out}},o("input",Object.assign({id:this.generateUniqueKey(i.id.toString()),type:"radio",class:"s-form-control s-product-options-digital-card-input",value:i.id,name:`options[${t.id}]`,disabled:i.is_out,required:!t.visibility_condition&&t.required,onInvalid:i=>this.invalidHandler(i,t),onChange:i=>this.changedHandler(i,t),onClick:()=>{this.disableCardValue=false}},salla.url.is_page("cart")?{defaultChecked:((s=this.getSelectedDigitalCardOptions(t))===null||s===void 0?void 0:s.id)===i.id}:{})),o("img",{loading:"lazy",alt:i.code,height:24,width:24,class:"s-product-options-country-flag",src:`https://cdn.assets.salla.network/prod/admin/cp/assets/flags/1x1/${String(i.code).toLocaleLowerCase()}.svg`}),o("span",null,i.name))})))}get host(){return n(this)}};c.style=p;export{c as salla_product_options};
|
|
5
|
+
//# sourceMappingURL=p-fbe10567.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["DisplayType","Currency","sallaProductOptionsCss","SallaProductOptions","constructor","hostRef","this","fileTypes","pdf","png","jpg","word","exl","txt","outOfStockText","donationAmount","salla","lang","get","selectDonationAmount","getWithDefault","selectAmount","isCustomDonation","selectedOptions","disableCardValue","availableDigitalCardValues","outSkus","ignoreDefaultCardValue","productId","config","handleDonationOptions","event","detail","type","helpers","inputDigitsOnly","target","emit","id","price","value","preventDefault","stopPropagation","donationInput","focus","hideLabel","option","DONATION","donation","can_donate","getExpireDonationMessage","completed","target_amount","collected_amount","h","class","target_message","innerHTML","money","canDisabled","url","is_page","onLoaded","options","setOptionsData","Array","isArray","JSON","parse","e","log","optionsData","api","product","getDetails","then","resp","data","that","_b","_a","details","forEach","Object","entries","skus_availability","filter","sku","map","push","Number","getSelectedOptionsData","formData","host","getElementSallaData","key","startsWith","replace","reportValidity","requiredElements","querySelectorAll","pass","i","length","hasOutOfStockOption","some","is_out","selectedSkus","every","includes","getSelectedOptions","getOption","option_id","find","invalidHandler","closestProductOption","closest","classList","contains","add","firstInvalidElement","querySelector","scrollToElement","element","scrollIntoView","behavior","block","changedHandler","fireChangeEvent","handleCountryOptionChange","optionElement","FILE","IMAGE","MAP","lat","lng","setTimeout","remove","setSelectedSkus","handleRequiredMultipleOptions","index","findIndex","opt","MULTIPLE_OPTIONS","detailIndex","splice","assign","keys","is_selected","selected","changed","reduce","p","c","required","optionContainer","hasChecked","input","toggleAttribute","getLatLng","split","getDisplayForType","COLOR_PICKER","colorPickerOption","multipleOptions","SINGLE_OPTION","singleOption","DIGITAL_CARD_VALUE","digitalCardValuesOption","COUNTRY","countryOption","BOOKING","onInvalidInput","getOptionShownWhen","visibility_condition","operator","getAvailableDigitalCardSKUs","digitalCardOption","Error","outofStockSKUs","op","SKU_key","stopImmediatePropagation","currentCardValue","checked","getSelectedDigitalCardOptions","selectedOption","defaultOption","is_default","componentWillLoad","fillSelectedOptions","optionConfig","error","console","shouldSelectDefaultOption","defaultSelection","onReady","document","addEventListener","handlePaste","bind","needsCartId","storage","cart","getCurrentCartId","Salla","hasApplePay","HTMLInputElement","HTMLTextAreaElement","name","text","clipboardData","getData","start","selectionStart","end","selectionEnd","newValue","slice","setSelectionRange","hideDigitalCardsOptions","render","Host","splitterOption","htmlFor","placeholder","generateUniqueKey","defaultValue","uniqueKey","acc","selectedDetails","mappedDetails","concat","triggerProductFormSelectionEvents","trigger","f","dispatchEvent","window","Event","bubbles","form","observer","MutationObserver","disconnect","observe","body","childList","subtree","componentDidLoad","selectedDonationOption","additional_price","donationOption","onChange","custom_amount_enabled","shown","ref","el","onInput","onBlur","onInvalid","currency","symbol","fileUploader","additions","height","onAdded","getUploadImageEndpoint","cart_item_id","product_id","accept","CameraIcon","FileIcon","imageOption","fileOption","types","Boolean","join","numberOption","textOption","maxLength","textareaOption","rows","mapOption","zoom","searchable","onSelected","onSubmitted","color","timeOption","noCalendar","enableTime","dateFormat","onPicked","dateOption","minDate","Date","datetimeOption","maxDate","to_date_time","from_date_time","getOptionDetailName","outOfStock","optionType","detailName","COLOR","isOptionDetailOut","hideOutLabel","isDetailSelected","outSelectableSkus","renderInput","isRequired","buttonStyle","isDisabled","disabled","renderOptionDetails","renderSelect","renderButtonStyle","colorOption","style","backgroundColor","thumbnailOption","option_value","image","src","title","alt","CheckCircleIcon","String","toString","defaultChecked","_c","onClick","loading","code","width","toLocaleLowerCase"],"sources":["src/components/salla-product-options/interfaces.ts","src/components/salla-product-options/salla-product-options.scss?tag=salla-product-options","src/components/salla-product-options/salla-product-options.tsx"],"sourcesContent":["export enum DisplayType {\n COLOR = \"color\",\n DATE = \"date\",\n DATETIME = \"datetime\",\n DONATION = \"donation\",\n IMAGE = \"image\",\n MULTIPLE_OPTIONS = \"multiple-options\",\n NUMBER = \"number\",\n SINGLE_OPTION = \"single-option\",\n DIGITAL_CARD_VALUE = \"digital-code-value\",\n COUNTRY = \"country\",\n SPLITTER = \"splitter\",\n TEXT = \"text\",\n TEXTAREA = \"textarea\",\n THUMBNAIL = \"thumbnail\",\n TIME = \"time\",\n RADIO = \"radio\",\n CHECKBOX = \"checkbox\",\n MAP = \"map\",\n FILE = \"file\", // similar to image type (file-uploader component)\n COLOR_PICKER = \"color_picker\",\n BOOKING = \"booking\"\n}\n\nexport interface ProductDetail {\n id: string;\n sku: string;\n name: string;\n description: string;\n url: string;\n promotion_title: string;\n subtitle: string;\n type: string;\n status: string;\n price: number;\n sale_price: number;\n regular_price: number;\n starting_price: null;\n quantity: number;\n max_quantity: number;\n discount_ends: number;\n is_taxable: boolean;\n has_read_more: boolean;\n can_add_note: boolean;\n can_show_remained_quantity: boolean;\n can_upload_file: boolean;\n has_custom_form: boolean;\n is_on_sale: boolean;\n is_hidden_quantity: boolean;\n is_available: boolean;\n is_out_of_stock: boolean;\n weight: null;\n calories: null;\n image: SimpleImage;\n brand: Brand;\n donation?: ProductDonation;\n images: Image[];\n tags: Tag[];\n notify_availability: null;\n rating: Rating;\n options: Option[];\n sold_quantity: number;\n category: Category;\n}\n\nexport interface SimpleImage {\n url: string;\n alt: string;\n}\n\nexport interface Category {\n name: string;\n url: string;\n icon: string;\n}\n\nexport interface ProductDonation {\n target_message?: string;\n collected_amount?: number;\n target_amount?: number;\n target_percent?: number;\n target_end_date?: string;\n can_donate: boolean;\n custom_amount_enabled: boolean;\n}\n\nexport interface Image {\n id: number;\n url: string;\n main: boolean;\n three_d_image_url: string;\n alt: string;\n video_url: string;\n type: string;\n sort: number;\n}\n\nexport interface Option {\n id: number;\n name: string;\n required: boolean;\n type: string;\n placeholder: string;\n option_type: string;\n not_same_day_order: boolean;\n availability_range: number;\n from_date_time: null;\n to_date_time: null;\n visibility_condition?: { option: number, operator: \"=\" | \"!=\", value: number };\n details?: Detail[];\n condition_attributes: string;\n value?: any;\n length?: number;\n donation?: Donation\n}\n\nexport interface Donation {\n custom_amount_enabled: boolean;\n target_message?: string;\n target_date: string | \"2023-04-18\";\n target_end_date: string | \"2023-04-18\";\n target_amount: number;\n collected_amount: number;\n can_donate: boolean;\n}\n\nexport interface Detail {\n id: number;\n option_id: number;\n name: string;\n additional_price: number;\n option_value: null | string;\n image: null | string;\n color: null | string;\n is_out: boolean;\n skus_availability?: { [sku_id: number]: boolean };\n is_selected: boolean;\n is_default?: 0 | 1;\n code?: string;\n type?: string;\n\n}\n\nexport interface Brand {\n id: string;\n url: string;\n name: string;\n logo: string;\n}\n\nexport interface PreTaxPrice {\n amount: number;\n currency: Currency;\n}\n\nexport enum Currency {\n Sar = \"SAR\",\n}\n\nexport interface Promotion {\n title: string;\n sub_title: string;\n}\n\nexport interface Rating {\n count: number;\n stars: number;\n}\n\nexport interface Tag {\n name: string;\n url: string;\n}\n\nexport interface OptionConfig {\n singleOption?: OptionDisplayType;\n multipleOption?: OptionDisplayType;\n}\n\nexport interface OptionDisplayType {\n type: 'button' | 'default'; // defaults to 'default', which is select and checkbox for single and multiple options respectivly\n}\n","\n.s-product-options{\n &-wrapper{\n\n }\n &-option-container{\n\n }\n &-option{\n\n }\n &-option-label{\n\n }\n &-option-content{\n\n }\n &-colors-wrapper{\n\n }\n &-date-element{\n\n }\n &-time-element{\n \n }\n &-datetime-element{\n\n }\n &-image-input{\n\n }\n &-multiple-options-wrapper{\n\n }\n &-splitter{\n\n }\n &-text{\n\n }\n &-textarea{\n\n }\n &-thumbnails-wrapper{\n\n }\n}\n","import { Component, Prop, h, State, Element, Host, Event, type EventEmitter, Method } from '@stencil/core';\nimport { type Option, DisplayType, type Detail, OptionConfig } from './interfaces';\nimport CheckCircleIcon from '../../assets/svg/check.svg';\nimport CameraIcon from '../../assets/svg/camera.svg';\nimport FileIcon from '../../assets/svg/file-upload.svg';\n\n@Component({\n tag: 'salla-product-options',\n styleUrl: 'salla-product-options.scss',\n})\nexport class SallaProductOptions {\n\n constructor() {\n this.canDisabled = !salla.config.get('store.settings.product.notify_options_availability') || salla.url.is_page('cart');\n salla.lang.onLoaded(() => {\n this.outOfStockText = salla.lang.get(\"pages.products.out_of_stock\");\n this.donationAmount = salla.lang.get('pages.products.donation_amount');\n this.selectDonationAmount = salla.lang.getWithDefault('pages.products.select_donation_amount', 'تحديد مبلغ التبرع');\n this.selectAmount = salla.lang.getWithDefault('pages.products.select_amount', 'اختر المبلغ');\n });\n\n if (this.options) {\n try {\n this.setOptionsData(Array.isArray(this.options) ? this.options : JSON.parse(this.options));\n return;\n } catch (e) {\n salla.log('Bad json passed via options prop');\n }\n }\n if (!Array.isArray(this.optionsData)) {\n salla.log('Options is not an array[] ---> ', this.optionsData);\n this.setOptionsData([]);\n }\n\n if (this.productId && !salla.url.is_page('cart')) {\n salla.api.product.getDetails(this.productId, ['options']).then(resp => this.setOptionsData(resp.data.options));\n }\n }\n /**\n * Sets the options data for the product\n * @param optionsData - Array of product options\n */\n @Method()\n async setOptionsData(optionsData: Option[]) {\n this.optionsData = optionsData;\n const that = this\n this.optionsData[0]?.details?.forEach(function (detail) {\n Object.entries(detail.skus_availability || {})\n .filter(sku => !sku[1])\n .map(sku => that.outSkus.push(Number(sku[0])));\n });\n }\n\n @Element() host: HTMLElement;\n\n private fileTypes: Record<string, string> = {\n pdf: 'application/pdf',\n png: 'image/png',\n jpg: 'image/jpeg',\n word: 'application/doc,application/ms-doc,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n exl: 'application/excel,application/vnd.ms-excel,application/x-excel,application/x-msexcel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n txt: 'text/plain',\n };\n\n @State() optionsData: Option[]\n @State() outOfStockText = \"\"\n @State() donationAmount: string = salla.lang.get('pages.products.donation_amount')\n @State() selectDonationAmount: string = salla.lang.getWithDefault('pages.products.select_donation_amount', 'تحديد مبلغ التبرع')\n @State() selectAmount: string = salla.lang.getWithDefault('pages.products.select_amount', 'اختر المبلغ')\n @State() isCustomDonation = false;\n @State() selectedOptions = [];\n @State() canDisabled: boolean;\n @State() selectedSkus?: Array<string | number>;\n @State() selectedOutSkus?: Array<string | number>;\n @State() disableCardValue = true\n @State() availableDigitalCardValues: Detail[] = []\n\n private outSkus: Array<string | number> = [];\n private donationInput?: HTMLInputElement;\n private optionConfig: OptionConfig;\n /**\n * Avoid selection of previous default or selected card value option \n * when switching between digital card country options for the 1st time\n */\n private ignoreDefaultCardValue = false\n /**\n * The id of the product to which the options are going to be fetched for.\n */\n @Prop() productId: number = salla.config.get('page.id');\n\n /**\n * Product detail information.\n */\n @Prop() options: string\n\n /**\n * Hide the out of stock label.\n * Will be used in the case of live validation such as cart page and inline checkout\n */\n @Prop() hideOutLabel: string\n\n /**\n * A unique key used to generate distinct identifiers.\n * \n * This key is appended to a default value to ensure uniqueness\n * across instances or components where differentiation is required.\n */\n @Prop() uniqueKey: string\n\n /**\n * Configuration for customizing the display layout of product options.\n * The `config` prop accepts a JSON string that specifies the layout type for rendering options.\n * It allows customization of how single-option and multiple-option selections are displayed.\n * \n * Example Usage:\n * ```html\n * <salla-product-options \n * options=\"{{ product.options }}\" \n * product-id=\"{{ product.id }}\" \n * unique-key=\"abc123\"\n * config='{\n * \"single-option\": { \"type\": \"button\" },\n * \"multiple-option\": { \"type\": \"button\" }\n * }'>\n * </salla-product-options>\n * ```\n * \n * Example Config JSON:\n * ```json\n * {\n * \"single-option\": { \"type\": \"button\" },\n * \"multiple-option\": { \"type\": \"default\" }\n * }\n * ```\n * \n * - `single-option`:\n * - Defines the display style for single-option selections.\n * - `type`: Supported values:\n * - `\"button\"`: Displays options in a button-style grid layout.\n * - `\"default\"`: Displays options as a dropdown (default).\n * \n * - `multiple-option`:\n * - Defines the display style for multiple-option selections.\n * - `type`: Supported values:\n * - `\"button\"`: Displays options in a button-style grid layout.\n * - `\"default\"`: Displays options as a list of checkboxes (default).\n */\n @Prop() config: string;\n\n /**\n * Get the id's of the selected options.\n * */\n @Method()\n async getSelectedOptionsData() {\n const selectedOptions = {}\n const formData = (this.host as HTMLElement & { getElementSallaData: () => FormData }).getElementSallaData();\n formData.forEach((value, key) => {\n if (key.startsWith('options[')) { (selectedOptions[key.replace('options[', '').replace(']', '')] = value) }\n });\n return selectedOptions;\n }\n\n /**\n * Report options form validity.\n * */\n @Method()\n async reportValidity() {\n const requiredElements = this.host.querySelectorAll('[required]') as unknown as Array<HTMLInputElement>;\n let pass = true;\n for (let i = 0; i < requiredElements.length; i++) {\n //if there is only one invalid option, return false\n if ('reportValidity' in requiredElements[i] && !requiredElements[i].reportValidity()) {\n pass = false;\n }\n }\n return pass;\n }\n\n /**\n * Return true if there is any out of stock options are selected and vise versa.\n * */\n @Method()\n async hasOutOfStockOption() {\n return this.selectedOptions.some(option => option.is_out) || (this.selectedSkus?.length && this.selectedSkus?.every(sku => this.outSkus.includes(sku)));\n }\n\n /**\n * Get selected options.\n * */\n @Method()\n async getSelectedOptions() {\n return this.selectedOptions;\n }\n\n /**\n * Get a specific option by its id.\n * */\n @Method()\n async getOption(option_id) {\n return this.optionsData.find(option => option.id === option_id);\n }\n\n /**\n * An event that emitted when any option is changed.\n */\n @Event() changed: EventEmitter;\n\n // @ts-ignore\n private invalidHandler(event: Event, option: Option) {\n const closestProductOption = (event.target as HTMLInputElement).closest('.s-product-options-option') as HTMLElement;\n\n if (!closestProductOption.classList.contains('s-product-options-option-error')) {\n closestProductOption.classList.add('s-product-options-option-error');\n }\n\n if (!salla.url.is_page('cart')) {\n const firstInvalidElement = this.host.querySelector('.s-product-options-option-error');\n if (firstInvalidElement === closestProductOption) {\n this.scrollToElement(closestProductOption);\n }\n }\n }\n\n private scrollToElement(element: HTMLElement) {\n if (element) {\n element.scrollIntoView({ behavior: 'smooth', block: 'center' });\n }\n }\n\n private changedHandler(event, option, fireChangeEvent = true) {\n const data = {\n event: event,\n option: option,\n detail: null,\n productId: this.productId\n };\n\n if (option.details) {\n const detail = option.details.find((detail) => {\n return Number(detail.id) === Number(event.target.value);\n });\n data.detail = detail;\n }\n\n if (option.type === 'country') {\n this.handleCountryOptionChange(event, data.detail);\n }\n\n const optionElement = event.target.closest('.s-product-options-option');\n if (event.target.value ||\n ((option.type === DisplayType.FILE || option.type === DisplayType.IMAGE) && event.type === 'added') ||\n (option.type === DisplayType.MAP && event.type === 'selected' && (event.target.lat && event.target.lng))) {\n setTimeout(() => {\n optionElement.classList.remove('s-product-options-option-error');\n }, 200);\n }\n\n if (option.type === DisplayType.DONATION) {\n salla.event.emit('product-options::donation-changed', {\n id: this.productId,\n price: event.target.value\n });\n }\n\n this.setSelectedSkus();\n this.handleRequiredMultipleOptions(option);\n\n const index = this.selectedOptions.findIndex(opt => opt.option_id === data.option.id);\n\n if (data.option.type === DisplayType.MULTIPLE_OPTIONS) {\n // Handle multiple selections\n const detailIndex = this.selectedOptions.findIndex(\n opt => opt.option_id === data.option.id && opt?.id === data.detail?.id\n );\n if (detailIndex > -1) {\n // If the option is already selected, remove it (unselect)\n this.selectedOptions.splice(detailIndex, 1);\n } else {\n // If the option is not selected, add it to the selectedOptions array\n this.selectedOptions.push({ ...data.detail, option_id: data.option.id });\n }\n } else {\n // Handle single selection\n if (!data.detail || Object.keys(data.detail).length === 0) {\n // If there is no value for the single-select, remove it from the selectedOptions array\n if (index > -1) {\n this.selectedOptions.splice(index, 1);\n }\n } else {\n // If a value exists, update or add the selection\n if (index > -1) {\n // Replace the existing selection with the new one\n this.selectedOptions[index] = { ...data.detail, option_id: data.option.id };\n } else {\n // If no selection exists for this input, add the new selection\n this.selectedOptions.push({ ...data.detail, option_id: data.option.id });\n }\n }\n }\n\n \n // Update optionsData directly\n this.optionsData = this.optionsData.map(opt => {\n if (opt.id === data.option.id) {\n return {\n ...opt,\n details: opt.details.map(detail => ({\n ...detail,\n is_selected: data.option.type === DisplayType.MULTIPLE_OPTIONS\n ? this.selectedOptions.some(selected => selected.id === detail.id)\n : Number(detail.id) === Number(data.detail?.id),\n value: data.detail?.value\n }))\n };\n }\n return opt;\n });\n // Emit the event only if fireChangeEvent is true\n if (fireChangeEvent) {\n this.changed.emit(data);\n salla.event.emit('product-options::change', data);\n }\n }\n\n\n private handleDonationOptions = (event, detail, type) => {\n if (detail === 'custom' && type === 'input') {\n salla.helpers.inputDigitsOnly(event.target)\n salla.event.emit('product-options::donation-changed', {\n id: this.productId,\n price: event.target.value\n });\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n this.isCustomDonation = event.target.value === 'custom';\n if (this.donationInput) {\n if (event.target.value === 'custom') {\n this.donationInput.value = '';\n this.donationInput.focus()\n } else {\n this.donationInput.value = event.target.value;\n }\n if (detail === 'custom') {\n return\n }\n salla.event.emit('product-options::donation-changed', {\n id: this.productId,\n price: event.target.value\n });\n }\n }\n\n private hideLabel = (option) => {\n if (option.type === DisplayType.DONATION && (option.donation && !option.donation.can_donate)) {\n return true;\n }\n return false;\n }\n\n private getExpireDonationMessage = (option) => {\n if (!option.donation) {\n return;\n }\n const completed = option.donation.target_amount <= option.donation.collected_amount;\n return <div class={{ \"s-product-options-donation-message\": true, \"s-product-options-donation-completed\": completed, \"s-product-options-donation-expired\": !completed }}>\n <p>{option.donation.target_message}</p>\n <span innerHTML={completed ? salla.money(option.donation.target_amount) : ''}></span>\n </div>\n }\n /**\n * loop throw all selected details, then get common sku, if it's only one, means we selected all of them;\n */\n private setSelectedSkus() {\n this.selectedSkus = this.selectedOptions.map(detail => Object.keys(detail.skus_availability || {}))\n .reduce((p, c) => p.filter(e => c.includes(e)), []) // Initialize accumulator as an empty array\n .map(sku => Number(sku));\n }\n \n\n private handleRequiredMultipleOptions(option) {\n if (option.type !== DisplayType.MULTIPLE_OPTIONS || !option.required) {\n return;\n }\n const optionContainer = this.host.querySelector(`[data-option-id=\"${option.id}\"]`);\n const hasChecked = optionContainer.querySelectorAll('input:checked').length;\n optionContainer.querySelectorAll('input').forEach(input => input.toggleAttribute('required', !hasChecked));\n }\n\n private getLatLng(value, type: 'lat' | 'lng') {\n return value\n ? value.split(',')[type === 'lat' ? 0 : 1]\n : '';\n }\n\n private getDisplayForType(option: Option) {\n if (this[`${option.type}Option`]) {\n return this[`${option.type}Option`](option);\n }\n\n if (option.type === DisplayType.COLOR_PICKER) {\n return this.colorPickerOption(option)\n }\n\n if (option.type === DisplayType.MULTIPLE_OPTIONS) {\n return this.multipleOptions(option);\n }\n\n if (option.type === DisplayType.SINGLE_OPTION) {\n return this.singleOption(option);\n }\n\n if (option.type === DisplayType.DIGITAL_CARD_VALUE) {\n return this.digitalCardValuesOption(option);\n }\n if (option.type === DisplayType.COUNTRY) {\n return this.countryOption(option);\n }\n\n if (option.type === DisplayType.BOOKING && salla.url.is_page(\"cart\")) {\n return <salla-booking-field onInvalidInput={(e) => this.invalidHandler(e, option)} option={option as any} productId={option.value}></salla-booking-field>\n }\n\n salla.log(`Couldn't find options type(${option.type})😢`);\n return '';\n }\n\n protected getOptionShownWhen(option: Option) {\n return option.visibility_condition\n ? { \"data-show-when\": `options[${option.visibility_condition.option}] ${option.visibility_condition.operator} ${option.visibility_condition.value}` }\n : {};\n }\n\n private getAvailableDigitalCardSKUs(detail: Detail) {\n const digitalCardOption = this.optionsData.find(({ type }) => type === 'digital-code-value')\n\n if (!digitalCardOption) throw new Error('product-options:: No digital card options found')\n\n const outofStockSKUs = Object.keys(detail.skus_availability).filter(key => detail.skus_availability[key] === false)\n\n this.availableDigitalCardValues = digitalCardOption.details.filter((op) => {\n\n return !Object.keys(op.skus_availability).filter(SKU_key => outofStockSKUs.includes(SKU_key)).length\n\n })\n\n }\n private handleCountryOptionChange(event: Event, detail: Detail) {\n event.stopImmediatePropagation()\n\n this.ignoreDefaultCardValue = true\n\n const currentCardValue = this.host.querySelector(\"input[data-code-value]:checked\") as HTMLInputElement | null\n\n if (currentCardValue) currentCardValue.checked = false\n\n const digitalCardOption = this.optionsData.find(({ type }) => type === 'digital-code-value')\n\n if (!digitalCardOption) throw new Error('product-options:: No digital card options found')\n\n this.getAvailableDigitalCardSKUs(detail)\n }\n\n private getSelectedDigitalCardOptions(option: Option) {\n const selectedOption = option.details.find(detail => detail.is_selected)\n const defaultOption = option.details.find(detail => !!detail.is_default) || option.details[0] /*option.details[0] only applys for counrty options*/\n if (!['digital-code-value', 'country'].includes(option.type)) return\n\n return selectedOption || defaultOption\n\n\n }\n\n //we need the cart Id for productOption Image\n async componentWillLoad() {\n if(salla.url.is_page(\"cart\")){\n this.disableCardValue=false\n this.fillSelectedOptions();\n }\n\n if (this.config) {\n try {\n this.optionConfig = typeof this.config === 'string' ? JSON.parse(this.config) : this.config;\n } catch (error) {\n console.error('Failed to parse JSON in config prop:', error);\n }\n }\n\n const shouldSelectDefaultOption = this.optionsData.filter(({ type }) => [\"country\", \"digital-card-value\"].includes(type)).length > 0 && salla.url.is_page('cart')\n\n if (shouldSelectDefaultOption) {\n const countryOption = this.optionsData.find(option => option.type === 'country')\n\n const defaultSelection = countryOption && this.getSelectedDigitalCardOptions(countryOption)\n\n if (defaultSelection) {\n this.getAvailableDigitalCardSKUs(defaultSelection)\n }\n }\n this.outOfStockText = salla.lang.get('pages.products.out_of_stock')\n await salla.onReady();\n document.addEventListener(\"paste\", this.handlePaste.bind(this));\n const needsCartId = (!salla.storage.get('cart.id') && this.optionsData.some(option => ['file', 'image'].includes(option.type)));\n return needsCartId ? salla.api.cart.getCurrentCartId(false, \"salla-product-options\") : null;\n }\n\n /**\n * This is a workaround for a bug in iOS 26 Safari, when pasting English text to RTL inputs, it adds extra text!!\n * To avoid any break changes, we will make it only work on these conditions:\n * - content_copyright is on\n * - Apple Pay is enabled (means it's iOS/safari)\n * - Input is an input or textarea\n * - Salla form control\n * - Options array\n */\n private handlePaste(event: ClipboardEvent) {\n const target = event.target;\n if (\n !Salla.config.get('store.settings.content_copyright')\n || !Salla.helpers.hasApplePay()\n || !(target instanceof HTMLInputElement || target instanceof HTMLTextAreaElement)\n || !target.classList.contains('s-form-control')\n || !target.name.startsWith('options[')) {\n return;\n }\n // Prevent default paste (to avoid Safari inserting extra content)\n event.preventDefault();\n\n // Read only the clipboard data\n const text = event.clipboardData?.getData(\"text\") || \"\";\n\n // Insert it manually at cursor if you want\n const start = target.selectionStart;\n const end = target.selectionEnd;\n\n const newValue = target.value.slice(0, start) + text + target.value.slice(end);\n\n target.value = newValue;\n\n // Reset cursor position\n target.setSelectionRange(start + text.length, start + text.length);\n }\n\n private hideDigitalCardsOptions(option:Option){\n return (this.disableCardValue && option.type===DisplayType.DIGITAL_CARD_VALUE && !salla.url.is_page(\"cart\"))\n }\n\n render() {\n if (this.optionsData?.length === 0) {\n return;\n }\n\n return (\n <Host class=\"s-product-options-wrapper\">\n {/* TODO:: move salla-conditional-field logic to here, no need of another component*/}\n <salla-conditional-fields>\n {this.optionsData.map((option: Option) =>\n <div key={option.id} class={`s-product-options-option-container${option.visibility_condition || this.hideDigitalCardsOptions(option) ? ' hidden' : ''}`}\n data-option-id={option.id}\n {...this.getOptionShownWhen(option)}>\n {option.name === 'splitter' ?\n this.splitterOption()\n : <div class={{ \"s-product-options-option\": true, \"s-product-options-option-booking\": option.type === DisplayType.BOOKING && salla.url.is_page(\"cart\") }} data-option-type={option.type}\n data-option-required={`${option.required}`}>\n <label htmlFor={`options[${option.id}]`} class={`s-product-options-option-label ${this.hideLabel(option) ? 's-product-options-option-label-hidden' : ''}`}>\n <b>\n {option.name}\n {option.required && <span> * </span>} </b>\n <small>{option.placeholder}</small>\n </label>\n <div class={`s-product-options-option-content ${this.hideLabel(option) || (option.type === DisplayType.BOOKING && salla.url.is_page(\"cart\")) ? 's-product-options-option-content-full-width' : ''}`}>\n {this.getDisplayForType(option)}\n </div>\n </div>}\n </div>\n )}\n </salla-conditional-fields>\n </Host>\n );\n\n }\n\n private generateUniqueKey(defaultValue: string): string {\n return this.uniqueKey ? `${defaultValue}-${this.uniqueKey}` : defaultValue;\n }\n private fillSelectedOptions() {\n this.selectedOptions = this.optionsData.reduce((acc, opt) => {\n const selectedDetails = opt.details.filter(detail => detail.is_selected);\n const mappedDetails = selectedDetails.map(detail => ({\n ...detail,\n option_id: opt.id\n }));\n return acc.concat(mappedDetails);\n }, []);\n }\n\n private triggerProductFormSelectionEvents() {\n const trigger = (f: HTMLFormElement) =>\n ['change', 'input'].forEach(e => f.dispatchEvent(new window.Event(e, { bubbles: true })));\n const form = this.host.closest('form') as HTMLFormElement;\n if (form) {\n trigger(form);\n } else {\n // Fallback: wait for parent form to appear\n const observer = new MutationObserver(() => {\n const form = this.host.closest('form') as HTMLFormElement;\n if (form) {\n trigger(form);\n observer.disconnect();\n }\n });\n observer.observe(document.body, { childList: true, subtree: true });\n }\n }\n\n componentDidLoad() {\n if (salla.url.is_page('product.single')) {\n this.triggerProductFormSelectionEvents();\n }\n if (this.optionsData?.length === 0 && !this.optionsData.some(option => option.type === DisplayType.DONATION)) {\n return;\n }\n const selectedDonationOption = this.optionsData.find(option => option.type === DisplayType.DONATION)?.details.find(detail => detail.is_selected);\n if (!selectedDonationOption) {\n return;\n }\n setTimeout(() => {\n salla.event.emit('product-options::donation-changed', {\n id: this.productId,\n price: selectedDonationOption.additional_price\n });\n }, 1000);\n }\n //@ts-ignore\n private donationOption(option: Option, product: Product) {\n return <div class=\"s-product-options-donation-wrapper\">\n\n {option.donation?.can_donate ? [\n option.donation ?\n <div key={option.id} class=\"s-product-options-donation-progress\">\n <salla-progress-bar donation={option.donation}>\n </salla-progress-bar>\n </div>\n : '',\n option.details.length ?\n [<h4 key={option.id}>{this.selectAmount}</h4>,\n <div key={option.id} class=\"s-product-options-donation-options\">\n {option.details.map((detail, i) =>\n <div key={option.id} class=\"s-product-options-donation-options-item\">\n <input id={this.generateUniqueKey(`donation-option-${i}`)} type=\"radio\" name=\"donating_option\" checked={detail.is_selected} value={detail.additional_price} onChange={e => this.handleDonationOptions(e, detail, 'option')} />\n <label htmlFor={this.generateUniqueKey(`donation-option-${i}`)}>\n <span innerHTML={salla.money(detail.name)}></span>\n </label>\n </div>\n )}\n {option.donation?.custom_amount_enabled ?\n <div class=\"s-product-options-donation-options-item\">\n <input id={this.generateUniqueKey(\"donation-option-custom\")} type=\"radio\" name=\"donating_option\" value=\"custom\" onChange={e => this.handleDonationOptions(e, 'custom', 'option')} />\n <label htmlFor={this.generateUniqueKey(\"donation-option-custom\")}>\n <span> {this.selectDonationAmount} </span>\n </label>\n </div>\n : ''\n }\n </div>] : '',\n\n <div key={option.id} class={{ \"s-product-options-donation-input-group\": true, \"shown\": !option.details.length || (option.details.length && this.isCustomDonation) }}>\n <input\n type=\"text\"\n id=\"donating-amount\"\n name=\"donation_amount\"\n class=\"s-form-control\"\n ref={el => { this.donationInput = el as HTMLInputElement }}\n value={\n option.details.length\n && option.details.some(detail => detail.is_selected)\n ? option.details.find(detail => detail.is_selected).additional_price\n : option.value}\n // required\n placeholder={option.placeholder}\n onInput={e => this.handleDonationOptions(e, 'custom', 'input')}\n onBlur={e => this.changedHandler(e, option)}\n onInvalid={(e) => this.invalidHandler(e, option)}\n />\n {/* value={option.value} */}\n <span class=\"s-product-options-donation-amount-currency\">\n {salla.config.currency(salla.config.get('user.currency_code')).symbol}\n </span>\n </div>\n ] :\n this.getExpireDonationMessage(option)\n }\n </div>\n }\n\n private fileUploader(option: Option, additions: Record<string, unknown> | null = null) {\n return <salla-file-upload\n {...(additions || {})}\n payload-name=\"file\"\n value={option.value}\n instant-upload={true}\n name={`options[${option.id}]`}\n required={!option.visibility_condition && option.required}\n height=\"120px\"\n onAdded={(e) => this.changedHandler(e, option)}\n url={salla.cart.api.getUploadImageEndpoint()}\n form-data={{ cart_item_id: this.productId, product_id: this.productId }}\n onInvalidInput={(e) => this.invalidHandler(e, option)}\n class={{ \"s-product-options-image-input\": true, required: option.required }}\n >\n <div class=\"s-product-options-filepond-placeholder\">\n <span class=\"s-product-options-filepond-placeholder-icon\"\n innerHTML={(additions as { accept: string }).accept?.split(',').every(type => type.includes('image'))\n ? CameraIcon\n : FileIcon}\n />\n <p class=\"s-product-options-filepond-placeholder-text\">{salla.lang.get('common.uploader.drag_and_drop')}</p>\n <span class=\"filepond--label-action\">{salla.lang.get('common.uploader.browse')}</span>\n </div>\n </salla-file-upload>\n }\n\n //@ts-ignore\n private imageOption(option: Option) {\n return this.fileUploader(option, { accept: 'image/png,image/jpeg,image/jpg,image/gif' });\n }\n\n //@ts-ignore\n private fileOption(option: Option) {\n const types = option.details.map(detail => this.fileTypes[detail.name]).filter(Boolean);\n return types?.length\n ? this.fileUploader(option, { accept: types.join(',') })\n : 'File types not selected.';\n }\n\n // TODO: (ONLY FOR TESTING!) find a better way to make it testable, e.g. wrap it with a unique class like textOption\n //@ts-ignore\n private numberOption(option: Option) {\n return <input\n type=\"text\"\n value={option.value}\n class=\"s-form-control\"\n required={!option.visibility_condition && option.required}\n name={`options[${option.id}]`}\n placeholder={option.placeholder}\n onBlur={e => this.changedHandler(e, option)}\n onInvalid={(e) => this.invalidHandler(e, option)}\n onInput={e => salla.helpers.inputDigitsOnly(e.target)} />\n }\n\n //@ts-ignore\n private splitterOption() {\n return <div class=\"s-product-options-splitter\" />\n }\n\n //@ts-ignore\n private textOption(option: Option) {\n return <div class=\"s-product-options-text\">\n <input\n type=\"text\"\n value={option.value}\n maxLength={option?.length}\n class='s-form-control'\n required={!option.visibility_condition && option.required}\n name={`options[${option.id}]`}\n placeholder={option.placeholder}\n onInvalid={(e) => this.invalidHandler(e, option)}\n onChange={e => this.changedHandler(e, option)} />\n </div>\n }\n\n //@ts-ignore\n private textareaOption(option: Option) {\n //todo::remove mt-1 class, and if it's okay to remove the tag itself will be great\n return <div class=\"s-product-options-textarea\">\n <div class=\"mt-1\">\n <textarea\n rows={4}\n value={option.value}\n maxLength={option?.length}\n class=\"s-form-control\"\n required={!option.visibility_condition && option.required}\n id={`options[${option.id}]`}\n name={`options[${option.id}]`}\n placeholder={option.placeholder}\n onInvalid={(e) => this.invalidHandler(e, option)}\n onChange={(e) => this.changedHandler(e, option)} />\n </div>\n </div>\n }\n\n //@ts-ignore\n private mapOption(option: Option) {\n return <salla-map\n zoom={15}\n lat={this.getLatLng(option.value, 'lat')}\n lng={this.getLatLng(option.value, 'lng')}\n name={`options[${option.id}]`}\n searchable={true}\n required={option.required}\n onInvalidInput={(e) => this.invalidHandler(e, option)}\n onSelected={e => this.changedHandler(e, option)} />\n }\n\n private colorPickerOption(option: Option) {\n return <salla-color-picker\n onSubmitted={e => this.changedHandler(e, option)}\n name={`options[${option.id}]`}\n required={!option.visibility_condition && option.required}\n onInvalidInput={(e) => this.invalidHandler(e, option)}\n color={option.value} />\n }\n\n /**\n * ============= Date Time options =============\n */\n //@ts-ignore\n private timeOption(option: Option) {\n return <salla-datetime-picker\n noCalendar={true}\n enableTime={true}\n dateFormat=\"h:i K\"\n value={option.value}\n placeholder={option.name}\n required={!option.visibility_condition && option.required}\n name={`options[${option.id}]`}\n class=\"s-product-options-time-element\"\n onInvalidInput={(e) => this.invalidHandler(e, option)}\n onPicked={e => this.changedHandler(e, option)} />\n }\n\n //@ts-ignore\n private dateOption(option: Option) {\n //todo:: consider date-range @see https://github.com/SallaApp/theme-raed/blob/master/src/assets/js/partials/product-options.js#L8-L23\n return <div class=\"s-product-options-date-element\">\n <salla-datetime-picker\n value={option.value}\n placeholder={option.name}\n required={!option.visibility_condition && option.required}\n minDate={new Date()}\n name={`options[${option.id}]`}\n onInvalidInput={(e) => this.invalidHandler(e, option)}\n onPicked={e => this.changedHandler(e, option)} />\n </div>\n }\n\n //@ts-ignore\n private datetimeOption(option: Option) {\n //todo:: consider date-range @see https://github.com/SallaApp/theme-raed/blob/master/src/assets/js/partials/product-options.js#L8-L23\n return <div class=\"s-product-options-datetime-element\">\n <salla-datetime-picker\n enableTime={true}\n value={option.value}\n dateFormat=\"Y-m-d G:i:K\"\n placeholder={option.name}\n required={!option.visibility_condition && option.required}\n name={`options[${option.id}]`}\n maxDate={option.to_date_time}\n minDate={option.from_date_time}\n onInvalidInput={(e) => this.invalidHandler(e, option)}\n onPicked={e => this.changedHandler(e, option)} />\n </div>\n }\n\n /**\n * ============= Advanced options =============\n */\n protected getOptionDetailName(detail: Detail, outOfStock = true, optionType?: string) {\n let detailName;\n if (optionType && optionType === DisplayType.COLOR) {\n detailName = detail.name\n + ((outOfStock && this.isOptionDetailOut(detail) && !salla.url.is_page(\"cart\")) && !this.hideOutLabel ? ` <br/> <p> ${this.outOfStockText} </p>` : '')\n + (detail.additional_price ? ` <p> (${salla.money(detail.additional_price, false)}) </p>` : '');\n }\n\n if(!detailName){\n detailName = detail.name\n + ((outOfStock && this.isOptionDetailOut(detail) && !salla.url.is_page(\"cart\")) && !this.hideOutLabel ? ` - ${this.outOfStockText}` : '')\n + (detail.additional_price ? ` (${salla.money(detail.additional_price, false)})` : '');\n }\n\n //Some merchants adding price to the names of the options,\n //and because we are using this inside select option, we need to replace the html currency symbol with the store currency symbol\n return detailName.replace('<i class=sicon-sar></i>',salla.config.currency()?.symbol || 'ر.س');\n }\n\n\n protected isOptionDetailOut(detail: Detail) {\n if (detail.is_out || !detail.skus_availability || !this.selectedSkus?.length) {\n return detail.is_out;\n }\n\n const isDetailSelected = this.selectedOptions.filter(option => option.id === detail.id).length;\n //if the current options is the only selected option, so we are sure that it's not out, because there is no other options selected yet\n if (isDetailSelected && this.selectedOptions.length === 1) {\n return false;\n }\n\n //if current details has sku in the possible outSkus it's out for sure\n if (isDetailSelected) {\n //here we will get the possible outSkus for current selected options\n const outSelectableSkus = this.selectedSkus.filter(sku => this.outSkus.includes(sku));\n return Object.keys(detail.skus_availability).some(sku => outSelectableSkus.includes(Number(sku)))\n }\n\n return this.selectedOptions.some(option => option.is_out && option.option_id !== detail.option_id)\n\n }\n\n /**\n * Renders a single input element (radio or checkbox) for an option detail.\n * @param type - The type of input element ('radio' or 'checkbox').\n * @param detail - The detail object representing an option detail.\n * @param option - The parent option object containing the details.\n * @param isRequired - Indicates if the input is required based on the option's rules.\n * @param name - The name attribute for the input element.\n * @returns HTMLElement - A labeled input element.\n */\n private renderInput(\n type: 'radio' | 'checkbox',\n detail: Detail,\n option: Option,\n isRequired: boolean,\n name: string,\n buttonStyle: boolean,\n ): HTMLElement {\n const id = this.generateUniqueKey(`${type}-${option.id}-${detail.id}`);\n const isDisabled = this.isOptionDetailOut(detail);\n return (\n <label class={{\n \"s-product-options-disabled\": isDisabled,\n }}>\n <input\n id={id}\n type={type}\n name={name}\n value={detail.id}\n disabled={isDisabled}\n required={isRequired}\n checked={detail.is_selected}\n onInvalid={(e) => this.invalidHandler(e, option)}\n onChange={(e) => this.changedHandler(e, option)}\n />\n <div class={{\"s-product-options-grid-mode-span\": buttonStyle, \"s-product-options-disabled\": isDisabled}}>\n {this.getOptionDetailName(detail)}\n </div>\n </label>\n );\n }\n\n /**\n * Renders a collection of input elements for all details of an option.\n * @param type - The type of input elements ('radio' or 'checkbox').\n * @param option - The parent option object containing the details.\n * @param isRequired - Indicates if the inputs are required based on the option's rules.\n * @returns HTMLElement[] - An array of labeled input elements.\n */\n private renderOptionDetails(\n type: 'radio' | 'checkbox',\n option: Option,\n isRequired: boolean,\n buttonStyle: boolean = false\n ): HTMLElement[] {\n const name = type === 'radio' ? `options[${option.id}]` : `options[${option.id}][]`;\n return option?.details.map((detail: Detail) =>\n this.renderInput(type, detail, option, isRequired, name, buttonStyle)\n );\n }\n\n /**\n * Renders a dropdown (select) element for a single-option selection.\n * @param option - The parent option object.\n * @returns HTMLElement - A select dropdown element with all option details.\n */\n private renderSelect(option: Option): HTMLElement {\n return (\n <div>\n <select\n name={`options[${option.id}]`}\n required={!option.visibility_condition && option.required}\n class=\"s-form-control\"\n onInvalid={(e) => this.invalidHandler(e, option)}\n onChange={(e) => this.changedHandler(e, option)}\n >\n <option value=\"\">{option.placeholder}</option>\n {option?.details.map((detail: Detail) => (\n <option\n key={detail.id}\n value={detail.id}\n disabled={this.canDisabled && this.isOptionDetailOut(detail)}\n selected={detail.is_selected}\n >\n {this.getOptionDetailName(detail)}\n </option>\n ))}\n </select>\n </div>\n );\n }\n\n /**\n * Renders a grid-based layout for option inputs (radio or checkbox).\n * @param type - The type of input elements ('radio' or 'checkbox').\n * @param option - The parent option object containing the details.\n * @param isRequired - Indicates if the inputs are required based on the option's rules.\n * @returns HTMLElement - A grid-based container with input elements.\n */\n private renderButtonStyle(\n type: 'radio' | 'checkbox',\n option: Option,\n isRequired: boolean\n ): HTMLElement {\n return (\n <div class=\"s-product-options-grid-mode\">\n {this.renderOptionDetails(type, option, isRequired, true)}\n </div>\n );\n }\n\n /**\n * Renders a single-option selection, either as a grid or dropdown, based on configuration.\n * @param option - The parent option object.\n * @returns HTMLElement - The rendered single-option element.\n */\n private singleOption(option: Option): HTMLElement {\n const buttonStyle = this.optionConfig?.['single-option']?.type === 'button';\n const isRequired = !option.visibility_condition && option.required;\n\n return buttonStyle\n ? this.renderButtonStyle('radio', option, isRequired)\n : this.renderSelect(option);\n }\n\n /**\n * Renders a multiple-option selection, either as a grid or list, based on configuration.\n * @param option - The parent option object.\n * @returns HTMLElement - The rendered multiple-option element.\n */\n private multipleOptions(option: Option): HTMLElement {\n const buttonStyle = this.optionConfig?.['multiple-option']?.type === 'button';\n const isRequired =\n option.required &&\n !option.details.some((detail) => detail.is_selected) &&\n !option.visibility_condition;\n\n return buttonStyle\n ? this.renderButtonStyle('checkbox', option, isRequired)\n : (\n <div\n class={{\n 's-product-options-multiple-options-wrapper': true,\n required: option.required,\n }}\n >\n {this.renderOptionDetails('checkbox', option, isRequired)}\n </div>\n );\n }\n \n //@ts-ignore\n private colorOption(option: Option) {\n return (\n <fieldset\n class=\"s-product-options-colors-wrapper\"\n >\n {option?.details.map((detail) => (\n <div\n class=\"s-product-options-colors-item\"\n key={detail.id}\n >\n <input\n type=\"radio\"\n value={detail.id}\n required={!option.visibility_condition && option.required}\n checked={detail.is_selected}\n name={`options[${option.id}]`}\n disabled={this.canDisabled && this.isOptionDetailOut(detail)}\n id={this.generateUniqueKey(`color-${this.productId}-${option.id}-${detail.id}`)}\n onInvalid={(e) => this.invalidHandler(e, option)}\n onChange={(e) => this.changedHandler(e, option)}\n />\n <label htmlFor={this.generateUniqueKey(`color-${this.productId}-${option.id}-${detail.id}`)}>\n <span style={{ backgroundColor: detail.color }} />\n <div innerHTML={this.getOptionDetailName(detail, true, option.type)} />\n </label>\n </div>\n ))}\n </fieldset>\n );\n } \n\n //@ts-ignore\n private thumbnailOption(option: Option) {\n return <div class=\"s-product-options-thumbnails-wrapper\">\n {option.details.map((detail: Detail) => {\n return <div key={detail.id}>\n <input type=\"radio\"\n value={detail.id}\n data-itemid={detail.id} //todo:: why need this? it's already in the value!\n required={!option.visibility_condition && option.required}\n checked={detail.is_selected}\n name={`options[${option.id}]`}\n data-img-id={detail.option_value}\n disabled={this.canDisabled && this.isOptionDetailOut(detail)}\n id={this.generateUniqueKey(`option_${this.productId}-${option.id}_${detail.id}`)}\n onInvalid={(e) => this.invalidHandler(e, option)}\n onChange={(e) => this.changedHandler(e, option)} />\n <label htmlFor={this.generateUniqueKey(`option_${this.productId}-${option.id}_${detail.id}`)}\n data-img-id={detail.option_value}\n class=\"go-to-slide\">\n <img data-src={detail.image} src={detail.image} title={detail.name} alt={detail.name} />\n <span innerHTML={CheckCircleIcon} class=\"s-product-options-thumbnails-icon\" />\n {this.isOptionDetailOut(detail) ?\n [\n <small key={detail.id} class=\"s-product-options-thumbnails-stock-badge\">{this.outOfStockText}</small>,\n this.canDisabled ? <div key={detail.id} class=\"s-product-options-thumbnails-badge-overlay\" /> : '',\n ]\n : ''}\n </label>\n <p>{this.getOptionDetailName(detail, false)} </p>\n </div>\n })}\n </div>\n }\n\n // Digital card options\n private digitalCardValuesOption(option: Option) {\n\n return <div class=\"s-product-options-digital-card-wrapper\">\n {this.availableDigitalCardValues.length > 0 ? this.availableDigitalCardValues.map((detail) => {\n const id = String(detail.id)\n return <label htmlFor={this.generateUniqueKey(id.toString())} key={id} class=\"s-product-options-digital-card-option\">\n <input type=\"radio\" data-code-value class=\"s-form-control s-product-options-digital-card-input\" value={detail.id}\n name={`options[${option.id}]`}\n id={this.generateUniqueKey(id.toString())}\n required={!option.visibility_condition && option.required}\n onInvalid={(e) => this.invalidHandler(e, option)}\n {...(!this.ignoreDefaultCardValue ? {defaultChecked: this.getSelectedDigitalCardOptions(option)?.id === detail.id}:{})}\n\n />\n <span>{detail.name} {salla.config?.currency()?.symbol}</span>\n </label>\n })\n : <div class=\"s-product-options-digital-card-out-of-stock\"/>\n }\n </div>\n }\n private countryOption(option: Option) {\n return <div class=\"s-product-options-digital-card-wrapper\">\n {option.details.map((detail) => {\n\n return <label htmlFor={this.generateUniqueKey(detail.id.toString())} key={detail.id} class={{\"s-product-options-digital-card-option\":true,\"s-product-options-digital-card-option-stock-out\":detail.is_out}}>\n <input id={this.generateUniqueKey(detail.id.toString())} type=\"radio\" class=\"s-form-control s-product-options-digital-card-input\" value={detail.id}\n name={`options[${option.id}]`}\n disabled={detail.is_out}\n required={!option.visibility_condition && option.required}\n onInvalid={(e) => this.invalidHandler(e, option)}\n onChange={e => this.changedHandler(e, option)}\n onClick={()=>{ this.disableCardValue = false}}\n {...(salla.url.is_page(\"cart\") ? {defaultChecked:this.getSelectedDigitalCardOptions(option)?.id === detail.id}:{})}\n\n />\n <img loading='lazy' alt={detail.code} height={24} width={24} class=\"s-product-options-country-flag\" src={`https://cdn.assets.salla.network/prod/admin/cp/assets/flags/1x1/${String(detail.code).toLocaleLowerCase()}.svg`}/>\n <span >{detail.name}</span>\n </label>\n })\n }\n </div>\n\n }\n\n}\n"],"mappings":";;;wIAAA,IAAYA,GAAZ,SAAYA,GACVA,EAAA,iBACAA,EAAA,eACAA,EAAA,uBACAA,EAAA,uBACAA,EAAA,iBACAA,EAAA,uCACAA,EAAA,mBACAA,EAAA,iCACAA,EAAA,2CACAA,EAAA,qBACAA,EAAA,uBACAA,EAAA,eACAA,EAAA,uBACAA,EAAA,yBACAA,EAAA,eACAA,EAAA,iBACAA,EAAA,uBACAA,EAAA,aACAA,EAAA,eACAA,EAAA,+BACAA,EAAA,oBACD,EAtBD,CAAYA,MAsBX,KAqID,IAAYC,GAAZ,SAAYA,GACVA,EAAA,YACD,EAFD,CAAYA,MAEX,K,q/BC7JD,MAAMC,EAAyB,G,MCUlBC,EAAmB,MAE9B,WAAAC,CAAAC,G,yCA2CQC,KAAAC,UAAoC,CAC1CC,IAAK,kBACLC,IAAK,YACLC,IAAK,aACLC,KAAM,gIACNC,IAAK,yJACLC,IAAK,cAIEP,KAAcQ,eAAG,GACjBR,KAAcS,eAAWC,MAAMC,KAAKC,IAAI,kCACxCZ,KAAoBa,qBAAWH,MAAMC,KAAKG,eAAe,wCAAyC,qBAClGd,KAAYe,aAAWL,MAAMC,KAAKG,eAAe,+BAAgC,eACjFd,KAAgBgB,iBAAG,MACnBhB,KAAeiB,gBAAG,GAIlBjB,KAAgBkB,iBAAG,KACnBlB,KAA0BmB,2BAAa,GAExCnB,KAAOoB,QAA2B,GAOlCpB,KAAsBqB,uBAAG,MAIzBrB,KAASsB,UAAWZ,MAAMa,OAAOX,IAAI,WA6OrCZ,KAAqBwB,sBAAG,CAACC,EAAOC,EAAQC,KAC9C,GAAID,IAAW,UAAYC,IAAS,QAAS,CAC3CjB,MAAMkB,QAAQC,gBAAgBJ,EAAMK,QACpCpB,MAAMe,MAAMM,KAAK,oCAAqC,CACpDC,GAAIhC,KAAKsB,UACTW,MAAOR,EAAMK,OAAOI,QAEtB,M,CAEFT,EAAMU,iBACNV,EAAMW,kBACNpC,KAAKgB,iBAAmBS,EAAMK,OAAOI,QAAU,SAC/C,GAAIlC,KAAKqC,cAAe,CACtB,GAAIZ,EAAMK,OAAOI,QAAU,SAAU,CACnClC,KAAKqC,cAAcH,MAAQ,GAC3BlC,KAAKqC,cAAcC,O,KACd,CACLtC,KAAKqC,cAAcH,MAAQT,EAAMK,OAAOI,K,CAE1C,GAAIR,IAAW,SAAU,CACvB,M,CAEFhB,MAAMe,MAAMM,KAAK,oCAAqC,CACpDC,GAAIhC,KAAKsB,UACTW,MAAOR,EAAMK,OAAOI,O,GAKlBlC,KAAAuC,UAAaC,IACnB,GAAIA,EAAOb,OAASjC,EAAY+C,WAAaD,EAAOE,WAAaF,EAAOE,SAASC,YAAa,CAC5F,OAAO,I,CAET,OAAO,KAAK,EAGN3C,KAAA4C,yBAA4BJ,IAClC,IAAKA,EAAOE,SAAU,CACpB,M,CAEF,MAAMG,EAAYL,EAAOE,SAASI,eAAiBN,EAAOE,SAASK,iBACnE,OAAOC,EAAA,OAAKC,MAAO,CAAE,qCAAsC,KAAM,uCAAwCJ,EAAW,sCAAuCA,IACzJG,EAAA,SAAIR,EAAOE,SAASQ,gBACpBF,EAAM,QAAAG,UAAWN,EAAYnC,MAAM0C,MAAMZ,EAAOE,SAASI,eAAiB,KACtE,EApWN9C,KAAKqD,aAAe3C,MAAMa,OAAOX,IAAI,uDAAyDF,MAAM4C,IAAIC,QAAQ,QAChH7C,MAAMC,KAAK6C,UAAS,KAClBxD,KAAKQ,eAAiBE,MAAMC,KAAKC,IAAI,+BACrCZ,KAAKS,eAAiBC,MAAMC,KAAKC,IAAI,kCACrCZ,KAAKa,qBAAuBH,MAAMC,KAAKG,eAAe,wCAAyC,qBAC/Fd,KAAKe,aAAeL,MAAMC,KAAKG,eAAe,+BAAgC,cAAc,IAG9F,GAAId,KAAKyD,QAAS,CAChB,IACEzD,KAAK0D,eAAeC,MAAMC,QAAQ5D,KAAKyD,SAAWzD,KAAKyD,QAAUI,KAAKC,MAAM9D,KAAKyD,UACjF,M,CACA,MAAOM,GACPrD,MAAMsD,IAAI,mC,EAGd,IAAKL,MAAMC,QAAQ5D,KAAKiE,aAAc,CACpCvD,MAAMsD,IAAI,qCAAmChE,KAAKiE,aAClDjE,KAAK0D,eAAe,G,CAGtB,GAAI1D,KAAKsB,YAAcZ,MAAM4C,IAAIC,QAAQ,QAAS,CAChD7C,MAAMwD,IAAIC,QAAQC,WAAWpE,KAAKsB,UAAW,CAAC,YAAY+C,MAAKC,GAAQtE,KAAK0D,eAAeY,EAAKC,KAAKd,U,CAExG,CAMD,oBAAMC,CAAeO,G,QACnBjE,KAAKiE,YAAcA,EACnB,MAAMO,EAAOxE,MACbyE,GAAAC,EAAA1E,KAAKiE,YAAY,MAAE,MAAAS,SAAA,SAAAA,EAAEC,WAAO,MAAAF,SAAA,SAAAA,EAAEG,SAAQ,SAAUlD,GAC9CmD,OAAOC,QAAQpD,EAAOqD,mBAAqB,IACxCC,QAAOC,IAAQA,EAAI,KACnBC,KAAID,GAAOT,EAAKpD,QAAQ+D,KAAKC,OAAOH,EAAI,MAC7C,G,CAuGF,4BAAMI,GACJ,MAAMpE,EAAkB,GACxB,MAAMqE,EAAYtF,KAAKuF,KAA+DC,sBACtFF,EAASV,SAAQ,CAAC1C,EAAOuD,KACvB,GAAIA,EAAIC,WAAW,YAAa,CAAGzE,EAAgBwE,EAAIE,QAAQ,WAAY,IAAIA,QAAQ,IAAK,KAAOzD,C,KAErG,OAAOjB,C,CAOT,oBAAM2E,GACJ,MAAMC,EAAmB7F,KAAKuF,KAAKO,iBAAiB,cACpD,IAAIC,EAAO,KACX,IAAK,IAAIC,EAAI,EAAGA,EAAIH,EAAiBI,OAAQD,IAAK,CAEhD,GAAI,mBAAoBH,EAAiBG,KAAOH,EAAiBG,GAAGJ,iBAAkB,CACpFG,EAAO,K,EAGX,OAAOA,C,CAOT,yBAAMG,G,QACJ,OAAOlG,KAAKiB,gBAAgBkF,MAAK3D,GAAUA,EAAO4D,YAAY1B,EAAA1E,KAAKqG,gBAAc,MAAA3B,SAAA,SAAAA,EAAAuB,WAAUxB,EAAAzE,KAAKqG,gBAAY,MAAA5B,SAAA,SAAAA,EAAE6B,OAAMrB,GAAOjF,KAAKoB,QAAQmF,SAAStB,K,CAOnJ,wBAAMuB,GACJ,OAAOxG,KAAKiB,e,CAOd,eAAMwF,CAAUC,GACd,OAAO1G,KAAKiE,YAAY0C,MAAKnE,GAAUA,EAAOR,KAAO0E,G,CAS/C,cAAAE,CAAenF,EAAce,GACnC,MAAMqE,EAAwBpF,EAAMK,OAA4BgF,QAAQ,6BAExE,IAAKD,EAAqBE,UAAUC,SAAS,kCAAmC,CAC9EH,EAAqBE,UAAUE,IAAI,iC,CAGrC,IAAKvG,MAAM4C,IAAIC,QAAQ,QAAS,CAC9B,MAAM2D,EAAsBlH,KAAKuF,KAAK4B,cAAc,mCACpD,GAAID,IAAwBL,EAAsB,CAChD7G,KAAKoH,gBAAgBP,E,GAKnB,eAAAO,CAAgBC,GACtB,GAAIA,EAAS,CACXA,EAAQC,eAAe,CAAEC,SAAU,SAAUC,MAAO,U,EAIhD,cAAAC,CAAehG,EAAOe,EAAQkF,EAAkB,MACtD,MAAMnD,EAAO,CACX9C,MAAOA,EACPe,OAAQA,EACRd,OAAQ,KACRJ,UAAWtB,KAAKsB,WAGlB,GAAIkB,EAAOmC,QAAS,CAClB,MAAMjD,EAASc,EAAOmC,QAAQgC,MAAMjF,GAC3B0D,OAAO1D,EAAOM,MAAQoD,OAAO3D,EAAMK,OAAOI,SAEnDqC,EAAK7C,OAASA,C,CAGhB,GAAIc,EAAOb,OAAS,UAAW,CAC7B3B,KAAK2H,0BAA0BlG,EAAO8C,EAAK7C,O,CAG7C,MAAMkG,EAAgBnG,EAAMK,OAAOgF,QAAQ,6BAC3C,GAAIrF,EAAMK,OAAOI,QACbM,EAAOb,OAASjC,EAAYmI,MAAQrF,EAAOb,OAASjC,EAAYoI,QAAUrG,EAAME,OAAS,SAC1Fa,EAAOb,OAASjC,EAAYqI,KAAOtG,EAAME,OAAS,aAAeF,EAAMK,OAAOkG,KAAOvG,EAAMK,OAAOmG,KAAO,CAC1GC,YAAW,KACTN,EAAcb,UAAUoB,OAAO,iCAAiC,GAC/D,I,CAGL,GAAI3F,EAAOb,OAASjC,EAAY+C,SAAU,CACxC/B,MAAMe,MAAMM,KAAK,oCAAqC,CACpDC,GAAIhC,KAAKsB,UACTW,MAAOR,EAAMK,OAAOI,O,CAIxBlC,KAAKoI,kBACLpI,KAAKqI,8BAA8B7F,GAEnC,MAAM8F,EAAQtI,KAAKiB,gBAAgBsH,WAAUC,GAAOA,EAAI9B,YAAcnC,EAAK/B,OAAOR,KAElF,GAAIuC,EAAK/B,OAAOb,OAASjC,EAAY+I,iBAAkB,CAErD,MAAMC,EAAc1I,KAAKiB,gBAAgBsH,WACvCC,IAAM,IAAA9D,EAAC,OAAA8D,EAAI9B,YAAcnC,EAAK/B,OAAOR,KAAMwG,IAAG,MAAHA,SAAA,SAAAA,EAAKxG,QAAO0C,EAAAH,EAAK7C,UAAQ,MAAAgD,SAAA,SAAAA,EAAA1C,GAAE,IAExE,GAAI0G,GAAc,EAAI,CAEpB1I,KAAKiB,gBAAgB0H,OAAOD,EAAa,E,KACpC,CAEL1I,KAAKiB,gBAAgBkE,KAAIN,OAAA+D,OAAA/D,OAAA+D,OAAA,GAAMrE,EAAK7C,QAAQ,CAAAgF,UAAWnC,EAAK/B,OAAOR,K,MAEhE,CAEL,IAAKuC,EAAK7C,QAAUmD,OAAOgE,KAAKtE,EAAK7C,QAAQuE,SAAW,EAAG,CAEzD,GAAIqC,GAAQ,EAAI,CACdtI,KAAKiB,gBAAgB0H,OAAOL,EAAO,E,MAEhC,CAEL,GAAIA,GAAQ,EAAI,CAEdtI,KAAKiB,gBAAgBqH,GAAMzD,OAAA+D,OAAA/D,OAAA+D,OAAA,GAAQrE,EAAK7C,QAAQ,CAAAgF,UAAWnC,EAAK/B,OAAOR,I,KAClE,CAELhC,KAAKiB,gBAAgBkE,KAAIN,OAAA+D,OAAA/D,OAAA+D,OAAA,GAAMrE,EAAK7C,QAAQ,CAAAgF,UAAWnC,EAAK/B,OAAOR,K,GAOzEhC,KAAKiE,YAAcjE,KAAKiE,YAAYiB,KAAIsD,IACtC,GAAIA,EAAIxG,KAAOuC,EAAK/B,OAAOR,GAAI,CAC7B,OAAA6C,OAAA+D,OAAA/D,OAAA+D,OAAA,GACKJ,GAAG,CACN7D,QAAS6D,EAAI7D,QAAQO,KAAIxD,I,QAAU,OAC9BmD,OAAA+D,OAAA/D,OAAA+D,OAAA,GAAAlH,GACH,CAAAoH,YAAavE,EAAK/B,OAAOb,OAASjC,EAAY+I,iBAC1CzI,KAAKiB,gBAAgBkF,MAAK4C,GAAYA,EAAS/G,KAAON,EAAOM,KAC7DoD,OAAO1D,EAAOM,MAAQoD,QAAOV,EAAAH,EAAK7C,UAAM,MAAAgD,SAAA,SAAAA,EAAE1C,IAC9CE,OAAOuC,EAAAF,EAAK7C,UAAM,MAAA+C,SAAA,SAAAA,EAAEvC,OAAK,K,CAI/B,OAAOsG,CAAG,IAGZ,GAAId,EAAiB,CACnB1H,KAAKgJ,QAAQjH,KAAKwC,GAClB7D,MAAMe,MAAMM,KAAK,0BAA2BwC,E,EAsDxC,eAAA6D,GACNpI,KAAKqG,aAAerG,KAAKiB,gBAAgBiE,KAAIxD,GAAUmD,OAAOgE,KAAKnH,EAAOqD,mBAAqB,MAC5FkE,QAAO,CAACC,EAAGC,IAAMD,EAAElE,QAAOjB,GAAKoF,EAAE5C,SAASxC,MAAK,IAC/CmB,KAAID,GAAOG,OAAOH,I,CAIf,6BAAAoD,CAA8B7F,GACpC,GAAIA,EAAOb,OAASjC,EAAY+I,mBAAqBjG,EAAO4G,SAAU,CACpE,M,CAEF,MAAMC,EAAkBrJ,KAAKuF,KAAK4B,cAAc,oBAAoB3E,EAAOR,QAC3E,MAAMsH,EAAaD,EAAgBvD,iBAAiB,iBAAiBG,OACrEoD,EAAgBvD,iBAAiB,SAASlB,SAAQ2E,GAASA,EAAMC,gBAAgB,YAAaF,I,CAGxF,SAAAG,CAAUvH,EAAOP,GACvB,OAAOO,EACHA,EAAMwH,MAAM,KAAK/H,IAAS,MAAQ,EAAI,GACtC,E,CAGE,iBAAAgI,CAAkBnH,GACxB,GAAIxC,KAAK,GAAGwC,EAAOb,cAAe,CAChC,OAAO3B,KAAK,GAAGwC,EAAOb,cAAca,E,CAGtC,GAAIA,EAAOb,OAASjC,EAAYkK,aAAc,CAC5C,OAAO5J,KAAK6J,kBAAkBrH,E,CAGhC,GAAIA,EAAOb,OAASjC,EAAY+I,iBAAkB,CAChD,OAAOzI,KAAK8J,gBAAgBtH,E,CAG9B,GAAIA,EAAOb,OAASjC,EAAYqK,cAAe,CAC7C,OAAO/J,KAAKgK,aAAaxH,E,CAG3B,GAAIA,EAAOb,OAASjC,EAAYuK,mBAAoB,CAClD,OAAOjK,KAAKkK,wBAAwB1H,E,CAEtC,GAAIA,EAAOb,OAASjC,EAAYyK,QAAS,CACvC,OAAOnK,KAAKoK,cAAc5H,E,CAG5B,GAAIA,EAAOb,OAASjC,EAAY2K,SAAW3J,MAAM4C,IAAIC,QAAQ,QAAS,CACpE,OAAOP,EAAA,uBAAqBsH,eAAiBvG,GAAM/D,KAAK4G,eAAe7C,EAAGvB,GAASA,OAAQA,EAAelB,UAAWkB,EAAON,O,CAG9HxB,MAAMsD,IAAI,8BAA8BxB,EAAOb,WAC/C,MAAO,E,CAGC,kBAAA4I,CAAmB/H,GAC3B,OAAOA,EAAOgI,qBACV,CAAE,iBAAkB,WAAWhI,EAAOgI,qBAAqBhI,WAAWA,EAAOgI,qBAAqBC,YAAYjI,EAAOgI,qBAAqBtI,SAC1I,E,CAGE,2BAAAwI,CAA4BhJ,GAClC,MAAMiJ,EAAoB3K,KAAKiE,YAAY0C,MAAK,EAAGhF,UAAWA,IAAS,uBAEvE,IAAKgJ,EAAmB,MAAM,IAAIC,MAAM,mDAExC,MAAMC,EAAiBhG,OAAOgE,KAAKnH,EAAOqD,mBAAmBC,QAAOS,GAAO/D,EAAOqD,kBAAkBU,KAAS,QAE7GzF,KAAKmB,2BAA6BwJ,EAAkBhG,QAAQK,QAAQ8F,IAE1DjG,OAAOgE,KAAKiC,EAAG/F,mBAAmBC,QAAO+F,GAAWF,EAAetE,SAASwE,KAAU9E,Q,CAK1F,yBAAA0B,CAA0BlG,EAAcC,GAC9CD,EAAMuJ,2BAENhL,KAAKqB,uBAAyB,KAE9B,MAAM4J,EAAmBjL,KAAKuF,KAAK4B,cAAc,kCAEjD,GAAI8D,EAAkBA,EAAiBC,QAAU,MAEjD,MAAMP,EAAoB3K,KAAKiE,YAAY0C,MAAK,EAAGhF,UAAWA,IAAS,uBAEvE,IAAKgJ,EAAmB,MAAM,IAAIC,MAAM,mDAExC5K,KAAK0K,4BAA4BhJ,E,CAG3B,6BAAAyJ,CAA8B3I,GACpC,MAAM4I,EAAiB5I,EAAOmC,QAAQgC,MAAKjF,GAAUA,EAAOoH,cAC5D,MAAMuC,EAAgB7I,EAAOmC,QAAQgC,MAAKjF,KAAYA,EAAO4J,cAAe9I,EAAOmC,QAAQ,GAC3F,IAAK,CAAC,qBAAsB,WAAW4B,SAAS/D,EAAOb,MAAO,OAE9D,OAAOyJ,GAAkBC,C,CAM3B,uBAAME,GACJ,GAAG7K,MAAM4C,IAAIC,QAAQ,QAAQ,CAC3BvD,KAAKkB,iBAAiB,MACtBlB,KAAKwL,qB,CAGT,GAAIxL,KAAKuB,OAAQ,CACb,IACEvB,KAAKyL,oBAAsBzL,KAAKuB,SAAW,SAAWsC,KAAKC,MAAM9D,KAAKuB,QAAUvB,KAAKuB,M,CACrF,MAAOmK,GACPC,QAAQD,MAAM,uCAAwCA,E,EAI1D,MAAME,EAA4B5L,KAAKiE,YAAYe,QAAO,EAAGrD,UAAW,CAAC,UAAW,sBAAsB4E,SAAS5E,KAAOsE,OAAS,GAAKvF,MAAM4C,IAAIC,QAAQ,QAE1J,GAAIqI,EAA2B,CAC7B,MAAMxB,EAAgBpK,KAAKiE,YAAY0C,MAAKnE,GAAUA,EAAOb,OAAS,YAEtE,MAAMkK,EAAmBzB,GAAiBpK,KAAKmL,8BAA8Bf,GAE7E,GAAIyB,EAAkB,CACpB7L,KAAK0K,4BAA4BmB,E,EAGrC7L,KAAKQ,eAAiBE,MAAMC,KAAKC,IAAI,qCAC/BF,MAAMoL,UACZC,SAASC,iBAAiB,QAAShM,KAAKiM,YAAYC,KAAKlM,OACzD,MAAMmM,GAAgBzL,MAAM0L,QAAQxL,IAAI,YAAcZ,KAAKiE,YAAYkC,MAAK3D,GAAU,CAAC,OAAQ,SAAS+D,SAAS/D,EAAOb,QACxH,OAAOwK,EAAczL,MAAMwD,IAAImI,KAAKC,iBAAiB,MAAO,yBAA2B,I,CAYjF,WAAAL,CAAYxK,G,MAChB,MAAMK,EAASL,EAAMK,OACrB,IACKyK,MAAMhL,OAAOX,IAAI,sCACd2L,MAAM3K,QAAQ4K,iBACb1K,aAAkB2K,kBAAoB3K,aAAkB4K,uBACzD5K,EAAOiF,UAAUC,SAAS,oBAC1BlF,EAAO6K,KAAKjH,WAAW,YAAa,CACxC,M,CAGJjE,EAAMU,iBAGN,MAAMyK,IAAOlI,EAAAjD,EAAMoL,iBAAe,MAAAnI,SAAA,SAAAA,EAAAoI,QAAQ,UAAW,GAGrD,MAAMC,EAAQjL,EAAOkL,eACrB,MAAMC,EAAMnL,EAAOoL,aAEnB,MAAMC,EAAWrL,EAAOI,MAAMkL,MAAM,EAAGL,GAASH,EAAO9K,EAAOI,MAAMkL,MAAMH,GAE1EnL,EAAOI,MAAQiL,EAGfrL,EAAOuL,kBAAkBN,EAAQH,EAAK3G,OAAQ8G,EAAQH,EAAK3G,O,CAGvD,uBAAAqH,CAAwB9K,GAC9B,OAAQxC,KAAKkB,kBAAoBsB,EAAOb,OAAOjC,EAAYuK,qBAAuBvJ,MAAM4C,IAAIC,QAAQ,O,CAGtG,MAAAgK,G,MACE,KAAI7I,EAAA1E,KAAKiE,eAAW,MAAAS,SAAA,SAAAA,EAAEuB,UAAW,EAAG,CAClC,M,CAGF,OACEjD,EAACwK,EAAK,CAAAvK,MAAM,6BAEVD,EACG,gCAAAhD,KAAKiE,YAAYiB,KAAK1C,GACrBQ,EAAK,MAAA6B,OAAA+D,OAAA,CAAAnD,IAAKjD,EAAOR,GAAIiB,MAAO,qCAAqCT,EAAOgI,sBAAwBxK,KAAKsN,wBAAwB9K,GAAU,UAAY,KACjI,iBAAAA,EAAOR,IACnBhC,KAAKuK,mBAAmB/H,IAC3BA,EAAOmK,OAAS,WACf3M,KAAKyN,iBACHzK,EAAK,OAAAC,MAAO,CAAE,2BAA4B,KAAM,mCAAoCT,EAAOb,OAASjC,EAAY2K,SAAW3J,MAAM4C,IAAIC,QAAQ,SAA6B,mBAAAf,EAAOb,KAAI,uBAC/J,GAAGa,EAAO4G,YAChCpG,EAAO,SAAA0K,QAAS,WAAWlL,EAAOR,MAAOiB,MAAO,kCAAkCjD,KAAKuC,UAAUC,GAAU,wCAA0C,MACnJQ,EAAA,SACGR,EAAOmK,KACPnK,EAAO4G,UAAYpG,EAAgB,mBAAM,KAC5CA,EAAA,aAAQR,EAAOmL,cAEjB3K,EAAK,OAAAC,MAAO,oCAAoCjD,KAAKuC,UAAUC,IAAYA,EAAOb,OAASjC,EAAY2K,SAAW3J,MAAM4C,IAAIC,QAAQ,QAAW,8CAAgD,MAC5LvD,KAAK2J,kBAAkBnH,S,CAWlC,iBAAAoL,CAAkBC,GACxB,OAAO7N,KAAK8N,UAAY,GAAGD,KAAgB7N,KAAK8N,YAAcD,C,CAExD,mBAAArC,GACNxL,KAAKiB,gBAAkBjB,KAAKiE,YAAYgF,QAAO,CAAC8E,EAAKvF,KACnD,MAAMwF,EAAkBxF,EAAI7D,QAAQK,QAAOtD,GAAUA,EAAOoH,cAC5D,MAAMmF,EAAgBD,EAAgB9I,KAAIxD,GAAMmD,OAAA+D,OAAA/D,OAAA+D,OAAA,GAC3ClH,GAAM,CACTgF,UAAW8B,EAAIxG,OAEjB,OAAO+L,EAAIG,OAAOD,EAAc,GAC/B,G,CAGG,iCAAAE,GACN,MAAMC,EAAWC,GACf,CAAC,SAAU,SAASzJ,SAAQb,GAAKsK,EAAEC,cAAc,IAAIC,OAAOC,MAAMzK,EAAG,CAAE0K,QAAS,UAClF,MAAMC,EAAO1O,KAAKuF,KAAKuB,QAAQ,QAC/B,GAAI4H,EAAM,CACRN,EAAQM,E,KACH,CAEL,MAAMC,EAAW,IAAIC,kBAAiB,KACpC,MAAMF,EAAO1O,KAAKuF,KAAKuB,QAAQ,QAC/B,GAAI4H,EAAM,CACRN,EAAQM,GACRC,EAASE,Y,KAGbF,EAASG,QAAQ/C,SAASgD,KAAM,CAAEC,UAAW,KAAMC,QAAS,M,EAIhE,gBAAAC,G,QACE,GAAIxO,MAAM4C,IAAIC,QAAQ,kBAAmB,CACvCvD,KAAKmO,mC,CAEP,KAAIzJ,EAAA1E,KAAKiE,eAAW,MAAAS,SAAA,SAAAA,EAAEuB,UAAW,IAAMjG,KAAKiE,YAAYkC,MAAK3D,GAAUA,EAAOb,OAASjC,EAAY+C,WAAW,CAC5G,M,CAEF,MAAM0M,GAAyB1K,EAAAzE,KAAKiE,YAAY0C,MAAKnE,GAAUA,EAAOb,OAASjC,EAAY+C,cAAW,MAAAgC,SAAA,SAAAA,EAAAE,QAAQgC,MAAKjF,GAAUA,EAAOoH,cACpI,IAAKqG,EAAwB,CAC3B,M,CAEFjH,YAAW,KACTxH,MAAMe,MAAMM,KAAK,oCAAqC,CACpDC,GAAIhC,KAAKsB,UACTW,MAAOkN,EAAuBC,kBAC9B,GACD,I,CAGG,cAAAC,CAAe7M,EAAgB2B,G,QACrC,OAAOnB,EAAK,OAAAC,MAAM,wCAEfyB,EAAAlC,EAAOE,YAAQ,MAAAgC,SAAA,SAAAA,EAAE/B,YAAa,CAC7BH,EAAOE,SACLM,EAAK,OAAAyC,IAAKjD,EAAOR,GAAIiB,MAAM,uCACzBD,EAAA,sBAAoBN,SAAUF,EAAOE,YAGrC,GACJF,EAAOmC,QAAQsB,OACb,CAACjD,EAAA,MAAIyC,IAAKjD,EAAOR,IAAKhC,KAAKe,cAC3BiC,EAAA,OAAKyC,IAAKjD,EAAOR,GAAIiB,MAAM,sCACxBT,EAAOmC,QAAQO,KAAI,CAACxD,EAAQsE,IAC3BhD,EAAA,OAAKyC,IAAKjD,EAAOR,GAAIiB,MAAM,2CACzBD,EAAO,SAAAhB,GAAIhC,KAAK4N,kBAAkB,mBAAmB5H,KAAMrE,KAAK,QAAQgL,KAAK,kBAAkBzB,QAASxJ,EAAOoH,YAAa5G,MAAOR,EAAO0N,iBAAkBE,SAAUvL,GAAK/D,KAAKwB,sBAAsBuC,EAAGrC,EAAQ,YACjNsB,EAAO,SAAA0K,QAAS1N,KAAK4N,kBAAkB,mBAAmB5H,MACxDhD,EAAA,QAAMG,UAAWzC,MAAM0C,MAAM1B,EAAOiL,cAIzClI,EAAAjC,EAAOE,YAAU,MAAA+B,SAAA,SAAAA,EAAA8K,uBAChBvM,EAAK,OAAAC,MAAM,2CACTD,EAAA,SAAOhB,GAAIhC,KAAK4N,kBAAkB,0BAA2BjM,KAAK,QAAQgL,KAAK,kBAAkBzK,MAAM,SAASoN,SAAUvL,GAAK/D,KAAKwB,sBAAsBuC,EAAG,SAAU,YACvKf,EAAA,SAAO0K,QAAS1N,KAAK4N,kBAAkB,2BACrC5K,EAAA,gBAAQhD,KAAKa,qBAA6B,OAG5C,KAEI,GAEZmC,EAAA,OAAKyC,IAAKjD,EAAOR,GAAIiB,MAAO,CAAE,yCAA0C,KAAMuM,OAAUhN,EAAOmC,QAAQsB,QAAWzD,EAAOmC,QAAQsB,QAAUjG,KAAKgB,mBAC9IgC,EAAA,SACErB,KAAK,OACLK,GAAG,kBACH2K,KAAK,kBACL1J,MAAM,iBACNwM,IAAKC,IAAQ1P,KAAKqC,cAAgBqN,CAAsB,EACxDxN,MACEM,EAAOmC,QAAQsB,QACVzD,EAAOmC,QAAQwB,MAAKzE,GAAUA,EAAOoH,cACtCtG,EAAOmC,QAAQgC,MAAKjF,GAAUA,EAAOoH,cAAasG,iBAClD5M,EAAON,MAEbyL,YAAanL,EAAOmL,YACpBgC,QAAS5L,GAAK/D,KAAKwB,sBAAsBuC,EAAG,SAAU,SACtD6L,OAAQ7L,GAAK/D,KAAKyH,eAAe1D,EAAGvB,GACpCqN,UAAY9L,GAAM/D,KAAK4G,eAAe7C,EAAGvB,KAG3CQ,EAAM,QAAAC,MAAM,8CACTvC,MAAMa,OAAOuO,SAASpP,MAAMa,OAAOX,IAAI,uBAAuBmP,UAInE/P,KAAK4C,yBAAyBJ,G,CAK5B,YAAAwN,CAAaxN,EAAgByN,EAA4C,M,MAC/E,OAAOjN,EAAA,oBAAA6B,OAAA+D,OAAA,GACAqH,GAAa,GACL,uBACb/N,MAAOM,EAAON,MAAK,iBACH,KAChByK,KAAM,WAAWnK,EAAOR,MACxBoH,UAAW5G,EAAOgI,sBAAwBhI,EAAO4G,SACjD8G,OAAO,QACPC,QAAUpM,GAAM/D,KAAKyH,eAAe1D,EAAGvB,GACvCc,IAAK5C,MAAM2L,KAAKnI,IAAIkM,yBACT,aAAEC,aAAcrQ,KAAKsB,UAAWgP,WAAYtQ,KAAKsB,WAC5DgJ,eAAiBvG,GAAM/D,KAAK4G,eAAe7C,EAAGvB,GAC9CS,MAAO,CAAE,gCAAiC,KAAMmG,SAAU5G,EAAO4G,YAEjEpG,EAAK,OAAAC,MAAM,0CACTD,EAAA,QAAMC,MAAM,8CACVE,YAAWuB,EAACuL,EAAiCM,UAAM,MAAA7L,SAAA,SAAAA,EAAEgF,MAAM,KAAKpD,OAAM3E,GAAQA,EAAK4E,SAAS,YACxFiK,EACAC,IAENzN,EAAA,KAAGC,MAAM,+CAA+CvC,MAAMC,KAAKC,IAAI,kCACvEoC,EAAA,QAAMC,MAAM,0BAA0BvC,MAAMC,KAAKC,IAAI,4B,CAMnD,WAAA8P,CAAYlO,GAClB,OAAOxC,KAAKgQ,aAAaxN,EAAQ,CAAE+N,OAAQ,4C,CAIrC,UAAAI,CAAWnO,GACjB,MAAMoO,EAAQpO,EAAOmC,QAAQO,KAAIxD,GAAU1B,KAAKC,UAAUyB,EAAOiL,QAAO3H,OAAO6L,SAC/E,OAAOD,IAAK,MAALA,SAAA,SAAAA,EAAO3K,QACVjG,KAAKgQ,aAAaxN,EAAQ,CAAE+N,OAAQK,EAAME,KAAK,OAC/C,0B,CAKE,YAAAC,CAAavO,GACnB,OAAOQ,EAAA,SACLrB,KAAK,OACLO,MAAOM,EAAON,MACde,MAAM,iBACNmG,UAAW5G,EAAOgI,sBAAwBhI,EAAO4G,SACjDuD,KAAM,WAAWnK,EAAOR,MACxB2L,YAAanL,EAAOmL,YACpBiC,OAAQ7L,GAAK/D,KAAKyH,eAAe1D,EAAGvB,GACpCqN,UAAY9L,GAAM/D,KAAK4G,eAAe7C,EAAGvB,GACzCmN,QAAS5L,GAAKrD,MAAMkB,QAAQC,gBAAgBkC,EAAEjC,S,CAI1C,cAAA2L,GACN,OAAOzK,EAAK,OAAAC,MAAM,8B,CAIZ,UAAA+N,CAAWxO,GACjB,OAAOQ,EAAA,OAAKC,MAAM,0BAChBD,EAAA,SACErB,KAAK,OACLO,MAAOM,EAAON,MACd+O,UAAWzO,IAAM,MAANA,SAAM,SAANA,EAAQyD,OACnBhD,MAAM,iBACNmG,UAAW5G,EAAOgI,sBAAwBhI,EAAO4G,SACjDuD,KAAM,WAAWnK,EAAOR,MACxB2L,YAAanL,EAAOmL,YACpBkC,UAAY9L,GAAM/D,KAAK4G,eAAe7C,EAAGvB,GACzC8M,SAAUvL,GAAK/D,KAAKyH,eAAe1D,EAAGvB,K,CAKpC,cAAA0O,CAAe1O,GAErB,OAAOQ,EAAA,OAAKC,MAAM,8BAChBD,EAAK,OAAAC,MAAM,QACTD,EAAA,YACEmO,KAAM,EACNjP,MAAOM,EAAON,MACd+O,UAAWzO,IAAA,MAAAA,SAAM,SAANA,EAAQyD,OACnBhD,MAAM,iBACNmG,UAAW5G,EAAOgI,sBAAwBhI,EAAO4G,SACjDpH,GAAI,WAAWQ,EAAOR,MACtB2K,KAAM,WAAWnK,EAAOR,MACxB2L,YAAanL,EAAOmL,YACpBkC,UAAY9L,GAAM/D,KAAK4G,eAAe7C,EAAGvB,GACzC8M,SAAWvL,GAAM/D,KAAKyH,eAAe1D,EAAGvB,M,CAMxC,SAAA4O,CAAU5O,GAChB,OAAOQ,EAAA,aACLqO,KAAM,GACNrJ,IAAKhI,KAAKyJ,UAAUjH,EAAON,MAAO,OAClC+F,IAAKjI,KAAKyJ,UAAUjH,EAAON,MAAO,OAClCyK,KAAM,WAAWnK,EAAOR,MACxBsP,WAAY,KACZlI,SAAU5G,EAAO4G,SACjBkB,eAAiBvG,GAAM/D,KAAK4G,eAAe7C,EAAGvB,GAC9C+O,WAAYxN,GAAK/D,KAAKyH,eAAe1D,EAAGvB,I,CAGpC,iBAAAqH,CAAkBrH,GACxB,OAAOQ,EAAA,sBACLwO,YAAazN,GAAK/D,KAAKyH,eAAe1D,EAAGvB,GACzCmK,KAAM,WAAWnK,EAAOR,MACxBoH,UAAW5G,EAAOgI,sBAAwBhI,EAAO4G,SACjDkB,eAAiBvG,GAAM/D,KAAK4G,eAAe7C,EAAGvB,GAC9CiP,MAAOjP,EAAON,O,CAOV,UAAAwP,CAAWlP,GACjB,OAAOQ,EAAA,yBACL2O,WAAY,KACZC,WAAY,KACZC,WAAW,QACX3P,MAAOM,EAAON,MACdyL,YAAanL,EAAOmK,KACpBvD,UAAW5G,EAAOgI,sBAAwBhI,EAAO4G,SACjDuD,KAAM,WAAWnK,EAAOR,MACxBiB,MAAM,iCACNqH,eAAiBvG,GAAM/D,KAAK4G,eAAe7C,EAAGvB,GAC9CsP,SAAU/N,GAAK/D,KAAKyH,eAAe1D,EAAGvB,I,CAIlC,UAAAuP,CAAWvP,GAEjB,OAAOQ,EAAA,OAAKC,MAAM,kCAChBD,EAAA,yBACEd,MAAOM,EAAON,MACdyL,YAAanL,EAAOmK,KACpBvD,UAAW5G,EAAOgI,sBAAwBhI,EAAO4G,SACjD4I,QAAS,IAAIC,KACbtF,KAAM,WAAWnK,EAAOR,MACxBsI,eAAiBvG,GAAM/D,KAAK4G,eAAe7C,EAAGvB,GAC9CsP,SAAU/N,GAAK/D,KAAKyH,eAAe1D,EAAGvB,K,CAKpC,cAAA0P,CAAe1P,GAErB,OAAOQ,EAAA,OAAKC,MAAM,sCAChBD,EAAA,yBACE4O,WAAY,KACZ1P,MAAOM,EAAON,MACd2P,WAAW,cACXlE,YAAanL,EAAOmK,KACpBvD,UAAW5G,EAAOgI,sBAAwBhI,EAAO4G,SACjDuD,KAAM,WAAWnK,EAAOR,MACxBmQ,QAAS3P,EAAO4P,aAChBJ,QAASxP,EAAO6P,eAChB/H,eAAiBvG,GAAM/D,KAAK4G,eAAe7C,EAAGvB,GAC9CsP,SAAU/N,GAAK/D,KAAKyH,eAAe1D,EAAGvB,K,CAOlC,mBAAA8P,CAAoB5Q,EAAgB6Q,EAAa,KAAMC,G,MAC/D,IAAIC,EACJ,GAAID,GAAcA,IAAe9S,EAAYgT,MAAO,CAClDD,EAAa/Q,EAAOiL,MACd4F,GAAcvS,KAAK2S,kBAAkBjR,KAAYhB,MAAM4C,IAAIC,QAAQ,UAAavD,KAAK4S,aAAe,cAAc5S,KAAKQ,sBAAwB,KAChJkB,EAAO0N,iBAAmB,SAAS1O,MAAM0C,MAAM1B,EAAO0N,iBAAkB,eAAiB,G,CAGhG,IAAIqD,EAAW,CACXA,EAAa/Q,EAAOiL,MAClB4F,GAAcvS,KAAK2S,kBAAkBjR,KAAYhB,MAAM4C,IAAIC,QAAQ,UAAavD,KAAK4S,aAAe,MAAM5S,KAAKQ,iBAAmB,KACnIkB,EAAO0N,iBAAmB,KAAK1O,MAAM0C,MAAM1B,EAAO0N,iBAAkB,UAAY,G,CAKrF,OAAOqD,EAAW9M,QAAQ,4BAA0BjB,EAAAhE,MAAMa,OAAOuO,cAAU,MAAApL,SAAA,SAAAA,EAAEqL,SAAU,M,CAI/E,iBAAA4C,CAAkBjR,G,MAC1B,GAAIA,EAAO0E,SAAW1E,EAAOqD,sBAAsBL,EAAA1E,KAAKqG,gBAAY,MAAA3B,SAAA,SAAAA,EAAEuB,QAAQ,CAC5E,OAAOvE,EAAO0E,M,CAGhB,MAAMyM,EAAmB7S,KAAKiB,gBAAgB+D,QAAOxC,GAAUA,EAAOR,KAAON,EAAOM,KAAIiE,OAExF,GAAI4M,GAAoB7S,KAAKiB,gBAAgBgF,SAAW,EAAG,CACzD,OAAO,K,CAIT,GAAI4M,EAAkB,CAEpB,MAAMC,EAAoB9S,KAAKqG,aAAarB,QAAOC,GAAOjF,KAAKoB,QAAQmF,SAAStB,KAChF,OAAOJ,OAAOgE,KAAKnH,EAAOqD,mBAAmBoB,MAAKlB,GAAO6N,EAAkBvM,SAASnB,OAAOH,K,CAG7F,OAAOjF,KAAKiB,gBAAgBkF,MAAK3D,GAAUA,EAAO4D,QAAU5D,EAAOkE,YAAchF,EAAOgF,W,CAalF,WAAAqM,CACNpR,EACAD,EACAc,EACAwQ,EACArG,EACAsG,GAEA,MAAMjR,EAAKhC,KAAK4N,kBAAkB,GAAGjM,KAAQa,EAAOR,MAAMN,EAAOM,MACjE,MAAMkR,EAAalT,KAAK2S,kBAAkBjR,GAC1C,OACEsB,EAAO,SAAAC,MAAO,CACZ,6BAA8BiQ,IAE9BlQ,EAAA,SACEhB,GAAIA,EACJL,KAAMA,EACNgL,KAAMA,EACNzK,MAAOR,EAAOM,GACdmR,SAAUD,EACV9J,SAAU4J,EACV9H,QAASxJ,EAAOoH,YAChB+G,UAAY9L,GAAM/D,KAAK4G,eAAe7C,EAAGvB,GACzC8M,SAAWvL,GAAM/D,KAAKyH,eAAe1D,EAAGvB,KAE1CQ,EAAK,OAAAC,MAAO,CAAC,mCAAoCgQ,EAAa,6BAA8BC,IACzFlT,KAAKsS,oBAAoB5Q,I,CAa1B,mBAAA0R,CACNzR,EACAa,EACAwQ,EACAC,EAAuB,OAEvB,MAAMtG,EAAOhL,IAAS,QAAU,WAAWa,EAAOR,MAAQ,WAAWQ,EAAOR,QAC5E,OAAOQ,IAAM,MAANA,SAAM,SAANA,EAAQmC,QAAQO,KAAKxD,GAC1B1B,KAAK+S,YAAYpR,EAAMD,EAAQc,EAAQwQ,EAAYrG,EAAMsG,I,CASrD,YAAAI,CAAa7Q,GACnB,OACEQ,EAAA,WACEA,EACE,UAAA2J,KAAM,WAAWnK,EAAOR,MACxBoH,UAAW5G,EAAOgI,sBAAwBhI,EAAO4G,SACjDnG,MAAM,iBACN4M,UAAY9L,GAAM/D,KAAK4G,eAAe7C,EAAGvB,GACzC8M,SAAWvL,GAAM/D,KAAKyH,eAAe1D,EAAGvB,IAExCQ,EAAQ,UAAAd,MAAM,IAAIM,EAAOmL,aACxBnL,IAAM,MAANA,SAAM,SAANA,EAAQmC,QAAQO,KAAKxD,GACpBsB,EAAA,UACEyC,IAAK/D,EAAOM,GACZE,MAAOR,EAAOM,GACdmR,SAAUnT,KAAKqD,aAAerD,KAAK2S,kBAAkBjR,GACrDqH,SAAUrH,EAAOoH,aAEhB9I,KAAKsS,oBAAoB5Q,O,CAe9B,iBAAA4R,CACN3R,EACAa,EACAwQ,GAEA,OACEhQ,EAAA,OAAKC,MAAM,+BACRjD,KAAKoT,oBAAoBzR,EAAMa,EAAQwQ,EAAY,M,CAUlD,YAAAhJ,CAAaxH,G,QACnB,MAAMyQ,IAAcxO,GAAAC,EAAA1E,KAAKyL,gBAAY,MAAA/G,SAAA,SAAAA,EAAG,oBAAgB,MAAAD,SAAA,SAAAA,EAAE9C,QAAS,SACnE,MAAMqR,GAAcxQ,EAAOgI,sBAAwBhI,EAAO4G,SAE1D,OAAO6J,EACHjT,KAAKsT,kBAAkB,QAAS9Q,EAAQwQ,GACxChT,KAAKqT,aAAa7Q,E,CAQhB,eAAAsH,CAAgBtH,G,QACtB,MAAMyQ,IAAcxO,GAAAC,EAAA1E,KAAKyL,gBAAY,MAAA/G,SAAA,SAAAA,EAAG,sBAAkB,MAAAD,SAAA,SAAAA,EAAE9C,QAAS,SACrE,MAAMqR,EACJxQ,EAAO4G,WACN5G,EAAOmC,QAAQwB,MAAMzE,GAAWA,EAAOoH,gBACvCtG,EAAOgI,qBAEV,OAAOyI,EACHjT,KAAKsT,kBAAkB,WAAY9Q,EAAQwQ,GAE3ChQ,EACE,OAAAC,MAAO,CACL,6CAA8C,KAC9CmG,SAAU5G,EAAO4G,WAGlBpJ,KAAKoT,oBAAoB,WAAY5Q,EAAQwQ,G,CAM9C,WAAAO,CAAY/Q,GAClB,OACEQ,EAAA,YACEC,MAAM,oCAELT,IAAM,MAANA,SAAM,SAANA,EAAQmC,QAAQO,KAAKxD,GACpBsB,EACE,OAAAC,MAAM,gCACNwC,IAAK/D,EAAOM,IAEZgB,EACE,SAAArB,KAAK,QACLO,MAAOR,EAAOM,GACdoH,UAAW5G,EAAOgI,sBAAwBhI,EAAO4G,SACjD8B,QAASxJ,EAAOoH,YAChB6D,KAAM,WAAWnK,EAAOR,MACxBmR,SAAUnT,KAAKqD,aAAerD,KAAK2S,kBAAkBjR,GACrDM,GAAIhC,KAAK4N,kBAAkB,SAAS5N,KAAKsB,aAAakB,EAAOR,MAAMN,EAAOM,MAC1E6N,UAAY9L,GAAM/D,KAAK4G,eAAe7C,EAAGvB,GACzC8M,SAAWvL,GAAM/D,KAAKyH,eAAe1D,EAAGvB,KAE1CQ,EAAA,SAAO0K,QAAS1N,KAAK4N,kBAAkB,SAAS5N,KAAKsB,aAAakB,EAAOR,MAAMN,EAAOM,OACpFgB,EAAM,QAAAwQ,MAAO,CAAEC,gBAAiB/R,EAAO+P,SACvCzO,EAAK,OAAAG,UAAWnD,KAAKsS,oBAAoB5Q,EAAQ,KAAMc,EAAOb,Y,CASlE,eAAA+R,CAAgBlR,GACtB,OAAOQ,EAAK,OAAAC,MAAM,wCACfT,EAAOmC,QAAQO,KAAKxD,GACZsB,EAAK,OAAAyC,IAAK/D,EAAOM,IACtBgB,EAAO,SAAArB,KAAK,QACVO,MAAOR,EAAOM,GAAE,cACHN,EAAOM,GACpBoH,UAAW5G,EAAOgI,sBAAwBhI,EAAO4G,SACjD8B,QAASxJ,EAAOoH,YAChB6D,KAAM,WAAWnK,EAAOR,MACX,cAAAN,EAAOiS,aACpBR,SAAUnT,KAAKqD,aAAerD,KAAK2S,kBAAkBjR,GACrDM,GAAIhC,KAAK4N,kBAAkB,UAAU5N,KAAKsB,aAAakB,EAAOR,MAAMN,EAAOM,MAC3E6N,UAAY9L,GAAM/D,KAAK4G,eAAe7C,EAAGvB,GACzC8M,SAAWvL,GAAM/D,KAAKyH,eAAe1D,EAAGvB,KAC1CQ,EAAO,SAAA0K,QAAS1N,KAAK4N,kBAAkB,UAAU5N,KAAKsB,aAAakB,EAAOR,MAAMN,EAAOM,MAAK,cAC7EN,EAAOiS,aACpB1Q,MAAM,eACND,EAAe,kBAAAtB,EAAOkS,MAAOC,IAAKnS,EAAOkS,MAAOE,MAAOpS,EAAOiL,KAAMoH,IAAKrS,EAAOiL,OAChF3J,EAAA,QAAMG,UAAW6Q,EAAiB/Q,MAAM,sCACvCjD,KAAK2S,kBAAkBjR,GACtB,CACEsB,EAAA,SAAOyC,IAAK/D,EAAOM,GAAIiB,MAAM,4CAA4CjD,KAAKQ,gBAC9ER,KAAKqD,YAAcL,EAAA,OAAKyC,IAAK/D,EAAOM,GAAIiB,MAAM,+CAAkD,IAEhG,IAEND,EAAA,SAAIhD,KAAKsS,oBAAoB5Q,EAAQ,OAAY,Q,CAOjD,uBAAAwI,CAAwB1H,GAE9B,OAAOQ,EAAA,OAAKC,MAAM,0CACfjD,KAAKmB,2BAA2B8E,OAAS,EAAIjG,KAAKmB,2BAA2B+D,KAAKxD,I,UACjF,MAAMM,EAAKiS,OAAOvS,EAAOM,IACzB,OAAOgB,EAAA,SAAO0K,QAAS1N,KAAK4N,kBAAkB5L,EAAGkS,YAAazO,IAAKzD,EAAIiB,MAAM,yCAC3ED,EAAO,QAAA6B,OAAA+D,OAAA,CAAAjH,KAAK,QAAO,uBAAiBsB,MAAM,sDAAsDf,MAAOR,EAAOM,GAC5G2K,KAAM,WAAWnK,EAAOR,MACxBA,GAAIhC,KAAK4N,kBAAkB5L,EAAGkS,YAC9B9K,UAAW5G,EAAOgI,sBAAwBhI,EAAO4G,SACjDyG,UAAY9L,GAAM/D,KAAK4G,eAAe7C,EAAGvB,KACnCxC,KAAKqB,uBAAyB,CAAC8S,iBAAgBzP,EAAA1E,KAAKmL,8BAA8B3I,MAAS,MAAAkC,SAAA,SAAAA,EAAA1C,MAAON,EAAOM,IAAI,KAGrHgB,EAAA,YAAOtB,EAAOiL,KAAO,KAAAyH,GAAA3P,EAAA/D,MAAMa,UAAM,MAAAkD,SAAA,SAAAA,EAAEqL,cAAU,MAAAsE,SAAA,S,EAAErE,QACzC,IAEN/M,EAAK,OAAAC,MAAM,gD,CAIX,aAAAmH,CAAc5H,GACpB,OAAOQ,EAAK,OAAAC,MAAM,0CACfT,EAAOmC,QAAQO,KAAKxD,I,MAEpB,OAAOsB,EAAO,SAAA0K,QAAS1N,KAAK4N,kBAAkBlM,EAAOM,GAAGkS,YAAazO,IAAK/D,EAAOM,GAAIiB,MAAO,CAAC,wCAAwC,KAAK,kDAAkDvB,EAAO0E,SAChMpD,EAAA,QAAA6B,OAAA+D,OAAA,CAAO5G,GAAIhC,KAAK4N,kBAAkBlM,EAAOM,GAAGkS,YAAavS,KAAK,QAAQsB,MAAM,sDAAsDf,MAAOR,EAAOM,GAC9I2K,KAAM,WAAWnK,EAAOR,MACxBmR,SAAUzR,EAAO0E,OACjBgD,UAAW5G,EAAOgI,sBAAwBhI,EAAO4G,SACjDyG,UAAY9L,GAAM/D,KAAK4G,eAAe7C,EAAGvB,GACzC8M,SAAUvL,GAAK/D,KAAKyH,eAAe1D,EAAGvB,GACtC6R,QAAS,KAAMrU,KAAKkB,iBAAmB,KAAK,GACvCR,MAAM4C,IAAIC,QAAQ,QAAU,CAAC4Q,iBAAezP,EAAA1E,KAAKmL,8BAA8B3I,MAAS,MAAAkC,SAAA,SAAAA,EAAA1C,MAAON,EAAOM,IAAI,KAG5GgB,EAAA,OAAKsR,QAAQ,OAAOP,IAAKrS,EAAO6S,KAAMrE,OAAQ,GAAIsE,MAAO,GAAIvR,MAAM,iCAAiC4Q,IAAK,mEAAmEI,OAAOvS,EAAO6S,MAAME,4BACrMzR,EAAA,YAAQtB,EAAOiL,MACT,I","ignoreList":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* Crafted with ❤ by Salla
|
|
3
3
|
*/
|
|
4
|
-
import{r as i,h as e}from"./p-
|
|
5
|
-
//# sourceMappingURL=p-
|
|
4
|
+
import{r as i,h as e}from"./p-D4D34Ujk.js";const a="";const t=class{constructor(e){i(this,e)}render(){return e("a",{key:"f4818ac9b7dc2573dd1ac8aa31aabc82454ea439",href:this.notification.url,class:{"s-notifications-item":true,"s-notifications-item-shadow":true,"s-notifications-item-read":!this.notification.is_new}},e("span",{key:"3766a4eb835408bf293054be3e04a561e1510728",class:"s-notifications-item-icon"},e("i",{key:"e9b1e4a18f22e765053b7d62f83a4af6e426bd47",class:{"s-notifications-item-icon sicon-bell-ring":true,"s-notifications-item-icon-new":this.notification.is_new}})),e("div",{key:"2005bcf68b61bb0aa5606480f703e4ee4cfbd415",class:"s-notifications-item-content"},e("div",{key:"a60fdc96431899c0c3183512ea81477f52e550d0",class:"s-notifications-item-content-leading"},e("h4",{key:"fb0eb1efe08440a1e2c12dc1af263adba0413d2b"},this.notification.title),e("p",{key:"c32790ad29bd267323d86e5c3abdec1ab75c09b2"},this.notification.sub_title)),e("span",{key:"e8fbfea5e91fe7d16c489a285502eaab08b16fd5",class:"s-notifications-item-content-trailing"},e("i",{key:"ea9fb9cf6ac2f9c84cde152fa1381e884971cba4",class:"sicon-time s-notifications-item-content-trailing-icon"}),e("span",{key:"1fb25f1463210c8ab467dff8aea22d9c4510301c"},this.notification.date))))}};t.style=a;export{t as salla_notification_item};
|
|
5
|
+
//# sourceMappingURL=p-fcc64f6d.entry.js.map
|