From c962aa5825bfcd1178293db9c368ae1794cd03ed Mon Sep 17 00:00:00 2001 From: Amr Wagdy Date: Wed, 30 Oct 2024 01:03:45 +0300 Subject: [PATCH] Updates --- assets/index-CgRAm56E.css | 1 - bundle49ZK8EAw.js | 9 - bundle85636594fb2f2f9d060c.js | 3 + bundle85636594fb2f2f9d060c.js.LICENSE.txt | 1 + bundle85636594fb2f2f9d060c.js.map | 1 + index.html | 2 +- main.css | 370 ++++++++++++++++++++++ main.css.map | 1 + 8 files changed, 377 insertions(+), 11 deletions(-) delete mode 100644 assets/index-CgRAm56E.css delete mode 100644 bundle49ZK8EAw.js create mode 100644 bundle85636594fb2f2f9d060c.js create mode 100644 bundle85636594fb2f2f9d060c.js.LICENSE.txt create mode 100644 bundle85636594fb2f2f9d060c.js.map create mode 100644 main.css create mode 100644 main.css.map diff --git a/assets/index-CgRAm56E.css b/assets/index-CgRAm56E.css deleted file mode 100644 index 3230b2f..0000000 --- a/assets/index-CgRAm56E.css +++ /dev/null @@ -1 +0,0 @@ -*{margin:0;padding:0;box-sizing:border-box}body{font-family:Inter;overflow-x:hidden}#images-y{display:none}.cloudimage-360 canvas,#demo-generator canvas,#gurkha-suv canvas{overflow:hidden;border-radius:6px}.container-fluid{max-width:1170px;margin:0 auto}.content-wrapper .header{display:flex;justify-content:space-between;padding:23.5px 24.5px 0}.content-wrapper .header .header-logo{display:flex;align-items:center;column-gap:16px}.content-wrapper .header-logo .cloud-img-title{padding-left:16px;border-left:1px solid #b8c4d0;text-decoration:none;font-size:20px;line-height:32px;font-weight:500;color:#203254}.content-wrapper .header .navbar{display:flex;align-items:center;column-gap:8px}.content-wrapper .header .navbar a{text-decoration:none;font-size:14px;line-height:16.94px;color:#5d6d7e}.content-wrapper .navbar .stars-button{display:flex;align-items:center;border:1px solid #5d6d7e;padding:9.5px 16px;border-radius:4px}.content-wrapper .navbar .github-icons{padding-right:4px}.content-wrapper .navbar .git-button{display:flex;align-items:center;border:1px solid #5d6d7e;padding:11px 14px;border-radius:4px}.content-wrapper .content{display:flex;flex-direction:column;align-items:center;margin-top:57.5px;padding:0 25px;box-sizing:content-box;position:relative}.content-wrapper .content h1{font-size:48px;line-height:58px;font-weight:700;color:#203254;text-align:center;max-width:971px}.content-wrapper .content h1 span{color:#3daba4}.content-wrapper .content .content-text{font-size:20px;line-height:30px;font-weight:400;color:#4d5c74;margin-top:8px;max-width:775px;text-align:center}.content-wrapper .content .github-sandbox-buttons-wrapper{display:flex;flex-wrap:wrap;gap:16px;margin-top:24px}.content-wrapper .github-sandbox-buttons-wrapper .github-button{display:flex;align-items:center;height:48px;padding:8px 24.4px;background-color:#3daba4;border-radius:4px;border:none;text-decoration:none;font-size:16px;line-height:32px;color:#fff;font-weight:700;text-align:center;white-space:nowrap}.content-wrapper .github-sandbox-buttons-wrapper .code-sand-box-button{display:flex;align-items:center;height:48px;padding:8px 23.4px;border-radius:4px;border:1px solid #3daba4;background-color:#fff;cursor:pointer;text-decoration:none;color:#3daba4;font-weight:700;font-size:16px;text-align:center}.content-wrapper .content .car-image{margin-top:32px;width:100%}.content-wrapper .content .car-image .content-text{margin:16px auto 0;text-align:center;font-size:16px;line-height:24px;max-width:715px;color:#4d5c74}.cloudimage-360-modal-more-details{color:#fff7f4;background-color:#db5e2e}.cloudimage-360-modal-more-details:hover{background-color:#a53e16;color:#fff7f4}.cloudimage-360-modal-description{font-size:11px}.popup-link a{font-size:11px;line-height:16px;color:#0c6dc7;font-weight:700}.cloudimage-360-carousel-dot.active-dot{background-color:#db5e2e}.content-wrapper .content .customer-logos{width:100%;display:grid;grid-template-columns:repeat(auto-fill,minmax(138px,1fr));align-items:center;grid-gap:60px;margin-top:118.27px}.content-wrapper .content .cyan-blur-circle{position:absolute;width:255px;height:255px;right:0;top:30px;background:#aadbff;filter:blur(120px);z-index:-1}.content-wrapper .content .blue-blur-circle{position:absolute;width:418px;height:254px;left:-283px;top:546px;background:#90eee7;filter:blur(150px);z-index:-1}.content-wrapper .customer-logos img{max-width:100%;margin:0 auto}.content-wrapper .customer-logos .vivo-logo{width:152px}.content-wrapper .customer-logos .jawa-logo{width:124.3px}.content-wrapper .customer-logos .sennheiser-logo{width:222.57px}.content-wrapper .customer-logos .geelly-logo{width:111px}.content-wrapper .customer-logos .yamaha-logo{width:183.74px}.content-wrapper .customer-logos .force-logo-wrapper{display:flex;flex-direction:column;row-gap:3.85px;align-items:center}.content-wrapper .customer-logos .force-logo{width:101.16px}.gallery-section{display:flex;flex-direction:column;align-items:center;margin-top:127px}.gallery-section .gallery-title{text-align:center}.gallery-section .gallery-title h2{font-size:40px;line-height:54px;font-weight:600;color:#203254}.gallery-section .gallery-title p{font-size:20px;line-height:30px;font-weight:400;color:#4d5c74}.gallery-section .gallery-content{display:grid;grid-template-columns:repeat(auto-fill,minmax(350px,1fr));width:100%;align-items:center;margin-top:32px;gap:29px;justify-items:center}.gallery-section .gallery-content p{font-size:20px;line-height:30px;color:#4d5c74;font-weight:500}.gallery-section .gallery-content .motorcycle{display:flex;flex-direction:column;width:447.5px;align-items:center}.gallery-section .gallery-content .vivo-mobile{display:flex;flex-direction:column;align-items:center;width:261.5px}.gallery-section .gallery-content .geely-car{display:flex;flex-direction:column;align-items:center;width:403px}.demo-usage{background-color:#f2f7fa;margin-top:73px;padding:60px 25px 91px}.demo-usage .usage-title{display:flex;flex-direction:column;align-items:center;text-align:center;max-width:773px;margin:0 auto}.demo-usage .usage-title h2{font-size:40px;line-height:54px;font-weight:600;color:#203254}.demo-usage .usage-title p{font-size:20px;line-height:30px;font-weight:400;color:#4d5c74}.demo-usage .demo-usage-wrapper .demo-usage-content{display:grid;grid-template-columns:repeat(2,1fr);justify-content:center;margin-top:32px;column-gap:30px;flex-wrap:wrap}.demo-usage .demo-usage-wrapper .earbuds{margin-top:32px;width:569.89px}.demo-usage .demo-usage-wrapper .control-buttons{visibility:hidden}.demo-usage .earbuds .copy-button-wrapper{position:relative}.demo-usage .earbuds .copy-button{position:absolute;display:flex;column-gap:4px;right:32px;top:59px;align-items:center;cursor:pointer}.demo-usage .earbuds .copy-button p{font-size:14px;line-height:17px;color:#3daba4;font-weight:400}.demo-usage .demo-usage-wrapper .output-code-wrapper{margin-top:30px;background:#fff;box-shadow:0 2px 41px 10px #2d88cb0d;border-radius:4px;padding:32px 93.21px 32px 32px;white-space:nowrap;overflow:scroll;max-height:270px}.demo-usage .demo-usage-wrapper .output-code-wrapper::-webkit-scrollbar{width:8px}.demo-usage .demo-usage-wrapper .output-code-wrapper::-webkit-scrollbar-thumb{background:#dbdddf}.demo-usage .output-code-wrapper .output-code{font-size:14px;line-height:21px;color:#203254;font-weight:500}.demo-usage .output-code-wrapper .code{padding-left:10px}.demo-usage .demo-usage-content .plugin-options-wrapper{display:flex;column-gap:30px}.demo-usage .demo-usage-content .image-source{display:flex;flex-direction:column;padding-top:28px;row-gap:20px}.demo-usage .image-source .image-source-options{display:flex;flex-direction:column;row-gap:20px}.demo-usage .image-source .image-name-option,.x-amount-option,.y-amount-option{display:flex;flex-direction:column;row-gap:6px}.demo-usage .image-source .y-amount-option{display:none}.demo-usage .image-source .image-source-options h3{font-size:16px;line-height:21px;font-weight:700;color:#4d5c74}.demo-usage .image-source .input-title{font-size:14px;line-height:21px;color:#4d5c74;font-weight:400}.demo-usage .image-source .plugin-options{border:1px solid #e2e7f1;border-radius:4px;width:270px;height:44px;padding-left:10px;font-size:16px;line-height:24px;font-weight:500;color:#203254;cursor:pointer;background-color:#fff}.demo-usage .image-source .plugin-options:nth-child(3){display:none}.demo-usage .plugin-selector{background:url(https://scaleflex.cloudimg.io/v7/demo/360-assets/icons/input-arrow.svg);background-repeat:no-repeat;background-position-x:calc(100% - 20px);background-position-y:17.12px}.demo-usage-wrapper .demo-usage-content .customize{display:flex;flex-direction:column;row-gap:20.5px;max-width:270px;max-height:600px;min-width:fit-content}.demo-usage-wrapper .demo-usage-content .customize-wrapper{display:flex;flex-direction:column;row-gap:20.5px;max-width:270px;max-height:600px;overflow-y:scroll;min-width:fit-content}.demo-usage-wrapper .demo-usage-content .customize-wrapper::-webkit-scrollbar{width:8px}.demo-usage-wrapper .demo-usage-content .customize-wrapper::-webkit-scrollbar-thumb{background:#dbdddf}.demo-usage-wrapper .demo-usage-content .customize h3{font-size:16px;line-height:21px;font-weight:700;color:#4d5c74}.demo-usage-wrapper .customize .customize-options{display:flex;flex-direction:column}.demo-usage-wrapper .customize .customize-checkboxs{display:flex;align-items:center;column-gap:8px}.demo-usage-wrapper .customize .customize-inputs{width:20px;height:20px;border:1px solid #dfe1ec}.demo-usage-wrapper .customize .customize-selectors-wrappers{display:flex;flex-direction:column;row-gap:6px}.demo-usage-wrapper .customize .selectors-wrappers-text{font-size:14px;line-height:21px;font-weight:400;color:#4d5c74;margin-top:8.5px}.demo-usage-wrapper .customize .customize-selectors{width:272px;height:44px;border:1px solid #e2e7f1;border-radius:4px;padding-left:12px;font-size:16px;line-height:24px;font-weight:500;background-color:#fff}.demo-usage-wrapper .customize .customize-selectors::-webkit-inner-spin-button{display:none}.demo-usage-wrapper .customize .checkbox-group{display:flex;flex-direction:column;row-gap:9px}.checkbox-container{display:block;position:relative;padding-left:29px;cursor:pointer;font-size:16px;line-height:19.36px;font-weight:500;color:#203254;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.pointer-checkbox{margin-bottom:4px}.checkbox-container input{position:absolute;opacity:0;cursor:pointer;height:0;width:0}.checkmark{position:absolute;top:0;left:0;height:20px;width:20px;background-color:#fff;border:1px solid #dfe1ec}.checkbox-container input:checked~.checkmark{background-color:#fff}.checkmark:after{content:"";position:absolute;display:none}.checkbox-container input:checked~.checkmark:after{display:block}.checkbox-container .checkmark:after{left:2px;top:4px;width:19px;height:13px;background-image:url(https://scaleflex.cloudimg.io/v7/demo/360-assets/icons/check-icon.svg);background-repeat:no-repeat}.questions{position:relative;padding:60px 25px;box-sizing:content-box;display:flex;flex-direction:column;align-items:center}.questions h2{margin-bottom:12px;font-weight:600;font-size:40px;line-height:54px;color:#203254}.questions p{position:relative;margin-bottom:32px;font-weight:400;font-size:20px;line-height:30px;color:#203254}.questions span{font-weight:700;font-size:20px;line-height:30px;color:#203254}.questions .issue-button-wrapper{display:flex;justify-content:center;width:100%}.questions .issue-button-wrapper .issue-button{display:flex;align-items:center;padding:8px 39px;height:48px;background-color:#3daba4;border-radius:4px;color:#fff;font-size:16px;line-height:32px;border:none;cursor:pointer;font-weight:700;text-decoration:none}.questions button a{color:#fff;font-size:16px;line-height:32px;text-decoration:none;font-weight:700}.questions .cyan-blur-circle{position:absolute;width:202px;height:202px;left:-149px;top:0;background:#83cbff;filter:blur(150px);z-index:-1}.questions .green-blur-circle{position:absolute;width:255px;height:255px;right:0;top:0;background:#aadbff;filter:blur(150px);z-index:-1}.footer{position:relative;padding:60px 25px;box-sizing:content-box;display:flex;justify-content:space-between}.footer .accordion-wrapper{display:flex;flex-direction:column;row-gap:26px;display:none}.footer button{display:flex;font-size:18px;line-height:24px;width:100%;font-weight:700;border:none;background-color:#fff;color:#000228;height:24px;cursor:pointer}.footer .filerobot-accordion{display:flex;align-items:center;justify-content:start}.footer .accordion-content{margin-bottom:10px;margin-top:10px;display:none}.footer .filerobot-accordion img{width:14px;height:8px;cursor:pointer;margin-left:17px}.footer .input-with-submit-button{position:relative}.footer .navbar{display:flex;align-items:center;margin-bottom:65px;display:none;margin-top:16px}.footer .navbar .stars{border:1px solid #5d6d7e;border-radius:4px;display:flex;align-items:center;justify-content:center;padding:8px 16px;cursor:pointer;height:41px;width:246px}.footer .navbar .stars img{margin-right:4px}.footer .navbar .stars .star{width:16px;height:16px}.footer .navbar .stars span{background-color:#f1f8ff;margin-left:.375em}.footer .navbar .github{border:1px solid #5d6d7e;border-radius:4px;display:flex;align-items:center;justify-content:center;padding:8px 16px;font-size:.875em;margin-left:8px;text-decoration:none;cursor:pointer;color:#5d6d7e;width:246px;height:41px}.footer .navbar .github img{width:14.53px;height:16px;margin-right:4px}.footer .footer-logo{display:flex;flex-direction:column;max-width:550px;width:35.9vw;row-gap:24px;color:#4d5c74;cursor:pointer}.footer .footer-logo img{width:170px;height:42.26px}.footer .footer-logo p{font-size:16px;line-height:24px}.footer .footer-logo a{text-decoration:none;color:#3daba4}.footer .footer-wrapper{display:flex;column-gap:5.22vw}.footer .footer-info{display:flex;flex-direction:column}.footer .footer-info h4{margin-bottom:24px;font-weight:600;font-size:18px;line-height:22px;color:#203254}.footer .footer-info-content{display:flex;flex-direction:column;row-gap:16px;color:#4d5c74;font-size:16px;line-height:19.36px}.footer .footer-info-content a{text-decoration:none;color:#4d5c74;font-size:16px;line-height:19.36px}.footer .footer-filerobot h4{font-weight:600;font-size:18px;line-height:21.78px;color:#203254;margin-bottom:24px}.footer .footer-filerobot-content{display:flex;flex-direction:column;row-gap:16px}.footer .footer-filerobot-content a{text-decoration:none;font-size:16px;line-height:19.36px;color:#4d5c74}.transition-outline-button{transition:all .3s ease-in-out}.transition-outline-button:hover{background-color:#3daba4;color:#fff!important}.transition-filled-button{transition:all .3s ease-in-out}.transition-filled-button:hover{background-color:#35918a!important}@media (max-width: 1224px){.demo-usage .demo-usage-wrapper .demo-usage-content{display:grid;grid-template-columns:repeat(2,.5fr);justify-content:center;margin-top:32px;column-gap:30px;flex-wrap:wrap}.demo-usage .demo-usage-content .plugin-options-wrapper{display:flex;flex-direction:column;row-gap:30px;overflow-y:scroll;min-width:fit-content;max-height:621px}.demo-usage .demo-usage-content .plugin-options-wrapper::-webkit-scrollbar{width:8px}.demo-usage .demo-usage-content .plugin-options-wrapper::-webkit-scrollbar-thumb{background:#dbdddf}.demo-usage-wrapper .demo-usage-content .customize-wrapper{margin-top:0;max-height:unset;min-height:unset;overflow-y:unset;grid-column:2;padding-top:0}}@media (max-width: 930px){.demo-usage .demo-usage-wrapper .earbuds{width:80.5%}.demo-usage .demo-usage-wrapper .earbuds .output-code{width:100%}.demo-usage .demo-usage-wrapper .demo-usage-content{display:flex;justify-content:center;margin-top:32px;column-gap:30px;flex-wrap:wrap}.demo-usage .demo-usage-content .image-source{width:50%;padding-top:0}.demo-usage .image-source .plugin-options{width:100%}.demo-usage .demo-usage-content .plugin-options-wrapper{display:flex;flex-direction:row;width:80.2%;margin-top:30px;overflow-y:unset}.demo-usage-wrapper .demo-usage-content .customize{width:50%;max-width:unset;max-height:600px;padding-top:0}.demo-usage-wrapper .demo-usage-content .customize-wrapper{width:100%;max-width:unset;max-height:600px;overflow-y:scroll}.demo-usage-wrapper .customize .customize-selectors{width:100%}}@media (max-width: 777px){.content-wrapper .header .navbar{display:none}}@media (max-width: 768px){.content-wrapper .header{display:flex;padding:23.5px 16px 0}.content-wrapper .content{align-items:flex-start}.content-wrapper .content h1,.content-wrapper .content .content-text{text-align:left}.content-wrapper .content .customer-logos{justify-content:space-between}.content-wrapper .content{padding:0 16px}.content-wrapper .content .car-image .content-text{text-align:left}.gallery-section{padding:0 16px}.demo-usage{padding:60px 16px 91px}.demo-usage .usage-title{align-items:flex-start;text-align:left}.demo-usage .demo-usage-wrapper .earbuds{width:100%}.content-wrapper .github-sandbox-buttons-wrapper .github-button{padding:8px 11.6px}.content-wrapper .github-sandbox-buttons-wrapper .github-button a{white-space:nowrap}.demo-usage .demo-usage-content .image-source{width:100%}.demo-usage-wrapper .demo-usage-content .customize{width:100%;max-width:unset}.demo-usage .demo-usage-content .plugin-options-wrapper{width:100%}.questions{padding:60px 16px;align-items:flex-start}.questions .issue-button-wrapper{justify-content:flex-start}}@media (max-width: 650px){.content-wrapper .header .navbar{display:none}.demo-usage .demo-usage-content .plugin-options-wrapper{display:flex;flex-direction:column;overflow-y:scroll}.demo-usage-wrapper .demo-usage-content .customize-wrapper{overflow-y:unset}.gallery-section .gallery-content .motorcycle,.gallery-section .gallery-content .geely-car{width:380px}.footer{display:flex;flex-direction:column}.footer .footer-logo{width:fit-content}.footer .footer-wrapper{justify-content:space-between}}@media (max-width: 512px){.content-wrapper .header .navbar{display:none}.content-wrapper .header{display:flex;justify-content:space-between;padding:23.5px 16px 0}.content-wrapper .content h1{font-size:9.4vw;line-height:11.3vw;text-align:left}.content-wrapper .content .content-text{text-align:left}.content-wrapper .header .header-logo{height:40px;font-size:4.4vw;line-height:6.9vw}.content-wrapper .header .header-logo img{height:35px;width:140.79px}.content-wrapper .content .customer-logos{justify-content:space-between}.content-wrapper .content{padding:0 16px}.content-wrapper .content .car-image .content-text{text-align:left}.gallery-section{padding:0 16px}.demo-usage{padding:60px 16px 91px}.demo-usage .usage-title{align-items:flex-start;text-align:left}.demo-usage .demo-usage-wrapper .earbuds{width:100%}.content-wrapper .github-sandbox-buttons-wrapper .github-button{padding:8px 11.6px}.content-wrapper .github-sandbox-buttons-wrapper .github-button a{white-space:nowrap}.demo-usage .demo-usage-content .image-source{width:100%}.demo-usage-wrapper .demo-usage-content .customize{width:100%;max-width:unset}.questions{padding:60px 16px;align-items:flex-start}.footer{display:block;padding:60px 16px}.footer .accordion-wrapper,.footer .email-input-wrapper{display:flex}.footer .footer-logo{width:100%;row-gap:12px}.footer .footer-logo p{font-size:15px;line-height:29px}.footer .footer-filerobot-content{margin-bottom:29px}.footer .footer-wrapper{display:none}.footer .navbar{display:flex}.hide-in-mobile{display:none}}.cloudimage-360 .cloudimage-360-left,.cloudimage-360 .cloudimage-360-right{padding:8px;background:#f4f4f4;border:none;border-radius:4px}.cloudimage-360 .cloudimage-360-left:focus,.cloudimage-360 .cloudimage-360-right:focus{outline:none}.cloudimage-360 .cloudimage-360-left{display:none;position:absolute;z-index:100;top:calc(50% - 15px);left:20px}.cloudimage-360 .cloudimage-360-right{display:none;position:absolute;z-index:100;top:calc(50% - 15px);right:20px}.cloudimage-360 .cloudimage-360-left:before,.cloudimage-360 .cloudimage-360-right:before{content:"";display:block;width:30px;height:30px;background:50% 50% / cover no-repeat}.cloudimage-360 .cloudimage-360-left:before{background-image:url(https://cdn.scaleflex.it/plugins/js-cloudimage-360-view/assets/img/arrow-left.svg)}.cloudimage-360 .cloudimage-360-right:before{background-image:url(https://cdn.scaleflex.it/plugins/js-cloudimage-360-view/assets/img/arrow-right.svg)}.cloudimage-360 .cloudimage-360-left.not-active,.cloudimage-360 .cloudimage-360-right.not-active{opacity:.4;cursor:default;pointer-events:none}.cloudimage-360 .cloudimage-360-top,.cloudimage-360 .cloudimage-360-bottom{padding:8px;background:#f4f4f4;border:none;border-radius:4px}.cloudimage-360 .cloudimage-360-top:focus,.cloudimage-360 .cloudimage-360-bottom:focus{outline:none}.cloudimage-360 .cloudimage-360-top{display:none;position:absolute;z-index:100;left:calc(50% - 15px);top:20px;transform:rotate(90deg)}.cloudimage-360 .cloudimage-360-bottom{display:none;position:absolute;z-index:100;left:calc(50% - 15px);bottom:20px;transform:rotate(90deg)}.cloudimage-360 .cloudimage-360-top:before,.cloudimage-360 .cloudimage-360-bottom:before{content:"";display:block;width:30px;height:30px;background:50% 50% / cover no-repeat}.cloudimage-360 .cloudimage-360-top:before{background-image:url(https://cdn.scaleflex.it/plugins/js-cloudimage-360-view/assets/img/arrow-left.svg)}.cloudimage-360 .cloudimage-360-bottom:before{background-image:url(https://cdn.scaleflex.it/plugins/js-cloudimage-360-view/assets/img/arrow-right.svg)}.cloudimage-360 .cloudimage-360-top.not-active,.cloudimage-360 .cloudimage-360-bottom.not-active{opacity:.4;cursor:default}@keyframes rotation{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.cloudimage-360{width:100%;position:relative}.cloudimage-360-inner-box{width:100%;height:100%;position:relative}.cloudimage-360-icons-container{position:absolute;display:flex;top:15px;right:10px;height:100%;flex-direction:column;align-items:center;z-index:100;gap:8px}.cloudimage-360-transition-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background-color:#fff;opacity:0;transition:all 1s ease-out;z-index:10}.cloudimage-360-button{width:30px;height:30px;cursor:pointer;transition:transform .15s ease-out,background-color .15s ease-out;display:flex;align-items:center;justify-content:center;border-radius:50%;background-color:#f0f0f0;color:#4a4a4a;box-shadow:0 2px 4px #0000001a;padding:6px}.cloudimage-360-button:hover{transform:scale(1.05);background-color:#e7e6e6}.cloudimage-360-button svg{width:18px;height:18px;fill:#4a4a4a;transition:fill .15s ease-out}.cloudimage-360-button:hover svg{fill:#2c2c2c}.cloudimage-initial-icon{position:absolute;top:0;bottom:0;left:0;right:0;width:100px;height:100px;margin:auto;background:linear-gradient(135deg,#ffffff80,#c8c8c880);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:50%;border:1px solid rgba(255,255,255,.5);box-shadow:0 8px 12px #0003,0 4px 6px #0000001a;transition:.2s all,transform .2s;color:#4b4b4b;text-align:center;z-index:2;line-height:100px;-webkit-user-select:none;user-select:none}.cloudimage-initial-icon:hover{background-color:#c8c8c833}.cloudimage-loading-spinner{width:30px;height:30px;transform:translate(-50%,-50%);border:3px solid #fff;position:absolute;top:15px;left:15px;border-bottom-color:#a3a3a3;border-radius:50%;display:inline-block;box-sizing:border-box;opacity:0;animation:rotation .7s linear infinite}.cloudimage-360-view-360-circle{position:absolute;left:0;bottom:0;width:100%;height:auto;margin:auto;pointer-events:none;-webkit-user-select:none;user-select:none;transition:.2s all;z-index:2}.cloudimage-360-fullscreen-modal{position:fixed;top:0;bottom:0;left:0;right:0;width:100%;height:100%;z-index:999;background-color:#fff}.cloudimage-360-img-magnifier-glass{background-color:#fff;background-image:radial-gradient(circle at center,#fffc,#f0f0f0e6);background-repeat:no-repeat;position:absolute;border:2px solid rgba(0,0,0,.3);border-radius:50%;line-height:200px;text-align:center;z-index:1000;width:250px;height:250px;top:-75px;right:-85px;box-shadow:0 8px 16px #0006,0 4px 8px #0003;transition:box-shadow .2s ease;overflow:hidden;pointer-events:none}.cloudimage-360-hotspot-container{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:20}.cloudimage-360-popper{opacity:1;transition:opacity .2s ease-in-out}.cloudimage-360-hotspot{display:inline-block;position:absolute;top:0;right:0;bottom:0;left:0;transform:translate(-50%,-50%);background:#0af;border:1px solid #fff;border-radius:50%;height:18px;width:18px;box-shadow:0 0 #0af9,0 2px 6px #0003;opacity:0;animation:pulse 2s infinite;transition:transform .2s ease,box-shadow .2s ease}.cloudimage-360-hotspot.visible{opacity:1}@keyframes pulse{0%{transform:scale(1);box-shadow:0 0 #0af9,0 0 0 10px #0af6,0 0 0 20px #0af3}50%{transform:scale(1.1);box-shadow:0 0 0 10px #0af0,0 0 0 20px #00aaff1a,0 0 0 30px #0af0}to{transform:scale(1);box-shadow:0 0 #0af0,0 0 0 10px #0af0,0 0 0 20px #0af0}}.cloudimage-360-hotspot:hover{transform:scale(1.2);box-shadow:0 0 0 5px #00aaff80,0 4px 12px #0000004d}.cloudimage-360-popper{background-color:#ffffffe6;color:#333;padding:10px 15px;border-radius:6px;box-shadow:0 4px 16px #0003;font-size:14px;max-width:220px;z-index:9999;text-align:center;transition:opacity .2s ease,translate .2s ease;opacity:0;translate:0 -10px}.cloudimage-360-popper[data-show]{opacity:1;translate:0} diff --git a/bundle49ZK8EAw.js b/bundle49ZK8EAw.js deleted file mode 100644 index ae31bd7..0000000 --- a/bundle49ZK8EAw.js +++ /dev/null @@ -1,9 +0,0 @@ -var qt=Object.defineProperty;var _t=(t,e,i)=>e in t?qt(t,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[e]=i;var ot=(t,e,i)=>_t(t,typeof e!="symbol"?e+"":e,i);(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))n(o);new MutationObserver(o=>{for(const s of o)if(s.type==="childList")for(const a of s.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&n(a)}).observe(document,{childList:!0,subtree:!0});function i(o){const s={};return o.integrity&&(s.integrity=o.integrity),o.referrerPolicy&&(s.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?s.credentials="include":o.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function n(o){if(o.ep)return;o.ep=!0;const s=i(o);fetch(o.href,s)}})();var Re=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Jt(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var Tt="Expected a function",st=NaN,Qt="[object Symbol]",ei=/^\s+|\s+$/g,ti=/^[-+]0x[0-9a-f]+$/i,ii=/^0b[01]+$/i,ni=/^0o[0-7]+$/i,oi=parseInt,si=typeof Re=="object"&&Re&&Re.Object===Object&&Re,ri=typeof self=="object"&&self&&self.Object===Object&&self,ai=si||ri||Function("return this")(),li=Object.prototype,ci=li.toString,di=Math.max,ui=Math.min,Me=function(){return ai.Date.now()};function hi(t,e,i){var n,o,s,a,r,l,c=0,d=!1,h=!1,f=!0;if(typeof t!="function")throw new TypeError(Tt);e=rt(e)||0,Xe(i)&&(d=!!i.leading,h="maxWait"in i,s=h?di(rt(i.maxWait)||0,e):s,f="trailing"in i?!!i.trailing:f);function u(m){var I=n,E=o;return n=o=void 0,c=m,a=t.apply(E,I),a}function y(m){return c=m,r=setTimeout(x,e),d?u(m):a}function g(m){var I=m-l,E=m-c,S=e-I;return h?ui(S,s-E):S}function v(m){var I=m-l,E=m-c;return l===void 0||I>=e||I<0||h&&E>=s}function x(){var m=Me();if(v(m))return C(m);r=setTimeout(x,g(m))}function C(m){return r=void 0,f&&n?u(m):(n=o=void 0,a)}function O(){r!==void 0&&clearTimeout(r),c=0,n=l=o=r=void 0}function b(){return r===void 0?a:C(Me())}function w(){var m=Me(),I=v(m);if(n=arguments,o=this,l=m,I){if(r===void 0)return y(l);if(h)return r=setTimeout(x,e),u(l)}return r===void 0&&(r=setTimeout(x,e)),a}return w.cancel=O,w.flush=b,w}function pi(t,e,i){var n=!0,o=!0;if(typeof t!="function")throw new TypeError(Tt);return Xe(i)&&(n="leading"in i?!!i.leading:n,o="trailing"in i?!!i.trailing:o),hi(t,e,{leading:n,maxWait:e,trailing:o})}function Xe(t){var e=typeof t;return!!t&&(e=="object"||e=="function")}function fi(t){return!!t&&typeof t=="object"}function mi(t){return typeof t=="symbol"||fi(t)&&ci.call(t)==Qt}function rt(t){if(typeof t=="number")return t;if(mi(t))return st;if(Xe(t)){var e=typeof t.valueOf=="function"?t.valueOf():t;t=Xe(e)?e+"":e}if(typeof t!="string")return t===0?t:+t;t=t.replace(ei,"");var i=ii.test(t);return i||ni.test(t)?oi(t.slice(2),i?2:8):ti.test(t)?st:+t}var vi=pi;const at=Jt(vi),T={SPIN_X:"spin-x",SPIN_Y:"spin-y",SPIN_XY:"spin-xy",SPIN_YX:"spin-yx"},gi=[!1,0,null,void 0,"false","0","null","undefined"],k={X:"x-axis",Y:"y-axis",CENTER:"center"},yi=["folder","folderX","folderY","filenameX","filenameY","imageListX","imageListY","indexZeroBase","amountX","amountY"],bi=[37,39],wi=[38,40],lt=10,p={folder:"/",apiVersion:"v7",filenameX:"image-{index}.jpg",filenameY:null,imageListX:null,imageListY:null,indexZeroBase:0,amountX:0,amountY:0,speed:80,dragSpeed:150,draggable:!0,swipeable:!0,keys:!1,keysReverse:!1,autoplay:!1,autoplayBehavior:T.SPIN_X,playOnce:!1,autoplayReverse:!1,pointerZoom:0,fullscreen:!1,magnifier:null,bottomCircle:!0,bottomCircleOffset:5,ciToken:null,ciFilters:null,ciTransformation:null,lazyload:!0,dragReverse:!1,stopAtEdges:!1,imageInfo:!1,initialIconShown:!0,hotspots:null},xi=t=>({folder:Y(t,"folder",p.folder),apiVersion:Y(t,"api-version",p.apiVersion),filenameX:Y(t,"filename")||Y(t,"filename-x")||p.filenameX,filenameY:Y(t,"filename-y",p.filenameY),imageListX:Y(t,"image-list-x",p.imageListX),imageListY:Y(t,"image-list-y",p.imageListY),indexZeroBase:parseInt(Y(t,"index-zero-base",p.indexZeroBase),10),amountX:parseInt(Y(t,"amount-x",p.amountX),10),amountY:parseInt(Y(t,"amount-y",p.amountY),10),speed:parseInt(Y(t,"speed",p.speed),10),dragSpeed:parseInt(Y(t,"drag-speed",p.dragSpeed),10),draggable:W(t,"draggable",p.draggable),swipeable:W(t,"swipeable",p.swipeable),keys:W(t,"keys",p.keys),keysReverse:W(t,"keys-reverse",p.keysReverse),autoplay:W(t,"autoplay",p.autoplay),autoplayBehavior:Y(t,"autoplay-behavior",p.autoplayBehavior),playOnce:W(t,"play-once",p.playOnce),autoplayReverse:W(t,"autoplay-reverse",p.autoplayReverse),pointerZoom:parseFloat(Y(t,"pointer-zoom",p.pointerZoom),10),fullscreen:W(t,"fullscreen")||W(t,"full-screen",p.fullscreen),magnifier:parseFloat(Y(t,"magnifier",p.magnifier),10),bottomCircleOffset:parseInt(Y(t,"bottom-circle-offset",p.bottomCircleOffset),10),ciToken:Y(t,"responsive",p.ciToken),ciFilters:Y(t,"filters",p.ciFilters),ciTransformation:Y(t,"transformation",p.ciTransformation),lazyload:W(t,"lazyload",p.lazyload),dragReverse:W(t,"drag-reverse",p.dragReverse),stopAtEdges:W(t,"stop-at-edges",p.stopAtEdges),imageInfo:W(t,"info",p.imageInfo),initialIconShown:!ct(t,"initial-icon"),bottomCircle:!ct(t,"bottom-circle")}),Ii=t=>({folder:t.folder||p.folder,apiVersion:t.apiVersion||p.apiVersion,filenameX:t.filenameX||t.filename||p.filenameX,filenameY:t.filenameY||p.filenameY,imageListX:t.imageListX||p.imageListX,imageListY:t.imageListY||p.imageListY,indexZeroBase:parseInt(t.indexZeroBase??p.indexZeroBase,10),amountX:parseInt(t.amountX??p.amountX,10),amountY:parseInt(t.amountY??p.amountY,10),speed:parseInt(t.speed??p.speed,10),draggable:t.draggable??p.draggable,swipeable:t.swipeable??p.swipeable,dragSpeed:parseInt(t.dragSpeed??p.dragSpeed,10),keys:t.keys??p.keys,keysReverse:t.keysReverse??p.keysReverse,autoplay:t.autoplay??p.autoplay,autoplayBehavior:t.autoplayBehavior||p.autoplayBehavior,playOnce:t.playOnce??p.playOnce,autoplayReverse:t.autoplayReverse??p.autoplayReverse,pointerZoom:parseFloat(t.pointerZoom??p.pointerZoom,10),fullscreen:t.fullscreen??p.fullscreen,magnifier:parseFloat(t.magnifier??p.magnifier,10),bottomCircleOffset:parseInt(t.bottomCircleOffset??p.bottomCircleOffset,10),ciToken:t.ciToken||p.ciToken,ciFilters:t.ciFilters||p.ciFilters,ciTransformation:t.ciTransformation||p.ciTransformation,lazyload:t.lazyload??p.lazyload,dragReverse:t.dragReverse??p.dragReverse,stopAtEdges:t.stopAtEdges??p.stopAtEdges,imageInfo:t.imageInfo??p.imageInfo,initialIconShown:t.initialIconShown??p.initialIconShown,bottomCircle:t.bottomCircle??p.bottomCircle,hotspots:t.hotspots??p.hotspots}),Y=(t,e,i)=>t.getAttribute(e)||t.getAttribute(`data-${e}`)||i,W=(t,e,i)=>t.hasAttribute(e)||t.hasAttribute(`data-${e}`)||i,ct=(t,e)=>Y(t,e,null)==="false",Ci=(t,e,i=yi)=>i.some(n=>n in e&&e[n]!==t[n]),Oi=(t=1)=>{const e=Math.round(window.devicePixelRatio||1);return parseInt(t)*e},Ei=(t,e,i)=>new URL(t).origin.includes("cloudimg")?t:`https://${e}.cloudimg.io/${i}${t}`,Si=({ciTransformation:t,responsiveWidth:e,ciFilters:i})=>{const n=`width=${e}`,o=t||n,s=i?`&f=${i}`:"";return`${o}${s}`},be=(t,e)=>{const{folder:i,apiVersion:n,filename:o="",ciParams:s}=t,{ciToken:a,ciFilters:r,ciTransformation:l}=s||{},c=`${i}${o}`;if(!a)return c;const d=gi.includes(n)?null:n,h=d?`${d}/`:"",f=Oi(e),u=Ei(c,a,h),y=Si({ciTransformation:l,responsiveWidth:f,ciFilters:r});return`${u}${y?"?":""}${y}`},Ri=(t,e,i)=>{const[n,o]=t.split("?"),s=`${e}=${encodeURIComponent(i)}`;if(!o)return`${n}?${s}`;const a=new URLSearchParams(o);return a.set(e,i),`${n}?${a.toString()}`},Yi=(t,e)=>Ri(t,"width",e),kt=(t,e=0)=>(t+="",t.length>=e?t:new Array(e-t.length+1).join("0")+t),Li=(t,{amount:e=0,indexZeroBase:i=0}={})=>Array.from({length:e},(n,o)=>t.replace("{index}",kt(o+1,i))),Xi=({imagesUrls:t,onFirstImageLoad:e,onImageLoad:i,onAllImagesLoad:n,autoplayReverse:o})=>{let s=0;const a=t.length,r=[],l=(h,f)=>{const u=new Image;u.crossOrigin="anonymous",u.src=h,u.onload=async()=>{const y=await createImageBitmap(u),g={src:h,bitmapImage:y,naturalWidth:c.naturalWidth,naturalHeight:c.naturalHeight};s++,r[f]=g,i==null||i(g,f),s===a&&(n==null||n(r))},u.onerror=()=>{console.error(`Failed to load image: ${h}`),s++,s===a&&(n==null||n(r))}},c=new Image,d=t[o?t.length-1:0];c.crossOrigin="anonymous",c.src=d,c.onload=async()=>{const h=await createImageBitmap(c),f={src:d,bitmapImage:h,naturalWidth:c.naturalWidth,naturalHeight:c.naturalHeight};r[0]=f,s++,e==null||e(f),i==null||i(f,0);for(let u=1;u{console.error(`Failed to load first image: ${t[0]}`),s++;for(let h=1;h{let r={x:!1,y:!1},l=[],c=[];const d=t||i.imageList.length,h=e||n.imageList.length,f=()=>{r.x&&r.y&&a(l,c)},u=({cdnPath:y,config:g,orientation:v,loadedImages:x,onFirstImageLoad:C})=>{const O=v===k.X,b=g.imageList.length?g.imageList:Li(y,g);Xi({imagesUrls:b,onFirstImageLoad:C,onImageLoad:(w,m)=>{s==null||s(w,m,v),x[m]=w},onAllImagesLoad:w=>{x=w,r[O?"x":"y"]=!0,f()},autoplayReverse:g.autoplayReverse})};d?u({cdnPath:t,config:i,orientation:k.X,loadedImages:l,onFirstImageLoad:o}):r.x=!0,h?u({cdnPath:e,config:n,orientation:k.Y,loadedImages:c,onFirstImageLoad:d?void 0:o}):r.y=!0},Pi=t=>{const e=new Image;return e.src="https://scaleflex.cloudimg.io/v7/plugins/js-cloudimage-360-view/assets/img/360.svg",e.style.bottom=`${t}%`,e.className="cloudimage-360-view-360-circle",e},Ti=()=>{const t=document.createElement("div");return t.className="cloudimage-initial-icon",t.innerText="360°",t},ki=(t,e)=>{const{width:i,height:n}=e,o=document.createElement("canvas");return o.width=i,o.height=n,o.style.width="100%",o.style.height="auto",t.appendChild(o),o},Ai="data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20height='20px'%20viewBox='0%20-960%20960%20960'%20width='20px'%20fill='%235f6368'%3e%3cpath%20d='m147-96-51-51%20261-261H192v-72h288v288h-72v-165L147-96Zm333-384v-288h72v165l261-261%2051%2051-261%20261h165v72H480Z'/%3e%3c/svg%3e",Bi=()=>{const t=document.createElement("div");return t.className="cloudimage-360-button cloudimage-360-close-icon",t.innerHTML=`close icon`,t},Mi="data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20height='20px'%20viewBox='0%20-960%20960%20960'%20width='20px'%20fill='%235f6368'%3e%3cpath%20d='M144-144v-192h72v120h120v72H144Zm480%200v-72h120v-120h72v192H624ZM144-624v-192h192v72H216v120h-72Zm600%200v-120H624v-72h192v192h-72Z'/%3e%3c/svg%3e",Hi=()=>{const t=document.createElement("div");return t.className="cloudimage-360-button cloudimage-360-fullscreen-button",t.innerHTML=`fullscreen icon`,t},ut=t=>{const e=document.createElement("div");return e.className="cloudimage-360-icons-container",t.appendChild(e),e},Wi=t=>{const e=document.createElement("div");return e.className="cloudimage-360-inner-box",t.appendChild(e),e},Zi="data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20height='20px'%20viewBox='0%20-960%20960%20960'%20width='20px'%20fill='%235f6368'%3e%3cpath%20d='M765-144%20526-383q-30%2022-65.79%2034.5-35.79%2012.5-76.18%2012.5Q284-336%20214-406t-70-170q0-100%2070-170t170-70q100%200%20170%2070t70%20170.03q0%2040.39-12.5%2076.18Q599-464%20577-434l239%20239-51%2051ZM384-408q70%200%20119-49t49-119q0-70-49-119t-119-49q-70%200-119%2049t-49%20119q0%2070%2049%20119t119%2049Z'/%3e%3c/svg%3e",Di=()=>{const t=document.createElement("div");return t.className="cloudimage-360-button cloudimage-360-magnifier-button",t.innerHTML=`magnifier icon`,t},Vi=t=>{const e=document.createElement("div");e.className="cloudimage-initial-icon";const i=document.createElement("span");return i.className="percentage",i.innerText="0%",e.appendChild(i),t.appendChild(e),e},Ni=t=>{const e=document.createElement("div");e.className="cloudimage-360-fullscreen-modal";const i=t.cloneNode();return i.style.height="100vh",i.style.maxHeight="100%",e.appendChild(i),window.document.body.appendChild(e),i},We=(t,e)=>{const i=t.querySelector(e);i&&i.parentNode.removeChild(i)},$i=()=>{const t=document.createElement("div");return t.className="cloudimage-loading-spinner",t},ji=()=>{const t=document.createElement("div");return t.className="cloudimage-360-transition-overlay",t},Fi=t=>{const e=document.createElement("div");return e.className="cloudimage-360-hotspot-container",t.appendChild(e),e},Gi=(t,e)=>{const[i,n]=t.split("?");if(!n)return t;const o=new RegExp(`^${e}=|&${e}=`),s=n.split("&").filter(a=>!o.test(a)).join("&");return s?`${i}?${s}`:i},Ui=t=>{const e=Gi(t,"width"),i=e.includes("?")?"&":"?";return`${e}${i}width=${150*devicePixelRatio}`},zi=t=>{const e={root:null,rootMargin:"0px",threshold:.1},i=o=>{const s=o.getAttribute("data-src");s&&(o.src=s)};new IntersectionObserver((o,s)=>{o.forEach(a=>{a.isIntersecting&&(i(a.target),s.unobserve(a.target))})},e).observe(t)},Ki=(t,e)=>{const i=kt(1,e);return t.replace("{index}",i)},qi=(t,e)=>{const[i]=t,n=/(https?):\/\//i.test(i);return be({...e,folder:n?"":e.folder,filename:i})},_i=(t,e)=>{const{imageList:i,indexZeroBase:n}=e;if(i.length)try{const o=JSON.parse(i);return qi(o,e)}catch(o){console.error(`Wrong format in image-list attribute: ${o.message}`)}return Ki(t,n)},ht=(t,e,i)=>{const n=new Image;return n.setAttribute(e?"data-src":"src",t),n.className=i,n.style.cssText=` - position: ${e?"absolute":"static"}; - width: 100%; - inset: 0; - height: 100%; - object-fit: contain; - object-position: center; - filter: blur(10px); - `,n},pt=(t,e,i)=>{const{innerBox:n,imageList:o,lazyload:s}=e||{},[a]=o,r=a||_i(t,e),l=Ui(r),c=ht(l,s,"cloudimage-lazy"),d=ht(l,!1,"cloudimage-360-placeholder"),h=f=>{We(n,".cloudimage-lazy"),i&&i({event:f,width:c.width,height:c.height,naturalWidth:c.naturalWidth,naturalHeight:c.naturalHeight,src:l})};c.onload=h,n.appendChild(c),n.appendChild(d),zi(c)},Ji=(t,e)=>{const i=new Image;i.src=t,i.onload=n=>{e&&e({event:n,width:i.width,height:i.height,naturalWidth:i.naturalWidth,naturalHeight:i.naturalHeight,src:t})},i.onerror=function(){}},Qi=(t,e)=>{const i=e.getBoundingClientRect(),n=t.touches?t.touches[0].clientX:t.clientX,o=t.touches?t.touches[0].clientY:t.clientY;return{x:n-i.left,y:o-i.top}},He=(t,e,i)=>{const{container:n,w:o,h:s,zoom:a,bw:r,offsetX:l,offsetY:c}=e,d=Qi(t,n);let h=d.x,f=d.y;h=Math.max(o/a,Math.min(h,n.offsetWidth-o/a)),f=Math.max(s/a,Math.min(f,n.offsetHeight-s/a)),i.style.left=`${h-o}px`,i.style.top=`${f-s}px`;const u=(h-l)*a-o+r,y=(f-c)*a-s+r;i.style.backgroundPosition=`-${u}px -${y}px`},en=(t,e,i,n,o,s)=>{const{x:a=0,y:r=0}=i||{},l=(e.offsetWidth-a*2)*s,c=(e.offsetHeight-r*2)*s;if(!o)return;o.setAttribute("class","cloudimage-360-img-magnifier-glass"),e.prepend(o),o.style.backgroundImage=`url('${n.src}')`,o.style.backgroundSize=`${l}px ${c}px`;const d=3,h=o.offsetWidth/2,f=o.offsetHeight/2,u={container:e,w:h,h:f,zoom:s,bw:d,offsetX:a,offsetY:r};He(t,u,o);const y=v=>{He(v,u,o)},g=v=>{v.preventDefault(),He(v,u,o)};o.addEventListener("mousemove",y),e.addEventListener("mousemove",y),e.addEventListener("touchmove",g)},tn=(t,e,i)=>{const{clientX:n,clientY:o}=t,s=e.getBoundingClientRect(),a=e.width/(s.width*i),r=e.height/(s.height*i),l=(n-s.left)*a,c=(o-s.top)*r;return{offsetX:l,offsetY:c}},ft=(t,{bottom:e,top:i})=>{t?e():i()},mt=(t,{left:e,right:i})=>{t?e():i()},nn=({autoplayBehavior:t,spinY:e,reversed:i,loopTriggers:n})=>{switch(t){case T.SPIN_XY:case T.SPIN_YX:e?ft(i,n):mt(i,n);break;case T.SPIN_Y:ft(i,n);break;case T.SPIN_X:default:mt(i,n)}},on=({autoplayBehavior:t,activeImageX:e,activeImageY:i,amountX:n,amountY:o,autoplayReverse:s})=>{const a=(r,l)=>{const c=l-1;return s?r===0:r===c};switch(t){case T.SPIN_XY:case T.SPIN_Y:return a(i,o);case T.SPIN_X:case T.SPIN_YX:default:return a(e,n)}},sn=({autoplayBehavior:t,activeImageX:e,activeImageY:i,amountX:n,amountY:o,autoplayReverse:s,spinDirection:a})=>{const r=e===(s?0:n-1),l=i===(s?0:o-1);return t===T.SPIN_XY||t===T.SPIN_YX?a==="x"&&r||a==="y"&&l:!1},rn=(t,e,i)=>{if(!i)return"x";if(!e)return"y";switch(t){case T.SPIN_XY:return"x";case T.SPIN_YX:return"y";case T.SPIN_Y:return"y";case T.SPIN_X:default:return"x"}},an=t=>t==="x"?"y":"x",vt=(t,e)=>{const i=[...bi];return e?[...i,...wi].includes(t):i.includes(t)},ln=({deltaX:t,deltaY:e,reversed:i,allowSpinX:n,allowSpinY:o,threshold:s=1})=>{const a=Math.abs(t),r=Math.abs(e);return n&&a-s>r?i?t>0?"left":"right":t>0?"right":"left":o&&r-s>a?i?e>0?"up":"down":e>0?"down":"up":null},cn=()=>"ontouchstart"in window||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0,dn=(t,e=150)=>{let i;return function(...n){clearTimeout(i),i=setTimeout(()=>{t.apply(this,n)},e)}},At="KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2NvbnN0IHg9KGEsdCxlKT0+e2NvbnN0IHM9YS9lLG49dC9lO3JldHVybnt6b29tZWRXaWR0aDpzLHpvb21lZEhlaWdodDpufX0sTz0oe3BvaW50ZXJYOmEscG9pbnRlclk6dCxpbWFnZURhdGE6ZSx6b29tZWRXaWR0aDpzLHpvb21lZEhlaWdodDpuLGRyYXdXaWR0aDppLGRyYXdIZWlnaHQ6Y30pPT57Y29uc3R7bmF0dXJhbFdpZHRoOnIsbmF0dXJhbEhlaWdodDpsfT1lO2xldCBnPWEvaSpyLXMvMix1PXQvYypsLW4vMjtjb25zdCBwPU1hdGgubWF4KDAsci1zKSxJPU1hdGgubWF4KDAsbC1uKTtyZXR1cm4gZz1NYXRoLm1heCgwLE1hdGgubWluKGcscCkpLHU9TWF0aC5tYXgoMCxNYXRoLm1pbih1LEkpKSx7em9vbU9mZnNldFg6Zyx6b29tT2Zmc2V0WTp1fX07bGV0IG8sbSxmLGgsZCx3O3NlbGYub25tZXNzYWdlPWFzeW5jIGE9Pntjb25zdHthY3Rpb246dCxvZmZzY3JlZW46ZSxkZXZpY2VQaXhlbFJhdGlvOnMsaW1hZ2VEYXRhOm4sem9vbVNjYWxlOmkscG9pbnRlclg6Yyxwb2ludGVyWTpyLGltYWdlQXNwZWN0UmF0aW86bCxjb250YWluZXJXaWR0aDpnLGNvbnRhaW5lckhlaWdodDp1fT1hLmRhdGE7c3dpdGNoKHQpe2Nhc2UiaW5pdENhbnZhcyI6dihlLHMpO2JyZWFrO2Nhc2UiYWRhcHRDYW52YXNTaXplIjp6KGwsZyx1KTticmVhaztjYXNlImRyYXdJbWFnZU9uQ2FudmFzIjpDKG4saSxjLHIpO2JyZWFrfX07Y29uc3Qgdj0oYSx0KT0+e289YSxtPW8uZ2V0Q29udGV4dCgiMmQiKSxmPXR9LHo9KGEsdCxlKT0+e2NvbnN0IHM9dC9lO3c9YT5zLG8ud2lkdGg9dCpmLG8uaGVpZ2h0PWUqZixtLnNjYWxlKGYsZiksdz8oaD10LGQ9dC9hKTooZD1lLGg9ZSphKSxtLmltYWdlU21vb3RoaW5nRW5hYmxlZD0hMCxtLmltYWdlU21vb3RoaW5nUXVhbGl0eT0iaGlnaCJ9LEM9KGE9e30sdD0xLGU9MCxzPTApPT57Y29uc3R7Yml0bWFwSW1hZ2U6bn09YTtpZighb3x8IW4pcmV0dXJuO2xldCBpLGM7aWYodz8oaT0wLGM9KG8uaGVpZ2h0L2YtZCkvMik6KGk9KG8ud2lkdGgvZi1oKS8yLGM9MCksbS5jbGVhclJlY3QoMCwwLG8ud2lkdGgsby5oZWlnaHQpLHQhPT0xKXtjb25zdHt6b29tZWRXaWR0aDpyLHpvb21lZEhlaWdodDpsfT14KGgsZCx0KSx7em9vbU9mZnNldFg6Zyx6b29tT2Zmc2V0WTp1fT1PKHtwb2ludGVyWDplLHBvaW50ZXJZOnMsaW1hZ2VEYXRhOmEsem9vbWVkV2lkdGg6cix6b29tZWRIZWlnaHQ6bCxkcmF3V2lkdGg6aCxkcmF3SGVpZ2h0OmR9KTttLmRyYXdJbWFnZShuLGcsdSxyLGwsaSxjLGgsZCl9ZWxzZSBtLmRyYXdJbWFnZShuLGksYyxoLGQpfX0pKCk7Cg==",un=t=>Uint8Array.from(atob(t),e=>e.charCodeAt(0)),gt=typeof self<"u"&&self.Blob&&new Blob([un(At)],{type:"text/javascript;charset=utf-8"});function hn(t){let e;try{if(e=gt&&(self.URL||self.webkitURL).createObjectURL(gt),!e)throw"";const i=new Worker(e,{name:t==null?void 0:t.name});return i.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(e)}),i}catch{return new Worker("data:text/javascript;base64,"+At,{name:t==null?void 0:t.name})}finally{e&&(self.URL||self.webkitURL).revokeObjectURL(e)}}const pn=t=>t==="x"?k.X:k.Y,fn=(t,e,i)=>t.filter(n=>pn(n.orientation)===i&&e in n.positions),mn=t=>{const e=document.createElement("span");return e.id=t,e.className="cloudimage-360-hotspot",e.dataset.hotspotId=t,e},vn=t=>{const e=Object.entries(t).sort(([s],[a])=>Number(s)-Number(a));let i=null,n=null;const o={};for(const[s,a]of e)if(!a)o[s]={x:i,y:n};else{const{x:r,y:l}=a;r!=null&&(i=r),l!=null&&(n=l),o[s]={x:r||i,y:l||n}}return o},gn=t=>[{name:"offset",options:{offset:[0,10]}},{name:"preventOverflow",options:{boundary:t}}],yn=(t,e)=>{const i=document.createElement("div");return i.className="cloudimage-360-popper",i.id=`cloudimage-360-popper-${e}`,i.dataset.popperId=e,typeof t=="string"&&/<\/?[a-z][\s\S]*>/i.test(t)?i.innerHTML=t:i.textContent=t,document.body.appendChild(i),i},bn=t=>{const e=[...t];return e.forEach((i,n)=>{const o={...vn(i.positions)};e[n].initialPositions=o,e[n].positions=o}),e},wn=({newWidth:t,newHeight:e,initialContainerSize:i,imageAspectRatio:n,hotspotsConfig:o})=>{const[s,a]=i;let r=t,l=e,c=0,d=0;const h=t/e;n>h?(l=t/n,d=(e-l)/2):(r=e*n,c=(t-r)/2);const u=r/s,y=l/a;return o.map(g=>{const v={};return Object.entries(g.initialPositions).forEach(([x,C])=>{v[x]={x:C.x*u+c,y:C.y*y+d}}),{...g,positions:v}})};var A="top",V="bottom",N="right",B="left",Ne="auto",Oe=[A,V,N,B],de="start",Ie="end",xn="clippingParents",Bt="viewport",ye="popper",In="reference",yt=Oe.reduce(function(t,e){return t.concat([e+"-"+de,e+"-"+Ie])},[]),Mt=[].concat(Oe,[Ne]).reduce(function(t,e){return t.concat([e,e+"-"+de,e+"-"+Ie])},[]),Cn="beforeRead",On="read",En="afterRead",Sn="beforeMain",Rn="main",Yn="afterMain",Ln="beforeWrite",Xn="write",Pn="afterWrite",Tn=[Cn,On,En,Sn,Rn,Yn,Ln,Xn,Pn];function U(t){return t?(t.nodeName||"").toLowerCase():null}function Z(t){if(t==null)return window;if(t.toString()!=="[object Window]"){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function ae(t){var e=Z(t).Element;return t instanceof e||t instanceof Element}function D(t){var e=Z(t).HTMLElement;return t instanceof e||t instanceof HTMLElement}function $e(t){if(typeof ShadowRoot>"u")return!1;var e=Z(t).ShadowRoot;return t instanceof e||t instanceof ShadowRoot}function kn(t){var e=t.state;Object.keys(e.elements).forEach(function(i){var n=e.styles[i]||{},o=e.attributes[i]||{},s=e.elements[i];!D(s)||!U(s)||(Object.assign(s.style,n),Object.keys(o).forEach(function(a){var r=o[a];r===!1?s.removeAttribute(a):s.setAttribute(a,r===!0?"":r)}))})}function An(t){var e=t.state,i={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,i.popper),e.styles=i,e.elements.arrow&&Object.assign(e.elements.arrow.style,i.arrow),function(){Object.keys(e.elements).forEach(function(n){var o=e.elements[n],s=e.attributes[n]||{},a=Object.keys(e.styles.hasOwnProperty(n)?e.styles[n]:i[n]),r=a.reduce(function(l,c){return l[c]="",l},{});!D(o)||!U(o)||(Object.assign(o.style,r),Object.keys(s).forEach(function(l){o.removeAttribute(l)}))})}}const Bn={name:"applyStyles",enabled:!0,phase:"write",fn:kn,effect:An,requires:["computeStyles"]};function G(t){return t.split("-")[0]}var re=Math.max,Pe=Math.min,ue=Math.round;function Ze(){var t=navigator.userAgentData;return t!=null&&t.brands&&Array.isArray(t.brands)?t.brands.map(function(e){return e.brand+"/"+e.version}).join(" "):navigator.userAgent}function Ht(){return!/^((?!chrome|android).)*safari/i.test(Ze())}function he(t,e,i){e===void 0&&(e=!1),i===void 0&&(i=!1);var n=t.getBoundingClientRect(),o=1,s=1;e&&D(t)&&(o=t.offsetWidth>0&&ue(n.width)/t.offsetWidth||1,s=t.offsetHeight>0&&ue(n.height)/t.offsetHeight||1);var a=ae(t)?Z(t):window,r=a.visualViewport,l=!Ht()&&i,c=(n.left+(l&&r?r.offsetLeft:0))/o,d=(n.top+(l&&r?r.offsetTop:0))/s,h=n.width/o,f=n.height/s;return{width:h,height:f,top:d,right:c+h,bottom:d+f,left:c,x:c,y:d}}function je(t){var e=he(t),i=t.offsetWidth,n=t.offsetHeight;return Math.abs(e.width-i)<=1&&(i=e.width),Math.abs(e.height-n)<=1&&(n=e.height),{x:t.offsetLeft,y:t.offsetTop,width:i,height:n}}function Wt(t,e){var i=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(i&&$e(i)){var n=e;do{if(n&&t.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function J(t){return Z(t).getComputedStyle(t)}function Mn(t){return["table","td","th"].indexOf(U(t))>=0}function ie(t){return((ae(t)?t.ownerDocument:t.document)||window.document).documentElement}function ke(t){return U(t)==="html"?t:t.assignedSlot||t.parentNode||($e(t)?t.host:null)||ie(t)}function bt(t){return!D(t)||J(t).position==="fixed"?null:t.offsetParent}function Hn(t){var e=/firefox/i.test(Ze()),i=/Trident/i.test(Ze());if(i&&D(t)){var n=J(t);if(n.position==="fixed")return null}var o=ke(t);for($e(o)&&(o=o.host);D(o)&&["html","body"].indexOf(U(o))<0;){var s=J(o);if(s.transform!=="none"||s.perspective!=="none"||s.contain==="paint"||["transform","perspective"].indexOf(s.willChange)!==-1||e&&s.willChange==="filter"||e&&s.filter&&s.filter!=="none")return o;o=o.parentNode}return null}function Ee(t){for(var e=Z(t),i=bt(t);i&&Mn(i)&&J(i).position==="static";)i=bt(i);return i&&(U(i)==="html"||U(i)==="body"&&J(i).position==="static")?e:i||Hn(t)||e}function Fe(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function we(t,e,i){return re(t,Pe(e,i))}function Wn(t,e,i){var n=we(t,e,i);return n>i?i:n}function Zt(){return{top:0,right:0,bottom:0,left:0}}function Dt(t){return Object.assign({},Zt(),t)}function Vt(t,e){return e.reduce(function(i,n){return i[n]=t,i},{})}var Zn=function(e,i){return e=typeof e=="function"?e(Object.assign({},i.rects,{placement:i.placement})):e,Dt(typeof e!="number"?e:Vt(e,Oe))};function Dn(t){var e,i=t.state,n=t.name,o=t.options,s=i.elements.arrow,a=i.modifiersData.popperOffsets,r=G(i.placement),l=Fe(r),c=[B,N].indexOf(r)>=0,d=c?"height":"width";if(!(!s||!a)){var h=Zn(o.padding,i),f=je(s),u=l==="y"?A:B,y=l==="y"?V:N,g=i.rects.reference[d]+i.rects.reference[l]-a[l]-i.rects.popper[d],v=a[l]-i.rects.reference[l],x=Ee(s),C=x?l==="y"?x.clientHeight||0:x.clientWidth||0:0,O=g/2-v/2,b=h[u],w=C-f[d]-h[y],m=C/2-f[d]/2+O,I=we(b,m,w),E=l;i.modifiersData[n]=(e={},e[E]=I,e.centerOffset=I-m,e)}}function Vn(t){var e=t.state,i=t.options,n=i.element,o=n===void 0?"[data-popper-arrow]":n;o!=null&&(typeof o=="string"&&(o=e.elements.popper.querySelector(o),!o)||Wt(e.elements.popper,o)&&(e.elements.arrow=o))}const Nn={name:"arrow",enabled:!0,phase:"main",fn:Dn,effect:Vn,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function pe(t){return t.split("-")[1]}var $n={top:"auto",right:"auto",bottom:"auto",left:"auto"};function jn(t,e){var i=t.x,n=t.y,o=e.devicePixelRatio||1;return{x:ue(i*o)/o||0,y:ue(n*o)/o||0}}function wt(t){var e,i=t.popper,n=t.popperRect,o=t.placement,s=t.variation,a=t.offsets,r=t.position,l=t.gpuAcceleration,c=t.adaptive,d=t.roundOffsets,h=t.isFixed,f=a.x,u=f===void 0?0:f,y=a.y,g=y===void 0?0:y,v=typeof d=="function"?d({x:u,y:g}):{x:u,y:g};u=v.x,g=v.y;var x=a.hasOwnProperty("x"),C=a.hasOwnProperty("y"),O=B,b=A,w=window;if(c){var m=Ee(i),I="clientHeight",E="clientWidth";if(m===Z(i)&&(m=ie(i),J(m).position!=="static"&&r==="absolute"&&(I="scrollHeight",E="scrollWidth")),m=m,o===A||(o===B||o===N)&&s===Ie){b=V;var S=h&&m===w&&w.visualViewport?w.visualViewport.height:m[I];g-=S-n.height,g*=l?1:-1}if(o===B||(o===A||o===V)&&s===Ie){O=N;var R=h&&m===w&&w.visualViewport?w.visualViewport.width:m[E];u-=R-n.width,u*=l?1:-1}}var L=Object.assign({position:r},c&&$n),M=d===!0?jn({x:u,y:g},Z(i)):{x:u,y:g};if(u=M.x,g=M.y,l){var X;return Object.assign({},L,(X={},X[b]=C?"0":"",X[O]=x?"0":"",X.transform=(w.devicePixelRatio||1)<=1?"translate("+u+"px, "+g+"px)":"translate3d("+u+"px, "+g+"px, 0)",X))}return Object.assign({},L,(e={},e[b]=C?g+"px":"",e[O]=x?u+"px":"",e.transform="",e))}function Fn(t){var e=t.state,i=t.options,n=i.gpuAcceleration,o=n===void 0?!0:n,s=i.adaptive,a=s===void 0?!0:s,r=i.roundOffsets,l=r===void 0?!0:r,c={placement:G(e.placement),variation:pe(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:o,isFixed:e.options.strategy==="fixed"};e.modifiersData.popperOffsets!=null&&(e.styles.popper=Object.assign({},e.styles.popper,wt(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:a,roundOffsets:l})))),e.modifiersData.arrow!=null&&(e.styles.arrow=Object.assign({},e.styles.arrow,wt(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})}const Gn={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:Fn,data:{}};var Ye={passive:!0};function Un(t){var e=t.state,i=t.instance,n=t.options,o=n.scroll,s=o===void 0?!0:o,a=n.resize,r=a===void 0?!0:a,l=Z(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return s&&c.forEach(function(d){d.addEventListener("scroll",i.update,Ye)}),r&&l.addEventListener("resize",i.update,Ye),function(){s&&c.forEach(function(d){d.removeEventListener("scroll",i.update,Ye)}),r&&l.removeEventListener("resize",i.update,Ye)}}const zn={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:Un,data:{}};var Kn={left:"right",right:"left",bottom:"top",top:"bottom"};function Le(t){return t.replace(/left|right|bottom|top/g,function(e){return Kn[e]})}var qn={start:"end",end:"start"};function xt(t){return t.replace(/start|end/g,function(e){return qn[e]})}function Ge(t){var e=Z(t),i=e.pageXOffset,n=e.pageYOffset;return{scrollLeft:i,scrollTop:n}}function Ue(t){return he(ie(t)).left+Ge(t).scrollLeft}function _n(t,e){var i=Z(t),n=ie(t),o=i.visualViewport,s=n.clientWidth,a=n.clientHeight,r=0,l=0;if(o){s=o.width,a=o.height;var c=Ht();(c||!c&&e==="fixed")&&(r=o.offsetLeft,l=o.offsetTop)}return{width:s,height:a,x:r+Ue(t),y:l}}function Jn(t){var e,i=ie(t),n=Ge(t),o=(e=t.ownerDocument)==null?void 0:e.body,s=re(i.scrollWidth,i.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),a=re(i.scrollHeight,i.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),r=-n.scrollLeft+Ue(t),l=-n.scrollTop;return J(o||i).direction==="rtl"&&(r+=re(i.clientWidth,o?o.clientWidth:0)-s),{width:s,height:a,x:r,y:l}}function ze(t){var e=J(t),i=e.overflow,n=e.overflowX,o=e.overflowY;return/auto|scroll|overlay|hidden/.test(i+o+n)}function Nt(t){return["html","body","#document"].indexOf(U(t))>=0?t.ownerDocument.body:D(t)&&ze(t)?t:Nt(ke(t))}function xe(t,e){var i;e===void 0&&(e=[]);var n=Nt(t),o=n===((i=t.ownerDocument)==null?void 0:i.body),s=Z(n),a=o?[s].concat(s.visualViewport||[],ze(n)?n:[]):n,r=e.concat(a);return o?r:r.concat(xe(ke(a)))}function De(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function Qn(t,e){var i=he(t,!1,e==="fixed");return i.top=i.top+t.clientTop,i.left=i.left+t.clientLeft,i.bottom=i.top+t.clientHeight,i.right=i.left+t.clientWidth,i.width=t.clientWidth,i.height=t.clientHeight,i.x=i.left,i.y=i.top,i}function It(t,e,i){return e===Bt?De(_n(t,i)):ae(e)?Qn(e,i):De(Jn(ie(t)))}function eo(t){var e=xe(ke(t)),i=["absolute","fixed"].indexOf(J(t).position)>=0,n=i&&D(t)?Ee(t):t;return ae(n)?e.filter(function(o){return ae(o)&&Wt(o,n)&&U(o)!=="body"}):[]}function to(t,e,i,n){var o=e==="clippingParents"?eo(t):[].concat(e),s=[].concat(o,[i]),a=s[0],r=s.reduce(function(l,c){var d=It(t,c,n);return l.top=re(d.top,l.top),l.right=Pe(d.right,l.right),l.bottom=Pe(d.bottom,l.bottom),l.left=re(d.left,l.left),l},It(t,a,n));return r.width=r.right-r.left,r.height=r.bottom-r.top,r.x=r.left,r.y=r.top,r}function $t(t){var e=t.reference,i=t.element,n=t.placement,o=n?G(n):null,s=n?pe(n):null,a=e.x+e.width/2-i.width/2,r=e.y+e.height/2-i.height/2,l;switch(o){case A:l={x:a,y:e.y-i.height};break;case V:l={x:a,y:e.y+e.height};break;case N:l={x:e.x+e.width,y:r};break;case B:l={x:e.x-i.width,y:r};break;default:l={x:e.x,y:e.y}}var c=o?Fe(o):null;if(c!=null){var d=c==="y"?"height":"width";switch(s){case de:l[c]=l[c]-(e[d]/2-i[d]/2);break;case Ie:l[c]=l[c]+(e[d]/2-i[d]/2);break}}return l}function Ce(t,e){e===void 0&&(e={});var i=e,n=i.placement,o=n===void 0?t.placement:n,s=i.strategy,a=s===void 0?t.strategy:s,r=i.boundary,l=r===void 0?xn:r,c=i.rootBoundary,d=c===void 0?Bt:c,h=i.elementContext,f=h===void 0?ye:h,u=i.altBoundary,y=u===void 0?!1:u,g=i.padding,v=g===void 0?0:g,x=Dt(typeof v!="number"?v:Vt(v,Oe)),C=f===ye?In:ye,O=t.rects.popper,b=t.elements[y?C:f],w=to(ae(b)?b:b.contextElement||ie(t.elements.popper),l,d,a),m=he(t.elements.reference),I=$t({reference:m,element:O,strategy:"absolute",placement:o}),E=De(Object.assign({},O,I)),S=f===ye?E:m,R={top:w.top-S.top+x.top,bottom:S.bottom-w.bottom+x.bottom,left:w.left-S.left+x.left,right:S.right-w.right+x.right},L=t.modifiersData.offset;if(f===ye&&L){var M=L[o];Object.keys(R).forEach(function(X){var K=[N,V].indexOf(X)>=0?1:-1,q=[A,V].indexOf(X)>=0?"y":"x";R[X]+=M[q]*K})}return R}function io(t,e){e===void 0&&(e={});var i=e,n=i.placement,o=i.boundary,s=i.rootBoundary,a=i.padding,r=i.flipVariations,l=i.allowedAutoPlacements,c=l===void 0?Mt:l,d=pe(n),h=d?r?yt:yt.filter(function(y){return pe(y)===d}):Oe,f=h.filter(function(y){return c.indexOf(y)>=0});f.length===0&&(f=h);var u=f.reduce(function(y,g){return y[g]=Ce(t,{placement:g,boundary:o,rootBoundary:s,padding:a})[G(g)],y},{});return Object.keys(u).sort(function(y,g){return u[y]-u[g]})}function no(t){if(G(t)===Ne)return[];var e=Le(t);return[xt(t),e,xt(e)]}function oo(t){var e=t.state,i=t.options,n=t.name;if(!e.modifiersData[n]._skip){for(var o=i.mainAxis,s=o===void 0?!0:o,a=i.altAxis,r=a===void 0?!0:a,l=i.fallbackPlacements,c=i.padding,d=i.boundary,h=i.rootBoundary,f=i.altBoundary,u=i.flipVariations,y=u===void 0?!0:u,g=i.allowedAutoPlacements,v=e.options.placement,x=G(v),C=x===v,O=l||(C||!y?[Le(v)]:no(v)),b=[v].concat(O).reduce(function(j,$){return j.concat(G($)===Ne?io(e,{placement:$,boundary:d,rootBoundary:h,padding:c,flipVariations:y,allowedAutoPlacements:g}):$)},[]),w=e.rects.reference,m=e.rects.popper,I=new Map,E=!0,S=b[0],R=0;R=0,q=K?"width":"height",P=Ce(e,{placement:L,boundary:d,rootBoundary:h,altBoundary:f,padding:c}),H=K?X?N:B:X?V:A;w[q]>m[q]&&(H=Le(H));var le=Le(H),_=[];if(s&&_.push(P[M]<=0),r&&_.push(P[H]<=0,P[le]<=0),_.every(function(j){return j})){S=L,E=!1;break}I.set(L,_)}if(E)for(var ce=y?3:1,fe=function($){var te=b.find(function(oe){var F=I.get(oe);if(F)return F.slice(0,$).every(function(me){return me})});if(te)return S=te,"break"},Q=ce;Q>0;Q--){var ee=fe(Q);if(ee==="break")break}e.placement!==S&&(e.modifiersData[n]._skip=!0,e.placement=S,e.reset=!0)}}const so={name:"flip",enabled:!0,phase:"main",fn:oo,requiresIfExists:["offset"],data:{_skip:!1}};function Ct(t,e,i){return i===void 0&&(i={x:0,y:0}),{top:t.top-e.height-i.y,right:t.right-e.width+i.x,bottom:t.bottom-e.height+i.y,left:t.left-e.width-i.x}}function Ot(t){return[A,N,V,B].some(function(e){return t[e]>=0})}function ro(t){var e=t.state,i=t.name,n=e.rects.reference,o=e.rects.popper,s=e.modifiersData.preventOverflow,a=Ce(e,{elementContext:"reference"}),r=Ce(e,{altBoundary:!0}),l=Ct(a,n),c=Ct(r,o,s),d=Ot(l),h=Ot(c);e.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:d,hasPopperEscaped:h},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":d,"data-popper-escaped":h})}const ao={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:ro};function lo(t,e,i){var n=G(t),o=[B,A].indexOf(n)>=0?-1:1,s=typeof i=="function"?i(Object.assign({},e,{placement:t})):i,a=s[0],r=s[1];return a=a||0,r=(r||0)*o,[B,N].indexOf(n)>=0?{x:r,y:a}:{x:a,y:r}}function co(t){var e=t.state,i=t.options,n=t.name,o=i.offset,s=o===void 0?[0,0]:o,a=Mt.reduce(function(d,h){return d[h]=lo(h,e.rects,s),d},{}),r=a[e.placement],l=r.x,c=r.y;e.modifiersData.popperOffsets!=null&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=c),e.modifiersData[n]=a}const uo={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:co};function ho(t){var e=t.state,i=t.name;e.modifiersData[i]=$t({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})}const po={name:"popperOffsets",enabled:!0,phase:"read",fn:ho,data:{}};function fo(t){return t==="x"?"y":"x"}function mo(t){var e=t.state,i=t.options,n=t.name,o=i.mainAxis,s=o===void 0?!0:o,a=i.altAxis,r=a===void 0?!1:a,l=i.boundary,c=i.rootBoundary,d=i.altBoundary,h=i.padding,f=i.tether,u=f===void 0?!0:f,y=i.tetherOffset,g=y===void 0?0:y,v=Ce(e,{boundary:l,rootBoundary:c,padding:h,altBoundary:d}),x=G(e.placement),C=pe(e.placement),O=!C,b=Fe(x),w=fo(b),m=e.modifiersData.popperOffsets,I=e.rects.reference,E=e.rects.popper,S=typeof g=="function"?g(Object.assign({},e.rects,{placement:e.placement})):g,R=typeof S=="number"?{mainAxis:S,altAxis:S}:Object.assign({mainAxis:0,altAxis:0},S),L=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,M={x:0,y:0};if(m){if(s){var X,K=b==="y"?A:B,q=b==="y"?V:N,P=b==="y"?"height":"width",H=m[b],le=H+v[K],_=H-v[q],ce=u?-E[P]/2:0,fe=C===de?I[P]:E[P],Q=C===de?-E[P]:-I[P],ee=e.elements.arrow,j=u&&ee?je(ee):{width:0,height:0},$=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:Zt(),te=$[K],oe=$[q],F=we(0,I[P],j[P]),me=O?I[P]/2-ce-F-te-R.mainAxis:fe-F-te-R.mainAxis,ve=O?-I[P]/2+ce+F+oe+R.mainAxis:Q+F+oe+R.mainAxis,ge=e.elements.arrow&&Ee(e.elements.arrow),Ae=ge?b==="y"?ge.clientTop||0:ge.clientLeft||0:0,Ke=(X=L==null?void 0:L[b])!=null?X:0,Gt=H+me-Ke-Ae,Ut=H+ve-Ke,qe=we(u?Pe(le,Gt):le,H,u?re(_,Ut):_);m[b]=qe,M[b]=qe-H}if(r){var _e,zt=b==="x"?A:B,Kt=b==="x"?V:N,se=m[w],Se=w==="y"?"height":"width",Je=se+v[zt],Qe=se-v[Kt],Be=[A,B].indexOf(x)!==-1,et=(_e=L==null?void 0:L[w])!=null?_e:0,tt=Be?Je:se-I[Se]-E[Se]-et+R.altAxis,it=Be?se+I[Se]+E[Se]-et-R.altAxis:Qe,nt=u&&Be?Wn(tt,se,it):we(u?tt:Je,se,u?it:Qe);m[w]=nt,M[w]=nt-se}e.modifiersData[n]=M}}const vo={name:"preventOverflow",enabled:!0,phase:"main",fn:mo,requiresIfExists:["offset"]};function go(t){return{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}}function yo(t){return t===Z(t)||!D(t)?Ge(t):go(t)}function bo(t){var e=t.getBoundingClientRect(),i=ue(e.width)/t.offsetWidth||1,n=ue(e.height)/t.offsetHeight||1;return i!==1||n!==1}function wo(t,e,i){i===void 0&&(i=!1);var n=D(e),o=D(e)&&bo(e),s=ie(e),a=he(t,o,i),r={scrollLeft:0,scrollTop:0},l={x:0,y:0};return(n||!n&&!i)&&((U(e)!=="body"||ze(s))&&(r=yo(e)),D(e)?(l=he(e,!0),l.x+=e.clientLeft,l.y+=e.clientTop):s&&(l.x=Ue(s))),{x:a.left+r.scrollLeft-l.x,y:a.top+r.scrollTop-l.y,width:a.width,height:a.height}}function xo(t){var e=new Map,i=new Set,n=[];t.forEach(function(s){e.set(s.name,s)});function o(s){i.add(s.name);var a=[].concat(s.requires||[],s.requiresIfExists||[]);a.forEach(function(r){if(!i.has(r)){var l=e.get(r);l&&o(l)}}),n.push(s)}return t.forEach(function(s){i.has(s.name)||o(s)}),n}function Io(t){var e=xo(t);return Tn.reduce(function(i,n){return i.concat(e.filter(function(o){return o.phase===n}))},[])}function Co(t){var e;return function(){return e||(e=new Promise(function(i){Promise.resolve().then(function(){e=void 0,i(t())})})),e}}function Oo(t){var e=t.reduce(function(i,n){var o=i[n.name];return i[n.name]=o?Object.assign({},o,n,{options:Object.assign({},o.options,n.options),data:Object.assign({},o.data,n.data)}):n,i},{});return Object.keys(e).map(function(i){return e[i]})}var Et={placement:"bottom",modifiers:[],strategy:"absolute"};function St(){for(var t=arguments.length,e=new Array(t),i=0;i{this.currentActiveIndex=e,this.currentOrientation=i;const n=fn(this.hotspotsConfig,e,i);this.hideHotspots(),n.forEach(o=>this.updateAndShowHotspot(o,e))});this.container=i,this.popper=null,this.popperInstance=null,this.hotspotsContainer=Fi(this.container),this.hotspotsConfig=bn(e),this.shouldHidePopper=!0,this.hidePopper=this.hidePopper.bind(this),this.imageAspectRatio=n;const{containerSize:o}=e[0];this.initialContainerSize=o||[i.offsetWidth,i.offsetHeight],this.initHotspots(),this.observeContainerResize()}observeContainerResize(){this.resizeObserver=new ResizeObserver(()=>{const e=this.container.offsetWidth,i=this.container.offsetHeight;this.updateHotspotsForResize(e,i)}),this.resizeObserver.observe(this.container)}updateHotspotsForResize(e,i){this.hotspotsConfig=wn({newWidth:e,newHeight:i,initialContainerSize:this.initialContainerSize,imageAspectRatio:this.imageAspectRatio,hotspotsConfig:this.hotspotsConfig}),this.updateHotspotPosition(this.currentActiveIndex,this.currentOrientation)}showPopper({hotspotElement:e,content:i,id:n,keepOpen:o}){this.popperInstance&&this.popperInstance.instanceId!==n&&this.hidePopper();const s={placement:"top",modifiers:gn(this.container)};this.popper=yn(i,n),this.popper.setAttribute("data-show",""),this.popper.addEventListener("mouseenter",()=>{this.shouldHidePopper=!1}),this.popper.addEventListener("mouseleave",()=>{this.shouldHidePopper=!0,this.checkAndHidePopper()}),e.addEventListener("mouseleave",()=>{this.shouldHidePopper=!0,this.checkAndHidePopper()}),e.addEventListener("mouseenter",()=>{this.shouldHidePopper=!1,this.hidePopperTimeout&&clearTimeout(this.hidePopperTimeout)}),this.popperInstance={...Ro(e,this.popper,s),keepOpen:o,instanceId:n}}checkAndHidePopper(){var e;this.shouldHidePopper&&!((e=this.popperInstance)!=null&&e.keepOpen)&&(this.hidePopperTimeout=setTimeout(()=>{this.shouldHidePopper&&this.hidePopper()},150))}hidePopper(){this.popperInstance&&(this.popperInstance.destroy(),this.popperInstance=null),this.popper&&(this.popper.removeAttribute("data-show"),setTimeout(()=>{this.popper&&this.popper.remove(),this.popper=null},200))}createHotspot(e){const{id:i,content:n,keepOpen:o,onClick:s}=e,a=mn(i);s&&(a.style.cursor="pointer"),a.onclick=r=>{r.stopPropagation(),s==null||s(r,this.popperInstance,i)},n&&a.addEventListener("mouseenter",()=>this.showPopper({hotspotElement:a,content:n,id:i,keepOpen:o})),this.hotspotsContainer.appendChild(a)}hideHotspots(){this.hotspotsContainer.querySelectorAll(".cloudimage-360-hotspot").forEach(e=>{e.style.opacity=0,e.style.pointerEvents="none"})}updateAndShowHotspot(e,i){const{positions:n,id:o}=e,{x:s,y:a}=n[i]??{},r=this.hotspotsContainer.querySelector(`[data-hotspot-id="${o}"]`);r&&(r.style.translate=`${s}px ${a}px`,r.style.opacity=1,r.style.pointerEvents="all")}createAllHotspots(){this.hotspotsConfig.forEach(e=>this.createHotspot(e))}initHotspots(){this.createAllHotspots()}destroy(){this.resizeObserver.disconnect(),this.hidePopper(),this.hotspotsContainer.innerHTML=""}}class Te{constructor(e,i,n){this.container=e,this.isClicked=!1,this.fullscreenView=!!n,this.imagesX=[],this.imagesY=[],this.devicePixelRatio=Math.round(window.devicePixelRatio||1),this.id=e.id,this.movementStart={x:0,y:0},this.draggingDirection=null,this.isReady=!1,this.currentZoomScale=1,this.touchDevice=cn(),this.canvasWorker=new hn,this.onMoveHandler=this.onMoveHandler.bind(this),this.destroy=this.destroy.bind(this),this.init(this.container,i)}mouseDown(e){if(!this.isReady||this.glass)return;const{pageX:i,pageY:n}=e;(this.autoplay||this.loopTimeoutId)&&(this.stopAutoplay(),this.autoplay=!1),this.movementStart={x:i,y:n},this.isClicked=!0,this.isDragging=!1}mouseUp(){this.isReady&&(this.isZoomed||this.showAllIcons(),this.movementStart={x:0,y:0},this.isClicked=!1,this.innerBox.style.cursor="grab")}drag(e,i){if(!this.isReady||!this.isClicked)return;const n=e-this.movementStart.x,o=i-this.movementStart.y;this.draggingDirection=ln({deltaX:n,deltaY:o,reversed:this.dragReverse,allowSpinX:this.allowSpinX,allowSpinY:this.allowSpinY})||this.draggingDirection;const s=this.fullscreenView?document.body:this.container,a=this.dragSpeed/50,r=a*(this.amountX/s.offsetWidth),l=a*(this.amountY/s.offsetHeight),c=this.allowSpinX?Math.abs(Math.round(n*r)):0,d=this.allowSpinY?Math.abs(Math.round(o*l)):0;(this.allowSpinX&&c!==0||this.allowSpinY&&d!==0)&&(this.hideHotspotPopper(),this.onMoveHandler(this.draggingDirection,c,d),this.movementStart={x:e,y:i},setTimeout(()=>{this.isDragging=!0},150))}mouseMove(e){!this.isReady||!this.isClicked&&!this.isZoomed||this.glass||(this.hideAllIcons(),this.drag(e.pageX,e.pageY),this.isZoomed&&this.applyZoom(e))}mouseClick(e){if(!(!this.isReady||this.isDragging)){if(this.glass&&this.magnified){this.removeGlass();return}this.pointerZoom&&!this.glass&&!this.touchDevice&&this.toggleZoom(e)}}loadHigherQualityImages(e,i){const n=be(this.srcXConfig,e),o=this.allowSpinY?be(this.srcYConfig,e):null;dt({cdnPathX:n,cdnPathY:o,configX:this.srcXConfig,configY:this.srcYConfig,onAllImagesLoad:(s,a)=>{this.imagesX=s,this.imagesY=a,i()}})}hideHotspots(){this.hotspotsInstance&&this.hotspotsInstance.hideHotspots()}hideHotspotPopper(){this.hotspotsInstance&&this.hotspotsInstance.hidePopper()}toggleZoom(e){if(this.isZoomed)this.showTransitionOverlay(),setTimeout(()=>{this.removeZoom()},800);else{let i=(this.fullscreenView||this.pointerZoom?document.body:this.container).offsetWidth;this.hideHotspots(),this.showLoadingSpinner(),this.loadHigherQualityImages(i,()=>{this.showTransitionOverlay(),setTimeout(()=>{this.applyZoom(e)},800)})}}removeZoom(){this.isZoomed=!1,this.updateView(),this.showAllIcons(),this.hideTransitionOverlay()}applyZoom(e){const{offsetX:i,offsetY:n}=tn(e,this.canvas,this.devicePixelRatio);this.isZoomed=!0,this.hideAllIcons(),this.hideLoadingSpinner(),this.hideTransitionOverlay(),this.updateView(this.pointerZoom,i,n)}touchOutside(e){if(!this.glass)return;!this.canvas.contains(e.target)&&this.removeGlass()}touchStart(e){if(!this.isReady||e.touches.length>1||this.glass)return;const{pageX:i,pageY:n}=e.touches[0];(this.autoplay||this.loopTimeoutId)&&(this.stopAutoplay(),this.autoplay=!1),this.hideAllIcons(),this.movementStart={x:i,y:n},this.isClicked=!0}touchEnd(){this.isReady&&(this.showAllIcons(),this.movementStart={x:0,y:0},this.isClicked=!1)}touchMove(e){if(!this.isReady||!this.isClicked||this.glass)return;const{pageX:i,pageY:n}=e.touches[0];e.preventDefault(),this.drag(i,n)}keyDown(e){if(!this.isReady)return;const{keyCode:i}=e,n=this.keysReverse;switch(vt(i,this.allowSpinY)&&this.hideAllIcons(),i){case 37:n?this.moveLeft():this.moveRight();break;case 39:n?this.moveRight():this.moveLeft();break;case 38:this.allowSpinY&&(e.preventDefault(),n?this.moveTop():this.moveBottom());break;case 40:this.allowSpinY&&(e.preventDefault(),n?this.moveBottom():this.moveTop());break}}keyUp(e){const{keyCode:i}=e;vt(i,this.allowSpinY)&&this.showAllIcons()}moveActiveXIndexUp(e){this.orientation=k.X,this.activeImageX=(this.activeImageX+e)%this.amountX}moveActiveXIndexDown(e){this.orientation=k.X,this.activeImageX=(this.activeImageX-e+this.amountX)%this.amountX}moveActiveYIndexUp(e){this.orientation=k.Y,this.activeImageY=(this.activeImageY+e)%this.amountY}moveActiveYIndexDown(e){this.orientation=k.Y,this.activeImageY=(this.activeImageY-e+this.amountY)%this.amountY}moveRight(e,i=1){e&&this.activeImageX>=this.imagesX.length-1||(this.moveActiveXIndexUp(i),this.isZoomed||this.updateView())}moveLeft(e,i=1){e&&this.activeImageX<=0||(this.moveActiveXIndexDown(i),this.isZoomed||this.updateView())}moveTop(e,i=1){e&&this.activeImageY>=this.imagesY.length-1||(this.moveActiveYIndexUp(i),this.isZoomed||this.updateView())}moveBottom(e,i=1){e&&this.activeImageY<=0||(this.moveActiveYIndexDown(i),this.isZoomed||this.updateView())}onMoveHandler(e,i=1,n=1){e==="right"?this.moveRight(this.stopAtEdges,i):e==="left"?this.moveLeft(this.stopAtEdges,i):e==="up"?this.moveTop(this.stopAtEdges,n):e==="down"&&this.moveBottom(this.stopAtEdges,n)}updateView(e,i,n){const o=this.orientation===k.X?this.activeImageX:this.activeImageY,s=this.orientation===k.X?this.imagesX[this.activeImageX]:this.imagesY[this.activeImageY];this.hotspotsInstance&&!this.isZoomed&&!this.autoplay&&this.hotspotsInstance.updateHotspotPosition(o,this.orientation),this.drawImageOnCanvas(s,e,i,n)}updatePercentageInLoader(e=0){this.loader&&(this.loader.innerText=e+"%")}adaptCanvasSize(e){const{naturalWidth:i,naturalHeight:n}=e;this.imageAspectRatio=i/n;const o=this.fullscreenView?window.innerWidth:this.canvas.clientWidth,s=this.fullscreenView?window.innerHeight:this.canvas.clientHeight;this.canvasWorker.postMessage({action:"adaptCanvasSize",devicePixelRatio:this.devicePixelRatio,imageAspectRatio:this.imageAspectRatio,containerWidth:o,containerHeight:s})}drawImageOnCanvas(e,i=1,n=0,o=0){this.canvasWorker.postMessage({action:"drawImageOnCanvas",imageData:e,zoomScale:i,pointerX:n,pointerY:o})}pushImageToSet(e,i,n){n===k.X?this.imagesX[i]=e:this.imagesY[i]=e}calculatePercentage(){const e=this.amountX+this.amountY,i=this.imagesX.length+this.imagesY.length;return Math.round(i/e*100)}onImageLoad(e,i,n){this.pushImageToSet(e,i,n),this.updatePercentageInLoader(this.calculatePercentage())}onFirstImageLoaded(e,i){this.createContainers(e),this.adaptCanvasSize(i),this.drawImageOnCanvas(i)}onAllImagesLoaded(){this.addAllIcons(),this.hotspots&&(this.hotspotsInstance=new Yo(this.hotspots,this.innerBox,this.imageAspectRatio)),this.isReady=!0,this.amountX=this.imagesX.length,this.amountY=this.imagesY.length,this.activeImageX=this.autoplayReverse?this.amountX-1:0,this.activeImageY=this.autoplayReverse?this.amountY-1:0,this.autoplay&&(this.hideAllIcons(),dn(this.play.bind(this))())}magnify(e){e.stopPropagation();const{src:i}=this.orientation===k.Y?this.imagesY[this.activeImageY]:this.imagesX[this.activeImageX],o=(this.fullscreenView?document.body:this.container).offsetWidth*this.magnifier,s=Yi(i,o);this.showLoadingSpinner(),this.createGlass(),Ji(s,r=>{this.hideLoadingSpinner(),this.magnified=!0,en(e,this.innerBox,this.offset,r,this.glass,this.magnifier)})}openFullscreenModal(e){e.stopPropagation();const i=Ni(this.container);new Te(i,this.viewerConfig,!0)}closeFullscreenModal(e){e.stopPropagation(),document.body.removeChild(this.container.parentNode),window.document.body.style.overflow="visible"}play(){if(this.isClicked)return;this.hide360ViewCircleIcon();const e=this.speed*36/(this.amountX+this.amountY),i={left:this.moveLeft.bind(this),right:this.moveRight.bind(this),top:this.moveTop.bind(this),bottom:this.moveBottom.bind(this)};this.loopTimeoutId=window.setInterval(()=>{if(this.playOnce&&on({autoplayBehavior:this.autoplayBehavior,activeImageX:this.activeImageX,activeImageY:this.activeImageY,amountX:this.amountX,amountY:this.amountY,autoplayReverse:this.autoplayReverse})){this.stopAutoplay();return}sn({autoplayBehavior:this.autoplayBehavior,activeImageX:this.activeImageX,activeImageY:this.activeImageY,amountX:this.amountX,amountY:this.amountY,autoplayReverse:this.autoplayReverse,spinDirection:this.spinDirection})&&(this.spinDirection=an(this.spinDirection));const s=this.spinDirection==="y";nn({autoplayBehavior:this.autoplayBehavior,spinY:s,reversed:this.autoplayReverse,loopTriggers:i})},e)}stopAutoplay(){this.showAllIcons(),this.autoplay=!1,window.clearTimeout(this.loopTimeoutId)}destroy(){this.stopAutoplay(),this.hotspotsInstance&&this.hotspotsInstance.destroy();const e=this.container,i=e.cloneNode(!0),n=i.querySelector(".cloudimage-360-inner-box");i.removeChild(n),e.parentNode.replaceChild(i,e)}addInitialIcon(){this.initialIcon||(this.initialIcon=Ti(),this.innerBox.appendChild(this.initialIcon))}showInitialIcon(){this.initialIcon&&(this.initialIcon.style.opacity=1)}hideInitialIcon(){this.initialIcon&&(this.initialIcon.style.opacity=0)}createGlass(){this.hideAllIcons(),this.glass=document.createElement("div"),this.innerBox.appendChild(this.glass),this.innerBox.style.cursor="default"}removeGlass(){this.showAllIcons(),this.innerBox.removeChild(this.glass),this.glass=null,this.magnified=!1}addMagnifierIcon(){this.magnifier&&(this.magnifierIcon=Di(),this.magnifierIcon.onclick=this.magnify.bind(this),this.iconsContainer.appendChild(this.magnifierIcon))}showMagnifierIcon(){this.magnifierIcon&&(this.magnifierIcon.style.visibility="visible",this.magnifierIcon.style.opacity=1)}hideMagnifierIcon(){this.magnifierIcon&&(this.magnifierIcon.style.visibility="hidden",this.magnifierIcon.style.opacity=0)}addFullscreenIcon(){this.fullscreen&&(this.fullscreenIcon=Hi(),this.fullscreenIcon.onclick=this.openFullscreenModal.bind(this),this.iconsContainer.appendChild(this.fullscreenIcon))}addCloseFullscreenIcon(){this.fullscreenCloseIcon=Bi(),this.fullscreenCloseIcon.onclick=this.closeFullscreenModal.bind(this),this.iconsContainer.appendChild(this.fullscreenCloseIcon)}showFullscreenIcon(){this.fullscreenIcon&&(this.fullscreenIcon.style.opacity=1)}hideFullscreenIcon(){this.fullscreenIcon&&(this.fullscreenIcon.style.opacity=0)}add360ViewCircleIcon(){this.view360CircleIcon||(this.view360CircleIcon=Pi(this.bottomCircleOffset),this.innerBox.appendChild(this.view360CircleIcon))}show360ViewCircleIcon(){this.view360CircleIcon&&(this.view360CircleIcon.style.opacity=1)}hide360ViewCircleIcon(){this.view360CircleIcon&&(this.view360CircleIcon.style.opacity=0)}addLoadingSpinner(){this.loadingSpinner=$i(),this.innerBox.appendChild(this.loadingSpinner)}showLoadingSpinner(){this.loadingSpinner&&(this.hideAllIcons(),this.loadingSpinner.style.opacity=1)}createTransitionOverlay(){this.transitionOverlay=ji(),this.innerBox.appendChild(this.transitionOverlay)}showTransitionOverlay(){this.transitionOverlay&&(this.hideAllIcons(),this.transitionOverlay.style.opacity=1)}hideTransitionOverlay(){this.transitionOverlay&&(this.transitionOverlay.style.opacity=0)}hideLoadingSpinner(){this.loadingSpinner&&(this.loadingSpinner.style.opacity=0)}remove360ViewCircleIcon(){this.view360CircleIcon&&(this.innerBox.removeChild(this.view360CircleIcon),this.view360CircleIcon=null)}addAllIcons(){this.removeLoader(),this.innerBox.style.cursor="grab",this.pointerZoom&&(this.createTransitionOverlay(),this.addLoadingSpinner()),!this.fullscreenView&&!this.touchDevice&&this.addMagnifierIcon(),this.fullscreenView||this.addFullscreenIcon(),this.initialIconShown&&this.addInitialIcon(),this.bottomCircle||this.add360ViewCircleIcon()}showAllIcons(){this.showInitialIcon(),this.show360ViewCircleIcon(),this.showMagnifierIcon(),this.showFullscreenIcon()}hideAllIcons(){this.hideInitialIcon(),this.hide360ViewCircleIcon(),this.hideMagnifierIcon(),this.hideFullscreenIcon()}removeLoader(){this.loader&&(this.innerBox.removeChild(this.loader),this.loader=null)}attachEvents(e,i,n){e&&this.addMouseEvents(),i&&this.addTouchEvents(),n&&this.addKeyboardEvents()}removeEvents(){this.removeMouseEvents(),this.removeTouchEvents(),this.removeKeyboardEvents()}addMouseEvents(){this.boundMouseClick=this.mouseClick.bind(this),this.boundMouseDown=this.mouseDown.bind(this),this.boundMouseMove=at(this.mouseMove.bind(this),lt),this.boundMouseUp=this.mouseUp.bind(this),this.innerBox.addEventListener("click",this.boundMouseClick),this.innerBox.addEventListener("mousedown",this.boundMouseDown),document.addEventListener("mousemove",this.boundMouseMove),document.addEventListener("mouseup",this.boundMouseUp)}addTouchEvents(){this.boundTouchOutside=this.touchOutside.bind(this),this.boundTouchStart=this.touchStart.bind(this),this.boundTouchEnd=this.touchEnd.bind(this),this.boundTouchMove=at(this.touchMove.bind(this),lt),document.addEventListener("touchstart",this.boundTouchOutside),this.container.addEventListener("touchstart",this.boundTouchStart),this.container.addEventListener("touchend",this.boundTouchEnd),this.container.addEventListener("touchmove",this.boundTouchMove)}addKeyboardEvents(){this.boundKeyDown=this.keyDown.bind(this),this.boundKeyUp=this.keyUp.bind(this),document.addEventListener("keydown",this.boundKeyDown),document.addEventListener("keyup",this.boundKeyUp)}removeMouseEvents(){this.innerBox.removeEventListener("click",this.boundMouseClick),this.innerBox.removeEventListener("mousedown",this.boundMouseDown),document.removeEventListener("mousemove",this.boundMouseMove),document.removeEventListener("mouseup",this.boundMouseUp)}removeTouchEvents(){document.removeEventListener("touchstart",this.boundTouchOutside),this.container.removeEventListener("touchstart",this.boundTouchStart),this.container.removeEventListener("touchend",this.boundTouchEnd),this.container.removeEventListener("touchmove",this.boundTouchMove)}removeKeyboardEvents(){document.removeEventListener("keydown",this.boundKeyDown),document.removeEventListener("keyup",this.boundKeyUp)}createContainers(e){this.iconsContainer=ut(this.innerBox),this.canvas=ki(this.innerBox,e),this.loader=Vi(this.innerBox);const i=this.canvas.transferControlToOffscreen();this.canvasWorker.postMessage({action:"initCanvas",offscreen:i,devicePixelRatio:this.devicePixelRatio},[i]),this.fullscreenView&&this.addCloseFullscreenIcon(),We(this.innerBox,".cloudimage-360-placeholder")}update(e){this.isReady&&(this.stopAutoplay(),We(this.innerBox,".cloudimage-360-icons-container"),this.init(this.container,e,!0),this.iconsContainer=ut(this.innerBox),this.onAllImagesLoaded())}init(e,i,n){const o=i?Ii(i):xi(e),{folder:s,apiVersion:a,filenameX:r,filenameY:l,imageListX:c,imageListY:d,indexZeroBase:h,amountX:f,amountY:u,draggable:y=!0,swipeable:g=!0,keys:v,keysReverse:x,bottomCircleOffset:C,autoplay:O,autoplayBehavior:b,playOnce:w,speed:m,autoplayReverse:I,fullscreen:E,magnifier:S,ciToken:R,ciFilters:L,ciTransformation:M,lazyload:X,dragSpeed:K,stopAtEdges:q,pointerZoom:P,imageInfo:H="black",initialIconShown:le,bottomCircle:_,hotspots:ce,dragReverse:fe}=o,Q={ciToken:R,ciFilters:L,ciTransformation:M},ee=c?JSON.parse(c):[],j=d?JSON.parse(d):[];if(this.viewerConfig=o,this.amountX=ee.length||f,this.amountY=j.length||u,this.allowSpinX=!!this.amountX,this.allowSpinY=!!this.amountY,this.activeImageX=I?this.amountX-1:0,this.activeImageY=I?this.amountY-1:0,this.bottomCircleOffset=C,this.autoplay=O,this.autoplayBehavior=b,this.playOnce=w,this.speed=m,this.autoplayReverse=I,this.fullscreen=E,this.magnifier=S>1?Math.min(S,5):0,this.dragSpeed=Math.max(K,50),this.stopAtEdges=q,this.ciParams=Q,this.apiVersion=a,this.pointerZoom=P>1?Math.min(P,5):null,this.keysReverse=x,this.info=H,this.keys=v,this.innerBox=this.innerBox??Wi(this.container),this.initialIconShown=le,this.bottomCircle=_,this.spinDirection=rn(this.autoplayBehavior,this.allowSpinX,this.allowSpinY),this.dragReverse=fe,this.hotspots=ce,this.srcXConfig={folder:s,filename:r,imageList:ee,container:e,innerBox:this.innerBox,apiVersion:a,ciParams:Q,lazyload:X,amount:this.amountX,indexZeroBase:h,autoplayReverse:I},this.srcYConfig={...this.srcXConfig,filename:l,imageList:j,orientation:k.Y,amount:this.amountY},n&&this.removeEvents(),this.attachEvents(y,g,v),n)return;const $=(this.fullscreenView?document.body:this.container).offsetWidth,te=this.allowSpinX&&!ee.length?be(this.srcXConfig,$):null,oe=this.allowSpinY&&!j.length?be(this.srcYConfig,$):null,F=me=>{dt({cdnPathX:te,cdnPathY:oe,configX:this.srcXConfig,configY:this.srcYConfig,onImageLoad:(ve,ge,Ae)=>this.onImageLoad(ve,ge,Ae),onFirstImageLoad:ve=>this.onFirstImageLoaded(me,ve),onAllImagesLoad:this.onAllImagesLoaded.bind(this)})};this.allowSpinX?pt(te,this.srcXConfig,F):this.allowSpinY&&pt(oe,this.srcYConfig,F)}}class jt{constructor(){this.views=new Map,this.initAll=this.initAll.bind(this),this.getViews=this.getViews.bind(this)}generateId(){return`ci360-${Math.random().toString(36).slice(2,11)}`}init(e,i,n){if(!e)return;const o=e.id||this.generateId();e.id||(e.id=o);const s=new Te(e,i,n);return this.views.set(o,s),s}initAll(e="cloudimage-360"){[...document.querySelectorAll(`.${e}`)].filter(Boolean).forEach(n=>{const o=n.id||this.generateId();n.id||(n.id=o);const s=new Te(n);this.views.set(o,s)})}destroy(e){const i=this.getViewById(e);i&&(i.destroy(),this.views.delete(e))}destroyAll(){this.views.forEach(e=>{e.destroy()}),this.views.clear()}getViewById(e){return this.views.get(e)}getViews(){return Array.from(this.views.values())}updateView(e,i){const n=this.getViewById(e),o={...n.viewerConfig,...i};if(Ci(n.viewerConfig,i)){n.destroy();const a=document.getElementById(e);this.init(a,o)}else n.update(o);return n}}window.CI360=jt;const Lo=[{id:"hotspot-1",orientation:"x",containerSize:[1170,663],positions:{0:{x:527,y:319},1:{x:527,y:319},2:{x:527,y:null},3:{x:498,y:null},4:{x:470,y:null},5:{x:441,y:null},73:{x:555,y:null},72:{x:586,y:null},71:{x:614,y:null},70:{x:641,y:null},69:{x:668,y:null},68:{x:692,y:null},67:{x:715,y:null},66:{x:736,y:null},65:{x:756,y:null},64:{x:773,y:null},63:{x:787,y:null}},content:'
Info about Hotspot 1
'},{id:"hotspot-2",orientation:"x",containerSize:[1220,680],positions:{73:{x:355,y:474},74:{x:355,y:null},72:{x:341,y:479},71:{x:336,y:null},70:{x:332,y:null},69:{x:327,y:null},68:{x:326,y:null},67:{x:327,y:null},66:{x:331,y:null},65:{x:334,y:null},64:{x:336,y:null},63:{x:347,y:474}},content:'
Info about Hotspot 2
'},{id:"hotspot-3",orientation:"x",containerSize:[1220,680],positions:{11:{x:683,y:151},12:{x:683,y:null},13:{x:683,y:null},14:{x:683,y:null},15:{x:683,y:null},16:{x:683,y:null},17:{x:681,y:152},18:{x:677,y:156},19:{x:671,y:159},20:{x:665,y:163},21:{x:656,y:168},22:{x:650,y:171},23:{x:643,y:176},24:{x:635,y:178},25:{x:628,y:181},26:{x:621,y:null},27:{x:610,y:null},28:{x:598,y:null},29:{x:588,y:null},30:{x:578,y:null},31:{x:570,y:176},32:{x:560,y:173}},content:'
Info about Hotspot 3
'},{id:"hotspot-4",orientation:"x",containerSize:[1220,680],positions:{6:{x:607,y:246},7:{x:619,y:null},8:{x:630,y:null},9:{x:637,y:null},10:{x:642,y:null}},content:'
Info about Hotspot 4
'}],Xo={folder:"https://scaleflex.cloudimg.io/v7/demo/360-nike/",filenameX:"nike-{index}.jpg",filenameY:"nike-y-{index}.jpg",amountX:"35",amountY:"36",autoplayBehavior:"spin-xy"},Po={folder:"https://scaleflex.cloudimg.io/v7/demo/earbuds/",filenameX:"{index}.jpg",amountX:"233",amountY:void 0,filenameY:void 0},Rt={folder:{label:"data-folder",value:"https://scaleflex.cloudimg.io/v7/demo/earbuds/",isRequired:!0,isUrl:!0},filenameX:{label:"data-filename-x",value:"{index}.jpg"},filenameY:{label:"data-filename-y"},amountY:{label:"data-amount-y",isRequired:!1},amountX:{label:"data-amount-x",value:233,isRequired:!0},speed:{label:"data-speed",value:100,isRequired:!1},dragSpeed:{label:"data-drag-speed",value:120,isRequired:!1},autoplay:{label:"data-autoplay",isRequired:!1},pointerZoom:{label:"data-pointer-zoom",value:1.5,isRequired:!1},autoplayBehavior:{label:"data-autoplay-behavior",value:"spin-xy",isRequired:!1},magnifier:{label:"data-magnifier",value:1.5,isRequired:!1},autoplayReverse:{label:"data-autoplay-reverse",isRequired:!1},playOnce:{label:"data-play-once",isRequired:!1},keys:{label:"data-keys",isRequired:!1},keysReverse:{label:"data-keys-reverse",isRequired:!1},draggable:{label:"data-draggable",isRequired:!1},swipeable:{label:"data-swipeable",isRequired:!1},fullscreen:{label:"data-fullscreen",isRequired:!1}},Yt={NAME:"#7B9200",URL:"#2D88CB"},To=["folder","class"],ko=document.getElementById("spin-directions"),Lt=document.getElementById("copy-text"),Xt=document.getElementById("code-block"),Pt=document.getElementById("code-wrapper"),Ve=document.getElementById("pointer-zoom-selector"),Ao=document.querySelector(".copy-button"),Bo=document.querySelector(".output-code"),Mo=document.getElementById("pointer-checkbox"),Ho=document.querySelectorAll(".plugin-option"),Ft=document.getElementById("x-images-selector"),Wo=document.getElementById("images-y"),Zo=document.getElementById("spin-speed"),Do=document.getElementById("drag-speed"),z=new jt;function Vo(t){const i=t.target.value==="Y",n=i?Xo:Po,o=z.updateView("demo-generator",n);Ft.value=i?35:233,Wo.style.display=i?"block":"none",ne(o.viewerConfig)}function No(t){const{value:e}=t.target,i=z.updateView("demo-generator",{dragSpeed:parseInt(e,10)});ne(i.viewerConfig)}function $o(t){const{value:e}=t.target,i=z.updateView("demo-generator",{speed:parseInt(e,10)});ne(i.viewerConfig)}function jo(){navigator.clipboard.writeText(Bo.innerText),Lt.innerHTML="Copied",setTimeout(()=>{Lt.innerHTML="Copy"},500)}function Fo(t){const{value:e}=t.target,i=z.updateView("demo-generator",{amountX:parseInt(e,10)});ne(i.viewerConfig)}function Go(t){const e=t.target.checked,i=parseFloat(Ve.value,10),n=z.updateView("demo-generator",{pointerZoom:e?i:!1});Ve.disabled=!e,ne(n.viewerConfig)}function Uo(t){const{value:e}=t.target,i=z.updateView("demo-generator",{pointerZoom:parseFloat(e,10)});ne(i.viewerConfig)}function zo(t){const e=t.target.checked,i=t.target.getAttribute("data-plugin-property"),n=t.target.getAttribute("data-plugin-value");let o=e;n&&(o=e?JSON.parse(n):void 0);const s=z.updateView("demo-generator",{[i]:o});ne(s.viewerConfig)}function ne(t){Xt.innerText="",Object.keys(t).filter(n=>Rt[n]&&!!t[n]).forEach(n=>{const{label:o}=Rt[n],s=document.createElement("div"),a=document.createElement("span"),r=document.createElement("span");a.innerText=o,a.style.color=Yt.NAME,To.includes(n)&&(r.style.color=Yt.URL),s.appendChild(a),r.innerText=`"${t[n]}"`,s.innerHTML+="=",s.appendChild(r),Xt.appendChild(s),Pt.scrollTop=Pt.scrollHeight})}Do.addEventListener("change",No);Zo.addEventListener("change",$o);Mo.addEventListener("change",Go);Ft.addEventListener("change",Fo);Ve.addEventListener("change",Uo);ko.addEventListener("change",Vo);Ao.addEventListener("click",jo);Ho.forEach(t=>{t.addEventListener("change",zo)});const Ko=document.getElementById("gurkha-suv"),qo={folder:"https://scaleflex.cloudimg.io/v7/demo/suv-orange-car-360/",filenameX:"orange-{index}.jpg",amountX:73,lazyload:!0,speed:120,pointerZoom:2,responsive:"scaleflex",autoplay:!0,fullscreen:!0,magnifier:3,playOnce:!0,hotspots:Lo};z.init(Ko,qo);z.initAll();const _o=z.getViewById("demo-generator");ne(_o.viewerConfig); diff --git a/bundle85636594fb2f2f9d060c.js b/bundle85636594fb2f2f9d060c.js new file mode 100644 index 0000000..f295069 --- /dev/null +++ b/bundle85636594fb2f2f9d060c.js @@ -0,0 +1,3 @@ +/*! For license information please see bundle85636594fb2f2f9d060c.js.LICENSE.txt */ +(()=>{var t={858:(t,e,n)=>{var i="Expected a function",o=/^\s+|\s+$/g,r=/^[-+]0x[0-9a-f]+$/i,a=/^0b[01]+$/i,s=/^0o[0-7]+$/i,c=parseInt,l="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g,u="object"==typeof self&&self&&self.Object===Object&&self,f=l||u||Function("return this")(),h=Object.prototype.toString,d=Math.max,p=Math.min,v=function(){return f.Date.now()};function m(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}function y(t){if("number"==typeof t)return t;if(function(t){return"symbol"==typeof t||function(t){return!!t&&"object"==typeof t}(t)&&"[object Symbol]"==h.call(t)}(t))return NaN;if(m(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=m(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(o,"");var n=a.test(t);return n||s.test(t)?c(t.slice(2),n?2:8):r.test(t)?NaN:+t}t.exports=function(t,e,n){var o=!0,r=!0;if("function"!=typeof t)throw new TypeError(i);return m(n)&&(o="leading"in n?!!n.leading:o,r="trailing"in n?!!n.trailing:r),function(t,e,n){var o,r,a,s,c,l,u=0,f=!1,h=!1,g=!0;if("function"!=typeof t)throw new TypeError(i);function b(e){var n=o,i=r;return o=r=void 0,u=e,s=t.apply(i,n)}function w(t){var n=t-l;return void 0===l||n>=e||n<0||h&&t-u>=a}function x(){var t=v();if(w(t))return O(t);c=setTimeout(x,function(t){var n=e-(t-l);return h?p(n,a-(t-u)):n}(t))}function O(t){return c=void 0,g&&o?b(t):(o=r=void 0,s)}function I(){var t=v(),n=w(t);if(o=arguments,r=this,l=t,n){if(void 0===c)return function(t){return u=t,c=setTimeout(x,e),f?b(t):s}(l);if(h)return c=setTimeout(x,e),b(l)}return void 0===c&&(c=setTimeout(x,e)),s}return e=y(e)||0,m(n)&&(f=!!n.leading,a=(h="maxWait"in n)?d(y(n.maxWait)||0,e):a,g="trailing"in n?!!n.trailing:g),I.cancel=function(){void 0!==c&&clearTimeout(c),u=0,o=l=r=c=void 0},I.flush=function(){return void 0===c?s:O(v())},I}(t,e,{leading:o,maxWait:e,trailing:r})}},85:()=>{},902:()=>{},479:()=>{},988:t=>{t.exports=''},619:t=>{t.exports=''},720:t=>{t.exports=''}},e={};function n(i){var o=e[i];if(void 0!==o)return o.exports;var r=e[i]={exports:{}};return t[i](r,r.exports,n),r.exports}n.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return n.d(e,{a:e}),e},n.d=(t,e)=>{for(var i in e)n.o(e,i)&&!n.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:e[i]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),n.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),n.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},(()=>{"use strict";var t={};n.r(t),n(85);var e=n(858),i=n.n(e),o="spin-y",r="spin-xy",a="spin-yx",s=[!1,0,null,void 0,"false","0","null","undefined"],c="x-axis",l="y-axis",u=["folder","folderX","folderY","filenameX","filenameY","imageListX","imageListY","indexZeroBase","amountX","amountY"],f=[37,39],h=[38,40],d="/",p="v7",v="image-{index}.jpg",m=null,y=null,g=null,b=0,w=0,x=0,O=80,I=150,S=!0,k=!0,E=!1,j=!1,L=!1,C="spin-x",A=!1,P=!1,T=0,Y=!1,X=null,M=!0,R=5,B=null,H=null,D=null,W=!0,V=!1,z=!1,F=!1,N=!0,Z=null,q=function(t,e,n){return t.getAttribute(e)||t.getAttribute("data-".concat(e))||n},_=function(t,e,n){return t.hasAttribute(e)||t.hasAttribute("data-".concat(e))||n},U=function(t,e){return"false"===q(t,e,null)};n(479),n(902);var G=function(t,e){var n=t.folder,i=t.apiVersion,o=t.filename,r=void 0===o?"":o,a=t.ciParams||{},c=a.ciToken,l=a.ciFilters,u=a.ciTransformation,f="".concat(n).concat(r);if(!c)return f;var h=-1===s.indexOf(i)?i:null,d=h?"".concat(h,"/"):"",p=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,e=Math.round(window.devicePixelRatio||1);return parseInt(t)*e}(e),v=function(t,e,n){return-1!==new URL(t).origin.indexOf("cloudimg")?t:"https://".concat(e,".cloudimg.io/").concat(n).concat(t)}(f,c,d),m=function(t){var e=t.ciTransformation,n=t.ciFilters,i="width=".concat(t.responsiveWidth),o=e||i,r=n?"&f=".concat(n):"";return"".concat(o).concat(r)}({ciTransformation:u,responsiveWidth:p,ciFilters:l});return"".concat(v).concat(m?"?":"").concat(m)};function $(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=Array(e);n1&&void 0!==arguments[1]?arguments[1]:0;return(t+="").length>=e?t:new Array(e-t.length+1).join("0")+t};function J(t){return J="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},J(t)}function tt(){tt=function(){return e};var t,e={},n=Object.prototype,i=n.hasOwnProperty,o=Object.defineProperty||function(t,e,n){t[e]=n.value},r="function"==typeof Symbol?Symbol:{},a=r.iterator||"@@iterator",s=r.asyncIterator||"@@asyncIterator",c=r.toStringTag||"@@toStringTag";function l(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{l({},"")}catch(t){l=function(t,e,n){return t[e]=n}}function u(t,e,n,i){var r=e&&e.prototype instanceof y?e:y,a=Object.create(r.prototype),s=new A(i||[]);return o(a,"_invoke",{value:E(t,n,s)}),a}function f(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}e.wrap=u;var h="suspendedStart",d="suspendedYield",p="executing",v="completed",m={};function y(){}function g(){}function b(){}var w={};l(w,a,(function(){return this}));var x=Object.getPrototypeOf,O=x&&x(x(P([])));O&&O!==n&&i.call(O,a)&&(w=O);var I=b.prototype=y.prototype=Object.create(w);function S(t){["next","throw","return"].forEach((function(e){l(t,e,(function(t){return this._invoke(e,t)}))}))}function k(t,e){function n(o,r,a,s){var c=f(t[o],t,r);if("throw"!==c.type){var l=c.arg,u=l.value;return u&&"object"==J(u)&&i.call(u,"__await")?e.resolve(u.__await).then((function(t){n("next",t,a,s)}),(function(t){n("throw",t,a,s)})):e.resolve(u).then((function(t){l.value=t,a(l)}),(function(t){return n("throw",t,a,s)}))}s(c.arg)}var r;o(this,"_invoke",{value:function(t,i){function o(){return new e((function(e,o){n(t,i,e,o)}))}return r=r?r.then(o,o):o()}})}function E(e,n,i){var o=h;return function(r,a){if(o===p)throw Error("Generator is already running");if(o===v){if("throw"===r)throw a;return{value:t,done:!0}}for(i.method=r,i.arg=a;;){var s=i.delegate;if(s){var c=j(s,i);if(c){if(c===m)continue;return c}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if(o===h)throw o=v,i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);o=p;var l=f(e,n,i);if("normal"===l.type){if(o=i.done?v:d,l.arg===m)continue;return{value:l.arg,done:i.done}}"throw"===l.type&&(o=v,i.method="throw",i.arg=l.arg)}}}function j(e,n){var i=n.method,o=e.iterator[i];if(o===t)return n.delegate=null,"throw"===i&&e.iterator.return&&(n.method="return",n.arg=t,j(e,n),"throw"===n.method)||"return"!==i&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+i+"' method")),m;var r=f(o,e.iterator,n.arg);if("throw"===r.type)return n.method="throw",n.arg=r.arg,n.delegate=null,m;var a=r.arg;return a?a.done?(n[e.resultName]=a.value,n.next=e.nextLoc,"return"!==n.method&&(n.method="next",n.arg=t),n.delegate=null,m):a:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,m)}function L(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function C(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function A(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(L,this),this.reset(!0)}function P(e){if(e||""===e){var n=e[a];if(n)return n.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var o=-1,r=function n(){for(;++o=0;--r){var a=this.tryEntries[r],s=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var c=i.call(a,"catchLoc"),l=i.call(a,"finallyLoc");if(c&&l){if(this.prev=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&i.call(o,"finallyLoc")&&this.prev=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),C(n),m}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var i=n.completion;if("throw"===i.type){var o=i.arg;C(n)}return o}}throw Error("illegal catch attempt")},delegateYield:function(e,n,i){return this.delegate={iterator:P(e),resultName:n,nextLoc:i},"next"===this.method&&(this.arg=t),m}},e}function et(t,e,n,i,o,r,a){try{var s=t[r](a),c=s.value}catch(t){return void n(t)}s.done?e(c):Promise.resolve(c).then(i,o)}function nt(t){return function(){var e=this,n=arguments;return new Promise((function(i,o){var r=t.apply(e,n);function a(t){et(r,i,o,a,s,"next",t)}function s(t){et(r,i,o,a,s,"throw",t)}a(void 0)}))}}var it=function(t){var e=t.cdnPathX,n=t.cdnPathY,i=t.configX,o=t.configY,r=t.onFirstImageLoad,a=t.onImageLoad,s=t.onAllImagesLoad,u={x:!1,y:!1},f=[],h=[],d=e||i.imageList.length,p=n||o.imageList.length,v=function(t){var e=t.cdnPath,n=t.config,i=t.orientation,o=t.loadedImages,r=t.onFirstImageLoad,l=i===c,d=n.imageList.length?n.imageList:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.amount,i=void 0===n?0:n,o=e.indexZeroBase,r=void 0===o?0:o;return Array.from({length:i},(function(e,n){return t.replace("{index}",Q(n+1,r))}))}(e,n);!function(t){var e=t.imagesUrls,n=t.onFirstImageLoad,i=t.onImageLoad,o=t.onAllImagesLoad,r=t.autoplayReverse,a=0,s=e.length,c=[],l=function(t,e){var n=new Image;n.crossOrigin="anonymous",n.src=t,n.onload=nt(tt().mark((function r(){var l,f;return tt().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,createImageBitmap(n);case 2:l=r.sent,f={src:t,bitmapImage:l,naturalWidth:u.naturalWidth,naturalHeight:u.naturalHeight},a++,c[e]=f,null==i||i(f,e),a===s&&(null==o||o(c));case 8:case"end":return r.stop()}}),r)}))),n.onerror=function(){console.error("Failed to load image: ".concat(t)),++a===s&&(null==o||o(c))}},u=new Image,f=e[r?e.length-1:0];u.crossOrigin="anonymous",u.src=f,u.onload=nt(tt().mark((function t(){var o,r,s;return tt().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,createImageBitmap(u);case 2:for(o=t.sent,r={src:f,bitmapImage:o,naturalWidth:u.naturalWidth,naturalHeight:u.naturalHeight},c[0]=r,a++,null==n||n(r),null==i||i(r,0),s=1;st.length)&&(e=t.length);for(var n=0,i=Array(e);nt.length)&&(e=t.length);for(var n=0,i=Array(e);nt.length)&&(e=t.length);for(var n=0,i=Array(e);nt.length)&&(e=t.length);for(var n=0,i=Array(e);n=0;--r){var a=this.tryEntries[r],s=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var c=i.call(a,"catchLoc"),l=i.call(a,"finallyLoc");if(c&&l){if(this.prev=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&i.call(o,"finallyLoc")&&this.prev=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),C(n),m}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var i=n.completion;if("throw"===i.type){var o=i.arg;C(n)}return o}}throw Error("illegal catch attempt")},delegateYield:function(e,n,i){return this.delegate={iterator:P(e),resultName:n,nextLoc:i},"next"===this.method&&(this.arg=t),m}},e}function Bt(t,e,n,i,o,r,a){try{var s=t[r](a),c=s.value}catch(t){return void n(t)}s.done?e(c):Promise.resolve(c).then(i,o)}self.onmessage=function(){var t,e=(t=Rt().mark((function t(e){var n,i,o,r,a,s,c,l,u,f,h;return Rt().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:n=e.data,i=n.action,o=n.offscreen,r=n.devicePixelRatio,a=n.imageData,s=n.zoomScale,c=n.pointerX,l=n.pointerY,u=n.imageAspectRatio,f=n.containerWidth,h=n.containerHeight,t.t0=i,t.next="initCanvas"===t.t0?4:"adaptCanvasSize"===t.t0?6:"drawImageOnCanvas"===t.t0?8:10;break;case 4:return Ht(o,r),t.abrupt("break",11);case 6:return Dt(u,f,h),t.abrupt("break",11);case 8:return Wt(a,s,c,l),t.abrupt("break",11);case 10:return t.abrupt("break",11);case 11:case"end":return t.stop()}}),t)})),function(){var e=this,n=arguments;return new Promise((function(i,o){var r=t.apply(e,n);function a(t){Bt(r,i,o,a,s,"next",t)}function s(t){Bt(r,i,o,a,s,"throw",t)}a(void 0)}))});return function(t){return e.apply(this,arguments)}}();var Ht=function(t,e){Ct=(Lt=t).getContext("2d"),At=e},Dt=function(t,e,n){Yt=t>e/n,Lt.width=e*At,Lt.height=n*At,Ct.scale(At,At),Yt?(Pt=e,Tt=e/t):(Tt=n,Pt=n*t),Ct.imageSmoothingEnabled=!0,Ct.imageSmoothingQuality="high"},Wt=function(){var t,e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,a=n.bitmapImage;if(Lt&&a)if(Yt?(t=0,e=(Lt.height/At-Tt)/2):(t=(Lt.width/At-Pt)/2,e=0),Ct.clearRect(0,0,Lt.width,Lt.height),1!==i){var s=function(t,e,n){return{zoomedWidth:t/n,zoomedHeight:e/n}}(Pt,Tt,i),c=s.zoomedWidth,l=s.zoomedHeight,u=function(t){var e=t.pointerX,n=t.pointerY,i=t.imageData,o=t.zoomedWidth,r=t.zoomedHeight,a=t.drawWidth,s=t.drawHeight,c=i.naturalWidth,l=i.naturalHeight,u=e/a*c-o/2,f=n/s*l-r/2,h=Math.max(0,c-o),d=Math.max(0,l-r);return{zoomOffsetX:u=Math.max(0,Math.min(u,h)),zoomOffsetY:f=Math.max(0,Math.min(f,d))}}({pointerX:o,pointerY:r,imageData:n,zoomedWidth:c,zoomedHeight:l,drawWidth:Pt,drawHeight:Tt}),f=u.zoomOffsetX,h=u.zoomOffsetY;Ct.drawImage(a,f,h,c,l,t,e,Pt,Tt)}else Ct.drawImage(a,t,e,Pt,Tt)};function Vt(t){return Vt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Vt(t)}function zt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,i)}return n}function Ft(t){for(var e=1;et.length)&&(e=t.length);for(var n=0,i=Array(e);n0&&te(i.width)/t.offsetWidth||1,r=t.offsetHeight>0&&te(i.height)/t.offsetHeight||1);var a=(Gt(t)?Ut(t):window).visualViewport,s=!ne()&&n,c=(i.left+(s&&a?a.offsetLeft:0))/o,l=(i.top+(s&&a?a.offsetTop:0))/r,u=i.width/o,f=i.height/r;return{width:u,height:f,top:l,right:c+u,bottom:l+f,left:c,x:c,y:l}}function oe(t){var e=Ut(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function re(t){return t?(t.nodeName||"").toLowerCase():null}function ae(t){return((Gt(t)?t.ownerDocument:t.document)||window.document).documentElement}function se(t){return ie(ae(t)).left+oe(t).scrollLeft}function ce(t){return Ut(t).getComputedStyle(t)}function le(t){var e=ce(t),n=e.overflow,i=e.overflowX,o=e.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+i)}function ue(t,e,n){void 0===n&&(n=!1);var i,o,r=$t(e),a=$t(e)&&function(t){var e=t.getBoundingClientRect(),n=te(e.width)/t.offsetWidth||1,i=te(e.height)/t.offsetHeight||1;return 1!==n||1!==i}(e),s=ae(e),c=ie(t,a,n),l={scrollLeft:0,scrollTop:0},u={x:0,y:0};return(r||!r&&!n)&&(("body"!==re(e)||le(s))&&(l=(i=e)!==Ut(i)&&$t(i)?{scrollLeft:(o=i).scrollLeft,scrollTop:o.scrollTop}:oe(i)),$t(e)?((u=ie(e,!0)).x+=e.clientLeft,u.y+=e.clientTop):s&&(u.x=se(s))),{x:c.left+l.scrollLeft-u.x,y:c.top+l.scrollTop-u.y,width:c.width,height:c.height}}function fe(t){var e=ie(t),n=t.offsetWidth,i=t.offsetHeight;return Math.abs(e.width-n)<=1&&(n=e.width),Math.abs(e.height-i)<=1&&(i=e.height),{x:t.offsetLeft,y:t.offsetTop,width:n,height:i}}function he(t){return"html"===re(t)?t:t.assignedSlot||t.parentNode||(Kt(t)?t.host:null)||ae(t)}function de(t){return["html","body","#document"].indexOf(re(t))>=0?t.ownerDocument.body:$t(t)&&le(t)?t:de(he(t))}function pe(t,e){var n;void 0===e&&(e=[]);var i=de(t),o=i===(null==(n=t.ownerDocument)?void 0:n.body),r=Ut(i),a=o?[r].concat(r.visualViewport||[],le(i)?i:[]):i,s=e.concat(a);return o?s:s.concat(pe(he(a)))}function ve(t){return["table","td","th"].indexOf(re(t))>=0}function me(t){return $t(t)&&"fixed"!==ce(t).position?t.offsetParent:null}function ye(t){for(var e=Ut(t),n=me(t);n&&ve(n)&&"static"===ce(n).position;)n=me(n);return n&&("html"===re(n)||"body"===re(n)&&"static"===ce(n).position)?e:n||function(t){var e=/firefox/i.test(ee());if(/Trident/i.test(ee())&&$t(t)&&"fixed"===ce(t).position)return null;var n=he(t);for(Kt(n)&&(n=n.host);$t(n)&&["html","body"].indexOf(re(n))<0;){var i=ce(n);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||e&&"filter"===i.willChange||e&&i.filter&&"none"!==i.filter)return n;n=n.parentNode}return null}(t)||e}var ge="top",be="bottom",we="right",xe="left",Oe="auto",Ie=[ge,be,we,xe],Se="start",ke="end",Ee="viewport",je="popper",Le=Ie.reduce((function(t,e){return t.concat([e+"-"+Se,e+"-"+ke])}),[]),Ce=[].concat(Ie,[Oe]).reduce((function(t,e){return t.concat([e,e+"-"+Se,e+"-"+ke])}),[]),Ae=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function Pe(t){var e=new Map,n=new Set,i=[];function o(t){n.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!n.has(t)){var i=e.get(t);i&&o(i)}})),i.push(t)}return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){n.has(t.name)||o(t)})),i}var Te={placement:"bottom",modifiers:[],strategy:"absolute"};function Ye(){for(var t=arguments.length,e=new Array(t),n=0;n=0?"x":"y"}function We(t){var e,n=t.reference,i=t.element,o=t.placement,r=o?Be(o):null,a=o?He(o):null,s=n.x+n.width/2-i.width/2,c=n.y+n.height/2-i.height/2;switch(r){case ge:e={x:s,y:n.y-i.height};break;case be:e={x:s,y:n.y+n.height};break;case we:e={x:n.x+n.width,y:c};break;case xe:e={x:n.x-i.width,y:c};break;default:e={x:n.x,y:n.y}}var l=r?De(r):null;if(null!=l){var u="y"===l?"height":"width";switch(a){case Se:e[l]=e[l]-(n[u]/2-i[u]/2);break;case ke:e[l]=e[l]+(n[u]/2-i[u]/2)}}return e}var Ve={top:"auto",right:"auto",bottom:"auto",left:"auto"};function ze(t){var e,n=t.popper,i=t.popperRect,o=t.placement,r=t.variation,a=t.offsets,s=t.position,c=t.gpuAcceleration,l=t.adaptive,u=t.roundOffsets,f=t.isFixed,h=a.x,d=void 0===h?0:h,p=a.y,v=void 0===p?0:p,m="function"==typeof u?u({x:d,y:v}):{x:d,y:v};d=m.x,v=m.y;var y=a.hasOwnProperty("x"),g=a.hasOwnProperty("y"),b=xe,w=ge,x=window;if(l){var O=ye(n),I="clientHeight",S="clientWidth";O===Ut(n)&&"static"!==ce(O=ae(n)).position&&"absolute"===s&&(I="scrollHeight",S="scrollWidth"),(o===ge||(o===xe||o===we)&&r===ke)&&(w=be,v-=(f&&O===x&&x.visualViewport?x.visualViewport.height:O[I])-i.height,v*=c?1:-1),o!==xe&&(o!==ge&&o!==be||r!==ke)||(b=we,d-=(f&&O===x&&x.visualViewport?x.visualViewport.width:O[S])-i.width,d*=c?1:-1)}var k,E=Object.assign({position:s},l&&Ve),j=!0===u?function(t,e){var n=t.x,i=t.y,o=e.devicePixelRatio||1;return{x:te(n*o)/o||0,y:te(i*o)/o||0}}({x:d,y:v},Ut(n)):{x:d,y:v};return d=j.x,v=j.y,c?Object.assign({},E,((k={})[w]=g?"0":"",k[b]=y?"0":"",k.transform=(x.devicePixelRatio||1)<=1?"translate("+d+"px, "+v+"px)":"translate3d("+d+"px, "+v+"px, 0)",k)):Object.assign({},E,((e={})[w]=g?v+"px":"",e[b]=y?d+"px":"",e.transform="",e))}var Fe={left:"right",right:"left",bottom:"top",top:"bottom"};function Ne(t){return t.replace(/left|right|bottom|top/g,(function(t){return Fe[t]}))}var Ze={start:"end",end:"start"};function qe(t){return t.replace(/start|end/g,(function(t){return Ze[t]}))}function _e(t,e){var n=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(n&&Kt(n)){var i=e;do{if(i&&t.isSameNode(i))return!0;i=i.parentNode||i.host}while(i)}return!1}function Ue(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function Ge(t,e,n){return e===Ee?Ue(function(t,e){var n=Ut(t),i=ae(t),o=n.visualViewport,r=i.clientWidth,a=i.clientHeight,s=0,c=0;if(o){r=o.width,a=o.height;var l=ne();(l||!l&&"fixed"===e)&&(s=o.offsetLeft,c=o.offsetTop)}return{width:r,height:a,x:s+se(t),y:c}}(t,n)):Gt(e)?function(t,e){var n=ie(t,!1,"fixed"===e);return n.top=n.top+t.clientTop,n.left=n.left+t.clientLeft,n.bottom=n.top+t.clientHeight,n.right=n.left+t.clientWidth,n.width=t.clientWidth,n.height=t.clientHeight,n.x=n.left,n.y=n.top,n}(e,n):Ue(function(t){var e,n=ae(t),i=oe(t),o=null==(e=t.ownerDocument)?void 0:e.body,r=Qt(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),a=Qt(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),s=-i.scrollLeft+se(t),c=-i.scrollTop;return"rtl"===ce(o||n).direction&&(s+=Qt(n.clientWidth,o?o.clientWidth:0)-r),{width:r,height:a,x:s,y:c}}(ae(t)))}function $e(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function Ke(t,e){return e.reduce((function(e,n){return e[n]=t,e}),{})}function Qe(t,e){void 0===e&&(e={});var n=e,i=n.placement,o=void 0===i?t.placement:i,r=n.strategy,a=void 0===r?t.strategy:r,s=n.boundary,c=void 0===s?"clippingParents":s,l=n.rootBoundary,u=void 0===l?Ee:l,f=n.elementContext,h=void 0===f?je:f,d=n.altBoundary,p=void 0!==d&&d,v=n.padding,m=void 0===v?0:v,y=$e("number"!=typeof m?m:Ke(m,Ie)),g=h===je?"reference":je,b=t.rects.popper,w=t.elements[p?g:h],x=function(t,e,n,i){var o="clippingParents"===e?function(t){var e=pe(he(t)),n=["absolute","fixed"].indexOf(ce(t).position)>=0&&$t(t)?ye(t):t;return Gt(n)?e.filter((function(t){return Gt(t)&&_e(t,n)&&"body"!==re(t)})):[]}(t):[].concat(e),r=[].concat(o,[n]),a=r[0],s=r.reduce((function(e,n){var o=Ge(t,n,i);return e.top=Qt(o.top,e.top),e.right=Jt(o.right,e.right),e.bottom=Jt(o.bottom,e.bottom),e.left=Qt(o.left,e.left),e}),Ge(t,a,i));return s.width=s.right-s.left,s.height=s.bottom-s.top,s.x=s.left,s.y=s.top,s}(Gt(w)?w:w.contextElement||ae(t.elements.popper),c,u,a),O=ie(t.elements.reference),I=We({reference:O,element:b,strategy:"absolute",placement:o}),S=Ue(Object.assign({},b,I)),k=h===je?S:O,E={top:x.top-k.top+y.top,bottom:k.bottom-x.bottom+y.bottom,left:x.left-k.left+y.left,right:k.right-x.right+y.right},j=t.modifiersData.offset;if(h===je&&j){var L=j[o];Object.keys(E).forEach((function(t){var e=[we,be].indexOf(t)>=0?1:-1,n=[ge,be].indexOf(t)>=0?"y":"x";E[t]+=L[n]*e}))}return E}function Je(t,e,n){return Qt(t,Jt(e,n))}function tn(t,e,n){return void 0===n&&(n={x:0,y:0}),{top:t.top-e.height-n.y,right:t.right-e.width+n.x,bottom:t.bottom-e.height+n.y,left:t.left-e.width-n.x}}function en(t){return[ge,we,be,xe].some((function(e){return t[e]>=0}))}var nn=Xe({defaultModifiers:[Re,{name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,n=t.name;e.modifiersData[n]=We({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}},{name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,n=t.options,i=n.gpuAcceleration,o=void 0===i||i,r=n.adaptive,a=void 0===r||r,s=n.roundOffsets,c=void 0===s||s,l={placement:Be(e.placement),variation:He(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:o,isFixed:"fixed"===e.options.strategy};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,ze(Object.assign({},l,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:a,roundOffsets:c})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,ze(Object.assign({},l,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:c})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}},{name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var n=e.styles[t]||{},i=e.attributes[t]||{},o=e.elements[t];$t(o)&&re(o)&&(Object.assign(o.style,n),Object.keys(i).forEach((function(t){var e=i[t];!1===e?o.removeAttribute(t):o.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,n={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,n.popper),e.styles=n,e.elements.arrow&&Object.assign(e.elements.arrow.style,n.arrow),function(){Object.keys(e.elements).forEach((function(t){var i=e.elements[t],o=e.attributes[t]||{},r=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:n[t]).reduce((function(t,e){return t[e]="",t}),{});$t(i)&&re(i)&&(Object.assign(i.style,r),Object.keys(o).forEach((function(t){i.removeAttribute(t)})))}))}},requires:["computeStyles"]},{name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,n=t.options,i=t.name,o=n.offset,r=void 0===o?[0,0]:o,a=Ce.reduce((function(t,n){return t[n]=function(t,e,n){var i=Be(t),o=[xe,ge].indexOf(i)>=0?-1:1,r="function"==typeof n?n(Object.assign({},e,{placement:t})):n,a=r[0],s=r[1];return a=a||0,s=(s||0)*o,[xe,we].indexOf(i)>=0?{x:s,y:a}:{x:a,y:s}}(n,e.rects,r),t}),{}),s=a[e.placement],c=s.x,l=s.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=c,e.modifiersData.popperOffsets.y+=l),e.modifiersData[i]=a}},{name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,n=t.options,i=t.name;if(!e.modifiersData[i]._skip){for(var o=n.mainAxis,r=void 0===o||o,a=n.altAxis,s=void 0===a||a,c=n.fallbackPlacements,l=n.padding,u=n.boundary,f=n.rootBoundary,h=n.altBoundary,d=n.flipVariations,p=void 0===d||d,v=n.allowedAutoPlacements,m=e.options.placement,y=Be(m),g=c||(y!==m&&p?function(t){if(Be(t)===Oe)return[];var e=Ne(t);return[qe(t),e,qe(e)]}(m):[Ne(m)]),b=[m].concat(g).reduce((function(t,n){return t.concat(Be(n)===Oe?function(t,e){void 0===e&&(e={});var n=e,i=n.placement,o=n.boundary,r=n.rootBoundary,a=n.padding,s=n.flipVariations,c=n.allowedAutoPlacements,l=void 0===c?Ce:c,u=He(i),f=u?s?Le:Le.filter((function(t){return He(t)===u})):Ie,h=f.filter((function(t){return l.indexOf(t)>=0}));0===h.length&&(h=f);var d=h.reduce((function(e,n){return e[n]=Qe(t,{placement:n,boundary:o,rootBoundary:r,padding:a})[Be(n)],e}),{});return Object.keys(d).sort((function(t,e){return d[t]-d[e]}))}(e,{placement:n,boundary:u,rootBoundary:f,padding:l,flipVariations:p,allowedAutoPlacements:v}):n)}),[]),w=e.rects.reference,x=e.rects.popper,O=new Map,I=!0,S=b[0],k=0;k=0,A=C?"width":"height",P=Qe(e,{placement:E,boundary:u,rootBoundary:f,altBoundary:h,padding:l}),T=C?L?we:xe:L?be:ge;w[A]>x[A]&&(T=Ne(T));var Y=Ne(T),X=[];if(r&&X.push(P[j]<=0),s&&X.push(P[T]<=0,P[Y]<=0),X.every((function(t){return t}))){S=E,I=!1;break}O.set(E,X)}if(I)for(var M=function(t){var e=b.find((function(e){var n=O.get(e);if(n)return n.slice(0,t).every((function(t){return t}))}));if(e)return S=e,"break"},R=p?3:1;R>0&&"break"!==M(R);R--);e.placement!==S&&(e.modifiersData[i]._skip=!0,e.placement=S,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}},{name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,n=t.options,i=t.name,o=n.mainAxis,r=void 0===o||o,a=n.altAxis,s=void 0!==a&&a,c=n.boundary,l=n.rootBoundary,u=n.altBoundary,f=n.padding,h=n.tether,d=void 0===h||h,p=n.tetherOffset,v=void 0===p?0:p,m=Qe(e,{boundary:c,rootBoundary:l,padding:f,altBoundary:u}),y=Be(e.placement),g=He(e.placement),b=!g,w=De(y),x="x"===w?"y":"x",O=e.modifiersData.popperOffsets,I=e.rects.reference,S=e.rects.popper,k="function"==typeof v?v(Object.assign({},e.rects,{placement:e.placement})):v,E="number"==typeof k?{mainAxis:k,altAxis:k}:Object.assign({mainAxis:0,altAxis:0},k),j=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,L={x:0,y:0};if(O){if(r){var C,A="y"===w?ge:xe,P="y"===w?be:we,T="y"===w?"height":"width",Y=O[w],X=Y+m[A],M=Y-m[P],R=d?-S[T]/2:0,B=g===Se?I[T]:S[T],H=g===Se?-S[T]:-I[T],D=e.elements.arrow,W=d&&D?fe(D):{width:0,height:0},V=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},z=V[A],F=V[P],N=Je(0,I[T],W[T]),Z=b?I[T]/2-R-N-z-E.mainAxis:B-N-z-E.mainAxis,q=b?-I[T]/2+R+N+F+E.mainAxis:H+N+F+E.mainAxis,_=e.elements.arrow&&ye(e.elements.arrow),U=_?"y"===w?_.clientTop||0:_.clientLeft||0:0,G=null!=(C=null==j?void 0:j[w])?C:0,$=Y+q-G,K=Je(d?Jt(X,Y+Z-G-U):X,Y,d?Qt(M,$):M);O[w]=K,L[w]=K-Y}if(s){var Q,J="x"===w?ge:xe,tt="x"===w?be:we,et=O[x],nt="y"===x?"height":"width",it=et+m[J],ot=et-m[tt],rt=-1!==[ge,xe].indexOf(y),at=null!=(Q=null==j?void 0:j[x])?Q:0,st=rt?it:et-I[nt]-S[nt]-at+E.altAxis,ct=rt?et+I[nt]+S[nt]-at-E.altAxis:ot,lt=d&&rt?function(t,e,n){var i=Je(t,e,n);return i>n?n:i}(st,et,ct):Je(d?st:it,et,d?ct:ot);O[x]=lt,L[x]=lt-et}e.modifiersData[i]=L}},requiresIfExists:["offset"]},{name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,n=t.state,i=t.name,o=t.options,r=n.elements.arrow,a=n.modifiersData.popperOffsets,s=Be(n.placement),c=De(s),l=[xe,we].indexOf(s)>=0?"height":"width";if(r&&a){var u=function(t,e){return $e("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:Ke(t,Ie))}(o.padding,n),f=fe(r),h="y"===c?ge:xe,d="y"===c?be:we,p=n.rects.reference[l]+n.rects.reference[c]-a[c]-n.rects.popper[l],v=a[c]-n.rects.reference[c],m=ye(r),y=m?"y"===c?m.clientHeight||0:m.clientWidth||0:0,g=p/2-v/2,b=u[h],w=y-f[l]-u[d],x=y/2-f[l]/2+g,O=Je(b,x,w),I=c;n.modifiersData[i]=((e={})[I]=O,e.centerOffset=O-x,e)}},effect:function(t){var e=t.state,n=t.options.element,i=void 0===n?"[data-popper-arrow]":n;null!=i&&("string"!=typeof i||(i=e.elements.popper.querySelector(i)))&&_e(e.elements.popper,i)&&(e.elements.arrow=i)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]},{name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,n=t.name,i=e.rects.reference,o=e.rects.popper,r=e.modifiersData.preventOverflow,a=Qe(e,{elementContext:"reference"}),s=Qe(e,{altBoundary:!0}),c=tn(a,i),l=tn(s,o,r),u=en(c),f=en(l);e.modifiersData[n]={referenceClippingOffsets:c,popperEscapeOffsets:l,isReferenceHidden:u,hasPopperEscaped:f},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":u,"data-popper-escaped":f})}}]});function on(t){return on="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},on(t)}function rn(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,i)}return n}function an(t){for(var e=1;e=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,r=!0,a=!1;return{s:function(){e=e.call(t)},n:function(){var t=e.next();return r=t.done,t},e:function(t){a=!0,o=t},f:function(){try{r||null==e.return||e.return()}finally{if(a)throw o}}}}(Object.entries(t).sort((function(t,e){var n=Zt(t,1)[0],i=Zt(e,1)[0];return Number(n)-Number(i)})));try{for(r.s();!(e=r.n()).done;){var a=Zt(e.value,2),s=a[0],c=a[1];if(c){var l=c.x,u=c.y;null!=l&&(n=l),null!=u&&(i=u),o[s]={x:l||n,y:u||i}}else o[s]={x:n,y:i}}}catch(t){r.e(t)}finally{r.f()}return o}(t.positions));e[n].initialPositions=i,e[n].positions=i})),e}(e),this.shouldHidePopper=!0,this.hidePopper=this.hidePopper.bind(this),this.imageAspectRatio=i;var r=e[0].containerSize;this.initialContainerSize=r||[n.offsetWidth,n.offsetHeight],this.initHotspots(),this.observeContainerResize()},e=[{key:"observeContainerResize",value:function(){var t=this;this.resizeObserver=new ResizeObserver((function(){var e=t.container.offsetWidth,n=t.container.offsetHeight;t.updateHotspotsForResize(e,n)})),this.resizeObserver.observe(this.container)}},{key:"updateHotspotsForResize",value:function(t,e){this.hotspotsConfig=function(t){var e=t.newWidth,n=t.newHeight,i=t.imageAspectRatio,o=t.hotspotsConfig,r=Zt(t.initialContainerSize,2),a=r[0],s=r[1],c=e,l=n,u=0,f=0;i>e/n?f=(n-(l=e/i))/2:u=(e-(c=n*i))/2;var h=c/a,d=l/s;return o.map((function(t){var e={};return Object.entries(t.initialPositions).forEach((function(t){var n=Zt(t,2),i=n[0],o=n[1];e[i]={x:o.x*h+u,y:o.y*d+f}})),Ft(Ft({},t),{},{positions:e})}))}({newWidth:t,newHeight:e,initialContainerSize:this.initialContainerSize,imageAspectRatio:this.imageAspectRatio,hotspotsConfig:this.hotspotsConfig}),this.updateHotspotPosition(this.currentActiveIndex,this.currentOrientation)}},{key:"showPopper",value:function(t){var e=this,n=t.hotspotElement,i=t.content,o=t.id,r=t.keepOpen;this.popperInstance&&this.popperInstance.instanceId!==o&&this.hidePopper();var a,s={placement:"top",modifiers:(a=this.container,[{name:"offset",options:{offset:[0,10]}},{name:"preventOverflow",options:{boundary:a}}])};this.popper=function(t,e){var n=document.createElement("div");return n.className="cloudimage-360-popper",n.id="cloudimage-360-popper-".concat(e),n.dataset.popperId=e,"string"==typeof t&&/<\/?[a-z][\s\S]*>/i.test(t)?n.innerHTML=t:n.textContent=t,document.body.appendChild(n),n}(i,o),this.popper.setAttribute("data-show",""),this.popper.addEventListener("mouseenter",(function(){e.shouldHidePopper=!1})),this.popper.addEventListener("mouseleave",(function(){e.shouldHidePopper=!0,e.checkAndHidePopper()})),n.addEventListener("mouseleave",(function(){e.shouldHidePopper=!0,e.checkAndHidePopper()})),n.addEventListener("mouseenter",(function(){e.shouldHidePopper=!1,e.hidePopperTimeout&&clearTimeout(e.hidePopperTimeout)})),this.popperInstance=an(an({},nn(n,this.popper,s)),{},{keepOpen:r,instanceId:o})}},{key:"checkAndHidePopper",value:function(){var t,e=this;!this.shouldHidePopper||null!==(t=this.popperInstance)&&void 0!==t&&t.keepOpen||(this.hidePopperTimeout=setTimeout((function(){e.shouldHidePopper&&e.hidePopper()}),150))}},{key:"hidePopper",value:function(){var t=this;this.popperInstance&&(this.popperInstance.destroy(),this.popperInstance=null),this.popper&&(this.popper.removeAttribute("data-show"),setTimeout((function(){t.popper&&t.popper.remove(),t.popper=null}),200))}},{key:"createHotspot",value:function(t){var e=this,n=t.id,i=t.content,o=t.keepOpen,r=t.onClick,a=function(t){var e=document.createElement("span");return e.id=t,e.className="cloudimage-360-hotspot",e.dataset.hotspotId=t,e}(n);r&&(a.style.cursor="pointer"),a.onclick=function(t){t.stopPropagation(),null==r||r(t,e.popperInstance,n)},i&&a.addEventListener("mouseenter",(function(){return e.showPopper({hotspotElement:a,content:i,id:n,keepOpen:o})})),this.hotspotsContainer.appendChild(a)}},{key:"hideHotspots",value:function(){this.hotspotsContainer.querySelectorAll(".cloudimage-360-hotspot").forEach((function(t){t.style.opacity=0,t.style.pointerEvents="none"}))}},{key:"updateAndShowHotspot",value:function(t,e){var n,i=t.positions,o=t.id,r=null!==(n=i[e])&&void 0!==n?n:{},a=r.x,s=r.y,c=this.hotspotsContainer.querySelector('[data-hotspot-id="'.concat(o,'"]'));c&&(c.style.translate="".concat(a,"px ").concat(s,"px"),c.style.opacity=1,c.style.pointerEvents="all")}},{key:"createAllHotspots",value:function(){var t=this;this.hotspotsConfig.forEach((function(e){return t.createHotspot(e)}))}},{key:"initHotspots",value:function(){this.createAllHotspots()}},{key:"destroy",value:function(){this.resizeObserver.disconnect(),this.hidePopper(),this.hotspotsContainer.innerHTML=""}}],e&&sn(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t;var t,e}();const fn=un;function hn(t){return hn="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},hn(t)}function dn(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,i)}return n}function pn(t){for(var e=1;e0||navigator.msMaxTouchPoints>0,this.canvasWorker=new t.default,this.onMoveHandler=this.onMoveHandler.bind(this),this.destroy=this.destroy.bind(this),this.init(this.container,i)}return n=e,s=[{key:"mouseDown",value:function(t){if(this.isReady&&!this.glass){var e=t.pageX,n=t.pageY;(this.autoplay||this.loopTimeoutId)&&(this.stopAutoplay(),this.autoplay=!1),this.movementStart={x:e,y:n},this.isClicked=!0,this.isDragging=!1}}},{key:"mouseUp",value:function(){this.isReady&&(this.isZoomed||this.showAllIcons(),this.movementStart={x:0,y:0},this.isClicked=!1,this.innerBox.style.cursor="grab")}},{key:"drag",value:function(t,e){var n=this;if(this.isReady&&this.isClicked){var i=t-this.movementStart.x,o=e-this.movementStart.y;this.draggingDirection=function(t){var e=t.deltaX,n=t.deltaY,i=t.reversed,o=t.allowSpinX,r=t.allowSpinY,a=t.threshold,s=void 0===a?1:a,c=Math.abs(e),l=Math.abs(n);return o&&c-s>l?i?e>0?"left":"right":e>0?"right":"left":r&&l-s>c?i?n>0?"up":"down":n>0?"down":"up":null}({deltaX:i,deltaY:o,reversed:this.dragReverse,allowSpinX:this.allowSpinX,allowSpinY:this.allowSpinY})||this.draggingDirection;var r=this.fullscreenView?document.body:this.container,a=this.dragSpeed/50,s=a*(this.amountX/r.offsetWidth),c=a*(this.amountY/r.offsetHeight),l=this.allowSpinX?Math.abs(Math.round(i*s)):0,u=this.allowSpinY?Math.abs(Math.round(o*c)):0;(this.allowSpinX&&0!==l||this.allowSpinY&&0!==u)&&(this.hideHotspotPopper(),this.onMoveHandler(this.draggingDirection,l,u),this.movementStart={x:t,y:e},setTimeout((function(){n.isDragging=!0}),150))}}},{key:"mouseMove",value:function(t){this.isReady&&(this.isClicked||this.isZoomed)&&!this.glass&&(this.hideAllIcons(),this.drag(t.pageX,t.pageY),this.isZoomed&&this.applyZoom(t))}},{key:"mouseClick",value:function(t){this.isReady&&!this.isDragging&&(this.glass&&this.magnified?this.removeGlass():!this.pointerZoom||this.glass||this.touchDevice||this.toggleZoom(t))}},{key:"loadHigherQualityImages",value:function(t,e){var n=this,i=G(this.srcXConfig,t),o=this.allowSpinY?G(this.srcYConfig,t):null;it({cdnPathX:i,cdnPathY:o,configX:this.srcXConfig,configY:this.srcYConfig,onAllImagesLoad:function(t,i){n.imagesX=t,n.imagesY=i,e()}})}},{key:"hideHotspots",value:function(){this.hotspotsInstance&&this.hotspotsInstance.hideHotspots()}},{key:"hideHotspotPopper",value:function(){this.hotspotsInstance&&this.hotspotsInstance.hidePopper()}},{key:"toggleZoom",value:function(t){var e=this;if(this.isZoomed)this.showTransitionOverlay(),setTimeout((function(){e.removeZoom()}),800);else{var n=(this.fullscreenView||this.pointerZoom?document.body:this.container).offsetWidth;this.hideHotspots(),this.showLoadingSpinner(),this.loadHigherQualityImages(n,(function(){e.showTransitionOverlay(),setTimeout((function(){e.applyZoom(t)}),800)}))}}},{key:"removeZoom",value:function(){this.isZoomed=!1,this.updateView(),this.showAllIcons(),this.hideTransitionOverlay()}},{key:"applyZoom",value:function(t){var e=function(t,e,n){var i=t.clientX,o=t.clientY,r=e.getBoundingClientRect(),a=e.width/(r.width*n),s=e.height/(r.height*n);return{offsetX:(i-r.left)*a,offsetY:(o-r.top)*s}}(t,this.canvas,this.devicePixelRatio),n=e.offsetX,i=e.offsetY;this.isZoomed=!0,this.hideAllIcons(),this.hideLoadingSpinner(),this.hideTransitionOverlay(),this.updateView(this.pointerZoom,n,i)}},{key:"touchOutside",value:function(t){this.glass&&!this.canvas.contains(t.target)&&this.removeGlass()}},{key:"touchStart",value:function(t){if(!(!this.isReady||t.touches.length>1||this.glass)){var e=t.touches[0],n=e.pageX,i=e.pageY;(this.autoplay||this.loopTimeoutId)&&(this.stopAutoplay(),this.autoplay=!1),this.hideAllIcons(),this.movementStart={x:n,y:i},this.isClicked=!0}}},{key:"touchEnd",value:function(){this.isReady&&(this.showAllIcons(),this.movementStart={x:0,y:0},this.isClicked=!1)}},{key:"touchMove",value:function(t){if(this.isReady&&this.isClicked&&!this.glass){var e=t.touches[0],n=e.pageX,i=e.pageY;t.preventDefault(),this.drag(n,i)}}},{key:"keyDown",value:function(t){if(this.isReady){var e=t.keyCode,n=this.keysReverse;switch(Xt(e,this.allowSpinY)&&this.hideAllIcons(),e){case 37:n?this.moveLeft():this.moveRight();break;case 39:n?this.moveRight():this.moveLeft();break;case 38:this.allowSpinY&&(t.preventDefault(),n?this.moveTop():this.moveBottom());break;case 40:this.allowSpinY&&(t.preventDefault(),n?this.moveBottom():this.moveTop())}}}},{key:"keyUp",value:function(t){var e=t.keyCode;Xt(e,this.allowSpinY)&&this.showAllIcons()}},{key:"moveActiveXIndexUp",value:function(t){this.orientation=c,this.activeImageX=(this.activeImageX+t)%this.amountX}},{key:"moveActiveXIndexDown",value:function(t){this.orientation=c,this.activeImageX=(this.activeImageX-t+this.amountX)%this.amountX}},{key:"moveActiveYIndexUp",value:function(t){this.orientation=l,this.activeImageY=(this.activeImageY+t)%this.amountY}},{key:"moveActiveYIndexDown",value:function(t){this.orientation=l,this.activeImageY=(this.activeImageY-t+this.amountY)%this.amountY}},{key:"moveRight",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;t&&this.activeImageX>=this.imagesX.length-1||(this.moveActiveXIndexUp(e),this.isZoomed||this.updateView())}},{key:"moveLeft",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;t&&this.activeImageX<=0||(this.moveActiveXIndexDown(e),this.isZoomed||this.updateView())}},{key:"moveTop",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;t&&this.activeImageY>=this.imagesY.length-1||(this.moveActiveYIndexUp(e),this.isZoomed||this.updateView())}},{key:"moveBottom",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;t&&this.activeImageY<=0||(this.moveActiveYIndexDown(e),this.isZoomed||this.updateView())}},{key:"onMoveHandler",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;"right"===t?this.moveRight(this.stopAtEdges,e):"left"===t?this.moveLeft(this.stopAtEdges,e):"up"===t?this.moveTop(this.stopAtEdges,n):"down"===t&&this.moveBottom(this.stopAtEdges,n)}},{key:"updateView",value:function(t,e,n){var i=this.orientation===c?this.activeImageX:this.activeImageY,o=this.orientation===c?this.imagesX[this.activeImageX]:this.imagesY[this.activeImageY];!this.hotspotsInstance||this.isZoomed||this.autoplay||this.hotspotsInstance.updateHotspotPosition(i,this.orientation),this.drawImageOnCanvas(o,t,e,n)}},{key:"updatePercentageInLoader",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;this.loader&&(this.loader.innerText=t+"%")}},{key:"adaptCanvasSize",value:function(t){var e=t.naturalWidth,n=t.naturalHeight;this.imageAspectRatio=e/n;var i=this.fullscreenView?window.innerWidth:this.canvas.clientWidth,o=this.fullscreenView?window.innerHeight:this.canvas.clientHeight;this.canvasWorker.postMessage({action:"adaptCanvasSize",devicePixelRatio:this.devicePixelRatio,imageAspectRatio:this.imageAspectRatio,containerWidth:i,containerHeight:o})}},{key:"drawImageOnCanvas",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;this.canvasWorker.postMessage({action:"drawImageOnCanvas",imageData:t,zoomScale:e,pointerX:n,pointerY:i})}},{key:"pushImageToSet",value:function(t,e,n){n===c?this.imagesX[e]=t:this.imagesY[e]=t}},{key:"calculatePercentage",value:function(){var t=this.amountX+this.amountY,e=this.imagesX.length+this.imagesY.length;return Math.round(e/t*100)}},{key:"onImageLoad",value:function(t,e,n){this.pushImageToSet(t,e,n),this.updatePercentageInLoader(this.calculatePercentage())}},{key:"onFirstImageLoaded",value:function(t,e){this.createContainers(t),this.adaptCanvasSize(e),this.drawImageOnCanvas(e)}},{key:"onAllImagesLoaded",value:function(){if(this.addAllIcons(),this.hotspots&&(this.hotspotsInstance=new fn(this.hotspots,this.innerBox,this.imageAspectRatio)),this.isReady=!0,this.amountX=this.imagesX.length,this.amountY=this.imagesY.length,this.activeImageX=this.autoplayReverse?this.amountX-1:0,this.activeImageY=this.autoplayReverse?this.amountY-1:0,this.autoplay){this.hideAllIcons();var t=function(t){var e,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:150;return function(){for(var i=this,o=arguments.length,r=new Array(o),a=0;a"),t),this.magnifierIcon.onclick=this.magnify.bind(this),this.iconsContainer.appendChild(this.magnifierIcon))}},{key:"showMagnifierIcon",value:function(){this.magnifierIcon&&(this.magnifierIcon.style.visibility="visible",this.magnifierIcon.style.opacity=1)}},{key:"hideMagnifierIcon",value:function(){this.magnifierIcon&&(this.magnifierIcon.style.visibility="hidden",this.magnifierIcon.style.opacity=0)}},{key:"addFullscreenIcon",value:function(){var t;this.fullscreen&&(this.fullscreenIcon=((t=document.createElement("div")).className="cloudimage-360-button cloudimage-360-fullscreen-button",t.innerHTML='fullscreen iconInfo about Hotspot 1'},{id:"hotspot-2",orientation:"x",containerSize:[1220,680],positions:{73:{x:355,y:474},74:{x:355,y:null},72:{x:341,y:479},71:{x:336,y:null},70:{x:332,y:null},69:{x:327,y:null},68:{x:326,y:null},67:{x:327,y:null},66:{x:331,y:null},65:{x:334,y:null},64:{x:336,y:null},63:{x:347,y:474}},content:'
Info about Hotspot 2
'},{id:"hotspot-3",orientation:"x",containerSize:[1220,680],positions:{11:{x:683,y:151},12:{x:683,y:null},13:{x:683,y:null},14:{x:683,y:null},15:{x:683,y:null},16:{x:683,y:null},17:{x:681,y:152},18:{x:677,y:156},19:{x:671,y:159},20:{x:665,y:163},21:{x:656,y:168},22:{x:650,y:171},23:{x:643,y:176},24:{x:635,y:178},25:{x:628,y:181},26:{x:621,y:null},27:{x:610,y:null},28:{x:598,y:null},29:{x:588,y:null},30:{x:578,y:null},31:{x:570,y:176},32:{x:560,y:173}},content:'
Info about Hotspot 3
'},{id:"hotspot-4",orientation:"x",containerSize:[1220,680],positions:{6:{x:607,y:246},7:{x:619,y:null},8:{x:630,y:null},9:{x:637,y:null},10:{x:642,y:null}},content:'
Info about Hotspot 4
'}]}),Un.initAll(),$n(Un.getViewById("demo-generator").viewerConfig)})()})(); +//# sourceMappingURL=bundle85636594fb2f2f9d060c.js.map \ No newline at end of file diff --git a/bundle85636594fb2f2f9d060c.js.LICENSE.txt b/bundle85636594fb2f2f9d060c.js.LICENSE.txt new file mode 100644 index 0000000..ae386fb --- /dev/null +++ b/bundle85636594fb2f2f9d060c.js.LICENSE.txt @@ -0,0 +1 @@ +/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ diff --git a/bundle85636594fb2f2f9d060c.js.map b/bundle85636594fb2f2f9d060c.js.map new file mode 100644 index 0000000..d366f86 --- /dev/null +++ b/bundle85636594fb2f2f9d060c.js.map @@ -0,0 +1 @@ +{"version":3,"file":"bundle85636594fb2f2f9d060c.js","mappings":"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","sources":["webpack://js-cloudimage-360-view/./node_modules/lodash.throttle/index.js","webpack://js-cloudimage-360-view/./src/static/css/icons/close.svg","webpack://js-cloudimage-360-view/./src/static/css/icons/fullscreen.svg","webpack://js-cloudimage-360-view/./src/static/css/icons/magnifier.svg","webpack://js-cloudimage-360-view/webpack/bootstrap","webpack://js-cloudimage-360-view/webpack/runtime/compat get default export","webpack://js-cloudimage-360-view/webpack/runtime/define property getters","webpack://js-cloudimage-360-view/webpack/runtime/global","webpack://js-cloudimage-360-view/webpack/runtime/hasOwnProperty shorthand","webpack://js-cloudimage-360-view/webpack/runtime/make namespace object","webpack://js-cloudimage-360-view/./src/utils/constants.js","webpack://js-cloudimage-360-view/./src/ci360.utils.js","webpack://js-cloudimage-360-view/./src/utils/image-src/generate-cdn-path.js","webpack://js-cloudimage-360-view/./src/utils/responsive/get-size-according-to-pixel-ratio.js","webpack://js-cloudimage-360-view/./src/utils/image-src/add-or-update-param.js","webpack://js-cloudimage-360-view/./src/utils/image-src/generate-high-preview-cdn-url.js","webpack://js-cloudimage-360-view/./src/utils/load-images/pad.js","webpack://js-cloudimage-360-view/./src/utils/load-images/load-images.js","webpack://js-cloudimage-360-view/./src/utils/load-images/preload-images.js","webpack://js-cloudimage-360-view/./src/utils/load-images/generate-images-cdn-links.js","webpack://js-cloudimage-360-view/./src/utils/container-elements/create-icons-container.js","webpack://js-cloudimage-360-view/./src/utils/container-elements/remove-element-from-container.js","webpack://js-cloudimage-360-view/./src/utils/image-src/generate-low-preview-cdn-url.js","webpack://js-cloudimage-360-view/./src/utils/image-src/remove-param-by-regex.js","webpack://js-cloudimage-360-view/./src/utils/load-images/lazyload/prepare-first-image/get-first-cdn-mage-from-list.js","webpack://js-cloudimage-360-view/./src/utils/load-images/lazyload/init-lazyload.js","webpack://js-cloudimage-360-view/./src/utils/load-images/lazyload/lazyload-image.js","webpack://js-cloudimage-360-view/./src/utils/load-images/lazyload/prepare-first-image/get-first-cdn-image.js","webpack://js-cloudimage-360-view/./src/utils/magnify/move-magnifier.js","webpack://js-cloudimage-360-view/./src/utils/magnify/get-cursor-position.js","webpack://js-cloudimage-360-view/./src/utils/auto-play/loop.js","webpack://js-cloudimage-360-view/./src/utils/spin/is-spin-keys-pressed.js","webpack://js-cloudimage-360-view/./src/canvas.worker.js","webpack://js-cloudimage-360-view/./src/utils/zoom/calculate-zoomed-dimensions.js","webpack://js-cloudimage-360-view/./src/utils/zoom/calculate-zoomed-offset.js","webpack://js-cloudimage-360-view/./node_modules/@popperjs/core/lib/dom-utils/getWindow.js","webpack://js-cloudimage-360-view/./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","webpack://js-cloudimage-360-view/./node_modules/@popperjs/core/lib/utils/math.js","webpack://js-cloudimage-360-view/./node_modules/@popperjs/core/lib/utils/userAgent.js","webpack://js-cloudimage-360-view/./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","webpack://js-cloudimage-360-view/./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","webpack://js-cloudimage-360-view/./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","webpack://js-cloudimage-360-view/./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","webpack://js-cloudimage-360-view/./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","webpack://js-cloudimage-360-view/./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","webpack://js-cloudimage-360-view/./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","webpack://js-cloudimage-360-view/./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","webpack://js-cloudimage-360-view/./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","webpack://js-cloudimage-360-view/./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","webpack://js-cloudimage-360-view/./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","webpack://js-cloudimage-360-view/./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","webpack://js-cloudimage-360-view/./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","webpack://js-cloudimage-360-view/./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","webpack://js-cloudimage-360-view/./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","webpack://js-cloudimage-360-view/./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","webpack://js-cloudimage-360-view/./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","webpack://js-cloudimage-360-view/./node_modules/@popperjs/core/lib/enums.js","webpack://js-cloudimage-360-view/./node_modules/@popperjs/core/lib/utils/orderModifiers.js","webpack://js-cloudimage-360-view/./node_modules/@popperjs/core/lib/createPopper.js","webpack://js-cloudimage-360-view/./node_modules/@popperjs/core/lib/utils/debounce.js","webpack://js-cloudimage-360-view/./node_modules/@popperjs/core/lib/utils/mergeByName.js","webpack://js-cloudimage-360-view/./node_modules/@popperjs/core/lib/modifiers/eventListeners.js","webpack://js-cloudimage-360-view/./node_modules/@popperjs/core/lib/utils/getBasePlacement.js","webpack://js-cloudimage-360-view/./node_modules/@popperjs/core/lib/utils/getVariation.js","webpack://js-cloudimage-360-view/./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","webpack://js-cloudimage-360-view/./node_modules/@popperjs/core/lib/utils/computeOffsets.js","webpack://js-cloudimage-360-view/./node_modules/@popperjs/core/lib/modifiers/computeStyles.js","webpack://js-cloudimage-360-view/./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","webpack://js-cloudimage-360-view/./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","webpack://js-cloudimage-360-view/./node_modules/@popperjs/core/lib/dom-utils/contains.js","webpack://js-cloudimage-360-view/./node_modules/@popperjs/core/lib/utils/rectToClientRect.js","webpack://js-cloudimage-360-view/./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","webpack://js-cloudimage-360-view/./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","webpack://js-cloudimage-360-view/./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","webpack://js-cloudimage-360-view/./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","webpack://js-cloudimage-360-view/./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","webpack://js-cloudimage-360-view/./node_modules/@popperjs/core/lib/utils/expandToHashMap.js","webpack://js-cloudimage-360-view/./node_modules/@popperjs/core/lib/utils/detectOverflow.js","webpack://js-cloudimage-360-view/./node_modules/@popperjs/core/lib/utils/within.js","webpack://js-cloudimage-360-view/./node_modules/@popperjs/core/lib/modifiers/hide.js","webpack://js-cloudimage-360-view/./node_modules/@popperjs/core/lib/popper.js","webpack://js-cloudimage-360-view/./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","webpack://js-cloudimage-360-view/./node_modules/@popperjs/core/lib/modifiers/applyStyles.js","webpack://js-cloudimage-360-view/./node_modules/@popperjs/core/lib/modifiers/offset.js","webpack://js-cloudimage-360-view/./node_modules/@popperjs/core/lib/modifiers/flip.js","webpack://js-cloudimage-360-view/./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","webpack://js-cloudimage-360-view/./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","webpack://js-cloudimage-360-view/./node_modules/@popperjs/core/lib/utils/getAltAxis.js","webpack://js-cloudimage-360-view/./node_modules/@popperjs/core/lib/modifiers/arrow.js","webpack://js-cloudimage-360-view/./src/hotspots.js","webpack://js-cloudimage-360-view/./src/utils/hotspots.js","webpack://js-cloudimage-360-view/./src/utils/container-elements/create-hotspots-container.js","webpack://js-cloudimage-360-view/./src/ci360.service.js","webpack://js-cloudimage-360-view/./src/utils/is-touch-device.js","webpack://js-cloudimage-360-view/./src/utils/spin/get-moving-direction.js","webpack://js-cloudimage-360-view/./src/utils/zoom/calculate-offsets-from-events.js","webpack://js-cloudimage-360-view/./src/utils/delay.js","webpack://js-cloudimage-360-view/./src/utils/load-images/load-image.js","webpack://js-cloudimage-360-view/./src/utils/magnify/magnify.js","webpack://js-cloudimage-360-view/./src/utils/container-elements/create-fullscreen-modal.js","webpack://js-cloudimage-360-view/./src/utils/auto-play/is-completed-one-cycle.js","webpack://js-cloudimage-360-view/./src/utils/spin/should-switch-spin-direction.js","webpack://js-cloudimage-360-view/./src/utils/spin/switch-spin-direction.js","webpack://js-cloudimage-360-view/./src/utils/container-elements/create-initial-icon.js","webpack://js-cloudimage-360-view/./src/utils/container-elements/create-magnifier-icon.js","webpack://js-cloudimage-360-view/./src/utils/container-elements/create-fullscreen-icon.js","webpack://js-cloudimage-360-view/./src/utils/container-elements/create-close-icon.js","webpack://js-cloudimage-360-view/./src/utils/container-elements/create-360-view-circle-icon.js","webpack://js-cloudimage-360-view/./src/utils/container-elements/create-loading-spinner.js","webpack://js-cloudimage-360-view/./src/utils/container-elements/create-transition-overlay.js","webpack://js-cloudimage-360-view/./src/utils/container-elements/create-canvas.js","webpack://js-cloudimage-360-view/./src/utils/container-elements/create-loader.js","webpack://js-cloudimage-360-view/./src/utils/container-elements/create-inner-box.js","webpack://js-cloudimage-360-view/./src/utils/spin/get-default-spin-direction.js","webpack://js-cloudimage-360-view/./src/ci360.js","webpack://js-cloudimage-360-view/./src/utils/image-src/has-config-changed.js","webpack://js-cloudimage-360-view/./src/index.js","webpack://js-cloudimage-360-view/./demo/hotspots-config.constant.js","webpack://js-cloudimage-360-view/./demo/constants.js","webpack://js-cloudimage-360-view/./demo/index.js"],"sourcesContent":["/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = throttle;\n","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export const AUTOPLAY_BEHAVIOR = {\n SPIN_X: 'spin-x',\n SPIN_Y: 'spin-y',\n SPIN_XY: 'spin-xy',\n SPIN_YX: 'spin-yx',\n};\n\nexport const FALSY_VALUES = [false, 0, null, undefined, 'false', '0', 'null', 'undefined'];\n\nexport const ORIENTATIONS = {\n X: 'x-axis',\n Y: 'y-axis',\n CENTER: 'center',\n};\n\nexport const PROPS_REQUIRE_RELOAD = [\n 'folder',\n 'folderX',\n 'folderY',\n 'filenameX',\n 'filenameY',\n 'imageListX',\n 'imageListY',\n 'indexZeroBase',\n 'amountX',\n 'amountY',\n];\n\nexport const LEFT_RIGHT_KEYS = [37, 39];\nexport const UP_DOWN_KEYS = [38, 40];\n\nexport const THROTTLE_TIME = 10;\n","import { AUTOPLAY_BEHAVIOR } from './utils/constants';\n\n// Default values object\nconst DEFAULTS_VALUES = {\n folder: '/',\n apiVersion: 'v7',\n filenameX: 'image-{index}.jpg',\n filenameY: null,\n imageListX: null,\n imageListY: null,\n indexZeroBase: 0,\n amountX: 0,\n amountY: 0,\n speed: 80,\n dragSpeed: 150,\n draggable: true,\n swipeable: true,\n keys: false,\n keysReverse: false,\n autoplay: false,\n autoplayBehavior: AUTOPLAY_BEHAVIOR.SPIN_X,\n playOnce: false,\n autoplayReverse: false,\n pointerZoom: 0,\n fullscreen: false,\n magnifier: null,\n bottomCircle: true,\n bottomCircleOffset: 5,\n ciToken: null,\n ciFilters: null,\n ciTransformation: null,\n lazyload: true,\n dragReverse: false,\n stopAtEdges: false,\n imageInfo: false,\n initialIconShown: true,\n hotspots: null,\n};\n\nconst getConfigFromImage = (image) => ({\n folder: getAttr(image, 'folder', DEFAULTS_VALUES.folder),\n apiVersion: getAttr(image, 'api-version', DEFAULTS_VALUES.apiVersion),\n filenameX: getAttr(image, 'filename') || getAttr(image, 'filename-x') || DEFAULTS_VALUES.filenameX,\n filenameY: getAttr(image, 'filename-y', DEFAULTS_VALUES.filenameY),\n imageListX: getAttr(image, 'image-list-x', DEFAULTS_VALUES.imageListX),\n imageListY: getAttr(image, 'image-list-y', DEFAULTS_VALUES.imageListY),\n indexZeroBase: parseInt(getAttr(image, 'index-zero-base', DEFAULTS_VALUES.indexZeroBase), 10),\n amountX: parseInt(getAttr(image, 'amount-x', DEFAULTS_VALUES.amountX), 10),\n amountY: parseInt(getAttr(image, 'amount-y', DEFAULTS_VALUES.amountY), 10),\n speed: parseInt(getAttr(image, 'speed', DEFAULTS_VALUES.speed), 10),\n dragSpeed: parseInt(getAttr(image, 'drag-speed', DEFAULTS_VALUES.dragSpeed), 10),\n draggable: isTrue(image, 'draggable', DEFAULTS_VALUES.draggable),\n swipeable: isTrue(image, 'swipeable', DEFAULTS_VALUES.swipeable),\n keys: isTrue(image, 'keys', DEFAULTS_VALUES.keys),\n keysReverse: isTrue(image, 'keys-reverse', DEFAULTS_VALUES.keysReverse),\n autoplay: isTrue(image, 'autoplay', DEFAULTS_VALUES.autoplay),\n autoplayBehavior: getAttr(image, 'autoplay-behavior', DEFAULTS_VALUES.autoplayBehavior),\n playOnce: isTrue(image, 'play-once', DEFAULTS_VALUES.playOnce),\n autoplayReverse: isTrue(image, 'autoplay-reverse', DEFAULTS_VALUES.autoplayReverse),\n pointerZoom: parseFloat(getAttr(image, 'pointer-zoom', DEFAULTS_VALUES.pointerZoom), 10),\n fullscreen: isTrue(image, 'fullscreen') || isTrue(image, 'full-screen', DEFAULTS_VALUES.fullscreen),\n magnifier: parseFloat(getAttr(image, 'magnifier', DEFAULTS_VALUES.magnifier), 10),\n bottomCircleOffset: parseInt(\n getAttr(image, 'bottom-circle-offset', DEFAULTS_VALUES.bottomCircleOffset),\n 10\n ),\n ciToken: getAttr(image, 'responsive', DEFAULTS_VALUES.ciToken),\n ciFilters: getAttr(image, 'filters', DEFAULTS_VALUES.ciFilters),\n ciTransformation: getAttr(image, 'transformation', DEFAULTS_VALUES.ciTransformation),\n lazyload: isTrue(image, 'lazyload', DEFAULTS_VALUES.lazyload),\n dragReverse: isTrue(image, 'drag-reverse', DEFAULTS_VALUES.dragReverse),\n stopAtEdges: isTrue(image, 'stop-at-edges', DEFAULTS_VALUES.stopAtEdges),\n imageInfo: isTrue(image, 'info', DEFAULTS_VALUES.imageInfo),\n initialIconShown: !isFalse(image, 'initial-icon'),\n bottomCircle: !isFalse(image, 'bottom-circle'),\n});\n\nconst adaptConfig = (config) => ({\n folder: config.folder || DEFAULTS_VALUES.folder,\n apiVersion: config.apiVersion || DEFAULTS_VALUES.apiVersion,\n filenameX: config.filenameX || config.filename || DEFAULTS_VALUES.filenameX,\n filenameY: config.filenameY || DEFAULTS_VALUES.filenameY,\n imageListX: config.imageListX || DEFAULTS_VALUES.imageListX,\n imageListY: config.imageListY || DEFAULTS_VALUES.imageListY,\n indexZeroBase: parseInt(config.indexZeroBase ?? DEFAULTS_VALUES.indexZeroBase, 10),\n amountX: parseInt(config.amountX ?? DEFAULTS_VALUES.amountX, 10),\n amountY: parseInt(config.amountY ?? DEFAULTS_VALUES.amountY, 10),\n speed: parseInt(config.speed ?? DEFAULTS_VALUES.speed, 10),\n draggable: config.draggable ?? DEFAULTS_VALUES.draggable,\n swipeable: config.swipeable ?? DEFAULTS_VALUES.swipeable,\n dragSpeed: parseInt(config.dragSpeed ?? DEFAULTS_VALUES.dragSpeed, 10),\n keys: config.keys ?? DEFAULTS_VALUES.keys,\n keysReverse: config.keysReverse ?? DEFAULTS_VALUES.keysReverse,\n autoplay: config.autoplay ?? DEFAULTS_VALUES.autoplay,\n autoplayBehavior: config.autoplayBehavior || DEFAULTS_VALUES.autoplayBehavior,\n playOnce: config.playOnce ?? DEFAULTS_VALUES.playOnce,\n autoplayReverse: config.autoplayReverse ?? DEFAULTS_VALUES.autoplayReverse,\n pointerZoom: parseFloat(config.pointerZoom ?? DEFAULTS_VALUES.pointerZoom, 10),\n fullscreen: config.fullscreen ?? DEFAULTS_VALUES.fullscreen,\n magnifier: parseFloat(config.magnifier ?? DEFAULTS_VALUES.magnifier, 10),\n bottomCircleOffset: parseInt(config.bottomCircleOffset ?? DEFAULTS_VALUES.bottomCircleOffset, 10),\n ciToken: config.ciToken || DEFAULTS_VALUES.ciToken,\n ciFilters: config.ciFilters || DEFAULTS_VALUES.ciFilters,\n ciTransformation: config.ciTransformation || DEFAULTS_VALUES.ciTransformation,\n lazyload: config.lazyload ?? DEFAULTS_VALUES.lazyload,\n dragReverse: config.dragReverse ?? DEFAULTS_VALUES.dragReverse,\n stopAtEdges: config.stopAtEdges ?? DEFAULTS_VALUES.stopAtEdges,\n imageInfo: config.imageInfo ?? DEFAULTS_VALUES.imageInfo,\n initialIconShown: config.initialIconShown ?? DEFAULTS_VALUES.initialIconShown,\n bottomCircle: config.bottomCircle ?? DEFAULTS_VALUES.bottomCircle,\n hotspots: config.hotspots ?? DEFAULTS_VALUES.hotspots,\n});\n\n// Helper functions\nconst getAttr = (element, attribute, defaultValue) =>\n element.getAttribute(attribute) || element.getAttribute(`data-${attribute}`) || defaultValue;\n\nconst isTrue = (image, type, defaultValue) => {\n const hasAttribute = image.hasAttribute(type) || image.hasAttribute(`data-${type}`);\n\n return hasAttribute || defaultValue;\n};\n\nconst isFalse = (image, type) => {\n const imgProp = getAttr(image, type, null);\n return imgProp === 'false';\n};\n\nexport { adaptConfig, getConfigFromImage };\n","import { FALSY_VALUES } from '../constants';\nimport getSizeAccordingToPixelRatio from '../responsive/get-size-according-to-pixel-ratio';\n\nconst buildCdnUrl = (src, ciToken, finalApiVersion) => {\n const isCloudImageUrl = new URL(src).origin.includes('cloudimg');\n return isCloudImageUrl ? src : `https://${ciToken}.cloudimg.io/${finalApiVersion}${src}`;\n};\n\nconst buildTransformationParams = ({ ciTransformation, responsiveWidth, ciFilters }) => {\n const sizeParam = `width=${responsiveWidth}`;\n const transformation = ciTransformation || sizeParam;\n const filters = ciFilters ? `&f=${ciFilters}` : '';\n return `${transformation}${filters}`;\n};\n\nexport const generateCdnPath = (srcConfig, width) => {\n const { folder, apiVersion, filename = '', ciParams } = srcConfig;\n const { ciToken, ciFilters, ciTransformation } = ciParams || {};\n\n const src = `${folder}${filename}`;\n\n if (!ciToken) return src;\n\n const version = !FALSY_VALUES.includes(apiVersion) ? apiVersion : null;\n const finalApiVersion = version ? `${version}/` : '';\n const responsiveWidth = getSizeAccordingToPixelRatio(width);\n\n const cdn = buildCdnUrl(src, ciToken, finalApiVersion);\n const transformationParams = buildTransformationParams({\n ciTransformation,\n responsiveWidth,\n ciFilters,\n });\n\n return `${cdn}${transformationParams ? '?' : ''}${transformationParams}`;\n};\n","const getSizeAccordingToPixelRatio = (size = 1) => {\n const pixelRatio = Math.round(window.devicePixelRatio || 1);\n return parseInt(size) * pixelRatio;\n};\n\nexport default getSizeAccordingToPixelRatio;\n","export const addOrUpdateParam = (url, paramName, paramValue) => {\n const [base, query] = url.split('?');\n const newParam = `${paramName}=${encodeURIComponent(paramValue)}`;\n\n if (!query) {\n return `${base}?${newParam}`;\n }\n\n const params = new URLSearchParams(query);\n\n params.set(paramName, paramValue);\n\n return `${base}?${params.toString()}`;\n};\n","import { addOrUpdateParam } from './add-or-update-param';\n\nexport const generateHighPreviewCdnUrl = (url, width) => addOrUpdateParam(url, 'width', width);\n","export const pad = (n, width = 0) => {\n n += '';\n\n return n.length >= width ? n : new Array(width - n.length + 1).join('0') + n;\n};\n","export const loadImages = ({\n imagesUrls,\n onFirstImageLoad,\n onImageLoad,\n onAllImagesLoad,\n autoplayReverse,\n}) => {\n let loadedCount = 0;\n const totalImages = imagesUrls.length;\n const loadedImages = [];\n\n const loadImage = (url, index) => {\n const img = new Image();\n img.crossOrigin = 'anonymous';\n img.src = url;\n\n img.onload = async () => {\n const bitmapImage = await createImageBitmap(img);\n\n const imageData = {\n src: url,\n bitmapImage,\n naturalWidth: firstImg.naturalWidth,\n naturalHeight: firstImg.naturalHeight,\n };\n\n loadedCount++;\n loadedImages[index] = imageData;\n\n onImageLoad?.(imageData, index);\n\n if (loadedCount === totalImages) {\n onAllImagesLoad?.(loadedImages);\n }\n };\n\n img.onerror = () => {\n console.error(`Failed to load image: ${url}`);\n loadedCount++;\n\n if (loadedCount === totalImages) {\n onAllImagesLoad?.(loadedImages);\n }\n };\n };\n\n const firstImg = new Image();\n const src = imagesUrls[autoplayReverse ? imagesUrls.length - 1 : 0];\n firstImg.crossOrigin = 'anonymous';\n firstImg.src = src;\n firstImg.onload = async () => {\n const bitmapImage = await createImageBitmap(firstImg);\n\n const imageData = {\n src,\n bitmapImage,\n naturalWidth: firstImg.naturalWidth,\n naturalHeight: firstImg.naturalHeight,\n };\n\n loadedImages[0] = imageData;\n loadedCount++;\n\n onFirstImageLoad?.(imageData);\n onImageLoad?.(imageData, 0);\n\n for (let i = 1; i < imagesUrls.length; i++) {\n loadImage(imagesUrls[i], i);\n }\n };\n\n firstImg.onerror = () => {\n console.error(`Failed to load first image: ${imagesUrls[0]}`);\n loadedCount++;\n\n for (let i = 1; i < imagesUrls.length; i++) {\n loadImage(imagesUrls[i], i);\n }\n };\n};\n\nexport default loadImages;\n","import { ORIENTATIONS } from '../constants';\nimport { generateImagesCdnLinks } from './generate-images-cdn-links';\nimport { loadImages } from './load-images';\n\nexport const preloadImages = ({\n cdnPathX,\n cdnPathY,\n configX,\n configY,\n onFirstImageLoad,\n onImageLoad,\n onAllImagesLoad,\n}) => {\n let allImagesLoaded = { x: false, y: false };\n let loadedImagesX = [];\n let loadedImagesY = [];\n const loadX = cdnPathX || configX.imageList.length;\n const loadY = cdnPathY || configY.imageList.length;\n\n const handleAllImagesLoaded = () => {\n if (allImagesLoaded.x && allImagesLoaded.y) {\n onAllImagesLoad(loadedImagesX, loadedImagesY);\n }\n };\n\n const loadOrientationImages = ({ cdnPath, config, orientation, loadedImages, onFirstImageLoad }) => {\n const xOrientation = orientation === ORIENTATIONS.X;\n const imageList = config.imageList.length ? config.imageList : generateImagesCdnLinks(cdnPath, config);\n\n loadImages({\n imagesUrls: imageList,\n onFirstImageLoad,\n onImageLoad: (imageData, index) => {\n onImageLoad?.(imageData, index, orientation);\n loadedImages[index] = imageData;\n },\n onAllImagesLoad: (loadedImagesResult) => {\n loadedImages = loadedImagesResult;\n allImagesLoaded[xOrientation ? 'x' : 'y'] = true;\n handleAllImagesLoaded();\n },\n autoplayReverse: config.autoplayReverse,\n });\n };\n\n if (loadX) {\n loadOrientationImages({\n cdnPath: cdnPathX,\n config: configX,\n orientation: ORIENTATIONS.X,\n loadedImages: loadedImagesX,\n onFirstImageLoad,\n });\n } else {\n allImagesLoaded.x = true;\n }\n\n if (loadY) {\n loadOrientationImages({\n cdnPath: cdnPathY,\n config: configY,\n orientation: ORIENTATIONS.Y,\n loadedImages: loadedImagesY,\n onFirstImageLoad: !loadX ? onFirstImageLoad : undefined,\n });\n } else {\n allImagesLoaded.y = true;\n }\n};\n","import { pad } from './pad';\n\nexport const generateImagesCdnLinks = (cdnPath, { amount = 0, indexZeroBase = 0 } = {}) =>\n Array.from({ length: amount }, (_, index) => cdnPath.replace('{index}', pad(index + 1, indexZeroBase)));\n","export const createIconsContainer = (innerBox) => {\n const iconsContainer = document.createElement('div');\n iconsContainer.className = 'cloudimage-360-icons-container';\n innerBox.appendChild(iconsContainer);\n\n return iconsContainer;\n};\n","export const removeElementFromContainer = (container, selector) => {\n const element = container.querySelector(selector);\n\n if (element) {\n element.parentNode.removeChild(element);\n }\n};\n","import { removeParamByRegex } from './remove-param-by-regex';\n\nconst generateLowPreviewCdnUrl = (cdnUrl) => {\n const cleanedCdnUrl = removeParamByRegex(cdnUrl, 'width');\n const separator = cleanedCdnUrl.includes('?') ? '&' : '?';\n\n return `${cleanedCdnUrl}${separator}width=${150 * devicePixelRatio}`;\n};\n\nexport default generateLowPreviewCdnUrl;\n","export const removeParamByRegex = (url, paramToRemove) => {\n const [base, query] = url.split('?');\n if (!query) return url;\n\n const regex = new RegExp(`^${paramToRemove}=|&${paramToRemove}=`);\n const cleanedQuery = query\n .split('&')\n .filter((param) => !regex.test(param))\n .join('&');\n\n return cleanedQuery ? `${base}?${cleanedQuery}` : base;\n};\n","import { generateCdnPath } from '../../../image-src/generate-cdn-path';\n\nconst getFirstCdnImageFromList = (images, srcConfig) => {\n const [firstImageSrc] = images;\n const isAbsoluteUrl = /(https?):\\/\\//i.test(firstImageSrc);\n\n return generateCdnPath({\n ...srcConfig,\n folder: isAbsoluteUrl ? '' : srcConfig.folder,\n filename: firstImageSrc,\n });\n};\n\nexport default getFirstCdnImageFromList;\n","import { removeElementFromContainer } from '../../container-elements';\nimport generateLowPreviewCdnUrl from '../../image-src/generate-low-preview-cdn-url';\nimport lazyLoadImages from './lazyload-image';\nimport getFirstCdnImage from './prepare-first-image/get-first-cdn-image';\nimport getFirstCdnImageFromList from './prepare-first-image/get-first-cdn-mage-from-list';\n\nconst getFirstImageSrc = (imagesSrc, srcConfig) => {\n const { imageList, indexZeroBase } = srcConfig;\n\n if (imageList.length) {\n try {\n const images = JSON.parse(imageList);\n return getFirstCdnImageFromList(images, srcConfig);\n } catch (error) {\n console.error(`Wrong format in image-list attribute: ${error.message}`);\n }\n }\n\n return getFirstCdnImage(imagesSrc, indexZeroBase);\n};\n\nconst createImage = (src, lazyload, className) => {\n const image = new Image();\n image.setAttribute(lazyload ? 'data-src' : 'src', src);\n image.className = className;\n image.style.cssText = `\n position: ${lazyload ? 'absolute' : 'static'};\n width: 100%;\n inset: 0;\n height: 100%;\n object-fit: contain;\n object-position: center;\n filter: blur(10px);\n `;\n\n return image;\n};\n\nexport const initLazyload = (cdnPath, srcConfig, onLoad) => {\n const { innerBox, imageList, lazyload } = srcConfig || {};\n const [firstImageSrcInList] = imageList;\n const firstImageSrc = firstImageSrcInList || getFirstImageSrc(cdnPath, srcConfig);\n const lowPreviewSrc = generateLowPreviewCdnUrl(firstImageSrc);\n const lazyloadImage = createImage(lowPreviewSrc, lazyload, 'cloudimage-lazy');\n const placeholderImage = createImage(lowPreviewSrc, false, 'cloudimage-360-placeholder');\n\n const loadImageCallback = (event) => {\n removeElementFromContainer(innerBox, '.cloudimage-lazy');\n\n if (onLoad) {\n onLoad({\n event: event,\n width: lazyloadImage.width,\n height: lazyloadImage.height,\n naturalWidth: lazyloadImage.naturalWidth,\n naturalHeight: lazyloadImage.naturalHeight,\n src: lowPreviewSrc,\n });\n }\n };\n\n lazyloadImage.onload = loadImageCallback;\n innerBox.appendChild(lazyloadImage);\n innerBox.appendChild(placeholderImage);\n\n lazyLoadImages(lazyloadImage);\n};\n","const lazyLoadImages = (image) => {\n const options = {\n root: null,\n rootMargin: '0px',\n threshold: 0.1,\n };\n\n const loadImage = (image) => {\n const src = image.getAttribute('data-src');\n\n if (src) {\n image.src = src;\n }\n };\n\n const observer = new IntersectionObserver((entries, observer) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n loadImage(entry.target);\n observer.unobserve(entry.target);\n }\n });\n }, options);\n\n observer.observe(image);\n};\n\nexport default lazyLoadImages;\n","import { pad } from '../../pad';\n\nconst getFirstCdnImage = (cdnPath, indexZeroBase) => {\n const nextZeroFilledIndex = pad(1, indexZeroBase);\n\n return cdnPath.replace('{index}', nextZeroFilledIndex);\n};\n\nexport default getFirstCdnImage;\n","import { getCursorPosition } from './get-cursor-position';\n\nexport const moveMagnifier = (e, containerConfig, glass) => {\n const { container, w, h, zoom, bw, offsetX, offsetY } = containerConfig;\n\n const pos = getCursorPosition(e, container);\n let x = pos.x;\n let y = pos.y;\n\n // Ensure the magnifier doesn't move outside container bounds\n x = Math.max(w / zoom, Math.min(x, container.offsetWidth - w / zoom));\n y = Math.max(h / zoom, Math.min(y, container.offsetHeight - h / zoom));\n\n // Update the magnifier glass position\n glass.style.left = `${x - w}px`;\n glass.style.top = `${y - h}px`;\n\n // Calculate background position (where the magnified image should show)\n const backgroundPosX = (x - offsetX) * zoom - w + bw;\n const backgroundPosY = (y - offsetY) * zoom - h + bw;\n\n // Apply background position to simulate zoom effect\n glass.style.backgroundPosition = `-${backgroundPosX}px -${backgroundPosY}px`;\n};\n","export const getCursorPosition = (e, container) => {\n const rect = container.getBoundingClientRect();\n const x = e.touches ? e.touches[0].clientX : e.clientX;\n const y = e.touches ? e.touches[0].clientY : e.clientY;\n\n return {\n x: x - rect.left,\n y: y - rect.top,\n };\n};\n","import { AUTOPLAY_BEHAVIOR } from '../constants';\n\nconst handleSpinY = (reversed, { bottom, top }) => {\n if (reversed) {\n bottom();\n } else {\n top();\n }\n};\n\nconst handleSpinX = (reversed, { left, right }) => {\n if (reversed) {\n left();\n } else {\n right();\n }\n};\n\nexport const loop = ({ autoplayBehavior, spinY, reversed, loopTriggers }) => {\n switch (autoplayBehavior) {\n case AUTOPLAY_BEHAVIOR.SPIN_XY:\n case AUTOPLAY_BEHAVIOR.SPIN_YX:\n if (spinY) {\n handleSpinY(reversed, loopTriggers);\n } else {\n handleSpinX(reversed, loopTriggers);\n }\n break;\n\n case AUTOPLAY_BEHAVIOR.SPIN_Y:\n handleSpinY(reversed, loopTriggers);\n break;\n\n case AUTOPLAY_BEHAVIOR.SPIN_X:\n default:\n handleSpinX(reversed, loopTriggers);\n }\n};\n","import { LEFT_RIGHT_KEYS, UP_DOWN_KEYS } from '../constants';\n\nexport const isSpinKeysPressed = (keyCode, allowSpinY) => {\n const keys = [...LEFT_RIGHT_KEYS];\n\n if (allowSpinY) {\n return [...keys, ...UP_DOWN_KEYS].includes(keyCode);\n }\n\n return keys.includes(keyCode);\n};\n","import { calculateZoomedDimensions, calculateZoomOffsets } from './utils';\n\nlet canvas, ctx, dpr, drawWidth, drawHeight, wideImage;\n\nself.onmessage = async (event) => {\n const {\n action,\n offscreen,\n devicePixelRatio,\n imageData,\n zoomScale,\n pointerX,\n pointerY,\n imageAspectRatio,\n containerWidth,\n containerHeight,\n } = event.data;\n\n switch (action) {\n case 'initCanvas':\n initCanvas(offscreen, devicePixelRatio);\n break;\n case 'adaptCanvasSize':\n adaptCanvasSize(imageAspectRatio, containerWidth, containerHeight);\n break;\n case 'drawImageOnCanvas':\n drawImageOnCanvas(imageData, zoomScale, pointerX, pointerY);\n break;\n default:\n break;\n }\n};\n\nconst initCanvas = (offscreenCanvas, devicePixelRatio) => {\n canvas = offscreenCanvas;\n ctx = canvas.getContext('2d');\n dpr = devicePixelRatio;\n};\n\nconst adaptCanvasSize = (imageAspectRatio, containerWidth, containerHeight) => {\n const containerAspectRatio = containerWidth / containerHeight;\n wideImage = imageAspectRatio > containerAspectRatio;\n\n canvas.width = containerWidth * dpr;\n canvas.height = containerHeight * dpr;\n ctx.scale(dpr, dpr);\n\n if (wideImage) {\n drawWidth = containerWidth;\n drawHeight = containerWidth / imageAspectRatio;\n } else {\n drawHeight = containerHeight;\n drawWidth = containerHeight * imageAspectRatio;\n }\n\n ctx.imageSmoothingEnabled = true;\n ctx.imageSmoothingQuality = 'high';\n};\n\n// Draw the image on the OffscreenCanvas\nconst drawImageOnCanvas = (imageData = {}, zoomScale = 1, pointerX = 0, pointerY = 0) => {\n const { bitmapImage } = imageData;\n if (!canvas || !bitmapImage) return;\n\n let offsetX, offsetY;\n if (wideImage) {\n offsetX = 0;\n offsetY = (canvas.height / dpr - drawHeight) / 2;\n } else {\n offsetX = (canvas.width / dpr - drawWidth) / 2;\n offsetY = 0;\n }\n\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n\n if (zoomScale !== 1) {\n const { zoomedWidth, zoomedHeight } = calculateZoomedDimensions(drawWidth, drawHeight, zoomScale);\n\n const { zoomOffsetX, zoomOffsetY } = calculateZoomOffsets({\n pointerX,\n pointerY,\n imageData,\n zoomedWidth,\n zoomedHeight,\n drawWidth,\n drawHeight,\n });\n\n ctx.drawImage(\n bitmapImage,\n zoomOffsetX,\n zoomOffsetY,\n zoomedWidth,\n zoomedHeight,\n offsetX,\n offsetY,\n drawWidth,\n drawHeight\n );\n } else {\n ctx.drawImage(bitmapImage, offsetX, offsetY, drawWidth, drawHeight);\n }\n};\n","export const calculateZoomedDimensions = (drawWidth, drawHeight, zoomScale) => {\n const zoomedWidth = drawWidth / zoomScale;\n const zoomedHeight = drawHeight / zoomScale;\n return { zoomedWidth, zoomedHeight };\n};\n","export const calculateZoomOffsets = ({\n pointerX,\n pointerY,\n imageData,\n zoomedWidth,\n zoomedHeight,\n drawWidth,\n drawHeight,\n}) => {\n const { naturalWidth, naturalHeight } = imageData;\n let zoomOffsetX = (pointerX / drawWidth) * naturalWidth - zoomedWidth / 2;\n let zoomOffsetY = (pointerY / drawHeight) * naturalHeight - zoomedHeight / 2;\n\n // Calculate max offset values\n const maxOffsetX = Math.max(0, naturalWidth - zoomedWidth);\n const maxOffsetY = Math.max(0, naturalHeight - zoomedHeight);\n\n // Clamp zoom offsets to the valid range\n zoomOffsetX = Math.max(0, Math.min(zoomOffsetX, maxOffsetX));\n zoomOffsetY = Math.max(0, Math.min(zoomOffsetY, maxOffsetY));\n\n return { zoomOffsetX, zoomOffsetY };\n};\n","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on \n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n });\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref) {\n var name = _ref.name,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? {} : _ref$options,\n effect = _ref.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n var x = _ref.x,\n y = _ref.y;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }, getWindow(popper)) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","import { createHotspotsContainer } from './utils';\nimport {\n adaptHotspotConfig,\n calculateHotspotPositions,\n createHotspotElement,\n createPopperElement,\n createPopperModifiers,\n findHotspotsForFrame,\n} from './utils/hotspots';\nimport { createPopper } from '@popperjs/core';\n\nclass Hotspot {\n constructor(hotspotsConfig, container, imageAspectRatio) {\n this.container = container;\n this.popper = null;\n this.popperInstance = null;\n this.hotspotsContainer = createHotspotsContainer(this.container);\n this.hotspotsConfig = adaptHotspotConfig(hotspotsConfig);\n this.shouldHidePopper = true;\n this.hidePopper = this.hidePopper.bind(this);\n this.imageAspectRatio = imageAspectRatio;\n\n const { containerSize } = hotspotsConfig[0];\n this.initialContainerSize = containerSize || [container.offsetWidth, container.offsetHeight];\n\n this.initHotspots();\n this.observeContainerResize();\n }\n\n observeContainerResize() {\n this.resizeObserver = new ResizeObserver(() => {\n const newWidth = this.container.offsetWidth;\n const newHeight = this.container.offsetHeight;\n this.updateHotspotsForResize(newWidth, newHeight);\n });\n this.resizeObserver.observe(this.container);\n }\n\n updateHotspotsForResize(newWidth, newHeight) {\n this.hotspotsConfig = calculateHotspotPositions({\n newWidth,\n newHeight,\n initialContainerSize: this.initialContainerSize,\n imageAspectRatio: this.imageAspectRatio,\n hotspotsConfig: this.hotspotsConfig,\n });\n\n this.updateHotspotPosition(this.currentActiveIndex, this.currentOrientation);\n }\n\n showPopper({ hotspotElement, content, id, keepOpen }) {\n if (this.popperInstance && this.popperInstance.instanceId !== id) {\n this.hidePopper();\n }\n\n const popperOptions = {\n placement: 'top',\n modifiers: createPopperModifiers(this.container),\n };\n\n this.popper = createPopperElement(content, id);\n this.popper.setAttribute('data-show', '');\n\n this.popper.addEventListener('mouseenter', () => {\n this.shouldHidePopper = false;\n });\n this.popper.addEventListener('mouseleave', () => {\n this.shouldHidePopper = true;\n this.checkAndHidePopper();\n });\n\n hotspotElement.addEventListener('mouseleave', () => {\n this.shouldHidePopper = true;\n this.checkAndHidePopper();\n });\n\n hotspotElement.addEventListener('mouseenter', () => {\n this.shouldHidePopper = false;\n if (this.hidePopperTimeout) clearTimeout(this.hidePopperTimeout);\n });\n\n this.popperInstance = {\n ...createPopper(hotspotElement, this.popper, popperOptions),\n keepOpen,\n instanceId: id,\n };\n }\n\n checkAndHidePopper() {\n if (this.shouldHidePopper && !this.popperInstance?.keepOpen) {\n this.hidePopperTimeout = setTimeout(() => {\n if (this.shouldHidePopper) this.hidePopper();\n }, 150);\n }\n }\n\n hidePopper() {\n if (this.popperInstance) {\n this.popperInstance.destroy();\n this.popperInstance = null;\n }\n\n if (this.popper) {\n this.popper.removeAttribute('data-show');\n setTimeout(() => {\n if (this.popper) this.popper.remove();\n this.popper = null;\n }, 200);\n }\n }\n\n createHotspot(hotspot) {\n const { id, content, keepOpen, onClick } = hotspot;\n const hotspotElement = createHotspotElement(id);\n\n if (onClick) {\n hotspotElement.style.cursor = 'pointer';\n }\n\n hotspotElement.onclick = (event) => {\n event.stopPropagation();\n onClick?.(event, this.popperInstance, id);\n };\n\n if (content) {\n hotspotElement.addEventListener('mouseenter', () =>\n this.showPopper({ hotspotElement, content, id, keepOpen })\n );\n }\n\n this.hotspotsContainer.appendChild(hotspotElement);\n }\n\n hideHotspots() {\n this.hotspotsContainer.querySelectorAll('.cloudimage-360-hotspot').forEach((hotspot) => {\n hotspot.style.opacity = 0;\n hotspot.style.pointerEvents = 'none';\n });\n }\n\n updateAndShowHotspot(hotspotConfig, activeIndex) {\n const { positions, id } = hotspotConfig;\n const { x, y } = positions[activeIndex] ?? {};\n\n const hotspot = this.hotspotsContainer.querySelector(`[data-hotspot-id=\"${id}\"]`);\n\n if (hotspot) {\n hotspot.style.translate = `${x}px ${y}px`;\n hotspot.style.opacity = 1;\n hotspot.style.pointerEvents = 'all';\n }\n }\n\n updateHotspotPosition = (activeIndex, orientation) => {\n this.currentActiveIndex = activeIndex;\n this.currentOrientation = orientation;\n const frameHotspots = findHotspotsForFrame(this.hotspotsConfig, activeIndex, orientation);\n this.hideHotspots();\n\n frameHotspots.forEach((hotspot) => this.updateAndShowHotspot(hotspot, activeIndex));\n };\n\n createAllHotspots() {\n this.hotspotsConfig.forEach((hotspot) => this.createHotspot(hotspot));\n }\n\n initHotspots() {\n this.createAllHotspots();\n }\n\n destroy() {\n this.resizeObserver.disconnect();\n this.hidePopper();\n\n this.hotspotsContainer.innerHTML = '';\n }\n}\n\nexport default Hotspot;\n","import { ORIENTATIONS } from './constants';\n\nconst adaptOrientation = (orientation) => (orientation === 'x' ? ORIENTATIONS.X : ORIENTATIONS.Y);\n\nexport const findHotspotsForFrame = (hotspots, currentFrame, orientation) => {\n return hotspots.filter(\n (hotspot) => adaptOrientation(hotspot.orientation) === orientation && currentFrame in hotspot.positions\n );\n};\n\nexport const createHotspotElement = (id) => {\n const hotspotElement = document.createElement('span');\n hotspotElement.id = id;\n hotspotElement.className = 'cloudimage-360-hotspot';\n hotspotElement.dataset.hotspotId = id;\n\n return hotspotElement;\n};\n\nexport const fillEmptyPositions = (positions) => {\n const sortedEntries = Object.entries(positions).sort(([keyA], [keyB]) => Number(keyA) - Number(keyB));\n\n let lastValidX = null;\n let lastValidY = null;\n\n const updatedPositions = {};\n\n for (const [key, pos] of sortedEntries) {\n if (!pos) {\n updatedPositions[key] = { x: lastValidX, y: lastValidY };\n } else {\n const { x, y } = pos;\n\n if (x !== null && x !== undefined) {\n lastValidX = x;\n }\n\n if (y !== null && y !== undefined) {\n lastValidY = y;\n }\n\n updatedPositions[key] = {\n x: x || lastValidX,\n y: y || lastValidY,\n };\n }\n }\n\n return updatedPositions;\n};\n\nexport const createPopperModifiers = (container) => [\n {\n name: 'offset',\n options: {\n offset: [0, 10],\n },\n },\n {\n name: 'preventOverflow',\n options: {\n boundary: container,\n },\n },\n];\n\nexport const createPopperElement = (content, id) => {\n const popper = document.createElement('div');\n popper.className = 'cloudimage-360-popper';\n popper.id = `cloudimage-360-popper-${id}`;\n popper.dataset.popperId = id;\n\n if (typeof content === 'string' && /<\\/?[a-z][\\s\\S]*>/i.test(content)) {\n popper.innerHTML = content;\n } else {\n popper.textContent = content;\n }\n\n document.body.appendChild(popper);\n return popper;\n};\n\nexport const adaptHotspotConfig = (hotspotsConfig) => {\n const updatedHotspotConfig = [...hotspotsConfig];\n\n updatedHotspotConfig.forEach((hotspot, index) => {\n const updatedPositions = { ...fillEmptyPositions(hotspot.positions) };\n updatedHotspotConfig[index].initialPositions = updatedPositions;\n updatedHotspotConfig[index].positions = updatedPositions;\n });\n\n return updatedHotspotConfig;\n};\n\nexport const calculateHotspotPositions = ({\n newWidth,\n newHeight,\n initialContainerSize,\n imageAspectRatio,\n hotspotsConfig,\n}) => {\n const [initialWidth, initialHeight] = initialContainerSize;\n let width = newWidth;\n let height = newHeight;\n let offsetX = 0;\n let offsetY = 0;\n const containerAspectRatio = newWidth / newHeight;\n const wideContainer = imageAspectRatio > containerAspectRatio;\n\n if (wideContainer) {\n height = newWidth / imageAspectRatio;\n offsetY = (newHeight - height) / 2;\n } else {\n width = newHeight * imageAspectRatio;\n offsetX = (newWidth - width) / 2;\n }\n\n const widthRatio = width / initialWidth;\n const heightRatio = height / initialHeight;\n\n return hotspotsConfig.map((hotspot) => {\n const updatedPositions = {};\n\n Object.entries(hotspot.initialPositions).forEach(([key, initialPosition]) => {\n updatedPositions[key] = {\n x: initialPosition.x * widthRatio + offsetX,\n y: initialPosition.y * heightRatio + offsetY,\n };\n });\n\n return { ...hotspot, positions: updatedPositions };\n });\n};\n","export const createHotspotsContainer = (container) => {\n const hotspotContainer = document.createElement('div');\n hotspotContainer.className = 'cloudimage-360-hotspot-container';\n container.appendChild(hotspotContainer);\n\n return hotspotContainer;\n};\n","import throttle from 'lodash.throttle';\n\nimport { adaptConfig, getConfigFromImage } from './ci360.utils';\nimport './static/css/style.css';\nimport './static/css/hotspots.css';\nimport {\n generateCdnPath,\n preloadImages,\n createCloseIcon,\n createFullscreenIcon,\n createMagnifierIcon,\n createLoader,\n createInnerBox,\n createIconsContainer,\n createCanvas,\n create360ViewCircleIcon,\n createFullscreenModal,\n magnify,\n isCompletedOneCycle,\n getMovingDirection,\n loop,\n initLazyload,\n createInitialIcon,\n removeElementFromContainer,\n generateHighPreviewCdnUrl,\n loadImage,\n delay,\n shouldSwitchSpinDirection,\n switchSpinDirection,\n ORIENTATIONS,\n THROTTLE_TIME,\n getDefaultSpinDirection,\n isSpinKeysPressed,\n calculateOffsetFromEvent,\n createLoadingSpinner,\n createTransitionOverlay,\n isTouchDevice,\n} from './utils';\n\nimport CanvasWorker from './canvas.worker.js?worker&inline';\nimport Hotspot from './hotspots';\n\nclass CI360Viewer {\n constructor(container, config, fullscreen) {\n this.container = container;\n this.isClicked = false;\n this.fullscreenView = !!fullscreen;\n this.imagesX = [];\n this.imagesY = [];\n this.devicePixelRatio = Math.round(window.devicePixelRatio || 1);\n this.id = container.id;\n this.movementStart = { x: 0, y: 0 };\n this.draggingDirection = null;\n this.isReady = false;\n this.currentZoomScale = 1;\n this.touchDevice = isTouchDevice();\n this.canvasWorker = new CanvasWorker();\n this.onMoveHandler = this.onMoveHandler.bind(this);\n this.destroy = this.destroy.bind(this);\n this.init(this.container, config);\n }\n\n mouseDown(event) {\n if (!this.isReady || this.glass) return;\n\n const { pageX, pageY } = event;\n\n if (this.autoplay || this.loopTimeoutId) {\n this.stopAutoplay();\n this.autoplay = false;\n }\n\n this.movementStart = { x: pageX, y: pageY };\n this.isClicked = true;\n this.isDragging = false;\n }\n\n mouseUp() {\n if (!this.isReady) return;\n\n if (!this.isZoomed) this.showAllIcons();\n\n this.movementStart = { x: 0, y: 0 };\n this.isClicked = false;\n this.innerBox.style.cursor = 'grab';\n }\n\n drag(pageX, pageY) {\n if (!this.isReady || !this.isClicked) return;\n\n const deltaX = pageX - this.movementStart.x;\n const deltaY = pageY - this.movementStart.y;\n\n this.draggingDirection =\n getMovingDirection({\n deltaX,\n deltaY,\n reversed: this.dragReverse,\n allowSpinX: this.allowSpinX,\n allowSpinY: this.allowSpinY,\n }) || this.draggingDirection;\n\n const container = this.fullscreenView ? document.body : this.container;\n const dragFactor = this.dragSpeed / 50;\n\n const speedFactorX = dragFactor * (this.amountX / container.offsetWidth);\n const speedFactorY = dragFactor * (this.amountY / container.offsetHeight);\n const itemsSkippedX = this.allowSpinX ? Math.abs(Math.round(deltaX * speedFactorX)) : 0;\n const itemsSkippedY = this.allowSpinY ? Math.abs(Math.round(deltaY * speedFactorY)) : 0;\n\n const shouldMove = (this.allowSpinX && itemsSkippedX !== 0) || (this.allowSpinY && itemsSkippedY !== 0);\n\n if (shouldMove) {\n this.hideHotspotPopper();\n this.onMoveHandler(this.draggingDirection, itemsSkippedX, itemsSkippedY);\n this.movementStart = { x: pageX, y: pageY };\n\n setTimeout(() => {\n this.isDragging = true;\n }, 150);\n }\n }\n\n mouseMove(event) {\n if (!this.isReady || (!this.isClicked && !this.isZoomed) || this.glass) return;\n\n this.hideAllIcons();\n this.drag(event.pageX, event.pageY);\n\n if (this.isZoomed) this.applyZoom(event);\n }\n\n mouseClick(event) {\n if (!this.isReady || this.isDragging) return;\n\n if (this.glass && this.magnified) {\n this.removeGlass();\n return;\n }\n\n if (this.pointerZoom && !this.glass && !this.touchDevice) this.toggleZoom(event);\n }\n\n loadHigherQualityImages(width, onLoad) {\n const cdnPathX = generateCdnPath(this.srcXConfig, width);\n const cdnPathY = this.allowSpinY ? generateCdnPath(this.srcYConfig, width) : null;\n\n preloadImages({\n cdnPathX,\n cdnPathY,\n configX: this.srcXConfig,\n configY: this.srcYConfig,\n onAllImagesLoad: (loadedImagesX, loadedImagesY) => {\n this.imagesX = loadedImagesX;\n this.imagesY = loadedImagesY;\n onLoad();\n },\n });\n }\n\n hideHotspots() {\n if (!this.hotspotsInstance) return;\n\n this.hotspotsInstance.hideHotspots();\n }\n\n hideHotspotPopper() {\n if (!this.hotspotsInstance) return;\n\n this.hotspotsInstance.hidePopper();\n }\n\n toggleZoom(event) {\n if (this.isZoomed) {\n this.showTransitionOverlay();\n\n setTimeout(() => {\n this.removeZoom();\n }, 800);\n } else {\n let width = (this.fullscreenView || this.pointerZoom ? document.body : this.container).offsetWidth;\n\n this.hideHotspots();\n this.showLoadingSpinner();\n this.loadHigherQualityImages(width, () => {\n this.showTransitionOverlay();\n\n setTimeout(() => {\n this.applyZoom(event);\n }, 800);\n });\n }\n }\n\n removeZoom() {\n this.isZoomed = false;\n this.updateView();\n this.showAllIcons();\n this.hideTransitionOverlay();\n }\n\n applyZoom(event) {\n const { offsetX, offsetY } = calculateOffsetFromEvent(event, this.canvas, this.devicePixelRatio);\n\n this.isZoomed = true;\n this.hideAllIcons();\n this.hideLoadingSpinner();\n this.hideTransitionOverlay();\n\n this.updateView(this.pointerZoom, offsetX, offsetY);\n }\n\n touchOutside(event) {\n if (!this.glass) return;\n\n const isOutside = !this.canvas.contains(event.target);\n\n if (isOutside) {\n this.removeGlass();\n }\n }\n\n touchStart(event) {\n if (!this.isReady || event.touches.length > 1 || this.glass) return;\n\n const { pageX, pageY } = event.touches[0];\n\n if (this.autoplay || this.loopTimeoutId) {\n this.stopAutoplay();\n this.autoplay = false;\n }\n\n this.hideAllIcons();\n this.movementStart = { x: pageX, y: pageY };\n this.isClicked = true;\n }\n\n touchEnd() {\n if (!this.isReady) return;\n\n this.showAllIcons();\n this.movementStart = { x: 0, y: 0 };\n this.isClicked = false;\n }\n\n touchMove(event) {\n if (!this.isReady || !this.isClicked || this.glass) return;\n const { pageX, pageY } = event.touches[0];\n event.preventDefault();\n\n this.drag(pageX, pageY);\n }\n\n keyDown(event) {\n if (!this.isReady) return;\n\n const { keyCode } = event;\n const isReverse = this.keysReverse;\n\n if (isSpinKeysPressed(keyCode, this.allowSpinY)) {\n this.hideAllIcons();\n }\n\n switch (keyCode) {\n case 37: // left arrow\n isReverse ? this.moveLeft() : this.moveRight();\n break;\n case 39: // right arrow\n isReverse ? this.moveRight() : this.moveLeft();\n break;\n case 38: // up arrow\n if (this.allowSpinY) {\n event.preventDefault();\n isReverse ? this.moveTop() : this.moveBottom();\n }\n break;\n case 40: // down arrow\n if (this.allowSpinY) {\n event.preventDefault();\n isReverse ? this.moveBottom() : this.moveTop();\n }\n break;\n default:\n break;\n }\n }\n\n keyUp(event) {\n const { keyCode } = event;\n\n if (isSpinKeysPressed(keyCode, this.allowSpinY)) {\n this.showAllIcons();\n }\n }\n\n moveActiveXIndexUp(itemsSkipped) {\n this.orientation = ORIENTATIONS.X;\n this.activeImageX = (this.activeImageX + itemsSkipped) % this.amountX;\n }\n\n moveActiveXIndexDown(itemsSkipped) {\n this.orientation = ORIENTATIONS.X;\n this.activeImageX = (this.activeImageX - itemsSkipped + this.amountX) % this.amountX;\n }\n\n moveActiveYIndexUp(itemsSkipped) {\n this.orientation = ORIENTATIONS.Y;\n this.activeImageY = (this.activeImageY + itemsSkipped) % this.amountY;\n }\n\n moveActiveYIndexDown(itemsSkipped) {\n this.orientation = ORIENTATIONS.Y;\n this.activeImageY = (this.activeImageY - itemsSkipped + this.amountY) % this.amountY;\n }\n\n moveRight(stopAtEdges, itemsSkippedX = 1) {\n if (stopAtEdges && this.activeImageX >= this.imagesX.length - 1) return;\n\n this.moveActiveXIndexUp(itemsSkippedX);\n if (!this.isZoomed) this.updateView();\n }\n\n moveLeft(stopAtEdges, itemsSkippedX = 1) {\n if (stopAtEdges && this.activeImageX <= 0) return;\n\n this.moveActiveXIndexDown(itemsSkippedX);\n if (!this.isZoomed) this.updateView();\n }\n\n moveTop(stopAtEdges, itemsSkippedY = 1) {\n if (stopAtEdges && this.activeImageY >= this.imagesY.length - 1) return;\n\n this.moveActiveYIndexUp(itemsSkippedY);\n if (!this.isZoomed) this.updateView();\n }\n\n moveBottom(stopAtEdges, itemsSkippedY = 1) {\n if (stopAtEdges && this.activeImageY <= 0) return;\n\n this.moveActiveYIndexDown(itemsSkippedY);\n if (!this.isZoomed) this.updateView();\n }\n\n onMoveHandler(movingDirection, itemsSkippedX = 1, itemsSkippedY = 1) {\n if (movingDirection === 'right') {\n this.moveRight(this.stopAtEdges, itemsSkippedX);\n } else if (movingDirection === 'left') {\n this.moveLeft(this.stopAtEdges, itemsSkippedX);\n } else if (movingDirection === 'up') {\n this.moveTop(this.stopAtEdges, itemsSkippedY);\n } else if (movingDirection === 'down') {\n this.moveBottom(this.stopAtEdges, itemsSkippedY);\n }\n }\n\n updateView(zoomScale, offsetX, offsetY) {\n const activeIndex = this.orientation === ORIENTATIONS.X ? this.activeImageX : this.activeImageY;\n\n const imageData =\n this.orientation === ORIENTATIONS.X ? this.imagesX[this.activeImageX] : this.imagesY[this.activeImageY];\n\n if (this.hotspotsInstance && !this.isZoomed && !this.autoplay) {\n this.hotspotsInstance.updateHotspotPosition(activeIndex, this.orientation);\n }\n\n this.drawImageOnCanvas(imageData, zoomScale, offsetX, offsetY);\n }\n\n updatePercentageInLoader(percentage = 0) {\n if (!this.loader) return;\n\n this.loader.innerText = percentage + '%';\n }\n\n adaptCanvasSize(imageData) {\n const { naturalWidth, naturalHeight } = imageData;\n this.imageAspectRatio = naturalWidth / naturalHeight;\n const containerWidth = this.fullscreenView ? window.innerWidth : this.canvas.clientWidth;\n const containerHeight = this.fullscreenView ? window.innerHeight : this.canvas.clientHeight;\n\n this.canvasWorker.postMessage({\n action: 'adaptCanvasSize',\n devicePixelRatio: this.devicePixelRatio,\n imageAspectRatio: this.imageAspectRatio,\n containerWidth,\n containerHeight,\n });\n }\n\n drawImageOnCanvas(imageData, zoomScale = 1, pointerX = 0, pointerY = 0) {\n this.canvasWorker.postMessage({\n action: 'drawImageOnCanvas',\n imageData,\n zoomScale,\n pointerX,\n pointerY,\n });\n }\n\n pushImageToSet(image, index, orientation) {\n if (orientation === ORIENTATIONS.X) {\n this.imagesX[index] = image;\n } else {\n this.imagesY[index] = image;\n }\n }\n\n calculatePercentage() {\n const totalAmount = this.amountX + this.amountY;\n const totalLoadedImages = this.imagesX.length + this.imagesY.length;\n return Math.round((totalLoadedImages / totalAmount) * 100);\n }\n\n onImageLoad(image, index, orientation) {\n this.pushImageToSet(image, index, orientation);\n this.updatePercentageInLoader(this.calculatePercentage());\n }\n\n onFirstImageLoaded(event, imageData) {\n this.createContainers(event);\n\n this.adaptCanvasSize(imageData);\n this.drawImageOnCanvas(imageData);\n }\n\n onAllImagesLoaded() {\n this.addAllIcons();\n\n if (this.hotspots) {\n this.hotspotsInstance = new Hotspot(this.hotspots, this.innerBox, this.imageAspectRatio);\n }\n\n this.isReady = true;\n this.amountX = this.imagesX.length;\n this.amountY = this.imagesY.length;\n this.activeImageX = this.autoplayReverse ? this.amountX - 1 : 0;\n this.activeImageY = this.autoplayReverse ? this.amountY - 1 : 0;\n\n if (this.autoplay) {\n this.hideAllIcons();\n const delayedPlay = delay(this.play.bind(this));\n\n delayedPlay();\n }\n }\n\n magnify(event) {\n event.stopPropagation();\n const { src } =\n this.orientation === ORIENTATIONS.Y ? this.imagesY[this.activeImageY] : this.imagesX[this.activeImageX];\n const width = (this.fullscreenView ? document.body : this.container).offsetWidth;\n const imageWidth = width * this.magnifier;\n const highPreviewCdnUrl = generateHighPreviewCdnUrl(src, imageWidth);\n\n this.showLoadingSpinner();\n this.createGlass();\n\n const onLoadImage = (image) => {\n this.hideLoadingSpinner();\n this.magnified = true;\n magnify(event, this.innerBox, this.offset, image, this.glass, this.magnifier);\n };\n\n loadImage(highPreviewCdnUrl, onLoadImage);\n }\n\n openFullscreenModal(event) {\n event.stopPropagation();\n\n const fullscreenContainer = createFullscreenModal(this.container);\n\n new CI360Viewer(fullscreenContainer, this.viewerConfig, true);\n }\n\n closeFullscreenModal(event) {\n event.stopPropagation();\n\n document.body.removeChild(this.container.parentNode);\n window.document.body.style.overflow = 'visible';\n }\n\n play() {\n if (this.isClicked) return;\n this.hide360ViewCircleIcon();\n\n const autoplaySpeed = (this.speed * 36) / (this.amountX + this.amountY);\n const loopTriggers = {\n left: this.moveLeft.bind(this),\n right: this.moveRight.bind(this),\n top: this.moveTop.bind(this),\n bottom: this.moveBottom.bind(this),\n };\n\n this.loopTimeoutId = window.setInterval(() => {\n const completedOneCycle =\n this.playOnce &&\n isCompletedOneCycle({\n autoplayBehavior: this.autoplayBehavior,\n activeImageX: this.activeImageX,\n activeImageY: this.activeImageY,\n amountX: this.amountX,\n amountY: this.amountY,\n autoplayReverse: this.autoplayReverse,\n });\n\n if (completedOneCycle) {\n this.stopAutoplay();\n return;\n }\n\n const shouldSwitch = shouldSwitchSpinDirection({\n autoplayBehavior: this.autoplayBehavior,\n activeImageX: this.activeImageX,\n activeImageY: this.activeImageY,\n amountX: this.amountX,\n amountY: this.amountY,\n autoplayReverse: this.autoplayReverse,\n spinDirection: this.spinDirection,\n });\n\n if (shouldSwitch) {\n this.spinDirection = switchSpinDirection(this.spinDirection);\n }\n\n const spinY = this.spinDirection === 'y';\n\n loop({\n autoplayBehavior: this.autoplayBehavior,\n spinY,\n reversed: this.autoplayReverse,\n loopTriggers,\n });\n }, autoplaySpeed);\n }\n\n stopAutoplay() {\n this.showAllIcons();\n this.autoplay = false;\n\n window.clearTimeout(this.loopTimeoutId);\n }\n\n destroy() {\n this.stopAutoplay();\n if (this.hotspotsInstance) this.hotspotsInstance.destroy();\n\n const oldElement = this.container;\n const newElement = oldElement.cloneNode(true);\n const innerBox = newElement.querySelector('.cloudimage-360-inner-box');\n\n newElement.removeChild(innerBox);\n oldElement.parentNode.replaceChild(newElement, oldElement);\n }\n\n addInitialIcon() {\n if (this.initialIcon) return;\n\n this.initialIcon = createInitialIcon();\n this.innerBox.appendChild(this.initialIcon);\n }\n\n showInitialIcon() {\n if (!this.initialIcon) return;\n\n this.initialIcon.style.opacity = 1;\n }\n\n hideInitialIcon() {\n if (!this.initialIcon) return;\n\n this.initialIcon.style.opacity = 0;\n }\n\n createGlass() {\n this.hideAllIcons();\n this.glass = document.createElement('div');\n this.innerBox.appendChild(this.glass);\n this.innerBox.style.cursor = 'default';\n }\n\n removeGlass() {\n this.showAllIcons();\n this.innerBox.removeChild(this.glass);\n this.glass = null;\n this.magnified = false;\n }\n\n addMagnifierIcon() {\n if (!this.magnifier) return;\n\n this.magnifierIcon = createMagnifierIcon();\n this.magnifierIcon.onclick = this.magnify.bind(this);\n\n this.iconsContainer.appendChild(this.magnifierIcon);\n }\n\n showMagnifierIcon() {\n if (!this.magnifierIcon) return;\n\n this.magnifierIcon.style.visibility = 'visible';\n this.magnifierIcon.style.opacity = 1;\n }\n\n hideMagnifierIcon() {\n if (!this.magnifierIcon) return;\n\n this.magnifierIcon.style.visibility = 'hidden';\n this.magnifierIcon.style.opacity = 0;\n }\n\n addFullscreenIcon() {\n if (!this.fullscreen) return;\n\n this.fullscreenIcon = createFullscreenIcon();\n this.fullscreenIcon.onclick = this.openFullscreenModal.bind(this);\n\n this.iconsContainer.appendChild(this.fullscreenIcon);\n }\n\n addCloseFullscreenIcon() {\n this.fullscreenCloseIcon = createCloseIcon();\n this.fullscreenCloseIcon.onclick = this.closeFullscreenModal.bind(this);\n\n this.iconsContainer.appendChild(this.fullscreenCloseIcon);\n }\n\n showFullscreenIcon() {\n if (!this.fullscreenIcon) return;\n\n this.fullscreenIcon.style.opacity = 1;\n }\n\n hideFullscreenIcon() {\n if (!this.fullscreenIcon) return;\n\n this.fullscreenIcon.style.opacity = 0;\n }\n\n add360ViewCircleIcon() {\n if (this.view360CircleIcon) return;\n\n this.view360CircleIcon = create360ViewCircleIcon(this.bottomCircleOffset);\n this.innerBox.appendChild(this.view360CircleIcon);\n }\n\n show360ViewCircleIcon() {\n if (!this.view360CircleIcon) return;\n\n this.view360CircleIcon.style.opacity = 1;\n }\n\n hide360ViewCircleIcon() {\n if (!this.view360CircleIcon) return;\n\n this.view360CircleIcon.style.opacity = 0;\n }\n\n addLoadingSpinner() {\n this.loadingSpinner = createLoadingSpinner();\n this.innerBox.appendChild(this.loadingSpinner);\n }\n\n showLoadingSpinner() {\n if (!this.loadingSpinner) return;\n\n this.hideAllIcons();\n this.loadingSpinner.style.opacity = 1;\n }\n\n createTransitionOverlay() {\n this.transitionOverlay = createTransitionOverlay();\n this.innerBox.appendChild(this.transitionOverlay);\n }\n\n showTransitionOverlay() {\n if (!this.transitionOverlay) return;\n\n this.hideAllIcons();\n this.transitionOverlay.style.opacity = 1;\n }\n\n hideTransitionOverlay() {\n if (!this.transitionOverlay) return;\n\n this.transitionOverlay.style.opacity = 0;\n }\n\n hideLoadingSpinner() {\n if (!this.loadingSpinner) return;\n\n this.loadingSpinner.style.opacity = 0;\n }\n\n remove360ViewCircleIcon() {\n if (!this.view360CircleIcon) return;\n\n this.innerBox.removeChild(this.view360CircleIcon);\n this.view360CircleIcon = null;\n }\n\n addAllIcons() {\n this.removeLoader();\n this.innerBox.style.cursor = 'grab';\n\n if (this.pointerZoom) {\n this.createTransitionOverlay();\n this.addLoadingSpinner();\n }\n\n if (!this.fullscreenView && !this.touchDevice) this.addMagnifierIcon();\n if (!this.fullscreenView) this.addFullscreenIcon();\n if (this.initialIconShown) this.addInitialIcon();\n if (!this.bottomCircle) this.add360ViewCircleIcon();\n }\n\n showAllIcons() {\n this.showInitialIcon();\n this.show360ViewCircleIcon();\n this.showMagnifierIcon();\n this.showFullscreenIcon();\n }\n\n hideAllIcons() {\n this.hideInitialIcon();\n this.hide360ViewCircleIcon();\n this.hideMagnifierIcon();\n this.hideFullscreenIcon();\n }\n\n removeLoader() {\n if (!this.loader) return;\n\n this.innerBox.removeChild(this.loader);\n this.loader = null;\n }\n attachEvents(draggable, swipeable, keys) {\n if (draggable) {\n this.addMouseEvents();\n }\n\n if (swipeable) {\n this.addTouchEvents();\n }\n\n if (keys) {\n this.addKeyboardEvents();\n }\n }\n\n removeEvents() {\n this.removeMouseEvents();\n this.removeTouchEvents();\n this.removeKeyboardEvents();\n }\n\n addMouseEvents() {\n this.boundMouseClick = this.mouseClick.bind(this);\n this.boundMouseDown = this.mouseDown.bind(this);\n this.boundMouseMove = throttle(this.mouseMove.bind(this), THROTTLE_TIME);\n this.boundMouseUp = this.mouseUp.bind(this);\n\n this.innerBox.addEventListener('click', this.boundMouseClick);\n this.innerBox.addEventListener('mousedown', this.boundMouseDown);\n document.addEventListener('mousemove', this.boundMouseMove);\n document.addEventListener('mouseup', this.boundMouseUp);\n }\n\n addTouchEvents() {\n this.boundTouchOutside = this.touchOutside.bind(this);\n this.boundTouchStart = this.touchStart.bind(this);\n this.boundTouchEnd = this.touchEnd.bind(this);\n this.boundTouchMove = throttle(this.touchMove.bind(this), THROTTLE_TIME);\n\n document.addEventListener('touchstart', this.boundTouchOutside);\n this.container.addEventListener('touchstart', this.boundTouchStart);\n this.container.addEventListener('touchend', this.boundTouchEnd);\n this.container.addEventListener('touchmove', this.boundTouchMove);\n }\n\n addKeyboardEvents() {\n this.boundKeyDown = this.keyDown.bind(this);\n this.boundKeyUp = this.keyUp.bind(this);\n\n document.addEventListener('keydown', this.boundKeyDown);\n document.addEventListener('keyup', this.boundKeyUp);\n }\n\n removeMouseEvents() {\n this.innerBox.removeEventListener('click', this.boundMouseClick);\n this.innerBox.removeEventListener('mousedown', this.boundMouseDown);\n document.removeEventListener('mousemove', this.boundMouseMove);\n document.removeEventListener('mouseup', this.boundMouseUp);\n }\n\n removeTouchEvents() {\n document.removeEventListener('touchstart', this.boundTouchOutside);\n this.container.removeEventListener('touchstart', this.boundTouchStart);\n this.container.removeEventListener('touchend', this.boundTouchEnd);\n this.container.removeEventListener('touchmove', this.boundTouchMove);\n }\n\n removeKeyboardEvents() {\n document.removeEventListener('keydown', this.boundKeyDown);\n document.removeEventListener('keyup', this.boundKeyUp);\n }\n\n createContainers(event) {\n this.iconsContainer = createIconsContainer(this.innerBox);\n this.canvas = createCanvas(this.innerBox, event);\n this.loader = createLoader(this.innerBox);\n\n const offscreenCanvas = this.canvas.transferControlToOffscreen();\n this.canvasWorker.postMessage(\n {\n action: 'initCanvas',\n offscreen: offscreenCanvas,\n devicePixelRatio: this.devicePixelRatio,\n },\n [offscreenCanvas]\n );\n\n if (this.fullscreenView) this.addCloseFullscreenIcon();\n\n removeElementFromContainer(this.innerBox, '.cloudimage-360-placeholder');\n }\n\n update(newConfig) {\n if (!this.isReady) return;\n\n this.stopAutoplay();\n removeElementFromContainer(this.innerBox, '.cloudimage-360-icons-container');\n this.init(this.container, newConfig, true);\n this.iconsContainer = createIconsContainer(this.innerBox);\n this.onAllImagesLoaded();\n }\n\n init(container, config, update) {\n const adaptedConfig = config ? adaptConfig(config) : getConfigFromImage(container);\n\n const {\n folder,\n apiVersion,\n filenameX,\n filenameY,\n imageListX,\n imageListY,\n indexZeroBase,\n amountX,\n amountY,\n draggable = true,\n swipeable = true,\n keys,\n keysReverse,\n bottomCircleOffset,\n autoplay,\n autoplayBehavior,\n playOnce,\n speed,\n autoplayReverse,\n fullscreen,\n magnifier,\n ciToken,\n ciFilters,\n ciTransformation,\n lazyload,\n dragSpeed,\n stopAtEdges,\n pointerZoom,\n imageInfo = 'black',\n initialIconShown,\n bottomCircle,\n hotspots,\n dragReverse,\n } = adaptedConfig;\n\n const ciParams = { ciToken, ciFilters, ciTransformation };\n const parsedImagesListX = imageListX ? JSON.parse(imageListX) : [];\n const parsedImagesListY = imageListY ? JSON.parse(imageListY) : [];\n\n this.viewerConfig = adaptedConfig;\n this.amountX = parsedImagesListX.length || amountX;\n this.amountY = parsedImagesListY.length || amountY;\n this.allowSpinX = !!this.amountX;\n this.allowSpinY = !!this.amountY;\n this.activeImageX = autoplayReverse ? this.amountX - 1 : 0;\n this.activeImageY = autoplayReverse ? this.amountY - 1 : 0;\n this.bottomCircleOffset = bottomCircleOffset;\n this.autoplay = autoplay;\n this.autoplayBehavior = autoplayBehavior;\n this.playOnce = playOnce;\n this.speed = speed;\n this.autoplayReverse = autoplayReverse;\n this.fullscreen = fullscreen;\n this.magnifier = magnifier > 1 ? Math.min(magnifier, 5) : 0;\n this.dragSpeed = Math.max(dragSpeed, 50);\n this.stopAtEdges = stopAtEdges;\n this.ciParams = ciParams;\n this.apiVersion = apiVersion;\n this.pointerZoom = pointerZoom > 1 ? Math.min(pointerZoom, 5) : null;\n this.keysReverse = keysReverse;\n this.info = imageInfo;\n this.keys = keys;\n this.innerBox = this.innerBox ?? createInnerBox(this.container);\n this.initialIconShown = initialIconShown;\n this.bottomCircle = bottomCircle;\n this.spinDirection = getDefaultSpinDirection(this.autoplayBehavior, this.allowSpinX, this.allowSpinY);\n this.dragReverse = dragReverse;\n this.hotspots = hotspots;\n\n this.srcXConfig = {\n folder,\n filename: filenameX,\n imageList: parsedImagesListX,\n container,\n innerBox: this.innerBox,\n apiVersion,\n ciParams,\n lazyload,\n amount: this.amountX,\n indexZeroBase,\n autoplayReverse,\n };\n\n this.srcYConfig = {\n ...this.srcXConfig,\n filename: filenameY,\n imageList: parsedImagesListY,\n orientation: ORIENTATIONS.Y,\n amount: this.amountY,\n };\n\n if (update) this.removeEvents();\n this.attachEvents(draggable, swipeable, keys);\n\n if (update) return;\n\n const width = (this.fullscreenView ? document.body : this.container).offsetWidth;\n const cdnPathX =\n this.allowSpinX && !parsedImagesListX.length ? generateCdnPath(this.srcXConfig, width) : null;\n const cdnPathY =\n this.allowSpinY && !parsedImagesListY.length ? generateCdnPath(this.srcYConfig, width) : null;\n\n const loadCallback = (event) => {\n preloadImages({\n cdnPathX,\n cdnPathY,\n configX: this.srcXConfig,\n configY: this.srcYConfig,\n onImageLoad: (image, index, orientation) => this.onImageLoad(image, index, orientation),\n onFirstImageLoad: (imageData) => this.onFirstImageLoaded(event, imageData),\n onAllImagesLoad: this.onAllImagesLoaded.bind(this),\n });\n };\n\n if (this.allowSpinX) {\n initLazyload(cdnPathX, this.srcXConfig, loadCallback);\n } else if (this.allowSpinY) {\n initLazyload(cdnPathY, this.srcYConfig, loadCallback);\n }\n }\n}\n\nexport default CI360Viewer;\n","export const isTouchDevice = () => {\n return 'ontouchstart' in window || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0;\n};\n","export const getMovingDirection = ({ deltaX, deltaY, reversed, allowSpinX, allowSpinY, threshold = 1 }) => {\n const absDeltaX = Math.abs(deltaX);\n const absDeltaY = Math.abs(deltaY);\n\n if (allowSpinX && absDeltaX - threshold > absDeltaY) {\n if (reversed) return deltaX > 0 ? 'left' : 'right';\n\n return deltaX > 0 ? 'right' : 'left';\n }\n\n if (allowSpinY && absDeltaY - threshold > absDeltaX) {\n if (reversed) return deltaY > 0 ? 'up' : 'down';\n\n return deltaY > 0 ? 'down' : 'up';\n }\n\n return null;\n};\n","export const calculateOffsetFromEvent = (event, canvas, devicePixelRatio) => {\n const { clientX, clientY } = event;\n const canvasRect = canvas.getBoundingClientRect();\n\n const scaleX = canvas.width / (canvasRect.width * devicePixelRatio);\n const scaleY = canvas.height / (canvasRect.height * devicePixelRatio);\n\n const offsetX = (clientX - canvasRect.left) * scaleX;\n const offsetY = (clientY - canvasRect.top) * scaleY;\n\n return { offsetX, offsetY };\n};\n","export const delay = (func, ms = 150) => {\n let timer;\n return function (...args) {\n clearTimeout(timer);\n timer = setTimeout(() => {\n func.apply(this, args);\n }, ms);\n };\n};\n","export const loadImage = (url, callback) => {\n const image = new Image();\n\n image.src = url;\n image.onload = (event) => {\n if (callback) {\n callback({\n event: event,\n width: image.width,\n height: image.height,\n naturalWidth: image.naturalWidth,\n naturalHeight: image.naturalHeight,\n src: url,\n });\n }\n };\n\n image.onerror = function () {};\n};\n","import { moveMagnifier } from './move-magnifier';\n\nexport const magnify = (clickEvent, container, offset, currentImage, glass, zoom) => {\n const { x: offsetX = 0, y: offsetY = 0 } = offset || {};\n const backgroundSizeX = (container.offsetWidth - offsetX * 2) * zoom;\n const backgroundSizeY = (container.offsetHeight - offsetY * 2) * zoom;\n\n if (!glass) return;\n\n glass.setAttribute('class', 'cloudimage-360-img-magnifier-glass');\n container.prepend(glass);\n\n glass.style.backgroundImage = `url('${currentImage.src}')`;\n glass.style.backgroundSize = `${backgroundSizeX}px ${backgroundSizeY}px`;\n\n const bw = 3;\n const w = glass.offsetWidth / 2;\n const h = glass.offsetHeight / 2;\n\n const containerConfig = {\n container,\n w,\n h,\n zoom,\n bw,\n offsetX,\n offsetY,\n };\n\n moveMagnifier(clickEvent, containerConfig, glass);\n\n const MouseMoveHandler = (event) => {\n moveMagnifier(event, containerConfig, glass);\n };\n\n const touchHandler = (event) => {\n event.preventDefault();\n\n moveMagnifier(event, containerConfig, glass);\n };\n\n glass.addEventListener('mousemove', MouseMoveHandler);\n container.addEventListener('mousemove', MouseMoveHandler);\n\n container.addEventListener('touchmove', touchHandler);\n};\n","export const createFullscreenModal = (container) => {\n const fullscreenModal = document.createElement('div');\n\n fullscreenModal.className = 'cloudimage-360-fullscreen-modal';\n\n const fullscreenContainer = container.cloneNode();\n\n fullscreenContainer.style.height = '100vh';\n fullscreenContainer.style.maxHeight = '100%';\n\n fullscreenModal.appendChild(fullscreenContainer);\n\n window.document.body.appendChild(fullscreenModal);\n\n return fullscreenContainer;\n};\n","import { AUTOPLAY_BEHAVIOR } from '../constants';\n\nexport const isCompletedOneCycle = ({\n autoplayBehavior,\n activeImageX,\n activeImageY,\n amountX,\n amountY,\n autoplayReverse,\n}) => {\n const checkEdge = (activeImage, amount) => {\n const lastIndex = amount - 1; // Calculate the last index\n return autoplayReverse ? activeImage === 0 : activeImage === lastIndex;\n };\n\n switch (autoplayBehavior) {\n case AUTOPLAY_BEHAVIOR.SPIN_XY:\n case AUTOPLAY_BEHAVIOR.SPIN_Y:\n return checkEdge(activeImageY, amountY);\n\n case AUTOPLAY_BEHAVIOR.SPIN_X:\n case AUTOPLAY_BEHAVIOR.SPIN_YX:\n default:\n return checkEdge(activeImageX, amountX);\n }\n};\n","import { AUTOPLAY_BEHAVIOR } from '../constants';\n\nexport const shouldSwitchSpinDirection = ({\n autoplayBehavior,\n activeImageX,\n activeImageY,\n amountX,\n amountY,\n autoplayReverse,\n spinDirection,\n}) => {\n const reachedEdgeX = activeImageX === (autoplayReverse ? 0 : amountX - 1);\n const reachedEdgeY = activeImageY === (autoplayReverse ? 0 : amountY - 1);\n\n if (autoplayBehavior === AUTOPLAY_BEHAVIOR.SPIN_XY || autoplayBehavior === AUTOPLAY_BEHAVIOR.SPIN_YX) {\n return (spinDirection === 'x' && reachedEdgeX) || (spinDirection === 'y' && reachedEdgeY);\n }\n\n return false;\n};\n","export const switchSpinDirection = (currentDirection) => {\n return currentDirection === 'x' ? 'y' : 'x';\n};\n","export const createInitialIcon = () => {\n const view360Icon = document.createElement('div');\n\n view360Icon.className = 'cloudimage-initial-icon';\n view360Icon.innerText = '360°';\n\n return view360Icon;\n};\n","import MagnifierIcon from '../../static/css/icons/magnifier.svg';\n\nexport const createMagnifierIcon = () => {\n const magnifier = document.createElement('div');\n\n magnifier.className = 'cloudimage-360-button cloudimage-360-magnifier-button';\n\n magnifier.innerHTML = `\"magnifier`;\n\n return magnifier;\n};\n","import FullscreenIcon from '../../static/css/icons/fullscreen.svg';\n\nexport const createFullscreenIcon = () => {\n const fullscreenIcon = document.createElement('div');\n fullscreenIcon.className = 'cloudimage-360-button cloudimage-360-fullscreen-button';\n\n fullscreenIcon.innerHTML = `\"fullscreen`;\n\n return fullscreenIcon;\n};\n","import closeIcon from '../../static/css/icons/close.svg';\n\nexport const createCloseIcon = () => {\n const close = document.createElement('div');\n\n close.className = 'cloudimage-360-button cloudimage-360-close-icon';\n\n close.innerHTML = `\"close`;\n\n return close;\n};\n","export const create360ViewCircleIcon = (circleOffset) => {\n const view360CircleIcon = new Image();\n\n view360CircleIcon.src =\n 'https://scaleflex.cloudimg.io/v7/plugins/js-cloudimage-360-view/assets/img/360.svg';\n\n view360CircleIcon.style.bottom = `${circleOffset}%`;\n view360CircleIcon.className = 'cloudimage-360-view-360-circle';\n\n return view360CircleIcon;\n};\n","export const createLoadingSpinner = () => {\n const loadingSpinner = document.createElement('div');\n\n loadingSpinner.className = 'cloudimage-loading-spinner';\n\n return loadingSpinner;\n};\n","export const createTransitionOverlay = () => {\n const transitionOverlay = document.createElement('div');\n\n transitionOverlay.className = 'cloudimage-360-transition-overlay';\n\n return transitionOverlay;\n};\n","export const createCanvas = (innerBox, event) => {\n const { width, height } = event;\n const canvas = document.createElement('canvas');\n\n canvas.width = width;\n canvas.height = height;\n\n canvas.style.width = '100%';\n canvas.style.height = 'auto';\n\n innerBox.appendChild(canvas);\n\n return canvas;\n};\n","export const createLoader = (innerBox) => {\n const loader = document.createElement('div');\n loader.className = 'cloudimage-initial-icon';\n\n // Percentage text element\n const percentageText = document.createElement('span');\n percentageText.className = 'percentage';\n percentageText.innerText = '0%';\n\n loader.appendChild(percentageText);\n innerBox.appendChild(loader);\n\n return loader;\n};\n","export const createInnerBox = (container) => {\n const innerBox = document.createElement('div');\n innerBox.className = 'cloudimage-360-inner-box';\n container.appendChild(innerBox);\n\n return innerBox;\n};\n","import { AUTOPLAY_BEHAVIOR } from '../constants';\n\nexport const getDefaultSpinDirection = (autoplayBehavior, allowSpinX, allowSpinY) => {\n if (!allowSpinY) return 'x';\n\n if (!allowSpinX) return 'y';\n\n switch (autoplayBehavior) {\n case AUTOPLAY_BEHAVIOR.SPIN_XY:\n return 'x';\n case AUTOPLAY_BEHAVIOR.SPIN_YX:\n return 'y';\n case AUTOPLAY_BEHAVIOR.SPIN_Y:\n return 'y';\n case AUTOPLAY_BEHAVIOR.SPIN_X:\n default:\n return 'x';\n }\n};\n","import CI360Viewer from './ci360.service';\nimport { hasConfigChanged } from './utils';\n\nclass CI360 {\n constructor() {\n this.views = new Map();\n this.initAll = this.initAll.bind(this);\n this.getViews = this.getViews.bind(this);\n }\n\n generateId() {\n return `ci360-${Math.random().toString(36).slice(2, 11)}`;\n }\n\n init(container, config, fullscreen) {\n if (!container) return;\n\n const containerId = container.id || this.generateId();\n if (!container.id) {\n container.id = containerId;\n }\n\n const instance = new CI360Viewer(container, config, fullscreen);\n this.views.set(containerId, instance);\n\n return instance;\n }\n\n initAll(className = 'cloudimage-360') {\n const containers = document.querySelectorAll(`.${className}`);\n\n [...containers].filter(Boolean).forEach((container) => {\n const containerId = container.id || this.generateId();\n\n if (!container.id) {\n container.id = containerId;\n }\n\n const instance = new CI360Viewer(container);\n this.views.set(containerId, instance);\n });\n }\n\n destroy(id) {\n const view = this.getViewById(id);\n if (view) {\n view.destroy();\n this.views.delete(id);\n }\n }\n\n destroyAll() {\n this.views.forEach((view) => {\n view.destroy();\n });\n\n this.views.clear();\n }\n\n getViewById(id) {\n return this.views.get(id);\n }\n\n getViews() {\n return Array.from(this.views.values());\n }\n\n updateView(id, config) {\n const view = this.getViewById(id);\n const updatedConfig = { ...view.viewerConfig, ...config };\n const requireReload = hasConfigChanged(view.viewerConfig, config);\n\n if (requireReload) {\n view.destroy();\n const container = document.getElementById(id);\n this.init(container, updatedConfig);\n } else {\n view.update(updatedConfig);\n }\n\n return view;\n }\n}\n\nexport default CI360;\n","import { PROPS_REQUIRE_RELOAD } from '../constants';\n\nexport const hasConfigChanged = (originalConfig, newConfig, propsToCheck = PROPS_REQUIRE_RELOAD) => {\n return propsToCheck.some((prop) => {\n return prop in newConfig && newConfig[prop] !== originalConfig[prop];\n });\n};\n","import CI360 from './ci360';\n\nwindow.CI360 = CI360;\n\nexport default CI360;\n","const GURKHA_SUV_HOTSPOTS_CONFIG = [\n {\n id: 'hotspot-1',\n orientation: 'x',\n containerSize: [1170, 663],\n positions: {\n 0: { x: 527, y: 319 },\n 1: { x: 527, y: 319 },\n 2: { x: 527, y: null },\n 3: { x: 498, y: null },\n 4: { x: 470, y: null },\n 5: { x: 441, y: null },\n 73: { x: 555, y: null },\n 72: { x: 586, y: null },\n 71: { x: 614, y: null },\n 70: { x: 641, y: null },\n 69: { x: 668, y: null },\n 68: { x: 692, y: null },\n 67: { x: 715, y: null },\n 66: { x: 736, y: null },\n 65: { x: 756, y: null },\n 64: { x: 773, y: null },\n 63: { x: 787, y: null },\n },\n content: '
Info about Hotspot 1
',\n },\n {\n id: 'hotspot-2',\n orientation: 'x',\n containerSize: [1220, 680],\n positions: {\n 73: { x: 355, y: 474 },\n 74: { x: 355, y: null },\n 72: { x: 341, y: 479 },\n 71: { x: 336, y: null },\n 70: { x: 332, y: null },\n 69: { x: 327, y: null },\n 68: { x: 326, y: null },\n 67: { x: 327, y: null },\n 66: { x: 331, y: null },\n 65: { x: 334, y: null },\n 64: { x: 336, y: null },\n 63: { x: 347, y: 474 },\n },\n content: '
Info about Hotspot 2
',\n },\n {\n id: 'hotspot-3',\n orientation: 'x',\n containerSize: [1220, 680],\n positions: {\n 11: { x: 683, y: 151 },\n 12: { x: 683, y: null },\n 13: { x: 683, y: null },\n 14: { x: 683, y: null },\n 15: { x: 683, y: null },\n 16: { x: 683, y: null },\n 17: { x: 681, y: 152 },\n 18: { x: 677, y: 156 },\n 19: { x: 671, y: 159 },\n 20: { x: 665, y: 163 },\n 21: { x: 656, y: 168 },\n 22: { x: 650, y: 171 },\n 23: { x: 643, y: 176 },\n 24: { x: 635, y: 178 },\n 25: { x: 628, y: 181 },\n 26: { x: 621, y: null },\n 27: { x: 610, y: null },\n 28: { x: 598, y: null },\n 29: { x: 588, y: null },\n 30: { x: 578, y: null },\n 31: { x: 570, y: 176 },\n 32: { x: 560, y: 173 },\n },\n content: '
Info about Hotspot 3
',\n },\n {\n id: 'hotspot-4',\n orientation: 'x',\n containerSize: [1220, 680],\n positions: {\n 6: { x: 607, y: 246 },\n 7: { x: 619, y: null },\n 8: { x: 630, y: null },\n 9: { x: 637, y: null },\n 10: { x: 642, y: null },\n },\n content: '
Info about Hotspot 4
',\n },\n];\n\nexport { GURKHA_SUV_HOTSPOTS_CONFIG };\n","import { GURKHA_SUV_HOTSPOTS_CONFIG } from './hotspots-config.constant';\n\nconst NIKE_PLUGIN = {\n folder: 'https://scaleflex.cloudimg.io/v7/demo/360-nike/',\n filenameX: 'nike-{index}.jpg',\n filenameY: 'nike-y-{index}.jpg',\n amountX: '35',\n amountY: '36',\n autoplayBehavior: 'spin-xy',\n};\n\nconst EARBUDS_PLUGIN = {\n folder: 'https://scaleflex.cloudimg.io/v7/demo/earbuds/',\n filenameX: '{index}.jpg',\n amountX: '233',\n amountY: undefined,\n filenameY: undefined,\n};\n\nconst SPIN_DIRECTION_PROPS = ['filename-y', 'data-amount-y', 'data-autoplay-behavior'];\n\nconst PLUGIN_PROPS = {\n folder: {\n label: 'data-folder',\n value: 'https://scaleflex.cloudimg.io/v7/demo/earbuds/',\n isRequired: true,\n isUrl: true,\n },\n filenameX: { label: 'data-filename-x', value: '{index}.jpg' },\n filenameY: { label: 'data-filename-y' },\n amountY: { label: 'data-amount-y', isRequired: false },\n amountX: { label: 'data-amount-x', value: 233, isRequired: true },\n speed: { label: 'data-speed', value: 100, isRequired: false },\n dragSpeed: { label: 'data-drag-speed', value: 120, isRequired: false },\n autoplay: { label: 'data-autoplay', isRequired: false },\n pointerZoom: { label: 'data-pointer-zoom', value: 1.5, isRequired: false },\n autoplayBehavior: { label: 'data-autoplay-behavior', value: 'spin-xy', isRequired: false },\n magnifier: { label: 'data-magnifier', value: 1.5, isRequired: false },\n autoplayReverse: { label: 'data-autoplay-reverse', isRequired: false },\n playOnce: { label: 'data-play-once', isRequired: false },\n keys: { label: 'data-keys', isRequired: false },\n keysReverse: { label: 'data-keys-reverse', isRequired: false },\n draggable: { label: 'data-draggable', isRequired: false },\n swipeable: { label: 'data-swipeable', isRequired: false },\n fullscreen: { label: 'data-fullscreen', isRequired: false },\n};\n\nconst PROPERTIES_COLORS = {\n NAME: '#7B9200',\n URL: '#2D88CB',\n};\n\nconst URL_PROPERTIES = ['folder', 'class'];\n\nexport {\n NIKE_PLUGIN,\n EARBUDS_PLUGIN,\n SPIN_DIRECTION_PROPS,\n PLUGIN_PROPS,\n PROPERTIES_COLORS,\n URL_PROPERTIES,\n GURKHA_SUV_HOTSPOTS_CONFIG,\n};\n","import './controllers.css';\nimport CI360 from '../src';\n\nimport {\n EARBUDS_PLUGIN,\n GURKHA_SUV_HOTSPOTS_CONFIG,\n NIKE_PLUGIN,\n PLUGIN_PROPS,\n PROPERTIES_COLORS,\n URL_PROPERTIES,\n} from './constants';\n\nconst spinDirections = document.getElementById('spin-directions');\nconst copyText = document.getElementById('copy-text');\nconst codeBlock = document.getElementById('code-block');\nconst codeWrapper = document.getElementById('code-wrapper');\nconst pointerZoomSelector = document.getElementById('pointer-zoom-selector');\n\nconst copyButton = document.querySelector('.copy-button');\nconst outputCode = document.querySelector('.output-code');\nconst pointerZoomCheckbox = document.getElementById('pointer-checkbox');\nconst pluginCheckboxOptions = document.querySelectorAll('.plugin-option');\nconst imageXAmountSelector = document.getElementById('x-images-selector');\nconst imageYSelector = document.getElementById('images-y');\nconst autoplaySpeed = document.getElementById('spin-speed');\nconst dragSpeed = document.getElementById('drag-speed');\nconst instance = new CI360();\n\nfunction changeSpinDirectionHandler(event) {\n const spinDirection = event.target.value;\n const isYDirection = spinDirection === 'Y';\n const config = isYDirection ? NIKE_PLUGIN : EARBUDS_PLUGIN;\n const updatedView = instance.updateView('demo-generator', config);\n\n imageXAmountSelector.value = isYDirection ? 35 : 233;\n imageYSelector.style.display = isYDirection ? 'block' : 'none';\n\n updateCodeBlock(updatedView.viewerConfig);\n}\n\nfunction changeDragSpeed(event) {\n const { value } = event.target;\n const updatedView = instance.updateView('demo-generator', { dragSpeed: parseInt(value, 10) });\n\n updateCodeBlock(updatedView.viewerConfig);\n}\n\nfunction changeAutoplaySpeed(event) {\n const { value } = event.target;\n const updatedView = instance.updateView('demo-generator', { speed: parseInt(value, 10) });\n\n updateCodeBlock(updatedView.viewerConfig);\n}\n\nfunction copyCodeHandler() {\n navigator.clipboard.writeText(outputCode.innerText);\n\n copyText.innerHTML = 'Copied';\n\n setTimeout(() => {\n copyText.innerHTML = 'Copy';\n }, 500);\n}\n\nfunction changeImageXAmount(event) {\n const { value } = event.target;\n const updatedView = instance.updateView('demo-generator', { amountX: parseInt(value, 10) });\n\n updateCodeBlock(updatedView.viewerConfig);\n}\n\nfunction changePointerZoom(event) {\n const checked = event.target.checked;\n const value = parseFloat(pointerZoomSelector.value, 10);\n const updatedView = instance.updateView('demo-generator', { pointerZoom: checked ? value : false });\n pointerZoomSelector.disabled = !checked;\n\n updateCodeBlock(updatedView.viewerConfig);\n}\n\nfunction changePointerZoomSelector(event) {\n const { value } = event.target;\n\n const updatedView = instance.updateView('demo-generator', { pointerZoom: parseFloat(value, 10) });\n\n updateCodeBlock(updatedView.viewerConfig);\n}\n\nfunction pluginCheckboxOptionsHandler(event) {\n const checked = event.target.checked;\n const key = event.target.getAttribute('data-plugin-property');\n const pluginValue = event.target.getAttribute('data-plugin-value');\n\n let value = checked;\n if (pluginValue) {\n value = checked ? JSON.parse(pluginValue) : undefined;\n }\n\n const updatedView = instance.updateView('demo-generator', { [key]: value });\n\n updateCodeBlock(updatedView.viewerConfig);\n}\n\nfunction updateCodeBlock(config) {\n codeBlock.innerText = '';\n const configKeys = Object.keys(config);\n const keys = configKeys.filter((key) => PLUGIN_PROPS[key] && !!config[key]);\n\n keys.forEach((key) => {\n const { label } = PLUGIN_PROPS[key];\n const propertyWrapper = document.createElement('div');\n const propertyName = document.createElement('span');\n const propertyValue = document.createElement('span');\n\n propertyName.innerText = label;\n\n propertyName.style.color = PROPERTIES_COLORS.NAME;\n\n if (URL_PROPERTIES.includes(key)) {\n propertyValue.style.color = PROPERTIES_COLORS.URL;\n }\n\n propertyWrapper.appendChild(propertyName);\n\n propertyValue.innerText = `\"${config[key]}\"`;\n\n propertyWrapper.innerHTML += '=';\n propertyWrapper.appendChild(propertyValue);\n\n codeBlock.appendChild(propertyWrapper);\n codeWrapper.scrollTop = codeWrapper.scrollHeight;\n });\n}\n\ndragSpeed.addEventListener('change', changeDragSpeed);\nautoplaySpeed.addEventListener('change', changeAutoplaySpeed);\npointerZoomCheckbox.addEventListener('change', changePointerZoom);\nimageXAmountSelector.addEventListener('change', changeImageXAmount);\npointerZoomSelector.addEventListener('change', changePointerZoomSelector);\nspinDirections.addEventListener('change', changeSpinDirectionHandler);\ncopyButton.addEventListener('click', copyCodeHandler);\npluginCheckboxOptions.forEach((option) => {\n option.addEventListener('change', pluginCheckboxOptionsHandler);\n});\n\nconst suvCarContainer = document.getElementById('gurkha-suv');\n\nconst config = {\n folder: 'https://scaleflex.cloudimg.io/v7/demo/suv-orange-car-360/',\n filenameX: 'orange-{index}.jpg',\n amountX: 73,\n lazyload: true,\n speed: 120,\n pointerZoom: 2,\n responsive: 'scaleflex',\n autoplay: true,\n fullscreen: true,\n magnifier: 3,\n playOnce: true,\n hotspots: GURKHA_SUV_HOTSPOTS_CONFIG,\n};\n\ninstance.init(suvCarContainer, config);\ninstance.initAll();\n\nconst demoGeneratorInstance = instance.getViewById('demo-generator');\n\nupdateCodeBlock(demoGeneratorInstance.viewerConfig);\n"],"names":["FUNC_ERROR_TEXT","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","freeGlobal","g","Object","freeSelf","self","root","Function","objectToString","prototype","toString","nativeMax","Math","max","nativeMin","min","now","Date","isObject","value","type","toNumber","isObjectLike","call","isSymbol","other","valueOf","replace","isBinary","test","slice","module","exports","func","wait","options","leading","trailing","TypeError","lastArgs","lastThis","maxWait","result","timerId","lastCallTime","lastInvokeTime","maxing","invokeFunc","time","args","thisArg","undefined","apply","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","setTimeout","remainingWait","debounced","isInvoking","arguments","this","leadingEdge","cancel","clearTimeout","flush","debounce","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","n","getter","__esModule","d","a","definition","key","o","defineProperty","enumerable","get","globalThis","e","window","obj","prop","hasOwnProperty","r","Symbol","toStringTag","AUTOPLAY_BEHAVIOR","FALSY_VALUES","ORIENTATIONS","PROPS_REQUIRE_RELOAD","LEFT_RIGHT_KEYS","UP_DOWN_KEYS","DEFAULTS_VALUES","getAttr","element","attribute","defaultValue","getAttribute","concat","isTrue","image","hasAttribute","isFalse","generateCdnPath","srcConfig","width","folder","apiVersion","_srcConfig$filename","filename","_ref2","ciParams","ciToken","ciFilters","ciTransformation","src","version","includes","finalApiVersion","responsiveWidth","size","length","pixelRatio","round","devicePixelRatio","getSizeAccordingToPixelRatio","cdn","URL","origin","buildCdnUrl","transformationParams","_ref","sizeParam","transformation","filters","buildTransformationParams","generateHighPreviewCdnUrl","url","paramName","paramValue","_url$split2","split","base","query","newParam","encodeURIComponent","params","URLSearchParams","set","addOrUpdateParam","pad","Array","join","_regeneratorRuntime","t","i","iterator","c","asyncIterator","u","define","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","arg","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","getPrototypeOf","v","values","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","_typeof","resolve","__await","then","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","return","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","displayName","isGeneratorFunction","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","stop","rval","handle","complete","finish","catch","delegateYield","asyncGeneratorStep","_asyncToGenerator","_next","_throw","preloadImages","cdnPathX","cdnPathY","configX","configY","onFirstImageLoad","onImageLoad","onAllImagesLoad","allImagesLoaded","x","loadedImagesX","loadedImagesY","loadX","imageList","loadY","loadOrientationImages","cdnPath","config","orientation","loadedImages","xOrientation","_ref$amount","amount","_ref$indexZeroBase","indexZeroBase","from","_","index","generateImagesCdnLinks","imagesUrls","autoplayReverse","loadedCount","totalImages","loadImage","img","Image","crossOrigin","onload","_callee","bitmapImage","imageData","_context","createImageBitmap","naturalWidth","firstImg","naturalHeight","onerror","console","error","_callee2","_context2","loadImages","loadedImagesResult","createIconsContainer","innerBox","iconsContainer","document","createElement","className","appendChild","removeElementFromContainer","container","selector","querySelector","parentNode","removeChild","cdnUrl","cleanedCdnUrl","paramToRemove","regex","RegExp","cleanedQuery","filter","param","removeParamByRegex","separator","images","firstImageSrc","isAbsoluteUrl","_objectSpread","createImage","lazyload","setAttribute","style","cssText","initLazyload","onLoad","observer","imagesSrc","JSON","parse","getFirstCdnImageFromList","message","nextZeroFilledIndex","getFirstCdnImage","getFirstImageSrc","lowPreviewSrc","generateLowPreviewCdnUrl","lazyloadImage","placeholderImage","event","height","IntersectionObserver","entries","entry","isIntersecting","target","unobserve","rootMargin","threshold","observe","moveMagnifier","containerConfig","glass","w","zoom","bw","offsetX","offsetY","pos","rect","getBoundingClientRect","touches","clientX","clientY","left","top","getCursorPosition","offsetWidth","offsetHeight","backgroundPosX","backgroundPosY","backgroundPosition","handleSpinY","reversed","bottom","handleSpinX","right","canvas","ctx","dpr","drawWidth","drawHeight","wideImage","isSpinKeysPressed","keyCode","allowSpinY","_toConsumableArray","onmessage","_event$data","action","offscreen","zoomScale","pointerX","pointerY","imageAspectRatio","containerWidth","containerHeight","data","t0","initCanvas","adaptCanvasSize","drawImageOnCanvas","_x","offscreenCanvas","getContext","scale","imageSmoothingEnabled","imageSmoothingQuality","clearRect","_calculateZoomedDimen","zoomedWidth","zoomedHeight","calculateZoomedDimensions","_calculateZoomOffsets","zoomOffsetX","zoomOffsetY","maxOffsetX","maxOffsetY","calculateZoomOffsets","drawImage","getWindow","node","ownerDocument","defaultView","isElement","Element","isHTMLElement","HTMLElement","isShadowRoot","ShadowRoot","getUAString","uaData","navigator","userAgentData","brands","isArray","map","item","brand","userAgent","isLayoutViewport","includeScale","isFixedStrategy","clientRect","scaleX","scaleY","visualViewport","addVisualOffsets","offsetLeft","offsetTop","getWindowScroll","win","scrollLeft","pageXOffset","scrollTop","pageYOffset","getNodeName","nodeName","toLowerCase","getDocumentElement","documentElement","getWindowScrollBarX","getComputedStyle","isScrollParent","_getComputedStyle","overflow","overflowX","overflowY","getCompositeRect","elementOrVirtualElement","offsetParent","isFixed","isOffsetParentAnElement","offsetParentIsScaled","isElementScaled","scroll","offsets","clientLeft","clientTop","getLayoutRect","abs","getParentNode","assignedSlot","host","getScrollParent","indexOf","body","listScrollParents","list","_element$ownerDocumen","scrollParent","isBody","updatedList","isTableElement","getTrueOffsetParent","position","getOffsetParent","isFirefox","currentNode","css","transform","perspective","contain","willChange","getContainingBlock","auto","basePlacements","start","end","viewport","popper","variationPlacements","reduce","acc","placement","modifierPhases","order","modifiers","Map","visited","Set","sort","modifier","add","requires","requiresIfExists","dep","has","depModifier","DEFAULT_OPTIONS","strategy","areValidElements","_len","_key","some","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","reference","fn","pending","state","orderedModifiers","assign","modifiersData","elements","attributes","styles","effectCleanupFns","isDestroyed","instance","setOptions","setOptionsAction","cleanupModifierEffects","scrollParents","contextElement","merged","phase","orderModifiers","current","existing","m","enabled","_ref$options","effect","cleanupFn","update","forceUpdate","_state$elements","rects","_state$orderedModifie","_state$orderedModifie2","_options","destroy","onFirstUpdate","passive","_options$scroll","_options$resize","resize","addEventListener","removeEventListener","getBasePlacement","getVariation","getMainAxisFromPlacement","computeOffsets","basePlacement","variation","commonX","commonY","mainAxis","len","unsetSides","mapToStyles","_Object$assign2","popperRect","gpuAcceleration","adaptive","roundOffsets","_offsets$x","_offsets$y","_ref3","hasX","hasY","sideX","sideY","heightProp","widthProp","_Object$assign","commonStyles","_ref4","roundOffsetsByDPR","hash","getOppositePlacement","matched","getOppositeVariationPlacement","contains","parent","child","rootNode","getRootNode","isSameNode","rectToClientRect","getClientRectFromMixedType","clippingParent","html","clientWidth","clientHeight","layoutViewport","getViewportRect","getInnerBoundingClientRect","winScroll","scrollWidth","scrollHeight","direction","getDocumentRect","mergePaddingObject","paddingObject","expandToHashMap","hashMap","detectOverflow","_options$placement","_options$strategy","_options$boundary","boundary","_options$rootBoundary","rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","padding","altContext","clippingClientRect","mainClippingParents","clippingParents","clipperElement","getClippingParents","firstClippingParent","clippingRect","accRect","getClippingRect","referenceClientRect","popperOffsets","popperClientRect","elementClientRect","overflowOffsets","offsetData","offset","multiply","axis","within","getSideOffsets","preventedOffsets","isAnySideFullyClipped","side","eventListeners","_ref5","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","arrow","removeAttribute","initialStyles","margin","property","_options$offset","invertDistance","skidding","distance","distanceAndSkiddingToXY","_data$state$placement","_skip","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","flipVariations","allowedAutoPlacements","preferredPlacement","oppositePlacement","getExpandedFallbackPlacements","placements","_options$allowedAutoP","allowedPlacements","overflows","b","computeAutoPlacement","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","isVertical","mainVariationSide","altVariationSide","checks","every","check","_loop","_i","fittingPlacement","find","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","minLen","maxLen","arrowElement","arrowRect","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","arrowOffsetParent","clientOffset","offsetModifierValue","tetherMax","preventedOffset","_offsetModifierState$2","_mainSide","_altSide","_offset","_min","_max","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","withinMaxClamp","_state$modifiersData$","toPaddingObject","minProp","maxProp","endDiff","startDiff","clientSize","centerToReference","center","axisProp","centerOffset","_options$element","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","Hotspot","hotspotsConfig","_this","_classCallCheck","_defineProperty","activeIndex","currentActiveIndex","currentOrientation","frameHotspots","hotspots","currentFrame","hotspot","adaptOrientation","positions","findHotspotsForFrame","hideHotspots","updateAndShowHotspot","popperInstance","hotspotsContainer","hotspotContainer","createHotspotsContainer","updatedHotspotConfig","updatedPositions","_step","lastValidX","lastValidY","_iterator","_createForOfIteratorHelper","keyA","_slicedToArray","keyB","Number","_step$value","err","fillEmptyPositions","initialPositions","adaptHotspotConfig","shouldHidePopper","hidePopper","bind","containerSize","initialContainerSize","initHotspots","observeContainerResize","_this2","resizeObserver","ResizeObserver","newWidth","newHeight","updateHotspotsForResize","_initialContainerSize","initialWidth","initialHeight","widthRatio","heightRatio","_ref6","_ref7","initialPosition","calculateHotspotPositions","updateHotspotPosition","_this3","hotspotElement","content","id","keepOpen","instanceId","popperOptions","dataset","popperId","innerHTML","textContent","createPopperElement","checkAndHidePopper","hidePopperTimeout","createPopper","_this$popperInstance","_this4","_this5","remove","_this6","onClick","hotspotId","createHotspotElement","cursor","onclick","stopPropagation","showPopper","querySelectorAll","opacity","pointerEvents","hotspotConfig","_positions$activeInde","translate","_this7","createHotspot","createAllHotspots","disconnect","CI360Viewer","fullscreen","isClicked","fullscreenView","imagesX","imagesY","movementStart","draggingDirection","isReady","currentZoomScale","touchDevice","maxTouchPoints","msMaxTouchPoints","canvasWorker","CanvasWorker","onMoveHandler","init","pageX","pageY","autoplay","loopTimeoutId","stopAutoplay","isDragging","isZoomed","showAllIcons","deltaX","deltaY","allowSpinX","_ref$threshold","absDeltaX","absDeltaY","getMovingDirection","dragReverse","dragFactor","dragSpeed","speedFactorX","amountX","speedFactorY","amountY","itemsSkippedX","itemsSkippedY","hideHotspotPopper","hideAllIcons","drag","applyZoom","magnified","removeGlass","pointerZoom","toggleZoom","srcXConfig","srcYConfig","hotspotsInstance","showTransitionOverlay","removeZoom","showLoadingSpinner","loadHigherQualityImages","updateView","hideTransitionOverlay","_calculateOffsetFromE","canvasRect","calculateOffsetFromEvent","hideLoadingSpinner","_event$touches$","_event$touches$2","preventDefault","isReverse","keysReverse","moveLeft","moveRight","moveTop","moveBottom","itemsSkipped","activeImageX","activeImageY","stopAtEdges","moveActiveXIndexUp","moveActiveXIndexDown","moveActiveYIndexUp","moveActiveYIndexDown","movingDirection","percentage","loader","innerText","innerWidth","innerHeight","postMessage","totalAmount","totalLoadedImages","pushImageToSet","updatePercentageInLoader","calculatePercentage","createContainers","addAllIcons","delayedPlay","timer","ms","delay","play","callback","imageWidth","magnifier","highPreviewCdnUrl","createGlass","clickEvent","currentImage","_ref$x","_ref$y","backgroundSizeX","backgroundSizeY","prepend","backgroundImage","backgroundSize","MouseMoveHandler","magnify","fullscreenModal","fullscreenContainer","cloneNode","maxHeight","createFullscreenModal","viewerConfig","hide360ViewCircleIcon","autoplaySpeed","speed","loopTriggers","setInterval","completedOneCycle","playOnce","checkEdge","activeImage","autoplayBehavior","isCompletedOneCycle","spinDirection","spinY","loop","oldElement","newElement","replaceChild","view360Icon","initialIcon","magnifierIcon","MagnifierIcon","visibility","fullscreenIcon","FullscreenIcon","openFullscreenModal","close","fullscreenCloseIcon","closeIcon","closeFullscreenModal","circleOffset","view360CircleIcon","bottomCircleOffset","loadingSpinner","transitionOverlay","removeLoader","createTransitionOverlay","addLoadingSpinner","addMagnifierIcon","addFullscreenIcon","initialIconShown","addInitialIcon","bottomCircle","add360ViewCircleIcon","showInitialIcon","show360ViewCircleIcon","showMagnifierIcon","showFullscreenIcon","hideInitialIcon","hideMagnifierIcon","hideFullscreenIcon","draggable","swipeable","addMouseEvents","addTouchEvents","addKeyboardEvents","removeMouseEvents","removeTouchEvents","removeKeyboardEvents","boundMouseClick","mouseClick","boundMouseDown","mouseDown","boundMouseMove","throttle","mouseMove","boundMouseUp","mouseUp","boundTouchOutside","touchOutside","boundTouchStart","touchStart","boundTouchEnd","touchEnd","boundTouchMove","touchMove","boundKeyDown","keyDown","boundKeyUp","keyUp","createCanvas","percentageText","createLoader","transferControlToOffscreen","addCloseFullscreenIcon","newConfig","onAllImagesLoaded","_this$innerBox","adaptedConfig","_config$indexZeroBase","_config$amountX","_config$amountY","_config$speed","_config$draggable","_config$swipeable","_config$dragSpeed","_config$keys","_config$keysReverse","_config$autoplay","_config$playOnce","_config$autoplayRever","_config$pointerZoom","_config$fullscreen","_config$magnifier","_config$bottomCircleO","_config$lazyload","_config$dragReverse","_config$stopAtEdges","_config$imageInfo","_config$initialIconSh","_config$bottomCircle","_config$hotspots","filenameX","filenameY","imageListX","imageListY","parseFloat","imageInfo","adaptConfig","_adaptedConfig$dragga","_adaptedConfig$swipea","_adaptedConfig$imageI","parsedImagesListX","parsedImagesListY","info","createInnerBox","getDefaultSpinDirection","removeEvents","attachEvents","loadCallback","onFirstImageLoaded","CI360","views","initAll","getViews","random","containerId","generateId","Boolean","view","getViewById","delete","clear","updatedConfig","requireReload","originalConfig","hasConfigChanged","getElementById","NIKE_PLUGIN","EARBUDS_PLUGIN","PLUGIN_PROPS","label","isRequired","isUrl","URL_PROPERTIES","spinDirections","copyText","codeBlock","codeWrapper","pointerZoomSelector","copyButton","outputCode","pointerZoomCheckbox","pluginCheckboxOptions","imageXAmountSelector","imageYSelector","pluginCheckboxOptionsHandler","checked","pluginValue","updateCodeBlock","propertyWrapper","propertyName","propertyValue","color","updatedView","disabled","isYDirection","display","clipboard","writeText","option","suvCarContainer","responsive"],"sourceRoot":""} \ No newline at end of file diff --git a/index.html b/index.html index dc83751..b8675eb 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ -JS-Cloudimage-360-view

Display every detail from any angle, on any device

Enhance your customer's experience with stunning 360° views of your products. Create an immersive product experience, every time.

Featuring 36 images, autoplay*, bottom 360° view circle, arrow keys support*, magnifier*, inner box shadow and more!
(*) available only on desktops

Create 360° views, your way

Try out our simple, interactive resource to customize an interactive virtual tour of your product.

copy icon

Copy

<div
></div>

Images source

Images name x

Select amount-x

Select amount-y

Customize

zoom scale

Auto play behavior

Auto play speed(milliseconds)

Drag speed(milliseconds)

Any questions?

Contact us at hello@cloudimage.io, our experts will be happy to help!

\ No newline at end of file +JS-Cloudimage-360-view

Display every detail from any angle, on any device

Enhance your customer's experience with stunning 360° views of your products. Create an immersive product experience, every time.

Featuring 36 images, autoplay*, bottom 360° view circle, arrow keys support*, magnifier*, inner box shadow and more!
(*) available only on desktops

Create 360° views, your way

Try out our simple, interactive resource to customize an interactive virtual tour of your product.

copy icon

Copy

<div
></div>

Images source

Images name x

Select amount-x

Select amount-y

Customize

zoom scale

Auto play behavior

Auto play speed(milliseconds)

Drag speed(milliseconds)

Any questions?

Contact us at hello@cloudimage.io, our experts will be happy to help!

\ No newline at end of file diff --git a/main.css b/main.css new file mode 100644 index 0000000..2b43815 --- /dev/null +++ b/main.css @@ -0,0 +1,370 @@ +.cloudimage-360 .cloudimage-360-left, +.cloudimage-360 .cloudimage-360-right { + padding: 8px; + background: rgb(244, 244, 244); + border: none; + border-radius: 4px; +} + +.cloudimage-360 .cloudimage-360-left:focus, +.cloudimage-360 .cloudimage-360-right:focus { + outline: none; +} + +.cloudimage-360 .cloudimage-360-left { + display: none; + position: absolute; + z-index: 100; + top: calc(50% - 15px); + left: 20px; +} + +.cloudimage-360 .cloudimage-360-right { + display: none; + position: absolute; + z-index: 100; + top: calc(50% - 15px); + right: 20px; +} + +.cloudimage-360 .cloudimage-360-left:before, +.cloudimage-360 .cloudimage-360-right:before { + content: ''; + display: block; + width: 30px; + height: 30px; + background: 50% 50% / cover no-repeat; +} + +.cloudimage-360 .cloudimage-360-left:before { + background-image: url('https://cdn.scaleflex.it/plugins/js-cloudimage-360-view/assets/img/arrow-left.svg'); +} + +.cloudimage-360 .cloudimage-360-right:before { + background-image: url('https://cdn.scaleflex.it/plugins/js-cloudimage-360-view/assets/img/arrow-right.svg'); +} + +.cloudimage-360 .cloudimage-360-left.not-active, +.cloudimage-360 .cloudimage-360-right.not-active { + opacity: 0.4; + cursor: default; + pointer-events: none; +} + +.cloudimage-360 .cloudimage-360-top, +.cloudimage-360 .cloudimage-360-bottom { + padding: 8px; + background: rgb(244, 244, 244); + border: none; + border-radius: 4px; +} + +.cloudimage-360 .cloudimage-360-top:focus, +.cloudimage-360 .cloudimage-360-bottom:focus { + outline: none; +} + +.cloudimage-360 .cloudimage-360-top { + display: none; + position: absolute; + z-index: 100; + left: calc(50% - 15px); + top: 20px; + transform: rotate(90deg); +} + +.cloudimage-360 .cloudimage-360-bottom { + display: none; + position: absolute; + z-index: 100; + left: calc(50% - 15px); + bottom: 20px; + transform: rotate(90deg); +} + +.cloudimage-360 .cloudimage-360-top:before, +.cloudimage-360 .cloudimage-360-bottom:before { + content: ''; + display: block; + width: 30px; + height: 30px; + background: 50% 50% / cover no-repeat; +} + +.cloudimage-360 .cloudimage-360-top:before { + background-image: url('https://cdn.scaleflex.it/plugins/js-cloudimage-360-view/assets/img/arrow-left.svg'); +} + +.cloudimage-360 .cloudimage-360-bottom:before { + background-image: url('https://cdn.scaleflex.it/plugins/js-cloudimage-360-view/assets/img/arrow-right.svg'); +} + +.cloudimage-360 .cloudimage-360-top.not-active, +.cloudimage-360 .cloudimage-360-bottom.not-active { + opacity: 0.4; + cursor: default; +} + +@keyframes rotation { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} + +.cloudimage-360 { + width: 100%; + position: relative; +} + +.cloudimage-360-inner-box { + width: 100%; + height: 100%; + position: relative; +} + +.cloudimage-360-icons-container { + position: absolute; + display: flex; + top: 15px; + right: 10px; + height: 100%; + flex-direction: column; + align-items: center; + z-index: 100; + gap: 8px; +} + +.cloudimage-360-transition-overlay { + position: absolute; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(255, 255, 255, 1); + opacity: 0; + transition: all 1s ease-out; + z-index: 10; +} + +.cloudimage-360-button { + width: 30px; + height: 30px; + cursor: pointer; + transition: + transform 150ms ease-out, + background-color 150ms ease-out; + display: flex; + align-items: center; + justify-content: center; + border-radius: 50%; + background-color: #f0f0f0; + color: #4a4a4a; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); + padding: 6px; +} + +.cloudimage-360-button:hover { + transform: scale(1.05); + background-color: #e7e6e6; +} + +.cloudimage-360-button svg { + width: 18px; + height: 18px; + fill: #4a4a4a; + transition: fill 150ms ease-out; +} + +.cloudimage-360-button:hover svg { + fill: #2c2c2c; +} + +.cloudimage-initial-icon { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + width: 100px; + height: 100px; + margin: auto; + background: linear-gradient(135deg, rgba(255, 255, 255, 0.5), rgba(200, 200, 200, 0.5)); + backdrop-filter: blur(8px); + border-radius: 50%; + border: 1px solid rgba(255, 255, 255, 0.5); + box-shadow: + 0 8px 12px rgba(0, 0, 0, 0.2), + 0 4px 6px rgba(0, 0, 0, 0.1); + transition: + 200ms all, + transform 0.2s; + color: #4b4b4b; + text-align: center; + z-index: 2; + line-height: 100px; + user-select: none; +} + +.cloudimage-initial-icon:hover { + background-color: rgba(200, 200, 200, 0.2); /* Brighten on hover */ +} + +.cloudimage-loading-spinner { + width: 30px; + height: 30px; + transform: translate(-50%, -50%); + border: 3px solid #fff; + position: absolute; + top: 15px; + left: 15px; + border-bottom-color: #a3a3a3; + border-radius: 50%; + display: inline-block; + box-sizing: border-box; + opacity: 0; + animation: rotation 700ms linear infinite; +} + +.cloudimage-360-view-360-circle { + position: absolute; + left: 0; + bottom: 0; + width: 100%; + height: auto; + margin: auto; + pointer-events: none; + user-select: none; + transition: 200ms all; + z-index: 2; +} + +.cloudimage-360-fullscreen-modal { + position: fixed; + top: 0; + bottom: 0; + left: 0; + right: 0; + width: 100%; + height: 100%; + z-index: 999; + background-color: #fff; +} + +.cloudimage-360-img-magnifier-glass { + background-color: #fff; + background-image: radial-gradient(circle at center, rgba(255, 255, 255, 0.8), rgba(240, 240, 240, 0.9)); + background-repeat: no-repeat; + position: absolute; + border: 2px solid rgba(0, 0, 0, 0.3); + border-radius: 50%; + line-height: 200px; + text-align: center; + z-index: 1000; + width: 250px; + height: 250px; + top: -75px; + right: -85px; + box-shadow: + 0 8px 16px rgba(0, 0, 0, 0.4), + 0 4px 8px rgba(0, 0, 0, 0.2); + transition: box-shadow 200ms ease; + overflow: hidden; + pointer-events: none; +} + +.cloudimage-360-hotspot-container { + position: absolute; + inset: 0; + width: 100%; + height: 100%; + z-index: 20; +} + +.cloudimage-360-popper { + opacity: 1; + transition: opacity 0.2s ease-in-out; +} + +.cloudimage-360-hotspot { + display: inline-block; + position: absolute; + inset: 0; + transform: translate(-50%, -50%); + background: #00aaff; + border: 1px solid #fff; + border-radius: 50%; + height: 18px; + width: 18px; + box-shadow: + 0 0 0 0 rgba(0, 170, 255, 0.6), + 0 2px 6px rgba(0, 0, 0, 0.2); + opacity: 0; + animation: pulse 2s infinite; + transition: + transform 0.2s ease, + box-shadow 0.2s ease; +} + +.cloudimage-360-hotspot.visible { + opacity: 1; +} + +@keyframes pulse { + 0% { + transform: scale(1); + box-shadow: + 0 0 0 0 rgba(0, 170, 255, 0.6), + 0 0 0 10px rgba(0, 170, 255, 0.4), + 0 0 0 20px rgba(0, 170, 255, 0.2); + } + 50% { + transform: scale(1.1); + box-shadow: + 0 0 0 10px rgba(0, 170, 255, 0), + 0 0 0 20px rgba(0, 170, 255, 0.1), + 0 0 0 30px rgba(0, 170, 255, 0); + } + 100% { + transform: scale(1); + box-shadow: + 0 0 0 0 rgba(0, 170, 255, 0), + 0 0 0 10px rgba(0, 170, 255, 0), + 0 0 0 20px rgba(0, 170, 255, 0); + } +} + +.cloudimage-360-hotspot:hover { + transform: scale(1.2); + box-shadow: + 0 0 0 5px rgba(0, 170, 255, 0.5), + 0 4px 12px rgba(0, 0, 0, 0.3); +} + +.cloudimage-360-popper { + background-color: rgba(255, 255, 255, 0.9); + color: #333; + padding: 10px 15px; + border-radius: 6px; + box-shadow: 0px 4px 16px rgba(0, 0, 0, 0.2); + font-size: 14px; + max-width: 220px; + z-index: 9999; + text-align: center; + transition: + opacity 0.2s ease, + translate 0.2s ease; + opacity: 0; + translate: 0 -10px; +} + +.cloudimage-360-popper[data-show] { + opacity: 1; + translate: 0; +} + + +/*# sourceMappingURL=main.css.map*/ \ No newline at end of file diff --git a/main.css.map b/main.css.map new file mode 100644 index 0000000..b365530 --- /dev/null +++ b/main.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack://js-cloudimage-360-view/./demo/controllers.css","webpack://js-cloudimage-360-view/./src/static/css/style.css","webpack://js-cloudimage-360-view/./src/static/css/hotspots.css"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;ACzGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6CAA6C;AAC7C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzKA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA","file":"main.css","sourcesContent":[".cloudimage-360 .cloudimage-360-left,\n.cloudimage-360 .cloudimage-360-right {\n padding: 8px;\n background: rgb(244, 244, 244);\n border: none;\n border-radius: 4px;\n}\n\n.cloudimage-360 .cloudimage-360-left:focus,\n.cloudimage-360 .cloudimage-360-right:focus {\n outline: none;\n}\n\n.cloudimage-360 .cloudimage-360-left {\n display: none;\n position: absolute;\n z-index: 100;\n top: calc(50% - 15px);\n left: 20px;\n}\n\n.cloudimage-360 .cloudimage-360-right {\n display: none;\n position: absolute;\n z-index: 100;\n top: calc(50% - 15px);\n right: 20px;\n}\n\n.cloudimage-360 .cloudimage-360-left:before,\n.cloudimage-360 .cloudimage-360-right:before {\n content: '';\n display: block;\n width: 30px;\n height: 30px;\n background: 50% 50% / cover no-repeat;\n}\n\n.cloudimage-360 .cloudimage-360-left:before {\n background-image: url('https://cdn.scaleflex.it/plugins/js-cloudimage-360-view/assets/img/arrow-left.svg');\n}\n\n.cloudimage-360 .cloudimage-360-right:before {\n background-image: url('https://cdn.scaleflex.it/plugins/js-cloudimage-360-view/assets/img/arrow-right.svg');\n}\n\n.cloudimage-360 .cloudimage-360-left.not-active,\n.cloudimage-360 .cloudimage-360-right.not-active {\n opacity: 0.4;\n cursor: default;\n pointer-events: none;\n}\n\n.cloudimage-360 .cloudimage-360-top,\n.cloudimage-360 .cloudimage-360-bottom {\n padding: 8px;\n background: rgb(244, 244, 244);\n border: none;\n border-radius: 4px;\n}\n\n.cloudimage-360 .cloudimage-360-top:focus,\n.cloudimage-360 .cloudimage-360-bottom:focus {\n outline: none;\n}\n\n.cloudimage-360 .cloudimage-360-top {\n display: none;\n position: absolute;\n z-index: 100;\n left: calc(50% - 15px);\n top: 20px;\n transform: rotate(90deg);\n}\n\n.cloudimage-360 .cloudimage-360-bottom {\n display: none;\n position: absolute;\n z-index: 100;\n left: calc(50% - 15px);\n bottom: 20px;\n transform: rotate(90deg);\n}\n\n.cloudimage-360 .cloudimage-360-top:before,\n.cloudimage-360 .cloudimage-360-bottom:before {\n content: '';\n display: block;\n width: 30px;\n height: 30px;\n background: 50% 50% / cover no-repeat;\n}\n\n.cloudimage-360 .cloudimage-360-top:before {\n background-image: url('https://cdn.scaleflex.it/plugins/js-cloudimage-360-view/assets/img/arrow-left.svg');\n}\n\n.cloudimage-360 .cloudimage-360-bottom:before {\n background-image: url('https://cdn.scaleflex.it/plugins/js-cloudimage-360-view/assets/img/arrow-right.svg');\n}\n\n.cloudimage-360 .cloudimage-360-top.not-active,\n.cloudimage-360 .cloudimage-360-bottom.not-active {\n opacity: 0.4;\n cursor: default;\n}\n","@keyframes rotation {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n\n.cloudimage-360 {\n width: 100%;\n position: relative;\n}\n\n.cloudimage-360-inner-box {\n width: 100%;\n height: 100%;\n position: relative;\n}\n\n.cloudimage-360-icons-container {\n position: absolute;\n display: flex;\n top: 15px;\n right: 10px;\n height: 100%;\n flex-direction: column;\n align-items: center;\n z-index: 100;\n gap: 8px;\n}\n\n.cloudimage-360-transition-overlay {\n position: absolute;\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(255, 255, 255, 1);\n opacity: 0;\n transition: all 1s ease-out;\n z-index: 10;\n}\n\n.cloudimage-360-button {\n width: 30px;\n height: 30px;\n cursor: pointer;\n transition:\n transform 150ms ease-out,\n background-color 150ms ease-out;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n background-color: #f0f0f0;\n color: #4a4a4a;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n padding: 6px;\n}\n\n.cloudimage-360-button:hover {\n transform: scale(1.05);\n background-color: #e7e6e6;\n}\n\n.cloudimage-360-button svg {\n width: 18px;\n height: 18px;\n fill: #4a4a4a;\n transition: fill 150ms ease-out;\n}\n\n.cloudimage-360-button:hover svg {\n fill: #2c2c2c;\n}\n\n.cloudimage-initial-icon {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n width: 100px;\n height: 100px;\n margin: auto;\n background: linear-gradient(135deg, rgba(255, 255, 255, 0.5), rgba(200, 200, 200, 0.5));\n backdrop-filter: blur(8px);\n border-radius: 50%;\n border: 1px solid rgba(255, 255, 255, 0.5);\n box-shadow:\n 0 8px 12px rgba(0, 0, 0, 0.2),\n 0 4px 6px rgba(0, 0, 0, 0.1);\n transition:\n 200ms all,\n transform 0.2s;\n color: #4b4b4b;\n text-align: center;\n z-index: 2;\n line-height: 100px;\n user-select: none;\n}\n\n.cloudimage-initial-icon:hover {\n background-color: rgba(200, 200, 200, 0.2); /* Brighten on hover */\n}\n\n.cloudimage-loading-spinner {\n width: 30px;\n height: 30px;\n transform: translate(-50%, -50%);\n border: 3px solid #fff;\n position: absolute;\n top: 15px;\n left: 15px;\n border-bottom-color: #a3a3a3;\n border-radius: 50%;\n display: inline-block;\n box-sizing: border-box;\n opacity: 0;\n animation: rotation 700ms linear infinite;\n}\n\n.cloudimage-360-view-360-circle {\n position: absolute;\n left: 0;\n bottom: 0;\n width: 100%;\n height: auto;\n margin: auto;\n pointer-events: none;\n user-select: none;\n transition: 200ms all;\n z-index: 2;\n}\n\n.cloudimage-360-fullscreen-modal {\n position: fixed;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n width: 100%;\n height: 100%;\n z-index: 999;\n background-color: #fff;\n}\n\n.cloudimage-360-img-magnifier-glass {\n background-color: #fff;\n background-image: radial-gradient(circle at center, rgba(255, 255, 255, 0.8), rgba(240, 240, 240, 0.9));\n background-repeat: no-repeat;\n position: absolute;\n border: 2px solid rgba(0, 0, 0, 0.3);\n border-radius: 50%;\n line-height: 200px;\n text-align: center;\n z-index: 1000;\n width: 250px;\n height: 250px;\n top: -75px;\n right: -85px;\n box-shadow:\n 0 8px 16px rgba(0, 0, 0, 0.4),\n 0 4px 8px rgba(0, 0, 0, 0.2);\n transition: box-shadow 200ms ease;\n overflow: hidden;\n pointer-events: none;\n}\n",".cloudimage-360-hotspot-container {\n position: absolute;\n inset: 0;\n width: 100%;\n height: 100%;\n z-index: 20;\n}\n\n.cloudimage-360-popper {\n opacity: 1;\n transition: opacity 0.2s ease-in-out;\n}\n\n.cloudimage-360-hotspot {\n display: inline-block;\n position: absolute;\n inset: 0;\n transform: translate(-50%, -50%);\n background: #00aaff;\n border: 1px solid #fff;\n border-radius: 50%;\n height: 18px;\n width: 18px;\n box-shadow:\n 0 0 0 0 rgba(0, 170, 255, 0.6),\n 0 2px 6px rgba(0, 0, 0, 0.2);\n opacity: 0;\n animation: pulse 2s infinite;\n transition:\n transform 0.2s ease,\n box-shadow 0.2s ease;\n}\n\n.cloudimage-360-hotspot.visible {\n opacity: 1;\n}\n\n@keyframes pulse {\n 0% {\n transform: scale(1);\n box-shadow:\n 0 0 0 0 rgba(0, 170, 255, 0.6),\n 0 0 0 10px rgba(0, 170, 255, 0.4),\n 0 0 0 20px rgba(0, 170, 255, 0.2);\n }\n 50% {\n transform: scale(1.1);\n box-shadow:\n 0 0 0 10px rgba(0, 170, 255, 0),\n 0 0 0 20px rgba(0, 170, 255, 0.1),\n 0 0 0 30px rgba(0, 170, 255, 0);\n }\n 100% {\n transform: scale(1);\n box-shadow:\n 0 0 0 0 rgba(0, 170, 255, 0),\n 0 0 0 10px rgba(0, 170, 255, 0),\n 0 0 0 20px rgba(0, 170, 255, 0);\n }\n}\n\n.cloudimage-360-hotspot:hover {\n transform: scale(1.2);\n box-shadow:\n 0 0 0 5px rgba(0, 170, 255, 0.5),\n 0 4px 12px rgba(0, 0, 0, 0.3);\n}\n\n.cloudimage-360-popper {\n background-color: rgba(255, 255, 255, 0.9);\n color: #333;\n padding: 10px 15px;\n border-radius: 6px;\n box-shadow: 0px 4px 16px rgba(0, 0, 0, 0.2);\n font-size: 14px;\n max-width: 220px;\n z-index: 9999;\n text-align: center;\n transition:\n opacity 0.2s ease,\n translate 0.2s ease;\n opacity: 0;\n translate: 0 -10px;\n}\n\n.cloudimage-360-popper[data-show] {\n opacity: 1;\n translate: 0;\n}\n"],"sourceRoot":""} \ No newline at end of file