js-cloudimage-360-view 4.2.0 → 4.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +62 -0
- package/dist/js-cloudimage-360-view.min.js +7 -7
- package/dist/react/{ci360-CILBSFAa.mjs → ci360-85fPJbOD.mjs} +1063 -801
- package/dist/react/ci360-85fPJbOD.mjs.map +1 -0
- package/dist/react/ci360-lO9vxGoH.js +35 -0
- package/dist/react/ci360-lO9vxGoH.js.map +1 -0
- package/dist/react/index.cjs +1 -1
- package/dist/react/index.d.ts +6 -0
- package/dist/react/index.js +1 -1
- package/dist/react/style.css +1 -1
- package/package.json +1 -1
- package/src/react/types.d.ts +6 -0
- package/src/types/ci360.d.ts +1 -0
- package/dist/react/ci360-CILBSFAa.mjs.map +0 -1
- package/dist/react/ci360-TSs45Yhc.js +0 -35
- package/dist/react/ci360-TSs45Yhc.js.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
var CI360=function(){"use strict";var Jn=Object.defineProperty;var Qn=(q,W,lt)=>W in q?Jn(q,W,{enumerable:!0,configurable:!0,writable:!0,value:lt}):q[W]=lt;var qe=(q,W,lt)=>Qn(q,typeof W!="symbol"?W+"":W,lt);var q=document.createElement("style");q.textContent=`:root{--ci360-button-bg: rgba(255, 255, 255, .9);--ci360-button-bg-hover: rgba(255, 255, 255, 1);--ci360-button-size: 40px;--ci360-button-border-radius: 6px;--ci360-button-shadow: 0 2px 8px rgba(0, 0, 0, .15);--ci360-icon-color: #505050;--ci360-icon-color-hover: #333333;--ci360-icon-size: 20px;--ci360-initial-icon-bg: rgba(255, 255, 255, .9);--ci360-initial-icon-color: #505050;--ci360-initial-icon-size: 80px;--ci360-initial-icon-shadow: 0 4px 20px rgba(0, 0, 0, .15);--ci360-spinner-color: rgba(0, 0, 0, .2);--ci360-spinner-accent: #505050;--ci360-spinner-size: 30px;--ci360-fullscreen-bg: #ffffff;--ci360-magnifier-size: 250px;--ci360-magnifier-border: 2px solid rgba(0, 0, 0, .2);--ci360-magnifier-shadow: 0 8px 16px rgba(0, 0, 0, .3);--ci360-focus-color: #0066cc;--ci360-overlay-bg: rgba(255, 255, 255, 1);--ci360-hotspot-color: #00aaff;--ci360-hotspot-border: 2px solid #fff;--ci360-hotspot-size: 18px;--ci360-popper-bg: rgba(255, 255, 255, .95);--ci360-popper-color: #333;--ci360-popper-shadow: 0px 4px 16px rgba(0, 0, 0, .15);--ci360-popper-border-radius: 8px;--ci360-hints-bg: rgba(255, 255, 255, .9);--ci360-hints-color: #333333;--ci360-hints-font-size: 13px;--ci360-hints-border-radius: 20px;--ci360-hints-shadow: 0 2px 12px rgba(0, 0, 0, .1);--ci360-circle-color: #888888;--ci360-timeline-height: 6px;--ci360-timeline-track-bg: rgba(0, 0, 0, .12);--ci360-timeline-dot-size: 18px;--ci360-timeline-dot-color: var(--ci360-hotspot-color);--ci360-timeline-dot-border: 2px solid #fff;--ci360-timeline-indicator-size: 12px;--ci360-timeline-indicator-color: #333333;--ci360-timeline-tooltip-bg: rgba(255, 255, 255, .95);--ci360-timeline-tooltip-color: #333333}.ci360-theme-dark{--ci360-button-bg: rgba(40, 40, 45, .9);--ci360-button-bg-hover: rgba(55, 55, 60, .95);--ci360-button-shadow: 0 2px 8px rgba(0, 0, 0, .4);--ci360-icon-color: #e0e0e0;--ci360-icon-color-hover: #ffffff;--ci360-initial-icon-bg: rgba(40, 40, 45, .9);--ci360-initial-icon-color: #f5f5f5;--ci360-initial-icon-shadow: 0 4px 20px rgba(0, 0, 0, .4);--ci360-spinner-color: rgba(255, 255, 255, .2);--ci360-spinner-accent: #e0e0e0;--ci360-fullscreen-bg: #1a1a1f;--ci360-overlay-bg: rgba(26, 26, 31, 1);--ci360-magnifier-border: 2px solid rgba(255, 255, 255, .2);--ci360-magnifier-shadow: 0 8px 16px rgba(0, 0, 0, .5);--ci360-popper-bg: rgba(40, 40, 45, .95);--ci360-popper-color: #e0e0e0;--ci360-popper-shadow: 0px 4px 16px rgba(0, 0, 0, .4);--ci360-hints-bg: rgba(40, 40, 45, .9);--ci360-hints-color: #e0e0e0;--ci360-hints-shadow: 0 2px 12px rgba(0, 0, 0, .3);--ci360-circle-color: #b0b0b0;--ci360-timeline-track-bg: rgba(255, 255, 255, .15);--ci360-timeline-dot-border: 2px solid rgba(255, 255, 255, .9);--ci360-timeline-indicator-color: #e0e0e0;--ci360-timeline-tooltip-bg: rgba(40, 40, 45, .95);--ci360-timeline-tooltip-color: #e0e0e0}@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:var(--ci360-overlay-bg);opacity:0;transition:all 1s ease-out;z-index:10}.cloudimage-360-button{width:var(--ci360-button-size);height:var(--ci360-button-size);cursor:pointer;transition:transform .15s ease-out,background-color .15s ease-out,box-shadow .15s ease-out;display:flex;align-items:center;justify-content:center;border-radius:var(--ci360-button-border-radius);border:none;background-color:var(--ci360-button-bg);box-shadow:var(--ci360-button-shadow);padding:6px;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.cloudimage-360-button:hover{transform:scale(1.05);background-color:var(--ci360-button-bg-hover)}.cloudimage-360-button:focus{outline:none}.cloudimage-360-button:focus-visible{outline:2px solid var(--ci360-focus-color);outline-offset:2px}.cloudimage-360-button svg{width:var(--ci360-icon-size);height:var(--ci360-icon-size);stroke:var(--ci360-icon-color);transition:stroke .15s ease-out}.cloudimage-360-button:hover svg{stroke:var(--ci360-icon-color-hover)}.cloudimage-initial-icon{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:var(--ci360-initial-icon-size);height:var(--ci360-initial-icon-size);border-radius:50%;background-color:var(--ci360-initial-icon-bg);box-shadow:var(--ci360-initial-icon-shadow);transition:all .3s ease;color:var(--ci360-initial-icon-color);display:flex;align-items:center;justify-content:center;z-index:2;-webkit-user-select:none;-moz-user-select:none;user-select:none;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.cloudimage-initial-icon svg{width:70%;height:70%;color:var(--ci360-initial-icon-color);fill:var(--ci360-initial-icon-color);stroke:var(--ci360-initial-icon-color)}.cloudimage-initial-icon svg path{stroke:var(--ci360-initial-icon-color)}.cloudimage-initial-icon svg text{fill:var(--ci360-initial-icon-color)}.cloudimage-initial-icon:hover{transform:translate(-50%,-50%) scale(1.08)}.cloudimage-loading-spinner{width:var(--ci360-spinner-size);height:var(--ci360-spinner-size);transform:translate(-50%,-50%);border:3px solid var(--ci360-spinner-color);position:absolute;top:15px;left:15px;border-bottom-color:var(--ci360-spinner-accent);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;-moz-user-select:none;user-select:none;transition:.2s all;z-index:2;color:var(--ci360-circle-color)}.cloudimage-360-view-360-circle svg{display:block;width:100%;height:auto}.cloudimage-360-fullscreen-modal{position:fixed;top:0;bottom:0;left:0;right:0;width:100%;height:100%;z-index:999;background-color:var(--ci360-fullscreen-bg)}.cloudimage-360-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.cloudimage-360-hints-overlay{position:absolute;bottom:0;left:0;width:100%;display:flex;align-items:flex-end;justify-content:center;padding-bottom:16px;z-index:50;pointer-events:none;opacity:0;transition:opacity .3s ease}.cloudimage-360-hints-overlay.visible{opacity:1}.cloudimage-360-hints-overlay.hiding{opacity:0}.cloudimage-360-hints-container{display:flex;flex-direction:row;gap:20px;padding:10px 20px;background:var(--ci360-hints-bg);border-radius:var(--ci360-hints-border-radius);box-shadow:var(--ci360-hints-shadow);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.cloudimage-360-hint-item{display:flex;align-items:center;gap:8px;color:var(--ci360-hints-color);font-size:var(--ci360-hints-font-size);font-family:system-ui,-apple-system,sans-serif;white-space:nowrap}.cloudimage-360-hint-item svg{width:16px;height:16px;flex-shrink:0;stroke:var(--ci360-hints-color)}.cloudimage-360-hint-item span{opacity:.9}@media (max-width: 480px){.cloudimage-360-hints-container{flex-direction:column;gap:8px;padding:12px 16px;border-radius:12px}.cloudimage-360-hint-item{font-size:12px}.cloudimage-360-hint-item svg{width:14px;height:14px}.cloudimage-360-initial-icon{width:calc(var(--ci360-initial-icon-size) * .8);height:calc(var(--ci360-initial-icon-size) * .8)}}.cloudimage-360-img-magnifier-glass{background-color:#fff;background-image:radial-gradient(circle at center,#fffc,#f0f0f0e6);background-repeat:no-repeat;position:absolute;border:var(--ci360-magnifier-border);border-radius:50%;line-height:200px;text-align:center;z-index:1000;width:var(--ci360-magnifier-size);height:var(--ci360-magnifier-size);top:-75px;right:-85px;box-shadow:var(--ci360-magnifier-shadow);transition:box-shadow .2s ease;overflow:hidden;pointer-events:none}.cloudimage-360-hotspot-timeline{width:100%;max-width:500px;margin:16px auto 8px;padding:12px 20px;opacity:0;transition:opacity .3s ease;pointer-events:none}.cloudimage-360-hotspot-timeline.visible{opacity:1;pointer-events:auto}.cloudimage-360-hotspot-timeline-track{position:relative;width:100%;height:var(--ci360-timeline-height);background:var(--ci360-timeline-track-bg);border-radius:calc(var(--ci360-timeline-height) / 2)}.cloudimage-360-hotspot-timeline-indicator{position:absolute;top:50%;left:0;width:var(--ci360-timeline-indicator-size);height:var(--ci360-timeline-indicator-size);background:var(--ci360-timeline-indicator-color);border-radius:50%;transform:translate(-50%,-50%);transition:left .1s ease-out;pointer-events:none;box-shadow:0 2px 4px #0003}.cloudimage-360-hotspot-timeline-dot{position:absolute;top:50%;width:var(--ci360-timeline-dot-size);height:var(--ci360-timeline-dot-size);background:var(--ci360-timeline-dot-color);border:var(--ci360-timeline-dot-border);border-radius:50%;transform:translate(-50%,-50%);cursor:pointer;transition:transform .15s ease,box-shadow .15s ease;box-shadow:0 2px 6px #00000040;padding:0;font:inherit;outline:none}.cloudimage-360-hotspot-timeline-dot:hover{transform:translate(-50%,-50%) scale(1.25);box-shadow:0 3px 10px #0000004d}.cloudimage-360-hotspot-timeline-dot:focus-visible{outline:2px solid var(--ci360-focus-color);outline-offset:2px}.cloudimage-360-hotspot-timeline-tooltip{position:absolute;bottom:calc(100% + 10px);left:50%;transform:translate(-50%);background:var(--ci360-timeline-tooltip-bg);color:var(--ci360-timeline-tooltip-color);padding:6px 12px;border-radius:6px;font-size:13px;font-weight:500;white-space:nowrap;opacity:0;visibility:hidden;transition:opacity .2s ease,visibility .2s ease;pointer-events:none;box-shadow:0 2px 8px #00000026;z-index:10}.cloudimage-360-hotspot-timeline-tooltip:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:6px solid transparent;border-top-color:var(--ci360-timeline-tooltip-bg)}.cloudimage-360-hotspot-timeline-tooltip.visible{opacity:1;visibility:visible}@media (max-width: 480px){.cloudimage-360-hotspot-timeline{max-width:none;padding:10px 16px;margin:12px auto 6px}}.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:var(--ci360-hotspot-color);border:var(--ci360-hotspot-border);border-radius:50%;height:var(--ci360-hotspot-size);width:var(--ci360-hotspot-size);box-shadow:0 0 #0af9,0 2px 6px #0003;opacity:0;animation:pulse 2s infinite;transition:transform .2s ease,box-shadow .2s ease;padding:0;cursor:pointer;font:inherit;outline:none}.cloudimage-360-hotspot:focus-visible{outline:2px solid var(--ci360-focus-color, #0066cc);outline-offset:2px;animation:none}.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:var(--ci360-popper-bg);color:var(--ci360-popper-color);padding:10px 15px;border-radius:var(--ci360-popper-border-radius);box-shadow:var(--ci360-popper-shadow);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}
|
|
2
|
-
/*$vite$:1*/`,document.head.appendChild(q);var W=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function lt(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var he="Expected a function",de=NaN,ti="[object Symbol]",ei=/^\s+|\s+$/g,ii=/^[-+]0x[0-9a-f]+$/i,oi=/^0b[01]+$/i,ni=/^0o[0-7]+$/i,si=parseInt,ri=typeof W=="object"&&W&&W.Object===Object&&W,ai=typeof self=="object"&&self&&self.Object===Object&&self,li=ri||ai||Function("return this")(),ci=Object.prototype,hi=ci.toString,di=Math.max,pi=Math.min,jt=function(){return li.Date.now()};function ui(e,t,i){var o,n,s,l,r,a,c=0,h=!1,u=!1,f=!0;if(typeof e!="function")throw new TypeError(he);t=pe(t)||0,Mt(i)&&(h=!!i.leading,u="maxWait"in i,s=u?di(pe(i.maxWait)||0,t):s,f="trailing"in i?!!i.trailing:f);function p(b){var k=o,E=n;return o=n=void 0,c=b,l=e.apply(E,k),l}function x(b){return c=b,r=setTimeout(m,t),h?p(b):l}function g(b){var k=b-a,E=b-c,O=t-k;return u?pi(O,s-E):O}function v(b){var k=b-a,E=b-c;return a===void 0||k>=t||k<0||u&&E>=s}function m(){var b=jt();if(v(b))return y(b);r=setTimeout(m,g(b))}function y(b){return r=void 0,f&&o?p(b):(o=n=void 0,l)}function I(){r!==void 0&&clearTimeout(r),c=0,o=a=n=r=void 0}function w(){return r===void 0?l:y(jt())}function C(){var b=jt(),k=v(b);if(o=arguments,n=this,a=b,k){if(r===void 0)return x(a);if(u)return r=setTimeout(m,t),p(a)}return r===void 0&&(r=setTimeout(m,t)),l}return C.cancel=I,C.flush=w,C}function fi(e,t,i){var o=!0,n=!0;if(typeof e!="function")throw new TypeError(he);return Mt(i)&&(o="leading"in i?!!i.leading:o,n="trailing"in i?!!i.trailing:n),ui(e,t,{leading:o,maxWait:t,trailing:n})}function Mt(e){var t=typeof e;return!!e&&(t=="object"||t=="function")}function mi(e){return!!e&&typeof e=="object"}function vi(e){return typeof e=="symbol"||mi(e)&&hi.call(e)==ti}function pe(e){if(typeof e=="number")return e;if(vi(e))return de;if(Mt(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=Mt(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=e.replace(ei,"");var i=oi.test(e);return i||ni.test(e)?si(e.slice(2),i?2:8):ii.test(e)?de:+e}var gi=fi;const ue=lt(gi),R={SPIN_X:"spin-x",SPIN_Y:"spin-y",SPIN_XY:"spin-xy",SPIN_YX:"spin-yx"},bi=[!1,0,null,void 0,"false","0","null","undefined"],Y={X:"x-axis",Y:"y-axis"},yi=[37,39],wi=[38,40],fe=10,xi=150,me=800,Ii=150,Ci=200,ve=50,ki=50,Oi=5,ge=5,d={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:R.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,hide360Logo:!1,logoSrc:"https://scaleflex.cloudimg.io/v7/filerobot/js-cloudimage-360-view/360_view.svg",inertia:!1,pinchZoom:!0,hints:!0,theme:null,hotspotTimelineOnClick:!0,aspectRatio:null,onReady:null,onLoad:null,onSpin:null,onAutoplayStart:null,onAutoplayStop:null,onFullscreenOpen:null,onFullscreenClose:null,onZoomIn:null,onZoomOut:null,onDragStart:null,onDragEnd:null},Ei=e=>({folder:A(e,"folder",d.folder),apiVersion:A(e,"api-version",d.apiVersion),filenameX:A(e,"filename")||A(e,"filename-x")||d.filenameX,filenameY:A(e,"filename-y",d.filenameY),imageListX:A(e,"image-list-x",d.imageListX),imageListY:A(e,"image-list-y",d.imageListY),indexZeroBase:parseInt(A(e,"index-zero-base",d.indexZeroBase),10),amountX:parseInt(A(e,"amount-x",d.amountX),10),amountY:parseInt(A(e,"amount-y",d.amountY),10),speed:parseInt(A(e,"speed",d.speed),10),dragSpeed:parseInt(A(e,"drag-speed",d.dragSpeed),10),draggable:X(e,"draggable",d.draggable),swipeable:X(e,"swipeable",d.swipeable),keys:X(e,"keys",d.keys),keysReverse:X(e,"keys-reverse",d.keysReverse),autoplay:X(e,"autoplay",d.autoplay),autoplayBehavior:A(e,"autoplay-behavior",d.autoplayBehavior),playOnce:X(e,"play-once",d.playOnce),autoplayReverse:X(e,"autoplay-reverse",d.autoplayReverse),pointerZoom:parseFloat(A(e,"pointer-zoom",d.pointerZoom)),fullscreen:X(e,"fullscreen")||X(e,"full-screen",d.fullscreen),magnifier:parseFloat(A(e,"magnifier",d.magnifier)),bottomCircleOffset:parseInt(A(e,"bottom-circle-offset",d.bottomCircleOffset),10),ciToken:A(e,"responsive",d.ciToken),ciFilters:A(e,"filters",d.ciFilters),ciTransformation:A(e,"transformation",d.ciTransformation),lazyload:X(e,"lazyload",d.lazyload),dragReverse:X(e,"drag-reverse",d.dragReverse),stopAtEdges:X(e,"stop-at-edges",d.stopAtEdges),imageInfo:X(e,"info",d.imageInfo),initialIconShown:!Ht(e,"initial-icon"),bottomCircle:!Ht(e,"bottom-circle"),hide360Logo:X(e,"hide-360-logo",d.hide360Logo),logoSrc:A(e,"logo-src",d.logoSrc),inertia:X(e,"inertia",d.inertia),pinchZoom:X(e,"pinch-zoom",d.pinchZoom),hints:!Ht(e,"hints"),theme:A(e,"theme",d.theme),hotspotTimelineOnClick:!Ht(e,"hotspot-timeline-on-click"),aspectRatio:A(e,"aspect-ratio",d.aspectRatio)}),Si=e=>{const t=[];e.amountX!==void 0&&e.amountX<0&&t.push("amountX should be a positive number"),e.amountY!==void 0&&e.amountY<0&&t.push("amountY should be a positive number"),e.speed!==void 0&&e.speed<=0&&t.push("speed should be a positive number"),e.dragSpeed!==void 0&&e.dragSpeed<=0&&t.push("dragSpeed should be a positive number"),e.pointerZoom!==void 0&&e.pointerZoom!==0&&(e.pointerZoom<1||e.pointerZoom>5)&&t.push("pointerZoom should be between 1 and 5 (or 0 to disable)"),e.magnifier!==void 0&&e.magnifier!==null&&e.magnifier!==0&&(e.magnifier<1||e.magnifier>5)&&t.push("magnifier should be between 1 and 5 (or 0/null to disable)"),!e.folder&&!e.imageListX&&!e.imageListY&&t.push("Either folder or imageListX/imageListY is required"),e.folder&&!e.amountX&&!e.imageListX&&t.push("amountX is required when using folder (unless imageListX is provided)");const i=["spin-x","spin-y","spin-xy","spin-yx"];return e.autoplayBehavior&&!i.includes(e.autoplayBehavior)&&t.push(`autoplayBehavior should be one of: ${i.join(", ")}`),t.forEach(o=>{console.warn(`CloudImage 360: ${o}`)}),t.length===0},Ai=e=>(Si(e),{folder:e.folder||d.folder,apiVersion:e.apiVersion||d.apiVersion,filenameX:e.filenameX||e.filename||d.filenameX,filenameY:e.filenameY||d.filenameY,imageListX:e.imageListX||d.imageListX,imageListY:e.imageListY||d.imageListY,indexZeroBase:parseInt(e.indexZeroBase??d.indexZeroBase,10),amountX:parseInt(e.amountX??d.amountX,10),amountY:parseInt(e.amountY??d.amountY,10),speed:parseInt(e.speed??d.speed,10),draggable:e.draggable??d.draggable,swipeable:e.swipeable??d.swipeable,dragSpeed:parseInt(e.dragSpeed??d.dragSpeed,10),keys:e.keys??d.keys,keysReverse:e.keysReverse??d.keysReverse,autoplay:e.autoplay??d.autoplay,autoplayBehavior:e.autoplayBehavior||d.autoplayBehavior,playOnce:e.playOnce??d.playOnce,autoplayReverse:e.autoplayReverse??d.autoplayReverse,pointerZoom:parseFloat(e.pointerZoom??d.pointerZoom),fullscreen:e.fullscreen??d.fullscreen,magnifier:parseFloat(e.magnifier??d.magnifier),bottomCircleOffset:parseInt(e.bottomCircleOffset??d.bottomCircleOffset,10),ciToken:e.ciToken||d.ciToken,ciFilters:e.ciFilters||d.ciFilters,ciTransformation:e.ciTransformation||d.ciTransformation,lazyload:e.lazyload??d.lazyload,dragReverse:e.dragReverse??d.dragReverse,stopAtEdges:e.stopAtEdges??d.stopAtEdges,imageInfo:e.imageInfo??d.imageInfo,initialIconShown:e.initialIconShown??d.initialIconShown,bottomCircle:e.bottomCircle??d.bottomCircle,hotspots:e.hotspots??d.hotspots,hide360Logo:e.hide360Logo??d.hide360Logo,logoSrc:e.logoSrc||d.logoSrc,inertia:e.inertia??d.inertia,pinchZoom:e.pinchZoom??d.pinchZoom,hints:e.hints??d.hints,theme:e.theme||d.theme,hotspotTimelineOnClick:e.hotspotTimelineOnClick??d.hotspotTimelineOnClick,aspectRatio:e.aspectRatio||d.aspectRatio,onReady:e.onReady??d.onReady,onLoad:e.onLoad??d.onLoad,onSpin:e.onSpin??d.onSpin,onAutoplayStart:e.onAutoplayStart??d.onAutoplayStart,onAutoplayStop:e.onAutoplayStop??d.onAutoplayStop,onFullscreenOpen:e.onFullscreenOpen??d.onFullscreenOpen,onFullscreenClose:e.onFullscreenClose??d.onFullscreenClose,onZoomIn:e.onZoomIn??d.onZoomIn,onZoomOut:e.onZoomOut??d.onZoomOut,onDragStart:e.onDragStart??d.onDragStart,onDragEnd:e.onDragEnd??d.onDragEnd}),A=(e,t,i)=>e.getAttribute(t)||e.getAttribute(`data-${t}`)||i,X=(e,t,i)=>{if(!(e.hasAttribute(t)||e.hasAttribute(`data-${t}`)))return i;const n=A(e,t,null);return n!=="false"&&n!=="0"},Ht=(e,t)=>A(e,t,null)==="false",Li=(e=1)=>{const t=Math.round(window.devicePixelRatio||1);return parseInt(e)*t},Ti=(e,t,i)=>new URL(e).origin.includes("cloudimg")?e:`https://${t}.cloudimg.io/${i}${e}`,Yi=({ciTransformation:e,responsiveWidth:t,ciFilters:i})=>{const o=`width=${t}`,n=e||o,s=i?`&f=${i}`:"";return`${n}${s}`},yt=(e,t)=>{const{folder:i,apiVersion:o,filename:n="",ciParams:s}=e,{ciToken:l,ciFilters:r,ciTransformation:a}=s||{},c=`${i}${n}`;if(!l)return c;const h=bi.includes(o)?null:o,u=h?`${h}/`:"",f=Li(t),p=Ti(c,l,u),x=Yi({ciTransformation:a,responsiveWidth:f,ciFilters:r});return`${p}${x?"?":""}${x}`},Xi=(e,t,i)=>{const[o,n]=e.split("?"),s=`${t}=${encodeURIComponent(i)}`;if(!n)return`${o}?${s}`;const l=new URLSearchParams(n);return l.set(t,i),`${o}?${l.toString()}`},Pi=(e,t)=>Xi(e,"width",t),be=(e,t=0)=>(e+="",e.length>=t?e:new Array(t-e.length+1).join("0")+e),Ri=(e,{amount:t=0,indexZeroBase:i=0}={})=>Array.from({length:t},(o,n)=>e.replace("{index}",be(n+1,i))),Mi=({imagesUrls:e,onFirstImageLoad:t,onImageLoad:i,onAllImagesLoad:o,onError:n,autoplayReverse:s})=>{let l=0,r=0;const a=e.length,c=[],h=[],u=(m,y,I=!1)=>{const w={message:`Failed to load image: ${m}`,url:m,index:y,isFirstImage:I};h.push(w),r++,n==null||n({error:w,errorCount:r,totalImages:a,errors:h})},f=()=>{l===a&&(o==null||o(c,{errorCount:r,errors:h}))},p=(m,y)=>{const I=new Image;I.crossOrigin="anonymous",I.src=m,I.onload=async()=>{try{const w=await createImageBitmap(I),C={src:m,bitmapImage:w,naturalWidth:I.naturalWidth,naturalHeight:I.naturalHeight};l++,c[y]=C,i==null||i(C,y),f()}catch{l++,u(m,y),f()}},I.onerror=()=>{l++,u(m,y),f()}},x=new Image,g=s?e.length-1:0,v=e[g];x.crossOrigin="anonymous",x.src=v,x.onload=async()=>{try{const m=await createImageBitmap(x),y={src:v,bitmapImage:m,naturalWidth:x.naturalWidth,naturalHeight:x.naturalHeight};c[g]=y,l++,t==null||t(y),i==null||i(y,g);for(let I=0;I<e.length;I++)I!==g&&p(e[I],I);f()}catch{l++,u(v,g,!0);for(let y=0;y<e.length;y++)y!==g&&p(e[y],y);f()}},x.onerror=()=>{l++,u(v,g,!0);for(let m=0;m<e.length;m++)m!==g&&p(e[m],m);f()}},ye=({cdnPathX:e,cdnPathY:t,configX:i,configY:o,onFirstImageLoad:n,onImageLoad:s,onAllImagesLoad:l,onError:r})=>{let a={x:!1,y:!1},c=[],h=[],u={errorCount:0,errors:[]},f={errorCount:0,errors:[]};const p=e||i.imageList.length,x=t||o.imageList.length,g=()=>{if(a.x&&a.y){const m={errorCount:u.errorCount+f.errorCount,errors:[...u.errors,...f.errors]};l==null||l(c,h,m)}},v=({cdnPath:m,config:y,orientation:I,loadedImages:w,loadStats:C,onFirstImageLoad:b})=>{const k=I===Y.X,E=y.imageList.length?y.imageList:Ri(m,y);Mi({imagesUrls:E,onFirstImageLoad:b,onImageLoad:(O,S)=>{s==null||s(O,S,I),w[S]=O},onError:O=>{r==null||r({...O,orientation:I})},onAllImagesLoad:(O,S)=>{w.length=0,O.forEach((L,M)=>{L&&(w[M]=L)}),C.errorCount=S.errorCount,C.errors=S.errors.map(L=>({...L,orientation:I})),a[k?"x":"y"]=!0,g()},autoplayReverse:y.autoplayReverse})};p?v({cdnPath:e,config:i,orientation:Y.X,loadedImages:c,loadStats:u,onFirstImageLoad:n}):a.x=!0,x?v({cdnPath:t,config:o,orientation:Y.Y,loadedImages:h,loadStats:f,onFirstImageLoad:p?void 0:n}):a.y=!0,!p&&!x&&g()},Hi=`
|
|
1
|
+
var CI360=function(){"use strict";var rn=Object.defineProperty;var an=(q,z,rt)=>z in q?rn(q,z,{enumerable:!0,configurable:!0,writable:!0,value:rt}):q[z]=rt;var si=(q,z,rt)=>an(q,typeof z!="symbol"?z+"":z,rt);var q=document.createElement("style");q.textContent=`:root{--ci360-button-bg: rgba(255, 255, 255, .9);--ci360-button-bg-hover: rgba(255, 255, 255, 1);--ci360-button-size: 40px;--ci360-button-border-radius: 6px;--ci360-button-shadow: 0 2px 8px rgba(0, 0, 0, .15);--ci360-icon-color: #505050;--ci360-icon-color-hover: #333333;--ci360-icon-size: 20px;--ci360-initial-icon-bg: rgba(255, 255, 255, .9);--ci360-initial-icon-color: #505050;--ci360-initial-icon-size: 80px;--ci360-initial-icon-shadow: 0 4px 20px rgba(0, 0, 0, .15);--ci360-spinner-color: rgba(0, 0, 0, .2);--ci360-spinner-accent: #505050;--ci360-spinner-size: 30px;--ci360-fullscreen-bg: #ffffff;--ci360-magnifier-size: 250px;--ci360-magnifier-border: 2px solid rgba(0, 0, 0, .2);--ci360-magnifier-shadow: 0 8px 16px rgba(0, 0, 0, .3);--ci360-focus-color: #0066cc;--ci360-overlay-bg: rgba(255, 255, 255, 1);--ci360-hotspot-color: #00aaff;--ci360-hotspot-border: 2px solid #fff;--ci360-hotspot-size: 18px;--ci360-popper-bg: rgba(255, 255, 255, .95);--ci360-popper-color: #333;--ci360-popper-shadow: 0px 4px 16px rgba(0, 0, 0, .15);--ci360-popper-border-radius: 8px;--ci360-hints-bg: rgba(255, 255, 255, .9);--ci360-hints-color: #333333;--ci360-hints-font-size: 13px;--ci360-hints-border-radius: 20px;--ci360-hints-shadow: 0 2px 12px rgba(0, 0, 0, .1);--ci360-circle-color: #888888;--ci360-timeline-height: 6px;--ci360-timeline-track-bg: rgba(0, 0, 0, .12);--ci360-timeline-dot-size: 18px;--ci360-timeline-dot-color: var(--ci360-hotspot-color);--ci360-timeline-dot-border: 2px solid #fff;--ci360-timeline-indicator-size: 12px;--ci360-timeline-indicator-color: #333333;--ci360-timeline-tooltip-bg: rgba(255, 255, 255, .95);--ci360-timeline-tooltip-color: #333333}.ci360-theme-dark{--ci360-button-bg: rgba(40, 40, 45, .9);--ci360-button-bg-hover: rgba(55, 55, 60, .95);--ci360-button-shadow: 0 2px 8px rgba(0, 0, 0, .4);--ci360-icon-color: #e0e0e0;--ci360-icon-color-hover: #ffffff;--ci360-initial-icon-bg: rgba(40, 40, 45, .9);--ci360-initial-icon-color: #f5f5f5;--ci360-initial-icon-shadow: 0 4px 20px rgba(0, 0, 0, .4);--ci360-spinner-color: rgba(255, 255, 255, .2);--ci360-spinner-accent: #e0e0e0;--ci360-fullscreen-bg: #1a1a1f;--ci360-overlay-bg: rgba(26, 26, 31, 1);--ci360-magnifier-border: 2px solid rgba(255, 255, 255, .2);--ci360-magnifier-shadow: 0 8px 16px rgba(0, 0, 0, .5);--ci360-popper-bg: rgba(40, 40, 45, .95);--ci360-popper-color: #e0e0e0;--ci360-popper-shadow: 0px 4px 16px rgba(0, 0, 0, .4);--ci360-hints-bg: rgba(40, 40, 45, .9);--ci360-hints-color: #e0e0e0;--ci360-hints-shadow: 0 2px 12px rgba(0, 0, 0, .3);--ci360-circle-color: #b0b0b0;--ci360-timeline-track-bg: rgba(255, 255, 255, .15);--ci360-timeline-dot-border: 2px solid rgba(255, 255, 255, .9);--ci360-timeline-indicator-color: #e0e0e0;--ci360-timeline-tooltip-bg: rgba(40, 40, 45, .95);--ci360-timeline-tooltip-color: #e0e0e0}@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:var(--ci360-overlay-bg);opacity:0;transition:all 1s ease-out;z-index:10}.cloudimage-360-button{width:var(--ci360-button-size);height:var(--ci360-button-size);cursor:pointer;transition:transform .15s ease-out,background-color .15s ease-out,box-shadow .15s ease-out;display:flex;align-items:center;justify-content:center;border-radius:var(--ci360-button-border-radius);border:none;background-color:var(--ci360-button-bg);box-shadow:var(--ci360-button-shadow);padding:6px;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.cloudimage-360-button:hover{transform:scale(1.05);background-color:var(--ci360-button-bg-hover)}.cloudimage-360-button:focus{outline:none}.cloudimage-360-button:focus-visible{outline:2px solid var(--ci360-focus-color);outline-offset:2px}.cloudimage-360-button svg{width:var(--ci360-icon-size);height:var(--ci360-icon-size);stroke:var(--ci360-icon-color);transition:stroke .15s ease-out}.cloudimage-360-button:hover svg{stroke:var(--ci360-icon-color-hover)}.cloudimage-initial-icon{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:var(--ci360-initial-icon-size);height:var(--ci360-initial-icon-size);border-radius:50%;background-color:var(--ci360-initial-icon-bg);box-shadow:var(--ci360-initial-icon-shadow);transition:all .3s ease;color:var(--ci360-initial-icon-color);display:flex;align-items:center;justify-content:center;z-index:2;-webkit-user-select:none;-moz-user-select:none;user-select:none;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.cloudimage-initial-icon svg{width:70%;height:70%;color:var(--ci360-initial-icon-color);fill:var(--ci360-initial-icon-color);stroke:var(--ci360-initial-icon-color)}.cloudimage-initial-icon svg path{stroke:var(--ci360-initial-icon-color)}.cloudimage-initial-icon svg text{fill:var(--ci360-initial-icon-color)}.cloudimage-initial-icon:hover{transform:translate(-50%,-50%) scale(1.08)}.cloudimage-loading-spinner{width:var(--ci360-spinner-size);height:var(--ci360-spinner-size);transform:translate(-50%,-50%);border:3px solid var(--ci360-spinner-color);position:absolute;top:15px;left:15px;border-bottom-color:var(--ci360-spinner-accent);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;-moz-user-select:none;user-select:none;transition:.2s all;z-index:2;color:var(--ci360-circle-color)}.cloudimage-360-view-360-circle svg{display:block;width:100%;height:auto}.cloudimage-360-fullscreen-modal{position:fixed;top:0;bottom:0;left:0;right:0;width:100%;height:100%;z-index:999;background-color:var(--ci360-fullscreen-bg)}.cloudimage-360-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.cloudimage-360-hints-overlay{position:absolute;bottom:0;left:0;width:100%;display:flex;align-items:flex-end;justify-content:center;padding-bottom:16px;z-index:50;pointer-events:none;opacity:0;transition:opacity .3s ease}.cloudimage-360-hints-overlay.visible{opacity:1}.cloudimage-360-hints-overlay.hiding{opacity:0}.cloudimage-360-hints-container{display:flex;flex-direction:row;gap:20px;padding:10px 20px;background:var(--ci360-hints-bg);border-radius:var(--ci360-hints-border-radius);box-shadow:var(--ci360-hints-shadow);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.cloudimage-360-hint-item{display:flex;align-items:center;gap:8px;color:var(--ci360-hints-color);font-size:var(--ci360-hints-font-size);font-family:system-ui,-apple-system,sans-serif;white-space:nowrap}.cloudimage-360-hint-item svg{width:16px;height:16px;flex-shrink:0;stroke:var(--ci360-hints-color)}.cloudimage-360-hint-item span{opacity:.9}@media (max-width: 480px){.cloudimage-360-hints-container{flex-direction:column;gap:8px;padding:12px 16px;border-radius:12px}.cloudimage-360-hint-item{font-size:12px}.cloudimage-360-hint-item svg{width:14px;height:14px}.cloudimage-360-initial-icon{width:calc(var(--ci360-initial-icon-size) * .8);height:calc(var(--ci360-initial-icon-size) * .8)}}.cloudimage-360-img-magnifier-glass{background-color:#fff;background-image:radial-gradient(circle at center,#fffc,#f0f0f0e6);background-repeat:no-repeat;position:absolute;border:var(--ci360-magnifier-border);border-radius:50%;line-height:200px;text-align:center;z-index:1000;width:var(--ci360-magnifier-size);height:var(--ci360-magnifier-size);top:-75px;right:-85px;box-shadow:var(--ci360-magnifier-shadow);transition:box-shadow .2s ease;overflow:hidden;pointer-events:none}.cloudimage-360-hotspot-timeline{width:100%;max-width:500px;margin:16px auto 8px;padding:12px 20px;opacity:0;transition:opacity .3s ease;pointer-events:none}.cloudimage-360-hotspot-timeline.visible{opacity:1;pointer-events:auto}.cloudimage-360-hotspot-timeline-track{position:relative;width:100%;height:var(--ci360-timeline-height);background:var(--ci360-timeline-track-bg);border-radius:calc(var(--ci360-timeline-height) / 2)}.cloudimage-360-hotspot-timeline-indicator{position:absolute;top:50%;left:0;width:var(--ci360-timeline-indicator-size);height:var(--ci360-timeline-indicator-size);background:var(--ci360-timeline-indicator-color);border-radius:50%;transform:translate(-50%,-50%);transition:left .1s ease-out;pointer-events:none;box-shadow:0 2px 4px #0003}.cloudimage-360-hotspot-timeline-dot{position:absolute;top:50%;width:var(--ci360-timeline-dot-size);height:var(--ci360-timeline-dot-size);background:var(--ci360-timeline-dot-color);border:var(--ci360-timeline-dot-border);border-radius:50%;transform:translate(-50%,-50%);cursor:pointer;transition:transform .15s ease,box-shadow .15s ease;box-shadow:0 2px 6px #00000040;padding:0;font:inherit;outline:none}.cloudimage-360-hotspot-timeline-dot:hover{transform:translate(-50%,-50%) scale(1.25);box-shadow:0 3px 10px #0000004d}.cloudimage-360-hotspot-timeline-dot:focus-visible{outline:2px solid var(--ci360-focus-color);outline-offset:2px}.cloudimage-360-hotspot-timeline-tooltip{position:absolute;bottom:calc(100% + 10px);left:50%;transform:translate(-50%);background:var(--ci360-timeline-tooltip-bg);color:var(--ci360-timeline-tooltip-color);padding:6px 12px;border-radius:6px;font-size:13px;font-weight:500;white-space:nowrap;opacity:0;visibility:hidden;transition:opacity .2s ease,visibility .2s ease;pointer-events:none;box-shadow:0 2px 8px #00000026;z-index:10}.cloudimage-360-hotspot-timeline-tooltip:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:6px solid transparent;border-top-color:var(--ci360-timeline-tooltip-bg)}.cloudimage-360-hotspot-timeline-tooltip.visible{opacity:1;visibility:visible}@media (max-width: 480px){.cloudimage-360-hotspot-timeline{max-width:none;padding:10px 16px;margin:12px auto 6px}}.cloudimage-360-fullscreen-modal .cloudimage-360-hotspot-timeline{position:absolute;bottom:0;left:0;right:0;max-width:none;margin:0;padding:24px 40px 20px;background:linear-gradient(to top,rgba(0,0,0,.6) 0%,rgba(0,0,0,.3) 60%,transparent 100%);z-index:200}.cloudimage-360-fullscreen-modal .cloudimage-360-hotspot-timeline-track{max-width:600px;margin:0 auto;background:#ffffff4d}.cloudimage-360-fullscreen-modal .cloudimage-360-hotspot-timeline-indicator{background:#fff;box-shadow:0 2px 6px #0006}.cloudimage-360-fullscreen-modal .cloudimage-360-hotspot-timeline-dot{border-color:#fff;box-shadow:0 2px 8px #0006}.cloudimage-360-fullscreen-modal .cloudimage-360-hotspot-timeline-tooltip{bottom:calc(100% + 20px)}.cloudimage-360-fullscreen-modal .cloudimage-360-hints-overlay{padding-bottom:42px}.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:var(--ci360-hotspot-color);border:var(--ci360-hotspot-border);border-radius:50%;height:var(--ci360-hotspot-size);width:var(--ci360-hotspot-size);box-shadow:0 0 #0af9,0 2px 6px #0003;opacity:0;animation:pulse 2s infinite;transition:transform .2s ease,box-shadow .2s ease;padding:0;cursor:pointer;font:inherit;outline:none}.cloudimage-360-hotspot:focus-visible{outline:2px solid var(--ci360-focus-color, #0066cc);outline-offset:2px;animation:none}.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:var(--ci360-popper-bg);color:var(--ci360-popper-color);padding:10px 15px;border-radius:var(--ci360-popper-border-radius);box-shadow:var(--ci360-popper-shadow);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}
|
|
2
|
+
/*$vite$:1*/`,document.head.appendChild(q);var z=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function rt(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var de="Expected a function",pe=NaN,ni="[object Symbol]",ri=/^\s+|\s+$/g,ai=/^[-+]0x[0-9a-f]+$/i,li=/^0b[01]+$/i,ci=/^0o[0-7]+$/i,hi=parseInt,di=typeof z=="object"&&z&&z.Object===Object&&z,pi=typeof self=="object"&&self&&self.Object===Object&&self,ui=di||pi||Function("return this")(),mi=Object.prototype,fi=mi.toString,gi=Math.max,vi=Math.min,$t=function(){return ui.Date.now()};function bi(e,t,i){var o,s,n,l,r,a,c=0,h=!1,p=!1,f=!0;if(typeof e!="function")throw new TypeError(de);t=ue(t)||0,Yt(i)&&(h=!!i.leading,p="maxWait"in i,n=p?gi(ue(i.maxWait)||0,t):n,f="trailing"in i?!!i.trailing:f);function u(m){var v=o,I=s;return o=s=void 0,c=m,l=e.apply(I,v),l}function x(m){return c=m,r=setTimeout(k,t),h?u(m):l}function y(m){var v=m-a,I=m-c,E=t-v;return p?vi(E,n-I):E}function g(m){var v=m-a,I=m-c;return a===void 0||v>=t||v<0||p&&I>=n}function k(){var m=$t();if(g(m))return O(m);r=setTimeout(k,y(m))}function O(m){return r=void 0,f&&o?u(m):(o=s=void 0,l)}function w(){r!==void 0&&clearTimeout(r),c=0,o=a=s=r=void 0}function b(){return r===void 0?l:O($t())}function C(){var m=$t(),v=g(m);if(o=arguments,s=this,a=m,v){if(r===void 0)return x(a);if(p)return r=setTimeout(k,t),u(a)}return r===void 0&&(r=setTimeout(k,t)),l}return C.cancel=w,C.flush=b,C}function yi(e,t,i){var o=!0,s=!0;if(typeof e!="function")throw new TypeError(de);return Yt(i)&&(o="leading"in i?!!i.leading:o,s="trailing"in i?!!i.trailing:s),bi(e,t,{leading:o,maxWait:t,trailing:s})}function Yt(e){var t=typeof e;return!!e&&(t=="object"||t=="function")}function wi(e){return!!e&&typeof e=="object"}function xi(e){return typeof e=="symbol"||wi(e)&&fi.call(e)==ni}function ue(e){if(typeof e=="number")return e;if(xi(e))return pe;if(Yt(e)){var t=typeof e.valueOf=="function"?e.valueOf():e;e=Yt(t)?t+"":t}if(typeof e!="string")return e===0?e:+e;e=e.replace(ri,"");var i=li.test(e);return i||ci.test(e)?hi(e.slice(2),i?2:8):ai.test(e)?pe:+e}var Ii=yi;const me=rt(Ii),X={SPIN_X:"spin-x",SPIN_Y:"spin-y",SPIN_XY:"spin-xy",SPIN_YX:"spin-yx"},Ci=[!1,0,null,void 0,"false","0","null","undefined"],P={X:"x-axis",Y:"y-axis"},ki=[37,39],Oi=[38,40],fe=typeof navigator<"u"&&/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)?32:10,Ei=150,Xt=800,Ai=150,Si=200,ge=50,Ti=50,Li=5,ve=5,d={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:X.SPIN_X,playOnce:!1,autoplayReverse:!1,pointerZoom:0,pointerZoomTrigger:"dblclick",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,hotspotTrigger:"hover",hide360Logo:!1,logoSrc:"https://scaleflex.cloudimg.io/v7/filerobot/js-cloudimage-360-view/360_view.svg",inertia:!1,pinchZoom:!0,hints:!0,theme:null,hotspotTimelineOnClick:!0,aspectRatio:null,onReady:null,onLoad:null,onSpin:null,onAutoplayStart:null,onAutoplayStop:null,onFullscreenOpen:null,onFullscreenClose:null,onZoomIn:null,onZoomOut:null,onDragStart:null,onDragEnd:null},Pi=e=>({folder:S(e,"folder",d.folder),apiVersion:S(e,"api-version",d.apiVersion),filenameX:S(e,"filename")||S(e,"filename-x")||d.filenameX,filenameY:S(e,"filename-y",d.filenameY),imageListX:S(e,"image-list-x",d.imageListX),imageListY:S(e,"image-list-y",d.imageListY),indexZeroBase:parseInt(S(e,"index-zero-base",d.indexZeroBase),10),amountX:parseInt(S(e,"amount-x",d.amountX),10),amountY:parseInt(S(e,"amount-y",d.amountY),10),speed:parseInt(S(e,"speed",d.speed),10),dragSpeed:parseInt(S(e,"drag-speed",d.dragSpeed),10),draggable:M(e,"draggable",d.draggable),swipeable:M(e,"swipeable",d.swipeable),keys:M(e,"keys",d.keys),keysReverse:M(e,"keys-reverse",d.keysReverse),autoplay:M(e,"autoplay",d.autoplay),autoplayBehavior:S(e,"autoplay-behavior",d.autoplayBehavior),playOnce:M(e,"play-once",d.playOnce),autoplayReverse:M(e,"autoplay-reverse",d.autoplayReverse),pointerZoom:parseFloat(S(e,"pointer-zoom",d.pointerZoom)),pointerZoomTrigger:S(e,"pointer-zoom-trigger",d.pointerZoomTrigger),fullscreen:M(e,"fullscreen")||M(e,"full-screen",d.fullscreen),magnifier:parseFloat(S(e,"magnifier",d.magnifier)),bottomCircleOffset:parseInt(S(e,"bottom-circle-offset",d.bottomCircleOffset),10),ciToken:S(e,"responsive",d.ciToken),ciFilters:S(e,"filters",d.ciFilters),ciTransformation:S(e,"transformation",d.ciTransformation),lazyload:M(e,"lazyload",d.lazyload),dragReverse:M(e,"drag-reverse",d.dragReverse),stopAtEdges:M(e,"stop-at-edges",d.stopAtEdges),imageInfo:M(e,"info",d.imageInfo),initialIconShown:!Rt(e,"initial-icon"),bottomCircle:!Rt(e,"bottom-circle"),hide360Logo:M(e,"hide-360-logo",d.hide360Logo),logoSrc:S(e,"logo-src",d.logoSrc),inertia:M(e,"inertia",d.inertia),pinchZoom:M(e,"pinch-zoom",d.pinchZoom),hints:!Rt(e,"hints"),theme:S(e,"theme",d.theme),hotspotTrigger:S(e,"hotspot-trigger",d.hotspotTrigger),hotspotTimelineOnClick:!Rt(e,"hotspot-timeline-on-click"),aspectRatio:S(e,"aspect-ratio",d.aspectRatio)}),Mi=e=>{const t=[];e.amountX!==void 0&&e.amountX<0&&t.push("amountX should be a positive number"),e.amountY!==void 0&&e.amountY<0&&t.push("amountY should be a positive number"),e.speed!==void 0&&e.speed<=0&&t.push("speed should be a positive number"),e.dragSpeed!==void 0&&e.dragSpeed<=0&&t.push("dragSpeed should be a positive number"),e.pointerZoom!==void 0&&e.pointerZoom!==0&&(e.pointerZoom<1||e.pointerZoom>5)&&t.push("pointerZoom should be between 1 and 5 (or 0 to disable)"),e.magnifier!==void 0&&e.magnifier!==null&&e.magnifier!==0&&(e.magnifier<1||e.magnifier>5)&&t.push("magnifier should be between 1 and 5 (or 0/null to disable)"),!e.folder&&!e.imageListX&&!e.imageListY&&t.push("Either folder or imageListX/imageListY is required"),e.folder&&!e.amountX&&!e.imageListX&&t.push("amountX is required when using folder (unless imageListX is provided)");const i=["spin-x","spin-y","spin-xy","spin-yx"];return e.autoplayBehavior&&!i.includes(e.autoplayBehavior)&&t.push(`autoplayBehavior should be one of: ${i.join(", ")}`),t.forEach(o=>{console.warn(`CloudImage 360: ${o}`)}),t.length===0},Yi=e=>(Mi(e),{folder:e.folder||d.folder,apiVersion:e.apiVersion||d.apiVersion,filenameX:e.filenameX||e.filename||d.filenameX,filenameY:e.filenameY||d.filenameY,imageListX:e.imageListX||d.imageListX,imageListY:e.imageListY||d.imageListY,indexZeroBase:parseInt(e.indexZeroBase??d.indexZeroBase,10),amountX:parseInt(e.amountX??d.amountX,10),amountY:parseInt(e.amountY??d.amountY,10),speed:parseInt(e.speed??d.speed,10),draggable:e.draggable??d.draggable,swipeable:e.swipeable??d.swipeable,dragSpeed:parseInt(e.dragSpeed??d.dragSpeed,10),keys:e.keys??d.keys,keysReverse:e.keysReverse??d.keysReverse,autoplay:e.autoplay??d.autoplay,autoplayBehavior:e.autoplayBehavior||d.autoplayBehavior,playOnce:e.playOnce??d.playOnce,autoplayReverse:e.autoplayReverse??d.autoplayReverse,pointerZoom:parseFloat(e.pointerZoom??d.pointerZoom),pointerZoomTrigger:e.pointerZoomTrigger||d.pointerZoomTrigger,fullscreen:e.fullscreen??d.fullscreen,magnifier:parseFloat(e.magnifier??d.magnifier),bottomCircleOffset:parseInt(e.bottomCircleOffset??d.bottomCircleOffset,10),ciToken:e.ciToken||d.ciToken,ciFilters:e.ciFilters||d.ciFilters,ciTransformation:e.ciTransformation||d.ciTransformation,lazyload:e.lazyload??d.lazyload,dragReverse:e.dragReverse??d.dragReverse,stopAtEdges:e.stopAtEdges??d.stopAtEdges,imageInfo:e.imageInfo??d.imageInfo,initialIconShown:e.initialIconShown??d.initialIconShown,bottomCircle:e.bottomCircle??d.bottomCircle,hotspots:e.hotspots??d.hotspots,hotspotTrigger:e.hotspotTrigger||d.hotspotTrigger,hide360Logo:e.hide360Logo??d.hide360Logo,logoSrc:e.logoSrc||d.logoSrc,inertia:e.inertia??d.inertia,pinchZoom:e.pinchZoom??d.pinchZoom,hints:e.hints??d.hints,theme:e.theme||d.theme,hotspotTimelineOnClick:e.hotspotTimelineOnClick??d.hotspotTimelineOnClick,aspectRatio:e.aspectRatio||d.aspectRatio,onReady:e.onReady??d.onReady,onLoad:e.onLoad??d.onLoad,onSpin:e.onSpin??d.onSpin,onAutoplayStart:e.onAutoplayStart??d.onAutoplayStart,onAutoplayStop:e.onAutoplayStop??d.onAutoplayStop,onFullscreenOpen:e.onFullscreenOpen??d.onFullscreenOpen,onFullscreenClose:e.onFullscreenClose??d.onFullscreenClose,onZoomIn:e.onZoomIn??d.onZoomIn,onZoomOut:e.onZoomOut??d.onZoomOut,onDragStart:e.onDragStart??d.onDragStart,onDragEnd:e.onDragEnd??d.onDragEnd}),S=(e,t,i)=>e.getAttribute(t)||e.getAttribute(`data-${t}`)||i,M=(e,t,i)=>{if(!(e.hasAttribute(t)||e.hasAttribute(`data-${t}`)))return i;const s=S(e,t,null);return s!=="false"&&s!=="0"},Rt=(e,t)=>S(e,t,null)==="false",Xi=(e=1)=>{const t=Math.round(window.devicePixelRatio||1);return parseInt(e)*t},Ri=(e,t,i)=>new URL(e).origin.includes("cloudimg")?e:`https://${t}.cloudimg.io/${i}${e}`,Hi=({ciTransformation:e,responsiveWidth:t,ciFilters:i})=>{const o=`width=${t}`,s=e||o,n=i?`&f=${i}`:"";return`${s}${n}`},xt=(e,t)=>{const{folder:i,apiVersion:o,filename:s="",ciParams:n}=e,{ciToken:l,ciFilters:r,ciTransformation:a}=n||{},c=`${i}${s}`;if(!l||!t)return c;const h=Ci.includes(o)?null:o,p=h?`${h}/`:"",f=Xi(t),u=Ri(c,l,p),x=Hi({ciTransformation:a,responsiveWidth:f,ciFilters:r});return`${u}${x?"?":""}${x}`},Zi=(e,t,i)=>{const[o,s]=e.split("?"),n=`${t}=${encodeURIComponent(i)}`;if(!s)return`${o}?${n}`;const l=new URLSearchParams(s);return l.set(t,i),`${o}?${l.toString()}`},Di=(e,t)=>Zi(e,"width",t),be=(e,t=0)=>(e+="",e.length>=t?e:new Array(t-e.length+1).join("0")+e),Bi=(e,{amount:t=0,indexZeroBase:i=0}={})=>Array.from({length:t},(o,s)=>e.replace("{index}",be(s+1,i))),zi=typeof navigator<"u"&&/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)?3:6,Wi=({imagesUrls:e,onFirstImageLoad:t,onImageLoad:i,onAllImagesLoad:o,onError:s,autoplayReverse:n})=>{let l=0,r=0;const a=e.length,c=[],h=[];let p=0,f=0;const u=[],x=(m,v,I=!1)=>{const E={message:`Failed to load image: ${m}`,url:m,index:v,isFirstImage:I};h.push(E),r++,s==null||s({error:E,errorCount:r,totalImages:a,errors:h})},y=()=>{l===a&&(o==null||o(c,{errorCount:r,errors:h}))},g=()=>{for(;p<zi&&f<u.length;){const m=u[f];f++,k(e[m],m)}},k=(m,v)=>{p++;const I=new Image;I.crossOrigin="anonymous",I.src=m,I.onload=async()=>{try{const E=await createImageBitmap(I),A={src:m,bitmapImage:E,naturalWidth:I.naturalWidth,naturalHeight:I.naturalHeight};I.onload=null,I.onerror=null,I.src="",l++,p--,c[v]=A,i==null||i(A,v),y(),g()}catch{I.onload=null,I.onerror=null,I.src="",l++,p--,x(m,v),y(),g()}},I.onerror=()=>{I.onload=null,I.onerror=null,I.src="",l++,p--,x(m,v),y(),g()}},O=m=>{for(let v=0;v<e.length;v++)v!==m&&u.push(v);f=0,g()},w=new Image,b=n?e.length-1:0,C=e[b];w.crossOrigin="anonymous",w.src=C,w.onload=async()=>{try{const m=await createImageBitmap(w),v={src:C,bitmapImage:m,naturalWidth:w.naturalWidth,naturalHeight:w.naturalHeight};w.onload=null,w.onerror=null,w.src="",c[b]=v,l++,t==null||t(v),i==null||i(v,b),a===1?y():O(b)}catch{w.onload=null,w.onerror=null,w.src="",l++,x(C,b,!0),a===1?y():O(b)}},w.onerror=()=>{w.onload=null,w.onerror=null,w.src="",l++,x(C,b,!0),a===1?y():O(b)}},ye=({cdnPathX:e,cdnPathY:t,configX:i,configY:o,onFirstImageLoad:s,onImageLoad:n,onAllImagesLoad:l,onError:r})=>{let a={x:!1,y:!1},c=[],h=[],p={errorCount:0,errors:[]},f={errorCount:0,errors:[]};const u=e||i.imageList.length,x=t||o.imageList.length,y=()=>{if(a.x&&a.y){const k={errorCount:p.errorCount+f.errorCount,errors:[...p.errors,...f.errors]};l==null||l(c,h,k)}},g=({cdnPath:k,config:O,orientation:w,loadedImages:b,loadStats:C,onFirstImageLoad:m})=>{const v=w===P.X,I=O.imageList.length?O.imageList:Bi(k,O);Wi({imagesUrls:I,onFirstImageLoad:m,onImageLoad:(E,A)=>{n==null||n(E,A,w),b[A]=E},onError:E=>{r==null||r({...E,orientation:w})},onAllImagesLoad:(E,A)=>{b.length=0,E.forEach((T,R)=>{T&&(b[R]=T)}),C.errorCount=A.errorCount,C.errors=A.errors.map(T=>({...T,orientation:w})),a[v?"x":"y"]=!0,y()},autoplayReverse:O.autoplayReverse})};u?g({cdnPath:e,config:i,orientation:P.X,loadedImages:c,loadStats:p,onFirstImageLoad:s}):a.x=!0,x?g({cdnPath:t,config:o,orientation:P.Y,loadedImages:h,loadStats:f,onFirstImageLoad:u?void 0:s}):a.y=!0,!u&&!x&&y()},Ni=`
|
|
3
3
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1052 156" aria-hidden="true">
|
|
4
4
|
<path fill="currentColor" d="M409.9,145.6c-42.7-1.7-85.5-4.4-128.1-8.4c-21.3-2-42.6-4.3-63.8-7.1c-21.2-2.8-42.4-5.9-63.4-9.7c-21.1-3.8-42-8.2-62.7-13.7c-10.3-2.8-20.6-5.8-30.7-9.4c-10.1-3.5-20.1-7.6-29.5-12.7c-4.7-2.6-9.3-5.4-13.5-8.8c-2.1-1.7-4-3.6-5.8-5.6c-1.8-2-3.3-4.3-4.3-6.8c-1.1-2.5-1.6-5.3-1.4-8c0.2-2.7,1.1-5.4,2.4-7.7c2.7-4.8,6.7-8.5,11-11.7c8.6-6.4,18.4-10.9,28.3-15c9.9-4,20.1-7.3,30.4-10.3c-10.2,3.1-20.4,6.5-30.3,10.5c-9.8,4.1-19.6,8.7-28.1,15.1c-4.2,3.2-8.2,6.9-10.7,11.6c-1.2,2.3-2.1,4.8-2.3,7.5c-0.1,2.6,0.4,5.2,1.4,7.6c2.1,4.8,5.9,8.7,10,12.1c4.1,3.3,8.7,6.1,13.4,8.6c9.4,5,19.4,8.9,29.4,12.4c10.1,3.5,20.4,6.4,30.7,9.1c20.7,5.3,41.6,9.5,62.7,13.2c21,3.6,42.2,6.6,63.4,9.2c21.2,2.6,42.5,4.8,63.7,6.6c42.6,3.7,85.2,6,127.9,7.4L409.9,145.6z"/>
|
|
5
5
|
<path fill="currentColor" d="M977.1,11.6c13.8,4.1,27.4,8.8,40.4,15.2c6.4,3.2,12.7,6.9,18.3,11.5c2.7,2.4,5.3,5,7.3,8c2,3,3.3,6.6,3.3,10.3c0,3.7-1.4,7.2-3.3,10.3c-2,3.1-4.5,5.7-7.3,8.1c-2.7,2.4-5.7,4.4-8.8,6.3c-1.6,0.9-3.1,1.9-4.7,2.7l-2.4,1.3l-2.4,1.2C1004.5,93,990.8,97.8,977,102c-6.9,2.1-13.8,4-20.8,5.8c-7,1.8-14,3.5-21,5c-14.1,3.1-28.2,5.9-42.4,8.3c-28.4,4.9-57,8.8-85.6,12c-57.3,6.4-114.8,10.2-172.4,12.2c-57.6,2-115.2,2.3-172.9,0.8l0.1-4c57.5,1.8,115.1,1.9,172.6,0.2c57.5-1.7,115-5.2,172.3-11.2c28.6-3.1,57.2-6.7,85.6-11.5c14.2-2.4,28.3-5,42.4-8.1c7-1.5,14-3.1,21-4.9c7-1.7,13.9-3.6,20.8-5.7c13.8-4.1,27.4-8.8,40.3-15.2l2.4-1.2l2.4-1.3c1.6-0.8,3.1-1.8,4.7-2.7c3-1.9,6-3.9,8.7-6.2c2.7-2.3,5.2-4.9,7.2-7.9c1.9-3,3.2-6.4,3.3-10c0-3.6-1.2-7-3.1-10c-1.9-3-4.4-5.6-7.1-8c-5.5-4.7-11.7-8.3-18.1-11.6C1004.5,20.6,990.8,15.8,977.1,11.6z"/>
|
|
@@ -10,7 +10,7 @@ var CI360=function(){"use strict";var Jn=Object.defineProperty;var Qn=(q,W,lt)=>
|
|
|
10
10
|
<path fill="currentColor" d="M10.9,9.7c0-1.1-0.8-2-2.5-2.5c1.3-0.5,1.9-1.3,1.9-2.3c0-1.7-1.7-2.8-4.6-2.8c-1.5,0-2.7,0.3-3.6,0.8v1.7c0.9-0.4,2.3-0.7,3.4-0.7C7,3.9,8,4.4,8,5.1c0,0.8-0.7,1.3-2.4,1.3H4.3v1.6h1.3c2,0,2.9,0.8,2.9,1.6c0,0.8-1,1.5-2.8,1.5c-1.5,0-2.8-0.3-3.7-0.6v1.7c0.9,0.3,2.1,0.6,3.8,0.6C9.2,12.8,10.9,11.4,10.9,9.7"/>
|
|
11
11
|
</g>
|
|
12
12
|
</svg>
|
|
13
|
-
`,
|
|
13
|
+
`,Fi=e=>{const t=document.createElement("div");return t.innerHTML=Ni,t.style.bottom=`${e}%`,t.className="cloudimage-360-view-360-circle",t},Vi=`
|
|
14
14
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" fill="none" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
|
|
15
15
|
<!-- Circular arrows -->
|
|
16
16
|
<path d="M 75 50 A 25 25 0 1 1 50 25" stroke="currentColor" stroke-width="3"/>
|
|
@@ -21,10 +21,10 @@ var CI360=function(){"use strict";var Jn=Object.defineProperty;var Qn=(q,W,lt)=>
|
|
|
21
21
|
<!-- 360 text -->
|
|
22
22
|
<text x="50" y="54" text-anchor="middle" font-size="16" font-weight="600" fill="currentColor" stroke="none" font-family="system-ui, -apple-system, sans-serif">360°</text>
|
|
23
23
|
</svg>
|
|
24
|
-
`,
|
|
24
|
+
`,ji=e=>{const t=document.createElement("div");return t.className="cloudimage-initial-icon",t.setAttribute("aria-label","360 degree view - drag to rotate"),e?(t.style.backgroundImage=`url('${e}')`,t.style.backgroundPosition="50% 50%",t.style.backgroundSize="contain",t.style.backgroundRepeat="no-repeat"):t.innerHTML=Vi,t},$i=(e,t)=>{const{width:i,height:o}=t,s=document.createElement("canvas");return s.width=i,s.height=o,s.style.width="100%",s.style.height="auto",e.appendChild(s),s},Gi=()=>{const e=document.createElement("button");return e.className="cloudimage-360-button cloudimage-360-close-icon",e.setAttribute("aria-label","Close fullscreen"),e.setAttribute("type","button"),e.innerHTML='<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M18 6 6 18"/><path d="m6 6 12 12"/></svg>',e},Ui=()=>{const e=document.createElement("button");return e.className="cloudimage-360-button cloudimage-360-fullscreen-button",e.setAttribute("aria-label","View fullscreen"),e.setAttribute("type","button"),e.innerHTML='<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="15 3 21 3 21 9"/><polyline points="9 21 3 21 3 15"/><line x1="21" x2="14" y1="3" y2="10"/><line x1="3" x2="10" y1="21" y2="14"/></svg>',e},we=e=>{const t=document.createElement("div");return t.className="cloudimage-360-icons-container",e.appendChild(t),t},_i=e=>{const t=document.createElement("div");return t.className="cloudimage-360-inner-box",t.setAttribute("role","img"),t.setAttribute("aria-label","360 degree product view. Use mouse drag or arrow keys to rotate."),e.appendChild(t),t},Ki=()=>{const e=document.createElement("button");return e.className="cloudimage-360-button cloudimage-360-magnifier-button",e.setAttribute("aria-label","Magnify image"),e.setAttribute("type","button"),e.innerHTML='<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="11" cy="11" r="8"/><path d="m21 21-4.3-4.3"/><path d="M11 8v6"/><path d="M8 11h6"/></svg>',e},Ji=()=>{const e=document.createElement("button");return e.className="cloudimage-360-button cloudimage-360-zoom-out-button",e.setAttribute("aria-label","Zoom out"),e.setAttribute("type","button"),e.innerHTML='<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="11" cy="11" r="8"/><path d="m21 21-4.3-4.3"/><path d="M8 11h6"/></svg>',e},Qi=e=>{const t=document.createElement("div");t.className="cloudimage-initial-icon";const i=document.createElement("span");return i.className="percentage",i.innerText="0%",t.appendChild(i),e.appendChild(t),t},qi=e=>{const t=document.createElement("div");t.className="cloudimage-360-fullscreen-modal";const i=e.cloneNode();return i.style.width="100%",i.style.maxWidth="100%",i.style.height="100vh",i.style.maxHeight="100%",t.appendChild(i),window.document.body.appendChild(t),i},Gt=(e,t)=>{const i=e.querySelector(t);i&&i.parentNode.removeChild(i)},to=()=>{const e=document.createElement("div");return e.className="cloudimage-loading-spinner",e},eo=()=>{const e=document.createElement("div");return e.className="cloudimage-360-transition-overlay",e},io=e=>{const t=document.createElement("div");return t.className="cloudimage-360-hotspot-container",e.appendChild(t),t},oo=e=>{const t=document.createElement("div");return t.className="cloudimage-360-sr-only",t.setAttribute("role","status"),t.setAttribute("aria-live","polite"),t.setAttribute("aria-atomic","true"),e.appendChild(t),t},so=(e,t)=>{e&&(e.textContent="",setTimeout(()=>{e.textContent=t},50))},xe={drag:'<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M18 11V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2"/><path d="M14 10V4a2 2 0 0 0-2-2a2 2 0 0 0-2 2v2"/><path d="M10 10.5V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2v8"/><path d="M18 8a2 2 0 1 1 4 0v6a8 8 0 0 1-8 8h-2c-2.8 0-4.5-.86-5.99-2.34l-3.6-3.6a2 2 0 0 1 2.83-2.82L7 15"/></svg>',swipe:'<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m18 16 4-4-4-4"/><path d="m6 8-4 4 4 4"/><path d="M8 12h8"/></svg>',click:'<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m9 9 5 12 1.8-5.2L21 14Z"/><path d="M7.2 2.2 8 5.1"/><path d="m5.1 8-2.9-.8"/><path d="M14 4.1 12 6"/><path d="m6 12-1.9 2"/></svg>',pinch:'<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M6 6l4 4"/><path d="M18 6l-4 4"/><path d="M6 18l4-4"/><path d="M18 18l-4-4"/><circle cx="12" cy="12" r="2"/></svg>',keys:'<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect width="20" height="16" x="2" y="4" rx="2"/><path d="m9 10 3 3 3-3"/></svg>',fullscreen:'<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="15 3 21 3 21 9"/><polyline points="9 21 3 21 3 15"/><line x1="21" x2="14" y1="3" y2="10"/><line x1="3" x2="10" y1="21" y2="14"/></svg>'},Ie={drag:"Drag to rotate",swipe:"Swipe to rotate",click:"Click to zoom",dblclick:"Double-click to zoom",pinch:"Pinch to zoom",keys:"Use arrow keys",fullscreen:"Click for fullscreen"},no=(e,t={})=>{const i=document.createElement("div");i.className="cloudimage-360-hint-item";let o=Ie[e];return e==="click"&&t.pointerZoomTrigger==="dblclick"&&(o=Ie.dblclick),i.innerHTML=`
|
|
25
25
|
${xe[e]}
|
|
26
|
-
<span>${
|
|
27
|
-
`,
|
|
26
|
+
<span>${o}</span>
|
|
27
|
+
`,i},Ce=(e,t=[],i={})=>{if(!t||t.length===0)return null;const o=document.createElement("div");o.className="cloudimage-360-hints-overlay",o.setAttribute("role","tooltip"),o.setAttribute("aria-label","Interaction hints");const s=document.createElement("div");return s.className="cloudimage-360-hints-container",t.forEach(n=>{xe[n]&&s.appendChild(no(n,i))}),o.appendChild(s),e.appendChild(o),o},ke=(e,t)=>t?["swipe"]:["drag","click"],Oe=e=>{e&&e.classList.add("visible")},ro=e=>{e&&(e.classList.remove("visible"),e.classList.add("hiding"),setTimeout(()=>{e.classList.remove("hiding")},300))},ao=e=>{if(!e||typeof e!="object")return null;const t=Object.keys(e).map(o=>parseInt(o,10)).filter(o=>!isNaN(o)).sort((o,s)=>o-s);if(t.length===0)return null;const i=Math.floor(t.length/2);return t[i]},lo=e=>{const t=[];return!e||!Array.isArray(e)||e.forEach((i,o)=>{const s=ao(i.positions);s!==null&&t.push({id:i.id||`hotspot-${o}`,frame:s,label:i.label||null})}),t},co=400,ho=(e,t,i,o)=>{const s=document.createElement("button");s.className="cloudimage-360-hotspot-timeline-dot",s.setAttribute("type","button"),s.setAttribute("aria-label",o||`Go to hotspot at frame ${t+1}`),s.setAttribute("data-frame",t.toString()),s.setAttribute("data-hotspot-id",e);const n=i>1?t/(i-1)*100:0;if(s.style.left=`${n}%`,o){const l=document.createElement("span");l.className="cloudimage-360-hotspot-timeline-tooltip",l.textContent=o,s.appendChild(l);let r=null;s.addEventListener("mouseenter",()=>{r=setTimeout(()=>{l.classList.add("visible")},co)}),s.addEventListener("mouseleave",()=>{r&&(clearTimeout(r),r=null),l.classList.remove("visible")}),s.addEventListener("click",()=>{r&&(clearTimeout(r),r=null),l.classList.remove("visible")})}return s},po=(e,t,i)=>{const o=lo(i);if(o.length===0)return null;const s=document.createElement("div");s.className="cloudimage-360-hotspot-timeline",s.setAttribute("role","navigation"),s.setAttribute("aria-label","Hotspot timeline navigation");const n=document.createElement("div");n.className="cloudimage-360-hotspot-timeline-track";const l=document.createElement("div");return l.className="cloudimage-360-hotspot-timeline-indicator",o.forEach(({id:r,frame:a,label:c})=>{const h=ho(r,a,t,c);n.appendChild(h)}),n.appendChild(l),s.appendChild(n),e.appendChild(s),{element:s,indicator:l,hotspotFrames:o}},uo=(e,t,i)=>{if(!e)return;const o=i>1?t/(i-1)*100:0;e.style.left=`${o}%`},mo=e=>{e&&e.classList.add("visible")},fo=e=>{e&&e.classList.remove("visible")},Ut=(e,t=[])=>{if(!e)return t;try{return JSON.parse(e)}catch(i){return console.warn("CloudImage 360: Failed to parse JSON:",i.message),t}},go=(e,t)=>{const[i,o]=e.split("?");if(!o)return e;const s=new RegExp(`^${t}=|&${t}=`),n=o.split("&").filter(l=>!s.test(l)).join("&");return n?`${i}?${n}`:i},vo=e=>{const t=go(e,"width"),i=t.includes("?")?"&":"?";return`${t}${i}width=${150*devicePixelRatio}`},bo=e=>{const t={root:null,rootMargin:"0px",threshold:.1},i=s=>{const n=s.getAttribute("data-src");n&&(s.src=n)};new IntersectionObserver((s,n)=>{s.forEach(l=>{l.isIntersecting&&(i(l.target),n.unobserve(l.target))})},t).observe(e)},yo=(e,t)=>{const i=be(1,t);return e.replace("{index}",i)},wo=(e,t)=>{const[i]=e,o=/(https?):\/\//i.test(i);return xt({...t,folder:o?"":t.folder,filename:i})},xo=(e,t)=>{const{imageList:i,indexZeroBase:o}=t;if(i.length){const s=Ut(i,null);if(s)return wo(s,t)}return yo(e,o)},Ee=(e,t,i)=>{const o=new Image;return o.setAttribute(t?"data-src":"src",e),o.className=i,o.style.cssText=`
|
|
28
28
|
position: ${t?"absolute":"static"};
|
|
29
29
|
width: 100%;
|
|
30
30
|
inset: 0;
|
|
@@ -32,4 +32,4 @@ var CI360=function(){"use strict";var Jn=Object.defineProperty;var Qn=(q,W,lt)=>
|
|
|
32
32
|
object-fit: contain;
|
|
33
33
|
object-position: center;
|
|
34
34
|
filter: blur(10px);
|
|
35
|
-
`,o},Ee=(e,t,i)=>{const{innerBox:o,imageList:n,lazyload:s}=t||{},[l]=n,r=l||mo(e,t),a=ho(r),c=Oe(a,s,"cloudimage-lazy"),h=Oe(a,!1,"cloudimage-360-placeholder"),u=f=>{$t(o,".cloudimage-lazy"),i&&i({event:f,width:c.width,height:c.height,naturalWidth:c.naturalWidth,naturalHeight:c.naturalHeight,src:a})};c.onload=u,o.appendChild(c),o.appendChild(h),po(c)},vo=(e,t,i)=>{const o=new Image;o.src=e,o.onload=n=>{t&&t({event:n,width:o.width,height:o.height,naturalWidth:o.naturalWidth,naturalHeight:o.naturalHeight,src:e})},o.onerror=n=>{const s=new Error(`Failed to load image: ${e}`);s.url=e,s.event=n,i?i(s):console.error(s.message)}},go=(e,t)=>{const i=t.getBoundingClientRect(),o=e.touches?e.touches[0].clientX:e.clientX,n=e.touches?e.touches[0].clientY:e.clientY;return{x:o-i.left,y:n-i.top}},Ut=(e,t,i)=>{const{container:o,w:n,h:s,zoom:l,bw:r,offsetX:a,offsetY:c}=t,h=go(e,o);let u=h.x,f=h.y;u=Math.max(n/l,Math.min(u,o.offsetWidth-n/l)),f=Math.max(s/l,Math.min(f,o.offsetHeight-s/l)),i.style.left=`${u-n}px`,i.style.top=`${f-s}px`;const p=(u-a)*l-n+r,x=(f-c)*l-s+r;i.style.backgroundPosition=`-${p}px -${x}px`},bo=(e,t,i,o,n,s)=>{const{x:l=0,y:r=0}=i||{},a=(t.offsetWidth-l*2)*s,c=(t.offsetHeight-r*2)*s;if(!n)return;n.setAttribute("class","cloudimage-360-img-magnifier-glass"),t.prepend(n),n.style.backgroundImage=`url('${o.src}')`,n.style.backgroundSize=`${a}px ${c}px`;const h=3,u=n.offsetWidth/2,f=n.offsetHeight/2,p={container:t,w:u,h:f,zoom:s,bw:h,offsetX:l,offsetY:r};Ut(e,p,n);const x=v=>{Ut(v,p,n)},g=v=>{v.preventDefault(),Ut(v,p,n)};n.addEventListener("mousemove",x),t.addEventListener("mousemove",x),t.addEventListener("touchmove",g)},yo=(e,t,i)=>{const{clientX:o,clientY:n}=e,s=t.getBoundingClientRect(),l=t.width/(s.width*i),r=t.height/(s.height*i),a=(o-s.left)*l,c=(n-s.top)*r;return{offsetX:a,offsetY:c}},Se=(e,{bottom:t,top:i})=>{e?t():i()},Ae=(e,{left:t,right:i})=>{e?t():i()},wo=({autoplayBehavior:e,spinY:t,reversed:i,loopTriggers:o})=>{switch(e){case R.SPIN_XY:case R.SPIN_YX:t?Se(i,o):Ae(i,o);break;case R.SPIN_Y:Se(i,o);break;case R.SPIN_X:default:Ae(i,o)}},xo=({autoplayBehavior:e,activeImageX:t,activeImageY:i,amountX:o,amountY:n,autoplayReverse:s})=>{const l=(r,a)=>{const c=a-1;return s?r===0:r===c};switch(e){case R.SPIN_XY:case R.SPIN_Y:return l(i,n);case R.SPIN_X:case R.SPIN_YX:default:return l(t,o)}},Io=({autoplayBehavior:e,activeImageX:t,activeImageY:i,amountX:o,amountY:n,autoplayReverse:s,spinDirection:l})=>{const r=t===(s?0:o-1),a=i===(s?0:n-1);return e===R.SPIN_XY||e===R.SPIN_YX?l==="x"&&r||l==="y"&&a:!1},Co=(e,t,i)=>{if(!i)return"x";if(!t)return"y";switch(e){case R.SPIN_XY:return"x";case R.SPIN_YX:return"y";case R.SPIN_Y:return"y";case R.SPIN_X:default:return"x"}},ko=e=>e==="x"?"y":"x",Le=(e,t)=>{const i=[...yi];return t?[...i,...wi].includes(e):i.includes(e)},Te=({deltaX:e,deltaY:t,reversed:i,allowSpinX:o,allowSpinY:n,threshold:s=0})=>{const l=o&&!n||n&&!o?0:s,r=Math.abs(e),a=Math.abs(t);return o&&r-l>a?i?e>0?"left":"right":e>0?"right":"left":n&&a-l>r?i?t>0?"up":"down":t>0?"down":"up":null},Oo=()=>"ontouchstart"in window||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0,Eo=(e,t=150)=>{let i;return function(...o){clearTimeout(i),i=setTimeout(()=>{e.apply(this,o)},t)}},Ye="KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2NvbnN0IHY9KHQsYSxlKT0+e2NvbnN0IHM9dC9lLG49YS9lO3JldHVybnt6b29tZWRXaWR0aDpzLHpvb21lZEhlaWdodDpufX0sej0oe3BvaW50ZXJYOnQscG9pbnRlclk6YSxpbWFnZURhdGE6ZSx6b29tZWRXaWR0aDpzLHpvb21lZEhlaWdodDpuLGRyYXdXaWR0aDppLGRyYXdIZWlnaHQ6Y30pPT57Y29uc3R7bmF0dXJhbFdpZHRoOmcsbmF0dXJhbEhlaWdodDp1fT1lO2xldCBmPXQvaSpnLXMvMixtPWEvYyp1LW4vMjtjb25zdCB4PU1hdGgubWF4KDAsZy1zKSxPPU1hdGgubWF4KDAsdS1uKTtyZXR1cm4gZj1NYXRoLm1heCgwLE1hdGgubWluKGYseCkpLG09TWF0aC5tYXgoMCxNYXRoLm1pbihtLE8pKSx7em9vbU9mZnNldFg6Zix6b29tT2Zmc2V0WTptfX07bGV0IG8saCxyLGQsbCx3O3NlbGYub25tZXNzYWdlPWFzeW5jIHQ9Pntjb25zdHthY3Rpb246YSxvZmZzY3JlZW46ZSxkZXZpY2VQaXhlbFJhdGlvOnMsaW1hZ2VEYXRhOm4sem9vbVNjYWxlOmkscG9pbnRlclg6Yyxwb2ludGVyWTpnLGltYWdlQXNwZWN0UmF0aW86dSxjb250YWluZXJXaWR0aDpmLGNvbnRhaW5lckhlaWdodDptfT10LmRhdGE7c3dpdGNoKGEpe2Nhc2UiaW5pdENhbnZhcyI6QyhlLHMpO2JyZWFrO2Nhc2UiYWRhcHRDYW52YXNTaXplIjpwKHUsZixtKTticmVhaztjYXNlImRyYXdJbWFnZU9uQ2FudmFzIjpJKG4saSxjLGcpO2JyZWFrfX07Y29uc3QgQz0odCxhKT0+e289dCxoPW8uZ2V0Q29udGV4dCgiMmQiKSxyPWF9LHA9KHQsYSxlKT0+e2NvbnN0IHM9YS9lO3c9dD5zLG8ud2lkdGg9YSpyLG8uaGVpZ2h0PWUqcixoLnNjYWxlKHIsciksdz8oZD1hLGw9YS90KToobD1lLGQ9ZSp0KSxoLmltYWdlU21vb3RoaW5nRW5hYmxlZD0hMCxoLmltYWdlU21vb3RoaW5nUXVhbGl0eT0iaGlnaCJ9LEk9KHQ9e30sYT0xLGU9MCxzPTApPT57Y29uc3R7Yml0bWFwSW1hZ2U6bn09dDtpZighb3x8IW4pcmV0dXJuO2xldCBpLGM7aWYodz8oaT0wLGM9KG8uaGVpZ2h0L3ItbCkvMik6KGk9KG8ud2lkdGgvci1kKS8yLGM9MCksaC5jbGVhclJlY3QoMCwwLG8ud2lkdGgsby5oZWlnaHQpLGEhPT0xKXtjb25zdHtuYXR1cmFsV2lkdGg6ZyxuYXR1cmFsSGVpZ2h0OnV9PXQse3pvb21lZFdpZHRoOmYsem9vbWVkSGVpZ2h0Om19PXYoZyx1LGEpLHt6b29tT2Zmc2V0WDp4LHpvb21PZmZzZXRZOk99PXooe3BvaW50ZXJYOmUscG9pbnRlclk6cyxpbWFnZURhdGE6dCx6b29tZWRXaWR0aDpmLHpvb21lZEhlaWdodDptLGRyYXdXaWR0aDpkLGRyYXdIZWlnaHQ6bH0pO2guZHJhd0ltYWdlKG4seCxPLGYsbSxpLGMsZCxsKX1lbHNlIGguZHJhd0ltYWdlKG4saSxjLGQsbCl9fSkoKTsK",So=e=>Uint8Array.from(atob(e),t=>t.charCodeAt(0)),Xe=typeof self<"u"&&self.Blob&&new Blob([So(Ye)],{type:"text/javascript;charset=utf-8"});function Ao(e){let t;try{if(t=Xe&&(self.URL||self.webkitURL).createObjectURL(Xe),!t)throw"";const i=new Worker(t,{name:e==null?void 0:e.name});return i.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(t)}),i}catch{return new Worker("data:text/javascript;base64,"+Ye,{name:e==null?void 0:e.name})}finally{t&&(self.URL||self.webkitURL).revokeObjectURL(t)}}const Lo=new Set(["p","span","div","br","hr","strong","em","b","i","u","s","h1","h2","h3","h4","h5","h6","ul","ol","li","a","img","button","table","thead","tbody","tr","th","td","blockquote","pre","code","label","input","select","option","textarea","svg","path","circle","rect","line","polyline","polygon","ellipse","g","text","tspan","defs","use","symbol","clippath","mask","lineargradient","radialgradient","stop"]),Pe={a:["href","title","target","rel"],img:["src","alt","title","width","height"],button:["type","disabled","name","value"],input:["type","name","value","placeholder","disabled","readonly","checked","min","max","step"],select:["name","disabled","multiple"],option:["value","disabled","selected"],textarea:["name","placeholder","disabled","readonly","rows","cols"],label:["for"],svg:["viewbox","width","height","fill","stroke","xmlns","preserveaspectratio"],path:["d","fill","stroke","stroke-width","stroke-linecap","stroke-linejoin","transform"],circle:["cx","cy","r","fill","stroke","stroke-width"],rect:["x","y","width","height","rx","ry","fill","stroke","stroke-width"],line:["x1","y1","x2","y2","stroke","stroke-width"],polyline:["points","fill","stroke","stroke-width"],polygon:["points","fill","stroke","stroke-width"],ellipse:["cx","cy","rx","ry","fill","stroke","stroke-width"],g:["transform","fill","stroke"],text:["x","y","dx","dy","text-anchor","fill","font-size","font-family","font-weight"],tspan:["x","y","dx","dy"],use:["href","xlink:href","x","y","width","height"],lineargradient:["id","x1","y1","x2","y2","gradientunits"],radialgradient:["id","cx","cy","r","fx","fy","gradientunits"],stop:["offset","stop-color","stop-opacity"],clippath:["id"],mask:["id"],"*":["class","id","style"]},To=[/javascript:/gi,/vbscript:/gi,/data:/gi,/on\w+\s*=/gi],Yo=e=>{if(typeof e!="string")return"";const t=document.createElement("template");t.innerHTML=e;const i=o=>{if(Array.from(o.childNodes).forEach(i),o.nodeType===Node.ELEMENT_NODE){const s=o.tagName.toLowerCase();if(!Lo.has(s)){if(s==="script"||s==="style"){o.remove();return}const a=document.createTextNode(o.textContent);o.parentNode.replaceChild(a,o);return}const l=[...Pe[s]||[],...Pe["*"]||[]];if(Array.from(o.attributes).forEach(a=>{const c=a.name.toLowerCase();if(c.startsWith("on")){o.removeAttribute(a.name);return}if(!l.includes(c)){o.removeAttribute(a.name);return}let h=a.value;To.forEach(u=>{u.test(h)&&o.removeAttribute(a.name)})}),s==="a"){const a=o.getAttribute("href");a&&(/^(https?:|mailto:|tel:|#|\/)/i.test(a.trim())||o.removeAttribute("href")),o.getAttribute("target")==="_blank"&&o.setAttribute("rel","noopener noreferrer")}if(s==="img"){const a=o.getAttribute("src");a&&(/^(https?:|\/|data:image\/)/i.test(a.trim())||o.removeAttribute("src"))}}};return i(t.content),t.innerHTML},Xo=e=>e==="x"?Y.X:Y.Y,Po=(e,t,i)=>e.filter(o=>Xo(o.orientation)===i&&t in o.positions),Ro=(e,t)=>{const i=document.createElement("button");return i.id=e,i.className="cloudimage-360-hotspot",i.dataset.hotspotId=e,i.setAttribute("type","button"),i.setAttribute("aria-label",t||`Hotspot ${e}`),i.setAttribute("aria-haspopup","true"),i.setAttribute("aria-expanded","false"),i},Mo=e=>{const t=Object.entries(e).sort(([s],[l])=>Number(s)-Number(l));let i=null,o=null;const n={};for(const[s,l]of t)if(!l)n[s]={x:i,y:o};else{const{x:r,y:a}=l;r!=null&&(i=r),a!=null&&(o=a),n[s]={x:r||i,y:a||o}}return n},Ho=e=>[{name:"offset",options:{offset:[0,10]}},{name:"preventOverflow",options:{boundary:e}}],Do=(e,t)=>{const i=document.createElement("div");return i.className="cloudimage-360-popper",i.id=`cloudimage-360-popper-${t}`,i.dataset.popperId=t,i.setAttribute("role","tooltip"),i.setAttribute("aria-hidden","false"),typeof e=="string"&&/<\/?[a-z][\s\S]*>/i.test(e)?i.innerHTML=Yo(e):i.textContent=e,document.body.appendChild(i),i},Zo=e=>{const t=[...e];return t.forEach((i,o)=>{const n={...Mo(i.positions)};t[o].initialPositions=n,t[o].positions=n}),t},Bo=({newWidth:e,newHeight:t,initialContainerSize:i,imageAspectRatio:o,hotspotsConfig:n})=>{const[s,l]=i;let r=e,a=t,c=0,h=0;const u=e/t;o>u?(a=e/o,h=(t-a)/2):(r=t*o,c=(e-r)/2);const p=r/s,x=a/l;return n.map(g=>{const v={};return Object.entries(g.initialPositions).forEach(([m,y])=>{v[m]={x:y.x*p+c,y:y.y*x+h}}),{...g,positions:v}})};var H="top",F="bottom",z="right",D="left",_t="auto",wt=[H,F,z,D],ct="start",xt="end",Wo="clippingParents",Re="viewport",It="popper",Fo="reference",Me=wt.reduce(function(e,t){return e.concat([t+"-"+ct,t+"-"+xt])},[]),He=[].concat(wt,[_t]).reduce(function(e,t){return e.concat([t,t+"-"+ct,t+"-"+xt])},[]),zo="beforeRead",No="read",Vo="afterRead",jo="beforeMain",$o="main",Go="afterMain",Uo="beforeWrite",_o="write",Ko="afterWrite",Jo=[zo,No,Vo,jo,$o,Go,Uo,_o,Ko];function V(e){return e?(e.nodeName||"").toLowerCase():null}function Z(e){if(e==null)return window;if(e.toString()!=="[object Window]"){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function it(e){var t=Z(e).Element;return e instanceof t||e instanceof Element}function N(e){var t=Z(e).HTMLElement;return e instanceof t||e instanceof HTMLElement}function Kt(e){if(typeof ShadowRoot>"u")return!1;var t=Z(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot}function Qo(e){var t=e.state;Object.keys(t.elements).forEach(function(i){var o=t.styles[i]||{},n=t.attributes[i]||{},s=t.elements[i];!N(s)||!V(s)||(Object.assign(s.style,o),Object.keys(n).forEach(function(l){var r=n[l];r===!1?s.removeAttribute(l):s.setAttribute(l,r===!0?"":r)}))})}function qo(e){var t=e.state,i={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,i.popper),t.styles=i,t.elements.arrow&&Object.assign(t.elements.arrow.style,i.arrow),function(){Object.keys(t.elements).forEach(function(o){var n=t.elements[o],s=t.attributes[o]||{},l=Object.keys(t.styles.hasOwnProperty(o)?t.styles[o]:i[o]),r=l.reduce(function(a,c){return a[c]="",a},{});!N(n)||!V(n)||(Object.assign(n.style,r),Object.keys(s).forEach(function(a){n.removeAttribute(a)}))})}}const tn={name:"applyStyles",enabled:!0,phase:"write",fn:Qo,effect:qo,requires:["computeStyles"]};function j(e){return e.split("-")[0]}var ot=Math.max,Dt=Math.min,ht=Math.round;function Jt(){var e=navigator.userAgentData;return e!=null&&e.brands&&Array.isArray(e.brands)?e.brands.map(function(t){return t.brand+"/"+t.version}).join(" "):navigator.userAgent}function De(){return!/^((?!chrome|android).)*safari/i.test(Jt())}function dt(e,t,i){t===void 0&&(t=!1),i===void 0&&(i=!1);var o=e.getBoundingClientRect(),n=1,s=1;t&&N(e)&&(n=e.offsetWidth>0&&ht(o.width)/e.offsetWidth||1,s=e.offsetHeight>0&&ht(o.height)/e.offsetHeight||1);var l=it(e)?Z(e):window,r=l.visualViewport,a=!De()&&i,c=(o.left+(a&&r?r.offsetLeft:0))/n,h=(o.top+(a&&r?r.offsetTop:0))/s,u=o.width/n,f=o.height/s;return{width:u,height:f,top:h,right:c+u,bottom:h+f,left:c,x:c,y:h}}function Qt(e){var t=dt(e),i=e.offsetWidth,o=e.offsetHeight;return Math.abs(t.width-i)<=1&&(i=t.width),Math.abs(t.height-o)<=1&&(o=t.height),{x:e.offsetLeft,y:e.offsetTop,width:i,height:o}}function Ze(e,t){var i=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(i&&Kt(i)){var o=t;do{if(o&&e.isSameNode(o))return!0;o=o.parentNode||o.host}while(o)}return!1}function G(e){return Z(e).getComputedStyle(e)}function en(e){return["table","td","th"].indexOf(V(e))>=0}function tt(e){return((it(e)?e.ownerDocument:e.document)||window.document).documentElement}function Zt(e){return V(e)==="html"?e:e.assignedSlot||e.parentNode||(Kt(e)?e.host:null)||tt(e)}function Be(e){return!N(e)||G(e).position==="fixed"?null:e.offsetParent}function on(e){var t=/firefox/i.test(Jt()),i=/Trident/i.test(Jt());if(i&&N(e)){var o=G(e);if(o.position==="fixed")return null}var n=Zt(e);for(Kt(n)&&(n=n.host);N(n)&&["html","body"].indexOf(V(n))<0;){var s=G(n);if(s.transform!=="none"||s.perspective!=="none"||s.contain==="paint"||["transform","perspective"].indexOf(s.willChange)!==-1||t&&s.willChange==="filter"||t&&s.filter&&s.filter!=="none")return n;n=n.parentNode}return null}function Ct(e){for(var t=Z(e),i=Be(e);i&&en(i)&&G(i).position==="static";)i=Be(i);return i&&(V(i)==="html"||V(i)==="body"&&G(i).position==="static")?t:i||on(e)||t}function qt(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function kt(e,t,i){return ot(e,Dt(t,i))}function nn(e,t,i){var o=kt(e,t,i);return o>i?i:o}function We(){return{top:0,right:0,bottom:0,left:0}}function Fe(e){return Object.assign({},We(),e)}function ze(e,t){return t.reduce(function(i,o){return i[o]=e,i},{})}var sn=function(t,i){return t=typeof t=="function"?t(Object.assign({},i.rects,{placement:i.placement})):t,Fe(typeof t!="number"?t:ze(t,wt))};function rn(e){var t,i=e.state,o=e.name,n=e.options,s=i.elements.arrow,l=i.modifiersData.popperOffsets,r=j(i.placement),a=qt(r),c=[D,z].indexOf(r)>=0,h=c?"height":"width";if(!(!s||!l)){var u=sn(n.padding,i),f=Qt(s),p=a==="y"?H:D,x=a==="y"?F:z,g=i.rects.reference[h]+i.rects.reference[a]-l[a]-i.rects.popper[h],v=l[a]-i.rects.reference[a],m=Ct(s),y=m?a==="y"?m.clientHeight||0:m.clientWidth||0:0,I=g/2-v/2,w=u[p],C=y-f[h]-u[x],b=y/2-f[h]/2+I,k=kt(w,b,C),E=a;i.modifiersData[o]=(t={},t[E]=k,t.centerOffset=k-b,t)}}function an(e){var t=e.state,i=e.options,o=i.element,n=o===void 0?"[data-popper-arrow]":o;n!=null&&(typeof n=="string"&&(n=t.elements.popper.querySelector(n),!n)||Ze(t.elements.popper,n)&&(t.elements.arrow=n))}const ln={name:"arrow",enabled:!0,phase:"main",fn:rn,effect:an,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function pt(e){return e.split("-")[1]}var cn={top:"auto",right:"auto",bottom:"auto",left:"auto"};function hn(e,t){var i=e.x,o=e.y,n=t.devicePixelRatio||1;return{x:ht(i*n)/n||0,y:ht(o*n)/n||0}}function Ne(e){var t,i=e.popper,o=e.popperRect,n=e.placement,s=e.variation,l=e.offsets,r=e.position,a=e.gpuAcceleration,c=e.adaptive,h=e.roundOffsets,u=e.isFixed,f=l.x,p=f===void 0?0:f,x=l.y,g=x===void 0?0:x,v=typeof h=="function"?h({x:p,y:g}):{x:p,y:g};p=v.x,g=v.y;var m=l.hasOwnProperty("x"),y=l.hasOwnProperty("y"),I=D,w=H,C=window;if(c){var b=Ct(i),k="clientHeight",E="clientWidth";if(b===Z(i)&&(b=tt(i),G(b).position!=="static"&&r==="absolute"&&(k="scrollHeight",E="scrollWidth")),b=b,n===H||(n===D||n===z)&&s===xt){w=F;var O=u&&b===C&&C.visualViewport?C.visualViewport.height:b[k];g-=O-o.height,g*=a?1:-1}if(n===D||(n===H||n===F)&&s===xt){I=z;var S=u&&b===C&&C.visualViewport?C.visualViewport.width:b[E];p-=S-o.width,p*=a?1:-1}}var L=Object.assign({position:r},c&&cn),M=h===!0?hn({x:p,y:g},Z(i)):{x:p,y:g};if(p=M.x,g=M.y,a){var T;return Object.assign({},L,(T={},T[w]=y?"0":"",T[I]=m?"0":"",T.transform=(C.devicePixelRatio||1)<=1?"translate("+p+"px, "+g+"px)":"translate3d("+p+"px, "+g+"px, 0)",T))}return Object.assign({},L,(t={},t[w]=y?g+"px":"",t[I]=m?p+"px":"",t.transform="",t))}function dn(e){var t=e.state,i=e.options,o=i.gpuAcceleration,n=o===void 0?!0:o,s=i.adaptive,l=s===void 0?!0:s,r=i.roundOffsets,a=r===void 0?!0:r,c={placement:j(t.placement),variation:pt(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:n,isFixed:t.options.strategy==="fixed"};t.modifiersData.popperOffsets!=null&&(t.styles.popper=Object.assign({},t.styles.popper,Ne(Object.assign({},c,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:l,roundOffsets:a})))),t.modifiersData.arrow!=null&&(t.styles.arrow=Object.assign({},t.styles.arrow,Ne(Object.assign({},c,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:a})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})}const pn={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:dn,data:{}};var Bt={passive:!0};function un(e){var t=e.state,i=e.instance,o=e.options,n=o.scroll,s=n===void 0?!0:n,l=o.resize,r=l===void 0?!0:l,a=Z(t.elements.popper),c=[].concat(t.scrollParents.reference,t.scrollParents.popper);return s&&c.forEach(function(h){h.addEventListener("scroll",i.update,Bt)}),r&&a.addEventListener("resize",i.update,Bt),function(){s&&c.forEach(function(h){h.removeEventListener("scroll",i.update,Bt)}),r&&a.removeEventListener("resize",i.update,Bt)}}const fn={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:un,data:{}};var mn={left:"right",right:"left",bottom:"top",top:"bottom"};function Wt(e){return e.replace(/left|right|bottom|top/g,function(t){return mn[t]})}var vn={start:"end",end:"start"};function Ve(e){return e.replace(/start|end/g,function(t){return vn[t]})}function te(e){var t=Z(e),i=t.pageXOffset,o=t.pageYOffset;return{scrollLeft:i,scrollTop:o}}function ee(e){return dt(tt(e)).left+te(e).scrollLeft}function gn(e,t){var i=Z(e),o=tt(e),n=i.visualViewport,s=o.clientWidth,l=o.clientHeight,r=0,a=0;if(n){s=n.width,l=n.height;var c=De();(c||!c&&t==="fixed")&&(r=n.offsetLeft,a=n.offsetTop)}return{width:s,height:l,x:r+ee(e),y:a}}function bn(e){var t,i=tt(e),o=te(e),n=(t=e.ownerDocument)==null?void 0:t.body,s=ot(i.scrollWidth,i.clientWidth,n?n.scrollWidth:0,n?n.clientWidth:0),l=ot(i.scrollHeight,i.clientHeight,n?n.scrollHeight:0,n?n.clientHeight:0),r=-o.scrollLeft+ee(e),a=-o.scrollTop;return G(n||i).direction==="rtl"&&(r+=ot(i.clientWidth,n?n.clientWidth:0)-s),{width:s,height:l,x:r,y:a}}function ie(e){var t=G(e),i=t.overflow,o=t.overflowX,n=t.overflowY;return/auto|scroll|overlay|hidden/.test(i+n+o)}function je(e){return["html","body","#document"].indexOf(V(e))>=0?e.ownerDocument.body:N(e)&&ie(e)?e:je(Zt(e))}function Ot(e,t){var i;t===void 0&&(t=[]);var o=je(e),n=o===((i=e.ownerDocument)==null?void 0:i.body),s=Z(o),l=n?[s].concat(s.visualViewport||[],ie(o)?o:[]):o,r=t.concat(l);return n?r:r.concat(Ot(Zt(l)))}function oe(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function yn(e,t){var i=dt(e,!1,t==="fixed");return i.top=i.top+e.clientTop,i.left=i.left+e.clientLeft,i.bottom=i.top+e.clientHeight,i.right=i.left+e.clientWidth,i.width=e.clientWidth,i.height=e.clientHeight,i.x=i.left,i.y=i.top,i}function $e(e,t,i){return t===Re?oe(gn(e,i)):it(t)?yn(t,i):oe(bn(tt(e)))}function wn(e){var t=Ot(Zt(e)),i=["absolute","fixed"].indexOf(G(e).position)>=0,o=i&&N(e)?Ct(e):e;return it(o)?t.filter(function(n){return it(n)&&Ze(n,o)&&V(n)!=="body"}):[]}function xn(e,t,i,o){var n=t==="clippingParents"?wn(e):[].concat(t),s=[].concat(n,[i]),l=s[0],r=s.reduce(function(a,c){var h=$e(e,c,o);return a.top=ot(h.top,a.top),a.right=Dt(h.right,a.right),a.bottom=Dt(h.bottom,a.bottom),a.left=ot(h.left,a.left),a},$e(e,l,o));return r.width=r.right-r.left,r.height=r.bottom-r.top,r.x=r.left,r.y=r.top,r}function Ge(e){var t=e.reference,i=e.element,o=e.placement,n=o?j(o):null,s=o?pt(o):null,l=t.x+t.width/2-i.width/2,r=t.y+t.height/2-i.height/2,a;switch(n){case H:a={x:l,y:t.y-i.height};break;case F:a={x:l,y:t.y+t.height};break;case z:a={x:t.x+t.width,y:r};break;case D:a={x:t.x-i.width,y:r};break;default:a={x:t.x,y:t.y}}var c=n?qt(n):null;if(c!=null){var h=c==="y"?"height":"width";switch(s){case ct:a[c]=a[c]-(t[h]/2-i[h]/2);break;case xt:a[c]=a[c]+(t[h]/2-i[h]/2);break}}return a}function Et(e,t){t===void 0&&(t={});var i=t,o=i.placement,n=o===void 0?e.placement:o,s=i.strategy,l=s===void 0?e.strategy:s,r=i.boundary,a=r===void 0?Wo:r,c=i.rootBoundary,h=c===void 0?Re:c,u=i.elementContext,f=u===void 0?It:u,p=i.altBoundary,x=p===void 0?!1:p,g=i.padding,v=g===void 0?0:g,m=Fe(typeof v!="number"?v:ze(v,wt)),y=f===It?Fo:It,I=e.rects.popper,w=e.elements[x?y:f],C=xn(it(w)?w:w.contextElement||tt(e.elements.popper),a,h,l),b=dt(e.elements.reference),k=Ge({reference:b,element:I,placement:n}),E=oe(Object.assign({},I,k)),O=f===It?E:b,S={top:C.top-O.top+m.top,bottom:O.bottom-C.bottom+m.bottom,left:C.left-O.left+m.left,right:O.right-C.right+m.right},L=e.modifiersData.offset;if(f===It&&L){var M=L[n];Object.keys(S).forEach(function(T){var U=[z,F].indexOf(T)>=0?1:-1,_=[H,F].indexOf(T)>=0?"y":"x";S[T]+=M[_]*U})}return S}function In(e,t){t===void 0&&(t={});var i=t,o=i.placement,n=i.boundary,s=i.rootBoundary,l=i.padding,r=i.flipVariations,a=i.allowedAutoPlacements,c=a===void 0?He:a,h=pt(o),u=h?r?Me:Me.filter(function(x){return pt(x)===h}):wt,f=u.filter(function(x){return c.indexOf(x)>=0});f.length===0&&(f=u);var p=f.reduce(function(x,g){return x[g]=Et(e,{placement:g,boundary:n,rootBoundary:s,padding:l})[j(g)],x},{});return Object.keys(p).sort(function(x,g){return p[x]-p[g]})}function Cn(e){if(j(e)===_t)return[];var t=Wt(e);return[Ve(e),t,Ve(t)]}function kn(e){var t=e.state,i=e.options,o=e.name;if(!t.modifiersData[o]._skip){for(var n=i.mainAxis,s=n===void 0?!0:n,l=i.altAxis,r=l===void 0?!0:l,a=i.fallbackPlacements,c=i.padding,h=i.boundary,u=i.rootBoundary,f=i.altBoundary,p=i.flipVariations,x=p===void 0?!0:p,g=i.allowedAutoPlacements,v=t.options.placement,m=j(v),y=m===v,I=a||(y||!x?[Wt(v)]:Cn(v)),w=[v].concat(I).reduce(function(et,$){return et.concat(j($)===_t?In(t,{placement:$,boundary:h,rootBoundary:u,padding:c,flipVariations:x,allowedAutoPlacements:g}):$)},[]),C=t.rects.reference,b=t.rects.popper,k=new Map,E=!0,O=w[0],S=0;S<w.length;S++){var L=w[S],M=j(L),T=pt(L)===ct,U=[H,F].indexOf(M)>=0,_=U?"width":"height",P=Et(t,{placement:L,boundary:h,rootBoundary:u,altBoundary:f,padding:c}),B=U?T?z:D:T?F:H;C[_]>b[_]&&(B=Wt(B));var ut=Wt(B),K=[];if(s&&K.push(P[M]<=0),r&&K.push(P[B]<=0,P[ut]<=0),K.every(function(et){return et})){O=L,E=!1;break}k.set(L,K)}if(E)for(var ft=x?3:1,St=function($){var st=w.find(function(rt){var J=k.get(rt);if(J)return J.slice(0,$).every(function(vt){return vt})});if(st)return O=st,"break"},nt=ft;nt>0;nt--){var mt=St(nt);if(mt==="break")break}t.placement!==O&&(t.modifiersData[o]._skip=!0,t.placement=O,t.reset=!0)}}const On={name:"flip",enabled:!0,phase:"main",fn:kn,requiresIfExists:["offset"],data:{_skip:!1}};function Ue(e,t,i){return i===void 0&&(i={x:0,y:0}),{top:e.top-t.height-i.y,right:e.right-t.width+i.x,bottom:e.bottom-t.height+i.y,left:e.left-t.width-i.x}}function _e(e){return[H,z,F,D].some(function(t){return e[t]>=0})}function En(e){var t=e.state,i=e.name,o=t.rects.reference,n=t.rects.popper,s=t.modifiersData.preventOverflow,l=Et(t,{elementContext:"reference"}),r=Et(t,{altBoundary:!0}),a=Ue(l,o),c=Ue(r,n,s),h=_e(a),u=_e(c);t.modifiersData[i]={referenceClippingOffsets:a,popperEscapeOffsets:c,isReferenceHidden:h,hasPopperEscaped:u},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":u})}const Sn={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:En};function An(e,t,i){var o=j(e),n=[D,H].indexOf(o)>=0?-1:1,s=typeof i=="function"?i(Object.assign({},t,{placement:e})):i,l=s[0],r=s[1];return l=l||0,r=(r||0)*n,[D,z].indexOf(o)>=0?{x:r,y:l}:{x:l,y:r}}function Ln(e){var t=e.state,i=e.options,o=e.name,n=i.offset,s=n===void 0?[0,0]:n,l=He.reduce(function(h,u){return h[u]=An(u,t.rects,s),h},{}),r=l[t.placement],a=r.x,c=r.y;t.modifiersData.popperOffsets!=null&&(t.modifiersData.popperOffsets.x+=a,t.modifiersData.popperOffsets.y+=c),t.modifiersData[o]=l}const Tn={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:Ln};function Yn(e){var t=e.state,i=e.name;t.modifiersData[i]=Ge({reference:t.rects.reference,element:t.rects.popper,placement:t.placement})}const Xn={name:"popperOffsets",enabled:!0,phase:"read",fn:Yn,data:{}};function Pn(e){return e==="x"?"y":"x"}function Rn(e){var t=e.state,i=e.options,o=e.name,n=i.mainAxis,s=n===void 0?!0:n,l=i.altAxis,r=l===void 0?!1:l,a=i.boundary,c=i.rootBoundary,h=i.altBoundary,u=i.padding,f=i.tether,p=f===void 0?!0:f,x=i.tetherOffset,g=x===void 0?0:x,v=Et(t,{boundary:a,rootBoundary:c,padding:u,altBoundary:h}),m=j(t.placement),y=pt(t.placement),I=!y,w=qt(m),C=Pn(w),b=t.modifiersData.popperOffsets,k=t.rects.reference,E=t.rects.popper,O=typeof g=="function"?g(Object.assign({},t.rects,{placement:t.placement})):g,S=typeof O=="number"?{mainAxis:O,altAxis:O}:Object.assign({mainAxis:0,altAxis:0},O),L=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,M={x:0,y:0};if(b){if(s){var T,U=w==="y"?H:D,_=w==="y"?F:z,P=w==="y"?"height":"width",B=b[w],ut=B+v[U],K=B-v[_],ft=p?-E[P]/2:0,St=y===ct?k[P]:E[P],nt=y===ct?-E[P]:-k[P],mt=t.elements.arrow,et=p&&mt?Qt(mt):{width:0,height:0},$=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:We(),st=$[U],rt=$[_],J=kt(0,k[P],et[P]),vt=I?k[P]/2-ft-J-st-S.mainAxis:St-J-st-S.mainAxis,ne=I?-k[P]/2+ft+J+rt+S.mainAxis:nt+J+rt+S.mainAxis,At=t.elements.arrow&&Ct(t.elements.arrow),se=At?w==="y"?At.clientTop||0:At.clientLeft||0:0,zt=(T=L==null?void 0:L[w])!=null?T:0,re=B+vt-zt-se,ae=B+ne-zt,Nt=kt(p?Dt(ut,re):ut,B,p?ot(K,ae):K);b[w]=Nt,M[w]=Nt-B}if(r){var Vt,le=w==="x"?H:D,ce=w==="x"?F:z,Q=b[C],gt=C==="y"?"height":"width",Lt=Q+v[le],bt=Q-v[ce],at=[H,D].indexOf(m)!==-1,Tt=(Vt=L==null?void 0:L[C])!=null?Vt:0,Yt=at?Lt:Q-k[gt]-E[gt]-Tt+S.altAxis,Xt=at?Q+k[gt]+E[gt]-Tt-S.altAxis:bt,Pt=p&&at?nn(Yt,Q,Xt):kt(p?Yt:Lt,Q,p?Xt:bt);b[C]=Pt,M[C]=Pt-Q}t.modifiersData[o]=M}}const Mn={name:"preventOverflow",enabled:!0,phase:"main",fn:Rn,requiresIfExists:["offset"]};function Hn(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function Dn(e){return e===Z(e)||!N(e)?te(e):Hn(e)}function Zn(e){var t=e.getBoundingClientRect(),i=ht(t.width)/e.offsetWidth||1,o=ht(t.height)/e.offsetHeight||1;return i!==1||o!==1}function Bn(e,t,i){i===void 0&&(i=!1);var o=N(t),n=N(t)&&Zn(t),s=tt(t),l=dt(e,n,i),r={scrollLeft:0,scrollTop:0},a={x:0,y:0};return(o||!o&&!i)&&((V(t)!=="body"||ie(s))&&(r=Dn(t)),N(t)?(a=dt(t,!0),a.x+=t.clientLeft,a.y+=t.clientTop):s&&(a.x=ee(s))),{x:l.left+r.scrollLeft-a.x,y:l.top+r.scrollTop-a.y,width:l.width,height:l.height}}function Wn(e){var t=new Map,i=new Set,o=[];e.forEach(function(s){t.set(s.name,s)});function n(s){i.add(s.name);var l=[].concat(s.requires||[],s.requiresIfExists||[]);l.forEach(function(r){if(!i.has(r)){var a=t.get(r);a&&n(a)}}),o.push(s)}return e.forEach(function(s){i.has(s.name)||n(s)}),o}function Fn(e){var t=Wn(e);return Jo.reduce(function(i,o){return i.concat(t.filter(function(n){return n.phase===o}))},[])}function zn(e){var t;return function(){return t||(t=new Promise(function(i){Promise.resolve().then(function(){t=void 0,i(e())})})),t}}function Nn(e){var t=e.reduce(function(i,o){var n=i[o.name];return i[o.name]=n?Object.assign({},n,o,{options:Object.assign({},n.options,o.options),data:Object.assign({},n.data,o.data)}):o,i},{});return Object.keys(t).map(function(i){return t[i]})}var Ke={placement:"bottom",modifiers:[],strategy:"absolute"};function Je(){for(var e=arguments.length,t=new Array(e),i=0;i<e;i++)t[i]=arguments[i];return!t.some(function(o){return!(o&&typeof o.getBoundingClientRect=="function")})}function Vn(e){e===void 0&&(e={});var t=e,i=t.defaultModifiers,o=i===void 0?[]:i,n=t.defaultOptions,s=n===void 0?Ke:n;return function(r,a,c){c===void 0&&(c=s);var h={placement:"bottom",orderedModifiers:[],options:Object.assign({},Ke,s),modifiersData:{},elements:{reference:r,popper:a},attributes:{},styles:{}},u=[],f=!1,p={state:h,setOptions:function(m){var y=typeof m=="function"?m(h.options):m;g(),h.options=Object.assign({},s,h.options,y),h.scrollParents={reference:it(r)?Ot(r):r.contextElement?Ot(r.contextElement):[],popper:Ot(a)};var I=Fn(Nn([].concat(o,h.options.modifiers)));return h.orderedModifiers=I.filter(function(w){return w.enabled}),x(),p.update()},forceUpdate:function(){if(!f){var m=h.elements,y=m.reference,I=m.popper;if(Je(y,I)){h.rects={reference:Bn(y,Ct(I),h.options.strategy==="fixed"),popper:Qt(I)},h.reset=!1,h.placement=h.options.placement,h.orderedModifiers.forEach(function(S){return h.modifiersData[S.name]=Object.assign({},S.data)});for(var w=0;w<h.orderedModifiers.length;w++){if(h.reset===!0){h.reset=!1,w=-1;continue}var C=h.orderedModifiers[w],b=C.fn,k=C.options,E=k===void 0?{}:k,O=C.name;typeof b=="function"&&(h=b({state:h,options:E,name:O,instance:p})||h)}}}},update:zn(function(){return new Promise(function(v){p.forceUpdate(),v(h)})}),destroy:function(){g(),f=!0}};if(!Je(r,a))return p;p.setOptions(c).then(function(v){!f&&c.onFirstUpdate&&c.onFirstUpdate(v)});function x(){h.orderedModifiers.forEach(function(v){var m=v.name,y=v.options,I=y===void 0?{}:y,w=v.effect;if(typeof w=="function"){var C=w({state:h,name:m,instance:p,options:I}),b=function(){};u.push(C||b)}})}function g(){u.forEach(function(v){return v()}),u=[]}return p}}var jn=[fn,Xn,pn,tn,Tn,On,Mn,ln,Sn],$n=Vn({defaultModifiers:jn});class Gn{constructor(t,i,o){qe(this,"updateHotspotPosition",(t,i)=>{this.currentActiveIndex=t,this.currentOrientation=i;const o=Po(this.hotspotsConfig,t,i);this.hideHotspots(),o.forEach(n=>this.updateAndShowHotspot(n,t))});this.container=i,this.popper=null,this.popperInstance=null,this.hotspotsContainer=_i(this.container),this.hotspotsConfig=Zo(t),this.shouldHidePopper=!0,this.hidePopper=this.hidePopper.bind(this),this.imageAspectRatio=o,this.hotspotElements=new Map,this.popperListeners=[];const{containerSize:n}=t[0];this.initialContainerSize=n||[i.offsetWidth,i.offsetHeight],this.initHotspots(),this.observeContainerResize()}observeContainerResize(){this.resizeObserver=new ResizeObserver(()=>{const t=this.container.offsetWidth,i=this.container.offsetHeight;this.updateHotspotsForResize(t,i)}),this.resizeObserver.observe(this.container)}updateHotspotsForResize(t,i){this.hotspotsConfig=Bo({newWidth:t,newHeight:i,initialContainerSize:this.initialContainerSize,imageAspectRatio:this.imageAspectRatio,hotspotsConfig:this.hotspotsConfig}),this.updateHotspotPosition(this.currentActiveIndex,this.currentOrientation)}cleanupPopperListeners(){this.popperListeners.forEach(({element:t,event:i,handler:o})=>{t.removeEventListener(i,o)}),this.popperListeners=[]}showPopper({hotspotElement:t,content:i,id:o,keepOpen:n}){this.popperInstance&&this.popperInstance.instanceId!==o&&this.hidePopper();const s={placement:"top",modifiers:Ho(this.container)};this.popper=Do(i,o),this.popper.setAttribute("data-show",""),this.currentHotspotElement=t,t.setAttribute("aria-expanded","true"),t.setAttribute("aria-describedby",`cloudimage-360-popper-${o}`);const l=()=>{this.shouldHidePopper=!1},r=()=>{this.shouldHidePopper=!0,this.checkAndHidePopper()},a=()=>{this.shouldHidePopper=!0,this.checkAndHidePopper()},c=()=>{this.shouldHidePopper=!1,this.hidePopperTimeout&&clearTimeout(this.hidePopperTimeout)};this.popper.addEventListener("mouseenter",l),this.popper.addEventListener("mouseleave",r),t.addEventListener("mouseleave",a),t.addEventListener("mouseenter",c),this.popperListeners.push({element:this.popper,event:"mouseenter",handler:l},{element:this.popper,event:"mouseleave",handler:r},{element:t,event:"mouseleave",handler:a},{element:t,event:"mouseenter",handler:c}),this.popperInstance={...$n(t,this.popper,s),keepOpen:n,instanceId:o}}checkAndHidePopper(){var t;this.shouldHidePopper&&!((t=this.popperInstance)!=null&&t.keepOpen)&&(this.hidePopperTimeout=setTimeout(()=>{this.shouldHidePopper&&this.hidePopper()},Ii))}hidePopper(){if(this.cleanupPopperListeners(),this.currentHotspotElement&&(this.currentHotspotElement.setAttribute("aria-expanded","false"),this.currentHotspotElement.removeAttribute("aria-describedby"),this.currentHotspotElement=null),this.popperInstance&&(this.popperInstance.destroy(),this.popperInstance=null),this.popper){this.popper.removeAttribute("data-show"),this.popper.setAttribute("aria-hidden","true");const t=this.popper;this.popper=null,setTimeout(()=>{t.remove()},Ci)}}createHotspot(t){const{id:i,content:o,keepOpen:n,onClick:s,label:l}=t,r=Ro(i,l);s&&(r.style.cursor="pointer"),r.onclick=a=>{a.stopPropagation(),s==null||s(a,this.popperInstance,i)},o&&(r.addEventListener("mouseenter",()=>this.showPopper({hotspotElement:r,content:o,id:i,keepOpen:n})),r.addEventListener("focus",()=>this.showPopper({hotspotElement:r,content:o,id:i,keepOpen:n})),r.addEventListener("blur",()=>{this.shouldHidePopper=!0,this.checkAndHidePopper()})),this.hotspotsContainer.appendChild(r)}hideHotspots(){this.hotspotsContainer.querySelectorAll(".cloudimage-360-hotspot").forEach(t=>{t.style.opacity=0,t.style.pointerEvents="none"})}updateAndShowHotspot(t,i){const{positions:o,id:n}=t,{x:s,y:l}=o[i]??{},r=this.hotspotsContainer.querySelector(`[data-hotspot-id="${n}"]`);r&&(r.style.translate=`${s}px ${l}px`,r.style.opacity=1,r.style.pointerEvents="all")}showHotspotById(t){const i=this.hotspotsConfig.find(n=>n.id===t);if(!i||!i.content)return;const o=this.hotspotsContainer.querySelector(`[data-hotspot-id="${t}"]`);o&&o.style.opacity==="1"&&this.showPopper({hotspotElement:o,content:i.content,id:t,keepOpen:i.keepOpen})}createAllHotspots(){this.hotspotsConfig.forEach(t=>this.createHotspot(t))}initHotspots(){this.createAllHotspots()}destroy(){this.hidePopperTimeout&&clearTimeout(this.hidePopperTimeout),this.resizeObserver.disconnect(),this.hidePopper(),this.hotspotElements.clear(),this.hotspotsContainer.innerHTML=""}}class Ft{constructor(t,i,o){this.container=t,this.isClicked=!1,this.fullscreenView=!!o,this.imagesX=[],this.imagesY=[],this.devicePixelRatio=Math.round(window.devicePixelRatio||1),this.id=t.id,this.movementStart={x:0,y:0},this.draggingDirection=null,this.isReady=!1,this.velocityX=0,this.velocityY=0,this.lastDragTime=0,this.lastDragX=0,this.lastDragY=0,this.inertiaAnimationId=null,this.hasInteracted=!1,this.currentZoomScale=1,this.touchDevice=Oo(),this.dragJustEnded=!1,this.isPinching=!1,this.initialPinchDistance=0,this.pinchZoomLevel=1,this.pinchZoomEmitted=!1,this.lastEmittedZoom=1,this.panOffsetX=0,this.panOffsetY=0,this.canvasWorker=new Ao,this.hotspotTimeline=null,this.hotspotTimelineIndicator=null,this.isAnimatingToFrame=!1,this.onMoveHandler=this.onMoveHandler.bind(this),this.destroy=this.destroy.bind(this),this.init(this.container,i)}emit(t,i={}){const o=this[t];typeof o=="function"&&o({...i,viewerId:this.id})}announce(t){Ji(this.ariaLiveRegion,t)}mouseDown(t){if(!this.isReady||this.glass)return;const{pageX:i,pageY:o}=t;this.hideHints(),this.hideHotspotPopper(),this.inertiaAnimationId&&(cancelAnimationFrame(this.inertiaAnimationId),this.inertiaAnimationId=null),this.autoplayJustStopped=!1,(this.autoplay||this.loopTimeoutId)&&(this.stopAutoplay(),this.autoplay=!1,this.autoplayJustStopped=!0),this.movementStart={x:i,y:o},this.isClicked=!0,this.isDragging=!1,this.inertia&&(this.velocityX=0,this.velocityY=0,this.lastDragTime=performance.now(),this.lastDragX=i,this.lastDragY=o)}mouseUp(){this.isReady&&(!this.isZoomed&&!this.autoplayJustStopped&&this.showAllIcons(),this.inertia&&this.isDragging&&(Math.abs(this.velocityX)>.1||Math.abs(this.velocityY)>.1)&&this.startInertia(),this.isDragging&&(this.emit("onDragEnd"),this.dragJustEnded=!0),this.movementStart={x:0,y:0},this.isClicked=!1,this.isDragging=!1,this.innerBox.style.cursor="grab")}startInertia(){const o=this.fullscreenView?document.body:this.container,n=this.dragSpeed/ve,s=n*(this.amountX/o.offsetWidth),l=n*(this.amountY/o.offsetHeight),r=()=>{if(this.velocityX*=.95,this.velocityY*=.95,Math.abs(this.velocityX)<.01&&Math.abs(this.velocityY)<.01){this.inertiaAnimationId=null;return}const a=this.velocityX*16,c=this.velocityY*16,h=Te({deltaX:a,deltaY:c,reversed:this.dragReverse,allowSpinX:this.allowSpinX,allowSpinY:this.allowSpinY});if(h){const u=this.allowSpinX?Math.max(1,Math.abs(Math.round(a*s))):0,f=this.allowSpinY?Math.max(1,Math.abs(Math.round(c*l))):0;(u>0||f>0)&&this.onMoveHandler(h,u,f)}this.inertiaAnimationId=requestAnimationFrame(r)};this.inertiaAnimationId=requestAnimationFrame(r)}drag(t,i){if(!this.isReady||!this.isClicked)return;const o=t-this.movementStart.x,n=i-this.movementStart.y;if(this.inertia){const f=performance.now(),p=f-this.lastDragTime;p>0&&p<100&&(this.velocityX=(t-this.lastDragX)/p,this.velocityY=(i-this.lastDragY)/p),this.lastDragTime=f,this.lastDragX=t,this.lastDragY=i}this.draggingDirection=Te({deltaX:o,deltaY:n,reversed:this.dragReverse,allowSpinX:this.allowSpinX,allowSpinY:this.allowSpinY})||this.draggingDirection;const s=this.fullscreenView?document.body:this.container,l=this.dragSpeed/ve,r=l*(this.amountX/s.offsetWidth),a=l*(this.amountY/s.offsetHeight),c=this.allowSpinX?Math.abs(Math.round(o*r)):0,h=this.allowSpinY?Math.abs(Math.round(n*a)):0;(this.allowSpinX&&c!==0||this.allowSpinY&&h!==0)&&(this.hasInteracted=!0,this.hideHotspotPopper(),this.onMoveHandler(this.draggingDirection,c,h),this.movementStart={x:t,y:i},setTimeout(()=>{this.isDragging||(this.isDragging=!0,this.emit("onDragStart"))},xi))}mouseMove(t){!this.isReady||!this.isClicked&&!this.isZoomed||this.glass||(this.hideAllIcons(),this.drag(t.pageX,t.pageY),this.isZoomed&&this.applyZoom(t))}mouseClick(t){if(!(!this.isReady||this.isDragging)){if(this.dragJustEnded){this.dragJustEnded=!1;return}if(this.autoplayJustStopped){this.autoplayJustStopped=!1;return}if(this.glass&&this.magnified){this.removeGlass();return}this.pointerZoom&&!this.glass&&!this.touchDevice&&this.toggleZoom(t)}}loadHigherQualityImages(t,i){const o=yt(this.srcXConfig,t),n=this.allowSpinY?yt(this.srcYConfig,t):null;ye({cdnPathX:o,cdnPathY:n,configX:this.srcXConfig,configY:this.srcYConfig,onAllImagesLoad:(s,l)=>{this.imagesX=s,this.imagesY=l,i()},onError:s=>this.emit("onError",s)})}hideHotspots(){this.hotspotsInstance&&this.hotspotsInstance.hideHotspots()}hideHotspotPopper(){this.hotspotsInstance&&this.hotspotsInstance.hidePopper()}toggleZoom(t){if(this.isZoomed)this.showTransitionOverlay(),setTimeout(()=>{this.removeZoom()},me);else{let i=(this.fullscreenView||this.pointerZoom?document.body:this.container).offsetWidth;this.hideHotspots(),this.showLoadingSpinner(),this.loadHigherQualityImages(i,()=>{this.showTransitionOverlay(),setTimeout(()=>{this.applyZoom(t)},me)})}}removeZoom(){this.isZoomed=!1,this.updateView(),this.showAllIcons(),this.hideTransitionOverlay(),this.emit("onZoomOut"),this.announce("Zoomed out")}mouseLeave(){this.isZoomed&&this.removeZoom()}applyZoom(t){const{offsetX:i,offsetY:o}=yo(t,this.canvas,this.devicePixelRatio);this.isZoomed=!0,this.hideAllIcons(),this.hideLoadingSpinner(),this.hideTransitionOverlay(),this.updateView(this.pointerZoom,i,o),this.emit("onZoomIn",{zoomLevel:this.pointerZoom}),this.announce("Zoomed in. Move mouse to pan. Click to zoom out.")}touchOutside(t){if(!this.glass)return;!this.canvas.contains(t.target)&&this.removeGlass()}touchStart(t){if(!this.isReady||this.glass||!t.touches||!t.touches.length)return;const i=t.target;if(i&&i.closest&&i.closest(".cloudimage-360-button"))return;if(this.hideHints(),t.touches.length===2&&this.pinchZoom&&!this.isDragging){t.preventDefault(),this.isPinching=!0,this.isClicked=!1,this.inertiaAnimationId&&(cancelAnimationFrame(this.inertiaAnimationId),this.inertiaAnimationId=null);const s=t.touches[0],l=t.touches[1];if(this.initialPinchDistance=this.getPinchDistance(s,l),(this.autoplay||this.loopTimeoutId)&&(this.stopAutoplay(),this.autoplay=!1),!this.isZoomed&&this.pinchZoomLevel===1){const r=(this.fullscreenView?document.body:this.container).offsetWidth;this.hideHotspots(),this.loadHigherQualityImages(r,()=>{})}return}if(t.touches.length>1)return;const{pageX:o,pageY:n}=t.touches[0];this.inertiaAnimationId&&(cancelAnimationFrame(this.inertiaAnimationId),this.inertiaAnimationId=null),(this.autoplay||this.loopTimeoutId)&&(this.stopAutoplay(),this.autoplay=!1),this.hideAllIcons(),this.hideHotspotPopper(),this.movementStart={x:o,y:n},this.isClicked=!0,this.isDragging=!1,this.inertia&&(this.velocityX=0,this.velocityY=0,this.lastDragTime=performance.now(),this.lastDragX=o,this.lastDragY=n)}getPinchDistance(t,i){const o=t.pageX-i.pageX,n=t.pageY-i.pageY;return Math.sqrt(o*o+n*n)}getPinchCenter(t,i){return{x:(t.pageX+i.pageX)/2,y:(t.pageY+i.pageY)/2}}touchEnd(t){if(this.isReady){if(this.isPinching){if(!t.touches||t.touches.length<2){if(this.isPinching=!1,this.initialPinchDistance=0,this.pinchZoomLevel<=1){const i=this.pinchZoomEmitted;this.pinchZoomLevel=1,this.pinchZoomEmitted=!1,this.lastEmittedZoom=1,this.isZoomed=!1,this.panOffsetX=0,this.panOffsetY=0,this.showAllIcons(),this.updateView(),i&&this.emit("onZoomOut")}else if(this.canvas){const i=this.canvas.getBoundingClientRect();this.panOffsetX=i.width/2*this.devicePixelRatio,this.panOffsetY=i.height/2*this.devicePixelRatio}}return}this.showAllIcons(),this.inertia&&this.isDragging&&(Math.abs(this.velocityX)>.1||Math.abs(this.velocityY)>.1)&&this.startInertia(),this.movementStart={x:0,y:0},this.isClicked=!1,this.isDragging=!1}}touchMove(t){if(!this.isReady||this.glass)return;if(this.isPinching&&t.touches.length===2){t.preventDefault();const n=t.touches[0],s=t.touches[1],l=this.getPinchDistance(n,s);if(this.initialPinchDistance===0){this.initialPinchDistance=l;return}const r=l/this.initialPinchDistance,a=Math.max(1,Math.min(this.pinchZoomLevel*r,ge));if(this.initialPinchDistance=l,this.pinchZoomLevel=a,!this.canvas)return;const c=this.canvas.getBoundingClientRect(),h=c.width/2*this.devicePixelRatio,u=c.height/2*this.devicePixelRatio;a>1?(this.isZoomed=!0,this.hideAllIcons(),this.updateView(a,h,u),(!this.pinchZoomEmitted||a>this.lastEmittedZoom)&&(this.emit("onZoomIn",{zoomLevel:a}),this.pinchZoomEmitted=!0,this.lastEmittedZoom=a)):(this.isZoomed=!1,this.panOffsetX=0,this.panOffsetY=0,this.updateView());return}if(!this.isClicked||!t.touches||!t.touches[0])return;const{pageX:i,pageY:o}=t.touches[0];if(t.preventDefault(),this.isZoomed&&this.pinchZoomLevel>1){const n=i-this.movementStart.x,s=o-this.movementStart.y;this.panOffsetX-=n*this.devicePixelRatio,this.panOffsetY-=s*this.devicePixelRatio,this.movementStart={x:i,y:o},this.updateView(this.pinchZoomLevel,this.panOffsetX,this.panOffsetY);return}this.drag(i,o)}keyDown(t){if(!this.isReady)return;const{keyCode:i}=t,o=this.keysReverse;switch(this.autoplay&&this.stopAutoplay(),Le(i,this.allowSpinY)&&(this.hasInteracted=!0,this.hideAllIcons(),this.hideHints()),i){case 37:o?this.moveLeft():this.moveRight();break;case 39:o?this.moveRight():this.moveLeft();break;case 38:this.allowSpinY&&(t.preventDefault(),o?this.moveTop():this.moveBottom());break;case 40:this.allowSpinY&&(t.preventDefault(),o?this.moveBottom():this.moveTop());break}}keyUp(t){const{keyCode:i}=t;Le(i,this.allowSpinY)&&this.showAllIcons()}moveActiveXIndexUp(t){this.orientation=Y.X,this.activeImageX=(this.activeImageX+t)%this.amountX}moveActiveXIndexDown(t){this.orientation=Y.X,this.activeImageX=(this.activeImageX-t+this.amountX)%this.amountX}moveActiveYIndexUp(t){this.orientation=Y.Y,this.activeImageY=(this.activeImageY+t)%this.amountY}moveActiveYIndexDown(t){this.orientation=Y.Y,this.activeImageY=(this.activeImageY-t+this.amountY)%this.amountY}moveRight(t,i=1){t&&this.activeImageX>=this.imagesX.length-1||(this.moveActiveXIndexUp(i),this.isZoomed||this.updateView())}moveLeft(t,i=1){t&&this.activeImageX<=0||(this.moveActiveXIndexDown(i),this.isZoomed||this.updateView())}moveTop(t,i=1){t&&this.activeImageY>=this.imagesY.length-1||(this.moveActiveYIndexUp(i),this.isZoomed||this.updateView())}moveBottom(t,i=1){t&&this.activeImageY<=0||(this.moveActiveYIndexDown(i),this.isZoomed||this.updateView())}onMoveHandler(t,i=1,o=1){t==="right"?this.moveRight(this.stopAtEdges,i):t==="left"?this.moveLeft(this.stopAtEdges,i):t==="up"?this.moveTop(this.stopAtEdges,o):t==="down"&&this.moveBottom(this.stopAtEdges,o),this.emit("onSpin",{direction:t,activeImageX:this.activeImageX,activeImageY:this.activeImageY,amountX:this.amountX,amountY:this.amountY})}updateView(t,i,o){const n=this.orientation===Y.X?this.activeImageX:this.activeImageY,s=this.orientation===Y.X?this.imagesX[this.activeImageX]:this.imagesY[this.activeImageY];this.hotspotsInstance&&!this.isZoomed&&!this.autoplay&&this.hotspotsInstance.updateHotspotPosition(n,this.orientation),this.hotspotTimelineIndicator&&this.orientation===Y.X&&this.updateHotspotTimelinePosition(),this.drawImageOnCanvas(s,t,i,o)}updatePercentageInLoader(t=0){this.loader&&(this.loader.innerText=t+"%")}adaptCanvasSize(t){const{naturalWidth:i,naturalHeight:o}=t;this.imageAspectRatio=i/o;const n=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:n,containerHeight:s})}drawImageOnCanvas(t,i=1,o=0,n=0){this.canvasWorker.postMessage({action:"drawImageOnCanvas",imageData:t,zoomScale:i,pointerX:o,pointerY:n})}pushImageToSet(t,i,o){o===Y.X?this.imagesX[i]=t:this.imagesY[i]=t}calculatePercentage(){const t=this.amountX+this.amountY,i=this.imagesX.length+this.imagesY.length;return Math.round(i/t*100)}onImageLoad(t,i,o){this.pushImageToSet(t,i,o),this.updatePercentageInLoader(this.calculatePercentage())}onFirstImageLoaded(t,i){this.createContainers(t),this.adaptCanvasSize(i),this.drawImageOnCanvas(i)}onAllImagesLoaded(){if(this.addAllIcons(),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.hotspots&&(this.hotspotsInstance=new Gn(this.hotspots,this.innerBox,this.imageAspectRatio),this.addHotspotTimeline(),this.showHotspotTimeline()),this.emit("onLoad",{imagesX:this.imagesX.length,imagesY:this.imagesY.length}),this.emit("onReady"),this.announce("360 degree view loaded. Use mouse drag or arrow keys to rotate."),this.hints!==!1&&!this.autoplay){const t=this.hints===!0||this.hints===void 0?Ce(this.viewerConfig,this.touchDevice):this.hints;t&&t.length>0&&(this.hintsOverlay=Ie(this.innerBox,t),ke(this.hintsOverlay))}this.autoplay&&(this.hideAllIcons(),Eo(this.play.bind(this))())}magnify(t){t.stopPropagation();const{src:i}=this.orientation===Y.Y?this.imagesY[this.activeImageY]:this.imagesX[this.activeImageX],n=(this.fullscreenView?document.body:this.container).offsetWidth*this.magnifier,s=Pi(i,n);this.showLoadingSpinner(),this.createGlass(),vo(s,a=>{this.hideLoadingSpinner(),this.magnified=!0,bo(t,this.innerBox,this.offset,a,this.glass,this.magnifier)},a=>{this.hideLoadingSpinner(),this.removeGlass(),this.emit("onError",{error:{message:a.message,url:a.url},errorCount:1,totalImages:1,errors:[{message:a.message,url:a.url}]})})}openFullscreenModal(t){t.stopPropagation(),window.document.body.style.overflow="hidden";const i=$i(this.container);new Ft(i,this.viewerConfig,!0),this.emit("onFullscreenOpen"),this.announce("Opened fullscreen mode. Press Escape to exit.")}closeFullscreenModal(t){t.stopPropagation(),document.body.removeChild(this.container.parentNode),window.document.body.style.overflow="visible",this.emit("onFullscreenClose"),this.announce("Exited fullscreen mode")}play(){if(this.isClicked)return;this.hide360ViewCircleIcon(),this.emit("onAutoplayStart");const t=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&&xo({autoplayBehavior:this.autoplayBehavior,activeImageX:this.activeImageX,activeImageY:this.activeImageY,amountX:this.amountX,amountY:this.amountY,autoplayReverse:this.autoplayReverse})){this.stopAutoplay();return}Io({autoplayBehavior:this.autoplayBehavior,activeImageX:this.activeImageX,activeImageY:this.activeImageY,amountX:this.amountX,amountY:this.amountY,autoplayReverse:this.autoplayReverse,spinDirection:this.spinDirection})&&(this.spinDirection=ko(this.spinDirection));const s=this.spinDirection==="y";wo({autoplayBehavior:this.autoplayBehavior,spinY:s,reversed:this.autoplayReverse,loopTriggers:i})},t)}stopAutoplay(){if(this.showAllIcons(),this.autoplay=!1,window.clearTimeout(this.loopTimeoutId),this.loopTimeoutId=null,this.emit("onAutoplayStop"),this.hints!==!1&&!this.hintsOverlay&&!this.hintsHidden){const t=this.hints===!0?Ce(this.viewerConfig,this.touchDevice):this.hints;t&&t.length>0&&(this.hintsOverlay=Ie(this.innerBox,t),ke(this.hintsOverlay))}}destroy(){this.stopAutoplay(),this.inertiaAnimationId&&(cancelAnimationFrame(this.inertiaAnimationId),this.inertiaAnimationId=null),this.removeEvents(),this.canvasWorker&&(this.canvasWorker.terminate(),this.canvasWorker=null),this.hotspotsInstance&&this.hotspotsInstance.destroy(),this.hintsOverlay&&this.hintsOverlay.parentNode&&(this.hintsOverlay.parentNode.removeChild(this.hintsOverlay),this.hintsOverlay=null),this.hotspotTimeline&&this.hotspotTimeline.parentNode&&(this.hotspotTimeline.parentNode.removeChild(this.hotspotTimeline),this.hotspotTimeline=null,this.hotspotTimelineIndicator=null),this.container&&(this.container.classList.remove("ci360-theme-dark"),this.container.innerHTML="")}addInitialIcon(){this.initialIcon||this.hide360Logo||(this.initialIcon=Bi(this.logoSrc),this.innerBox.appendChild(this.initialIcon))}showInitialIcon(){!this.initialIcon||this.hasInteracted||(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=Vi(),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=zi(),this.fullscreenIcon.onclick=this.openFullscreenModal.bind(this),this.iconsContainer.appendChild(this.fullscreenIcon))}addCloseFullscreenIcon(){this.fullscreenCloseIcon=Fi(),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=Di(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=Gi(),this.innerBox.appendChild(this.loadingSpinner)}showLoadingSpinner(){this.loadingSpinner&&(this.hideAllIcons(),this.loadingSpinner.style.opacity=1)}createTransitionOverlay(){this.transitionOverlay=Ui(),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)}hideHints(){!this.hintsOverlay||this.hintsHidden||(this.hintsHidden=!0,to(this.hintsOverlay))}addHotspotTimeline(){if(!this.hotspots||this.hotspotTimeline)return;const t=so(this.container,this.amountX,this.hotspots);if(!t)return;this.hotspotTimeline=t.element,this.hotspotTimelineIndicator=t.indicator,this.hotspotTimeline.querySelectorAll(".cloudimage-360-hotspot-timeline-dot").forEach(o=>{o.addEventListener("click",n=>{n.stopPropagation();const s=parseInt(o.getAttribute("data-frame"),10),l=o.getAttribute("data-hotspot-id");isNaN(s)||this.animateToFrame(s,l)})}),this.updateHotspotTimelinePosition()}showHotspotTimeline(){ao(this.hotspotTimeline)}hideHotspotTimeline(){lo(this.hotspotTimeline)}updateHotspotTimelinePosition(){ro(this.hotspotTimelineIndicator,this.activeImageX,this.amountX)}animateToFrame(t,i){if(this.hotspotsInstance&&this.hotspotsInstance.hidePopper(),this.isAnimatingToFrame||t===this.activeImageX){t===this.activeImageX&&i&&this.hotspotsInstance&&this.hotspotTimelineOnClick&&this.hotspotsInstance.showHotspotById(i);return}this.isAnimatingToFrame=!0,this.hasInteracted=!0,(this.autoplay||this.loopTimeoutId)&&(this.stopAutoplay(),this.autoplay=!1),this.inertiaAnimationId&&(cancelAnimationFrame(this.inertiaAnimationId),this.inertiaAnimationId=null);const o=this.activeImageX,n=(t-o+this.amountX)%this.amountX,s=(o-t+this.amountX)%this.amountX,l=n<=s,r=l?n:s;if(r===0){this.isAnimatingToFrame=!1;return}const a=30;let c=r;const h=()=>{if(c<=0){this.isAnimatingToFrame=!1,i&&this.hotspotsInstance&&this.hotspotTimelineOnClick&&setTimeout(()=>{this.hotspotsInstance.showHotspotById(i)},50);return}l?this.moveRight():this.moveLeft(),c--,c>0?setTimeout(h,a):(this.isAnimatingToFrame=!1,i&&this.hotspotsInstance&&this.hotspotTimelineOnClick&&setTimeout(()=>{this.hotspotsInstance.showHotspotById(i)},50))};h()}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(),this.showHotspotTimeline()}hideAllIcons(){this.hideInitialIcon(),this.hide360ViewCircleIcon(),this.hideMagnifierIcon(),this.hideFullscreenIcon(),this.hideHotspotTimeline()}removeLoader(){this.loader&&(this.innerBox.removeChild(this.loader),this.loader=null)}attachEvents(t,i,o){t&&this.addMouseEvents(),i&&this.addTouchEvents(),o&&this.addKeyboardEvents(),this.addEscKeyHandler()}removeEvents(){this.removeMouseEvents(),this.removeTouchEvents(),this.removeKeyboardEvents(),this.removeEscKeyHandler()}addMouseEvents(){this.boundMouseClick=this.mouseClick.bind(this),this.boundMouseDown=this.mouseDown.bind(this),this.boundMouseMove=ue(this.mouseMove.bind(this),fe),this.boundMouseUp=this.mouseUp.bind(this),this.boundMouseLeave=this.mouseLeave.bind(this),this.innerBox.addEventListener("click",this.boundMouseClick),this.innerBox.addEventListener("mousedown",this.boundMouseDown),this.innerBox.addEventListener("mouseleave",this.boundMouseLeave),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=ue(this.touchMove.bind(this),fe),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)}addEscKeyHandler(){this.boundEscHandler=t=>{t.keyCode===27&&(this.fullscreenView?this.closeFullscreenModal(t):this.isZoomed?this.removeZoom():this.glass&&this.removeGlass())},document.addEventListener("keydown",this.boundEscHandler)}removeEscKeyHandler(){document.removeEventListener("keydown",this.boundEscHandler)}removeMouseEvents(){this.innerBox.removeEventListener("click",this.boundMouseClick),this.innerBox.removeEventListener("mousedown",this.boundMouseDown),this.innerBox.removeEventListener("mouseleave",this.boundMouseLeave),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(t){this.iconsContainer=we(this.innerBox),this.canvas=Wi(this.innerBox,t),this.loader=ji(this.innerBox),this.ariaLiveRegion=Ki(this.innerBox);const i=this.canvas.transferControlToOffscreen();this.canvasWorker.postMessage({action:"initCanvas",offscreen:i,devicePixelRatio:this.devicePixelRatio},[i]),this.fullscreenView&&this.addCloseFullscreenIcon(),$t(this.innerBox,".cloudimage-360-placeholder")}update(t){this.isReady&&(this.stopAutoplay(),$t(this.innerBox,".cloudimage-360-icons-container"),this.init(this.container,t,!0),this.iconsContainer=we(this.innerBox),this.onAllImagesLoaded())}init(t,i,o){const n=i?Ai(i):Ei(t),{folder:s,apiVersion:l,filenameX:r,filenameY:a,imageListX:c,imageListY:h,indexZeroBase:u,amountX:f,amountY:p,draggable:x=!0,swipeable:g=!0,keys:v,keysReverse:m,bottomCircleOffset:y,autoplay:I,autoplayBehavior:w,playOnce:C,speed:b,autoplayReverse:k,fullscreen:E,magnifier:O,ciToken:S,ciFilters:L,ciTransformation:M,lazyload:T,dragSpeed:U,stopAtEdges:_,pointerZoom:P,imageInfo:B="black",initialIconShown:ut,bottomCircle:K,hotspots:ft,dragReverse:St,hide360Logo:nt,logoSrc:mt,inertia:et,pinchZoom:$,hints:st,theme:rt,hotspotTimelineOnClick:J=!0,aspectRatio:vt,onReady:ne,onLoad:At,onSpin:se,onAutoplayStart:zt,onAutoplayStop:re,onFullscreenOpen:ae,onFullscreenClose:Nt,onZoomIn:Vt,onZoomOut:le,onDragStart:ce,onDragEnd:Q,onError:gt}=n,Lt={ciToken:S,ciFilters:L,ciTransformation:M},bt=Gt(c,[]),at=Gt(h,[]);if(this.viewerConfig=n,this.amountX=bt.length||f,this.amountY=at.length||p,this.allowSpinX=!!this.amountX,this.allowSpinY=!!this.amountY,this.activeImageX=k?this.amountX-1:0,this.activeImageY=k?this.amountY-1:0,this.bottomCircleOffset=y,this.autoplay=I,this.autoplayBehavior=w,this.playOnce=C,this.speed=b,this.autoplayReverse=k,this.fullscreen=E,this.magnifier=O>1?Math.min(O,Oi):0,this.dragSpeed=Math.max(U,ki),this.stopAtEdges=_,this.ciParams=Lt,this.apiVersion=l,this.pointerZoom=P>1?Math.min(P,ge):null,this.keysReverse=m,this.info=B,this.keys=v,this.innerBox=this.innerBox??Ni(this.container),vt&&(this.container.style.aspectRatio=vt),this.initialIconShown=ut,this.bottomCircle=K,this.spinDirection=Co(this.autoplayBehavior,this.allowSpinX,this.allowSpinY),this.dragReverse=St,this.hotspots=ft,this.hide360Logo=nt,this.logoSrc=mt,this.inertia=et,this.pinchZoom=$,this.hints=st,this.hotspotTimelineOnClick=J,rt==="dark"?this.container.classList.add("ci360-theme-dark"):rt==="light"&&this.container.classList.remove("ci360-theme-dark"),this.onReady=ne,this.onLoad=At,this.onSpin=se,this.onAutoplayStart=zt,this.onAutoplayStop=re,this.onFullscreenOpen=ae,this.onFullscreenClose=Nt,this.onZoomIn=Vt,this.onZoomOut=le,this.onDragStart=ce,this.onDragEnd=Q,this.onError=gt,this.srcXConfig={folder:s,filename:r,imageList:bt,container:t,innerBox:this.innerBox,apiVersion:l,ciParams:Lt,lazyload:T,amount:this.amountX,indexZeroBase:u,autoplayReverse:k,orientation:Y.X},this.srcYConfig={...this.srcXConfig,filename:a,imageList:at,orientation:Y.Y,amount:this.amountY},o&&this.removeEvents(),this.attachEvents(x,g,v),o)return;const Tt=(this.fullscreenView?document.body:this.container).offsetWidth,Yt=this.allowSpinX&&!bt.length?yt(this.srcXConfig,Tt):null,Xt=this.allowSpinY&&!at.length?yt(this.srcYConfig,Tt):null,Pt=Un=>{ye({cdnPathX:Yt,cdnPathY:Xt,configX:this.srcXConfig,configY:this.srcYConfig,onImageLoad:(Rt,_n,Kn)=>this.onImageLoad(Rt,_n,Kn),onFirstImageLoad:Rt=>this.onFirstImageLoaded(Un,Rt),onAllImagesLoad:this.onAllImagesLoaded.bind(this),onError:Rt=>this.emit("onError",Rt)})};this.allowSpinX?Ee(Yt,this.srcXConfig,Pt):this.allowSpinY&&Ee(Xt,this.srcYConfig,Pt)}}class Qe{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(t,i,o){if(!t)return;const n=t.id||this.generateId();t.id||(t.id=n);const s=new Ft(t,i,o);return this.views.set(n,s),s}initAll(t="cloudimage-360"){[...document.querySelectorAll(`.${t}`)].filter(Boolean).forEach(o=>{const n=o.id||this.generateId();o.id||(o.id=n);const s=new Ft(o);this.views.set(n,s)})}destroy(t){const i=this.getViewById(t);i&&(i.destroy(),this.views.delete(t))}destroyAll(){this.views.forEach(t=>{t.destroy()}),this.views.clear()}getViewById(t){return this.views.get(t)}getViews(){return Array.from(this.views.values())}updateView(t,i){const o=this.getViewById(t);if(!o)return null;const n={...o.viewerConfig,...i};o.destroy();const s=document.getElementById(t);return this.init(s,n)}}return window.CI360=Qe,Qe}();
|
|
35
|
+
`,o},Ae=(e,t,i)=>{const{innerBox:o,imageList:s,lazyload:n}=t||{},[l]=s,r=l||xo(e,t),a=vo(r),c=Ee(a,n,"cloudimage-lazy"),h=Ee(a,!1,"cloudimage-360-placeholder"),p=f=>{Gt(o,".cloudimage-lazy"),i&&i({event:f,width:c.width,height:c.height,naturalWidth:c.naturalWidth,naturalHeight:c.naturalHeight,src:a})};c.onload=p,o.appendChild(c),o.appendChild(h),bo(c)},Io=(e,t,i)=>{const o=new Image;o.src=e,o.onload=s=>{t&&t({event:s,width:o.width,height:o.height,naturalWidth:o.naturalWidth,naturalHeight:o.naturalHeight,src:e})},o.onerror=s=>{const n=new Error(`Failed to load image: ${e}`);n.url=e,n.event=s,i?i(n):console.error(n.message)}},Co=(e,t)=>{const i=t.getBoundingClientRect(),o=e.touches?e.touches[0].clientX:e.clientX,s=e.touches?e.touches[0].clientY:e.clientY;return{x:o-i.left,y:s-i.top}},_t=(e,t,i)=>{const{container:o,w:s,h:n,zoom:l,bw:r,offsetX:a,offsetY:c}=t,h=Co(e,o);let p=h.x,f=h.y;p=Math.max(s/l,Math.min(p,o.offsetWidth-s/l)),f=Math.max(n/l,Math.min(f,o.offsetHeight-n/l)),i.style.left=`${p-s}px`,i.style.top=`${f-n}px`;const u=(p-a)*l-s+r,x=(f-c)*l-n+r;i.style.backgroundPosition=`-${u}px -${x}px`},ko=(e,t,i,o,s,n)=>{const{x:l=0,y:r=0}=i||{},a=(t.offsetWidth-l*2)*n,c=(t.offsetHeight-r*2)*n;if(!s)return;s.setAttribute("class","cloudimage-360-img-magnifier-glass"),t.prepend(s),s.style.backgroundImage=`url('${o.src}')`,s.style.backgroundSize=`${a}px ${c}px`;const h=3,p=s.offsetWidth/2,f=s.offsetHeight/2,u={container:t,w:p,h:f,zoom:n,bw:h,offsetX:l,offsetY:r};_t(e,u,s);const x=g=>{_t(g,u,s)},y=g=>{g.preventDefault(),_t(g,u,s)};s.addEventListener("mousemove",x),t.addEventListener("mousemove",x),t.addEventListener("touchmove",y)},Oo=(e,t,i)=>{const{clientX:o,clientY:s}=e,n=t.getBoundingClientRect(),l=t.width/(n.width*i),r=t.height/(n.height*i),a=(o-n.left)*l,c=(s-n.top)*r;return{offsetX:a,offsetY:c}},Eo=(e,t,i)=>{const o=e/i,s=t/i;return{zoomedWidth:o,zoomedHeight:s}},Ao=({pointerX:e,pointerY:t,imageData:i,zoomedWidth:o,zoomedHeight:s,drawWidth:n,drawHeight:l})=>{const{naturalWidth:r,naturalHeight:a}=i;let c=e/n*r-o/2,h=t/l*a-s/2;const p=Math.max(0,r-o),f=Math.max(0,a-s);return c=Math.max(0,Math.min(c,p)),h=Math.max(0,Math.min(h,f)),{zoomOffsetX:c,zoomOffsetY:h}},Se=(e,{bottom:t,top:i})=>{e?t():i()},Te=(e,{left:t,right:i})=>{e?t():i()},So=({autoplayBehavior:e,spinY:t,reversed:i,loopTriggers:o})=>{switch(e){case X.SPIN_XY:case X.SPIN_YX:t?Se(i,o):Te(i,o);break;case X.SPIN_Y:Se(i,o);break;case X.SPIN_X:default:Te(i,o)}},To=({autoplayBehavior:e,activeImageX:t,activeImageY:i,amountX:o,amountY:s,autoplayReverse:n})=>{const l=(r,a)=>{const c=a-1;return n?r===0:r===c};switch(e){case X.SPIN_XY:case X.SPIN_Y:return l(i,s);case X.SPIN_X:case X.SPIN_YX:default:return l(t,o)}},Lo=({autoplayBehavior:e,activeImageX:t,activeImageY:i,amountX:o,amountY:s,autoplayReverse:n,spinDirection:l})=>{const r=t===(n?0:o-1),a=i===(n?0:s-1);return e===X.SPIN_XY||e===X.SPIN_YX?l==="x"&&r||l==="y"&&a:!1},Po=(e,t,i)=>{if(!i)return"x";if(!t)return"y";switch(e){case X.SPIN_XY:return"x";case X.SPIN_YX:return"y";case X.SPIN_Y:return"y";case X.SPIN_X:default:return"x"}},Mo=e=>e==="x"?"y":"x",Le=(e,t)=>{const i=[...ki];return t?[...i,...Oi].includes(e):i.includes(e)},Pe=({deltaX:e,deltaY:t,reversed:i,allowSpinX:o,allowSpinY:s,threshold:n=0})=>{const l=o&&!s||s&&!o?0:n,r=Math.abs(e),a=Math.abs(t);return o&&r-l>a?i?e>0?"left":"right":e>0?"right":"left":s&&a-l>r?i?t>0?"up":"down":t>0?"down":"up":null},Yo=()=>"ontouchstart"in window||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0,Xo=(e,t=150)=>{let i;return function(...o){clearTimeout(i),i=setTimeout(()=>{e.apply(this,o)},t)}},Me="KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2NvbnN0IHY9KHQsYSxlKT0+e2NvbnN0IHM9dC9lLG49YS9lO3JldHVybnt6b29tZWRXaWR0aDpzLHpvb21lZEhlaWdodDpufX0sej0oe3BvaW50ZXJYOnQscG9pbnRlclk6YSxpbWFnZURhdGE6ZSx6b29tZWRXaWR0aDpzLHpvb21lZEhlaWdodDpuLGRyYXdXaWR0aDppLGRyYXdIZWlnaHQ6Y30pPT57Y29uc3R7bmF0dXJhbFdpZHRoOmcsbmF0dXJhbEhlaWdodDp1fT1lO2xldCBmPXQvaSpnLXMvMixtPWEvYyp1LW4vMjtjb25zdCB4PU1hdGgubWF4KDAsZy1zKSxPPU1hdGgubWF4KDAsdS1uKTtyZXR1cm4gZj1NYXRoLm1heCgwLE1hdGgubWluKGYseCkpLG09TWF0aC5tYXgoMCxNYXRoLm1pbihtLE8pKSx7em9vbU9mZnNldFg6Zix6b29tT2Zmc2V0WTptfX07bGV0IG8saCxyLGQsbCx3O3NlbGYub25tZXNzYWdlPWFzeW5jIHQ9Pntjb25zdHthY3Rpb246YSxvZmZzY3JlZW46ZSxkZXZpY2VQaXhlbFJhdGlvOnMsaW1hZ2VEYXRhOm4sem9vbVNjYWxlOmkscG9pbnRlclg6Yyxwb2ludGVyWTpnLGltYWdlQXNwZWN0UmF0aW86dSxjb250YWluZXJXaWR0aDpmLGNvbnRhaW5lckhlaWdodDptfT10LmRhdGE7c3dpdGNoKGEpe2Nhc2UiaW5pdENhbnZhcyI6QyhlLHMpO2JyZWFrO2Nhc2UiYWRhcHRDYW52YXNTaXplIjpwKHUsZixtKTticmVhaztjYXNlImRyYXdJbWFnZU9uQ2FudmFzIjpJKG4saSxjLGcpO2JyZWFrfX07Y29uc3QgQz0odCxhKT0+e289dCxoPW8uZ2V0Q29udGV4dCgiMmQiKSxyPWF9LHA9KHQsYSxlKT0+e2NvbnN0IHM9YS9lO3c9dD5zLG8ud2lkdGg9YSpyLG8uaGVpZ2h0PWUqcixoLnNjYWxlKHIsciksdz8oZD1hLGw9YS90KToobD1lLGQ9ZSp0KSxoLmltYWdlU21vb3RoaW5nRW5hYmxlZD0hMCxoLmltYWdlU21vb3RoaW5nUXVhbGl0eT0iaGlnaCJ9LEk9KHQ9e30sYT0xLGU9MCxzPTApPT57Y29uc3R7Yml0bWFwSW1hZ2U6bn09dDtpZighb3x8IW4pcmV0dXJuO2xldCBpLGM7aWYodz8oaT0wLGM9KG8uaGVpZ2h0L3ItbCkvMik6KGk9KG8ud2lkdGgvci1kKS8yLGM9MCksaC5jbGVhclJlY3QoMCwwLG8ud2lkdGgsby5oZWlnaHQpLGEhPT0xKXtjb25zdHtuYXR1cmFsV2lkdGg6ZyxuYXR1cmFsSGVpZ2h0OnV9PXQse3pvb21lZFdpZHRoOmYsem9vbWVkSGVpZ2h0Om19PXYoZyx1LGEpLHt6b29tT2Zmc2V0WDp4LHpvb21PZmZzZXRZOk99PXooe3BvaW50ZXJYOmUscG9pbnRlclk6cyxpbWFnZURhdGE6dCx6b29tZWRXaWR0aDpmLHpvb21lZEhlaWdodDptLGRyYXdXaWR0aDpkLGRyYXdIZWlnaHQ6bH0pO2guZHJhd0ltYWdlKG4seCxPLGYsbSxpLGMsZCxsKX1lbHNlIGguZHJhd0ltYWdlKG4saSxjLGQsbCl9fSkoKTsK",Ro=e=>Uint8Array.from(atob(e),t=>t.charCodeAt(0)),Ye=typeof self<"u"&&self.Blob&&new Blob([Ro(Me)],{type:"text/javascript;charset=utf-8"});function Ho(e){let t;try{if(t=Ye&&(self.URL||self.webkitURL).createObjectURL(Ye),!t)throw"";const i=new Worker(t,{name:e==null?void 0:e.name});return i.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(t)}),i}catch{return new Worker("data:text/javascript;base64,"+Me,{name:e==null?void 0:e.name})}finally{t&&(self.URL||self.webkitURL).revokeObjectURL(t)}}class Zo{constructor(){this.canvas=null,this.ctx=null,this.dpr=1,this.drawWidth=0,this.drawHeight=0,this.wideImage=!1}postMessage(t){const{action:i,offscreen:o,devicePixelRatio:s,imageData:n,zoomScale:l,pointerX:r,pointerY:a,imageAspectRatio:c,containerWidth:h,containerHeight:p}=t;switch(i){case"initCanvas":this.initCanvas(o,s);break;case"adaptCanvasSize":this.adaptCanvasSize(c,h,p);break;case"drawImageOnCanvas":this.drawImageOnCanvas(n,l,r,a);break}}terminate(){var t,i;this.ctx&&this.ctx.clearRect(0,0,((t=this.canvas)==null?void 0:t.width)||0,((i=this.canvas)==null?void 0:i.height)||0),this.canvas=null,this.ctx=null}initCanvas(t,i){this.canvas=t,this.ctx=t.getContext("2d"),this.dpr=i}adaptCanvasSize(t,i,o){if(!this.canvas||!this.ctx)return;const s=i/o;this.wideImage=t>s,this.canvas.width=i*this.dpr,this.canvas.height=o*this.dpr,this.ctx.scale(this.dpr,this.dpr),this.wideImage?(this.drawWidth=i,this.drawHeight=i/t):(this.drawHeight=o,this.drawWidth=o*t),this.ctx.imageSmoothingEnabled=!0,this.ctx.imageSmoothingQuality="high"}drawImageOnCanvas(t={},i=1,o=0,s=0){const{bitmapImage:n}=t;if(!this.canvas||!this.ctx||!n)return;let l,r;if(this.wideImage?(l=0,r=(this.canvas.height/this.dpr-this.drawHeight)/2):(l=(this.canvas.width/this.dpr-this.drawWidth)/2,r=0),this.ctx.clearRect(0,0,this.canvas.width,this.canvas.height),i!==1){const{naturalWidth:a,naturalHeight:c}=t,{zoomedWidth:h,zoomedHeight:p}=Eo(a,c,i),{zoomOffsetX:f,zoomOffsetY:u}=Ao({pointerX:o,pointerY:s,imageData:t,zoomedWidth:h,zoomedHeight:p,drawWidth:this.drawWidth,drawHeight:this.drawHeight});this.ctx.drawImage(n,f,u,h,p,l,r,this.drawWidth,this.drawHeight)}else this.ctx.drawImage(n,l,r,this.drawWidth,this.drawHeight)}}const Do=new Set(["p","span","div","br","hr","strong","em","b","i","u","s","h1","h2","h3","h4","h5","h6","ul","ol","li","a","img","button","table","thead","tbody","tr","th","td","blockquote","pre","code","label","input","select","option","textarea","svg","path","circle","rect","line","polyline","polygon","ellipse","g","text","tspan","defs","use","symbol","clippath","mask","lineargradient","radialgradient","stop"]),Xe={a:["href","title","target","rel"],img:["src","alt","title","width","height"],button:["type","disabled","name","value"],input:["type","name","value","placeholder","disabled","readonly","checked","min","max","step"],select:["name","disabled","multiple"],option:["value","disabled","selected"],textarea:["name","placeholder","disabled","readonly","rows","cols"],label:["for"],svg:["viewbox","width","height","fill","stroke","xmlns","preserveaspectratio"],path:["d","fill","stroke","stroke-width","stroke-linecap","stroke-linejoin","transform"],circle:["cx","cy","r","fill","stroke","stroke-width"],rect:["x","y","width","height","rx","ry","fill","stroke","stroke-width"],line:["x1","y1","x2","y2","stroke","stroke-width"],polyline:["points","fill","stroke","stroke-width"],polygon:["points","fill","stroke","stroke-width"],ellipse:["cx","cy","rx","ry","fill","stroke","stroke-width"],g:["transform","fill","stroke"],text:["x","y","dx","dy","text-anchor","fill","font-size","font-family","font-weight"],tspan:["x","y","dx","dy"],use:["href","xlink:href","x","y","width","height"],lineargradient:["id","x1","y1","x2","y2","gradientunits"],radialgradient:["id","cx","cy","r","fx","fy","gradientunits"],stop:["offset","stop-color","stop-opacity"],clippath:["id"],mask:["id"],"*":["class","id","style"]},Bo=[/javascript:/gi,/vbscript:/gi,/data:/gi,/on\w+\s*=/gi],zo=e=>{if(typeof e!="string")return"";const t=document.createElement("template");t.innerHTML=e;const i=o=>{if(Array.from(o.childNodes).forEach(i),o.nodeType===Node.ELEMENT_NODE){const n=o.tagName.toLowerCase();if(!Do.has(n)){if(n==="script"||n==="style"){o.remove();return}const a=document.createTextNode(o.textContent);o.parentNode.replaceChild(a,o);return}const l=[...Xe[n]||[],...Xe["*"]||[]];if(Array.from(o.attributes).forEach(a=>{const c=a.name.toLowerCase();if(c.startsWith("on")){o.removeAttribute(a.name);return}if(!l.includes(c)){o.removeAttribute(a.name);return}let h=a.value;Bo.forEach(p=>{p.test(h)&&o.removeAttribute(a.name)})}),n==="a"){const a=o.getAttribute("href");a&&(/^(https?:|mailto:|tel:|#|\/)/i.test(a.trim())||o.removeAttribute("href")),o.getAttribute("target")==="_blank"&&o.setAttribute("rel","noopener noreferrer")}if(n==="img"){const a=o.getAttribute("src");a&&(/^(https?:|\/|data:image\/)/i.test(a.trim())||o.removeAttribute("src"))}}};return i(t.content),t.innerHTML},Wo=e=>e==="x"?P.X:P.Y,No=(e,t,i)=>e.filter(o=>Wo(o.orientation)===i&&t in o.positions),Fo=(e,t)=>{const i=document.createElement("button");return i.id=e,i.className="cloudimage-360-hotspot",i.dataset.hotspotId=e,i.setAttribute("type","button"),i.setAttribute("aria-label",t||`Hotspot ${e}`),i.setAttribute("aria-haspopup","true"),i.setAttribute("aria-expanded","false"),i},Vo=e=>{const t=Object.entries(e).sort(([n],[l])=>Number(n)-Number(l));let i=null,o=null;const s={};for(const[n,l]of t)if(!l)s[n]={x:i,y:o};else{const{x:r,y:a}=l;r!=null&&(i=r),a!=null&&(o=a),s[n]={x:r||i,y:a||o}}return s},jo=e=>[{name:"offset",options:{offset:[0,10]}},{name:"preventOverflow",options:{boundary:e}}],$o=(e,t)=>{const i=document.createElement("div");return i.className="cloudimage-360-popper",i.id=`cloudimage-360-popper-${t}`,i.dataset.popperId=t,i.setAttribute("role","tooltip"),i.setAttribute("aria-hidden","false"),typeof e=="string"&&/<\/?[a-z][\s\S]*>/i.test(e)?i.innerHTML=zo(e):i.textContent=e,document.body.appendChild(i),i},Go=e=>{const t=[...e];return t.forEach((i,o)=>{const s={...Vo(i.positions)};t[o].initialPositions=s,t[o].positions=s}),t},Uo=({newWidth:e,newHeight:t,initialContainerSize:i,imageAspectRatio:o,hotspotsConfig:s})=>{const[n,l]=i;let r=e,a=t,c=0,h=0;const p=e/t;o>p?(a=e/o,h=(t-a)/2):(r=t*o,c=(e-r)/2);const u=r/n,x=a/l;return s.map(y=>{const g={};return Object.entries(y.initialPositions).forEach(([k,O])=>{g[k]={x:O.x*u+c,y:O.y*x+h}}),{...y,positions:g}})};var H="top",W="bottom",N="right",Z="left",Kt="auto",It=[H,W,N,Z],at="start",Ct="end",_o="clippingParents",Re="viewport",kt="popper",Ko="reference",He=It.reduce(function(e,t){return e.concat([t+"-"+at,t+"-"+Ct])},[]),Ze=[].concat(It,[Kt]).reduce(function(e,t){return e.concat([t,t+"-"+at,t+"-"+Ct])},[]),Jo="beforeRead",Qo="read",qo="afterRead",ts="beforeMain",es="main",is="afterMain",os="beforeWrite",ss="write",ns="afterWrite",rs=[Jo,Qo,qo,ts,es,is,os,ss,ns];function V(e){return e?(e.nodeName||"").toLowerCase():null}function D(e){if(e==null)return window;if(e.toString()!=="[object Window]"){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function it(e){var t=D(e).Element;return e instanceof t||e instanceof Element}function F(e){var t=D(e).HTMLElement;return e instanceof t||e instanceof HTMLElement}function Jt(e){if(typeof ShadowRoot>"u")return!1;var t=D(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot}function as(e){var t=e.state;Object.keys(t.elements).forEach(function(i){var o=t.styles[i]||{},s=t.attributes[i]||{},n=t.elements[i];!F(n)||!V(n)||(Object.assign(n.style,o),Object.keys(s).forEach(function(l){var r=s[l];r===!1?n.removeAttribute(l):n.setAttribute(l,r===!0?"":r)}))})}function ls(e){var t=e.state,i={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,i.popper),t.styles=i,t.elements.arrow&&Object.assign(t.elements.arrow.style,i.arrow),function(){Object.keys(t.elements).forEach(function(o){var s=t.elements[o],n=t.attributes[o]||{},l=Object.keys(t.styles.hasOwnProperty(o)?t.styles[o]:i[o]),r=l.reduce(function(a,c){return a[c]="",a},{});!F(s)||!V(s)||(Object.assign(s.style,r),Object.keys(n).forEach(function(a){s.removeAttribute(a)}))})}}const cs={name:"applyStyles",enabled:!0,phase:"write",fn:as,effect:ls,requires:["computeStyles"]};function j(e){return e.split("-")[0]}var ot=Math.max,Ht=Math.min,lt=Math.round;function Qt(){var e=navigator.userAgentData;return e!=null&&e.brands&&Array.isArray(e.brands)?e.brands.map(function(t){return t.brand+"/"+t.version}).join(" "):navigator.userAgent}function De(){return!/^((?!chrome|android).)*safari/i.test(Qt())}function ct(e,t,i){t===void 0&&(t=!1),i===void 0&&(i=!1);var o=e.getBoundingClientRect(),s=1,n=1;t&&F(e)&&(s=e.offsetWidth>0&<(o.width)/e.offsetWidth||1,n=e.offsetHeight>0&<(o.height)/e.offsetHeight||1);var l=it(e)?D(e):window,r=l.visualViewport,a=!De()&&i,c=(o.left+(a&&r?r.offsetLeft:0))/s,h=(o.top+(a&&r?r.offsetTop:0))/n,p=o.width/s,f=o.height/n;return{width:p,height:f,top:h,right:c+p,bottom:h+f,left:c,x:c,y:h}}function qt(e){var t=ct(e),i=e.offsetWidth,o=e.offsetHeight;return Math.abs(t.width-i)<=1&&(i=t.width),Math.abs(t.height-o)<=1&&(o=t.height),{x:e.offsetLeft,y:e.offsetTop,width:i,height:o}}function Be(e,t){var i=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(i&&Jt(i)){var o=t;do{if(o&&e.isSameNode(o))return!0;o=o.parentNode||o.host}while(o)}return!1}function G(e){return D(e).getComputedStyle(e)}function hs(e){return["table","td","th"].indexOf(V(e))>=0}function tt(e){return((it(e)?e.ownerDocument:e.document)||window.document).documentElement}function Zt(e){return V(e)==="html"?e:e.assignedSlot||e.parentNode||(Jt(e)?e.host:null)||tt(e)}function ze(e){return!F(e)||G(e).position==="fixed"?null:e.offsetParent}function ds(e){var t=/firefox/i.test(Qt()),i=/Trident/i.test(Qt());if(i&&F(e)){var o=G(e);if(o.position==="fixed")return null}var s=Zt(e);for(Jt(s)&&(s=s.host);F(s)&&["html","body"].indexOf(V(s))<0;){var n=G(s);if(n.transform!=="none"||n.perspective!=="none"||n.contain==="paint"||["transform","perspective"].indexOf(n.willChange)!==-1||t&&n.willChange==="filter"||t&&n.filter&&n.filter!=="none")return s;s=s.parentNode}return null}function Ot(e){for(var t=D(e),i=ze(e);i&&hs(i)&&G(i).position==="static";)i=ze(i);return i&&(V(i)==="html"||V(i)==="body"&&G(i).position==="static")?t:i||ds(e)||t}function te(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function Et(e,t,i){return ot(e,Ht(t,i))}function ps(e,t,i){var o=Et(e,t,i);return o>i?i:o}function We(){return{top:0,right:0,bottom:0,left:0}}function Ne(e){return Object.assign({},We(),e)}function Fe(e,t){return t.reduce(function(i,o){return i[o]=e,i},{})}var us=function(t,i){return t=typeof t=="function"?t(Object.assign({},i.rects,{placement:i.placement})):t,Ne(typeof t!="number"?t:Fe(t,It))};function ms(e){var t,i=e.state,o=e.name,s=e.options,n=i.elements.arrow,l=i.modifiersData.popperOffsets,r=j(i.placement),a=te(r),c=[Z,N].indexOf(r)>=0,h=c?"height":"width";if(!(!n||!l)){var p=us(s.padding,i),f=qt(n),u=a==="y"?H:Z,x=a==="y"?W:N,y=i.rects.reference[h]+i.rects.reference[a]-l[a]-i.rects.popper[h],g=l[a]-i.rects.reference[a],k=Ot(n),O=k?a==="y"?k.clientHeight||0:k.clientWidth||0:0,w=y/2-g/2,b=p[u],C=O-f[h]-p[x],m=O/2-f[h]/2+w,v=Et(b,m,C),I=a;i.modifiersData[o]=(t={},t[I]=v,t.centerOffset=v-m,t)}}function fs(e){var t=e.state,i=e.options,o=i.element,s=o===void 0?"[data-popper-arrow]":o;s!=null&&(typeof s=="string"&&(s=t.elements.popper.querySelector(s),!s)||Be(t.elements.popper,s)&&(t.elements.arrow=s))}const gs={name:"arrow",enabled:!0,phase:"main",fn:ms,effect:fs,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function ht(e){return e.split("-")[1]}var vs={top:"auto",right:"auto",bottom:"auto",left:"auto"};function bs(e,t){var i=e.x,o=e.y,s=t.devicePixelRatio||1;return{x:lt(i*s)/s||0,y:lt(o*s)/s||0}}function Ve(e){var t,i=e.popper,o=e.popperRect,s=e.placement,n=e.variation,l=e.offsets,r=e.position,a=e.gpuAcceleration,c=e.adaptive,h=e.roundOffsets,p=e.isFixed,f=l.x,u=f===void 0?0:f,x=l.y,y=x===void 0?0:x,g=typeof h=="function"?h({x:u,y}):{x:u,y};u=g.x,y=g.y;var k=l.hasOwnProperty("x"),O=l.hasOwnProperty("y"),w=Z,b=H,C=window;if(c){var m=Ot(i),v="clientHeight",I="clientWidth";if(m===D(i)&&(m=tt(i),G(m).position!=="static"&&r==="absolute"&&(v="scrollHeight",I="scrollWidth")),m=m,s===H||(s===Z||s===N)&&n===Ct){b=W;var E=p&&m===C&&C.visualViewport?C.visualViewport.height:m[v];y-=E-o.height,y*=a?1:-1}if(s===Z||(s===H||s===W)&&n===Ct){w=N;var A=p&&m===C&&C.visualViewport?C.visualViewport.width:m[I];u-=A-o.width,u*=a?1:-1}}var T=Object.assign({position:r},c&&vs),R=h===!0?bs({x:u,y},D(i)):{x:u,y};if(u=R.x,y=R.y,a){var L;return Object.assign({},T,(L={},L[b]=O?"0":"",L[w]=k?"0":"",L.transform=(C.devicePixelRatio||1)<=1?"translate("+u+"px, "+y+"px)":"translate3d("+u+"px, "+y+"px, 0)",L))}return Object.assign({},T,(t={},t[b]=O?y+"px":"",t[w]=k?u+"px":"",t.transform="",t))}function ys(e){var t=e.state,i=e.options,o=i.gpuAcceleration,s=o===void 0?!0:o,n=i.adaptive,l=n===void 0?!0:n,r=i.roundOffsets,a=r===void 0?!0:r,c={placement:j(t.placement),variation:ht(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:s,isFixed:t.options.strategy==="fixed"};t.modifiersData.popperOffsets!=null&&(t.styles.popper=Object.assign({},t.styles.popper,Ve(Object.assign({},c,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:l,roundOffsets:a})))),t.modifiersData.arrow!=null&&(t.styles.arrow=Object.assign({},t.styles.arrow,Ve(Object.assign({},c,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:a})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})}const ws={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:ys,data:{}};var Dt={passive:!0};function xs(e){var t=e.state,i=e.instance,o=e.options,s=o.scroll,n=s===void 0?!0:s,l=o.resize,r=l===void 0?!0:l,a=D(t.elements.popper),c=[].concat(t.scrollParents.reference,t.scrollParents.popper);return n&&c.forEach(function(h){h.addEventListener("scroll",i.update,Dt)}),r&&a.addEventListener("resize",i.update,Dt),function(){n&&c.forEach(function(h){h.removeEventListener("scroll",i.update,Dt)}),r&&a.removeEventListener("resize",i.update,Dt)}}const Is={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:xs,data:{}};var Cs={left:"right",right:"left",bottom:"top",top:"bottom"};function Bt(e){return e.replace(/left|right|bottom|top/g,function(t){return Cs[t]})}var ks={start:"end",end:"start"};function je(e){return e.replace(/start|end/g,function(t){return ks[t]})}function ee(e){var t=D(e),i=t.pageXOffset,o=t.pageYOffset;return{scrollLeft:i,scrollTop:o}}function ie(e){return ct(tt(e)).left+ee(e).scrollLeft}function Os(e,t){var i=D(e),o=tt(e),s=i.visualViewport,n=o.clientWidth,l=o.clientHeight,r=0,a=0;if(s){n=s.width,l=s.height;var c=De();(c||!c&&t==="fixed")&&(r=s.offsetLeft,a=s.offsetTop)}return{width:n,height:l,x:r+ie(e),y:a}}function Es(e){var t,i=tt(e),o=ee(e),s=(t=e.ownerDocument)==null?void 0:t.body,n=ot(i.scrollWidth,i.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),l=ot(i.scrollHeight,i.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),r=-o.scrollLeft+ie(e),a=-o.scrollTop;return G(s||i).direction==="rtl"&&(r+=ot(i.clientWidth,s?s.clientWidth:0)-n),{width:n,height:l,x:r,y:a}}function oe(e){var t=G(e),i=t.overflow,o=t.overflowX,s=t.overflowY;return/auto|scroll|overlay|hidden/.test(i+s+o)}function $e(e){return["html","body","#document"].indexOf(V(e))>=0?e.ownerDocument.body:F(e)&&oe(e)?e:$e(Zt(e))}function At(e,t){var i;t===void 0&&(t=[]);var o=$e(e),s=o===((i=e.ownerDocument)==null?void 0:i.body),n=D(o),l=s?[n].concat(n.visualViewport||[],oe(o)?o:[]):o,r=t.concat(l);return s?r:r.concat(At(Zt(l)))}function se(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function As(e,t){var i=ct(e,!1,t==="fixed");return i.top=i.top+e.clientTop,i.left=i.left+e.clientLeft,i.bottom=i.top+e.clientHeight,i.right=i.left+e.clientWidth,i.width=e.clientWidth,i.height=e.clientHeight,i.x=i.left,i.y=i.top,i}function Ge(e,t,i){return t===Re?se(Os(e,i)):it(t)?As(t,i):se(Es(tt(e)))}function Ss(e){var t=At(Zt(e)),i=["absolute","fixed"].indexOf(G(e).position)>=0,o=i&&F(e)?Ot(e):e;return it(o)?t.filter(function(s){return it(s)&&Be(s,o)&&V(s)!=="body"}):[]}function Ts(e,t,i,o){var s=t==="clippingParents"?Ss(e):[].concat(t),n=[].concat(s,[i]),l=n[0],r=n.reduce(function(a,c){var h=Ge(e,c,o);return a.top=ot(h.top,a.top),a.right=Ht(h.right,a.right),a.bottom=Ht(h.bottom,a.bottom),a.left=ot(h.left,a.left),a},Ge(e,l,o));return r.width=r.right-r.left,r.height=r.bottom-r.top,r.x=r.left,r.y=r.top,r}function Ue(e){var t=e.reference,i=e.element,o=e.placement,s=o?j(o):null,n=o?ht(o):null,l=t.x+t.width/2-i.width/2,r=t.y+t.height/2-i.height/2,a;switch(s){case H:a={x:l,y:t.y-i.height};break;case W:a={x:l,y:t.y+t.height};break;case N:a={x:t.x+t.width,y:r};break;case Z:a={x:t.x-i.width,y:r};break;default:a={x:t.x,y:t.y}}var c=s?te(s):null;if(c!=null){var h=c==="y"?"height":"width";switch(n){case at:a[c]=a[c]-(t[h]/2-i[h]/2);break;case Ct:a[c]=a[c]+(t[h]/2-i[h]/2);break}}return a}function St(e,t){t===void 0&&(t={});var i=t,o=i.placement,s=o===void 0?e.placement:o,n=i.strategy,l=n===void 0?e.strategy:n,r=i.boundary,a=r===void 0?_o:r,c=i.rootBoundary,h=c===void 0?Re:c,p=i.elementContext,f=p===void 0?kt:p,u=i.altBoundary,x=u===void 0?!1:u,y=i.padding,g=y===void 0?0:y,k=Ne(typeof g!="number"?g:Fe(g,It)),O=f===kt?Ko:kt,w=e.rects.popper,b=e.elements[x?O:f],C=Ts(it(b)?b:b.contextElement||tt(e.elements.popper),a,h,l),m=ct(e.elements.reference),v=Ue({reference:m,element:w,placement:s}),I=se(Object.assign({},w,v)),E=f===kt?I:m,A={top:C.top-E.top+k.top,bottom:E.bottom-C.bottom+k.bottom,left:C.left-E.left+k.left,right:E.right-C.right+k.right},T=e.modifiersData.offset;if(f===kt&&T){var R=T[s];Object.keys(A).forEach(function(L){var U=[N,W].indexOf(L)>=0?1:-1,_=[H,W].indexOf(L)>=0?"y":"x";A[L]+=R[_]*U})}return A}function Ls(e,t){t===void 0&&(t={});var i=t,o=i.placement,s=i.boundary,n=i.rootBoundary,l=i.padding,r=i.flipVariations,a=i.allowedAutoPlacements,c=a===void 0?Ze:a,h=ht(o),p=h?r?He:He.filter(function(x){return ht(x)===h}):It,f=p.filter(function(x){return c.indexOf(x)>=0});f.length===0&&(f=p);var u=f.reduce(function(x,y){return x[y]=St(e,{placement:y,boundary:s,rootBoundary:n,padding:l})[j(y)],x},{});return Object.keys(u).sort(function(x,y){return u[x]-u[y]})}function Ps(e){if(j(e)===Kt)return[];var t=Bt(e);return[je(e),t,je(t)]}function Ms(e){var t=e.state,i=e.options,o=e.name;if(!t.modifiersData[o]._skip){for(var s=i.mainAxis,n=s===void 0?!0:s,l=i.altAxis,r=l===void 0?!0:l,a=i.fallbackPlacements,c=i.padding,h=i.boundary,p=i.rootBoundary,f=i.altBoundary,u=i.flipVariations,x=u===void 0?!0:u,y=i.allowedAutoPlacements,g=t.options.placement,k=j(g),O=k===g,w=a||(O||!x?[Bt(g)]:Ps(g)),b=[g].concat(w).reduce(function(et,$){return et.concat(j($)===Kt?Ls(t,{placement:$,boundary:h,rootBoundary:p,padding:c,flipVariations:x,allowedAutoPlacements:y}):$)},[]),C=t.rects.reference,m=t.rects.popper,v=new Map,I=!0,E=b[0],A=0;A<b.length;A++){var T=b[A],R=j(T),L=ht(T)===at,U=[H,W].indexOf(R)>=0,_=U?"width":"height",Y=St(t,{placement:T,boundary:h,rootBoundary:p,altBoundary:f,padding:c}),B=U?L?N:Z:L?W:H;C[_]>m[_]&&(B=Bt(B));var dt=Bt(B),K=[];if(n&&K.push(Y[R]<=0),r&&K.push(Y[B]<=0,Y[dt]<=0),K.every(function(et){return et})){E=T,I=!1;break}v.set(T,K)}if(I)for(var pt=x?3:1,Tt=function($){var nt=b.find(function(mt){var J=v.get(mt);if(J)return J.slice(0,$).every(function(ft){return ft})});if(nt)return E=nt,"break"},st=pt;st>0;st--){var ut=Tt(st);if(ut==="break")break}t.placement!==E&&(t.modifiersData[o]._skip=!0,t.placement=E,t.reset=!0)}}const Ys={name:"flip",enabled:!0,phase:"main",fn:Ms,requiresIfExists:["offset"],data:{_skip:!1}};function _e(e,t,i){return i===void 0&&(i={x:0,y:0}),{top:e.top-t.height-i.y,right:e.right-t.width+i.x,bottom:e.bottom-t.height+i.y,left:e.left-t.width-i.x}}function Ke(e){return[H,N,W,Z].some(function(t){return e[t]>=0})}function Xs(e){var t=e.state,i=e.name,o=t.rects.reference,s=t.rects.popper,n=t.modifiersData.preventOverflow,l=St(t,{elementContext:"reference"}),r=St(t,{altBoundary:!0}),a=_e(l,o),c=_e(r,s,n),h=Ke(a),p=Ke(c);t.modifiersData[i]={referenceClippingOffsets:a,popperEscapeOffsets:c,isReferenceHidden:h,hasPopperEscaped:p},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":p})}const Rs={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:Xs};function Hs(e,t,i){var o=j(e),s=[Z,H].indexOf(o)>=0?-1:1,n=typeof i=="function"?i(Object.assign({},t,{placement:e})):i,l=n[0],r=n[1];return l=l||0,r=(r||0)*s,[Z,N].indexOf(o)>=0?{x:r,y:l}:{x:l,y:r}}function Zs(e){var t=e.state,i=e.options,o=e.name,s=i.offset,n=s===void 0?[0,0]:s,l=Ze.reduce(function(h,p){return h[p]=Hs(p,t.rects,n),h},{}),r=l[t.placement],a=r.x,c=r.y;t.modifiersData.popperOffsets!=null&&(t.modifiersData.popperOffsets.x+=a,t.modifiersData.popperOffsets.y+=c),t.modifiersData[o]=l}const Ds={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:Zs};function Bs(e){var t=e.state,i=e.name;t.modifiersData[i]=Ue({reference:t.rects.reference,element:t.rects.popper,placement:t.placement})}const zs={name:"popperOffsets",enabled:!0,phase:"read",fn:Bs,data:{}};function Ws(e){return e==="x"?"y":"x"}function Ns(e){var t=e.state,i=e.options,o=e.name,s=i.mainAxis,n=s===void 0?!0:s,l=i.altAxis,r=l===void 0?!1:l,a=i.boundary,c=i.rootBoundary,h=i.altBoundary,p=i.padding,f=i.tether,u=f===void 0?!0:f,x=i.tetherOffset,y=x===void 0?0:x,g=St(t,{boundary:a,rootBoundary:c,padding:p,altBoundary:h}),k=j(t.placement),O=ht(t.placement),w=!O,b=te(k),C=Ws(b),m=t.modifiersData.popperOffsets,v=t.rects.reference,I=t.rects.popper,E=typeof y=="function"?y(Object.assign({},t.rects,{placement:t.placement})):y,A=typeof E=="number"?{mainAxis:E,altAxis:E}:Object.assign({mainAxis:0,altAxis:0},E),T=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,R={x:0,y:0};if(m){if(n){var L,U=b==="y"?H:Z,_=b==="y"?W:N,Y=b==="y"?"height":"width",B=m[b],dt=B+g[U],K=B-g[_],pt=u?-I[Y]/2:0,Tt=O===at?v[Y]:I[Y],st=O===at?-I[Y]:-v[Y],ut=t.elements.arrow,et=u&&ut?qt(ut):{width:0,height:0},$=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:We(),nt=$[U],mt=$[_],J=Et(0,v[Y],et[Y]),ft=w?v[Y]/2-pt-J-nt-A.mainAxis:Tt-J-nt-A.mainAxis,ne=w?-v[Y]/2+pt+J+mt+A.mainAxis:st+J+mt+A.mainAxis,gt=t.elements.arrow&&Ot(t.elements.arrow),re=gt?b==="y"?gt.clientTop||0:gt.clientLeft||0:0,Wt=(L=T==null?void 0:T[b])!=null?L:0,ae=B+ft-Wt-re,le=B+ne-Wt,Nt=Et(u?Ht(dt,ae):dt,B,u?ot(K,le):K);m[b]=Nt,R[b]=Nt-B}if(r){var Ft,ce=b==="x"?H:Z,he=b==="x"?W:N,Q=m[C],vt=C==="y"?"height":"width",Vt=Q+g[ce],jt=Q-g[he],bt=[H,Z].indexOf(k)!==-1,yt=(Ft=T==null?void 0:T[C])!=null?Ft:0,wt=bt?Vt:Q-v[vt]-I[vt]-yt+A.altAxis,Lt=bt?Q+v[vt]+I[vt]-yt-A.altAxis:jt,Pt=u&&bt?ps(wt,Q,Lt):Et(u?wt:Vt,Q,u?Lt:jt);m[C]=Pt,R[C]=Pt-Q}t.modifiersData[o]=R}}const Fs={name:"preventOverflow",enabled:!0,phase:"main",fn:Ns,requiresIfExists:["offset"]};function Vs(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function js(e){return e===D(e)||!F(e)?ee(e):Vs(e)}function $s(e){var t=e.getBoundingClientRect(),i=lt(t.width)/e.offsetWidth||1,o=lt(t.height)/e.offsetHeight||1;return i!==1||o!==1}function Gs(e,t,i){i===void 0&&(i=!1);var o=F(t),s=F(t)&&$s(t),n=tt(t),l=ct(e,s,i),r={scrollLeft:0,scrollTop:0},a={x:0,y:0};return(o||!o&&!i)&&((V(t)!=="body"||oe(n))&&(r=js(t)),F(t)?(a=ct(t,!0),a.x+=t.clientLeft,a.y+=t.clientTop):n&&(a.x=ie(n))),{x:l.left+r.scrollLeft-a.x,y:l.top+r.scrollTop-a.y,width:l.width,height:l.height}}function Us(e){var t=new Map,i=new Set,o=[];e.forEach(function(n){t.set(n.name,n)});function s(n){i.add(n.name);var l=[].concat(n.requires||[],n.requiresIfExists||[]);l.forEach(function(r){if(!i.has(r)){var a=t.get(r);a&&s(a)}}),o.push(n)}return e.forEach(function(n){i.has(n.name)||s(n)}),o}function _s(e){var t=Us(e);return rs.reduce(function(i,o){return i.concat(t.filter(function(s){return s.phase===o}))},[])}function Ks(e){var t;return function(){return t||(t=new Promise(function(i){Promise.resolve().then(function(){t=void 0,i(e())})})),t}}function Js(e){var t=e.reduce(function(i,o){var s=i[o.name];return i[o.name]=s?Object.assign({},s,o,{options:Object.assign({},s.options,o.options),data:Object.assign({},s.data,o.data)}):o,i},{});return Object.keys(t).map(function(i){return t[i]})}var Je={placement:"bottom",modifiers:[],strategy:"absolute"};function Qe(){for(var e=arguments.length,t=new Array(e),i=0;i<e;i++)t[i]=arguments[i];return!t.some(function(o){return!(o&&typeof o.getBoundingClientRect=="function")})}function Qs(e){e===void 0&&(e={});var t=e,i=t.defaultModifiers,o=i===void 0?[]:i,s=t.defaultOptions,n=s===void 0?Je:s;return function(r,a,c){c===void 0&&(c=n);var h={placement:"bottom",orderedModifiers:[],options:Object.assign({},Je,n),modifiersData:{},elements:{reference:r,popper:a},attributes:{},styles:{}},p=[],f=!1,u={state:h,setOptions:function(k){var O=typeof k=="function"?k(h.options):k;y(),h.options=Object.assign({},n,h.options,O),h.scrollParents={reference:it(r)?At(r):r.contextElement?At(r.contextElement):[],popper:At(a)};var w=_s(Js([].concat(o,h.options.modifiers)));return h.orderedModifiers=w.filter(function(b){return b.enabled}),x(),u.update()},forceUpdate:function(){if(!f){var k=h.elements,O=k.reference,w=k.popper;if(Qe(O,w)){h.rects={reference:Gs(O,Ot(w),h.options.strategy==="fixed"),popper:qt(w)},h.reset=!1,h.placement=h.options.placement,h.orderedModifiers.forEach(function(A){return h.modifiersData[A.name]=Object.assign({},A.data)});for(var b=0;b<h.orderedModifiers.length;b++){if(h.reset===!0){h.reset=!1,b=-1;continue}var C=h.orderedModifiers[b],m=C.fn,v=C.options,I=v===void 0?{}:v,E=C.name;typeof m=="function"&&(h=m({state:h,options:I,name:E,instance:u})||h)}}}},update:Ks(function(){return new Promise(function(g){u.forceUpdate(),g(h)})}),destroy:function(){y(),f=!0}};if(!Qe(r,a))return u;u.setOptions(c).then(function(g){!f&&c.onFirstUpdate&&c.onFirstUpdate(g)});function x(){h.orderedModifiers.forEach(function(g){var k=g.name,O=g.options,w=O===void 0?{}:O,b=g.effect;if(typeof b=="function"){var C=b({state:h,name:k,instance:u,options:w}),m=function(){};p.push(C||m)}})}function y(){p.forEach(function(g){return g()}),p=[]}return u}}var qs=[Is,zs,ws,cs,Ds,Ys,Fs,gs,Rs],tn=Qs({defaultModifiers:qs});class en{constructor(t,i,o,s={}){si(this,"updateHotspotPosition",(t,i)=>{this.currentActiveIndex=t,this.currentOrientation=i;const o=No(this.hotspotsConfig,t,i);this.hideHotspots(),o.forEach(s=>this.updateAndShowHotspot(s,t))});this.container=i,this.popper=null,this.popperInstance=null,this.hotspotsContainer=io(this.container),this.hotspotsConfig=Go(t),this.shouldHidePopper=!0,this.hidePopper=this.hidePopper.bind(this),this.forceHidePopper=this.forceHidePopper.bind(this),this.imageAspectRatio=o,this.hotspotElements=new Map,this.popperListeners=[],this.trigger=s.trigger||"hover";const{containerSize:n}=t[0];this.initialContainerSize=n||[i.offsetWidth,i.offsetHeight],this.initHotspots(),this.observeContainerResize()}observeContainerResize(){this.resizeObserver=new ResizeObserver(()=>{const t=this.container.offsetWidth,i=this.container.offsetHeight;this.updateHotspotsForResize(t,i)}),this.resizeObserver.observe(this.container)}updateHotspotsForResize(t,i){this.hotspotsConfig=Uo({newWidth:t,newHeight:i,initialContainerSize:this.initialContainerSize,imageAspectRatio:this.imageAspectRatio,hotspotsConfig:this.hotspotsConfig}),this.updateHotspotPosition(this.currentActiveIndex,this.currentOrientation)}cleanupPopperListeners(){this.popperListeners.forEach(({element:t,event:i,handler:o})=>{t.removeEventListener(i,o)}),this.popperListeners=[]}showPopper({hotspotElement:t,content:i,id:o,keepOpen:s}){this.popperInstance&&this.hidePopper();const n={placement:"top",modifiers:jo(this.container)};this.popper=$o(i,o),this.popper.setAttribute("data-show",""),this.currentHotspotElement=t,t.setAttribute("aria-expanded","true"),t.setAttribute("aria-describedby",`cloudimage-360-popper-${o}`);const l=()=>{this.shouldHidePopper=!1},r=()=>{this.shouldHidePopper=!0,this.checkAndHidePopper()},a=()=>{this.shouldHidePopper=!0,this.checkAndHidePopper()},c=()=>{this.shouldHidePopper=!1,this.hidePopperTimeout&&clearTimeout(this.hidePopperTimeout)};this.popper.addEventListener("mouseenter",l),this.popper.addEventListener("mouseleave",r),t.addEventListener("mouseleave",a),t.addEventListener("mouseenter",c),this.popperListeners.push({element:this.popper,event:"mouseenter",handler:l},{element:this.popper,event:"mouseleave",handler:r},{element:t,event:"mouseleave",handler:a},{element:t,event:"mouseenter",handler:c}),this.popperInstance={...tn(t,this.popper,n),keepOpen:s,instanceId:o}}checkAndHidePopper(){var t;this.shouldHidePopper&&!((t=this.popperInstance)!=null&&t.keepOpen)&&(this.hidePopperTimeout=setTimeout(()=>{this.shouldHidePopper&&this.hidePopper()},Ai))}hidePopper(){if(this.hidePopperTimeout&&(clearTimeout(this.hidePopperTimeout),this.hidePopperTimeout=null),this.cleanupPopperListeners(),this.currentHotspotElement&&(this.currentHotspotElement.setAttribute("aria-expanded","false"),this.currentHotspotElement.removeAttribute("aria-describedby"),this.currentHotspotElement=null),this.popperInstance&&(this.popperInstance.destroy(),this.popperInstance=null),this.popper){this.popper.removeAttribute("data-show"),this.popper.setAttribute("aria-hidden","true");const t=this.popper;this.popper=null,setTimeout(()=>{t.remove()},Si)}this.shouldHidePopper=!0}forceHidePopper(){this.shouldHidePopper=!0,this.popperInstance&&(this.popperInstance.keepOpen=!1),this.hidePopper()}createHotspot(t){const{id:i,content:o,keepOpen:s,onClick:n,label:l}=t,r=Fo(i,l);(n||o&&this.trigger==="click")&&(r.style.cursor="pointer"),r.onclick=a=>{var c;a.stopPropagation(),o&&this.trigger==="click"&&(((c=this.popperInstance)==null?void 0:c.instanceId)===i?this.hidePopper():this.showPopper({hotspotElement:r,content:o,id:i,keepOpen:s})),n==null||n(a,this.popperInstance,i)},o&&(this.trigger==="hover"&&(r.addEventListener("mouseenter",()=>this.showPopper({hotspotElement:r,content:o,id:i,keepOpen:s})),r.addEventListener("mouseleave",()=>{this.shouldHidePopper=!0,this.checkAndHidePopper()})),r.addEventListener("focus",()=>this.showPopper({hotspotElement:r,content:o,id:i,keepOpen:s})),r.addEventListener("blur",()=>{this.shouldHidePopper=!0,this.checkAndHidePopper()})),this.hotspotsContainer.appendChild(r)}hideHotspots(){this.hotspotsContainer.querySelectorAll(".cloudimage-360-hotspot").forEach(t=>{t.style.opacity=0,t.style.pointerEvents="none"})}updateAndShowHotspot(t,i){const{positions:o,id:s}=t,{x:n,y:l}=o[i]??{},r=this.hotspotsContainer.querySelector(`[data-hotspot-id="${s}"]`);r&&(r.style.translate=`${n}px ${l}px`,r.style.opacity=1,r.style.pointerEvents="all")}showHotspotById(t){const i=this.hotspotsConfig.find(s=>s.id===t);if(!i||!i.content)return;const o=this.hotspotsContainer.querySelector(`[data-hotspot-id="${t}"]`);o&&o.style.opacity==="1"&&this.showPopper({hotspotElement:o,content:i.content,id:t,keepOpen:i.keepOpen})}createAllHotspots(){this.hotspotsConfig.forEach(t=>this.createHotspot(t))}initHotspots(){this.createAllHotspots()}destroy(){this.hidePopperTimeout&&clearTimeout(this.hidePopperTimeout),this.resizeObserver.disconnect(),this.hidePopper(),this.hotspotElements.clear(),this.hotspotsContainer.innerHTML=""}}const qe=typeof navigator<"u"&&/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);class zt{constructor(t,i,o){this.container=t,this.isClicked=!1,this.fullscreenView=!!o,this.imagesX=[],this.imagesY=[];const s=Math.round(window.devicePixelRatio||1);this.devicePixelRatio=qe?Math.min(s,2):s,this.id=t.id,this.movementStart={x:0,y:0},this.draggingDirection=null,this.isReady=!1,this.velocityX=0,this.velocityY=0,this.lastDragTime=0,this.lastDragX=0,this.lastDragY=0,this.inertiaAnimationId=null,this.hasInteracted=!1,this.currentZoomScale=1,this.touchDevice=Yo(),this.dragJustEnded=!1,this.isPinching=!1,this.initialPinchDistance=0,this.pinchZoomLevel=1,this.pinchZoomEmitted=!1,this.lastEmittedZoom=1,this.panOffsetX=0,this.panOffsetY=0,this.useMainThreadCanvas=qe,this.canvasWorker=this.useMainThreadCanvas?new Zo:new Ho,this.hotspotTimeline=null,this.hotspotTimelineIndicator=null,this.isAnimatingToFrame=!1,this.onMoveHandler=this.onMoveHandler.bind(this),this.destroy=this.destroy.bind(this),this.init(this.container,i)}closeImageBitmaps(t){!t||!Array.isArray(t)||t.forEach(i=>{var o;(o=i==null?void 0:i.bitmapImage)!=null&&o.close&&i.bitmapImage.close()})}emit(t,i={}){const o=this[t];typeof o=="function"&&o({...i,viewerId:this.id})}announce(t){so(this.ariaLiveRegion,t)}mouseDown(t){if(!this.isReady||this.glass)return;const i=t.target;if(i&&i.closest&&(i.closest(".cloudimage-360-button")||i.closest(".cloudimage-360-hotspot-timeline-dot")||i.closest(".cloudimage-360-hotspot")))return;const{pageX:o,pageY:s}=t;this.hideHints(),this.hideHotspotPopper(),this.inertiaAnimationId&&(cancelAnimationFrame(this.inertiaAnimationId),this.inertiaAnimationId=null),this.autoplayJustStopped=!1,(this.autoplay||this.loopTimeoutId)&&(this.stopAutoplay(),this.autoplay=!1,this.autoplayJustStopped=!0),this.movementStart={x:o,y:s},this.isClicked=!0,this.isDragging=!1,this.inertia&&(this.velocityX=0,this.velocityY=0,this.lastDragTime=performance.now(),this.lastDragX=o,this.lastDragY=s)}mouseUp(){this.isReady&&(!this.isZoomed&&!this.autoplayJustStopped&&this.showAllIcons(),this.inertia&&this.isDragging&&(Math.abs(this.velocityX)>.1||Math.abs(this.velocityY)>.1)&&this.startInertia(),this.isDragging&&(this.emit("onDragEnd"),this.dragJustEnded=!0),this.movementStart={x:0,y:0},this.isClicked=!1,this.isDragging=!1,this.innerBox.style.cursor="grab")}startInertia(){const o=this.fullscreenView?document.body:this.container,s=this.dragSpeed/ge,n=s*(this.amountX/o.offsetWidth),l=s*(this.amountY/o.offsetHeight),r=()=>{if(this.velocityX*=.95,this.velocityY*=.95,Math.abs(this.velocityX)<.01&&Math.abs(this.velocityY)<.01){this.inertiaAnimationId=null;return}const a=this.velocityX*16,c=this.velocityY*16,h=Pe({deltaX:a,deltaY:c,reversed:this.dragReverse,allowSpinX:this.allowSpinX,allowSpinY:this.allowSpinY});if(h){const p=this.allowSpinX?Math.max(1,Math.abs(Math.round(a*n))):0,f=this.allowSpinY?Math.max(1,Math.abs(Math.round(c*l))):0;(p>0||f>0)&&this.onMoveHandler(h,p,f)}this.inertiaAnimationId=requestAnimationFrame(r)};this.inertiaAnimationId=requestAnimationFrame(r)}drag(t,i){if(!this.isReady||!this.isClicked)return;const o=t-this.movementStart.x,s=i-this.movementStart.y;if(this.inertia){const f=performance.now(),u=f-this.lastDragTime;u>0&&u<100&&(this.velocityX=(t-this.lastDragX)/u,this.velocityY=(i-this.lastDragY)/u),this.lastDragTime=f,this.lastDragX=t,this.lastDragY=i}this.draggingDirection=Pe({deltaX:o,deltaY:s,reversed:this.dragReverse,allowSpinX:this.allowSpinX,allowSpinY:this.allowSpinY})||this.draggingDirection;const n=this.fullscreenView?document.body:this.container,l=this.dragSpeed/ge,r=l*(this.amountX/n.offsetWidth),a=l*(this.amountY/n.offsetHeight),c=this.allowSpinX?Math.abs(Math.round(o*r)):0,h=this.allowSpinY?Math.abs(Math.round(s*a)):0;(this.allowSpinX&&c!==0||this.allowSpinY&&h!==0)&&(this.hasInteracted=!0,this.hideHotspotPopper(),this.onMoveHandler(this.draggingDirection,c,h),this.movementStart={x:t,y:i},setTimeout(()=>{this.isDragging||(this.isDragging=!0,this.emit("onDragStart"))},Ei))}mouseMove(t){!this.isReady||!this.isClicked&&!this.isZoomed||this.glass||(this.isZoomed||this.hideAllIcons(),this.drag(t.pageX,t.pageY),this.isZoomed&&this.applyZoom(t))}mouseClick(t){if(!this.isReady||this.isDragging)return;const i=t.target;if(!(i&&i.closest&&(i.closest(".cloudimage-360-button")||i.closest(".cloudimage-360-hotspot-timeline-dot")||i.closest(".cloudimage-360-hotspot")))){if(this.dragJustEnded){this.dragJustEnded=!1;return}if(this.autoplayJustStopped){this.autoplayJustStopped=!1;return}if(this.glass&&this.magnified){this.removeGlass();return}this.pointerZoomTrigger==="click"&&this.pointerZoom&&!this.glass&&!this.touchDevice&&this.toggleZoom(t)}}mouseDblClick(t){if(!this.isReady)return;const i=t.target;i&&i.closest&&(i.closest(".cloudimage-360-button")||i.closest(".cloudimage-360-hotspot-timeline-dot")||i.closest(".cloudimage-360-hotspot"))||this.pointerZoomTrigger==="dblclick"&&this.pointerZoom&&!this.glass&&!this.touchDevice&&this.toggleZoom(t)}loadHigherQualityImages(t,i){const o=xt(this.srcXConfig,t),s=this.allowSpinY?xt(this.srcYConfig,t):null;ye({cdnPathX:o,cdnPathY:s,configX:this.srcXConfig,configY:this.srcYConfig,onAllImagesLoad:(n,l)=>{this.closeImageBitmaps(this.imagesX),this.closeImageBitmaps(this.imagesY),this.imagesX=n,this.imagesY=l,i()},onError:n=>this.emit("onError",n)})}hideHotspots(){this.hotspotsInstance&&this.hotspotsInstance.hideHotspots()}hideHotspotPopper(){this.hotspotsInstance&&this.hotspotsInstance.forceHidePopper()}toggleZoom(t){if(this.isZoomed)this.showTransitionOverlay(),setTimeout(()=>{this.removeZoom()},Xt);else{let i=(this.fullscreenView||this.pointerZoom?document.body:this.container).offsetWidth;this.hideHotspots(),this.showLoadingSpinner(),this.loadHigherQualityImages(i,()=>{this.showTransitionOverlay(),setTimeout(()=>{this.applyZoom(t)},Xt)})}}removeZoom(){this.isZoomed=!1,this.updateView(),this.showAllIcons(),this.hideZoomOutIcon(),this.hideTransitionOverlay(),this.emit("onZoomOut"),this.announce("Zoomed out")}zoomIn(t){if(this.isZoomed||!this.pointerZoom)return;t==null||t.stopPropagation();let i=(this.fullscreenView||this.pointerZoom?document.body:this.container).offsetWidth;this.hideHotspots(),this.hideAllIcons(),this.showLoadingSpinner(),this.loadHigherQualityImages(i,()=>{this.showTransitionOverlay(),setTimeout(()=>{this.applyZoom(t)},Xt)})}zoomOut(t){this.isZoomed&&(t==null||t.stopPropagation(),this.showTransitionOverlay(),setTimeout(()=>{this.removeZoom()},Xt))}mouseLeave(){this.isZoomed&&this.removeZoom()}applyZoom(t){const{offsetX:i,offsetY:o}=Oo(t,this.canvas,this.devicePixelRatio);this.isZoomed||(this.isZoomed=!0,this.hideAllIcons(),this.hideLoadingSpinner(),this.hideTransitionOverlay(),this.showZoomOutIcon(),this.emit("onZoomIn",{zoomLevel:this.pointerZoom}),this.announce("Zoomed in. Move mouse to pan. Click to zoom out.")),this.updateView(this.pointerZoom,i,o)}touchOutside(t){if(!this.glass)return;!this.canvas.contains(t.target)&&this.removeGlass()}touchStart(t){if(!this.isReady||this.glass||!t.touches||!t.touches.length)return;const i=t.target;if(i&&i.closest&&(i.closest(".cloudimage-360-button")||i.closest(".cloudimage-360-hotspot-timeline-dot")||i.closest(".cloudimage-360-hotspot")))return;if(this.hideHints(),t.touches.length===2&&this.pinchZoom&&!this.isDragging){t.preventDefault(),this.isPinching=!0,this.isClicked=!1,this.inertiaAnimationId&&(cancelAnimationFrame(this.inertiaAnimationId),this.inertiaAnimationId=null);const n=t.touches[0],l=t.touches[1];if(this.initialPinchDistance=this.getPinchDistance(n,l),(this.autoplay||this.loopTimeoutId)&&(this.stopAutoplay(),this.autoplay=!1),!this.isZoomed&&this.pinchZoomLevel===1){const r=(this.fullscreenView?document.body:this.container).offsetWidth;this.hideHotspots(),this.loadHigherQualityImages(r,()=>{})}return}if(t.touches.length>1)return;const{pageX:o,pageY:s}=t.touches[0];this.inertiaAnimationId&&(cancelAnimationFrame(this.inertiaAnimationId),this.inertiaAnimationId=null),(this.autoplay||this.loopTimeoutId)&&(this.stopAutoplay(),this.autoplay=!1),this.hideAllIcons(),this.hideHotspotPopper(),this.movementStart={x:o,y:s},this.isClicked=!0,this.isDragging=!1,this.inertia&&(this.velocityX=0,this.velocityY=0,this.lastDragTime=performance.now(),this.lastDragX=o,this.lastDragY=s)}getPinchDistance(t,i){const o=t.pageX-i.pageX,s=t.pageY-i.pageY;return Math.sqrt(o*o+s*s)}getPinchCenter(t,i){return{x:(t.pageX+i.pageX)/2,y:(t.pageY+i.pageY)/2}}touchEnd(t){if(this.isReady){if(this.isPinching){if(!t.touches||t.touches.length<2){if(this.isPinching=!1,this.initialPinchDistance=0,this.pinchZoomLevel<=1){const i=this.pinchZoomEmitted;this.pinchZoomLevel=1,this.pinchZoomEmitted=!1,this.lastEmittedZoom=1,this.isZoomed=!1,this.panOffsetX=0,this.panOffsetY=0,this.showAllIcons(),this.updateView(),i&&this.emit("onZoomOut")}else if(this.canvas){const i=this.canvas.getBoundingClientRect();this.panOffsetX=i.width/2*this.devicePixelRatio,this.panOffsetY=i.height/2*this.devicePixelRatio}}return}this.showAllIcons(),this.inertia&&this.isDragging&&(Math.abs(this.velocityX)>.1||Math.abs(this.velocityY)>.1)&&this.startInertia(),this.movementStart={x:0,y:0},this.isClicked=!1,this.isDragging=!1}}touchMove(t){if(!this.isReady||this.glass)return;if(this.isPinching&&t.touches.length===2){t.preventDefault();const s=t.touches[0],n=t.touches[1],l=this.getPinchDistance(s,n);if(this.initialPinchDistance===0){this.initialPinchDistance=l;return}const r=l/this.initialPinchDistance,a=Math.max(1,Math.min(this.pinchZoomLevel*r,ve));if(this.initialPinchDistance=l,this.pinchZoomLevel=a,!this.canvas)return;const c=this.canvas.getBoundingClientRect(),h=c.width/2*this.devicePixelRatio,p=c.height/2*this.devicePixelRatio;a>1?(this.isZoomed=!0,this.hideAllIcons(),this.updateView(a,h,p),(!this.pinchZoomEmitted||a>this.lastEmittedZoom)&&(this.emit("onZoomIn",{zoomLevel:a}),this.pinchZoomEmitted=!0,this.lastEmittedZoom=a)):(this.isZoomed=!1,this.panOffsetX=0,this.panOffsetY=0,this.updateView());return}if(!this.isClicked||!t.touches||!t.touches[0])return;const{pageX:i,pageY:o}=t.touches[0];if(t.preventDefault(),this.isZoomed&&this.pinchZoomLevel>1){const s=i-this.movementStart.x,n=o-this.movementStart.y;this.panOffsetX-=s*this.devicePixelRatio,this.panOffsetY-=n*this.devicePixelRatio,this.movementStart={x:i,y:o},this.updateView(this.pinchZoomLevel,this.panOffsetX,this.panOffsetY);return}this.drag(i,o)}keyDown(t){if(!this.isReady)return;const{keyCode:i}=t,o=this.keysReverse;switch(this.autoplay&&this.stopAutoplay(),Le(i,this.allowSpinY)&&(this.hasInteracted=!0,this.hideAllIcons(),this.hideHints()),i){case 37:o?this.moveLeft():this.moveRight();break;case 39:o?this.moveRight():this.moveLeft();break;case 38:this.allowSpinY&&(t.preventDefault(),o?this.moveTop():this.moveBottom());break;case 40:this.allowSpinY&&(t.preventDefault(),o?this.moveBottom():this.moveTop());break}}keyUp(t){const{keyCode:i}=t;Le(i,this.allowSpinY)&&this.showAllIcons()}moveActiveXIndexUp(t){this.orientation=P.X,this.activeImageX=(this.activeImageX+t)%this.amountX}moveActiveXIndexDown(t){this.orientation=P.X,this.activeImageX=(this.activeImageX-t+this.amountX)%this.amountX}moveActiveYIndexUp(t){this.orientation=P.Y,this.activeImageY=(this.activeImageY+t)%this.amountY}moveActiveYIndexDown(t){this.orientation=P.Y,this.activeImageY=(this.activeImageY-t+this.amountY)%this.amountY}moveRight(t,i=1){t&&this.activeImageX>=this.imagesX.length-1||(this.moveActiveXIndexUp(i),this.isZoomed||this.updateView())}moveLeft(t,i=1){t&&this.activeImageX<=0||(this.moveActiveXIndexDown(i),this.isZoomed||this.updateView())}moveTop(t,i=1){t&&this.activeImageY>=this.imagesY.length-1||(this.moveActiveYIndexUp(i),this.isZoomed||this.updateView())}moveBottom(t,i=1){t&&this.activeImageY<=0||(this.moveActiveYIndexDown(i),this.isZoomed||this.updateView())}onMoveHandler(t,i=1,o=1){t==="right"?this.moveRight(this.stopAtEdges,i):t==="left"?this.moveLeft(this.stopAtEdges,i):t==="up"?this.moveTop(this.stopAtEdges,o):t==="down"&&this.moveBottom(this.stopAtEdges,o),this.emit("onSpin",{direction:t,activeImageX:this.activeImageX,activeImageY:this.activeImageY,amountX:this.amountX,amountY:this.amountY})}updateView(t,i,o){const s=this.orientation===P.X?this.activeImageX:this.activeImageY,n=this.orientation===P.X?this.imagesX[this.activeImageX]:this.imagesY[this.activeImageY];this.hotspotsInstance&&!this.isZoomed&&!this.autoplay&&this.hotspotsInstance.updateHotspotPosition(s,this.orientation),this.hotspotTimelineIndicator&&this.orientation===P.X&&this.updateHotspotTimelinePosition(),this.drawImageOnCanvas(n,t,i,o)}updatePercentageInLoader(t=0){this.loader&&(this.loader.innerText=t+"%")}adaptCanvasSize(t){const{naturalWidth:i,naturalHeight:o}=t;this.imageAspectRatio=i/o;const s=this.fullscreenView?window.innerWidth:this.canvas.clientWidth,n=this.fullscreenView?window.innerHeight:this.canvas.clientHeight;this.canvasWorker.postMessage({action:"adaptCanvasSize",devicePixelRatio:this.devicePixelRatio,imageAspectRatio:this.imageAspectRatio,containerWidth:s,containerHeight:n})}drawImageOnCanvas(t,i=1,o=0,s=0){this.pendingDrawData={imageData:t,zoomScale:i,pointerX:o,pointerY:s},this.drawFrameRequested||(this.drawFrameRequested=!0,requestAnimationFrame(()=>{if(this.drawFrameRequested=!1,this.pendingDrawData){const{imageData:n,zoomScale:l,pointerX:r,pointerY:a}=this.pendingDrawData;this.canvasWorker.postMessage({action:"drawImageOnCanvas",imageData:n,zoomScale:l,pointerX:r,pointerY:a})}}))}pushImageToSet(t,i,o){o===P.X?this.imagesX[i]=t:this.imagesY[i]=t}calculatePercentage(){const t=this.amountX+this.amountY,i=this.imagesX.length+this.imagesY.length;return Math.round(i/t*100)}onImageLoad(t,i,o){this.pushImageToSet(t,i,o),this.updatePercentageInLoader(this.calculatePercentage())}onFirstImageLoaded(t,i){this.createContainers(t),this.adaptCanvasSize(i),this.drawImageOnCanvas(i)}onAllImagesLoaded(){if(this.addAllIcons(),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.hotspots&&(this.hotspotsInstance=new en(this.hotspots,this.innerBox,this.imageAspectRatio,{trigger:this.hotspotTrigger}),this.addHotspotTimeline(),this.showHotspotTimeline()),this.emit("onLoad",{imagesX:this.imagesX.length,imagesY:this.imagesY.length}),this.emit("onReady"),this.announce("360 degree view loaded. Use mouse drag or arrow keys to rotate."),this.hints!==!1&&!this.autoplay){const t=this.hints===!0||this.hints===void 0?ke(this.viewerConfig,this.touchDevice):this.hints;t&&t.length>0&&(this.hintsOverlay=Ce(this.innerBox,t,{pointerZoomTrigger:this.pointerZoomTrigger}),Oe(this.hintsOverlay))}this.autoplay&&(this.hideAllIcons(),Xo(this.play.bind(this))())}magnify(t){t.stopPropagation();const{src:i}=this.orientation===P.Y?this.imagesY[this.activeImageY]:this.imagesX[this.activeImageX],s=(this.fullscreenView?document.body:this.container).offsetWidth*this.magnifier,n=Di(i,s);this.showLoadingSpinner(),this.createGlass(),Io(n,a=>{this.hideLoadingSpinner(),this.magnified=!0,ko(t,this.innerBox,this.offset,a,this.glass,this.magnifier)},a=>{this.hideLoadingSpinner(),this.removeGlass(),this.emit("onError",{error:{message:a.message,url:a.url},errorCount:1,totalImages:1,errors:[{message:a.message,url:a.url}]})})}openFullscreenModal(t){t.stopPropagation(),this.hideHotspotPopper(),this.releaseMemory(),window.document.body.style.overflow="hidden";const i=qi(this.container);this.fullscreenInstance=new zt(i,this.viewerConfig,!0),this.fullscreenInstance.originalViewer=this,this.emit("onFullscreenOpen"),this.announce("Opened fullscreen mode. Press Escape to exit.")}closeFullscreenModal(t){t.stopPropagation();const i=this.originalViewer||this,o=this.fullscreenView?this:i.fullscreenInstance;if(o){o.hideHotspotPopper();const s=o.container.parentNode;s&&s.parentNode&&s.parentNode.removeChild(s),o.destroy(),i.fullscreenInstance&&(i.fullscreenInstance=null)}window.document.body.style.overflow="visible",i.reloadImages(),i.emit("onFullscreenClose"),i.announce("Exited fullscreen mode")}play(){if(this.isClicked)return;this.hide360ViewCircleIcon(),this.emit("onAutoplayStart");const t=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&&To({autoplayBehavior:this.autoplayBehavior,activeImageX:this.activeImageX,activeImageY:this.activeImageY,amountX:this.amountX,amountY:this.amountY,autoplayReverse:this.autoplayReverse})){this.stopAutoplay();return}Lo({autoplayBehavior:this.autoplayBehavior,activeImageX:this.activeImageX,activeImageY:this.activeImageY,amountX:this.amountX,amountY:this.amountY,autoplayReverse:this.autoplayReverse,spinDirection:this.spinDirection})&&(this.spinDirection=Mo(this.spinDirection));const n=this.spinDirection==="y";So({autoplayBehavior:this.autoplayBehavior,spinY:n,reversed:this.autoplayReverse,loopTriggers:i})},t)}stopAutoplay(){if(this.showAllIcons(),this.autoplay=!1,window.clearTimeout(this.loopTimeoutId),this.loopTimeoutId=null,this.emit("onAutoplayStop"),this.hints!==!1&&!this.hintsOverlay&&!this.hintsHidden){const t=this.hints===!0?ke(this.viewerConfig,this.touchDevice):this.hints;t&&t.length>0&&(this.hintsOverlay=Ce(this.innerBox,t,{pointerZoomTrigger:this.pointerZoomTrigger}),Oe(this.hintsOverlay))}}destroy(){this.stopAutoplay(),this.inertiaAnimationId&&(cancelAnimationFrame(this.inertiaAnimationId),this.inertiaAnimationId=null),this.removeEvents(),this.closeImageBitmaps(this.imagesX),this.closeImageBitmaps(this.imagesY),this.imagesX=[],this.imagesY=[],this.canvasWorker&&(this.canvasWorker.terminate(),this.canvasWorker=null),this.hotspotsInstance&&this.hotspotsInstance.destroy(),this.hintsOverlay&&this.hintsOverlay.parentNode&&(this.hintsOverlay.parentNode.removeChild(this.hintsOverlay),this.hintsOverlay=null),this.hotspotTimeline&&this.hotspotTimeline.parentNode&&(this.hotspotTimeline.parentNode.removeChild(this.hotspotTimeline),this.hotspotTimeline=null,this.hotspotTimelineIndicator=null),this.container&&(this.container.classList.remove("ci360-theme-dark"),this.container.innerHTML="")}releaseMemory(){this.stopAutoplay(),this.closeImageBitmaps(this.imagesX),this.closeImageBitmaps(this.imagesY),this.imagesX=[],this.imagesY=[],this.isMemoryReleased=!0}reloadImages(){if(!this.isMemoryReleased)return;this.isMemoryReleased=!1;const t=this.container.offsetWidth;this.loadHigherQualityImages(t,()=>{this.updateView()})}addInitialIcon(){this.initialIcon||this.hide360Logo||(this.initialIcon=ji(this.logoSrc),this.innerBox.appendChild(this.initialIcon))}showInitialIcon(){!this.initialIcon||this.hasInteracted||(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.pointerZoom&&(this.magnifierIcon=Ki(),this.magnifierIcon.onclick=this.zoomIn.bind(this),this.iconsContainer.appendChild(this.magnifierIcon),this.zoomOutIcon=Ji(),this.zoomOutIcon.onclick=this.zoomOut.bind(this),this.zoomOutIcon.style.display="none",this.iconsContainer.appendChild(this.zoomOutIcon))}showMagnifierIcon(){this.magnifierIcon&&(this.magnifierIcon.style.display="",this.magnifierIcon.style.visibility="visible",this.magnifierIcon.style.opacity=1)}hideMagnifierIcon(){this.magnifierIcon&&(this.magnifierIcon.style.display="none",this.magnifierIcon.style.visibility="hidden",this.magnifierIcon.style.opacity=0)}showZoomOutIcon(){this.zoomOutIcon&&(this.zoomOutIcon.style.display="",this.zoomOutIcon.style.visibility="visible",this.zoomOutIcon.style.opacity=1)}hideZoomOutIcon(){this.zoomOutIcon&&(this.zoomOutIcon.style.display="none",this.zoomOutIcon.style.visibility="hidden",this.zoomOutIcon.style.opacity=0)}addFullscreenIcon(){this.fullscreen&&(this.fullscreenIcon=Ui(),this.fullscreenIcon.onclick=this.openFullscreenModal.bind(this),this.iconsContainer.appendChild(this.fullscreenIcon))}addCloseFullscreenIcon(){this.fullscreenCloseIcon=Gi(),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=Fi(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=to(),this.innerBox.appendChild(this.loadingSpinner)}showLoadingSpinner(){this.loadingSpinner&&(this.hideAllIcons(),this.loadingSpinner.style.opacity=1)}createTransitionOverlay(){this.transitionOverlay=eo(),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)}hideHints(){!this.hintsOverlay||this.hintsHidden||(this.hintsHidden=!0,ro(this.hintsOverlay))}addHotspotTimeline(){if(!this.hotspots||this.hotspotTimeline)return;const t=po(this.container,this.amountX,this.hotspots);if(!t)return;this.hotspotTimeline=t.element,this.hotspotTimelineIndicator=t.indicator,this.hotspotTimeline.querySelectorAll(".cloudimage-360-hotspot-timeline-dot").forEach(o=>{o.addEventListener("click",s=>{s.stopPropagation(),this.hideAllIcons(),this.hideHints();const n=parseInt(o.getAttribute("data-frame"),10),l=o.getAttribute("data-hotspot-id");isNaN(n)||this.animateToFrame(n,l)})}),this.updateHotspotTimelinePosition()}showHotspotTimeline(){mo(this.hotspotTimeline)}hideHotspotTimeline(){fo(this.hotspotTimeline)}updateHotspotTimelinePosition(){uo(this.hotspotTimelineIndicator,this.activeImageX,this.amountX)}animateToFrame(t,i){if(this.hotspotsInstance&&this.hotspotsInstance.hidePopper(),this.isAnimatingToFrame||t===this.activeImageX){t===this.activeImageX&&i&&this.hotspotsInstance&&this.hotspotTimelineOnClick&&this.hotspotsInstance.showHotspotById(i);return}this.isAnimatingToFrame=!0,this.hasInteracted=!0,(this.autoplay||this.loopTimeoutId)&&(this.stopAutoplay(),this.autoplay=!1),this.inertiaAnimationId&&(cancelAnimationFrame(this.inertiaAnimationId),this.inertiaAnimationId=null);const o=this.activeImageX,s=(t-o+this.amountX)%this.amountX,n=(o-t+this.amountX)%this.amountX,l=s<=n,r=l?s:n;if(r===0){this.isAnimatingToFrame=!1;return}const a=30;let c=r;const h=()=>{if(c<=0){this.isAnimatingToFrame=!1,i&&this.hotspotsInstance&&this.hotspotTimelineOnClick&&setTimeout(()=>{this.hotspotsInstance.showHotspotById(i)},50);return}l?this.moveRight():this.moveLeft(),c--,c>0?setTimeout(h,a):(this.isAnimatingToFrame=!1,i&&this.hotspotsInstance&&this.hotspotTimelineOnClick&&setTimeout(()=>{this.hotspotsInstance.showHotspotById(i)},50))};h()}remove360ViewCircleIcon(){this.view360CircleIcon&&(this.innerBox.removeChild(this.view360CircleIcon),this.view360CircleIcon=null)}addAllIcons(){this.removeLoader(),this.iconsContainer&&(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(),this.showHotspotTimeline()}hideAllIcons(){this.hideInitialIcon(),this.hide360ViewCircleIcon(),this.hideMagnifierIcon(),this.hideZoomOutIcon(),this.hideFullscreenIcon()}removeLoader(){this.loader&&(this.innerBox.removeChild(this.loader),this.loader=null)}attachEvents(t,i,o){t&&this.addMouseEvents(),i&&this.addTouchEvents(),o&&this.addKeyboardEvents(),this.addEscKeyHandler()}removeEvents(){this.removeMouseEvents(),this.removeTouchEvents(),this.removeKeyboardEvents(),this.removeEscKeyHandler()}addMouseEvents(){this.boundMouseClick=this.mouseClick.bind(this),this.boundMouseDblClick=this.mouseDblClick.bind(this),this.boundMouseDown=this.mouseDown.bind(this),this.boundMouseMove=me(this.mouseMove.bind(this),fe),this.boundMouseUp=this.mouseUp.bind(this),this.boundMouseLeave=this.mouseLeave.bind(this),this.innerBox.addEventListener("click",this.boundMouseClick),this.innerBox.addEventListener("dblclick",this.boundMouseDblClick),this.innerBox.addEventListener("mousedown",this.boundMouseDown),this.innerBox.addEventListener("mouseleave",this.boundMouseLeave),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=me(this.touchMove.bind(this),fe),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)}addEscKeyHandler(){this.boundEscHandler=t=>{t.keyCode===27&&(this.fullscreenView?this.closeFullscreenModal(t):this.isZoomed?this.removeZoom():this.glass&&this.removeGlass())},document.addEventListener("keydown",this.boundEscHandler)}removeEscKeyHandler(){document.removeEventListener("keydown",this.boundEscHandler)}removeMouseEvents(){this.innerBox.removeEventListener("click",this.boundMouseClick),this.innerBox.removeEventListener("dblclick",this.boundMouseDblClick),this.innerBox.removeEventListener("mousedown",this.boundMouseDown),this.innerBox.removeEventListener("mouseleave",this.boundMouseLeave),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(t){if(this.iconsContainer=we(this.innerBox),this.canvas=$i(this.innerBox,t),this.loader=Qi(this.innerBox),this.ariaLiveRegion=oo(this.innerBox),this.useMainThreadCanvas)this.canvasWorker.postMessage({action:"initCanvas",offscreen:this.canvas,devicePixelRatio:this.devicePixelRatio});else{const i=this.canvas.transferControlToOffscreen();this.canvasWorker.postMessage({action:"initCanvas",offscreen:i,devicePixelRatio:this.devicePixelRatio},[i])}this.fullscreenView&&this.addCloseFullscreenIcon(),Gt(this.innerBox,".cloudimage-360-placeholder")}update(t){this.isReady&&(this.stopAutoplay(),Gt(this.innerBox,".cloudimage-360-icons-container"),this.init(this.container,t,!0),this.iconsContainer=we(this.innerBox),this.onAllImagesLoaded())}init(t,i,o){const s=i?Yi(i):Pi(t),{folder:n,apiVersion:l,filenameX:r,filenameY:a,imageListX:c,imageListY:h,indexZeroBase:p,amountX:f,amountY:u,draggable:x=!0,swipeable:y=!0,keys:g,keysReverse:k,bottomCircleOffset:O,autoplay:w,autoplayBehavior:b,playOnce:C,speed:m,autoplayReverse:v,fullscreen:I,magnifier:E,ciToken:A,ciFilters:T,ciTransformation:R,lazyload:L,dragSpeed:U,stopAtEdges:_,pointerZoom:Y,pointerZoomTrigger:B="dblclick",imageInfo:dt="black",initialIconShown:K,bottomCircle:pt,hotspots:Tt,hotspotTrigger:st="hover",dragReverse:ut,hide360Logo:et,logoSrc:$,inertia:nt,pinchZoom:mt,hints:J,theme:ft,hotspotTimelineOnClick:ne=!0,aspectRatio:gt,onReady:re,onLoad:Wt,onSpin:ae,onAutoplayStart:le,onAutoplayStop:Nt,onFullscreenOpen:Ft,onFullscreenClose:ce,onZoomIn:he,onZoomOut:Q,onDragStart:vt,onDragEnd:Vt,onError:jt}=s,bt={ciToken:A,ciFilters:T,ciTransformation:R},yt=Ut(c,[]),wt=Ut(h,[]);if(this.viewerConfig=s,this.amountX=yt.length||f,this.amountY=wt.length||u,this.allowSpinX=!!this.amountX,this.allowSpinY=!!this.amountY,this.activeImageX=v?this.amountX-1:0,this.activeImageY=v?this.amountY-1:0,this.bottomCircleOffset=O,this.autoplay=w,this.autoplayBehavior=b,this.playOnce=C,this.speed=m,this.autoplayReverse=v,this.fullscreen=I,this.magnifier=E>1?Math.min(E,Li):0,this.dragSpeed=Math.max(U,Ti),this.stopAtEdges=_,this.ciParams=bt,this.apiVersion=l,this.pointerZoom=Y>1?Math.min(Y,ve):null,this.pointerZoomTrigger=B,this.keysReverse=k,this.info=dt,this.keys=g,this.innerBox=this.innerBox??_i(this.container),gt&&(this.container.style.aspectRatio=gt),this.initialIconShown=K,this.bottomCircle=pt,this.spinDirection=Po(this.autoplayBehavior,this.allowSpinX,this.allowSpinY),this.dragReverse=ut,this.hotspots=Tt,this.hotspotTrigger=st,this.hide360Logo=et,this.logoSrc=$,this.inertia=nt,this.pinchZoom=mt,this.hints=J,this.hotspotTimelineOnClick=ne,ft==="dark"?this.container.classList.add("ci360-theme-dark"):ft==="light"&&this.container.classList.remove("ci360-theme-dark"),this.onReady=re,this.onLoad=Wt,this.onSpin=ae,this.onAutoplayStart=le,this.onAutoplayStop=Nt,this.onFullscreenOpen=Ft,this.onFullscreenClose=ce,this.onZoomIn=he,this.onZoomOut=Q,this.onDragStart=vt,this.onDragEnd=Vt,this.onError=jt,this.srcXConfig={folder:n,filename:r,imageList:yt,container:t,innerBox:this.innerBox,apiVersion:l,ciParams:bt,lazyload:L,amount:this.amountX,indexZeroBase:p,autoplayReverse:v,orientation:P.X},this.srcYConfig={...this.srcXConfig,filename:a,imageList:wt,orientation:P.Y,amount:this.amountY},o&&this.removeEvents(),this.attachEvents(x,y,g),o)return;const Lt=(this.fullscreenView?document.body:this.container).offsetWidth,Pt=this.allowSpinX&&!yt.length?xt(this.srcXConfig,Lt):null,ii=this.allowSpinY&&!wt.length?xt(this.srcYConfig,Lt):null,oi=on=>{ye({cdnPathX:Pt,cdnPathY:ii,configX:this.srcXConfig,configY:this.srcYConfig,onImageLoad:(Mt,sn,nn)=>this.onImageLoad(Mt,sn,nn),onFirstImageLoad:Mt=>this.onFirstImageLoaded(on,Mt),onAllImagesLoad:this.onAllImagesLoaded.bind(this),onError:Mt=>this.emit("onError",Mt)})};this.allowSpinX?Ae(Pt,this.srcXConfig,oi):this.allowSpinY&&Ae(ii,this.srcYConfig,oi)}}const ti=typeof navigator<"u"&&/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);class ei{constructor(){this.views=new Map,this.initAll=this.initAll.bind(this),this.getViews=this.getViews.bind(this),this.memoryObserver=null,this.memoryManagementAutoEnabled=!1}generateId(){return`ci360-${Math.random().toString(36).slice(2,11)}`}init(t,i,o){if(!t)return;const s=t.id||this.generateId();t.id||(t.id=s);const n=new zt(t,i,o);return this.views.set(s,n),ti&&!this.memoryManagementAutoEnabled&&(this.memoryManagementAutoEnabled=!0,setTimeout(()=>this.enableMemoryManagement(),100)),n}initAll(t="cloudimage-360"){[...document.querySelectorAll(`.${t}`)].filter(Boolean).forEach(o=>{const s=o.id||this.generateId();o.id||(o.id=s);const n=new zt(o);this.views.set(s,n)}),ti&&!this.memoryManagementAutoEnabled&&this.views.size>0&&(this.memoryManagementAutoEnabled=!0,setTimeout(()=>this.enableMemoryManagement(),100))}destroy(t){const i=this.getViewById(t);i&&(i.destroy(),this.views.delete(t))}destroyAll(){this.views.forEach(t=>{t.destroy()}),this.views.clear()}getViewById(t){return this.views.get(t)}getViews(){return Array.from(this.views.values())}updateView(t,i){const o=this.getViewById(t);if(!o)return null;const s={...o.viewerConfig,...i};o.destroy();const n=document.getElementById(t);return this.init(n,s)}enableMemoryManagement(t={}){this.memoryObserver&&this.memoryObserver.disconnect();const i=t.rootMargin||"200px";this.memoryObserver=new IntersectionObserver(o=>{o.forEach(s=>{const n=this.getViewById(s.target.id);n&&(s.isIntersecting?n.isMemoryReleased&&n.reloadImages():!n.isMemoryReleased&&n.isReady&&n.releaseMemory())})},{rootMargin:i}),this.views.forEach((o,s)=>{const n=document.getElementById(s);n&&this.memoryObserver.observe(n)}),this.boundVisibilityHandler=()=>{document.hidden?this.views.forEach(o=>{!o.isMemoryReleased&&o.isReady&&o.releaseMemory()}):this.views.forEach((o,s)=>{if(o.isMemoryReleased){const n=document.getElementById(s);if(n){const l=n.getBoundingClientRect();l.top<window.innerHeight&&l.bottom>0&&o.reloadImages()}}})},document.addEventListener("visibilitychange",this.boundVisibilityHandler)}disableMemoryManagement(){this.memoryObserver&&(this.memoryObserver.disconnect(),this.memoryObserver=null),this.boundVisibilityHandler&&(document.removeEventListener("visibilitychange",this.boundVisibilityHandler),this.boundVisibilityHandler=null)}}return window.CI360=ei,ei}();
|