PluginProbe ʕ •ᴥ•ʔ
Elementor Website Builder – more than just a page builder / 3.35.0-beta4
Elementor Website Builder – more than just a page builder v3.35.0-beta4
4.2.0-beta1 4.1.4 4.1.3 4.1.2 4.1.1 4.1.0 4.1.0-beta3 4.1.0-dev3 4.0.9 4.1.0-beta2 4.1.0-dev2 4.0.8 4.1.0-beta1 4.1.0-dev1 4.0.7 4.0.6 4.0.5 4.0.4 4.0.3 3.22.0-dev1 4.0.0-beta3 3.22.0-dev2 4.0.0-beta4 3.22.0-dev3 4.0.0-beta5 3.22.0-dev4 4.0.0-dev1 3.22.0-dev5 4.0.0-dev2 3.22.0-dev6 4.0.0-dev3 3.22.1 4.0.0-dev4 3.22.2 4.0.0-dev5 3.22.3 4.0.1 3.23.0 4.0.2 3.23.0-beta1 3.23.0-beta2 3.23.0-beta3 3.23.0-beta4 3.23.0-beta5 3.23.0-beta6 3.23.0-dev1 3.23.0-dev2 3.23.0-dev3 3.23.0-dev4 3.23.0-dev5 3.23.0-dev6 3.23.1 3.23.2 3.23.3 3.23.4 3.24.0 3.24.0-beta1 3.24.0-beta2 3.24.0-beta3 3.24.0-dev1 3.24.0-dev2 3.24.0-dev3 3.24.1 3.24.2 3.24.3 3.24.4 3.24.5 3.24.6 3.24.7 3.24.8 3.25.0 3.25.0-beta1 3.25.0-beta2 3.25.0-beta3 3.25.0-dev1 3.25.0-dev2 3.25.0-dev3 3.25.1 3.25.10 3.25.11 3.25.2 3.25.3 3.25.4 3.25.5 3.25.6 3.25.7 3.25.8 3.25.9 3.26.0 3.26.0-beta1 3.26.0-beta2 3.26.0-beta3 3.26.0-beta4 3.26.0-beta5 3.26.0-dev1 3.26.0-dev2 3.26.0-dev3 3.26.0-dev4 3.26.0-dev5 3.26.1 3.26.2 3.26.3 3.26.4 3.26.5 3.27.0 3.27.0-beta1 3.27.0-beta2 3.27.0-dev1 3.27.0-dev2 3.27.1 3.27.2 3.27.3 3.27.4 3.27.5 3.27.6 3.27.7 3.28.0 3.28.0-beta1 3.28.0-beta2 3.28.0-beta3 3.28.0-dev1 3.28.0-dev2 3.28.0-dev3 3.28.1 3.28.2 3.28.3 3.28.4 3.29.0 3.29.0-beta1 trunk 3.29.0-beta2 3.0.0 3.29.0-beta3 3.0.1 3.29.0-beta4 3.0.10 3.29.0-dev1 3.0.11 3.29.0-dev2 3.0.12 3.29.0-dev3 3.0.13 3.29.0-dev4 3.0.14 3.29.1 3.0.15 3.29.2 3.0.16 3.3.0 3.0.2 3.3.1 3.0.3 3.30.0 3.0.4 3.30.0-beta1 3.0.5 3.30.0-beta2 3.0.6 3.30.0-beta3 3.0.7 3.30.0-dev1 3.0.8 3.30.0-dev2 3.0.8.1 3.30.0-dev3 3.0.9 3.30.1 3.1.0 3.30.2 3.1.0-beta1 3.30.3 3.1.0-beta2 3.30.4 3.1.0-beta3 3.31.0 3.1.0-beta4 3.31.0-beta1 3.1.0-dev1 3.31.0-beta2 3.1.0-dev2 3.31.0-dev1 3.1.0-dev3 3.31.0-dev2 3.1.1 3.31.1 3.1.2 3.31.2 3.1.3 3.31.3 3.1.4 3.31.4 3.10.0 3.31.5 3.10.0-dev1 3.32.0 3.10.1 3.32.0-beta1 3.10.2 3.32.0-beta2 3.11.0 3.32.0-beta3 3.11.0-beta1 3.32.0-dev1 3.11.0-beta2 3.32.0-dev2 3.11.0-beta3 3.32.0-dev3 3.11.0-dev1 3.32.1 3.11.0-dev2 3.32.2 3.11.0-dev3 3.32.3 3.11.1 3.32.4 3.11.2 3.32.5 3.11.3 3.33.0 3.11.4 3.33.0-beta1 3.11.5 3.33.0-beta2 3.12.0 3.33.0-beta3 3.12.1 3.33.0-beta4 3.12.2 3.33.0-dev1 3.13.0 3.33.0-dev2 3.13.0-beta1 3.33.0-dev3 3.13.0-beta2 3.33.0-dev4 3.13.0-beta3 3.33.1 3.13.0-dev3 3.33.2 3.13.0-dev4 3.33.3 3.13.1 3.33.4 3.13.2 3.33.5 3.13.3 3.33.6 3.13.4 3.34.0 3.14.0 3.34.0-beta1 3.14.0-beta1 3.34.0-beta2 3.14.0-beta2 3.34.0-beta3 3.14.0-beta3 3.34.0-dev1 3.14.0-beta4 3.34.0-dev2 3.14.0-beta5 3.34.1 3.14.1 3.34.2 3.15.0 3.34.3 3.15.1 3.34.4 3.15.2 3.35.0 3.15.3 3.35.0-beta1 3.16.0 3.35.0-beta2 3.16.0-beta3 3.35.0-beta3 3.16.0-beta4 3.35.0-beta4 3.16.0-dev1 3.35.0-dev1 3.16.0-dev2 3.35.0-dev2 3.16.1 3.35.0-dev3 3.16.2 3.35.0-dev4 3.16.3 3.35.1 3.16.4 3.35.2 3.16.5 3.35.3 3.16.6 3.35.4 3.17.0 3.35.5 3.17.0-dev2 3.35.6 3.17.0-dev3 3.35.7 3.17.0-dev4 3.35.8 3.17.1 3.35.9 3.17.2 3.4.0 3.17.3 3.4.0-dev7 3.18.0 3.4.0-dev8 3.18.0-beta1 3.4.0-dev9 3.18.0-beta2 3.4.1 3.18.0-beta3 3.4.2 3.18.0-beta4 3.4.3 3.18.0-dev1 3.4.4 3.18.1 3.4.5 3.18.2 3.4.6 3.18.3 3.4.7 3.19.0 3.4.8 3.19.0-beta1 3.5.0 3.19.0-beta2 3.5.0-beta1 3.19.0-beta3 3.5.0-beta2 3.19.0-beta4 3.5.0-beta3 3.19.0-beta5 3.5.0-beta4 3.19.0-beta6 3.5.0-beta5 3.19.0-dev1 3.5.0-beta7 3.19.0-dev2 3.5.0-beta8 3.19.0-dev3 3.5.0-dev8 3.19.0-dev4 3.5.0-dev9 3.19.0-dev5 3.5.1 3.19.0-dev6 3.5.2 3.19.1 3.5.3 3.19.2 3.5.4 3.19.3 3.5.5 3.19.4 3.5.6 3.2.0 3.6.0 3.2.1 3.6.0-beta1 3.2.2 3.6.0-beta2 3.2.3 3.6.0-beta3 3.2.4 3.6.0-beta4 3.2.5 3.6.0-beta5 3.20.0 3.6.0-dev1 3.20.0-beta1 3.6.0-dev10 3.20.0-beta2 3.6.1 3.20.0-beta3 3.6.2 3.20.0-beta4 3.6.3 3.20.0-dev1 3.6.4 3.20.0-dev2 3.6.5 3.20.0-dev3 3.6.6 3.20.0-dev4 3.6.7 3.20.1 3.6.8 3.20.2 3.7.0 3.20.3 3.7.0-beta1 3.20.4 3.7.0-beta2 3.21.0 3.7.0-beta3 3.21.0-beta1 3.7.0-beta4 3.21.0-beta2 3.7.0-dev1 3.21.0-beta3 3.7.1 3.21.0-dev1 3.7.2 3.21.0-dev2 3.7.3 3.21.0-dev3 3.7.4 3.21.1 3.7.5 3.21.2 3.7.6 3.21.3 3.7.7 3.21.4 3.7.8 3.21.5 3.8.0 3.21.6 3.8.0-beta1 3.21.7 3.8.0-beta2 3.21.8 3.8.0-beta3 3.22.0 3.8.1 3.22.0-beta1 3.9.0 3.22.0-beta2 3.9.1 3.22.0-beta3 3.9.2 3.22.0-beta4 4.0.0 3.22.0-beta5 4.0.0-beta1 3.22.0-beta6 4.0.0-beta2
elementor / assets / js / lightbox.a1f44406e887981f48c7.bundle.js
elementor / assets / js Last commit date
packages 5 months ago 00f53f1b378f6c98c043.bundle.min.js 5 months ago 04441cacbcc0ffea6713.bundle.min.js 5 months ago 0982f37bec0944fbcb10.bundle.js 5 months ago 0bc41c4656ca54cf2aca.bundle.min.js 5 months ago 137ba3baf43f287996c2.bundle.min.js 5 months ago 1564d2bfa4591bf857f3.bundle.min.js 5 months ago 197583acd246fea0e25d.bundle.js 6 months ago 1f7fa1d64dd4cef4a3c0.bundle.js 5 months ago 254132ea6903b7cf0c30.bundle.js 5 months ago 2934fa380b70eb462ece.bundle.min.js 5 months ago 315ffba5a5bf098be034.bundle.min.js 5 months ago 35423d812dc1d52fdb27.bundle.min.js 5 months ago 3c18b6eb4e735ca7e8bf.bundle.js 5 months ago 3c838288a9b7ddd2aea4.bundle.min.js 5 months ago 3d1613aca86991103452.bundle.min.js 5 months ago 3d410a099008411bb011.bundle.js 6 months ago 40d841f4b4ce7b1928f5.bundle.js 5 months ago 4246c56134ca9ba65163.bundle.js 5 months ago 45167112673d4bc99f6b.bundle.js 5 months ago 45a55c192b49ad3f224d.bundle.js 5 months ago 45f1ae567e48fe3da9b0.bundle.min.js 8 months ago 4812775bcbc0ff8a9043.bundle.min.js 5 months ago 4886b33c17731474e197.bundle.min.js 5 months ago 54d62e5edbcf81b72a1f.bundle.min.js 5 months ago 5b13d0f77c0ac139c979.bundle.js 5 months ago 5be98965bbdf1c631fdf.bundle.min.js 5 months ago 6a19e86dd8c1f9165dbe.bundle.js 6 months ago 6cb9e42b9b73a76315e0.bundle.js 5 months ago 72459a35b6570acc77f3.bundle.js 5 months ago 75915b40e37cc6d910ef.bundle.js 5 months ago 7745b82dc4a05385ef1f.bundle.js 5 months ago 79016b3aba18d6be6dc3.bundle.min.js 5 months ago 7a5da9cf33b7d3557599.bundle.js 5 months ago 7a8c6c081d659e35d7d2.bundle.min.js 5 months ago 7d17894dc2ca045cfbb5.bundle.min.js 5 months ago 7dae73b622bebe8a5d94.bundle.js 5 months ago 7f2c78456ab3f406f3df.bundle.js 5 months ago 8277989eebcfba278cb0.bundle.min.js 8 months ago 84288e5699f5d8b8b23e.bundle.min.js 5 months ago 85106d35eeb23f6f4a33.bundle.min.js 5 months ago 877227b9d759b63096a9.bundle.js 5 months ago 8ac2c6e532225b54dba2.bundle.js 5 months ago 8b4f35f99eb521b37d0c.bundle.js 5 months ago 8b6212b7ad0ef8719b6b.bundle.min.js 5 months ago 8e8b47ad5b4e4d038c80.bundle.js 5 months ago 8ecfd8495b7ec419862a.bundle.js 5 months ago 9167bffba76b36a431f5.bundle.min.js 5 months ago 91c1e96a5c75bbc8ec6d.bundle.js 5 months ago 982fcee032dda41fa3a1.bundle.min.js 5 months ago 9832c866a8fe9b51f9d2.bundle.min.js 5 months ago 9dcd9e88237da6496816.bundle.min.js 5 months ago 9f88a0d716a691c2448a.bundle.min.js 8 months ago a2ea929f439e819b924b.bundle.min.js 5 months ago a9f41949787209626737.bundle.min.js 5 months ago ac53273f887639e3c6ea.bundle.min.js 5 months ago accordion.8b0db5058afeb74622f5.bundle.min.js 8 months ago accordion.b9a0ab19c7c872c405d7.bundle.js 6 months ago admin-feedback.js 8 months ago admin-feedback.min.js 8 months ago admin-feedback.strings.js 5 months ago admin-modules.js 6 months ago admin-modules.min.js 6 months ago admin-modules.min.js.LICENSE.txt 10 months ago admin-modules.strings.js 6 months ago admin-notifications.js 8 months ago admin-notifications.min.js 8 months ago admin-notifications.strings.js 6 months ago admin-top-bar.js 5 months ago admin-top-bar.min.js 5 months ago admin-top-bar.strings.js 6 months ago admin.js 5 months ago admin.min.js 5 months ago admin.min.js.LICENSE.txt 10 months ago admin.strings.js 6 months ago aee13673e923469c3275.bundle.min.js 5 months ago ai-admin.js 6 months ago ai-admin.min.js 6 months ago ai-admin.min.js.LICENSE.txt 10 months ago ai-admin.strings.js 6 months ago ai-gutenberg.js 6 months ago ai-gutenberg.min.js 6 months ago ai-gutenberg.min.js.LICENSE.txt 10 months ago ai-gutenberg.strings.js 6 months ago ai-layout.js 6 months ago ai-layout.min.js 6 months ago ai-layout.min.js.LICENSE.txt 10 months ago ai-layout.strings.js 5 months ago ai-media-library.js 6 months ago ai-media-library.min.js 6 months ago ai-media-library.min.js.LICENSE.txt 10 months ago ai-media-library.strings.js 6 months ago ai-unify-product-images.js 6 months ago ai-unify-product-images.min.js 6 months ago ai-unify-product-images.min.js.LICENSE.txt 10 months ago ai-unify-product-images.strings.js 6 months ago ai.js 6 months ago ai.min.js 6 months ago ai.min.js.LICENSE.txt 10 months ago ai.strings.js 5 months ago alert.42cc1d522ef5c60bf874.bundle.min.js 8 months ago alert.fd509aa768e7b35a8e32.bundle.js 6 months ago announcements-app.js 5 months ago announcements-app.min.js 5 months ago announcements-app.min.js.LICENSE.txt 10 months ago announcements-app.strings.js 6 months ago app-loader.js 6 months ago app-loader.min.js 8 months ago app-loader.strings.js 5 months ago app-packages.js 5 months ago app-packages.min.js 5 months ago app-packages.min.js.LICENSE.txt 10 months ago app-packages.strings.js 5 months ago app.js 5 months ago app.min.js 5 months ago app.min.js.LICENSE.txt 10 months ago app.strings.js 5 months ago atomic-widgets-editor.js 5 months ago atomic-widgets-editor.min.js 5 months ago atomic-widgets-editor.min.js.LICENSE.txt 5 months ago atomic-widgets-editor.strings.js 5 months ago atomic-widgets-frontend-handler.js 5 months ago atomic-widgets-frontend-handler.min.js 5 months ago b09b262748a4be8417ce.bundle.js 5 months ago b423d91809cf7e0cb8b0.bundle.js 5 months ago b668f6906820570e60b5.bundle.min.js 5 months ago b96d70044d0d67c2df19.bundle.min.js 8 months ago b97ced1683f62f5686fa.bundle.min.js 5 months ago ba292d36d983cead2a5b.bundle.js 5 months ago bb708343060feb5c4a5d.bundle.min.js 5 months ago beta-tester.js 8 months ago beta-tester.min.js 8 months ago beta-tester.strings.js 6 months ago bf55a1adc050b89179ff.bundle.min.js 5 months ago bff204c1ab0d15e0a69b.bundle.min.js 5 months ago bfff0d754d68404bd5a6.bundle.js 5 months ago c13d205fa26f8af1ce7c.bundle.js 6 months ago c4d335a90ec9a10c603f.bundle.js 5 months ago cf2707501445e5b44fbe.bundle.js 5 months ago cf6ec600fcf4e08ba6d3.bundle.js 5 months ago checklist.js 6 months ago checklist.min.js 6 months ago checklist.min.js.LICENSE.txt 10 months ago checklist.strings.js 6 months ago cloud-library-screenshot.js 6 months ago cloud-library-screenshot.min.js 6 months ago cloud-library-screenshot.min.js.LICENSE.txt 8 months ago cloud-library-screenshot.strings.js 6 months ago common-modules.js 5 months ago common-modules.min.js 5 months ago common-modules.strings.js 6 months ago common.js 5 months ago common.min.js 5 months ago common.min.js.LICENSE.txt 10 months ago common.strings.js 6 months ago contact-buttons.086261d3e9c4d8037686.bundle.js 6 months ago contact-buttons.e98d0220ce8c38404e7e.bundle.min.js 8 months ago container-converter.js 8 months ago container-converter.min.js 8 months ago container-converter.strings.js 6 months ago container-editor-handlers.a2e8e48d28c5544fb183.bundle.min.js 5 months ago container-editor-handlers.e7e069c4e656425c51f8.bundle.js 5 months ago counter.12335f45aaa79d244f24.bundle.min.js 8 months ago counter.7310c276bc7865a3d438.bundle.js 6 months ago d0d9578389b742468cb7.bundle.min.js 5 months ago d42de03ef4a0f50e39ca.bundle.min.js 5 months ago d52aa05c75af56327744.bundle.js 6 months ago d67ddd6f08b08392c42f.bundle.js 6 months ago daecdcc50702fd1d72f1.bundle.js 6 months ago daedc6797eaad5c82711.bundle.min.js 8 months ago db27207322ef9be952ee.bundle.js 5 months ago dev-tools.js 8 months ago dev-tools.min.js 8 months ago dev-tools.strings.js 6 months ago e-home-screen.js 5 months ago e-home-screen.min.js 5 months ago e-home-screen.strings.js 5 months ago e-react-promotions.js 8 months ago e-react-promotions.min.js 8 months ago e-react-promotions.strings.js 6 months ago e-wc-product-editor.js 6 months ago e-wc-product-editor.min.js 8 months ago e-wc-product-editor.min.js.LICENSE.txt 1 year ago e-wc-product-editor.strings.js 6 months ago e1cb4d726bb59646c677.bundle.min.js 8 months ago e2a127e2fb01b578d2ba.bundle.js 5 months ago e393545679b12d012fba.bundle.js 5 months ago e3b540e2c02813e75f38.bundle.min.js 5 months ago e459c6c89c0c0899c850.bundle.js 6 months ago e4d209bf3a704ff88e1a.bundle.js 5 months ago e7d71f4e1d39edbc1fb6.bundle.js 5 months ago e883e6638ef93bfd3204.bundle.js 6 months ago editor-document.js 6 months ago editor-document.min.js 8 months ago editor-document.strings.js 5 months ago editor-environment-v2.js 8 months ago editor-environment-v2.min.js 8 months ago editor-environment-v2.strings.js 6 months ago editor-interactions.js 5 months ago editor-interactions.min.js 5 months ago editor-interactions.strings.js 6 months ago editor-loader-v1.js 8 months ago editor-loader-v1.min.js 8 months ago editor-loader-v1.strings.js 6 months ago editor-loader-v2.js 8 months ago editor-loader-v2.min.js 8 months ago editor-loader-v2.strings.js 6 months ago editor-modules.js 6 months ago editor-modules.min.js 6 months ago editor-modules.min.js.LICENSE.txt 10 months ago editor-modules.strings.js 5 months ago editor-notifications.js 8 months ago editor-notifications.min.js 8 months ago editor-notifications.strings.js 6 months ago editor-one-admin.js 6 months ago editor-one-admin.min.js 6 months ago editor-one-admin.strings.js 6 months ago editor-one-menu.js 5 months ago editor-one-menu.min.js 5 months ago editor-one-menu.strings.js 6 months ago editor-one-sidebar-navigation.js 5 months ago editor-one-sidebar-navigation.min.js 5 months ago editor-one-sidebar-navigation.min.js.LICENSE.txt 6 months ago editor-one-sidebar-navigation.strings.js 6 months ago editor-one-top-bar.js 5 months ago editor-one-top-bar.min.js 5 months ago editor-one-top-bar.min.js.LICENSE.txt 5 months ago editor-one-top-bar.strings.js 5 months ago editor-v4-opt-in-alphachip.js 5 months ago editor-v4-opt-in-alphachip.min.js 5 months ago editor-v4-opt-in-alphachip.strings.js 5 months ago editor-v4-opt-in.js 5 months ago editor-v4-opt-in.min.js 5 months ago editor-v4-opt-in.min.js.LICENSE.txt 6 months ago editor-v4-opt-in.strings.js 5 months ago editor-v4-welcome-opt-in.js 5 months ago editor-v4-welcome-opt-in.min.js 5 months ago editor-v4-welcome-opt-in.strings.js 5 months ago editor.js 5 months ago editor.min.js 5 months ago editor.min.js.LICENSE.txt 6 months ago editor.strings.js 6 months ago ef2100ac3eda1a957819.bundle.min.js 8 months ago ef35c83e4628f0a5c328.bundle.js 5 months ago element-manager-admin.js 5 months ago element-manager-admin.min.js 5 months ago element-manager-admin.min.js.LICENSE.txt 10 months ago element-manager-admin.strings.js 5 months ago elementor-admin-bar.js 8 months ago elementor-admin-bar.min.js 8 months ago elementor-admin-bar.strings.js 6 months ago fa64159422dec32bd185.bundle.js 5 months ago floating-bars.740d06d17cea5cebdb61.bundle.min.js 8 months ago floating-bars.a6e6a043444b62f64f82.bundle.js 6 months ago floating-elements-modal.js 5 months ago floating-elements-modal.min.js 5 months ago floating-elements-modal.strings.js 6 months ago frontend-modules.js 5 months ago frontend-modules.min.js 5 months ago frontend.js 8 months ago frontend.min.js 8 months ago gutenberg.js 8 months ago gutenberg.min.js 8 months ago gutenberg.strings.js 6 months ago image-carousel.6167d20b95b33386757b.bundle.min.js 8 months ago image-carousel.8b25f3674c29b829a867.bundle.js 6 months ago import-export-admin.js 6 months ago import-export-admin.min.js 6 months ago import-export-admin.strings.js 5 months ago import-export-customization-admin.js 5 months ago import-export-customization-admin.min.js 5 months ago import-export-customization-admin.min.js.LICENSE.txt 8 months ago import-export-customization-admin.strings.js 5 months ago interactions.js 5 months ago interactions.min.js 5 months ago interactions.strings.js 6 months ago kit-elements-defaults-editor.js 6 months ago kit-elements-defaults-editor.min.js 6 months ago kit-elements-defaults-editor.min.js.LICENSE.txt 10 months ago kit-elements-defaults-editor.strings.js 6 months ago kit-library.4d4a9d3b76f7410214c3.bundle.min.js 5 months ago kit-library.9c4bbee79edf32c6fcb3.bundle.js 5 months ago lightbox.a1f44406e887981f48c7.bundle.js 6 months ago lightbox.d1799e507b570f6b0496.bundle.min.js 8 months ago media-hints.js 8 months ago media-hints.min.js 8 months ago media-hints.strings.js 6 months ago nested-accordion.294d40984397351fd0f5.bundle.min.js 5 months ago nested-accordion.4340b64226322f36bcc0.bundle.js 5 months ago nested-accordion.js 6 months ago nested-accordion.min.js 6 months ago nested-accordion.min.js.LICENSE.txt 10 months ago nested-accordion.strings.js 6 months ago nested-elements.js 6 months ago nested-elements.min.js 6 months ago nested-elements.strings.js 6 months ago nested-tabs.7a338e6d7e060c473993.bundle.js 6 months ago nested-tabs.a2401356d329f179475e.bundle.min.js 6 months ago nested-tabs.js 6 months ago nested-tabs.min.js 6 months ago nested-tabs.min.js.LICENSE.txt 10 months ago nested-tabs.strings.js 6 months ago nested-title-keyboard-handler.0c2b498e3e0695a1dc19.bundle.js 6 months ago nested-title-keyboard-handler.2a67d3cc630e11815acc.bundle.min.js 6 months ago new-template.js 5 months ago new-template.min.js 5 months ago new-template.strings.js 6 months ago notes.js 8 months ago notes.min.js 8 months ago notes.strings.js 6 months ago onboarding.31a5615a753ffac2c800.bundle.min.js 5 months ago onboarding.63cdf72a450944ebd5f7.bundle.js 5 months ago pro-free-trial-popup.js 8 months ago pro-free-trial-popup.min.js 8 months ago pro-free-trial-popup.strings.js 6 months ago pro-install-events.js 8 months ago pro-install-events.min.js 8 months ago pro-install-events.strings.js 6 months ago progress.0ea083b809812c0e3aa1.bundle.min.js 8 months ago progress.b1057ba870016558bce1.bundle.js 6 months ago responsive-bar.js 8 months ago responsive-bar.min.js 8 months ago responsive-bar.strings.js 6 months ago section-editor-handlers.53ffedef32043348b99b.bundle.min.js 8 months ago section-editor-handlers.d65899d232b5339510d7.bundle.js 6 months ago section-frontend-handlers.c3950c6b190ca134bc8d.bundle.js 6 months ago section-frontend-handlers.d85ab872da118940910d.bundle.min.js 8 months ago shared-editor-handlers.3023894100138e442ab0.bundle.js 5 months ago shared-editor-handlers.cacdcbed391abf4b48b0.bundle.min.js 5 months ago shared-frontend-handlers.03caa53373b56d3bab67.bundle.min.js 8 months ago shared-frontend-handlers.3b079824c37a5fe2bdaa.bundle.js 6 months ago styleguide-app-initiator.js 6 months ago styleguide-app-initiator.min.js 6 months ago styleguide-app-initiator.min.js.LICENSE.txt 10 months ago styleguide-app-initiator.strings.js 6 months ago styleguide-app.04340244193733d78622.bundle.min.js 8 months ago styleguide-app.36ecabae74d9b87fc5a8.bundle.js 6 months ago styleguide.js 8 months ago styleguide.min.js 8 months ago styleguide.strings.js 6 months ago tabs-handler.js 6 months ago tabs-handler.min.js 6 months ago tabs-preview-handler.js 6 months ago tabs-preview-handler.min.js 6 months ago tabs.18344b05d8d1ea0702bc.bundle.min.js 8 months ago tabs.40498fa771d612162c53.bundle.js 6 months ago text-editor.0c9960167105139d27c9.bundle.js 6 months ago text-editor.45609661e409413f1cef.bundle.min.js 8 months ago text-path.b5766aff4e92f7f6c661.bundle.min.js 6 months ago text-path.b5766aff4e92f7f6c661.bundle.min.js.LICENSE.txt 6 months ago text-path.eb787fc2b296f56e6e5f.bundle.js 6 months ago toggle.2a177a3ef4785d3dfbc5.bundle.min.js 8 months ago toggle.b75e66d2aca6f6ee742e.bundle.js 6 months ago video.6e96510afa701d1f2ebc.bundle.js 6 months ago video.86d44e46e43d0807e708.bundle.min.js 8 months ago web-cli.js 6 months ago web-cli.min.js 6 months ago web-cli.min.js.LICENSE.txt 10 months ago web-cli.strings.js 6 months ago webpack.runtime.js 5 months ago webpack.runtime.min.js 5 months ago wp-audio.0ba9114964acf4c37ca2.bundle.js 6 months ago wp-audio.c9624cb6e5dc9de86abd.bundle.min.js 8 months ago youtube-handler.js 6 months ago youtube-handler.min.js 6 months ago
lightbox.a1f44406e887981f48c7.bundle.js
1297 lines
1 "use strict";
2 (self["webpackChunkelementorFrontend"] = self["webpackChunkelementorFrontend"] || []).push([["lightbox"],{
3
4 /***/ "../assets/dev/js/frontend/utils/icons/e-icons.js":
5 /*!********************************************************!*\
6 !*** ../assets/dev/js/frontend/utils/icons/e-icons.js ***!
7 \********************************************************/
8 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
9
10
11
12 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
13 Object.defineProperty(exports, "__esModule", ({
14 value: true
15 }));
16 exports.zoomOutBold = exports.zoomInBold = exports.twitter = exports.shareArrow = exports.pinterest = exports.loading = exports.frameMinimize = exports.frameExpand = exports.facebook = exports.downloadBold = exports.close = exports.chevronRight = exports.chevronLeft = void 0;
17 var _manager = _interopRequireDefault(__webpack_require__(/*! ./manager */ "../assets/dev/js/frontend/utils/icons/manager.js"));
18 // This file is automatically generated, please don't change anything in this file.
19
20 const iconsManager = new _manager.default('eicon');
21 const chevronLeft = exports.chevronLeft = {
22 get element() {
23 const svgData = {
24 path: 'M646 125C629 125 613 133 604 142L308 442C296 454 292 471 292 487 292 504 296 521 308 533L604 854C617 867 629 875 646 875 663 875 679 871 692 858 704 846 713 829 713 812 713 796 708 779 692 767L438 487 692 225C700 217 708 204 708 187 708 171 704 154 692 142 675 129 663 125 646 125Z',
25 width: 1000,
26 height: 1000
27 };
28 return iconsManager.createSvgElement('chevron-left', svgData);
29 }
30 };
31 const chevronRight = exports.chevronRight = {
32 get element() {
33 const svgData = {
34 path: 'M696 533C708 521 713 504 713 487 713 471 708 454 696 446L400 146C388 133 375 125 354 125 338 125 325 129 313 142 300 154 292 171 292 187 292 204 296 221 308 233L563 492 304 771C292 783 288 800 288 817 288 833 296 850 308 863 321 871 338 875 354 875 371 875 388 867 400 854L696 533Z',
35 width: 1000,
36 height: 1000
37 };
38 return iconsManager.createSvgElement('chevron-right', svgData);
39 }
40 };
41 const close = exports.close = {
42 get element() {
43 const svgData = {
44 path: 'M742 167L500 408 258 167C246 154 233 150 217 150 196 150 179 158 167 167 154 179 150 196 150 212 150 229 154 242 171 254L408 500 167 742C138 771 138 800 167 829 196 858 225 858 254 829L496 587 738 829C750 842 767 846 783 846 800 846 817 842 829 829 842 817 846 804 846 783 846 767 842 750 829 737L588 500 833 258C863 229 863 200 833 171 804 137 775 137 742 167Z',
45 width: 1000,
46 height: 1000
47 };
48 return iconsManager.createSvgElement('close', svgData);
49 }
50 };
51 const downloadBold = exports.downloadBold = {
52 get element() {
53 const svgData = {
54 path: 'M572 42H428C405 42 385 61 385 85V385H228C197 385 180 424 203 447L475 719C489 732 511 732 524 719L797 447C819 424 803 385 771 385H614V85C615 61 595 42 572 42ZM958 915V715C958 691 939 672 915 672H653L565 760C529 796 471 796 435 760L347 672H85C61 672 42 691 42 715V915C42 939 61 958 85 958H915C939 958 958 939 958 915ZM736 873C736 853 720 837 700 837 681 837 665 853 665 873 665 892 681 908 700 908 720 908 736 892 736 873ZM815 837C835 837 851 853 851 873 851 892 835 908 815 908 795 908 779 892 779 873 779 853 795 837 815 837Z',
55 width: 1000,
56 height: 1000
57 };
58 return iconsManager.createSvgElement('download-bold', svgData);
59 }
60 };
61 const facebook = exports.facebook = {
62 get element() {
63 const svgData = {
64 path: 'M858 42H142C88 42 42 87 42 142V863C42 913 88 958 142 958H421V646H292V500H421V387C421 258 496 192 613 192 667 192 725 200 725 200V325H663C600 325 579 362 579 404V500H721L700 646H583V958H863C917 958 963 913 963 858V142C958 87 913 42 858 42L858 42Z',
65 width: 1000,
66 height: 1000
67 };
68 return iconsManager.createSvgElement('facebook', svgData);
69 }
70 };
71 const frameExpand = exports.frameExpand = {
72 get element() {
73 const svgData = {
74 path: 'M863 583C890 583 914 605 916 632L917 637V863L916 868C914 893 893 914 868 916L863 917H638L632 916C607 914 586 893 584 868L583 863 584 857C586 832 607 811 632 809L638 808H808V637L809 632C811 605 835 583 863 583ZM138 583C165 583 189 605 191 632L192 637V808H363C390 808 414 830 416 857L417 863C417 890 395 914 368 916L363 917H138C110 917 86 895 84 868L83 863V637C83 607 108 583 138 583ZM863 83C890 83 914 105 916 132L917 137V362C917 392 893 417 863 417 835 417 811 395 809 368L808 362V192H638C610 192 586 170 584 143L583 137C583 110 605 86 632 84L638 83H863ZM363 83L368 84C393 86 414 107 416 132L417 137 416 143C414 168 393 189 368 191L363 192H192V362L191 368C189 395 165 417 138 417S86 395 84 368L83 362V137L84 132C86 107 107 86 132 84L138 83H363Z',
75 width: 1000,
76 height: 1000
77 };
78 return iconsManager.createSvgElement('frame-expand', svgData);
79 }
80 };
81 const frameMinimize = exports.frameMinimize = {
82 get element() {
83 const svgData = {
84 path: 'M363 583C392 583 413 604 417 633L417 637V863C417 892 392 917 363 917 333 917 313 896 308 867L308 863V692H138C108 692 88 671 83 642L83 637C83 608 104 587 133 583L138 583H363ZM638 583C608 583 588 604 583 633L583 637V863C583 892 608 917 638 917 667 917 688 896 692 867L692 863V692H863C892 692 913 671 917 642L917 637C917 608 896 587 867 583L863 583H638ZM363 417C392 417 413 396 417 367L417 362V137C417 108 392 83 363 83 333 83 313 104 308 133L308 137V308H138C108 308 88 329 83 358L83 362C83 392 104 412 133 417L138 417H363ZM638 417C608 417 588 396 583 367L583 362V137C583 108 608 83 638 83 667 83 688 104 692 133L692 137V308H863C892 308 913 329 917 358L917 362C917 392 896 412 867 417L863 417H638Z',
85 width: 1000,
86 height: 1000
87 };
88 return iconsManager.createSvgElement('frame-minimize', svgData);
89 }
90 };
91 const loading = exports.loading = {
92 get element() {
93 const svgData = {
94 path: 'M500 975V858C696 858 858 696 858 500S696 142 500 142 142 304 142 500H25C25 237 238 25 500 25S975 237 975 500 763 975 500 975Z',
95 width: 1000,
96 height: 1000
97 };
98 return iconsManager.createSvgElement('loading', svgData);
99 }
100 };
101 const pinterest = exports.pinterest = {
102 get element() {
103 const svgData = {
104 path: 'M950 496C950 746 746 950 496 950 450 950 404 942 363 929 379 900 408 850 421 808 425 787 450 700 450 700 467 729 508 754 554 754 692 754 792 629 792 471 792 321 671 208 513 208 317 208 213 342 213 483 213 550 250 633 304 658 313 662 317 662 321 654 321 650 329 617 333 604 333 600 333 596 329 592 313 567 296 525 296 487 288 387 367 292 496 292 608 292 688 367 688 475 688 600 625 683 546 683 500 683 467 646 479 600 492 546 517 487 517 450 517 417 500 387 458 387 413 387 375 433 375 496 375 537 388 562 388 562S342 754 333 787C325 825 329 883 333 917 163 854 42 687 42 496 42 246 246 42 496 42S950 246 950 496Z',
105 width: 1000,
106 height: 1000
107 };
108 return iconsManager.createSvgElement('pinterest', svgData);
109 }
110 };
111 const shareArrow = exports.shareArrow = {
112 get element() {
113 const svgData = {
114 path: 'M946 383L667 133C642 112 604 129 604 162V292C238 296 71 637 42 812 238 587 363 521 604 517V658C604 692 642 708 667 687L946 442C963 425 963 400 946 383Z',
115 width: 1000,
116 height: 1000
117 };
118 return iconsManager.createSvgElement('share-arrow', svgData);
119 }
120 };
121 const twitter = exports.twitter = {
122 get element() {
123 const svgData = {
124 path: 'M863 312C863 321 863 329 863 337 863 587 675 871 329 871 221 871 125 842 42 787 58 787 71 792 88 792 175 792 254 762 321 712 238 712 171 658 146 583 158 583 171 587 183 587 200 587 217 583 233 579 146 562 83 487 83 396V387C108 400 138 408 167 412 117 379 83 321 83 254 83 221 92 187 108 158 200 271 342 346 496 354 492 342 492 325 492 312 492 208 575 125 679 125 733 125 783 146 817 183 858 175 900 158 938 137 925 179 896 217 854 242 892 237 929 229 963 212 933 250 900 283 863 312Z',
125 width: 1000,
126 height: 1000
127 };
128 return iconsManager.createSvgElement('twitter', svgData);
129 }
130 };
131 const zoomInBold = exports.zoomInBold = {
132 get element() {
133 const svgData = {
134 path: 'M388 383V312C388 283 413 258 442 258 471 258 496 283 496 312V383H567C596 383 621 408 621 437S596 492 567 492H496V562C496 592 471 617 442 617 413 617 388 592 388 562V492H317C288 492 263 467 263 437S288 383 317 383H388ZM654 733C592 779 517 804 438 804 233 804 71 642 71 437S233 71 438 71 804 233 804 437C804 521 779 596 733 654L896 817C917 837 917 871 896 892 875 913 842 913 821 892L654 733ZM438 696C579 696 696 579 696 437S579 179 438 179 179 296 179 437 296 696 438 696Z',
135 width: 1000,
136 height: 1000
137 };
138 return iconsManager.createSvgElement('zoom-in-bold', svgData);
139 }
140 };
141 const zoomOutBold = exports.zoomOutBold = {
142 get element() {
143 const svgData = {
144 path: 'M750 683L946 879C963 896 963 929 946 946 929 963 896 967 879 946L683 750C617 804 533 833 438 833 221 833 42 654 42 437S221 42 438 42 833 221 833 437C833 529 800 612 750 683ZM296 392H575C600 392 621 412 621 442 621 467 600 487 575 487H296C271 487 250 467 250 442 250 412 271 392 296 392ZM438 737C604 737 738 604 738 437S604 137 438 137 138 271 138 437 271 737 438 737Z',
145 width: 1000,
146 height: 1000
147 };
148 return iconsManager.createSvgElement('zoom-out-bold', svgData);
149 }
150 };
151
152 /***/ }),
153
154 /***/ "../assets/dev/js/frontend/utils/icons/manager.js":
155 /*!********************************************************!*\
156 !*** ../assets/dev/js/frontend/utils/icons/manager.js ***!
157 \********************************************************/
158 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
159
160
161
162 Object.defineProperty(exports, "__esModule", ({
163 value: true
164 }));
165 exports["default"] = void 0;
166 __webpack_require__(/*! core-js/modules/es.array.push.js */ "../node_modules/core-js/modules/es.array.push.js");
167 __webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ "../node_modules/core-js/modules/esnext.iterator.constructor.js");
168 __webpack_require__(/*! core-js/modules/esnext.iterator.map.js */ "../node_modules/core-js/modules/esnext.iterator.map.js");
169 class IconsManager {
170 static symbolsContainer;
171 static iconsUsageList = [];
172 constructor(elementsPrefix) {
173 this.prefix = `${elementsPrefix}-`;
174 this.createSvgSymbolsContainer();
175 }
176 createSvgElement(name, {
177 path,
178 width,
179 height
180 }) {
181 const iconName = this.prefix + name,
182 iconSelector = '#' + this.prefix + name;
183
184 // Create symbol if not exist yet.
185 if (!IconsManager.iconsUsageList.includes(iconName)) {
186 if (!IconsManager.symbolsContainer.querySelector(iconSelector)) {
187 const symbol = this.createSymbolElement({
188 id: iconName,
189 path,
190 width,
191 height
192 });
193 IconsManager.symbolsContainer.appendChild(symbol);
194 }
195 IconsManager.iconsUsageList.push(iconName);
196 }
197 return this.createSvgIconElement({
198 iconName,
199 iconSelector
200 });
201 }
202 createSvgNode(tag, {
203 props = {},
204 attrs = {}
205 }) {
206 const node = document.createElementNS('http://www.w3.org/2000/svg', tag);
207 Object.keys(props).map(key => node[key] = props[key]);
208 Object.keys(attrs).map(key => node.setAttributeNS(null, key, attrs[key]));
209 return node;
210 }
211 createSvgIconElement({
212 iconName,
213 iconSelector
214 }) {
215 return this.createSvgNode('svg', {
216 props: {
217 innerHTML: '<use xlink:href="' + iconSelector + '" />'
218 },
219 attrs: {
220 class: 'e-font-icon-svg e-' + iconName
221 }
222 });
223 }
224 createSvgSymbolsContainer() {
225 if (!IconsManager.symbolsContainer) {
226 const symbolsContainerId = 'e-font-icon-svg-symbols';
227 IconsManager.symbolsContainer = document.getElementById(symbolsContainerId);
228 if (!IconsManager.symbolsContainer) {
229 IconsManager.symbolsContainer = this.createSvgNode('svg', {
230 attrs: {
231 style: 'display: none;',
232 class: symbolsContainerId
233 }
234 });
235 document.body.appendChild(IconsManager.symbolsContainer);
236 }
237 }
238 }
239 createSymbolElement({
240 id,
241 path,
242 width,
243 height
244 }) {
245 return this.createSvgNode('symbol', {
246 props: {
247 innerHTML: '<path d="' + path + '"></path>',
248 id
249 },
250 attrs: {
251 viewBox: '0 0 ' + width + ' ' + height
252 }
253 });
254 }
255 }
256 exports["default"] = IconsManager;
257
258 /***/ }),
259
260 /***/ "../assets/dev/js/frontend/utils/lightbox/lightbox.js":
261 /*!************************************************************!*\
262 !*** ../assets/dev/js/frontend/utils/lightbox/lightbox.js ***!
263 \************************************************************/
264 /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
265
266
267
268 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
269 __webpack_require__(/*! core-js/modules/es.array.push.js */ "../node_modules/core-js/modules/es.array.push.js");
270 __webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ "../node_modules/core-js/modules/esnext.iterator.constructor.js");
271 __webpack_require__(/*! core-js/modules/esnext.iterator.filter.js */ "../node_modules/core-js/modules/esnext.iterator.filter.js");
272 __webpack_require__(/*! core-js/modules/esnext.iterator.find.js */ "../node_modules/core-js/modules/esnext.iterator.find.js");
273 __webpack_require__(/*! core-js/modules/esnext.iterator.for-each.js */ "../node_modules/core-js/modules/esnext.iterator.for-each.js");
274 var _screenfull = _interopRequireDefault(__webpack_require__(/*! ./screenfull */ "../assets/dev/js/frontend/utils/lightbox/screenfull.js"));
275 var _eIcons = __webpack_require__(/*! @elementor/e-icons */ "../assets/dev/js/frontend/utils/icons/e-icons.js");
276 module.exports = elementorModules.ViewModule.extend({
277 oldAnimation: null,
278 swiper: null,
279 player: null,
280 isFontIconSvgExperiment: elementorFrontend.config.experimentalFeatures.e_font_icon_svg,
281 getDefaultSettings() {
282 return {
283 classes: {
284 item: 'elementor-lightbox-item',
285 image: 'elementor-lightbox-image',
286 videoContainer: 'elementor-video-container',
287 videoWrapper: 'elementor-video-wrapper',
288 playButton: 'elementor-custom-embed-play',
289 playButtonIcon: 'fa',
290 playing: 'elementor-playing',
291 hidden: 'elementor-hidden',
292 invisible: 'elementor-invisible',
293 preventClose: 'elementor-lightbox-prevent-close',
294 slideshow: {
295 container: 'swiper',
296 slidesWrapper: 'swiper-wrapper',
297 prevButton: 'elementor-swiper-button elementor-swiper-button-prev',
298 nextButton: 'elementor-swiper-button elementor-swiper-button-next',
299 prevButtonIcon: 'eicon-chevron-left',
300 nextButtonIcon: 'eicon-chevron-right',
301 slide: 'swiper-slide',
302 header: 'elementor-slideshow__header',
303 footer: 'elementor-slideshow__footer',
304 title: 'elementor-slideshow__title',
305 description: 'elementor-slideshow__description',
306 counter: 'elementor-slideshow__counter',
307 iconExpand: 'eicon-frame-expand',
308 iconShrink: 'eicon-frame-minimize',
309 iconZoomIn: 'eicon-zoom-in-bold',
310 iconZoomOut: 'eicon-zoom-out-bold',
311 iconShare: 'eicon-share-arrow',
312 shareMenu: 'elementor-slideshow__share-menu',
313 shareLinks: 'elementor-slideshow__share-links',
314 hideUiVisibility: 'elementor-slideshow--ui-hidden',
315 shareMode: 'elementor-slideshow--share-mode',
316 fullscreenMode: 'elementor-slideshow--fullscreen-mode',
317 zoomMode: 'elementor-slideshow--zoom-mode'
318 }
319 },
320 selectors: {
321 image: '.elementor-lightbox-image',
322 links: 'a, [data-elementor-lightbox]',
323 slideshow: {
324 activeSlide: '.swiper-slide-active',
325 prevSlide: '.swiper-slide-prev',
326 nextSlide: '.swiper-slide-next'
327 }
328 },
329 modalOptions: {
330 id: 'elementor-lightbox',
331 entranceAnimation: 'zoomIn',
332 videoAspectRatio: 169,
333 position: {
334 enable: false
335 }
336 }
337 };
338 },
339 getModal() {
340 if (!module.exports.modal) {
341 this.initModal();
342 }
343 return module.exports.modal;
344 },
345 initModal() {
346 const closeIcon = {};
347
348 // If the experiment is active the closeIcon should be an entire SVG element otherwise it should pass the eicon class name.
349 if (this.isFontIconSvgExperiment) {
350 closeIcon.iconElement = _eIcons.close.element;
351 } else {
352 closeIcon.iconClass = 'eicon-close';
353 }
354 const modal = module.exports.modal = elementorFrontend.getDialogsManager().createWidget('lightbox', {
355 className: 'elementor-lightbox',
356 closeButton: true,
357 closeButtonOptions: {
358 ...closeIcon,
359 attributes: {
360 role: 'button',
361 tabindex: 0,
362 'aria-label': elementorFrontend.config.i18n.close + ' (Esc)'
363 }
364 },
365 selectors: {
366 preventClose: '.' + this.getSettings('classes.preventClose')
367 },
368 hide: {
369 onClick: true
370 }
371 });
372 modal.on('hide', function () {
373 modal.setMessage('');
374 });
375 },
376 showModal(options) {
377 if (options.url && !options.url.startsWith('http')) {
378 return;
379 }
380 this.elements.$closeButton = this.getModal().getElements('closeButton');
381 this.$buttons = this.elements.$closeButton;
382 this.focusedButton = null;
383 const self = this,
384 defaultOptions = self.getDefaultSettings().modalOptions;
385 self.id = options.id;
386 self.setSettings('modalOptions', jQuery.extend(defaultOptions, options.modalOptions));
387 const modal = self.getModal();
388 modal.setID(self.getSettings('modalOptions.id'));
389 modal.onShow = function () {
390 DialogsManager.getWidgetType('lightbox').prototype.onShow.apply(modal, arguments);
391 self.setEntranceAnimation();
392 };
393 modal.onHide = function () {
394 DialogsManager.getWidgetType('lightbox').prototype.onHide.apply(modal, arguments);
395 modal.getElements('message').removeClass('animated');
396 if (_screenfull.default.isFullscreen) {
397 self.deactivateFullscreen();
398 }
399 self.unbindHotKeys();
400 };
401 switch (options.type) {
402 case 'video':
403 self.setVideoContent(options);
404 break;
405 case 'image':
406 {
407 const slides = [{
408 image: options.url,
409 index: 0,
410 title: options.title,
411 description: options.description,
412 hash: options.hash
413 }];
414 options.slideshow = {
415 slides,
416 swiper: {
417 loop: false,
418 pagination: false
419 }
420 };
421 self.setSlideshowContent(options.slideshow);
422 break;
423 }
424 case 'slideshow':
425 self.setSlideshowContent(options.slideshow);
426 break;
427 default:
428 self.setHTMLContent(options.html);
429 }
430 modal.show();
431 },
432 createLightbox(element) {
433 let lightboxData = {};
434 if (element.dataset.elementorLightbox) {
435 lightboxData = JSON.parse(element.dataset.elementorLightbox);
436 }
437 if (lightboxData.type && 'slideshow' !== lightboxData.type) {
438 this.showModal(lightboxData);
439 return;
440 }
441 if (!element.dataset.elementorLightboxSlideshow) {
442 const slideshowID = 'single-img';
443 this.showModal({
444 type: 'image',
445 id: slideshowID,
446 url: element.href,
447 hash: element.getAttribute('data-e-action-hash'),
448 title: element.dataset.elementorLightboxTitle,
449 description: element.dataset.elementorLightboxDescription,
450 modalOptions: {
451 id: 'elementor-lightbox-slideshow-' + slideshowID
452 }
453 });
454 return;
455 }
456 const initialSlideURL = element.dataset.elementorLightboxVideo || element.href;
457 this.openSlideshow(element.dataset.elementorLightboxSlideshow, initialSlideURL);
458 },
459 setHTMLContent(html) {
460 if (window.elementorCommon) {
461 elementorDevTools.deprecation.deprecated('elementorFrontend.utils.lightbox.setHTMLContent()', '3.1.4');
462 }
463 this.getModal().setMessage(html);
464 },
465 setVideoContent(options) {
466 const $ = jQuery;
467 let $videoElement;
468 if ('hosted' === options.videoType) {
469 const videoParams = $.extend({
470 src: options.url,
471 autoplay: ''
472 }, options.videoParams);
473 $videoElement = $('<video>', videoParams);
474 } else {
475 let apiProvider;
476 if (-1 !== options.url.indexOf('vimeo.com')) {
477 apiProvider = elementorFrontend.utils.vimeo;
478 } else if (options.url.match(/^(?:https?:\/\/)?(?:www\.)?(?:m\.)?(?:youtu\.be\/|youtube\.com|youtube-nocookie\.com)/)) {
479 apiProvider = elementorFrontend.utils.youtube;
480 } else {
481 return;
482 }
483 $videoElement = $('<iframe>', {
484 allowfullscreen: 1
485 });
486 if ('yes' === options.autoplay) {
487 $videoElement.attr('allow', 'autoplay');
488 $videoElement.attr('src', apiProvider.getAutoplayURL(options.url));
489 } else {
490 $videoElement.attr('src', options.url);
491 }
492 }
493 const classes = this.getSettings('classes'),
494 aspectRatio = this.getRatioDictionry(this.getSettings('modalOptions.videoAspectRatio')),
495 $videoContainer = $('<div>', {
496 class: `${classes.videoContainer} ${classes.preventClose}`
497 }),
498 $videoWrapper = $('<div>', {
499 class: `${classes.videoWrapper} elementor-video-${this.getRatioType(aspectRatio)}`,
500 style: '--video-aspect-ratio: ' + aspectRatio
501 });
502 $videoWrapper.append($videoElement);
503 $videoContainer.append($videoWrapper);
504 const modal = this.getModal();
505 modal.setMessage($videoContainer);
506 const onHideMethod = modal.onHide;
507 modal.onHide = function () {
508 onHideMethod();
509 this.$buttons = jQuery();
510 this.focusedButton = null;
511 modal.getElements('message').removeClass('elementor-video-wrapper');
512 };
513 },
514 getRatioDictionry(ratio) {
515 const aspectRatiosDictionary = {
516 219: 2.33333,
517 // 21/9
518 169: 1.77777,
519 // 16/9
520 43: 1.33333,
521 // 4/3
522 32: 1.5,
523 // 3/2
524 11: 1,
525 // 1/1
526 916: 0.5625 // 9/16
527 };
528 return aspectRatiosDictionary[ratio] || ratio;
529 },
530 getRatioType(ratio) {
531 let type = '';
532 if (1 === ratio) {
533 type = 'square';
534 } else {
535 type = ratio < 1 ? 'portrait' : 'landscape';
536 }
537 return type;
538 },
539 getShareLinks() {
540 const {
541 i18n
542 } = elementorFrontend.config,
543 socialNetworks = {
544 facebook: {
545 label: i18n.shareOnFacebook,
546 iconElement: _eIcons.facebook
547 },
548 twitter: {
549 label: i18n.shareOnTwitter,
550 iconElement: _eIcons.twitter
551 },
552 pinterest: {
553 label: i18n.pinIt,
554 iconElement: _eIcons.pinterest
555 }
556 },
557 $ = jQuery,
558 classes = this.getSettings('classes'),
559 selectors = this.getSettings('selectors'),
560 $linkList = $('<div>', {
561 class: classes.slideshow.shareLinks
562 }),
563 $activeSlide = this.getSlide('active'),
564 $image = $activeSlide.find(selectors.image),
565 videoUrl = $activeSlide.data('elementor-slideshow-video');
566 let itemUrl;
567 if (videoUrl) {
568 itemUrl = videoUrl;
569 } else {
570 itemUrl = $image.attr('src');
571 }
572 $.each(socialNetworks, (key, data) => {
573 const networkLabel = data.label,
574 $link = $('<a>', {
575 href: this.createShareLink(key, itemUrl, $activeSlide.attr('data-e-action-hash')),
576 target: '_blank'
577 }).text(networkLabel),
578 $socialNetworkIconElement = this.isFontIconSvgExperiment ? $(data.iconElement.element) : $('<i>', {
579 class: 'eicon-' + key,
580 'aria-hidden': 'true'
581 });
582 $link.prepend($socialNetworkIconElement);
583 $linkList.append($link);
584 });
585 if (!videoUrl) {
586 const $downloadIcon = this.isFontIconSvgExperiment ? $(_eIcons.downloadBold.element) : $('<i>', {
587 class: 'eicon-download-bold'
588 });
589 $downloadIcon.attr('aria-label', i18n.download);
590 $linkList.append($('<a>', {
591 href: itemUrl,
592 download: ''
593 }).text(i18n.downloadImage).prepend($downloadIcon));
594 }
595 return $linkList;
596 },
597 createShareLink(networkName, itemUrl, hash = null) {
598 const options = {};
599 if ('pinterest' === networkName) {
600 options.image = encodeURIComponent(itemUrl);
601 } else {
602 options.url = encodeURIComponent(location.href.replace(/#.*/, '') + hash);
603 }
604 return ShareLink.getNetworkLink(networkName, options);
605 },
606 getSlideshowHeader() {
607 const {
608 i18n
609 } = elementorFrontend.config,
610 $ = jQuery,
611 showCounter = 'yes' === elementorFrontend.getKitSettings('lightbox_enable_counter'),
612 showFullscreen = 'yes' === elementorFrontend.getKitSettings('lightbox_enable_fullscreen'),
613 showZoom = 'yes' === elementorFrontend.getKitSettings('lightbox_enable_zoom'),
614 showShare = 'yes' === elementorFrontend.getKitSettings('lightbox_enable_share'),
615 classes = this.getSettings('classes'),
616 slideshowClasses = classes.slideshow,
617 elements = this.elements;
618 if (!(showCounter || showFullscreen || showZoom || showShare)) {
619 return;
620 }
621 elements.$header = $('<header>', {
622 class: slideshowClasses.header + ' ' + classes.preventClose
623 });
624 if (showShare) {
625 const iconElement = this.isFontIconSvgExperiment ? _eIcons.shareArrow.element : '<i>';
626 elements.$iconShare = $(iconElement, {
627 class: slideshowClasses.iconShare,
628 role: 'button',
629 tabindex: 0,
630 'aria-label': i18n.share,
631 'aria-expanded': false
632 }).append($('<span>'));
633 const $shareLinks = $('<div>');
634 $shareLinks.on('click', e => {
635 e.stopPropagation();
636 });
637 elements.$shareMenu = $('<div>', {
638 class: slideshowClasses.shareMenu
639 }).append($shareLinks);
640 elements.$iconShare.add(elements.$shareMenu).on('click', this.toggleShareMenu);
641 elements.$header.append(elements.$iconShare, elements.$shareMenu);
642 this.$buttons = this.$buttons.add(elements.$iconShare);
643 }
644 if (showZoom) {
645 const iconElement = this.isFontIconSvgExperiment ? _eIcons.zoomInBold.element : '<i>',
646 showZoomElements = [],
647 showZoomAttrs = {
648 role: 'switch',
649 tabindex: 0,
650 'aria-checked': false,
651 'aria-label': i18n.zoom
652 },
653 zoomAttrs = {
654 ...showZoomAttrs
655 };
656 if (!this.isFontIconSvgExperiment) {
657 zoomAttrs.class = slideshowClasses.iconZoomIn;
658 }
659 elements.$iconZoom = $(iconElement).attr(zoomAttrs).on('click', this.toggleZoomMode);
660 showZoomElements.push(elements.$iconZoom);
661 if (this.isFontIconSvgExperiment) {
662 elements.$iconZoomOut = $(_eIcons.zoomOutBold.element).attr(showZoomAttrs).addClass(classes.hidden).on('click', this.toggleZoomMode);
663 showZoomElements.push(elements.$iconZoomOut);
664 }
665 elements.$header.append(showZoomElements);
666 this.$buttons = this.$buttons.add(showZoomElements);
667 }
668 if (showFullscreen) {
669 const iconElement = this.isFontIconSvgExperiment ? _eIcons.frameExpand.element : '<i>',
670 fullScreenElements = [],
671 fullScreenAttrs = {
672 role: 'switch',
673 tabindex: 0,
674 'aria-checked': false,
675 'aria-label': i18n.fullscreen
676 },
677 expandAttrs = {
678 ...fullScreenAttrs
679 };
680
681 // Only if the experiment is not active, we use the class-name in order to render the icon.
682 if (!this.isFontIconSvgExperiment) {
683 expandAttrs.class = slideshowClasses.iconExpand;
684 }
685 elements.$iconExpand = $(iconElement).append($('<span>'), $('<span>')).attr(expandAttrs).on('click', this.toggleFullscreen);
686 fullScreenElements.push(elements.$iconExpand);
687 if (this.isFontIconSvgExperiment) {
688 elements.$iconMinimize = $(_eIcons.frameMinimize.element).attr(fullScreenAttrs).addClass(classes.hidden).on('click', this.toggleFullscreen);
689 fullScreenElements.push(elements.$iconMinimize);
690 }
691 elements.$header.append(fullScreenElements);
692 this.$buttons = this.$buttons.add(fullScreenElements);
693 }
694 if (showCounter) {
695 elements.$counter = $('<span>', {
696 class: slideshowClasses.counter
697 });
698 elements.$header.append(elements.$counter);
699 }
700 return elements.$header;
701 },
702 toggleFullscreen() {
703 if (_screenfull.default.isFullscreen) {
704 this.deactivateFullscreen();
705 } else if (_screenfull.default.isEnabled) {
706 this.activateFullscreen();
707 }
708 },
709 toggleZoomMode() {
710 if (1 !== this.swiper.zoom.scale) {
711 this.deactivateZoom();
712 } else {
713 this.activateZoom();
714 }
715 },
716 toggleShareMenu() {
717 if (this.shareMode) {
718 this.deactivateShareMode();
719 } else {
720 this.elements.$shareMenu.html(this.getShareLinks());
721 this.activateShareMode();
722 }
723 },
724 activateShareMode() {
725 const classes = this.getSettings('classes');
726 this.elements.$container.addClass(classes.slideshow.shareMode);
727 this.elements.$iconShare.attr('aria-expanded', true);
728
729 // Prevent swiper interactions while in share mode
730 this.swiper.detachEvents();
731
732 // Temporarily replace tabbable buttons with share-menu items
733 this.$originalButtons = this.$buttons;
734 this.$buttons = this.elements.$iconShare.add(this.elements.$shareMenu.find('a'));
735 this.shareMode = true;
736 },
737 deactivateShareMode() {
738 const classes = this.getSettings('classes');
739 this.elements.$container.removeClass(classes.slideshow.shareMode);
740 this.elements.$iconShare.attr('aria-expanded', false);
741 this.swiper.attachEvents();
742 this.$buttons = this.$originalButtons;
743 this.shareMode = false;
744 },
745 activateFullscreen() {
746 const classes = this.getSettings('classes');
747 _screenfull.default.request(this.elements.$container.parents('.dialog-widget')[0]);
748 if (this.isFontIconSvgExperiment) {
749 this.elements.$iconExpand.addClass(classes.hidden).attr('aria-checked', 'false');
750 this.elements.$iconMinimize.removeClass(classes.hidden).attr('aria-checked', 'true');
751 } else {
752 this.elements.$iconExpand.removeClass(classes.slideshow.iconExpand).addClass(classes.slideshow.iconShrink).attr('aria-checked', 'true');
753 }
754 this.elements.$container.addClass(classes.slideshow.fullscreenMode);
755 },
756 deactivateFullscreen() {
757 const classes = this.getSettings('classes');
758 _screenfull.default.exit();
759 if (this.isFontIconSvgExperiment) {
760 this.elements.$iconExpand.removeClass(classes.hidden).attr('aria-checked', 'true');
761 this.elements.$iconMinimize.addClass(classes.hidden).attr('aria-checked', 'false');
762 } else {
763 this.elements.$iconExpand.removeClass(classes.slideshow.iconShrink).addClass(classes.slideshow.iconExpand).attr('aria-checked', 'false');
764 }
765 this.elements.$container.removeClass(classes.slideshow.fullscreenMode);
766 },
767 activateZoom() {
768 const swiper = this.swiper,
769 elements = this.elements,
770 classes = this.getSettings('classes');
771 swiper.zoom.in();
772 swiper.allowSlideNext = false;
773 swiper.allowSlidePrev = false;
774 swiper.allowTouchMove = false;
775 elements.$container.addClass(classes.slideshow.zoomMode);
776 if (this.isFontIconSvgExperiment) {
777 elements.$iconZoom.addClass(classes.hidden).attr('aria-checked', 'false');
778 elements.$iconZoomOut.removeClass(classes.hidden).attr('aria-checked', 'true');
779 } else {
780 elements.$iconZoom.removeClass(classes.slideshow.iconZoomIn).addClass(classes.slideshow.iconZoomOut);
781 }
782 },
783 deactivateZoom() {
784 const swiper = this.swiper,
785 elements = this.elements,
786 classes = this.getSettings('classes');
787 swiper.zoom.out();
788 swiper.allowSlideNext = true;
789 swiper.allowSlidePrev = true;
790 swiper.allowTouchMove = true;
791 elements.$container.removeClass(classes.slideshow.zoomMode);
792 if (this.isFontIconSvgExperiment) {
793 elements.$iconZoom.removeClass(classes.hidden).attr('aria-checked', 'true');
794 elements.$iconZoomOut.addClass(classes.hidden).attr('aria-checked', 'false');
795 } else {
796 elements.$iconZoom.removeClass(classes.slideshow.iconZoomOut).addClass(classes.slideshow.iconZoomIn);
797 }
798 },
799 getSlideshowFooter() {
800 const $ = jQuery,
801 classes = this.getSettings('classes'),
802 $footer = $('<footer>', {
803 class: classes.slideshow.footer + ' ' + classes.preventClose
804 }),
805 $title = $('<div>', {
806 class: classes.slideshow.title
807 }),
808 $description = $('<div>', {
809 class: classes.slideshow.description
810 });
811 $footer.append($title, $description);
812 return $footer;
813 },
814 setSlideshowContent(options) {
815 const {
816 i18n
817 } = elementorFrontend.config,
818 $ = jQuery,
819 isSingleSlide = 1 === options.slides.length,
820 hasTitle = '' !== elementorFrontend.getKitSettings('lightbox_title_src'),
821 hasDescription = '' !== elementorFrontend.getKitSettings('lightbox_description_src'),
822 showFooter = hasTitle || hasDescription,
823 classes = this.getSettings('classes'),
824 slideshowClasses = classes.slideshow,
825 $container = $('<div>', {
826 class: slideshowClasses.container
827 }),
828 $slidesWrapper = $('<div>', {
829 class: slideshowClasses.slidesWrapper
830 });
831 let $prevButton, $nextButton;
832 options.slides.forEach(slide => {
833 let slideClass = slideshowClasses.slide + ' ' + classes.item;
834 if (slide.video) {
835 slideClass += ' ' + classes.video;
836 }
837 const $slide = $('<div>', {
838 class: slideClass
839 });
840 if (slide.video) {
841 $slide.attr('data-elementor-slideshow-video', slide.video);
842 const playVideoLoadingElement = this.isFontIconSvgExperiment ? _eIcons.loading.element : '<i>',
843 $playIcon = $('<div>', {
844 class: classes.playButton
845 }).html($(playVideoLoadingElement).attr('aria-label', i18n.playVideo).addClass(classes.playButtonIcon));
846 $slide.append($playIcon);
847 } else {
848 const $zoomContainer = $('<div>', {
849 class: 'swiper-zoom-container'
850 }),
851 $slidePlaceholder = $('<div class="swiper-lazy-preloader"></div>'),
852 imageAttributes = {
853 'data-src': slide.image,
854 class: classes.image + ' ' + classes.preventClose + ' swiper-lazy'
855 };
856 if (slide.title) {
857 imageAttributes['data-title'] = slide.title;
858 imageAttributes.alt = slide.title;
859 }
860 if (slide.description) {
861 imageAttributes['data-description'] = slide.description;
862 imageAttributes.alt += ' - ' + slide.description;
863 }
864 const $slideImage = $('<img>', imageAttributes);
865 $zoomContainer.append([$slideImage, $slidePlaceholder]);
866 $slide.append($zoomContainer);
867 }
868 if (slide.hash) {
869 $slide.attr('data-e-action-hash', slide.hash);
870 }
871 $slidesWrapper.append($slide);
872 });
873 this.elements.$container = $container;
874 this.elements.$header = this.getSlideshowHeader();
875 $container.prepend(this.elements.$header).append($slidesWrapper);
876 if (!isSingleSlide) {
877 const $prevButtonIcon = this.isFontIconSvgExperiment ? $(_eIcons.chevronLeft.element) : $('<i>', {
878 class: slideshowClasses.prevButtonIcon,
879 'aria-hidden': 'true'
880 }),
881 $nextButtonIcon = this.isFontIconSvgExperiment ? $(_eIcons.chevronRight.element) : $('<i>', {
882 class: slideshowClasses.nextButtonIcon,
883 'aria-hidden': 'true'
884 }),
885 $prevButtonLabel = $('<span>', {
886 class: 'screen-reader-text'
887 }).html(i18n.previous),
888 $nextButtonLabel = $('<span>', {
889 class: 'screen-reader-text'
890 }).html(i18n.next);
891 $prevButton = $('<div>', {
892 class: slideshowClasses.prevButton + ' ' + classes.preventClose
893 }).append($prevButtonIcon, $prevButtonLabel);
894 $nextButton = $('<div>', {
895 class: slideshowClasses.nextButton + ' ' + classes.preventClose
896 }).append($nextButtonIcon, $nextButtonLabel);
897 $container.append($nextButton, $prevButton);
898 this.$buttons = this.$buttons.add($nextButton).add($prevButton);
899 }
900 if (showFooter) {
901 this.elements.$footer = this.getSlideshowFooter();
902 $container.append(this.elements.$footer);
903 }
904 this.setSettings('hideUiTimeout', '');
905 $container.on('click mousemove keypress', this.showLightboxUi);
906 const modal = this.getModal();
907 modal.setMessage($container);
908 const onShowMethod = modal.onShow;
909 modal.onShow = async () => {
910 onShowMethod();
911 const swiperOptions = {
912 pagination: {
913 el: '.' + slideshowClasses.counter,
914 type: 'fraction'
915 },
916 on: {
917 slideChangeTransitionEnd: this.onSlideChange
918 },
919 lazy: {
920 loadPrevNext: true
921 },
922 zoom: true,
923 spaceBetween: 100,
924 grabCursor: true,
925 runCallbacksOnInit: false,
926 loop: true,
927 keyboard: true,
928 handleElementorBreakpoints: true
929 };
930 if (!isSingleSlide) {
931 swiperOptions.navigation = {
932 prevEl: $prevButton[0],
933 nextEl: $nextButton[0]
934 };
935 }
936 if (options.swiper) {
937 $.extend(swiperOptions, options.swiper);
938 }
939 const Swiper = elementorFrontend.utils.swiper;
940 this.swiper = await new Swiper($container, swiperOptions);
941
942 // Expose the swiper instance in the frontend
943 $container.data('swiper', this.swiper);
944 this.playSlideVideo();
945 if (showFooter) {
946 this.updateFooterText();
947 }
948 this.bindHotKeys();
949 this.makeButtonsAccessible();
950 };
951 },
952 makeButtonsAccessible() {
953 this.$buttons.attr('tabindex', 0).on('keypress', event => {
954 const ENTER_KEY = 13,
955 SPACE_KEY = 32;
956 if (ENTER_KEY === event.which || SPACE_KEY === event.which) {
957 jQuery(event.currentTarget).trigger('click');
958 }
959 });
960 },
961 showLightboxUi() {
962 const slideshowClasses = this.getSettings('classes').slideshow;
963 this.elements.$container.removeClass(slideshowClasses.hideUiVisibility);
964 clearTimeout(this.getSettings('hideUiTimeout'));
965 this.setSettings('hideUiTimeout', setTimeout(() => {
966 if (!this.shareMode) {
967 this.elements.$container.addClass(slideshowClasses.hideUiVisibility);
968 }
969 }, 3500));
970 },
971 bindHotKeys() {
972 this.getModal().getElements('window').on('keydown', this.activeKeyDown);
973 },
974 unbindHotKeys() {
975 this.getModal().getElements('window').off('keydown', this.activeKeyDown);
976 },
977 activeKeyDown(event) {
978 this.showLightboxUi();
979 const TAB_KEY = 9;
980 if (event.which === TAB_KEY) {
981 const $buttons = this.$buttons;
982 let focusedButton,
983 isFirst = false,
984 isLast = false;
985 $buttons.each(index => {
986 const item = $buttons[index];
987 if (jQuery(item).is(':focus')) {
988 focusedButton = item;
989 isFirst = 0 === index;
990 isLast = $buttons.length - 1 === index;
991 return false;
992 }
993 });
994 if (event.shiftKey) {
995 if (isFirst) {
996 event.preventDefault();
997 $buttons.last().trigger('focus');
998 }
999 } else if (isLast || !focusedButton) {
1000 event.preventDefault();
1001 $buttons.first().trigger('focus');
1002 }
1003 }
1004 },
1005 getSlide(slideState) {
1006 return jQuery(this.swiper.slides).filter(this.getSettings('selectors.slideshow.' + slideState + 'Slide'));
1007 },
1008 updateFooterText() {
1009 if (!this.elements.$footer) {
1010 return;
1011 }
1012 const classes = this.getSettings('classes'),
1013 $activeSlide = this.getSlide('active'),
1014 $image = $activeSlide.find('.elementor-lightbox-image'),
1015 titleText = $image.data('title'),
1016 descriptionText = $image.data('description'),
1017 $title = this.elements.$footer.find('.' + classes.slideshow.title),
1018 $description = this.elements.$footer.find('.' + classes.slideshow.description);
1019 $title.text(titleText || '');
1020 $description.text(descriptionText || '');
1021 },
1022 playSlideVideo() {
1023 const $activeSlide = this.getSlide('active'),
1024 videoURL = $activeSlide.data('elementor-slideshow-video');
1025 if (!videoURL) {
1026 return;
1027 }
1028 const classes = this.getSettings('classes'),
1029 aspectRatio = this.getRatioDictionry(this.getSettings('modalOptions.videoAspectRatio')),
1030 $videoContainer = jQuery('<div>', {
1031 class: classes.videoContainer + ' ' + classes.invisible
1032 }),
1033 $videoWrapper = jQuery('<div>', {
1034 class: `${classes.videoWrapper} elementor-video-${this.getRatioType(aspectRatio)}`,
1035 style: '--video-aspect-ratio: ' + aspectRatio
1036 }),
1037 $playIcon = $activeSlide.children('.' + classes.playButton);
1038 let videoType, apiProvider;
1039 $videoContainer.append($videoWrapper);
1040 $activeSlide.append($videoContainer);
1041 if (-1 !== videoURL.indexOf('vimeo.com')) {
1042 videoType = 'vimeo';
1043 apiProvider = elementorFrontend.utils.vimeo;
1044 } else if (videoURL.match(/^(?:https?:\/\/)?(?:www\.)?(?:m\.)?(?:youtu\.be\/|youtube\.com)/)) {
1045 videoType = 'youtube';
1046 apiProvider = elementorFrontend.utils.youtube;
1047 }
1048 const videoID = apiProvider.getVideoIDFromURL(videoURL);
1049 apiProvider.onApiReady(apiObject => {
1050 if ('youtube' === videoType) {
1051 this.prepareYTVideo(apiObject, videoID, $videoContainer, $videoWrapper, $playIcon);
1052 } else if ('vimeo' === videoType) {
1053 this.prepareVimeoVideo(apiObject, videoURL, $videoContainer, $videoWrapper, $playIcon);
1054 }
1055 });
1056 $playIcon.addClass(classes.playing).removeClass(classes.hidden);
1057 },
1058 prepareYTVideo(YT, videoID, $videoContainer, $videoWrapper, $playIcon) {
1059 const classes = this.getSettings('classes'),
1060 $videoPlaceholderElement = jQuery('<div>');
1061 let startStateCode = YT.PlayerState.PLAYING;
1062 $videoWrapper.append($videoPlaceholderElement);
1063
1064 // Since version 67, Chrome doesn't fire the `PLAYING` state at start time
1065 if (window.chrome) {
1066 startStateCode = YT.PlayerState.UNSTARTED;
1067 }
1068 $videoContainer.addClass('elementor-loading' + ' ' + classes.invisible);
1069 this.player = new YT.Player($videoPlaceholderElement[0], {
1070 videoId: videoID,
1071 events: {
1072 onReady: () => {
1073 $playIcon.addClass(classes.hidden);
1074 $videoContainer.removeClass(classes.invisible);
1075 this.player.playVideo();
1076 },
1077 onStateChange: event => {
1078 if (event.data === startStateCode) {
1079 $videoContainer.removeClass('elementor-loading' + ' ' + classes.invisible);
1080 }
1081 }
1082 },
1083 playerVars: {
1084 controls: 0,
1085 rel: 0
1086 }
1087 });
1088 },
1089 prepareVimeoVideo(Vimeo, videoURL, $videoContainer, $videoWrapper, $playIcon) {
1090 const classes = this.getSettings('classes'),
1091 vimeoOptions = {
1092 url: videoURL,
1093 autoplay: true,
1094 transparent: false,
1095 playsinline: false,
1096 cc_load_policy: false
1097 };
1098 this.player = new Vimeo.Player($videoWrapper, vimeoOptions);
1099 this.player.ready().then(() => {
1100 $playIcon.addClass(classes.hidden);
1101 $videoContainer.removeClass(classes.invisible);
1102 });
1103 },
1104 setEntranceAnimation(animation) {
1105 animation = animation || elementorFrontend.getCurrentDeviceSetting(this.getSettings('modalOptions'), 'entranceAnimation');
1106 const $widgetMessage = this.getModal().getElements('message');
1107 if (this.oldAnimation) {
1108 $widgetMessage.removeClass(this.oldAnimation);
1109 }
1110 this.oldAnimation = animation;
1111 if (animation) {
1112 $widgetMessage.addClass('animated ' + animation);
1113 }
1114 },
1115 openSlideshow(slideshowID, initialSlideURL) {
1116 const $allSlideshowLinks = jQuery(this.getSettings('selectors.links')).filter((index, element) => {
1117 const $element = jQuery(element);
1118 return slideshowID === element.dataset.elementorLightboxSlideshow && !$element.parent('.swiper-slide-duplicate').length && !$element.parents('.slick-cloned').length;
1119 });
1120 const slides = [];
1121 let initialSlideIndex = 0;
1122 $allSlideshowLinks.each(function () {
1123 const slideVideo = this.dataset.elementorLightboxVideo;
1124 let slideIndex = this.dataset.elementorLightboxIndex;
1125 if (undefined === slideIndex) {
1126 slideIndex = $allSlideshowLinks.index(this);
1127 }
1128 if (initialSlideURL === this.href || slideVideo && initialSlideURL === slideVideo) {
1129 initialSlideIndex = slideIndex;
1130 }
1131 const slideData = {
1132 image: this.href,
1133 index: slideIndex,
1134 title: this.dataset.elementorLightboxTitle,
1135 description: this.dataset.elementorLightboxDescription,
1136 hash: this.getAttribute('data-e-action-hash')
1137 };
1138 if (slideVideo) {
1139 slideData.video = slideVideo;
1140 }
1141 slides.push(slideData);
1142 });
1143 slides.sort((a, b) => a.index - b.index);
1144 this.showModal({
1145 type: 'slideshow',
1146 id: slideshowID,
1147 modalOptions: {
1148 id: 'elementor-lightbox-slideshow-' + slideshowID
1149 },
1150 slideshow: {
1151 slides,
1152 swiper: {
1153 initialSlide: +initialSlideIndex
1154 }
1155 }
1156 });
1157 },
1158 onSlideChange() {
1159 this.getSlide('prev').add(this.getSlide('next')).add(this.getSlide('active')).find('.' + this.getSettings('classes.videoWrapper')).remove();
1160 this.playSlideVideo();
1161 this.updateFooterText();
1162 }
1163 });
1164
1165 /***/ }),
1166
1167 /***/ "../assets/dev/js/frontend/utils/lightbox/screenfull.js":
1168 /*!**************************************************************!*\
1169 !*** ../assets/dev/js/frontend/utils/lightbox/screenfull.js ***!
1170 \**************************************************************/
1171 /***/ ((module) => {
1172
1173
1174
1175 (function () {
1176 'use strict';
1177
1178 var document = typeof window !== 'undefined' && typeof window.document !== 'undefined' ? window.document : {};
1179 var isCommonjs = true && module.exports;
1180 var fn = function () {
1181 var val;
1182 var fnMap = [['requestFullscreen', 'exitFullscreen', 'fullscreenElement', 'fullscreenEnabled', 'fullscreenchange', 'fullscreenerror'],
1183 // New WebKit
1184 ['webkitRequestFullscreen', 'webkitExitFullscreen', 'webkitFullscreenElement', 'webkitFullscreenEnabled', 'webkitfullscreenchange', 'webkitfullscreenerror'],
1185 // Old WebKit
1186 ['webkitRequestFullScreen', 'webkitCancelFullScreen', 'webkitCurrentFullScreenElement', 'webkitCancelFullScreen', 'webkitfullscreenchange', 'webkitfullscreenerror'], ['mozRequestFullScreen', 'mozCancelFullScreen', 'mozFullScreenElement', 'mozFullScreenEnabled', 'mozfullscreenchange', 'mozfullscreenerror'], ['msRequestFullscreen', 'msExitFullscreen', 'msFullscreenElement', 'msFullscreenEnabled', 'MSFullscreenChange', 'MSFullscreenError']];
1187 var i = 0;
1188 var l = fnMap.length;
1189 var ret = {};
1190 for (; i < l; i++) {
1191 val = fnMap[i];
1192 if (val && val[1] in document) {
1193 var valLength = val.length;
1194 for (i = 0; i < valLength; i++) {
1195 ret[fnMap[0][i]] = val[i];
1196 }
1197 return ret;
1198 }
1199 }
1200 return false;
1201 }();
1202 var eventNameMap = {
1203 change: fn.fullscreenchange,
1204 error: fn.fullscreenerror
1205 };
1206 var screenfull = {
1207 request(element) {
1208 return new Promise(function (resolve, reject) {
1209 var onFullScreenEntered = function () {
1210 this.off('change', onFullScreenEntered);
1211 resolve();
1212 }.bind(this);
1213 this.on('change', onFullScreenEntered);
1214 element = element || document.documentElement;
1215 Promise.resolve(element[fn.requestFullscreen]()).catch(reject);
1216 }.bind(this));
1217 },
1218 exit() {
1219 return new Promise(function (resolve, reject) {
1220 if (!this.isFullscreen) {
1221 resolve();
1222 return;
1223 }
1224 var onFullScreenExit = function () {
1225 this.off('change', onFullScreenExit);
1226 resolve();
1227 }.bind(this);
1228 this.on('change', onFullScreenExit);
1229 Promise.resolve(document[fn.exitFullscreen]()).catch(reject);
1230 }.bind(this));
1231 },
1232 toggle(element) {
1233 return this.isFullscreen ? this.exit() : this.request(element);
1234 },
1235 onchange(callback) {
1236 this.on('change', callback);
1237 },
1238 onerror(callback) {
1239 this.on('error', callback);
1240 },
1241 on(event, callback) {
1242 var eventName = eventNameMap[event];
1243 if (eventName) {
1244 document.addEventListener(eventName, callback, false);
1245 }
1246 },
1247 off(event, callback) {
1248 var eventName = eventNameMap[event];
1249 if (eventName) {
1250 document.removeEventListener(eventName, callback, false);
1251 }
1252 },
1253 raw: fn
1254 };
1255 if (!fn) {
1256 if (isCommonjs) {
1257 module.exports = {
1258 isEnabled: false
1259 };
1260 } else {
1261 window.screenfull = {
1262 isEnabled: false
1263 };
1264 }
1265 return;
1266 }
1267 Object.defineProperties(screenfull, {
1268 isFullscreen: {
1269 get() {
1270 return Boolean(document[fn.fullscreenElement]);
1271 }
1272 },
1273 element: {
1274 enumerable: true,
1275 get() {
1276 return document[fn.fullscreenElement];
1277 }
1278 },
1279 isEnabled: {
1280 enumerable: true,
1281 get() {
1282 // Coerce to boolean in case of old WebKit
1283 return Boolean(document[fn.fullscreenEnabled]);
1284 }
1285 }
1286 });
1287 if (isCommonjs) {
1288 module.exports = screenfull;
1289 } else {
1290 window.screenfull = screenfull;
1291 }
1292 })();
1293
1294 /***/ })
1295
1296 }]);
1297 //# sourceMappingURL=lightbox.a1f44406e887981f48c7.bundle.js.map