@micrio/client 7.1.2 → 7.1.3

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/micrio.min.js CHANGED
@@ -1,4 +1,4 @@
1
- /* Micrio Client 7.1.2
1
+ /* Micrio Client 7.1.3
2
2
  * Copyright (C) 2015 - present, Q42 Internet B.V. <https://q42.com>, Micrio <https://micr.io>
3
3
  *
4
4
  * GitHub: https://github.com/Q42/Micrio.Client
@@ -24,4 +24,4 @@
24
24
  */
25
25
 
26
26
  const _style=document.createElement('style');_style.className='micrio-interface';_style.textContent=`micrio-button>:is(button,a){cursor:pointer;box-sizing:border-box;font:inherit;touch-action:none;color:var(--micrio-color);background:var(--micrio-button-background,var(--micrio-background,none)) center center no-repeat;min-width:var(--micrio-button-size);height:var(--micrio-button-size);border-radius:var(--micrio-border-radius);box-shadow:var(--micrio-button-shadow);-webkit-backdrop-filter:var(--micrio-background-filter);backdrop-filter:var(--micrio-background-filter);background-size:24px;border:none;justify-content:center;align-items:center;margin:0;padding:0 8px;font-family:inherit;font-size:90%;text-decoration:none;transition:opacity .25s;display:flex;position:relative}micrio-button>:is(button,a):hover{outline:none}micrio-button>:is(button,a).transparent{-webkit-backdrop-filter:none;backdrop-filter:none;background-color:#0000}micrio-button>:is(button,a)>*{transition:opacity .25s}micrio-button>:is(button,a):disabled{pointer-events:none;cursor:default}micrio-button>:is(button,a):disabled svg{opacity:.4}micrio-button>:is(button,a).no-click{pointer-events:none}micrio-button>:is(button,a) img{pointer-events:none;max-width:100%;max-height:100%}micrio-button>:is(button,a).active{color:var(--micrio-color-hover)}micrio-button>:is(button,a).active svg{fill:var(--micrio-color-hover)}@media (hover:hover){micrio-button>:is(button,a):is(:hover,:focus){background-color:var(--micrio-button-background-hover,var(--micrio-button-background,var(--micrio-background)));color:var(--micrio-color-hover);z-index:1}micrio-button>:is(button,a):is(:hover,:focus) svg{fill:var(--micrio-color-hover);stroke:var(--micrio-color-hover)}micrio-button>:is(button,a):focus{outline:1px solid var(--micrio-color-hover)}}micrio-grid{grid-gap:0;will-change:transform;transform-origin:0 0;--translate:none;--scale:1;width:100%;height:100%;transform:var(--translate) scale3d(var(--scale),var(--scale),1);grid-auto-flow:dense;display:grid;position:fixed;top:0;left:0}micrio-grid>button{cursor:pointer;pointer-events:auto;background:0 0;border:none;grid-area:auto/auto/span 1/span 1;margin:0;padding:0}:is(micrio-grid>button.focussed,micrio-grid.grid-pan-zoom,micrio-grid.grid-pan-zoom>button,micrio-grid.grid-cells-hidden){pointer-events:none}micrio-grid.grid-cells-hidden>button{display:none}micrio-grid .close{top:var(--micrio-border-margin);right:var(--micrio-border-margin);z-index:2;pointer-events:auto;display:block;position:absolute}html{--micrio-color:#fff;--micrio-color-hover:#45a4e4;--micrio-border-radius:4px;--micrio-background:#292929bf;--micrio-background-filter:blur(8px);--micrio-popover-background:#292929bf;--micrio-scrubber-background:#ffffff40;--micrio-icon-size:18px;--micrio-text-align:left;--micrio-line-height:1.5em;--micrio-border-margin:16px;--micrio-button-size:48px;--micrio-button-shadow:0 4px 8px #00000054;--micrio-marker-size:16px;--micrio-marker-text-color:#fff;--micrio-marker-text-shadow:0px 2px 4px #0009;--micrio-marker-highlight:#00d4ee;--micrio-marker-color:#fff;--micrio-marker-border-radius:100%;--micrio-marker-border-color:#fff3;--micrio-marker-border-size:8px;--micrio-marker-icon:none;--micrio-marker-transition:background-color .25s ease,opacity .15s ease,border-width .15s ease,width .15s ease,height .15s ease;--micrio-popup-shadow:0 8px 16px #00000054;--micrio-popup-padding:16px;--micrio-progress-bar-background:#ffffff40;--micrio-progress-bar-height:4px;--micrio-waypoint-size:120px}micr-io[data-light-mode]{--micrio-color:#000;--micrio-color-hover:#196da6;--micrio-background:#ffffffa8;--micrio-progress-bar-background:#00000040;--micrio-popover-background:#d3d3d3bf;--micrio-scrubber-background:#ffffff80}@media (prefers-color-scheme:light){micr-io[data-auto-scheme]{--micrio-color:#000;--micrio-color-hover:#196da6;--micrio-background:#ffffffa8;--micrio-progress-bar-background:#00000040;--micrio-popover-background:#d3d3d3bf}}@media (width<=500px){html{--micrio-border-margin:5px;--micrio-button-size:48px}}micr-io{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;backface-visibility:hidden;width:100%;height:100%;min-height:200px;font-family:var(--micrio-font-family,inherit);font-size:var(--micrio-font-size,inherit);background-position:50%;background-repeat:no-repeat;background-size:contain;background-color:var(--micrio-background-color,transparent);display:block;position:relative;overflow:hidden;container-type:size}micr-io[dir=rtl]{--micrio-text-align:right}canvas.micrio{backface-visibility:hidden;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;display:block;position:absolute;top:0;left:0;width:100%!important;height:100%!important}micr-io:not([static]){overscroll-behavior:none}micr-io[data-hooked]:not([data-panning])>canvas.micrio{cursor:move;cursor:-webkit-grab;cursor:-moz-grab;cursor:-ms-grab;cursor:grab;-ms-content-zooming:none;-ms-touch-action:none;touch-action:none}micr-io[data-panning]{cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:-ms-grabbing;cursor:grabbing}micr-io[data-hooked][data-can-pan]>canvas.micrio{-ms-touch-action:pan-y;touch-action:pan-y;overscroll-behavior:initial}micrio-icon{display:contents}micrio-icon>svg{height:var(--micrio-icon-size);width:var(--micrio-icon-size);display:inline-block}micrio-icon>svg.small{height:.75em}:where(micrio-main,micrio-toolbar,micrio-gallery,micrio-swipe-gallery,micrio-controls,micrio-popover,micrio-logo,micrio-logo-org,micrio-audio-controller,micrio-fullscreen,micrio-tour,micrio-serial-tour,micrio-embed,micrio-zoom-buttons,micrio-button){display:contents}:is(micrio-markers,micrio-image-embeds,micrio-marker,micrio-button-group):empty{display:none}:is(micrio-media-controls,micrio-marker-content)>*,micrio-tour .controls>micrio-button{--micrio-button-background:none;--micrio-background-filter:none;--micrio-button-shadow:none}:is(micrio-markers,micrio-image-embeds){pointer-events:none;will-change:width,height,top,left,opacity;width:100%;height:100%;perspective:inherit;position:absolute;top:0;left:0;overflow:hidden}:is(micrio-details details,micrio-marker-content,micrio-button-group),micrio-swipe-gallery>figcaption{color:var(--micrio-color);background:var(--micrio-background);-webkit-backdrop-filter:var(--micrio-background-filter);backdrop-filter:var(--micrio-background-filter);box-shadow:var(--micrio-popup-shadow);border-radius:var(--micrio-border-radius)}:is(micrio-media,micrio-media-controls){display:block}micr-io:is([data-video-tour-active],[data-marker-tour-active])[data-idle] :is(micrio-logo a,micrio-logo-org a,micrio-tour>aside),micr-io[data-idle] :is(micrio-grid .close,micrio-tour micrio-media figure,micrio-serial-tour :is(micrio-media figure,ol)),micr-io:is([data-switching],[data-video-tour-active]) :is(micrio-controls aside,micrio-minimap canvas),micr-io[data-marker-tour-active] micrio-controls aside :is(micrio-zoom-buttons),micr-io:is([data-zoomed],[data-idle],[data-marker-tour-active]) micrio-gallery :is(ul,micrio-button>button),micr-io[data-zoomed] micrio-details details,micrio-gallery>micrio-button>button:disabled{opacity:0;pointer-events:none;transform:var(--micrio-hide,none)}micr-io[data-marker-tour-active] micrio-controls aside :is(micrio-zoom-buttons){--micrio-hide:none}micrio-button-group{display:block}micrio-button-group micrio-button>:is(button,a){box-shadow:none;--micrio-button-background:transparent;--micrio-background-filter:none;border-radius:0}micrio-button-group>micrio-button:first-child>:is(button,a),micrio-button-group>:first-child>micrio-button:first-child>:is(button,a){border-radius:var(--micrio-border-radius) var(--micrio-border-radius) 0 0}micrio-button-group>micrio-button:last-child>:is(button,a),micrio-button-group>:last-child>micrio-button:last-child>:is(button,a){border-radius:0 0 var(--micrio-border-radius) var(--micrio-border-radius)}@media (width<=500px){micrio-button-group micrio-button>:is(button,a){height:calc(var(--micrio-button-size) - 4px)}}micrio-progress-circle{pointer-events:none;z-index:10;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(-90deg)}micrio-progress-circle svg{display:block}micrio-progress-circle circle{transition:stroke-dashoffset .25s}micrio-logo a{top:calc(var(--micrio-border-margin) * 2);left:calc(var(--micrio-border-margin) * 2);z-index:2;cursor:pointer;--micrio-hide:translateX(-100%);width:22px;height:22px;transition:transform .25s,opacity .25s;display:block;position:absolute}micrio-logo a:hover{transform:rotate(-90deg)}micrio-logo a:before,micrio-logo a:after{content:"";will-change:transform;box-sizing:unset;display:block;position:absolute;transform:rotate(45deg)}micrio-logo a:before{border:3px solid #00d4ee;width:16px;height:16px}micrio-logo a.loading:before{animation:1s ease-out infinite micrio-logo-spin}micrio-logo a:after{background:#c5ff5b;outline:1px solid #c5ff5b;width:6px;height:6px;top:8px;left:8px}micrio-logo a.loading:after{animation:.5s ease-out infinite micrio-logo-spin}@keyframes micrio-logo-spin{0%{transform:rotate(45deg)}to{transform:rotate(135deg)}}micrio-article a{color:var(--micrio-color)}micrio-article img{max-width:100%}micrio-subtitles{bottom:calc(3 * var(--micrio-border-margin));text-align:center;color:var(--micrio-color);pointer-events:none;z-index:6;width:100vw;transition:bottom .25s;position:fixed;left:50vw;transform:translate(-50%)}micr-io:is([data-video-tour-active],[data-marker-tour-active]):not([data-idle]) micrio-subtitles{bottom:calc(3 * var(--micrio-border-margin) + var(--micrio-button-size))}micrio-subtitles p{background-color:var(--micrio-background);-webkit-box-decoration-break:clone;box-decoration-break:clone;white-space:pre-wrap;text-shadow:2px 2px 1px #0005;font-size:2.5em;line-height:inherit;margin:.5em 0;padding:0 14px;display:inline}@media (width<=640px){micrio-subtitles p{white-space:normal;width:95vw;font-size:1.4em}}micrio-details details{bottom:var(--micrio-border-margin);left:var(--micrio-border-margin);padding:var(--micrio-popup-padding);-webkit-user-select:text;user-select:text;white-space:normal;box-sizing:border-box;--micrio-hide:translateY(100%);max-width:410px;font-size:.9em;transition:opacity .25s,transform .25s;position:absolute}micrio-details summary{cursor:pointer}micrio-details summary::-webkit-details-marker{display:none}micrio-details small{font-style:italic;font-weight:400;display:block}micrio-details details>*{text-overflow:ellipsis;margin:0;overflow:hidden}micrio-details a{color:var(--micrio-color-hover,inherit)}@media (width<=600px){micrio-details details{max-width:calc(100% - var(--micrio-button-size) - 3 * var(--micrio-border-margin));z-index:5}}micrio-error{z-index:10;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}micrio-error>div{background:var(--micrio-background);color:var(--micrio-color);border:1px solid var(--micrio-color);border-radius:var(--micrio-border-radius);text-align:center;white-space:pre-wrap;-webkit-user-select:text;user-select:text;padding:10px;line-height:24px}micrio-error micrio-icon>svg{vertical-align:middle;width:24px;height:24px;fill:var(--micrio-color);margin-right:10px}@media (width<=520px){micrio-error>div{box-sizing:border-box;width:90%}}micrio-controls aside{right:var(--micrio-border-margin);bottom:var(--micrio-border-margin);z-index:2;--micrio-hide:translateX(100%);direction:rtl;margin:0;padding:0;transition:transform .25s,opacity .25s;position:absolute}micrio-controls menu{width:var(--micrio-button-size);min-height:var(--micrio-button-size);margin:8px 0;padding:0;position:relative}micrio-controls menu>div{background:var(--micrio-background);-webkit-backdrop-filter:var(--micrio-background-filter);backdrop-filter:var(--micrio-background-filter);border-radius:var(--micrio-border-radius);box-shadow:var(--micrio-button-shadow);white-space:nowrap;flex-direction:row;display:none;position:absolute;top:0;right:100%}micrio-controls menu:is(:hover,:focus-within)>div{display:flex}micrio-controls menu>div micrio-button{--micrio-button-shadow:none;--micrio-background-filter:none}micrio-controls menu>div micrio-button>*{padding:0}micrio-controls menu>div micrio-button>*>span{width:var(--micrio-button-size)}micrio-controls menu>div micrio-button>.active{background:var(--micrio-color-hover);color:var(--micrio-button-background,var(--micrio-background))}micrio-zoom-buttons:has(>micrio-button:first-child>button[disabled]):has(>micrio-button:last-child>button[disabled]){display:none}micrio-logo-org a{top:calc(var(--micrio-border-margin) * 2);right:calc(var(--micrio-border-margin) * 2);z-index:1;--micrio-hide:translateX(100%);transition:transform .25s,opacity .25s;display:block;position:absolute}micrio-logo-org img{max-height:64px;display:block}micrio-waypoint{transform-style:preserve-3d;--micrio-bb:var(--micrio-button-background);--micrio-bbh:var(--micrio-button-background-hover);width:0;height:0;display:block;position:absolute;top:50%;left:50%}micrio-waypoint>micrio-button>:is(button,a){--micrio-button-background:var(--micrio-waypoint-background,var(--micrio-bb));--micrio-button-background-hover:var(--micrio-waypoint-background-hover,var(--micrio-bbh));--micrio-button-size:var(--micrio-waypoint-size);--micrio-border-radius:var(--micrio-waypoint-border-radius,100%);--micrio-icon-size:var(--micrio-waypoint-icon-size,calc(var(--micrio-button-size) - 50px));pointer-events:all;border:var(--micrio-waypoint-border-size,var(--micrio-marker-border-size)) solid var(--micrio-waypoint-border-color,var(--micrio-marker-border-color));margin:0;transition:background-color .25s,opacity .25s,border-color .25s,transform .25s;transform:translate(-50%,-50%)scale(.5)}micrio-waypoint>micrio-button>:is(button,a)>svg{pointer-events:none;margin:0 auto}micrio-waypoint:hover>micrio-button>:is(button,a){transition:background-color .25s,opacity .25s,transform .25s;transform:translate(-50%,-50%)scale(.6)}micrio-waypoint.clicked>micrio-button>:is(button,a){animation:.75s infinite alternate micrio-waypoint-pulse}@keyframes micrio-waypoint-pulse{0%{transform:translate(-50%,-50%)scale(.5)}to{transform:translate(-50%,-50%)scale(.75)}}micrio-marker-content{padding:var(--micrio-popup-padding);-webkit-user-select:text;user-select:text;box-sizing:border-box;text-align:var(--micrio-text-align);max-height:calc(100cqh - 2 * var(--micrio-border-margin));min-height:var(--micrio-button-size);padding-bottom:0;display:block;position:relative;overflow-y:auto}micrio-marker-content h1{margin:0 0 1.25em;font-size:1.5em;font-weight:600}micrio-marker-content h1:only-child{margin-bottom:var(--micrio-popup-padding)}micrio-marker-content p{white-space:pre-line}micrio-marker-content micrio-media{margin:calc(-1 * var(--micrio-popup-padding));--micrio-background:transparent;width:auto;margin-bottom:0}micrio-marker-content micrio-media+micrio-media{margin-top:0}micrio-marker-content button{margin:0 calc(-1 * var(--micrio-popup-padding)) var(--micrio-popup-padding) calc(-1 * var(--micrio-popup-padding));padding:0}micrio-marker-content button:disabled{cursor:default}micrio-marker-content figcaption{margin-bottom:var(--micrio-popup-padding);text-align:center;padding:10px;font-size:.9em;font-style:italic}micrio-marker-content section{margin-bottom:var(--micrio-popup-padding);grid-template-columns:repeat(auto-fit,minmax(100px,1fr));justify-items:center;gap:5px;display:grid}micrio-marker-content section button{color:inherit;cursor:pointer;border:none;width:100%;margin:0;display:block}micrio-marker-content section figure{margin:0;padding:0}micrio-marker-content section img{object-fit:cover;width:100%;display:block}micrio-marker-content section button:only-child img{object-fit:contain;max-height:min(50cqh,400px)}@media (width<=500px){micrio-marker-content section{float:right;width:100px;margin-left:var(--micrio-border-margin);display:block}micrio-marker-content section>button:not(:first-child),micrio-marker-content section figcaption{display:none}micrio-marker-content:not(:has(micrio-article)) section{float:none;width:100%;margin-left:0}micrio-marker-content:not(:has(micrio-article)) section button{margin:0}micrio-marker-content:not(:has(micrio-article)) section img{object-fit:contain;max-height:min(50cqh,400px)}}micrio-menu{margin:0;padding:0;transition:background .2s,box-shadow .2s}micrio-menu>:is(a,button){cursor:pointer;color:inherit;text-shadow:inherit;box-sizing:border-box;text-align:center;background:0 0;border:none;border-radius:0;padding:0 24px;font-family:inherit;font-size:.9em;text-decoration:none;display:block}@media (width<=500px){micrio-menu{font-size:1em}micrio-menu>:is(a,button){text-align:left;align-items:center;gap:8px;width:100%;margin:0;padding:14px 20px;font-size:1em;display:flex}micrio-menu>:is(a,button) strong{flex:1}micrio-menu>div{display:none}micrio-menu.opened>div{display:block}micrio-menu>div>micrio-menu>:is(a,button){padding-left:40px;font-weight:400}}@media (width>=501px){micrio-menu{float:left;position:relative}micrio-menu:not(:is(:focus-within,:hover))>div{display:none}micrio-menu>:is(a,button){height:var(--micrio-button-size);line-height:var(--micrio-button-size);width:100%;text-align:var(--micrio-text-align);white-space:pre;font-weight:600}micrio-menu>div micrio-menu{float:none}micrio-menu>div :is(a,button){width:100%}micrio-menu>:is(a,button):is(:hover,:focus){text-shadow:none!important;color:var(--micrio-color-hover)!important}micrio-menu>div{max-height:calc(100vh - 160px);overflow:hidden auto}micrio-menu strong micrio-icon{vertical-align:1px;margin-left:10px;line-height:0}}micrio-toolbar>menu{top:calc(var(--micrio-border-margin) - (var(--micrio-button-size) / 2 - 27px));left:var(--micrio-border-margin);color:var(--micrio-color);text-shadow:1px 1px 2px #000;z-index:1;margin:0;padding:0;transition:transform .25s;position:absolute}@media (width<=500px){micrio-toolbar>micrio-button>:is(button,a){top:var(--micrio-border-margin);width:34px;height:34px;box-shadow:none;z-index:2;position:absolute;left:0}micrio-toolbar>micrio-button>:is(button,a).indent{left:35px}micrio-toolbar>menu{background:var(--micrio-background);width:100%;max-height:60vh;-webkit-backdrop-filter:var(--micrio-background-filter);backdrop-filter:var(--micrio-background-filter);z-index:100;color:var(--micrio-color);text-shadow:none;border-radius:16px 16px 0 0;margin:0;padding:16px 0;transition:transform .3s;position:fixed;inset:auto 0 0;overflow:hidden auto;transform:translateY(100%)}micrio-toolbar>menu.shown{transform:translateY(0)}micrio-toolbar>menu:before{content:"";background:#8080804d;border-radius:2px;width:36px;height:4px;margin:-8px auto 12px;display:block}.backdrop{z-index:50;background:#0006;position:fixed;inset:0}}@media (width>=501px){micrio-toolbar>menu.indent{margin-left:calc(var(--micrio-border-margin) * 2 + 25px)}micrio-toolbar>menu>micrio-menu{color:var(--micrio-color);margin-right:var(--micrio-border-margin);border-radius:var(--micrio-border-radius)}micrio-toolbar>menu>micrio-menu:is(:hover,:focus-within){-webkit-backdrop-filter:var(--micrio-background-filter);backdrop-filter:var(--micrio-background-filter);background:var(--micrio-background);box-shadow:var(--micrio-button-shadow)}}micrio-media-controls{display:block}micrio-media-controls>aside{--micrio-background:var(--micrio-background,#000);align-items:center;width:100%;display:flex}micrio-media-controls micrio-button>button{border:none;border-radius:0;margin:0}micrio-media-controls .subtitles button:not(.active){color:var(--micrio-color)!important}micrio-media-controls .subtitles button:not(.active) svg{fill:var(--micrio-color)!important}micrio-media-controls micrio-button:last-child{margin-right:16px}micrio-media-controls aside>div{flex:1;align-items:center;gap:8px;padding:0 8px;display:flex}micrio-media-controls [data-part=bars]{background:var(--micrio-progress-bar-background,var(--micrio-color-hover));cursor:pointer;border-radius:2px;flex:1;height:4px;position:relative}micrio-media-controls [data-part=bar]{background:var(--micrio-color);height:100%;position:absolute;top:0;left:0}micrio-media-controls [data-part=bars]>[data-part=bar]:first-child{border-radius:2px 0 0 2px}micrio-media-controls [data-part=bars]>[data-part=bar]:last-child{border-radius:0 2px 2px 0}micrio-media-controls [data-part=bars]>[data-part=bar]:only-child{border-radius:2px}micrio-media-controls aside>div>span{white-space:nowrap;font-variant-numeric:tabular-nums;color:var(--micrio-color);text-align:center;min-width:50px;padding:0;font-size:90%;display:block}micrio-media{display:block}micrio-media figure{margin:0;padding:0;position:relative}micrio-media figure :is(video,audio){width:100%;display:block}micrio-media figure figcaption{opacity:.7;text-align:center;background:var(--micrio-background);padding:5px 10px;font-size:.85em}micrio-media figure iframe{border:none;width:100%;display:block}micrio-media figure:-webkit-any(:fullscreen,:-webkit-full-screen) iframe{height:100%}micrio-media figure:is(:fullscreen,:fullscreen) iframe{height:100%}micrio-media figure:-webkit-any(:fullscreen,:-webkit-full-screen) video{object-fit:contain;height:100%}micrio-media figure:is(:fullscreen,:fullscreen) video{object-fit:contain;height:100%}micrio-media figure:has(video){width:auto}:is(micrio-tour,micrio-serial-tour) micrio-media figure{bottom:var(--micrio-border-margin);width:500px;max-width:calc(100vw - 2 * var(--micrio-border-margin,0));max-width:calc(100cqw - 2 * var(--micrio-border-margin,0));background:var(--micrio-button-background,var(--micrio-background,none));border-radius:var(--micrio-border-radius);box-shadow:var(--micrio-button-shadow);-webkit-backdrop-filter:var(--micrio-background-filter);backdrop-filter:var(--micrio-background-filter);z-index:5;--micrio-hide:translate(-50%,100%);flex-direction:column;margin:0;padding:0;transition:transform .25s,opacity .25s;display:flex;position:fixed;left:50%;transform:translate(-50%)}micrio-media figure.hidden{display:none!important}micrio-marker-popup{cursor:auto;top:var(--micrio-border-margin);left:var(--micrio-border-margin);display:block;position:absolute}micrio-marker-popup>aside{padding:0;position:absolute}@keyframes micrio-popup-in{0%{opacity:0;transform:translate(-50px)}to{opacity:1;transform:translate(0)}}@media (width>=501px){micrio-marker-popup{width:440px;min-width:20%;animation:.2s ease-out micrio-popup-in}micrio-marker-popup>aside{left:calc(100% + var(--micrio-border-margin));flex-direction:column-reverse;top:0}micrio-marker-popup.destroying{opacity:0;pointer-events:none;transition:opacity .2s ease-out,transform .2s ease-out;animation:none;transform:translate(-50px)}}@media (width<=500px){micrio-marker-popup>aside{z-index:2;--micrio-button-shadow:none;--micrio-background:none;--micrio-background-filter:none;top:0;right:0}micrio-marker-popup :is(h1,micrio-media:only-child){margin-right:calc(var(--micrio-button-size) - 2 * var(--micrio-border-margin,0))}micrio-marker-popup{width:auto;right:var(--micrio-border-margin);top:auto;top:var(--micrio-border-margin);flex-direction:column;justify-content:space-between;transition:opacity .25s;display:flex}micrio-marker-popup.destroying{opacity:0;pointer-events:none}}micrio-marker{transform:translate3d(var(--x,0),var(--y,0),0) translate(-50%,-50%) scale3d(var(--scale,1),var(--scale,1),1);will-change:transform;display:block;position:absolute;top:0;left:0}micrio-marker:not(.cluster){animation:.25s forwards micrio-marker-fade}micrio-marker.overlapped{display:none}@keyframes micrio-marker-fade{0%{opacity:0}to{opacity:1}}micrio-marker.behind{pointer-events:none;opacity:0!important}micrio-marker.mat3d{transform:var(--mat);transform-style:preserve-3d;top:50%;left:50%}micrio-marker.mat3d button{position:absolute;transform:translate(-50%,-50%)}micrio-marker button{width:var(--micrio-marker-size);height:var(--micrio-marker-size);color:var(--micrio-marker-text-color);cursor:pointer;font:inherit;background:50% no-repeat;background-image:var(--micrio-marker-icon);background-size:contain;border:none;margin:0;padding:0;display:block;position:relative}micrio-marker label{text-align:var(--micrio-text-align);cursor:pointer;white-space:pre-wrap;width:max-content;max-width:170px;text-shadow:var(--micrio-marker-text-shadow);opacity:0;pointer-events:none;padding-left:10px;font-size:90%;font-weight:600;line-height:1em;transition:opacity .1s;position:absolute;top:50%;left:100%;transform:translateY(-50%)}micrio-marker:hover{z-index:2}:is(micrio-marker:hover,.show-titles micrio-marker) label{opacity:1}@media (width<=640px){micrio-marker label{font-size:12px}}.show-titles micrio-marker label{pointer-events:all}micrio-marker label.static{transform:translate(-50%,4px) scale3d(calc(1/var(--scale,1)),calc(1/var(--scale,1)),1)}micrio-marker.default button{box-sizing:content-box;border-radius:var(--micrio-marker-border-radius);border:var(--micrio-marker-border-size) solid var(--micrio-marker-border-color);transition:var(--micrio-marker-transition);background-clip:content-box;background-color:var(--micrio-marker-color)}micrio-marker.default:is(:hover,.opened){z-index:1}micrio-marker.default:is(:hover,.opened) button{background-color:var(--micrio-marker-highlight);width:calc(var(--micrio-marker-size,25px) + var(--micrio-marker-border-size,3px)*2);height:calc(var(--micrio-marker-size,25px) + var(--micrio-marker-border-size,3px)*2);border-width:0}micrio-marker.has-icon{--micrio-marker-icon:none}micrio-marker.has-custom-icon{--micrio-marker-size:32px}micrio-marker.default.has-icon button{color:#fff;width:calc(var(--micrio-marker-size) + 24px);height:calc(var(--micrio-marker-size) + 24px);background-color:var(--micrio-marker-border-color);border:none}micrio-marker.default.has-icon:is(.opened,:hover) button svg{color:var(--micrio-marker-highlight)}micrio-marker.default.has-custom-icon button{background-color:#0000}micrio-marker.default.has-custom-icon:is(.opened,:hover) button{background-color:var(--micrio-marker-highlight,var(--micrio-marker-color))}micrio-marker.cluster button{border:2px solid var(--micrio-marker-color);background:var(--micrio-cluster-marker-background,#fff);color:var(--micrio-cluster-marker-color,#000);width:calc(var(--micrio-marker-size) + 12px);height:calc(var(--micrio-marker-size) + 12px);box-sizing:content-box;border-radius:100%}micrio-marker.cluster:hover button{background:var(--micrio-marker-highlight,#fff);border-color:var(--micrio-marker-highlight,#fff)}micrio-marker.cluster label{pointer-events:none;display:none}micrio-marker img{max-width:100%;max-height:100%;margin:auto;display:block}micrio-markers>*{pointer-events:all}micrio-markers.inactive>*{pointer-events:none}micrio-main.is360 micrio-markers{transition:opacity .25s}micrio-main.is360 micrio-markers.inactive{opacity:0}micr-io[data-video-tour-active] micrio-markers{display:none}micrio-dial{bottom:var(--micrio-border-margin);width:320px;max-width:calc(100vw - calc(2 * (var(--micrio-button-size) + 4 * var(--micrio-border-margin))));max-width:calc(100cqw - calc(2 * (var(--micrio-button-size) + 4 * var(--micrio-border-margin))));height:calc(var(--micrio-button-size)*.6);touch-action:none;cursor:w-resize;background-color:#0000;position:absolute;left:50%;overflow:hidden;transform:translate(-50%)}micrio-dial:before,micrio-dial:after{content:"";background-position:var(--micrio-dial-offset,0px);width:100%;display:block;position:absolute}micrio-dial:before{background-image:repeating-linear-gradient(90deg,#8888 0% .5%,#0000 1% 2.5%);height:50%;top:25%}micrio-dial:after{background-image:repeating-linear-gradient(90deg,#fff8 0% .5%,#0000 1% 20%);height:100%}micrio-minimap{display:contents}micrio-minimap canvas{bottom:var(--micrio-border-margin);right:var(--micrio-border-margin);transform-origin:100% 100%;cursor:grab;-ms-content-zooming:none;-ms-touch-action:none;touch-action:none;border-radius:var(--micrio-border-radius);background-size:100%;transition:opacity .2s;display:block;position:absolute}micrio-main:has(>micrio-controls)>micrio-minimap>canvas{right:calc(2 * var(--micrio-border-margin) + var(--micrio-button-size))}micr-io:not([data-zoomed]) micrio-minimap canvas:not(.fixed),micrio-minimap.hidden canvas:not(:hover){opacity:0;pointer-events:none}@media (width<=800px){micrio-minimap canvas{pointer-events:none;transform:scale(.5)!important}}micrio-embed>:is(a,div){transform:translate3d(calc(var(--x,0) - 50%),calc(var(--y,0) - 50%),0) scale3d(var(--s),var(--s),1);opacity:var(--opacity,1);will-change:transform,opacity;direction:ltr;display:block;position:absolute;top:0;left:0}micrio-embed>:is(a,div).embed3d{top:50%;left:50%}micrio-embed>:is(a,div).no-events{pointer-events:none}micrio-embed>:is(a,div).hide-when-paused{transition:opacity .25s}micrio-embed>:is(a,div).hide-when-paused:has(figure.paused){opacity:0}micrio-embed>:is(a,div).inactive{opacity:0;pointer-events:none}micrio-embed>:is(a,div)>*{transform:translate3d(-50%,-50%,0) scale3d(var(--scale,1),var(--scale,1),1);cursor:pointer;margin:0;position:absolute}micrio-embed>:is(a,div)>:not(button){width:auto!important}micrio-embed>:is(a,div)>img{max-width:none}micrio-embed>:is(a,div)>button{--scale:1;--ratio:1;width:100px;aspect-ratio:var(--ratio);background:0 0;border:none;margin:0;padding:0}micrio-embed>:is(a,div)>:is(button,img){touch-action:none}micrio-image-embeds>*{pointer-events:all}micrio-tour>aside.marker-tour{bottom:var(--micrio-border-margin);max-width:calc(100% - var(--micrio-border-margin) * 2);left:50%;transform:translate(-50%)}aside.marker-tour{box-sizing:border-box;border-radius:var(--micrio-border-radius);box-shadow:var(--micrio-button-shadow);-webkit-backdrop-filter:var(--micrio-background-filter);backdrop-filter:var(--micrio-background-filter);background-color:var(--micrio-button-background,var(--micrio-background,none));z-index:5;--micrio-hide:translate(-50%,100%);padding:0;transition:transform .25s,opacity .25s;display:flex;position:absolute}aside.marker-tour micrio-button{--micrio-button-background:transparent;--micrio-background-filter:none;--micrio-button-shadow:none;--micrio-border-radius:0}micr-io:not([data-video-tour-active]) aside.marker-tour micrio-fullscreen{display:none}aside.marker-tour>span{height:var(--micrio-button-size);line-height:var(--micrio-button-size);text-align:center;cursor:default;color:var(--micrio-color);background:0 0;border:none;align-items:center;padding:0 12px;font-family:inherit;font-size:90%;display:flex}micrio-swipe-gallery>figcaption{top:var(--micrio-border-margin);left:var(--micrio-border-margin);padding:var(--micrio-popup-padding);box-sizing:border-box;max-width:410px;position:absolute}@media (width<=500px){micrio-swipe-gallery>figcaption{max-width:calc(100% - 3*var(--micrio-border-margin) - var(--micrio-button-size))}}dialog::backdrop{color:#fff;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);animation:.2s forwards micrio-popover-bg}@keyframes micrio-popover-bg{0%{background:0 0}to{background:var(--micrio-popover-background)}}dialog{pointer-events:all;background:0 0;border:none;max-width:90vw;max-height:90vh;padding:0;animation:.5s forwards micrio-popover-fade;position:relative;overflow:visible}@keyframes micrio-popover-fade{0%{opacity:0}to{opacity:1}}dialog>aside{--micrio-background-filter:none;z-index:1;position:absolute}dialog:not(.article){display:flex}@media (width>=640px){dialog:not(.article){width:calc(85cqw - 56px);height:47.8125cqw}dialog>aside{margin-left:var(--micrio-border-margin);display:block;top:0;left:100%}dialog>micrio-marker-content{width:25cqw;min-width:unset;max-width:320px}}@media (width<=639px){dialog:not(.article){flex-direction:column;width:100%;height:100%}dialog>aside{top:var(--micrio-border-margin);right:var(--micrio-border-margin);position:fixed}}@media (aspect-ratio>=16/9){dialog:not(.article){width:133.333cqh;height:75cqh}}dialog:not(.article)>micrio-media{flex:1}dialog:not(.article)>micrio-media>figure{height:100%}dialog:not(.article)>micrio-media>figure :is(iframe,video){height:calc(100% - var(--micrio-button-size))}dialog.article{width:540px}dialog.article article{text-shadow:none;color:var(--micrio-color);background:var(--micrio-background);box-sizing:border-box;border-radius:var(--micrio-border-radius);max-height:calc(90vh - 48px);padding:20px;overflow:hidden auto}dialog.article h2{text-align:center}dialog.gallery>aside{left:auto;right:var(--micrio-border-margin);top:var(--micrio-border-margin);margin-left:0}dialog.gallery{width:100%;height:100%;max-width:unset;max-height:unset}micrio-gallery>micrio-button>button{z-index:2;transition:transform .15s,opacity .15s;position:absolute;top:50%;transform:translateY(-50%)}micrio-gallery>micrio-button:is(.prev,.rotateLeft)>button{left:var(--micrio-border-margin);--micrio-hide:translate(-100%,-50%)}micrio-gallery>micrio-button:is(.next,.rotateRight)>button{right:var(--micrio-border-margin);--micrio-hide:translate(100%,-50%)}micrio-gallery>micrio-button:is(.rotateLeft,.rotateRight)>button{top:calc(50% + var(--micrio-button-size) * 1.15)}micrio-gallery ul{bottom:var(--micrio-border-margin);background:var(--micrio-button-background,var(--micrio-background,none));box-shadow:var(--micrio-button-shadow);-webkit-backdrop-filter:var(--micrio-background-filter);backdrop-filter:var(--micrio-background-filter);border-radius:var(--micrio-border-radius);height:var(--micrio-button-size);color:var(--micrio-color);touch-action:none;cursor:pointer;--micrio-hide:translate(-50%,100%);width:520px;max-width:calc(100cqw - 50px);margin:0;padding:0 16px;list-style-type:none;transition:transform .15s,opacity .15s;display:block;position:absolute;left:50%;transform:translate(-50%)}@media (width<=500px){micrio-gallery ul{left:var(--micrio-border-margin);right:calc(var(--micrio-button-size) + var(--micrio-border-margin) * 2);--micrio-hide:translateY(100%);width:auto;transform:none}}micrio-gallery ul>:first-child{background:var(--micrio-scrubber-background);pointer-events:none;border-radius:2px;height:2px;position:absolute;top:50%;left:16px;right:16px;overflow:hidden;transform:translateY(-50%)}micrio-gallery ul>:first-child>span{background:var(--micrio-color);opacity:.85;border-radius:2px;height:100%;transition:width .15s;display:block;position:absolute;top:0;left:0}micrio-gallery ul>:nth-child(2){pointer-events:none;position:absolute;inset:0 16px}micrio-gallery ul>:nth-child(2)>span{background:var(--micrio-color);opacity:.55;border-radius:50%;width:6px;height:6px;transition:opacity .2s,transform .2s,background-color .2s;position:absolute;top:50%;transform:translate(-50%,-50%)}micrio-gallery ul>:nth-child(2)>span[data-active]{opacity:1;background:var(--micrio-color-hover,var(--micrio-color));transform:translate(-50%,-50%)scale(1.6)}@media (hover:hover){micrio-gallery ul>:nth-child(2)>span[data-hover]{opacity:1;transform:translate(-50%,-50%)scale(1.4)}}micrio-gallery ul.dense>:nth-child(2)>span{opacity:.35;border-radius:1px;width:1.5px;height:8px;transform:translate(-50%,-50%)}micrio-gallery ul.dense>:nth-child(2)>span[data-major]{opacity:.6;height:12px}micrio-gallery ul.dense>:nth-child(2)>span[data-active]{opacity:1;background:var(--micrio-color-hover,var(--micrio-color));width:2px;height:14px;transform:translate(-50%,-50%)}@media (hover:hover){micrio-gallery ul.dense>:nth-child(2)>span[data-hover]{opacity:.9;transform:translate(-50%,-50%)}}micrio-gallery [data-part=hover-label]{font-variant-numeric:tabular-nums;color:var(--micrio-color);background:var(--micrio-popover-background);-webkit-backdrop-filter:var(--micrio-background-filter);backdrop-filter:var(--micrio-background-filter);box-shadow:var(--micrio-button-shadow);pointer-events:none;white-space:nowrap;border-radius:999px;padding:2px 8px;font-size:11px;font-weight:600;line-height:1.4;position:absolute;bottom:calc(100% + 6px);transform:translate(-50%)}micrio-gallery ul>button{box-sizing:border-box;background:var(--micrio-color);border:2px solid var(--micrio-color);cursor:ew-resize;touch-action:none;min-width:28px;height:28px;box-shadow:0 2px 8px #00000059,0 0 0 0 var(--micrio-color-hover);border-radius:999px;padding:0;transition:left .15s,height .15s,min-width .15s,background-color .2s,box-shadow .2s;position:absolute;top:50%;left:0;transform:translate(-50%,-50%)}micrio-gallery ul>button:hover{box-shadow:0 2px 8px #0006,0 0 0 4px #ffffff1f}micrio-gallery ul>button.dragging{cursor:grabbing;transition:none;box-shadow:0 2px 12px #00000080,0 0 0 6px #ffffff26}micrio-gallery ul>button+span{font-variant-numeric:tabular-nums;color:var(--micrio-color);background:var(--micrio-popover-background);-webkit-backdrop-filter:var(--micrio-background-filter);backdrop-filter:var(--micrio-background-filter);box-shadow:var(--micrio-button-shadow);pointer-events:none;white-space:nowrap;border-radius:999px;padding:3px 9px;font-size:12px;font-weight:600;line-height:1.4;transition:left .15s,transform .15s;position:absolute;bottom:calc(100% + 8px);left:0;transform:translate(-50%)}micrio-gallery ul>button+span.dragging{transition:none;transform:translate(-50%)scale(1.05)}micrio-gallery>micrio-button>button:is(:hover,:focus){position:absolute!important}micrio-serial-tour>micrio-media,micrio-serial-tour micrio-media-controls{display:contents}micrio-serial-tour [data-part=bars]{height:var(--micrio-progress-bar-height,6px);background:var(--micrio-progress-bar-background,#8080804d);border-radius:3px;display:flex;position:relative;overflow:hidden}micrio-serial-tour [data-part=bars]>[data-part=bar]{box-sizing:border-box;cursor:pointer;background:0 0;height:100%;display:block;position:relative;overflow:hidden}micrio-serial-tour [data-part=bars]>[data-part=bar]:before{content:" ";background:var(--micrio-color);pointer-events:none;height:100%;width:var(--progress,0%);will-change:width;display:block;position:absolute}micrio-serial-tour [data-part=bars]>[data-part=bar].active:before{background:var(--micrio-active-color,var(--micrio-color))}micrio-serial-tour ol{left:var(--micrio-border-margin);bottom:var(--micrio-border-margin);color:var(--micrio-color);text-shadow:var(--micrio-marker-text-shadow);--micrio-hide:translate3d(-100%,0,0);margin:0;list-style-type:decimal-leading-zero;transition:transform .25s,opacity .25s;position:absolute}micrio-serial-tour ol>li{white-space:pre;padding:.15em;transition:height .25s,opacity .25s .25s}micrio-serial-tour ol>li.active{font-weight:700}micrio-serial-tour ol button{font:inherit;color:inherit;text-shadow:inherit;cursor:pointer;background:0 0;border:none;display:inline}micrio-serial-tour ol button:hover{text-decoration:underline}@media (width<=500px){micrio-serial-tour ol{bottom:calc(var(--micrio-button-size) + 3 * var(--micrio-border-margin))}}micrio-main.is3d{perspective:50cqh}`;document.head.insertBefore(_style,document.head.firstChild);
27
- !function(){function t(i,s,h={}){if(!i||"object"!=typeof i)return s;const e=s;for(const n of Object.keys(i)){if("__proto__"===n||"constructor"===n||"prototype"===n)continue;const s=i[n];s&&"object"==typeof s&&Object.getPrototypeOf(s)===Object.prototype?(e[n]&&"object"==typeof e[n]||(e[n]={}),t(s,e[n],h)):h.noOverwrite&&n in e||(e[n]=s)}return s}var i,s="E001",h="E002",e="E003",n="E004",o="E005",r="E100",a="E101",c="E102",l="E103",u="E200",d="E201",f="E202",p="E203",m="E300",g="E301",w="E302",v="E303",M="E999",_={[s]:"You appear to be offline. Please check your internet connection and try again.",[h]:"The connection timed out. Please try again.",[e]:"Unable to load content due to security restrictions.",[n]:"The requested image or content could not be found.",[o]:"The server encountered an error. Please try again later.",[r]:"Your browser does not support WebGL, which is required to view this content.",[a]:"The graphics context was lost. The page will attempt to recover.",[c]:"There was a problem initializing the graphics. Please try refreshing the page.",[l]:"Your device is low on memory. Try closing other browser tabs or applications.",[u]:"The image data appears to be invalid or corrupted.",[d]:"The requested content could not be loaded.",[f]:"There was a problem processing the image information.",[p]:"This image uses an unsupported format version.",[m]:"Failed to load the image viewer engine. Please try refreshing the page.",[g]:"An error occurred in the image viewer. Please try refreshing the page.",[w]:"Failed to load the image. Please try again.",[v]:"Failed to load the tour. Some features may be unavailable.",[M]:"An unexpected error occurred. Please try refreshing the page."},y=class t extends Error{displayMessage;cause;code;statusCode;constructor(i,s){super(i),this.name="MicrioError",this.code=s?.code??M,this.displayMessage=s?.displayMessage??_[this.code],this.cause=s?.cause,this.statusCode=s?.statusCode,"captureStackTrace"in Error&&"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,t)}static fromResponse(i,e){const r=i.status;let a=M;return 404===r?a=n:r>=500&&600>r?a=o:0===r?a=s:408!==r&&504!==r||(a=h),new t(`${e?e+": ":""}HTTP ${r}`,{code:a,statusCode:r})}static fromError(i,n){const o=i.message.toLowerCase();let a=M;return o.includes("network")||o.includes("internet")||o.includes("offline")?a=s:o.includes("timeout")?a=h:o.includes("cors")||o.includes("cross-origin")?a=e:o.includes("webgl")||o.includes("webglcontext")?a=r:o.includes("memory")||o.includes("out of memory")?a=l:(o.includes("wasm")||o.includes("webassembly"))&&(a=m),new t(`${n?n+": ":""}${i.message}`,{code:a,cause:i})}},b=new Map,k=new Map,x=async(t,i)=>{if(!i&&b.has(t))return structuredClone(b.get(t));if(k.has(t))return k.get(t);const s=fetch(t+(i?(t.includes("?")?"&":"?")+Math.random():"")).then(async i=>{if(200==i.status)return i.json();throw y.fromResponse(i,`fetchJson(${t})`)}).then(s=>(i||b.set(t,s),k.delete(t),structuredClone(s))).catch(i=>{throw k.delete(t),i});return k.set(t,s),s},P=t=>{let i=t.charCodeAt(0),s=91>i;return(i-=s?65:97)-(i>7?1:0)+(s?24:i>10?-1:0)},T=t=>6==t.length||7==t.length,S=()=>Math.random().toString(),A="7.1.2",C=`https://viewer.${(()=>{try{const t=location.hostname;if(t.endsWith("micrio.dev"))return"micrio.dev";if(t.endsWith("micrio.net"))return"micrio.net"}catch{}return"micr.io"})()}/`,E="micrio-muted",I={camspeed:1,view:[0,0,1,1],restrict:[0,0,1,1],focus:[.5,.5],zoomLimit:1,fullscreen:1,hookEvents:1,hookScroll:1,hookPinch:1,hookDrag:1,minimap:1,doTourJumps:1,audio:1,startVolume:1,mutedVolume:0,_markers:{showTitles:0,zoomOutAfterClose:1},ui:{controls:{cultureSwitch:1}},_360:{}},L={id:{r:1},lang:{r:1},"data-path":{r:1},"data-inittype":{f:"initType"},"data-start":{f:"gallery.startId"},"data-gallery-sort":{f:"gallery.sort"},"data-gallery-type":{f:"gallery.type"}},z={"data-static":{},muted:{f:"audio",n:1},"data-no-externals":{f:"noExternals"},"data-skipmeta":{f:"skipMeta"},"data-keeprendering":{f:"keepRendering"},"data-coverlimit":{f:"limitToCoverScale"},"data-events":{f:"hookEvents"},"data-keys":{f:"hookKeys"},"data-zooming":{f:"noZoom",n:1},"data-scroll-zoom":{f:"hookScroll"},"data-pinch-zoom":{f:"hookPinch"},"data-dragging":{f:"hookDrag"},"data-two-finger-pan":{f:"twoFingerPan"},"data-control-zoom":{f:"controlZoom"},"data-ui":{f:"noUI",n:1},"data-controls":{f:"noControls",n:1},"data-logo":{f:"noLogo",n:1},"data-logo-org":{f:"noOrgLogo",n:1},"data-toolbar":{f:"noToolbar",n:1},"data-show-info":{f:"showInfo"},"data-social":{},"data-fullscreen":{},"data-minimap":{},"data-minimap-hide":{f:"alwaysShowMinimap",n:1},"data-normalize-dpr":{f:"zoomLimitDPRFix"},"data-freemove":{f:"freeMove"}},D={"data-version":{r:1},height:{r:1},width:{r:1},volume:{f:"startVolume"},"data-camspeed":{},"data-zoomlimit":{f:"zoomLimit"},"data-minimap-height":{f:"minimapHeight"},"data-minimap-width":{f:"minimapWidth"},"data-mutedvolume":{f:"mutedVolume"},lazyload:{dN:0},"data-elasticity":{f:"dragElasticity"},"data-skip-base-levels":{f:"skipBaseLevels"},"data-watermark-opacity":{f:"watermarkOpacity"}},F={"data-focus":{},"data-view":{}},$=new Map,O=new Map,B=new Map,V=new Map,R=new Map,N={async t(t){return(await this.l(t))?.data},u(t){return $.get(t)},p(t){return($.get(t.micrioId)?.data)?.markers?.find(i=>i.id===t.markerId)},m(t){return O.get(t)},M(){return i},_(t){return B.get(t)},k(t){return V.get(t)},async l(t){if(t)return await(async t=>{if(!t||t.startsWith("http")||$.has(t))return;if(R.has(t))return R.get(t);const s=(async t=>{const s=await x(`${C}${t}/bundle.json?v=${A}`);if(s?.images){for(const t of s.images)t?.id&&($.set(t.id,t),s.tours&&V.set(t.id,s.tours));t.startsWith("external/")&&s.images[0]?.id&&($.set(t,s.images[0]),s.tours&&V.set(t,s.tours))}if(s?.organisation&&(i=s.organisation),s?.spaces)for(const i of s.spaces)i?.id&&i?.data&&O.set(i.id,i.data);s?.album?.id&&B.set(s.album.id,s.album)})(t);R.set(t,s);try{await s}catch{}finally{R.delete(t)}})(t),$.get(t)}};function H(t){const i=new Set;return{subscribe(s,h){return i.add(s),s(t),()=>i.delete(s)},set(s){t=s,i.forEach(t=>t(s))},update(i){this.set(i(t))}}}function X(t){let i;return t.subscribe(t=>{i=t})(),i}function G(){return Promise.resolve()}function j(t){let i,s=0;return h=>{i=h,s||(s=1,Promise.resolve().then(()=>{s=0,t(i)}))}}function Y(t){let i=1;return s=>{i?i=0:t(s)}}var W=self,U=0,Z=0,q=new Set;function J(){U||(U=W.requestAnimationFrame(K))}function K(t){U=0,Z++;const i=[...q];q.clear();for(let h=0;h<i.length;h++)try{i[h](t)}catch(s){console.error("[Micrio] frame callback error",s)}q.size&&J()}var Q={get id(){return Z},request(t){q.add(t),J()},cancel(t){q.delete(t),!q.size&&U&&(W.cancelAnimationFrame(U),U=0)},after(){return new Promise(t=>Q.request(()=>t()))},afterPaint(){return new Promise(t=>Q.request(()=>Q.request(()=>t())))},P(t){W!==t&&(U&&W.cancelAnimationFrame(U),W=t,U=0,q.size&&J())}},tt=(t,i=1)=>(t%i+i)%i,it=t=>tt(t),st=t=>tt(t,2*Math.PI),ht=t=>2**t,et=t=>({centerX:t[0]+t[2]/2,centerY:t[1]+t[3]/2,width:t[2],height:t[3]}),nt=(t,i,s)=>!(t<s[0]||t>s[0]+s[2]||i<s[1]||i>s[1]+s[3]),ot=(t,i)=>1e-6>Math.abs(t-i),rt=(t,i,s)=>{let h=t*t+i*i+s*s;return h>0?(h=1/Math.sqrt(h),[t*h,i*h,s*h]):[0,0,0]};function at(t,i){const s=it(t),h=it(i)-s,e=h>0?h-1:h+1;return Math.abs(h)>Math.abs(e)?e:h}var ct,lt,ut=class{#t;#i;#s;#h;#e;#n;#o;constructor(t,i,s,h){this.#o=t===i&&s===h&&0===t&&1===s;const e=3*t,n=3*(s-t)-e;this.#t=e,this.#i=n,this.#s=1-e-n;const o=3*i,r=3*(h-i)-o;this.#h=o,this.#e=r,this.#n=1-o-r}#r(t){return t*(this.#t+t*(this.#i+t*this.#s))}#a(t){return t*(this.#h+t*(this.#e+t*this.#n))}#c(t){return this.#t+t*(2*this.#i+3*this.#s*t)}#l(t){let i=t,s=0,h=0,e=0;for(;5>s&&(h=this.#r(i)-t,e=this.#c(i),0!==e);)i-=h/e,s++;return i}get(t){return this.#o?t:this.#a(this.#l(t))}},dt=new ut(.42,0,.58,1),ft=new ut(.42,0,1,1),pt=new ut(0,0,.58,1),mt=new ut(0,0,1,1),gt={ease:dt,"ease-in":ft,"ease-out":pt,linear:mt},wt=t=>gt[t??"ease"]??dt,vt=class{rotationY=0;#u;T;S;A=[];C;I;L;D;#d;get image(){return this.#d}constructor(t){if(this.#d=t,!t.F){const i=t.state.$view;i&&t.$info?.width&&G().then(()=>this.setView(i))}}$(t){this.#u=t}getView=()=>{const t=this.#u?.view.arr;return t?[t[0]-t[2]/2,t[1]-t[3]/2,t[2],t[3]]:[0,0,1,1]};getViewRaw=()=>this.#u?.view.arr??new Float64Array(4);setView(t,i={}){if(!this.#u)return;let{centerX:s,centerY:h,width:e,height:n}=et(t);if(this.#d.opts.useParentCamera){const t=this.#d.opts.area;t&&(s=t[0]+s*t[2],h=t[1]+h*t[3],e*=t[2],n*=t[3])}this.#u.O(s,h,e,n,!!i.noLimit,0,i.correctNorth),i.noRender||this.#d.engine.render()}getCoo(t,i,s=0,h=0){return this.#f(t,i,s,h).slice(0).map(t=>Math.round(1e6*t)/1e6)}#f(t,i,s=0,h=0){const e=this.#u;if(!e)return new Float64Array(5);if(s){const s=this.#d.engine.micrio.getBoundingClientRect();t-=s.left,i-=s.top}return(e.is360?e.V.B(t,i):e.camera.B(t,i,!!s,!!h)).arr}getXY(t,i,s=0,h,e,n){return this.R(t,i,{abs:s,radius:h,rotation:e,noTrueNorth:n}).slice(0)}R(t,i,s={}){if(this.L)return this.L(t,i);const h=this.#u;if(!h)return new Float64Array(5);const e=this.#d.F&&!s.noTrueNorth?-this.rotationY/(2*Math.PI):0;return h.is360?h.V.N(t-e,i).arr:void 0===s.rotation||isNaN(s.rotation)?h.X.H(t-e,i,!!s.abs).arr:h.X.G(t-e,i,s.radius??0,s.rotation,!!s.abs).arr}setCoo(t,i,s){this.#u&&(this.#u.camera.setCoo(t,i,s??this.getScale()),this.#d.engine.render())}getScale=()=>this.getCoo(0,0)[2]||1;getCoverScale=()=>this.#u?.camera.Y??1;getMinScale=()=>this.#u?.camera.W??.1;setMinScale(t){this.#u?.U(t)}setMinScreenSize(t){!this.#d.album&&this.#u&&(this.#u.camera.Z=Math.max(0,Math.min(1,t)))}isZoomedIn=()=>!!(this.I?this.I():this.#u?.q());isZoomedOut=(t=0)=>!!(this.I?!this.I():this.#u?.J(t));getDirection=()=>this.#u?.V.K??0;getPitch=()=>this.#u?.V.tt??0;setDirection(t,i){this.#u&&(this.#u.it(t,i??this.#u.V.tt),this.#d.engine.render())}setLimit(t){if(!this.#u)return;const i=et(t);this.#u.view.st(i.centerX,i.centerY,i.width,i.height),this.#d.engine.render()}setCoverLimit(t){this.#u&&(this.#u.ht=!!t,this.#u.et())}getCoverLimit=()=>!!this.#u?.ht;set360RangeLimit(t=0,i=0){this.#u&&(this.#u.V.nt(t,i),this.#d.engine.render())}stop(){this.#u?.ot()}pause(){this.#u?.rt()}resume(){this.#u?.ct(),this.#d.engine.render()}getMatrix(t,i,s,h,e,n,o,r,a,c,l){return this.D?this.D(t,i,s||1,e,n,o,a,c,h):this.#u?.lt(t,i,s??1,h??10,e||0,n||0,o||0,r??0,a??1,c??1,!!l)??new Float32Array(16)}setArea(t,i={}){if(this.#u){if(this.#d.opts.area=t,this.#d.opts.isEmbed&&this.#d.ut){for(const i of this.#u.images)if(i.ft>0)return void i.gt(t[0],t[1],t[0]+t[2],t[1]+t[3])}else this.#u.gt(t[0],t[1],t[0]+t[2],t[1]+t[3],!!i.direct,!!i.noDispatch);i.noRender||this.#d.engine.render()}}setRotation(t=0,i=0,s=0){if(this.#d.opts.isEmbed&&this.#u&&this.#d.engine.ready){for(const h of this.#u.images)if(h.ft>0){h.wt=t,h.vt=i,h.Mt=s;break}this.#d.engine.render()}}getOmniRotation(){const t=this.#d.$settings.omni;return t&&this.#u?(this.#d.omni?.currentIndex??0)/((t.frames??1)/(t.layers?.length??1))*Math.PI*2:0}_t(t){const i=this.#d.$settings.omni;if(i&&null!=t)return Math.floor(t/(2*Math.PI)*(i.frames/(i.layers?.length??1)))}getOmniXY(t,i,s){return this.#u?.X.yt(t,i,s).arr??new Float64Array(5)}bt(){if(!this.#u)return;const t=this.#u.view.arr;this.#d.state.view.set([t[0]-t[2]/2,t[1]-t[3]/2,t[2],t[3]])}#p(t,i){this.T=t,this.S=i}flyToView(t,i={}){return new Promise((s,h)=>{if(!this.#u)return h(new Error("engine not ready"));let{centerX:e,centerY:n,width:o,height:r}=et(t);if(2==i.margin?.length&&(e+=i.margin[0],n+=i.margin[1],o-=2*i.margin[0],r-=2*i.margin[1]),this.#d.opts.useParentCamera){const t=this.#d.opts.area;t&&(e=t[0]+e*t[2],n=t[1]+n*t[3],o*=t[2],r*=t[3])}if(i.prevView){const t=et(i.prevView);this.#u.xt.kt(t.centerX,t.centerY,t.width,t.height)}const a=this.#d.$settings.omni;if(a?.frames){const s=a.layers?.length??1,h=a.frames/s;if(null==i.omniIndex){const s=t[4]||(Array.isArray(t)&&void 0!==t[5]?t[5]:void 0);void 0!==s&&(i.omniIndex=Math.round(tt(s/(2*Math.PI))*h))}null!=i.omniIndex&&(i.omniIndex=tt(i.omniIndex,h))}const c=this.#u.camera.Pt(e,n,o,r,i.duration??-1,i.speed??-1,i.progress??0,!!i.isJump,!!i.limit,!!i.limitZoom,i.omniIndex??0,wt(i.timingFunction));this.#d.engine.render(),0==c?s():this.#p(s,h)})}flyToFullView(t={}){return this.flyToCoo([.5,.5,this.getMinScale()],t)}flyToCoverView(t={}){const i=this.#d.$settings.focus??[.5,.5],s=[i[0],i[1]];return s[2]=this.getCoverScale(),this.flyToCoo(s,t)}flyToCoo(t,i={}){return new Promise((s,h)=>{if(!this.#u)return h(new Error("engine not ready"));const e=wt(i.timingFunction);i.duration=this.#u.camera.setCoo(t[0],t[1],t[2]??this.getScale(),i.duration??-1,i.speed??-1,i.limit??0,e),this.#d.engine.render(),0==i.duration?s():this.#p(s,h)})}zoom(t,i=0,s,h,e=1,n=0){return new Promise((e,o)=>{if(this.C)this.C(t);else if(this.#u){const o=this.#u.view.arr,r=this.getXY(o[0],o[1]);if(null==s&&(s=r[0]),null==h&&(h=r[1]),this.#d.album&&!this.#d.album.hooked)return e();i=this.#u.camera.Tt(t,s,h,i,n),this.#d.engine.render()}0==i?e():this.#p(e,o)})}async zoomIn(t=1,i=250,s=1){return this.zoom(200*-t,i,void 0,void 0,s).catch(()=>{})}async zoomOut(t=1,i=250,s=1){const h=this.#d.engine.micrio.canvas.viewport,e=h.width/h.height,n=this.#d.$info.width/this.#d.$info.height;return this.zoom(t*(400/Math.max(1,e/n/2)),i,void 0,void 0,s).catch(()=>{})}pan(t,i,s=0,h={}){this.#u&&(this.#u.camera.St(t,i,s,!!h.noLimit),(s>0||h.render)&&this.#d.engine.render())}setScale(t){const i=this.#u?.view.arr;i&&this.setCoo(i[0],i[1],t)}};function Mt(t,i={}){const s=i.ns?document.createElementNS(i.ns,t):document.createElement(t);if(i.className&&(s instanceof SVGElement?s.setAttribute("class",i.className):s.className=i.className),void 0!==i.textContent&&(s.textContent=i.textContent),void 0!==i.innerHTML&&(s.innerHTML=i.innerHTML),i.id&&(s.id=i.id),i.dataset)for(const[h,e]of Object.entries(i.dataset))s.dataset[h]=e;if(i.attrs)for(const[h,e]of Object.entries(i.attrs))null==e?s.removeAttribute(h):s.setAttribute(h,e);if(i.style&&("string"==typeof i.style?s.style.cssText=i.style:Object.assign(s.style,i.style)),i.props&&Object.assign(s,i.props),i.events)for(const[h,e]of Object.entries(i.events))s.addEventListener(h,e);if(i.children)for(const h of i.children)null!=h&&0!=h&&("string"==typeof h||"number"==typeof h?s.append(String(h)):s.append(h));return i.setProps&&s.At?.(i.setProps),i.parent&&i.parent.appendChild(s),s}function _t(t,i={}){return Mt(t,{...i,ns:"http://www.w3.org/2000/svg"})}(lt=ct||(ct={})).Main=class{tour=H();#m;get $tour(){return this.#m}marker=H();markerHoverId=H();#g;get $marker(){return this.#g}popup=H();popover=H();mediaState=new Map;constructor(){this.tour.subscribe(t=>{"string"!=typeof t&&(this.#m=t)}),this.marker.subscribe(t=>{"string"!=typeof t&&(this.#g=t)})}},lt.Image=class{view=H(void 0);#w;get $view(){return this.#w}marker=H(void 0);#g;get $marker(){return this.#g}layer=H(0);constructor(t){const i=t.engine.micrio;let s,h,e,n,o,r;this.view.subscribe(a=>{if(this.#w=a,!a)return;const c=a[0],l=a[1],u=a[2],d=a[3];if(s===c&&h===l&&e===u&&n===d)return;const f={image:t,view:a};if(s=c,h=l,e=u,n=d,void 0===o||void 0===r||Math.abs(u-o+(d-r))>1e-5){for(const t of i.Ct)t(f);i.events.Et("zoom",{image:t,view:a}),o=u,r=d}for(const t of i.It)t(f)}),this.marker.subscribe(t=>{const s=this.#g;this.#g=t&&"string"!=typeof t?t:void 0,this.#g?i.state.marker.set(this.#g):t||i.state.$marker!=s||i.state.marker.set(void 0)})}};var yt=t=>new Promise(i=>t?setTimeout(i,t):i()),bt=()=>Q.afterPaint(),kt=new Set;async function xt(t,i,s){if(t in self||await Pt(i,s),!(t in self))throw new Error(`Failed to load ${t} API from ${i}`)}var Pt=(t,i,s)=>new Promise((h,e)=>{if(s||kt.has(t))return h();const n=document.createElement("script"),o=()=>{kt.add(t),h()};i?self[i]=o:n.onload=o,n.onerror=()=>e?.(),n.async=1,n.defer=1,self.crossOriginIsolated&&(n.crossOrigin="anonymous"),n.src=t,document.head.appendChild(n)}),Tt=[],St=class t{id;uuid=S();#v;get $info(){return this.#v}Lt=H({});get $settings(){return X(this.Lt)}data=H(void 0);get $data(){return X(this.data)}state;camera;video=H(void 0);visible=H(0);album;omni;grid;zt;Dt;Ft;error;ut=0;$t=-1;F=0;Ot=0;Bt=0;Vt=1;#M=0;thumbSrc;#_;Rt=0;Nt;Ht=1;Xt=H();Gt=[];jt;get engine(){return this.#y}get canvas(){return this.#y.Yt(this)}#y;opts;constructor(t,i,s={}){if(this.#y=t,this.opts=s,this.state=new ct.Image(this),s.useParentCamera||(this.camera=new vt(this)),this.id=i.id.replace(C,""),this.id.startsWith("external/")){const t=this.id.indexOf("/",this.id.indexOf("/")+1);-1!==t&&(this.id=this.id.substring(0,t+1)+encodeURIComponent(this.id.substring(t+1)))}const h=i.info;this.#v=h,this.Ft=h.path||"https://r2.micr.io/",s.area||(s.area=[0,0,1,1]);const e=i.settings,n=this.#y.micrio;if(!h.isIIIF&&7==this.id.length){const t=P(this.id[1+P(this.id)%6]);h.is360=!!(t>>4&1)||!!h.is360,h.isWebP=!(3&t),h.isPng=2==(3&t),t>>3&1&&T(h.tilesId??this.id)&&(h.format="dz"),h.path||(h.path=`https://${t>>2&1?"eu":"r2"}.micr.io/`)}const o=6==this.id.length&&this.id.startsWith("i")&&!this.id.includes("/"),r=o&&!h.tileBasePath?.includes("micr.io");this.jt=r?h.tileBasePath??"https://b.micr.io/":o?"https://b.micr.io/":h.tileBasePath??h.path??"https://r2.micr.io/";const a=N.M();if(a?.baseUrl&&!h.path?.includes(a.baseUrl)?(this.Ft=h.path=a.baseUrl,o||(this.jt=this.Ft)):("https://eu.micr.io/"==h.path||h.path)&&(this.Ft=h.path),e?.omni&&(this.Bt=1),a?.branding&&!e?.noUI){const t=`https://${0>(a.logo?.src?.indexOf("/eu.")??-1)?"r2":"eu"}.micr.io/`;this.#b(t+"style/"+a.slug+".css").then(()=>{const t=getComputedStyle(this.#y.micrio).getPropertyValue("--micrio-font-family")?.replace(/^'([^']+)'.*$/,"$1");t&&document.fonts.ready.then(()=>{document.fonts.check("16px "+t)||this.#b(`https://fonts.googleapis.com/css2?family=${t}:ital,wght@0,300;0,400;0,500;0,600;0,800;1,300;1,400;1,500;1,600;1,800&display=swap`)})})}if(h.isIIIF&&h.id.includes("/")&&(h.id=("@id"in h?h["@id"]:h.id).replace(/^.*\//,"")),h.spacesId&&!n.spaceData&&(n.spaceData=N.m(h.spacesId),1==n.spaceData?.images.length&&delete n.spaceData),n.bundleTours||(n.bundleTours=N.k(this.id)),h.is360&&this.camera){const t=n.spaceData?.images.find(t=>t.id==this.id)?.rotationY;null!=t?this.camera.rotationY=t:null!=e?._360?.trueNorth&&(this.camera.rotationY=(e._360.trueNorth-.5)*Math.PI*2)}this.Rt=this.Rt||this.Bt||!h.id&&!h.tilesId,this.#_=h.tileExtension||h.isPng&&"png"||h.isWebP&&"webp"||"jpg","dz"==h.format&&(h.isDeepZoom=1),this.F=!!h.is360,this.Ot=!!h.isVideo;let c=X(n.Wt);if(h.revision){const t=Object.keys(h.revision);t.length&&!t.includes(c)&&(n.lang=t.includes("en")?"en":t[0])}if(e&&!e.noExternals&&(e.css&&this.#b(e.css.href),e.js)){const t=e.js.href.replace("$lang",c);Pt(t);const i=document.head.querySelector('script[src="'+t+'"]');i&&(i.micrioElement=this.#y.micrio)}for(let f=h.tileSize??1024;f<Math.max(h.width,h.height);f*=2,this.Vt++);let l=Math.max(h.width,h.height);do{this.#M++}while((l/=2)>1);e?.gallery?.archive&&(this.Vt-=1-(e.gallery.archiveLayerOffset??0)),this.Rt||(this.thumbSrc=this.Ut(this.Vt,0,0)),n.events.Et("pre-info",h),this.Rt&&!this.Bt||e?.skipMeta||!i.data||this.data.set(i.data),e&&this.Lt.set(e),h.watermark&&this.#y.micrio.qt.Zt(h.watermark,e?.watermarkOpacity),this.Bt&&this.state.layer.subscribe(t=>{this.ut&&this.#y.ready&&(this.canvas?.Jt(t),this.#y.render())});const u=this.#y.micrio;let d=X(this.visible);this.visible.subscribe(t=>{t!=d&&(d=t,u.Kt.update(i=>{if(t)i.push(this);else{const t=i.indexOf(this);0>t||i.splice(t,1)}return i}),t&&u.$current==this&&u.Qt.set(0))}),this.video.subscribe(t=>this.Dt=t)}Ut(t,i,s,h){const e=this.#v;if(e.isDeepZoom&&(t=this.#M-t),e.isIIIF){const h=e.tileSize??1024,n=Math.pow(2,t)*h,o=Math.min(e.width,i*n),r=Math.min(e.height,s*n),a=Math.min(e.width-o,n),c=Math.min(e.height-r,n),l=Math.round(Math.min(h,a/n*h)),u=Math.round(Math.min(h,c/n*h)),d=e.isWebP||e.preferredFormats?.includes("webp")?"webp":e.preferredFormats?.[0]??"jpg";return`${e.path}/${e.id}/${[o,r,a,c].join(",")}/${[l,u].join(",")}/0/default.${d}`}if(this.$settings?._360?.video?.src)throw new Error("Video thumb");return`${this.jt}${e.tilesId||e.id}/${void 0!==h?h+"/":""}${t}/${i}${e.isDeepZoom?"_":"-"}${s}.${this.#_}`}#b(t){return new Promise(i=>{Tt.includes(t)||document.head.querySelector('link[href="'+t+'"]')?i():(Tt.push(t),Mt("link",{attrs:{type:"text/css",rel:"stylesheet",href:t},events:{load:i},parent:document.head}))})}addEmbed(i,s,h,e={}){const n=h.slice(0),o=new t(this.#y,{id:i.id??"",info:{...i,id:i.id??""},data:N.u(i.id??"")?.data,settings:s},{area:n,isEmbed:1,useParentCamera:e.asImage});if(o.camera||(o.camera=this.camera),this.Gt.push(o),void 0===e.opacity&&(e.opacity=1),"cover"==e.fit||"contain"==e.fit){const t=o.$info,i=this.F?2:1,s="cover"==e.fit,h=n[2],r=n[3],a=n[0]+h/2,c=n[1]+r/2,l=h/r*i,u=t.width/t.height;if(s&&l>u||!s&&u>=l){const t=h/u*i;n[1]=c-t/2,n[3]=t}else{const t=r*u/i;n[0]=a-t/2,n[2]=t}}return this.#y.ti(o,this,e),this.#y.render(),o}#k=new Map;ii(t,i){i?this.#k.set(t,i):this.#k.delete(t)}getEmbedMediaElement(t){return this.#k.get(t)}},At=new class{#x=new Map;db=new Map;imageKeys=new Map;async load(t,i,s){if(this.#x.has(i))return;const h=i.replace(/^.*\//,"").split(".")[0],e=/\/base$/.test(i),n=e||T(h),o=new XMLHttpRequest,r=await new Promise((h,e)=>{let r=0;o.responseType="arraybuffer",o.onprogress=t=>{r||(r=Number(o.getResponseHeader("Content-Length"))),s?.(Math.min(1,t.loaded/r))},o.onload=()=>{4===o.readyState&&200===o.status?(s?.(1),h(o.response)):e()},o.onerror=e,o.open("GET",t+i+(n?".bin":".mdp")),o.send()});if(!r)return;this.#x.set(i,r);const a=e?i.split("/")[0]+"/":"";let c=0;for(;c<r.byteLength&&c+32<=r.byteLength;){const s=this.#P(new Uint8Array(r,c,32));if(s.name&&s.size>0){this.db.set(t+a+s.name.replace("./",""),[i,c+32,s.size]);const h=s.name.replace("./",""),e=t+a+h,n=h.indexOf("/");if(n>0){const t=h.substring(0,n);this.imageKeys.has(t)||this.imageKeys.set(t,e)}}else if(0===s.size&&!s.name)break;c+=32+s.size}}#P(t){const i=(new TextDecoder).decode(t),s=t=>i.slice(h,h+=t).replace(/\x00/g,"").trim();let h=0;return{name:s(20),size:parseInt(s(12),8)}}get=t=>new Promise((i,s)=>{const h=this.db.get(t);if(!h||!this.#x.has(h[0]))return s(new Error("Could not get blob: "+t));const e=new FileReader;e.onload=()=>i(JSON.parse(e.result)),e.readAsText(new Blob([new Uint8Array(this.#x.get(h[0]),h[1],h[2])]))});si=async t=>{const i=this.db.get(t);if(!i||!this.#x.has(i[0]))throw new Error("Could not get blob: "+t);const s=new Blob([new Uint8Array(this.#x.get(i[0]),i[1],i[2])]);return self.createImageBitmap(s)};hi=async t=>{const i=this.imageKeys.get(t);if(!i)throw new Error(`No image found in archive for ID: ${t}`);return this.si(i)}},Ct=navigator.userAgent,Et={iOS:/ipad|iphone|ipod/i.test(Ct),firefox:/firefox/i.test(Ct),OSX:/macintosh/i.test(Ct)&&/os\ x/i.test(Ct),hasTouch:"TouchEvent"in self,safari:0};Et.safari=(Et.OSX||Et.iOS)&&(/safari/i.test(Ct)||/instagram/i.test(Ct))&&!/chrome/i.test(Ct),Et.OSX&&Et.safari&&"TouchEvent"in self&&(Et.iOS=1,Et.OSX=0);var It=URL.createObjectURL(new Blob(["let controller = null;\nself.addEventListener('message', e => {\n\tif(e.data == 'abort') return controller && controller.abort();\n\tcontroller = new AbortController();\n\tfetch(e.data.src, { signal: controller.signal })\n\t\t.then(r => r.blob())\n\t\t.then(blob => self.createImageBitmap(blob))\n\t\t.then(data => self.postMessage({ data, src: e.data.src }, [data]))\n\t\t.catch(err => self.postMessage({ error: e.data.src + ': ' + err.message, type: err.name }))\n})"],{type:"text/javascript"})),Lt=Math.max(2,Math.min(6,(navigator.hardwareConcurrency||2)-1)),zt=Array(Lt).fill(0),Dt=0,Ft=[],$t=0,Ot=[],Bt=new Map;function Vt(){if(!Ot.length)return;const t=zt.indexOf(0);if(0>t)return;zt[t]=1,Dt++;const i=Ot.shift();Bt.set(t,i),Ft[t].postMessage({src:i[0],type:"image/"+i[0].split(".").pop()})}function Rt(t,i,s,h){const e=Bt.get(t);e&&(Bt.delete(t),s?(e[2](s),"AbortError"!==h&&console.error(`[Micrio Texture] Error loading ${e[0]}: ${h} - ${s}`)):i?e[1](i):(e[2](`Worker ${t} sent invalid message.`),console.error(`[Micrio Texture] Worker ${t} sent invalid message for ${e[0]}`)),setTimeout(()=>{zt[t]=0,Dt--,Vt()},50))}function Nt(){return Dt}function Ht(t){let i=-1;for(const[s,h]of Bt.entries())if(h[0]===t){i=s;break}0>i||Ft[i]?.postMessage("abort")}var Xt=class{x0;y0;x1;y1;layer;x;y;image;constructor(t=0,i=0,s=0,h=0,e=0,n=0,o=0){this.x0=t,this.y0=i,this.x1=s,this.y1=h,this.layer=e,this.x=n,this.y=o}},Gt=class{ei;ni;width;height;oi;ri;ai;ci;#T=new Float64Array([.5,.5,1,1]);#S=0;li=0;di=0;#u;constructor(t,i=.5,s=.5,h=1,e=1,n=.5,o=.5,r=1,a=1){this.ei=i,this.ni=s,this.width=h,this.height=e,this.oi=n,this.ri=o,this.ai=r,this.ci=a,this.#u=t}get arr(){return this.#S&&(this.#T[0]=this.ei,this.#T[1]=this.ni,this.#T[2]=this.width,this.#T[3]=this.height,this.#S=0),this.#T}get x0(){let t=this.ei;return this.#u.is360&&(t=it(t)),this.#u.is360?it(t-this.width/2):t-this.width/2}get y0(){return this.ni-this.height/2}get x1(){let t=this.ei;return this.#u.is360&&(t=it(t)),this.#u.is360?it(t+this.width/2):t+this.width/2}get y1(){return this.ni+this.height/2}get lX0(){return this.oi-this.ai/2}get lY0(){return this.ri-this.ci/2}get lX1(){return this.oi+this.ai/2}get lY1(){return this.ri+this.ci/2}get aspect(){return this.width/this.height}set(t,i,s,h,e=0){if(e){const t=Math.min(1,this.width)/Math.min(1,this.height);s/h>1.5*t&&s<this.width&&(h=s/t)}this.ei=t,this.ni=i,this.width=s,this.height=h,this.#S=1,this.li=1}gt(t,i,s,h){this.ei=(t+s)/2,this.ni=(i+h)/2,this.width=s-t,this.height=h-i,this.#S=1}st(t,i,s,h){this.oi=t,this.ri=i,this.ai=s,this.ci=h,this.li=1,this.di=1}fi(t,i=0){this.ei=t.ei,this.ni=t.ni,this.width=t.width,this.height=t.height,i||(this.oi=t.oi,this.ri=t.ri,this.ai=t.ai,this.ci=t.ci),this.li=1,this.#S=1}#A(){const t=this.#u;return 1/Math.max(this.width*t.width/t.el.width,this.height*t.height/t.el.height)}pi(t,i=0,s=0){const h=this.#u,e=h.X.Z,n=this.#A();if(1>e&&n<h.X.W&&!i){const t=1/e,i=Math.min(t,this.width),s=Math.min(t,this.height);return this.ei=.5,this.ni=.5,this.width=i,this.height=s,void(this.#S=1)}const o=t?Math.max(1,n/h.X.mi):1,r=this.ai,a=this.ci,c=Math.min(r,this.width*o),l=Math.min(a,this.height*o);if(t&&(o>1||i&&n<h.X.W)&&(this.width=c,this.height=l),(1>r||1>a)&&(this.width=Math.min(this.width,r),this.height=Math.min(this.height,a)),i)return void(this.#S=1);const u=Math.min(1,this.width)/2,d=this.ai/2;this.#u.is360?this.ei=it(this.ei):s||(this.ei=Math.max(this.oi-d+u,Math.min(this.ei,this.oi+d-u)));const f=Math.min(1,this.height)/2,p=this.ci/2;s||(this.ni=Math.max(this.ri-p+f,Math.min(this.ni,this.ri+p-f))),this.#S=1}gi(){const t=this.#u;if(t.is360)return;const i=t.X.cpw/t.X.cph;this.width/this.height>i?this.height=this.width/i:this.width=this.height*i,this.#S=1}},jt=class{x;y;scale;w;direction;arr=new Float64Array(5);constructor(t=.5,i=.5,s=1,h=0,e=0){this.x=t,this.y=i,this.scale=s,this.w=h,this.direction=e}wi(t){return-1>this.w||3>this.w&&!(0>this.x||this.x>t.width||0>this.y||this.y>t.height)}Mi(){return this.arr[0]=this.x,this.arr[1]=this.y,this.arr[2]=this.scale,this.arr[3]=this.w,this.arr[4]=this.direction,this.arr}},Yt=class{width;height;left;top;_i;yi;ratio;scale;bi;arr=new Int32Array(4);constructor(t=0,i=0,s=0,h=0,e=0,n=0,o=1,r=1,a=0){this.width=t,this.height=i,this.left=s,this.top=h,this._i=e,this.yi=n,this.ratio=o,this.scale=r,this.bi=a}get ki(){return 0===this.width||0===this.height?1:this.width/this.height}set(t,i,s,h,e,n,o){return this.width===t*e&&this.height===i*e&&this.left===s&&this.top===h&&this.ratio===e&&this.scale===n&&this.bi===o?0:(this.width=t*e,this.height=i*e,this.left=s*e,this.top=h*e,this.ratio=e,this.scale=n,this.bi=o,1)}fi(t){this.width=t.width,this.height=t.height,this.left=t.left,this.top=t.top,this.ratio=t.ratio,this.scale=t.scale,this.bi=t.bi}},Wt=class{#C=0;#E=0;#I=0;#L=0;#z=0;#D=0;#F=0;#$=0;started=0;#u;constructor(t){this.#u=t}addStep(t,i){const s=this.#u.main.now;if(this.#z)return;0===this.#I&&(this.#I=s);const h=s-this.#L,e=this.#L>0&&h>0?16.67/h:1;Math.sqrt(t*t+i*i)*e>20&&(this.#D=s);const n=this.#u.main.xi;this.#C+=t*n,this.#E+=i*n,this.#L=s}start(){this.#u.camera.Pi()||(this.started=1)}stop(){this.started=0,this.#z=0,this.#I=0,this.#L=0,this.#D=0,this.#C=0,this.#E=0,this.#F=0,this.#$=0}step(){const t=this.#u.main.now,i=this.#u.V,s=this.#u.camera;if(!this.started||0===this.#I)return 1;if(0===this.#z){this.#z=t;const i=1-Math.min(1,(this.#z-this.#D)/250),s=this.#z-this.#I,h=s>0?4/s:0;this.#F=this.#C*h*i,this.#$=this.#E*h*i}else this.#F*=.94,this.#$*=.94;let h=Math.sqrt(this.#F*this.#F+this.#$*this.#$);return this.#u.is360?i.Ti(this.#F,this.#$):s.St(this.#F,this.#$,0,0,0,1),h>.01||(h=0,this.stop()),1-h}},Ut=class{#O=0;#B;#V;Si;#R=0;#N=0;#H=0;#X=0;#G=0;#j=dt;#Y=0;#W=0;#U=0;pi=1;Ai=0;Ci=0;#Z=0;#q=0;#J=0;#K=0;#Q=0;#tt=0;#it=0;#st=-1;#ht=0;#u;constructor(t){this.#u=t,this.#B=new Gt(t),this.#V=new Gt(t),this.Si=new Gt(t)}pause(){this.#Z>0||(this.#U=0,this.#Z=performance.now())}resume(){0!==this.#Z&&0!==this.#Y&&(this.#Y+=performance.now()-this.#Z,this.#Z=0,this.#U=1)}stop(){this.#U&&this.#u.S(),this.#Y=0,this.pi=1,this.Ai=0,this.#U=0,this.#O=0,this.#R=0,this.Ci=0,this.#Z=0}Ei(){return this.#U&&this.#O}Ii(t,i,s,h,e,n,o={}){const{speed:r=0,perc:a=0,isJump:c=0,limitViewport:l=0,omniIdx:u=-1,correct:d=0}=o;if(d&&this.Ci)return this.Li(t,i,s,h,1),e;this.Si.set(t,i,s,h),this.#V.set(t,i,s,h);const f=this.#u,p=f.view,m=this.#V,g=this.#B;this.#N=c,this.#j=n;const w=f.main.el;if(0!==w.yi){const t=h/(1-w.yi/w.height);t>0?h+=t:h-=t,w.yi=0}if(0!==w._i){const t=s*(w._i/w.width);t>0?s+=t:s-=t,w._i=0}const v=p.ei,M=p.ni,_=p.width,y=p.height;g.set(v,M,_,y),f.is360&&(t=v+at(v,t),m.set(t,i,s,h)),l&&(m.gi(),m.pi(0)),this.#q=0,this.#K=0,this.#J=0,this.#Q=0;let b=1;if(this.#N){if(!f.is360){const t=m.ei,i=m.ni;if(m.aspect>g.aspect){const s=m.width/g.aspect;m.set(t,i,m.width,s)}else{const s=m.height*g.aspect;m.set(t,i,s,m.height)}}const e=g.x0,n=g.x1,o=g.y0,r=g.y1,a=m.x0,c=m.x1,l=m.y0,u=m.y1,d=e>a,p=o>l,w=c>n,v=u>r;!(d||p||w||v)||d&&p&&w&&v?m.set(t,i,s,h):(this.#q=d?1:a>e?2:0,this.#K=w?1:n>c?2:0,this.#J=p?1:l>o?2:0,this.#Q=v?1:r>u?2:0,b=1.5)}d&&m.pi(1,!l);const k=Math.max(1e4,Math.min(15e3,f.zi/2));let x=Math.abs(v-t);f.is360&&(x=Math.min(x,1-x));const P=_>s&&y>h?.125:.25,T=(x+Math.abs(M-i)+Math.abs(_-s)*P+Math.abs(y-h)*P)/3;this.#tt=Math.max(.5,.8-T*(f.is360?1:2)),this.#it=Math.max(.05,Math.min(.9,T-(f.is360?.2:.1))),this.#W=0>e?T*k/f.Di*b/(r>0?r:1):e;const S=f.images.length/f.Fi;return this.#st=f.$i,this.#ht=0,!isNaN(u)&&u>0&&u!==this.#st&&(this.#ht=u-this.#st,this.#ht<-S/2&&(this.#ht+=S),this.#ht>S/2&&(this.#ht-=S),this.#W+=Math.abs(this.#ht)/this.#u.images.length*6e3),this.stop(),0===this.#W?(f.O(m.ei,m.ni,m.width,m.height,0,1),this.#u.T(),this.#W):(this.#O=1,this.pi=0,this.Ai=1,this.#R=0,d&&(this.Ci=1),this.#Y=performance.now()-a*this.#W,this.#U=1,this.#W*(1-a))}Li(t,i,s,h,e=0){this.#V.set(t,i,s,h),e&&this.#V.pi(1)}zoom(t,i,s,h){this.stop(),this.#O=0,this.Ai=0,this.#R=1,this.#G=h;const e=this.#u,n=e.V;return this.#H=n.Oi,this.#X=this.#H+t/(n.Bi*e.zi/20),h||(this.#X=Math.min(n.Vi,Math.max(n.Ri,this.#X))),this.#Y=performance.now(),this.#U=1,this.#W=0>i?1e3*Math.abs(this.#H-this.#X)/s:i,i}kt(t,i,s,h,e=0){this.#B.set(t,i,s,h,e),this.#V.set(t,i,s,h,e)}Ni(){const t=0===this.#Y?1:Math.min(1,Math.max(0,(this.#u.main.now-this.#Y)/this.#W)),i=this.#j.get(t);if(this.#U){if(this.#O){const s=this.#B,h=this.#V,e=this.#it,n=this.#j.get(Math.min(1,t/this.#tt)),o=this.#j.get(Math.max(0,(t-e)/(1-e)));let r=0,a=s.ei+(h.ei-s.ei)*((r=this.#q||this.#K)?1===r?n:o:i),c=s.ni+(h.ni-s.ni)*((r=this.#J||this.#Q)?1===r?n:o:i);const l=s.width+(h.width-s.width)*i,u=s.height+(h.height-s.height)*i;if(this.#u.is360){const t=at(s.ei,h.ei);a=s.ei+t*i}if(this.#u.O(a,c,l,u,0,1),this.#ht){let i=this.#st+Math.trunc(this.#ht*this.#j.get(Math.min(1,1.5*t)));const s=this.#u.images.length/this.#u.Fi;0>i&&(i+=s),s>i||(i-=s),this.#u.Hi(i,0)}}this.#R&&this.#u.V.Xi(this.#H*(1-i)+this.#X*i,this.#G),1>t||(this.Si.fi(this.#u.view),this.#u.T(),this.stop())}return t}},Zt=class{arr;constructor(t=1,i=0,s=0,h=0,e=0,n=1,o=0,r=0,a=0,c=0,l=1,u=0,d=0,f=0,p=0,m=1){this.arr=new Float32Array([t,i,s,h,e,n,o,r,a,c,l,u,d,f,p,m])}Gi(){const t=this.arr;t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1}fi(t){this.arr.set(t.arr)}ji(t){const i=this.arr,s=Math.sin(t),h=Math.cos(t),e=i[4],n=i[5],o=i[6],r=i[7],a=i[8],c=i[9],l=i[10],u=i[11];i[4]=e*h+a*s,i[5]=n*h+c*s,i[6]=o*h+l*s,i[7]=r*h+u*s,i[8]=a*h-e*s,i[9]=c*h-n*s,i[10]=l*h-o*s,i[11]=u*h-r*s}Yi(t){const i=this.arr,s=Math.sin(t),h=Math.cos(t),e=i[0],n=i[1],o=i[2],r=i[3],a=i[8],c=i[9],l=i[10],u=i[11];i[0]=e*h-a*s,i[1]=n*h-c*s,i[2]=o*h-l*s,i[3]=r*h-u*s,i[8]=e*s+a*h,i[9]=n*s+c*h,i[10]=o*s+l*h,i[11]=r*s+u*h}Wi(t){const i=this.arr,s=Math.sin(t),h=Math.cos(t),e=i[0],n=i[1],o=i[2],r=i[3],a=i[4],c=i[5],l=i[6],u=i[7];i[0]=e*h+a*s,i[1]=n*h+c*s,i[2]=o*h+l*s,i[3]=r*h+u*s,i[4]=a*h-e*s,i[5]=c*h-n*s,i[6]=l*h-o*s,i[7]=u*h-r*s}Ui(t){const i=this.arr;i[0]*=t,i[1]*=t,i[2]*=t,i[3]*=t,i[4]*=t,i[5]*=t,i[6]*=t,i[7]*=t}Zi(t,i,s){const h=this.arr;h[12]+=h[0]*t+h[4]*i+h[8]*s,h[13]+=h[1]*t+h[5]*i+h[9]*s,h[14]+=h[2]*t+h[6]*i+h[10]*s,h[15]+=h[3]*t+h[7]*i+h[11]*s}Oi(t,i,s,h){this.Gi();const e=this.arr,n=1/Math.tan(t/2),o=1/(s-h);e[0]=n/i,e[5]=n,e[10]=(h+s)*o,e[11]=-1,e[14]=2*h*s*o,e[15]=0}qi(t){this.Gi();const i=this.arr,s=1/Math.tan(t/2);i[0]=s,i[5]=s}Ji(){const t=this.arr,i=t[0],s=t[1],h=t[2],e=t[3],n=t[4],o=t[5],r=t[6],a=t[7],c=t[8],l=t[9],u=t[10],d=t[11],f=t[12],p=t[13],m=t[14],g=t[15],w=i*o-s*n,v=i*r-h*n,M=i*a-e*n,_=s*r-h*o,y=s*a-e*o,b=h*a-e*r,k=c*p-l*f,x=c*m-u*f,P=c*g-d*f,T=l*m-u*p,S=l*g-d*p,A=u*g-d*m;let C=w*A-v*S+M*T+_*P-y*x+b*k;C&&(C=1/C,t[0]=(o*A-r*S+a*T)*C,t[1]=(h*S-s*A-e*T)*C,t[2]=(p*b-m*y+g*_)*C,t[3]=(u*y-l*b-d*_)*C,t[4]=(r*P-n*A-a*x)*C,t[5]=(i*A-h*P+e*x)*C,t[6]=(m*M-f*b-g*v)*C,t[7]=(c*b-u*M+d*v)*C,t[8]=(n*S-o*P+a*k)*C,t[9]=(s*P-i*S-e*k)*C,t[10]=(f*y-p*M+g*w)*C,t[11]=(l*M-c*y-d*w)*C,t[12]=(o*x-n*T-r*k)*C,t[13]=(i*T-s*x+h*k)*C,t[14]=(p*v-f*_-m*w)*C,t[15]=(c*_-l*v+u*w)*C)}Ki(t){const i=this.arr,s=t.arr;let h=i[0],e=i[1],n=i[2],o=i[3];i[0]=h*s[0]+e*s[4]+n*s[8]+o*s[12],i[1]=h*s[1]+e*s[5]+n*s[9]+o*s[13],i[2]=h*s[2]+e*s[6]+n*s[10]+o*s[14],i[3]=h*s[3]+e*s[7]+n*s[11]+o*s[15],h=i[4],e=i[5],n=i[6],o=i[7],i[4]=h*s[0]+e*s[4]+n*s[8]+o*s[12],i[5]=h*s[1]+e*s[5]+n*s[9]+o*s[13],i[6]=h*s[2]+e*s[6]+n*s[10]+o*s[14],i[7]=h*s[3]+e*s[7]+n*s[11]+o*s[15],h=i[8],e=i[9],n=i[10],o=i[11],i[8]=h*s[0]+e*s[4]+n*s[8]+o*s[12],i[9]=h*s[1]+e*s[5]+n*s[9]+o*s[13],i[10]=h*s[2]+e*s[6]+n*s[10]+o*s[14],i[11]=h*s[3]+e*s[7]+n*s[11]+o*s[15],h=i[12],e=i[13],n=i[14],o=i[15],i[12]=h*s[0]+e*s[4]+n*s[8]+o*s[12],i[13]=h*s[1]+e*s[5]+n*s[9]+o*s[13],i[14]=h*s[2]+e*s[6]+n*s[10]+o*s[14],i[15]=h*s[3]+e*s[7]+n*s[11]+o*s[15]}Bi(t,i,s=1){const h=this.arr;h[0]*=t,h[1]*=t,h[2]*=t,h[3]*=t,h[4]*=i,h[5]*=i,h[6]*=i,h[7]*=i,h[8]*=s,h[9]*=s,h[10]*=s,h[11]*=s}Qi(t,i,s,h,e,n,o,r,a){const c=this.arr;let l=h-t,u=e-i,d=n-s;const f=Math.sqrt(l*l+u*u+d*d)||1;l/=f,u/=f,d/=f;let p=u*a-d*r,m=d*o-l*a,g=l*r-u*o;const w=Math.sqrt(p*p+m*m+g*g)||1;p/=w,m/=w,g/=w;const v=m*d-g*u,M=g*l-p*d,_=p*u-m*l;c[0]=p,c[1]=v,c[2]=-l,c[3]=0,c[4]=m,c[5]=M,c[6]=-u,c[7]=0,c[8]=g,c[9]=_,c[10]=-d,c[11]=0,c[12]=-(p*t+m*i+g*s),c[13]=-(v*t+M*i+_*s),c[14]=l*t+u*i+d*s,c[15]=1}},qt=class{x;y;z;w;constructor(t=0,i=0,s=0,h=1){this.x=t,this.y=i,this.z=s,this.w=h}fi(t){this.x=t.x,this.y=t.y,this.z=t.z,this.w=t.w}ts(t){const i=t.arr,s=this.x,h=this.y,e=this.z,n=i[3]*s+i[7]*h+i[11]*e+i[15]||1;this.x=(i[0]*s+i[4]*h+i[8]*e+i[12])/n,this.y=(i[1]*s+i[5]*h+i[9]*e+i[13])/n,this.z=(i[2]*s+i[6]*h+i[10]*e+i[14])/n,this.w=n}ss(){let t=this.x*this.x+this.y*this.y+this.z*this.z;t>0&&(t=1/Math.sqrt(t)),this.x*=t,this.y*=t,this.z*=t}},Jt=class{canvas;#et=-1;#nt=-1;#ot=-1;constructor(t){this.canvas=t}hs(t,i,s,h){const e=this.canvas,n=e.main.el,o=(Math.min(t,s)-n.left)/n.scale,r=(Math.min(i,h)-n.top)/n.scale,a=(Math.max(t,s)-n.left)/n.scale,c=(Math.max(i,h)-n.top)/n.scale,l=o+(a-o)/2,u=r+(c-r)/2,d=Math.max(a-o,c-r),f=this.#et-d;if(e.es.stop(),this.#nt>0){const t=this.#nt-l,i=this.#ot-u;this.rs(f,t,i,l,u,n,e)}else e.xt.stop();this.#nt=l,this.#ot=u,this.#et=d}cs(){}ls(){this.#rt()}#rt(){this.#et=-1,this.#nt=-1,this.#ot=-1}Pt(t,i,s,h,e,n,o,r,a,c,l,u){const d=this.canvas,f=d.xt;d.es.stop();const p=this.us(t);return f.pi=0,e=f.Ii(p,i,s,h,e,u,{speed:n,perc:o,isJump:r,limitViewport:a,omniIdx:l,correct:c}),f.pi=0,f.Ai=1,e}us(t){return t}setCoo(t,i,s,h=0,e=0,n=0,o=dt){if(this.ds(t,i,s))return 0;const r=this.canvas;0===s&&(s=r.fs()),s=this.ps(s),r.es.stop();const{w:a,h:c}=this.gs(s);return this.ws(t,i,a,c,h),h=r.xt.Ii(t,i,a,c,h,o,{speed:e}),r.xt.pi=0===h||n,r.xt.Ai=h>0,h}ds(t,i,s){return 0}ps(t){return t}ws(t,i,s,h,e){}},Kt=class extends Jt{Bi=1;W=1;Z=1;mi=1;#at=1;Y=1;#ct=new jt;#lt=new jt;#ut=new jt;#dt=0;#ft=0;#pt=0;#mt=new Zt;cpw=-1;cph=-1;#gt=1;constructor(t){super(t)}B(t,i,s,h){const e=this.canvas;(e.Rt||e.vs)&&(h=1);const n=e.el,o=e.Ms?e.parent.el.ratio:n.ratio,r=e.view,a=this.#lt;s&&(t-=n.left,i-=n.top);const c=t/this.Bi*o/e.width+r.x0,l=i/this.Bi*o/e.height+r.y0;return a.x=h?c:Math.max(r.lX0,Math.min(r.lX1,c)),a.y=h?l:Math.max(r.lY0,Math.min(r.lY1,l)),a.scale=this.Bi,a.Mi(),this.#lt}H(t,i,s){const h=this.canvas,e=h.el,n=h.Ms?h.parent.el.ratio:e.ratio,o=this.#ct;return o.x=(t-h.view.x0)*h.width*this.Bi/n+(s?e.left:0),o.y=(i-h.view.y0)*h.height*this.Bi/n+(s?e.top:0),o.scale=this.Bi/n,o.Mi(),o}G(t,i,s,h,e){return this.yt(t-.5,i-.5,s,h,e)}yt(t,i,s,h=0,e=0){const n=this.canvas,o=n.el,r=this.#mt,a=n.V._s,c=n.Ms?n.parent.el.ratio:o.ratio;a.x=t,a.y=i,a.z=s,a.w=1,r.Gi(),!e&&n.ys&&r.Oi(n.ys,n.aspect,1e-4,100),n.bs&&r.Zi(0,0,n.bs),n.ks&&r.Zi(n.ks,0,0),!e&&n.xs&&r.ji(n.xs);const l=n.images.length/n.Fi,u=n.layer*l,d=n.images.length>0?-(n.$i+1-u)/l*2*Math.PI:0;r.Yi(h+d),a.ts(r);const f=this.#ct;return f.x=(.5+a.x-n.view.x0)*n.width*this.Bi/c+(e?o.left:0),f.y=(.5+a.y-n.view.y0)*n.height*this.Bi/c+(e?o.top:0),f.w=-a.w-n.bs,f.Mi(),f}Ps(){const t=this.canvas,i=t.el,s=i.width/t.width,h=i.height/t.height;if(!t.view.di&&this.cpw===s&&this.cph===h)return void(t.ht!==this.#gt&&this.et());this.cpw=s,this.cph=h,this.#at=Math.min(s,h),this.Y=Math.max(s,h);const e=t.view.ai/t.view.ci;if(t.view.di=0,1>t.view.ai||1>t.view.ci){const i=s/h;this.Y/=i>e?t.view.ai/i:t.view.ci*i}if(this.et(),i.width&&i.height&&!this.canvas.xt.Ei()&&(t.view.fi(t.xt.Si,1),!t.is360)){const i=t.xt.pi;t.xt.pi=0,this.Ts(),t.xt.pi=i}}et(t=0){const i=this.canvas;if(this.W=i.ht?this.Y:this.#at,!t&&!i.main.Ss&&(0===i.$i&&!i.ht||i.$i>0&&!i.ht)){const t=i.focus.width*i.width,s=i.focus.height*i.height,h=i.el.width,e=i.el.height;this.W=h/e>t/s?e/s:h/t}this.mi=this.W>1&&i.maxScale<this.W?this.W:Math.max(this.W,i.maxScale*i.As/i.el.scale),this.#gt=i.ht}Pi(){return 1>this.Z&&this.Bi<this.W}J(t=0){return ot(this.Bi,this.W*(t?this.Z:1))||this.Bi<=this.W*(t?this.Z:1)}q(){return ot(this.Bi,this.mi)||this.Bi>=this.mi}Ts(){if(-1===this.cpw)return 0;const t=this.canvas,i=this.canvas.view,s=!t.vs&&t.xt.pi;!t.xt.Ci&&(s||!t.xt.Ai&&t.ht)&&i.pi(0);const h=i.width,e=i.height,n=this.cpw,o=this.cph;this.Bi=Math.min(n/h,o/e),s&&!this.#dt&&this.Bi>=this.mi&&t.xt.Ai&&(this.Bi=this.mi),(!t.xt.Ci&&!this.#dt||t.ht)&&(this.Bi=Math.max(this.W*this.Z,this.Bi)),!this.#ft&&t.Cs&&(this.Bi=this.Y);const r=n/this.Bi-h,a=o/this.Bi-e;return i.set(i.ei,i.ni,i.width+r,i.height+a),!this.#ft&&t.Cs&&this.canvas.xt.Si.fi(i),!t.xt.Ci&&t.ht&&i.pi(0),this.#ft=this.cpw>0,this.#pt?(this.#pt=0,this.setCoo(this.#ut.x,this.#ut.y,this.#ut.scale),0):1}Es(){const t=this.canvas.view;return!this.canvas.vs&&((!ot(t.x0,t.lX0)&&t.x0<t.lX0)!=(!ot(t.x1,t.lX1)&&t.x1>t.lX1)||(!ot(t.y0,t.lY0)&&t.y0<t.lY0)!=(!ot(t.y1,t.lY1)&&t.y1>t.lY1)||!ot(this.Bi,this.mi)&&this.Bi>this.mi)}St(t,i,s=0,h=0,e=0,n=0){const o=this.canvas;if((this.Pi()||this.#dt)&&!e)return;this.canvas.vs&&(h=1);const r=o.Ms?o.parent.el.ratio:o.el.ratio,a=o.view,c=t/o.width/this.Bi*r,l=i/o.height/this.Bi*r,u=a.ei+c,d=a.ni+l,f=a.width,p=a.height;this.#dt?(o.view.set(u,d,f,p),o.O(u,d,f,p,h,0,0,0)):e||!this.Es()||n?(o.xt.stop(),0===s?(n||o.es.addStep(4*t,4*i),o.view.set(u,d,f,p),h||o.view.pi(0,0,o.vs),o.O(u,d,f,p,h,0,0,n),o.view.li=1):o.xt.Ii(u,d,f,p,s,dt)):o.xt.Ei()?o.xt.Li(u,d,a.width,a.height,1):o.xt.Ii(u,d,f,p,150,dt,{limitViewport:!h&&!this.#dt,correct:!h})}Tt(t,i,s,h=0,e){const n=this.canvas;if(n.es.stop(),!this.#dt&&this.q()&&0>t)return 0;if(this.canvas.vs&&(e=1),t>0&&this.J()&&this.Z>=1&&(!this.#dt||n.ht))return 0;const o=n.el,r=n.view,a=this.cpw/this.cph;let c=t*(o.width/512)/n.width/this.Bi,l=c/a;0>t&&-1>c&&(c=-.9999),0>t&&-1>l&&(l=-.9999);const u=!e&&!n.vs&&n.xt.pi&&0===h,d=n.Ms?n.parent.el.ratio:o.ratio;i-=o.left,s-=o.top;const f=this.Pi(),p=i>0&&!f?i/o.width*d:.5,m=s>0&&!f?s/o.height*d:.5,g=r.ei+c*(.5-p),w=r.ni+l*(.5-m),v=r.width+c,M=r.height+l;return n.xt.pi=u,h=n.xt.Ii(g,w,v,M,h,dt,{limitViewport:!e&&!this.#dt,correct:u}),n.xt.Si.fi(n.view),n.xt.pi=!e,h}rs(t,i,s,h,e,n,o){!this.canvas.main.Is&&this.Bi>this.W&&this.St(i,s,0,0,1),this.Tt(2*t*n.scale,h,e,0,!this.canvas.Ls),o.xt.pi=!!this.canvas.Ls}cs(){this.#dt=1}ls(){this.#wt(),this.#dt=0,super.ls()}#wt(){if(this.canvas.vs)return;const t=this.canvas.view,i=this.Bi>this.mi,s=i?this.cpw/this.mi:t.width,h=i?this.cph/this.mi:t.height,e=s/2,n=h/2,o=t.ai/2,r=t.ci/2,a=o>e?Math.max(t.lX0+e,Math.min(t.ei,t.lX1-e)):t.oi,c=r>n?Math.max(t.lY0+n,Math.min(t.ni,t.lY1-n)):t.ri;this.canvas.xt.Ii(a,c,s,h,150,dt,{correct:1})}ds(t,i,s){if(!this.#ft){this.#pt=1;const h=this.#ut;return h.x=t,h.y=i,h.scale=s,this.Ts(),1}return 0}ps(t){return Math.max(this.W,t)}gs(t){return{w:1/t*this.cpw,h:1/t*this.cph}}ws(t,i,s,h,e){0===e&&(t+s/2>1&&(t=1-s/2),0>t-s/2&&(t=s/2),i+h/2>1&&(i=1-h/2),0>i-h/2&&(i=h/2))}K=0;tt=0;zs(){const t=this.canvas,i=t.view,s=t.V,h=s.Ds;h.Oi(s.Oi,t.el.ki,1e-4,100),h.Zi(-(i.ei-.5)*t.aspect,i.ni-.5,-i.height/2)}},Qt=class{Fs;$s;#d;Os;Bs;Vs;#vt;Rs;Ns;constructor(t,i,s,h,e,n,o){this.#d=t,this.Os=i,this.Bs=s,this.Vs=h,this.#vt=e,this.Rs=n,this.Ns=o,this.Fs=e/t.width,this.$s=e/t.height}Hs(t,i){const s=t-this.Bs,h=s%this.Rs,e=Math.floor(s/this.Rs),n=this.#d;return i.x0=n.x0+h*this.#vt/n.width*n.Xs,i.y0=n.y0+e*this.#vt/n.height*n.Gs,i.x1=n.x0+Math.min((h+1)*this.#vt/n.width,1)*n.Xs,i.y1=n.y0+Math.min((e+1)*this.#vt/n.height,1)*n.Gs,i.image=n,i.layer=this.Os,i.x=h,i.y=e,i}},ti=(t,i)=>i-t,ii=class t{static#Mt=[];static#_t=new Uint8Array(0);static#yt=0;#bt=new qt;#kt=new Zt;#xt=0;Ys=[];#Pt=0;Ws=0;x0=0;y0=0;x1=1;y1=1;Xs=1;Gs=1;#Tt=.5;#St=.5;#At=1;#Ct=1;#Et=0;#It=0;#Lt=-1;#zt=0;#Dt=0;Us=0;Zs;#Ft=0;#$t=0;qs=0;#Ot=0;Js=0;static#Bt=new Float64Array(200);static#Vt=new Float64Array(200);static#Rt=new Float64Array(200);static#Nt=0;static#Ht=0;#u;Os;ft;width;height;#vt;#Xt;Ot;#Gt;opacity;Ks;wt;vt;Mt;#jt;#Yt;constructor(t,i,s,h,e,n,o,r,a,c,l,u,d,f,p,m,g){this.#u=t,this.Os=i,this.ft=s,this.width=h,this.height=e,this.#vt=n,this.#Xt=o,this.Ot=a,this.#Gt=c,this.opacity=l,this.Ks=u,this.wt=d,this.vt=f,this.Mt=p,this.#jt=m,this.#Yt=g;const w=h>e?h:e;this.#Ot=this.#u.is360&&this.ft>0,this.#Pt=r&&!o?2:1;for(let M=n;M<w*t.main.Qs;M*=2)this.#Pt++;(t.main.th||this.#Yt>0)&&(this.#Pt-=3-t.main.ih),this.#Yt>0&&this.#Pt--,this.#Pt=Math.max(1,this.#Pt);let v=c;for(let M=0;M<this.#Pt;M++){const t=ht(M)*this.#vt,i=Math.ceil(h/t),s=Math.ceil(e/t);this.Ys.push(new Qt(this,this.Ys.length,v,this.Zs=v+=i*s,t,i,s))}}gt(t,i,s,h){this.x0=t,this.y0=i,this.x1=s,this.y1=h,this.#At=s+(t>s?1:0)-t,this.#Ct=h-i,this.#Tt=t+this.#At/2,this.#St=i+this.#Ct/2,this.#u.is360&&(this.#Tt=it(this.#Tt)),this.Xs=this.#At,this.Gs=this.#Ct,this.#Ft=this.width/this.height,this.#xt=this.#Ft>this.#u.aspect?this.#u.width/this.width*this.Xs:this.#u.height/this.height*this.Gs,this.#u.is360&&this.#Wt()}#Wt(){let t=2*(this.#Tt-.5)*Math.PI;const i=(this.#St-.5)*Math.PI;t+=this.#u.V.sh,this.#Et=Math.cos(i)*Math.sin(t),this.#It=Math.sin(i),this.#Lt=Math.cos(i)*Math.cos(t),this.#zt=2*this.#At*Math.PI,this.#Dt=this.#Ct*Math.PI}#Ut(){if(!this.#u.is360)return 0;const t=this.#u.V,i=this.#Et*t.hh+this.#It*t.eh+this.#Lt*t.nh;return Math.acos(Math.max(-1,Math.min(1,i)))<t.oh+Math.max(this.#zt,this.#Dt)/2}#Zt(){if(this.#Ot)return!this.#Ut();{const t=this.#u.view;return!(this.x1>t.x0&&this.x0<t.x1&&this.y1>t.y0&&this.y0<t.y1)}}rh(){return this.#Yt>0&&this.#Yt>this.#u.camera.Bi||(this.Ot||this.ft>0)&&0===this.opacity&&0===this.Ks?0:this.Os===this.#u.$i||this.#u.is360&&0===this.ft?1:!this.#Zt()}ah(t){const i=this.Ks;if(this.opacity===i)return 0;const s=1/(this.#u.main.uh*this.#u.main.dh);return this.opacity=Math.min(1,Math.max(0,t?i:i>this.opacity?Math.min(i,this.opacity+s):Math.max(i,this.opacity-s))),this.opacity!==i}fh(i){if(0>=this.opacity)return 0;this.#$t=0;const s=t.#Mt;let h=t.#_t;if(this.#Ot){if(i=this.#qt(i),!(this.qs=i>0))return 0}else i=Math.max(i,this.#u.camera.W)*this.#xt;const e=this.Zs-this.#Gt;h.length<e?h=t.#_t=new Uint8Array(e):h.fill(0,0,e),t.#yt=this.#Gt;const n=this.Zs-1,o=n-this.#Gt;0===this.Us?(s.push(n),h[o]=1,this.#u.main.ph(n,1,1)):this.#Ot&&(s.push(n),h[o]=1,this.#$t++);const r=this.#Jt(i),a=this.#u;if(0===this.ft&&a.is360)this.#Kt(this.Ys[r]);else if(this.#Ot)this.#Qt(r),this.#$t++;else if(a.visible.x0<a.visible.x1&&a.visible.y0<a.visible.y1){const t=a.view;this.#ti(r,Math.max(a.visible.x0,t.x0),Math.max(a.visible.y0,t.y0),Math.min(a.visible.x1,t.x1),Math.min(a.visible.y1,t.y1))}s.sort(ti);for(const t of s)a.mh.push(t);return s.length=0,this.#$t}#Jt(t){let i=this.#Xt||this.#u.gh?this.#Pt:1+this.#u.main.wh;if(!this.#Xt&&!this.#u.gh)for(;i<this.#Pt&&1>ht(i)*t;i++);return this.Ws=i-1}#ti(t,i,s,h,e){if(this.#Zt())return;const n=this.Ys[t],o=n.Fs,r=n.$s,a=this.Xs,c=this.Gs,l=Math.min(n.Rs-1,Math.floor(Math.max(0,h-this.x0)/a/o)),u=Math.min(n.Ns-1,Math.floor(Math.max(0,e-this.y0)/c/r)),d=Math.floor(Math.max(0,i-this.x0)/a/o);let f=Math.floor(Math.max(0,s-this.y0)/c/r);for(;u>=f;f++)for(let t=d;l>=t;t++)this.#ii(n,t,f)}#Qt(t){if(this.#Zt())return;const i=this.Ys[t],s=this.#u,h=s.view.ni,e=s.view.width+.1,n=s.view.height+.1,o=this.#Tt,r=this.#St,a=this.#At,c=this.#Ct,l=Math.max(h-n/2,r-c/2),u=Math.min(h+n/2,r+c/2);if(l>=u)return;const d=s.is360?it(s.view.ei+s.V.Mh):s.view.ei;let f,p;if(s.is360){const t=it(d-e/2),i=it(d+e/2),s=it(o-a/2),h=it(o+a/2);if(i>t&&h>s){if(f=Math.max(t,s),p=Math.min(i,h),f>=p)return}else if(t>i&&h>s){if(s>i&&t>h)return;f=s,p=h}else if(i>t&&s>h){if(t>h&&s>i)return;f=t,p=i}else f=Math.max(t,s),p=Math.min(i,h);const n=o-a/2;o+a/2>1?(n>f&&(f+=1),n>p&&(p+=1)):f>o+.5?f-=1:p>o+.5&&(p-=1)}else if(f=Math.max(d-e/2,o-a/2),p=Math.min(d+e/2,o+a/2),f>=p)return;const m=o-a/2,g=r-c/2,w=i.Fs,v=i.$s,M=Math.floor(Math.max(0,Math.min(1,(f-m)/a))/w),_=Math.min(i.Rs-1,Math.floor(Math.max(0,Math.min(1,(p-m)/a))/w)),y=Math.floor(Math.max(0,Math.min(1,(l-g)/c))/v),b=Math.min(i.Ns-1,Math.floor(Math.max(0,Math.min(1,(u-g)/c))/v));for(let k=y;b>=k;k++)for(let t=M;_>=t;t++)this.#ii(i,t,k)}#ii(i,s,h){const e=t.#_t,n=t.#yt,o=Math.min(this.Zs-1,i.Bs+h*i.Rs+s),r=o-n;if(r<e.length){if(e[r])return;e[r]=1}t.#Mt.push(o),1>this.#u.main.ph(o,o===this.Zs-1,this.#u.Ht)?this.#Xt||this.#u.gh||i.Os>=this.#Pt-1||this.#ii(this.Ys[i.Os+1],s>>1,h>>1):this.#$t++}_h(t){const i=this.#u.main.yh,s=2*Math.PI*this.#u.V.bh,h=this.#bt,e=this.#kt,n=this.x0+this.Xs/2,o=this.y0+this.Gs/2,r=this.#u.V.kh(n-this.#u.V.Mh,o,1,5);e.Gi(),e.Zi(r.x,r.y,r.z),e.Yi(Math.atan2(r.x,r.z)+Math.PI+this.vt),e.ji(-Math.sin((o-.5)*Math.PI)-this.wt),e.Wi(-this.Mt),e.Ui(.5*this.#jt);const a=(t.x0-n)*s,c=(t.x1-n)*s,l=.5*-(t.y0-o)*s,u=.5*-(t.y1-o)*s,d=(t,i)=>{h.x=0,h.y=0,h.z=0,e.Zi(t,i,0),h.ts(e),e.Zi(-t,-i,0)};d(a,l),i[0]=h.x,i[1]=h.y,i[2]=h.z,d(a,u),i[3]=h.x,i[4]=h.y,i[5]=h.z,d(c,l),i[6]=h.x,i[7]=h.y,i[8]=h.z,d(c,u),i[12]=h.x,i[13]=h.y,i[14]=h.z,i[9]=i[3],i[10]=i[4],i[11]=i[5],i[15]=i[6],i[16]=i[7],i[17]=i[8]}#qt(t){if(this.#Ot)return t*Math.max(2*this.#At,this.#Ct)*(this.#u.width/this.width);const i=this.#At,s=this.#Ct,h=this.#Tt,e=this.#St,n=this.#u.el,o=this.#u.V,r=n.width,a=s/2.5;let c=0;const l=o.N(h-i/2,e-a);if(l.wi(n)&&c++,o.N(h+i/2,e-a).wi(n)&&c++,o.N(h-i/2,e+a).wi(n)&&c++,o.N(h+i/2,e+a).wi(n)&&c++,0===c)return 0;const u=l.w>0||0>l.x?0:Math.min(r,l.x),d=l.w>0||l.x>r?r:Math.max(0,l.x);return Math.min(1,(d-u)/this.width)}#Kt(i){const s=this.#u,h=s.el.width,e=s.el.height,n=s.V.oh>Math.PI/2?20:12,o=s.V.Mh;t.#Nt=0;const r=(i,h)=>{const e=s.V.B(i,h),n=t.#Nt++;t.#Bt[n]=e.x,t.#Vt[n]=e.y};for(let t=0;n>=t;t++){const i=t/n;r(i*h,0),r((1-i)*h,e),r(h,i*e),r(0,(1-i)*e)}for(let t=1;3>=t;t++){const i=e*t/4;for(let t=1;3>=t;t++)r(h*t/4,i);r(h*t/4,e-1)}const a=t.#Nt;let c=1/0,l=-1/0;for(let b=0;a>b;b++){const i=t.#Vt[b];c>i&&(c=i),i>l&&(l=i)}c=Math.max(0,c-.001),l=Math.min(1,l+.05);const u=t.#Bt,d=t.#Rt;for(let t=0;a>t;t++)u[t]=it(u[t]-o);t.#Ht=0;for(let b=0;a>b;b++){const i=u[b];let s=0;for(let h=0;h<t.#Ht;h++)if(1e-8>Math.abs(d[h]-i)){s=1;break}s||(d[t.#Ht++]=i)}const f=t.#Ht;for(let t=1;f>t;t++){const i=d[t];let s=t-1;for(;s>=0&&d[s]>i;)d[s+1]=d[s],s--;d[s+1]=i}let p=0,m=1,g=0;if(2>f)g=1,c=0,l=1;else{let t=0,i=-1;for(let e=0;f-1>e;e++){const s=d[e+1]-d[e];s>t&&(t=s,i=e)}const s=d[0]+1-d[f-1],h=s>t;h&&(t=s,i=f-1),.999999>1-t?h?(p=d[0],m=d[f-1]):(p=d[(i+1)%f],m=d[i]+1):g=1}(.05>c||l>.95)&&(g=1);const w=i.$s,v=i.Fs;let M=Math.max(0,Math.floor((c-.001)/w)),_=Math.min(i.Ns-1,Math.max(0,Math.floor((l+w-1e-10)/w)));1e-5>c&&(M=0),l>.99999&&(_=i.Ns-1);const y=m>1;for(let t=M;_>=t;t++)if(g)for(let s=0;s<i.Rs;s++)this.#ii(i,s,t);else{const s=Math.max(0,Math.floor((p-.001)/v)-1);if(y){for(let e=s;e<i.Rs;e++)this.#ii(i,e,t);const h=Math.min(i.Rs-1,Math.ceil(it(m+.001)/v));for(let s=0;h>=s;s++)this.#ii(i,s,t)}else{const h=Math.min(i.Rs-1,Math.ceil((m+.001)/v));for(let e=s;h>=e;e++)this.#ii(i,e,t)}}}},si=class extends Jt{Ds=new Zt;#si=new Zt;#hi=new Zt;#ei=1;#ni=new Zt;#oi=new qt;bh=10;Bi=0;#ri=1;#ai=0;Mh=0;#ci=0;#li=0;sh=0;K=0;tt=0;xh=Math.PI/2;Oi=Math.PI/2;Vi=Math.PI/2;Ri=Math.PI/2;hh=0;eh=0;nh=-1;oh=0;_s=new qt;#lt=new jt;constructor(t){super(t),this.sh=-this.canvas.Ph,this.Mh=this.sh/(2*Math.PI),this.#ri=this.canvas.height/(this.canvas.width/2),this.#ai=(1-this.#ri)/4,this.K=this.sh,this.Th()}nt(t,i){this.#ci=t,this.#li=i,this.Vi=Math.PI/2,i>0&&(this.Vi=Math.min(this.Vi,this.Vi*i*1.5)),this.Xi(this.Oi,1)}Th(t=0){const i=this.canvas.el;t||this.Ds.Oi(this.Oi,i.ki,1e-4,20),this.#ei=1;const s=this.Ds;this.tt=Math.min(Math.PI/2,Math.max(-Math.PI/2,this.tt)),s.ji(this.tt),s.Yi(this.K),s.Zi(this.#oi.x,this.#oi.y,this.#oi.z);const h=this.#ni;h.qi(this.Oi),h.Zi(0,0,i.height/i.ratio/2),h.ji(-this.tt),h.Yi(this.K),this.#lt.direction=(this.K/Math.PI*180%360+360)%360}Ti(t,i,s=0){const h=this.canvas,e=h.el;this.K+=t*e.ratio/e.width*this.Oi*e.ki,this.tt+=i*e.ratio/e.height*this.Oi*this.#ri,this.K=st(this.K),(h.ht||this.#li>0)&&this.#ui(),this.#ci>0&&this.#di(),0===s&&h.es.addStep(2*t,2*i),this.Th(),this.Sh(),this.#fi()}#ui(){const t=this.Oi/2,i=Math.PI*this.#ri/2*(this.#li>0?this.#li:1);this.tt=this.tt>0?Math.min(i,this.tt+t)-t:Math.max(-i,this.tt-t)+t}#di(){const t=this.Oi/2*this.canvas.el.ki,i=Math.PI*(this.#ci>0?this.#ci:1);let s=this.K;for(;s>=Math.PI;)s-=2*Math.PI;for(;s<-Math.PI;)s+=2*Math.PI;this.K=st(Math.min(Math.max(i,t)-t,Math.max(Math.min(-i,-t)+t,s)))}#pi(t,i,s,h=0,e=0,n=0){const o=this.canvas;if(t/=2,0!==i)i=o.xt.zoom(t,i,h,s);else{t/=this.Bi*o.zi/20;const i=e>0&&n>0;let h=0,r=0;if(i){const t=this.B(e,n);h=t.x,r=t.y}if(this.Xi(this.Oi+t,s),i){const t=this.B(e,n);let i=h-t.x;i>.5&&(i-=1),-.5>i&&(i+=1);const s=r-t.y;this.K+=i*Math.PI*2,this.tt+=s*Math.PI*this.#ri,this.K=st(this.K),(o.ht||this.#li>0)&&this.#ui(),this.#ci>0&&this.#di(),this.Th(),this.#mi(),this.Sh(),this.#fi()}}return i}Xi(t,i){const s=this.canvas;this.Oi=t,i&&!s.is360||(this.Oi=Math.min(this.Vi,Math.max(this.Ri,this.Oi))),(s.ht||this.#li>0)&&this.#ui(),this.#ci>0&&this.#di(),this.Ds.Oi(this.Oi,s.el.ki,1e-4,20),this.#mi(),this.Th(1),this.Sh(),this.#fi()}#mi(){const t=this.canvas.el,i=t.width/2,s=t.height/2,h=this.B(i,s).x,e=this.B(i+1,s+1).x;this.Bi=1/(e+(h>e?1:0)-h)/this.canvas.width}it(t,i,s=0){this.K=st(t-this.sh),this.tt=i,0!==s?this.Xi(s,0):this.Th(),this.Sh(),this.#fi()}O(t,i,s,h,e){if(null==t||null==i||null==h)return 0;const n=e?.noLimit??0,o=e?.correctNorth?t+this.Mh:t;return this.K=(o-.5)*Math.PI*2,this.tt=(i-.5)*Math.PI*this.#ri,this.Xi(Math.min(this.Vi,h*Math.PI*this.#ri),n),this.Sh(),this.#fi(),1}#fi(){const t=this.canvas,i=it(this.K/(2*Math.PI)+.5),s=this.tt/this.#ri/Math.PI+.5,h=this.Oi/Math.PI/this.#ri,e=h*(0===t.el.width?1:.5*Math.sqrt(t.el.ki))/(t.aspect/2);t.view.set(i,s,e,h),t.view.li=1}Sh(){const t=this.K,i=this.tt;this.hh=Math.cos(i)*Math.sin(t),this.eh=Math.sin(i),this.nh=Math.cos(i)*Math.cos(t);const s=2*Math.atan(1/this.Oi),h=this.canvas.el.width/this.canvas.el.height,e=s/2,n=Math.atan(Math.tan(e)*h);this.oh=2*n}Ah(t,i,s,h=0){const e=this.#oi,n=s*Math.PI*2+h;e.x=-t*Math.sin(n),e.y=i,e.z=t*Math.cos(n),this.canvas.view.li=1,this.Th()}Ch(){const t=this.canvas,i=t.el;this.Ri=Math.min(.5,i.height/t.height)/t.maxScale*this.#ri*Math.PI/i.ratio*i.scale,this.Xi(this.Oi,1)}#gi(){this.#ei&&(this.#hi.fi(this.Ds),this.#hi.Ji(),this.#ei=0)}B(t,i){const s=this.canvas.el,h=this._s,e=this.#lt;return h.x=t*s.ratio/s.width*2-1,h.y=-(i*s.ratio/s.height*2-1),h.z=1,h.w=1,this.#gi(),h.ts(this.#hi),h.ss(),e.x=Math.atan2(h.x,-h.z)/Math.PI/2+.5,e.y=.5-Math.asin(h.y)/Math.PI/this.#ri,e.scale=this.Bi,e.w=this.#oi.x+this.#oi.z,e.direction=this.K+this.sh,e.Mi(),e}N(t,i){const s=this.canvas.el,h=this._s,e=this.#lt;return this.kh(t+this.Mh,i),e.x=(h.x+1)/2*s.width/s.ratio,e.y=(1-h.y)/2*s.height/s.ratio,e.scale=this.Bi,e.w=-h.w,e.Mi(),e}kh(t,i,s=0,h=this.bh){const e=this._s;t*=2*-Math.PI,i-=.5,i*=-Math.PI,i*=this.#ri;const n=Math.cos(i);return e.x=n*Math.sin(t)*h,e.y=Math.sin(i)*h,e.z=n*Math.cos(t)*h,e.w=1,s||e.ts(this.Ds),e}lt(t,i,s,h,e,n,o,r=0,a=1,c=1,l=0){isNaN(h)&&(h=this.bh);const u=this.#si,d=this._s,f=this.bh,p=this.#oi;u.Gi(),h*=this.bh*(100/(2*Math.PI)),t*=2*-Math.PI,i-=.5,i*=Math.PI*this.#ri;const m=Math.cos(i);return d.x=m*Math.sin(t),d.y=Math.sin(i),d.z=m*Math.cos(t),u.Zi(p.x*h/f,-p.y*h/f+r*f,p.z*h/f),u.Zi(d.x*h,d.y*h,d.z*h),u.Yi(Math.atan2(d.x,d.z)+Math.PI+n),u.ji(d.y+e),u.Wi(o),u.Bi(a,c),u.Ui(s/Math.PI/f),u.Ki(this.#ni),u}Eh(t,i,s,h){i*=this.#ri,i/=2,i-=.25,i+=this.#ai,h*=this.#ri,h/=2;const e=this.canvas.main.Ih,n=this.bh,o=s/16,r=h/16,a=2*Math.PI;for(let c=0;16>c;c++)for(let s=0;16>s;s++){const h=18*(16*c+s),l=-it(t+o*s+this.Mh)*a,u=-(i+r*c)*a,d=-it(t+o*(s+1)+this.Mh)*a,f=-(i+r*(c+1))*a,p=Math.cos(l)*n||0,m=Math.sin(l)*n||0,g=Math.cos(d)*n||0,w=Math.sin(d)*n||0,v=Math.cos(u),M=Math.cos(f),_=Math.sin(u)*n,y=Math.sin(f)*n;e[h+0]=v*m,e[h+1]=_,e[h+2]=v*p,e[h+3]=e[h+9]=M*m,e[h+4]=e[h+10]=y,e[h+5]=e[h+11]=M*p,e[h+6]=e[h+15]=v*w,e[h+7]=e[h+16]=_,e[h+8]=e[h+17]=v*g,e[h+12]=M*w,e[h+13]=y,e[h+14]=M*g}}W=0;mi=0;Y=0;Z=1;et(){}Es(){return 0}Pi(){return 0}J(t=0){return this.Oi>=this.Vi}q(){return this.Oi<=this.Ri}St(t,i,s=0,h=0,e=0,n=0){this.Ti(t,i,s)}Tt(t,i,s,h=0,e){return this.#pi(t,h,e,0,i,s)}rs(t,i,s){this.#pi(2*t,0,0),this.Ti(i,s)}us(t){const i=this.canvas.view.ei;return i+at(i,t)}gs(t){const i=this.canvas.main.el;return{w:1/t*i.width,h:1/t*i.height}}},hi=class t{view;focus;xt;es;X;V;camera;#wi=new Xt;el=new Yt;images=[];zi=0;#vi=[];#Mi;#_i;#yi;visible;#bi;#ki=1;#xi=0;#Pi=0;#Ti=0;get zIndex(){return this.#Pi}set zIndex(t){this.#Pi!==t&&(this.#Pi=t,this.parent&&(this.parent.#Ti=1))}mh=[];aspect;#Si=0;#Ai=0;Ht=0;#Ci=0;#Ei=0;$i=-1;ys=0;xs=0;bs=0;ks=0;gh=0;layer=0;Lh;#vt;is360;Rt;#Ii;vs;Cs;maxScale;As;Di;Ph;#Li;#zi;isOmni;Ls;Fi;main;width;height;zh;ht;Ms;constructor(t,i,s,h,e,n,o,r,a,c,l,u,d,f,p,m,g,w,v,M,_,y,b=0){this.main=t,this.width=i,this.height=s,this.zh=h,this.ht=e,this.Ms=b,this.#vt=n,this.is360=o,this.Rt=r,this.#Ii=a,this.vs=c,this.Cs=e?1:l,this.maxScale=u,this.As=d,this.Di=f,this.Ph=p,this.#Li=m,this.#zi=g,this.isOmni=w,this.Ls=v,this.Fi=M,this.#Si=t.Dh.length,b||t.Dh.push(this),this.aspect=i/s,this.zi=Math.sqrt(i*i+s*s),this.view=new Gt(this),this.focus=new Gt(this),this.xt=new Ut(this),this.es=new Wt(this),this.X=new Kt(this),this.V=new si(this),this.camera=this.is360?this.V:this.X,this.#Mi=new Gt(this),this.#_i=new Gt(this),this.#yi=new Gt(this),this.visible=new Gt(this),this.#bi=new Gt(this),o&&this.view.set(.5,.5,1,.5),b||(this.el.fi(t.el),this.O(this.view.ei,this.view.ni,this.view.width,this.view.height,0,0),this.Ch()),r?(this.main.Fh++,this.#Ci=1,this.Ht=1,this.#Ei=1,y>0&&this.Jt(y)):this.$h(0,0,1,1,i,s,n,_,a,0,h)}parent;#Di(t){this.parent=t,this.#Si+=t.#vi.length}$h(t,i,s,h,e,n,o,r,a,c,l,u=0,d=0,f=0,p=1,m=0){const g=new ii(this,this.main.Fh++,this.images.length,e,n,o,r,a,c,this.main.Oh,l,l,u,d,f,p,m);return g.gt(t,i,s,h),this.images.push(g),this.main.Oh=g.Zs,1===this.images.length&&this.Hi(0),g}Bh(i,s,h,e,n,o,r={}){const a=r.coverLimit??1,c=r.coverStart??1,l=new t(this.main,n,o,1,a,this.#vt,0,0,this.main.th||this.#Ii,0,c,1,1,this.Di,0,0,0,0,this.Ls,1,0,0,1);return l.#Di(this),l.gt(i,s,h,e,1,1),this.#vi.push(l),l}#Fi(){const t=1/(0!==this.main.Vh||0!==this.main.Rh?this.main.Nh:1!==this.main.Dh.length||this.Ms?this.main.Hh:.25)/this.main.uh,i=this.zh>0&&this.zh>=this.Ht;if(this.Ht=i?Math.min(1,this.Ht+t):Math.max(0,this.Ht-t),this.#Ci=dt.get(this.Ht),0!==this.main.Vh||0!==this.main.Rh){const t=0===this.Ht?0:dt.get(1-this.Ht)*(i?1:-1);this.V.Ah(this.main.Vh*t*8,this.main.Rh*t*8,this.main.Xh)}}#$i(t){this.Lh?.visible?.set(t),this.#Ai=t}Gh(){this.zh=0,this.zIndex=0}jh(){if(this.#Ei=1,!this.Ms&&1===this.#_i.width&&1===this.#_i.height)for(let t=0;t<this.main.Dh.length;t++)this.main.Dh[t]!==this&&this.main.Dh[t].Gh();this.zh=1}Yh(){return!this.#xi&&1>this.#ki}#Oi(){return 0===this.zh&&0===this.Ht||0===this.#_i.width||0===this.#_i.height}Wh(){if(!this.Yh()&&this.#Oi())return void(this.#Ai&&this.#$i(0));let t=1>this.xt.Ni()||1>this.es.step()||!this.#Ei;if(this.mh.length=0,this.#Bi(0)&&(t=1),!(this.is360||this.Yh()||this.visible.width>0&&this.visible.height>0))return void(this.#Ai&&this.#$i(0));this.#Ai||1>this.Ht||this.#$i(1),this.V.Sh(),this.#Ei&&this.Ht!==this.zh&&(this.#Fi(),t=1);const i=(this.is360?this.V.Bi:this.X.Bi)*this.el.scale,s=this.main;for(let h=0;h<this.images.length;h++){const e=this.images[h];e.rh()?(h>0&&!e.qs&&s.Uh(e,e.qs=1),e.Ot&&e.Js&&(t=1),e.ah(this.#Li||1>this.Ht)&&(t=1),e.opacity>0&&(s.Zh+=e.fh(i))):e.qs&&s.Uh(e,e.qs=0)}s.qh+=this.mh.length,s.Jh=0===s.qh?1:s.Zh/s.qh;for(let h=0;h<this.#vi.length;h++)this.#vi[h].Wh();t&&(s.Kh=1)}Qh(){if(0===this.zh&&0===this.Ht)return;const t=this.main,i=t.micrio.qt,s=this.el,h=this.view,e=this.xt.Ei();if(i.gl.viewport(this.el.left,t.el.height-s.height-s.top,s.width,s.height),i.gl.uniformMatrix4fv(i.te,0,this.V.Ds.arr),this.#zi)for(let o=0;o<this.images.length;o++){const t=this.images[o];t.x1>h.x0&&t.x0<h.x1&&t.y1>h.y0&&t.y0<h.y1&&(this.#Vi(t.Zs-1),i.ie(void 0,t.Ks))}const n=this.#wi;for(let o=0;o<this.mh.length;o++){const i=this.mh[o];this.#Vi(i);const s=n.layer===n.image.Ws-1||!t.se&&n.layer===n.image.Ws,h=i===n.image.Zs-1,r=t.he(i);(s||1===r||h)&&t.ie(n.image.Os,i,n.layer,n.x,n.y,r*this.#Ci*n.image.opacity,e,n.layer===n.image.Ws-1)&&h&&(n.image.Us=t.now,this.#Ei||this.jh())}this.#Ti&&(this.#vi.sort((t,i)=>t.zIndex>i.zIndex?1:t.zIndex<i.zIndex?-1:0),this.#Ti=0);for(let o=0;o<this.#vi.length;o++)this.#vi[o].Qh();h.li&&this.Lh?.camera?.bt(),h.li=0}#Bi(t){const i=this.main.el,s=this.Ms,h=s?this.parent.fs():1/i.ratio,e=s?this.parent.width:i.width,n=s?this.parent.height:i.height,o=s?this.parent.view:this.#bi,r=this.view,a=this.#_i,c=this.#Mi,l=this.#yi,u=this.Yh();if(u){const t=1/this.main.ee/this.main.uh;this.#ki=Math.min(1,this.#ki+t);const i=this.main.ne.get(this.#ki),s=c.ei+(l.ei-c.ei)*i,h=c.ni+(l.ni-c.ni)*i,e=c.width+(l.width-c.width)*i,n=c.height+(l.height-c.height)*i;a.set(s,h,e,n),1===this.#ki&&(1===this.zIndex&&(this.zIndex=0),c.fi(l)),this.view.li=1}let d=Math.max(r.x0,r.x0+(o.x0-a.x0)/a.width*r.width),f=Math.min(r.x1,r.x0+(1-(a.x1-Math.min(a.x1,o.x1))/a.width)*r.width);this.is360||(d=Math.max(0,d),f=Math.min(1,f));let p=Math.max(Math.max(0,r.y0),r.y0+(o.y0-a.y0)/a.height*r.height),m=Math.min(Math.min(1,r.y1),r.y0+(1-(a.y1-Math.min(a.y1,o.y1))/a.height)*r.height);p=Math.max(p,0),m=Math.min(m,1);const g=(d+f)/2,w=(p+m)/2,v=f-d,M=m-p;this.visible.set(g,w,v,M);const _=s?1:i.ratio;return this.zh>=this.Ht&&this.el.set(a.width*h*e,a.height*h*n,(a.x0-o.x0)*e*h,(a.y0-o.y0)*n*h,_,s?1:i.scale,s?0:i.bi)&&(t||this.oe(),this.view.li=1,this.Ch(),this.is360||(this.X.Ps(),this.X.zs())),u}gt(t,i,s,h,e,n){this.#xi=0,e?(this.#Mi.gt(t,i,s,h),this.#_i.gt(t,i,s,h)):(this.#Mi.fi(this.#_i),this.#ki=0,0===this.zIndex&&(this.zIndex=1),this.xt.pi=0),this.#yi.gt(t,i,s,h),this.#Bi(n),this.oe()}#Vi(t){const i=this.#wi;if(this.#Ri(t),this.is360)0===i.image.ft?this.V.Eh(i.x0,i.y0,i.x1-i.x0,i.y1-i.y0):i.image._h(i);else{const t=this.main.yh,s=this.aspect;t[0]=t[3]=t[9]=(i.x0-.5)*s,t[1]=t[7]=t[16]=.5-i.y0,t[4]=t[10]=t[13]=.5-i.y1,t[6]=t[12]=t[15]=(i.x1-.5)*s,t[2]=t[5]=t[8]=t[11]=t[14]=t[17]=0}}oe(){const t=this.main.el;this.Lh?.Xt?.set([this.el.left/t.ratio,this.el.top/t.ratio,this.el.width/t.ratio,this.el.height/t.ratio])}#Ri(t){let i=0;for(;i<this.images.length-1&&t>=this.images[i].Zs;)i++;const s=this.images[i];let h=0;for(;h<s.Ys.length-1&&t>=s.Ys[h].Vs;)h++;const e=s.Ys[h];return e.Hs(t,this.#wi),[i,e.Os]}re(t){if(this.is360)return 0;const i=this.#wi,s=this.view,[h,e]=this.#Ri(t);return e>this.images[h].Ws?!!(i.x1>s.x0&&i.x0<s.x1&&i.y1>s.y0&&i.y0<s.y1):0}Ch(){if(this.#vi.length){const t=this.main.el;this.width=t.width,this.height=t.height,this.zi=Math.sqrt(t.width*t.width+t.height*t.height)}this.Ms||(this.is360?this.V.Ch():(this.X.Ps(),this.X.zs()))}ae(){if(this.es.stop(),this.xt.stop(),this.images.length>0){const t=this.images[0];t.Us=0,t.opacity=0}}ce(){this.#$i(0),this.main.ce(this)}Jt(t){this.layer=t,this.Hi(this.$i),this.view.li=1}Hi(t,i=0){const s=this.layer*(this.images.length/this.Fi);for(let h=0;h<this.images.length;h++){const e=this.images[h],n=h-s-t;0!==n?e.Ks=0>n||n>i?0:1:(e.Ks=1,this.$i=t,this.view.li=1)}this.X.et()}O(t,i,s,h,e,n,o=0,r=0){const a=this.main.el;a.yi>0&&(h+=h/(1-a.yi/a.height),this.xt.pi=0,a.yi=0),a._i>0&&(s+=s*(a._i/a.width),this.xt.pi=0,a._i=0),e&&(this.xt.pi=0),this.view.set(t,i,s,h),r&&!e&&this.view.pi(0,0,this.vs),n||this.xt.Si.fi(this.view),this.width>0&&(this.is360?(this.V.O(t,i,s,h,{noLimit:e,correctNorth:o}),this.view.set(t,i,s,h)):this.X.Ts()&&this.X.zs())}fs(){return this.is360?this.V.Bi:this.X.Bi}q(){const t=this.V;return this.is360?t.Oi<=t.Ri:this.X.q()}J(t=0){const i=this.V;return this.is360?i.Oi>=i.Vi:this.X.J(t)}et(t){this.X.et(t)}U(t){const i=this.X;i.W=t,i.et(),i.Ts(),this.V.Th()}it(t,i,s=0){isNaN(i)&&(i=this.V.tt),this.V.it(t,i,s?this.V.xh:0)}lt(t,i,s,h,e,n,o,r,a=1,c=1,l=0){const u=2e4/this.width;return this.V.lt(t,i,s*u,h,e,n,o,r,a,c,l).arr}rt(){this.#xi=1,this.xt.pause()}ct(){this.#xi=0,this.xt.resume()}ot(){this.xt.stop();for(let t=0;t<this.#vi.length;t++)this.#vi[t].ot()}T(){const t=this.Lh?.camera;if(t){for(t.T&&t.T();t.A.length;)t.A.shift()?.();t.S=t.T=void 0}}S(){const t=this.Lh?.camera;t&&(t.S&&t.S(),t.A.length=0,t.S=t.T=void 0)}},ei=class t{ready=0;el=new Yt;yh=new Float32Array(18);Ih=new Float32Array(4608);Dh=[];Oh=0;Fh=0;now=0;Kh=0;Jh=0;qh=0;Zh=0;Hh=.25;ee=.5;ne=dt;Nh=.5;dh=.5;xi=1;le=0;th=0;ih=0;Qs=4;wh=0;se=0;Ss=0;Is=0;Xh=0;Vh=0;Rh=0;uh=1/60;#Ni=[];#Hi=0;#Xi=new Set;#Gi=new Set;#ji=new Set;#Yi=new Set;#Wi=new Map;#Ui=new Map;#Zi;#qi=[];#Ji=new Map;#Ki=new Map;ue=0;static de=t.#Qi(1,1);static fe;#ts=0;#is=0;#ss=null;#hs=new Map;Yt(t){return this.#hs.get(t)?.canvas}#es(t){this.#hs.set(t.micrioImage,t)}micrio;constructor(t){this.micrio=t,this.#Zi=Et.iOS?5:X(this.micrio.canvas.isMobile)?30:90,this.render=this.render.bind(this),this.#qi.push(t.current.subscribe(this.#ns.bind(this)))}static#Qi(t,i){const s=new Float32Array(12*t*i),h=1/t,e=1/i;for(let n=0,o=0;i>o;o++)for(let i=0;t>i;i++,n+=12)s[n+3]=s[n+7]=s[n+9]=(s[n+1]=s[n+5]=s[n+11]=o*e)+e,s[n+4]=s[n+8]=s[n+10]=(s[n+0]=s[n+2]=s[n+6]=i*h)+h;return s}pe(){this.ready||(t.fe=t.#Qi(16,16),this.ready=1,this.#qi.push(this.micrio.barebone.subscribe(t=>{this.se=t,this.#Hi=t})))}ie=(t,i,s,h,e,n,o,r)=>{this.#Gi.add(i);const a=this.#os(i);a.me=void 0;const c=Nt(),l=this.#Ni[t],u="camera"in l,d=u&&l.Ot,f=u&&l.F,p=u?l:l.image,m="ge"in l?l.ge:void 0,g=u&&l.$settings.noSmoothing;if(0===a.we&&Lt>c){if(this.#Hi?c>2&&o:r&&o&&c>0)return 0;if(d&&!f)a.we=2,a.ve=this.micrio.qt.Me();else{a.we=1;const t=p.Ut(s,h,e,m);if(!t)return a.we=0,0;this.Me(i,t,o,{noSmoothing:g})}}else if(a.we>=2){if(this.#is||this.#rs(),a.ve){if(d){if(!p.Dt||!p.Dt.dataset.playing)return 0;this.micrio.qt._e(a.ve,p.Dt)}this.micrio.qt.ie(a.ve,n,f)}return 2===a.we&&(a.we=3,a.ye=this.now),1}return 0};he=t=>this.#Wi.get(t)?.Ht||0;ph=(t,i=0,s=1)=>{const h=this.#Wi.get(t);return h?(1>h.Ht&&(h.Ht=i?1:h.ye&&h.ye>0?Math.min(1,(this.now-h.ye)/250)*s:0),h.Ht):0};Uh=(t,i)=>{const s=this.#Ji.get(t);s&&"visible"in s&&s.visible.set(i)};be(){for(this.#as();this.#qi.length;)this.#qi.pop()?.();this.#Ui.forEach(t=>Ht(t)),this.#Ui.clear();for(const[t,i]of this.#Wi.entries())i.ke&&clearTimeout(i.ke),this.#cs(t);this.#Wi.clear(),this.#ls()}#us(t){if(this.le)return;const i=t.$info;if(!i)return;if(t.error)return void this.micrio.xe.set(0);if(!(t.Rt||i.width&&i.height))throw new Error("Invalid Micrio image size");const s=t.$settings;this.#ts=!!this.micrio.gallery||t.Bt,s.gallery?.archive&&(this.th=1,this.ih=s.gallery.archiveLayerOffset??0),i.version&&3.1>=parseFloat(i.version)&&(this.Qs=8),i.is360&&(s.limitToCoverScale=0);const h=!!s.limitToCoverScale,e=h||"cover"==s.initType;t.Rt&&this.micrio.xe.set(0);const n=[.5,.5],o=s.focus,r=!!i.spacesId;o&&(isNaN(o[0])||null===o[0]||(n[0]=o[0]),isNaN(o[1])||null===o[1]||(n[1]=o[1]));const a=s._360?.video,c=i.is360&&a&&(a.src||"video"in a&&a.video),l=!!this.#ts&&"switch"==s.gallery?.type,u=Math.max(1,s.omni?.layers?.length??1);s.omni&&(s.omni.layerStartIndex=Math.min(u-1,s.omni?.layerStartIndex??0));const d=new hi(this,i.width,i.height,t.Ht,h,i.tileSize??1024,i.is360??0,t.Rt,!!i.isDeepZoom,s.freeMove??0,e,s.zoomLimit||1,0!=s.zoomLimitDPRFix?this.micrio.canvas.getRatio(t.$settings):1,s.camspeed??1,t.camera.rotationY,l,!!s.gallery?.isSpreads&&"swipe"==s.gallery.type,t.Bt,s.pinchZoomOutLimit??0,u,!(!i.isSingle&&!c),s.omni?.layerStartIndex??0,0);t.ut=1,d.Lh=t,this.#es({canvas:d,micrioImage:t,camera:t.camera}),this.#Ni.push(t),this.#ds(t),t.opts.area&&t.camera.setArea(t.opts.area,{direct:1,noDispatch:1,noRender:1}),s?.restrict&&t.camera.setLimit(s.restrict),s?.crossfadeDuration&&(this.Hh=s.crossfadeDuration),s?.embedFadeDuration&&(this.dh=s.embedFadeDuration),void 0!==s?.dragElasticity&&(this.xi=s.dragElasticity),s?.skipBaseLevels&&(this.wh=s.skipBaseLevels),s?.omni&&(d.bs=-(s.omni.distance??0),d.ys=s.omni.fieldOfView??0,d.xs=s.omni.verticalAngle??0,d.ks=s.omni.offsetX??0,t.state.view.set([0,0,1,1])),this.micrio.hasAttribute("data-limited")&&t.canvas&&(t.canvas.gh=1),d.oe(),this.Oh>0&&this.#fs(this.Oh-1);const f=X(t.state.view)||s.view;let p;!f||0==f[0]&&0==f[1]&&1==f[2]&&1==f[3]?!r&&i.is360||!n||"0.5,0.5"==n.toString()||(d.camera.setCoo(n[0],n[1],0),s.focus=void 0):d.O(f[0]+f[2]/2,f[1]+f[3]/2,f[2],f[3],0,0,0,0),this.#qi.push(t.video.subscribe(t=>{p&&p.removeEventListener("play",this.render),p=t??void 0,p&&p.addEventListener("play",this.render)})),t.Rt&&t.visible.set(1),this.#ns(t)}#ds(t){const i=this.#hs.get(t).canvas;t.camera.$(i)}#ns(t){if(t&&(!t.ut||t!==this.#ss?.micrioImage)&&!this.le)if(t.ut){if(t!==this.#ss?.micrioImage){const i=this.#hs.get(t);if(!i)return;if(i.canvas.Ms)return;const s=t.F&&this.#ss?this.#ss.canvas.V.tt:0;if(this.#ss=i,t.F&&!this.ue){const h=(this.Xh+.5)%1*Math.PI*2;i.canvas.it(h-t.camera.rotationY,s,1)}0===i.canvas.zh&&i.canvas.jh(),t.$settings.omni?.layerStartIndex&&t.state.layer.set(t.$settings.omni.layerStartIndex),this.ue=0,this.ready=1,this.render()}}else{if(!X(this.micrio.current)||!t.$info.isIIIF&&t.$info.id!=X(this.micrio.current).id)return;this.#us(t),t.Gt.length&&t.Gt.forEach(i=>this.ti(i,t))}}Pe(t){t.ut||this.#us(t)}Te(t){if(!t.ut)throw new Error("Canvas is not placed yet");const i=this.#hs.get(t);i&&(i.canvas.ce(),this.#hs.delete(t),this.render())}render(){this.le||Q.request(this.#ps)}#ps=(t=performance.now())=>{if(this.micrio.isConnected&&this.micrio.$current&&!this.le){this.#is=0,(this.Wh(t)||this.micrio.Se||this.micrio.events.isNavigating||0==this.micrio.$current?.Dt?.paused)&&this.render(),this.#ts&&this.#rs(),this.#Gi.clear();for(let t=0;t<this.Dh.length;t++)this.Dh[t].Qh();this.micrio.events.Et("draw"),this.#ms(),this.micrio.qt.Ae()}};Wh(t){this.uh=1e3/Math.min(33,t-this.now),this.now=t,this.Zh=0,this.qh=0,this.Kh=0;for(let i=0;i<this.Dh.length;i++)this.Dh[i].Wh();return this.Kh||1>this.Jh}#as(){Q.cancel(this.#ps)}#os(t){let i=this.#Wi.get(t);return i||(i={we:0,Ht:0},this.#Wi.set(t,i)),i}#fs(t){this.#os(t).Ht=1,this.#Xi.add(t)}#rs(){this.#is||(this.micrio.qt.Ce(),this.#is=1)}Me(t,i,s,h={}){if(this.#Wi.get(t)?.ve||this.#Ui.has(t)||!h.force&&Nt()>=Lt)return;const e=At.db.has(i);e||this.micrio.xe.set(1),this.#Ui.set(t,i),(e?At.si(i):(t=>new Promise((i,s)=>{(()=>{if(!$t){$t=1;for(let t=0;Lt>t;t++){const i=new Worker(It);i.onmessage=i=>Rt(t,i.data.data,i.data.error,i.data.type),Ft.push(i)}URL.revokeObjectURL(It)}})(),Ot.push([t,i,s]),Vt()}))(i)).then(i=>this.#gs(t,i,s,h.noSmoothing)).catch(()=>this.#ws(t))}#gs(t,i,s,h){const e=this.#os(t);e.ve=this.micrio.qt.Me(i,e.ve,h),void 0!==self.ImageBitmap&&i instanceof ImageBitmap&&i.close instanceof Function&&i.close(),e.we=2,e.ke=setTimeout(()=>{this.#ws(t)},s?150:50)}#ws(t){this.#Ui.delete(t);const i=this.#Wi.get(t);i?.ke&&(clearTimeout(i.ke),i.ke=void 0),this.#Ui.size||this.micrio.xe.set(0)}#cs(t){const i=this.#Wi.get(t);i&&(i.ve&&(this.micrio.qt.gl.deleteTexture(i.ve),i.ve=void 0),i.ke&&clearTimeout(i.ke),this.#Wi.delete(t))}#vs(t){for(let i=0;i<this.Dh.length;i++)if(this.Dh[i].re(t))return 1;return 0}#ms(){const t=performance.now();for(const s of this.#ji){if(this.#Gi.has(s))continue;if(this.#Xi.has(s))continue;const i=this.#Wi.get(s);if(i&&0!==i.we)switch(i.Ht=0,i.we){case 1:const h=this.#Ui.get(s);h&&Ht(h),i.we=0;break;case 2:this.#Ui.has(s)&&this.#ws(s),this.#cs(s);break;case 3:i.me||(i.me=t)}}const i=this.#ji;this.#ji=this.#Yi,this.#Yi=i,this.#Yi.clear();for(const s of this.#Gi)this.#ji.add(s);for(const[s,h]of this.#Wi.entries())h.me&&(t-h.me)/1e3>this.#Zi&&(this.#vs(s)?h.me=t:this.#cs(s))}Ch(t){this.el.set(t.width,t.height,t.left,t.top,t.ratio,t.scale,t.portrait);for(let i=0;i<this.Dh.length;i++)this.Dh[i].Ch();this.ready&&(this.#as(),this.#ps())}#Ms=(t,i,s=0,h=1,e)=>{this.le||(this.#Ni.push(t),this.#_s(t,i,s,h,e))};#_s=(t,i,s,h,e)=>{const n="$info"in t?t.$info:i.$info;if(!n)return;const o=t.opts.area??[0,0,1,1],r=t instanceof St?t.$settings._360??{}:{},a=this.#hs.get(i);if(!a)return;let c;if(s){const i=a.canvas.$h(o[0],o[1],o[0]+o[2],o[1]+o[3],n.width,n.height,n.tileSize??1024,n.isSingle??0,n.isDeepZoom??0,n.isVideo??0,h,r.rotX??0,r.rotY??0,r.rotZ??0,r.scale??1,e??0);return this.#Ji.set(i,t),this.#Ki.set(t,i),t.ut=1,this.#es({canvas:a.canvas,micrioImage:t}),t.$t=this.Oh-1,void this.#fs(t.$t)}{if(!(t instanceof St))return;let s={};s=t.$settings.gallery?.archive||t.$settings.gallery?.type?{coverLimit:0,coverStart:0}:{coverLimit:!!t.$settings?.limitToCoverScale||!!i.$settings?.limitToCoverScale,coverStart:!(!t.$settings?.limitToCoverScale&&"cover"!=t.$settings?.initType&&"cover"!=i.$settings?.initType)},c=a.canvas.Bh(o[0],o[1],o[0]+o[2],o[1]+o[3],n.width,n.height,s),c.Lh=t}if(t.ut=1,this.#es({canvas:c,micrioImage:t,camera:t.camera}),!s){this.#ds(t);const i=t.$settings.focus;i?c.camera.setCoo(i[0],i[1],0):c.Ms&&c.O(c.view.ei,c.view.ni,c.view.width,c.view.height,0,0),c.oe()}t.$t=this.Oh-1,this.#fs(t.$t)};ti(t,i,s={}){this.le||t.ut||this.#Ms(t,i,1,s.opacity??1,"camera"in t&&s.asImage?void 0:s.fromScale)}Bh=(t,i)=>this.#Ms(t,i);Ee(t,i,s=0){const h=this.#hs.get(t),e=h?.canvas;if(e){if(h.camera)e.zh=i;else{const t=e.images;for(let h=0;h<t.length;h++){const e=t[h];e.ft>0&&(e.Ks=i,s&&(e.opacity=i))}}this.render()}}Ie(t,i){const s=this.#Ki.get(t);s&&(s.Js=i)}#ls(){for(let t=0;t<this.Dh.length;t++)this.Dh[t].ae()}ce(t){for(let i=0;i<this.Dh.length;i++)if(this.Dh[i]===t)return void this.Dh.splice(i,1)}},ni=new Float32Array([-1,-1,0,0,1,-1,1,0,-1,1,0,1,1,1,1,1]),oi=class{Le;#ys;#bs;#ks;#xs;#Ps;#Ts;#Ss;constructor(t,i,s){this.#Ss=t;const h=t.createProgram();if(!h)throw new y("Failed to create postprocess program",{code:l});this.#ks=h,i.qt.ze(this.#ks,t.VERTEX_SHADER,"attribute vec2 a_position;attribute vec2 a_texCoord;varying vec2 v_texCoord;void main(){v_texCoord=a_texCoord;gl_Position=vec4(a_position,0.0,1.0);}"),i.qt.ze(this.#ks,t.FRAGMENT_SHADER,s),t.linkProgram(this.#ks),t.getProgramParameter(this.#ks,t.LINK_STATUS)||console.error("Postprocess shader link error:",t.getProgramInfoLog(this.#ks)),t.useProgram(this.#ks),this.#xs=t.getAttribLocation(this.#ks,"a_position"),this.#Ps=t.getAttribLocation(this.#ks,"a_texCoord"),this.#Ts=t.getUniformLocation(this.#ks,"u_time");const e=t.createTexture();if(!e)throw new y("Failed to create postprocess texture",{code:l});this.#ys=e,t.bindTexture(t.TEXTURE_2D,this.#ys),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,this.#Ss.drawingBufferWidth,this.#Ss.drawingBufferHeight,0,t.RGBA,t.UNSIGNED_BYTE,null),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE);const n=t.createFramebuffer();if(!n)throw new y("Failed to create postprocess framebuffer",{code:l});if(this.Le=n,t.bindFramebuffer(t.FRAMEBUFFER,this.Le),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,this.#ys,0),t.checkFramebufferStatus(t.FRAMEBUFFER)!==t.FRAMEBUFFER_COMPLETE)throw new Error("Framebuffer not complete");t.bindFramebuffer(t.FRAMEBUFFER,null);const o=t.createBuffer();if(!o)throw new y("Failed to create postprocess buffer",{code:l});this.#bs=o,t.bindBuffer(t.ARRAY_BUFFER,this.#bs),t.bufferData(t.ARRAY_BUFFER,ni,t.STATIC_DRAW)}De(){const t=this.#Ss;t.bindFramebuffer(t.FRAMEBUFFER,null),t.useProgram(this.#ks),t.bindBuffer(t.ARRAY_BUFFER,this.#bs),t.enableVertexAttribArray(this.#xs),t.vertexAttribPointer(this.#xs,2,t.FLOAT,0,4*Float32Array.BYTES_PER_ELEMENT,0),t.enableVertexAttribArray(this.#Ps),t.vertexAttribPointer(this.#Ps,2,t.FLOAT,0,4*Float32Array.BYTES_PER_ELEMENT,2*Float32Array.BYTES_PER_ELEMENT),t.activeTexture(t.TEXTURE0),t.bindTexture(t.TEXTURE_2D,this.#ys),t.uniform1f(this.#Ts,performance.now()/1e3),t.drawArrays(t.TRIANGLE_STRIP,0,4)}Ch(){const t=this.#Ss;t.bindTexture(t.TEXTURE_2D,this.#ys),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,this.#Ss.drawingBufferWidth,this.#Ss.drawingBufferHeight,0,t.RGBA,t.UNSIGNED_BYTE,null),t.bindTexture(t.TEXTURE_2D,null)}Fe(){const t=this.#Ss;t.deleteFramebuffer(this.Le),t.deleteTexture(this.#ys),t.deleteBuffer(this.#bs),t.deleteProgram(this.#ks)}},ri=256,ai=class{gl;$e=self;#ks;#As;#Cs;te;#Es=-1;#Is;#Ls;#zs;#Ds=null;#Fs=null;#$s=new Float32Array([-1,-1,0,1,-1,0,-1,1,0,-1,1,0,1,-1,0,1,1,0]);#Os=new Float32Array([0,0,0,0,0,0,0,0,0,0,0,0]);#Bs=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);#Vs=.075;#Rs=-1;#Ns=0;#Hs=-1;#Xs=-1;Oe;#Gs;constructor(t){this.#Gs=t,Q.P(this.$e)}Be(){const t="WebGL2RenderingContext"in window,i=this.#Gs.canvas.element.getContext(t?"webgl2":"webgl",{alpha:1,preserveDrawingBuffer:this.#Gs.hasAttribute("data-preserve-drawing-buffer"),stencil:0,antialias:0,depth:0,desynchronized:0});if(t?!(i instanceof window.WebGL2RenderingContext):!(i instanceof window.WebGLRenderingContext))throw new y("WebGL context creation failed",{code:r});this.gl=i;const s=this.#Gs.$current?.$settings.postProcessingFragmentShader;s&&(this.Oe=new oi(i,this.#Gs,s),this.#Gs.Se=1);const h=i.createProgram();if(!(h instanceof WebGLProgram))throw new y("Failed to create WebGL program",{code:c});if(this.#ks=h,this.ze(this.#ks,i.VERTEX_SHADER,"uniform mat4 GLMatrix;attribute vec3 pos;attribute vec2 aTextureCoord;varying highp vec2 vTextureCoord;void main(){gl_Position=GLMatrix*vec4(pos,1.0);vTextureCoord=aTextureCoord;}"),this.ze(this.#ks,i.FRAGMENT_SHADER,"precision mediump float;varying highp vec2 vTextureCoord;uniform sampler2D uSampler;uniform float opacity;uniform int noTexture;void main(){if(noTexture==1){gl_FragColor=vec4(.1,.1,.1,.1);}else{gl_FragColor=texture2D(uSampler,vTextureCoord)*opacity;}}"),i.linkProgram(this.#ks),!i.getProgramParameter(this.#ks,i.LINK_STATUS))throw new y("Shader link error: "+i.getProgramInfoLog(this.#ks),{code:c});i.useProgram(this.#ks),i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA),i.enable(i.BLEND),i.disable(i.DEPTH_TEST),i.clearColor(0,0,0,0);const e=i.getUniformLocation(this.#ks,"opacity");if(!e)throw new y("Failed to bind WebGL opacity uniform",{code:c});this.#As=e;const n=i.getUniformLocation(this.#ks,"GLMatrix");if(!n)throw new y("Failed to bind WebGL matrix uniform",{code:c});this.te=n;const o=i.getUniformLocation(this.#ks,"noTexture");if(!o)throw new y("Failed to bind WebGL texture uniform",{code:c});this.#Cs=o,this.#Es=i.getAttribLocation(this.#ks,"aTextureCoord");const a=i.createBuffer();if(!a)throw new y("Failed to create WebGL texture buffer",{code:l});this.#Is=a,i.bindBuffer(i.ARRAY_BUFFER,this.#Is),i.bufferData(i.ARRAY_BUFFER,ei.de,i.STATIC_DRAW);const u=i.createBuffer();if(!u)throw new y("Failed to create WebGL watermark buffer",{code:l});this.#zs=u;const d=i.createBuffer();if(!d)throw new y("Failed to create WebGL geometry buffer",{code:l});this.#Ls=d,this.#Rs=i.getAttribLocation(this.#ks,"pos"),this.#js(),i.activeTexture(i.TEXTURE0),i.viewport(0,0,this.gl.drawingBufferWidth,this.gl.drawingBufferHeight)}#js(){const t=this.gl;t.bindBuffer(t.ARRAY_BUFFER,this.#Ls),t.bufferData(t.ARRAY_BUFFER,this.#Gs.Ve.Ih.byteLength,t.DYNAMIC_DRAW),t.enableVertexAttribArray(this.#Es),t.bindBuffer(t.ARRAY_BUFFER,this.#Is),t.vertexAttribPointer(this.#Es,2,t.FLOAT,0,0,0),t.enableVertexAttribArray(this.#Rs),t.bindBuffer(t.ARRAY_BUFFER,this.#Ls),t.vertexAttribPointer(this.#Rs,3,t.FLOAT,0,0,0)}Fe(t=0){const i=this.gl;if(i){if(i.bindBuffer(i.ARRAY_BUFFER,null),i.bindTexture(i.TEXTURE_2D,null),i.deleteBuffer(this.#Is),i.deleteBuffer(this.#Ls),i.deleteBuffer(this.#zs),i.deleteProgram(this.#ks),this.Oe?.Fe(),this.#Ds&&i.deleteTexture(this.#Ds),t){const t=i.getExtension("WEBGL_lose_context");t instanceof Object&&t.loseContext instanceof Function&&t.loseContext()}this.gl=null}}ze(t,i,s){const h=this.gl.createShader(i);if(!h)throw new Error(`Could not create WebGL shader (type: ${i})`);if(this.gl.shaderSource(h,s),this.gl.compileShader(h),!this.gl.getShaderParameter(h,this.gl.COMPILE_STATUS))throw this.gl.deleteProgram(t),new y("Shader compilation failed: "+this.gl.getShaderInfoLog(h),{code:c});this.gl.attachShader(t,h),this.gl.deleteShader(h)}Me(t,i,s){const h=this.gl,e=i??h.createTexture();if(!e)throw new Error("Could not create WebGL texture");return h.bindTexture(h.TEXTURE_2D,e),t&&h.texImage2D(h.TEXTURE_2D,0,h.RGBA,h.RGBA,h.UNSIGNED_BYTE,t),h.texParameteri(h.TEXTURE_2D,h.TEXTURE_WRAP_S,h.CLAMP_TO_EDGE),h.texParameteri(h.TEXTURE_2D,h.TEXTURE_WRAP_T,h.CLAMP_TO_EDGE),h.texParameteri(h.TEXTURE_2D,h.TEXTURE_MIN_FILTER,h.LINEAR),h.texParameteri(h.TEXTURE_2D,h.TEXTURE_MAG_FILTER,s?h.NEAREST:h.LINEAR),e}_e(t,i){const s=this.gl;s.bindTexture(s.TEXTURE_2D,t),s.texImage2D(s.TEXTURE_2D,0,s.RGBA,s.RGBA,s.UNSIGNED_BYTE,i),s.bindTexture(s.TEXTURE_2D,null)}Ce(){const t=this.gl;this.Oe&&t.bindFramebuffer(t.FRAMEBUFFER,this.Oe.Le),this.gl.clear(this.gl.COLOR_BUFFER_BIT)}Ae(){this.Oe&&(this.Oe.De(),this.gl.useProgram(this.#ks),this.#js()),this.#Ds&&this.#Ys()}ie(t,i=1,s=0){const h=this.gl,e=t?0:1;e!==this.#Hs&&(h.uniform1i(this.#Cs,e),this.#Hs=e),i!==this.#Xs&&(h.uniform1f(this.#As,i),this.#Xs=i),t&&h.bindTexture(h.TEXTURE_2D,t);const n=s?1536:6;s!=this.#Ns&&(h.bindBuffer(h.ARRAY_BUFFER,this.#Is),h.bufferData(h.ARRAY_BUFFER,s?ei.fe:ei.de,h.STATIC_DRAW),h.bindBuffer(h.ARRAY_BUFFER,this.#Ls),this.#Ns=s),h.bufferSubData(h.ARRAY_BUFFER,0,s?this.#Gs.Ve.Ih:this.#Gs.Ve.yh),h.drawArrays(h.TRIANGLES,0,n)}Zt(t,i){if(!this.gl)return;if(t===this.#Fs)return;this.#Fs=t;const s=new Image;i&&(this.#Vs=i),s.crossOrigin="anonymous",s.src=t,s.onload=()=>{const t=Mt("canvas",{props:{width:ri,height:ri}}),i=t.getContext("2d");if(!i)return;const h=Math.min(96/s.width,64/s.height),e=s.width*h,n=s.height*h;i.drawImage(s,(ri-e)/2,(ri-n)/2,e,n),this.#Ds&&this.gl.deleteTexture(this.#Ds),this.#Ds=this.Me(t);const o=this.gl;o.bindTexture(o.TEXTURE_2D,this.#Ds),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_S,o.REPEAT),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_T,o.REPEAT),o.bindTexture(o.TEXTURE_2D,null),this.#Gs.Ve.render()}}#Ys(){const t=this.gl;if(!this.#Ds)return;t.useProgram(this.#ks),t.blendFunc(t.SRC_ALPHA,t.ONE_MINUS_SRC_ALPHA),t.uniformMatrix4fv(this.te,0,this.#Bs),t.activeTexture(t.TEXTURE0),t.bindTexture(t.TEXTURE_2D,this.#Ds),t.uniform1i(this.#Cs,0),t.uniform1f(this.#As,this.#Vs),this.#Hs=0,this.#Xs=this.#Vs;const i=t.drawingBufferWidth/ri,s=t.drawingBufferHeight/ri,h=this.#Os;h[1]=s,h[2]=i,h[3]=s,h[8]=i,h[9]=s,h[10]=i,t.bindBuffer(t.ARRAY_BUFFER,this.#Ls),t.bufferData(t.ARRAY_BUFFER,this.#$s,t.DYNAMIC_DRAW),t.vertexAttribPointer(this.#Rs,3,t.FLOAT,0,0,0),t.bindBuffer(t.ARRAY_BUFFER,this.#zs),t.bufferData(t.ARRAY_BUFFER,this.#Os,t.DYNAMIC_DRAW),t.vertexAttribPointer(this.#Es,2,t.FLOAT,0,0,0),t.drawArrays(t.TRIANGLES,0,6),t.blendFunc(t.ONE,t.ONE_MINUS_SRC_ALPHA),this.#js(),this.#Ns=0}},ci=class{element=Mt("canvas");#Ws;viewport={width:0,height:0,left:0,top:0,ratio:0,scale:0,portrait:0};isMobile=H(0);get $isMobile(){return X(this.isMobile)}#Gs;constructor(t){this.#Gs=t,this.element.className="micrio",this.onresize=this.onresize.bind(this),self.ResizeObserver&&(this.#Ws=new self.ResizeObserver(this.onresize))}place(){if(this.element.parentNode)return;const t=this.#Gs.querySelector("img.preview");this.#Gs.insertBefore(this.element,t?t.nextSibling:this.#Gs.firstChild)}hook(){this.onresize(),this.#Ws?this.#Ws.observe(this.element):window.addEventListener("resize",this.onresize)}unhook(){this.#Ws?this.#Ws.unobserve(this.element):window.removeEventListener("resize",this.onresize)}onresize(){const t=this.element.getBoundingClientRect();let i=t.width,s=t.height;if(!i||!s)return;const h=self.getComputedStyle(this.element),e=parseFloat(h.width);isNaN(e)||(s=parseFloat(h.height)*i/Math.max(1,e));const n=this.#Gs.offsetWidth,o=this.#Gs.hasAttribute("data-static")||!n?1:Math.floor(i)/n;i/=o,s/=o;const r=1!=o?1:this.getRatio(),a=this.viewport;if(a.width==i&&a.height==s&&a.ratio==r&&a.scale==o)return;a.width=i,a.height=s,a.ratio=r,a.scale=o,a.top=t.top,a.left=t.left,a.portrait=window.matchMedia("(orientation: portrait)")?.matches??s>i,this.#Gs.qt.gl&&(this.element.width=i*r,this.element.height=s*r,this.#Gs.qt.gl.viewport(0,0,a.width*a.ratio,a.height*a.ratio),this.#Gs.qt.Oe?.Ch(),this.#Gs.Ve.Ch(a)),this.#Gs.events.Et("resize",t);const c=/mobile/i.test(navigator.userAgent);c!==this.$isMobile&&this.isMobile.set(c)}getRatio=(t=this.#Gs.$current?.$settings??{})=>!Et.iOS&&!t?.noRetina&&self.devicePixelRatio&&Math.max(1,Math.min(2,self.devicePixelRatio))||1;setMargins(t,i){this.#Gs.Ve.ready&&(this.#Gs.Ve.el._i=t,this.#Gs.Ve.el.yi=i)}},li={passive:1},ui={passive:1,capture:1},di={passive:0};function fi(t){t.stopPropagation(),t.preventDefault()}var pi=class{#Us=0;#Zs;constructor(t){this.#Zs=t}hook(){this.#Us||(this.#Us=1,this.#Zs.Re.addEventListener("dragstart",fi),this.#Zs.Re.addEventListener("pointerdown",this.start,li),self.addEventListener("pointercancel",this.#qs,li),this.#Zs.Re.setAttribute("data-hooked",""))}unhook(){this.#Us&&(this.#Us=0,this.#Zs.Re.removeEventListener("pointerdown",this.start,li),this.#Zs.Re.removeEventListener("dragstart",fi),self.removeEventListener("pointercancel",this.#qs,li),this.#Zs.Re.removeAttribute("data-hooked"))}start=(t,i=0,s=0)=>{if(0!=t.button||"touch"==t.pointerType&&this.#Zs.Ne)return;if(!(i||t.target==this.#Zs.He||t.target instanceof Element&&t.target.closest("[data-scroll-through]")))return;if(this.#Zs.Re.$current?.Bt&&t.shiftKey)return;if(this.#Zs.Xe)return;if(this.#Zs.Ge)return void(t instanceof TouchEvent&&t.touches.length>1&&this.stop());const h=this.#Zs.si({x:t.clientX,y:t.clientY});h&&(this.#Zs.Ge=1,this.#Zs.Ye.je.Bs=[t.clientX,t.clientY,performance.now()],this.#Zs.Ye.je.We=h,this.#Zs.Re.addEventListener("pointermove",this.#Js,li),this.#Zs.Re.addEventListener("pointerup",this.stop,li),this.#Zs.Re.setAttribute("data-panning",""),h.canvas?.es.stop(),s||h.camera.stop(),this.#Zs.Re.Ve.render(),this.#Zs.Et("panstart"))};#Js=t=>{const i=t.clientX,s=t.clientY,h=Math.hypot(this.#Zs.Ye.je.Bs[0]-t.clientX,this.#Zs.Ye.je.Bs[1]-t.clientY);!this.#Zs.Ue&&h>10&&(this.#Zs.Ue=t.pointerId,this.#Zs.Re.setPointerCapture(t.pointerId)),this.#Zs.Ye.je.Ze&&this.#Zs.Ye.je.We?.camera.pan(this.#Zs.Ye.je.Ze[0]-i,this.#Zs.Ye.je.Ze[1]-s),this.#Zs.Ye.je.Ze=[i,s]};stop=(t,i=0,s=0)=>{if(this.#Zs.Ge){if(this.#Zs.Ge=0,this.#Zs.Ye.je.Ze=void 0,this.#Zs.Re.removeEventListener("pointermove",this.#Js,li),this.#Zs.Re.removeEventListener("pointerup",this.stop,li),this.#Zs.Ue&&this.#Zs.Re.releasePointerCapture(this.#Zs.Ue),this.#Zs.Ue=void 0,this.#Zs.Re.removeAttribute("data-panning"),t&&0==i){const i=this.#Zs.Ye.je.We??this.#Zs.si({x:t.clientX,y:t.clientY});i&&(i.canvas?.es.start(),this.#Zs.Re.Ve.render())}this.#Zs.Ye.je.We=void 0,s||this.#Zs.Et("panend",t?{duration:performance.now()-this.#Zs.Ye.je.Bs[2],movedX:t.clientX-this.#Zs.Ye.je.Bs[0],movedY:t.clientY-this.#Zs.Ye.je.Bs[1]}:void 0)}};#qs=t=>{this.#Zs.Ge&&(void 0!==this.#Zs.Ue&&t.pointerId!==this.#Zs.Ue||this.stop(void 0,1,1))}};function mi(t,i){t.Ye.hs.qe=t.Ge,i.stop(void 0,0,1),t.Xe=1,t.Re.setAttribute("data-pinching",""),t.Je=void 0,t.Ye.hs.We&&t.Ye.hs.We.canvas?.camera.cs(),t.Re.Ve.render(),t.Et("pinchstart"),t.Ne&&t.Et("panstart")}function gi(t,i,s){const h=t.Ye.hs,e=h.We;e&&(t.Je=Math.hypot(i.x-s.x,i.y-s.y)/h.Ke,e.canvas?.camera.hs(i.x,i.y,s.x,s.y))}function wi(t,i,s){if(!t.Xe)return;t.Xe=0,self.removeEventListener("touchmove",s,{passive:1,capture:1}),self.removeEventListener("pointermove",s,{passive:1,capture:1}),t.Re.removeAttribute("data-pinching");const h=t.Ye.hs.We;h&&(h.canvas?.camera.ls(),t.Re.Ve.render()),t.Ye.hs.We=void 0,t.Je=void 0,t.Et("pinchend"),t.Ne&&!t.Ye.hs.qe&&t.Et("panend")}function vi(t,i,s){if(s instanceof TouchList?1===s.length:1===s.size){let h;if(s instanceof TouchList){const i=s[0];h={button:0,target:t.He,clientX:i.clientX,clientY:i.clientY}}else{const[i,{x:e,y:n}]=s.entries().next().value;h={button:0,pointerType:"touch",target:t.He,clientX:e,clientY:n,pointerId:i}}i.start(h,1,1)}}var Mi=class{#Zs;#Ks;constructor(t,i){this.#Zs=t,this.#Ks=i}hook(){Et.iOS&&this.#Zs.Qe&&this.#Zs.Re.addEventListener("touchstart",this.start,li)}unhook(){Et.iOS&&this.#Zs.Qe&&this.#Zs.Re.removeEventListener("touchstart",this.start,li),self.removeEventListener("touchmove",this.#Js,ui),self.removeEventListener("touchend",this.stop,ui)}start=t=>{if(!(Et.hasTouch&&t instanceof TouchEvent))return;if(this.#Zs.Ne&&2>t.touches.length)return;if(this.#Zs.Xe||2!=t.touches.length)return void this.stop(t);t.stopPropagation();const i=t.touches;this.#Zs.Ye.hs.We=this.#Zs.si({x:i[0].clientX,y:i[0].clientY}),this.#Zs.Ye.hs.Ke=Math.hypot(i[0].clientX-i[1].clientX,i[0].clientY-i[1].clientY),self.addEventListener("touchmove",this.#Js,ui),self.addEventListener("touchend",this.stop,ui),mi(this.#Zs,this.#Ks)};#Js=t=>{if(!(Et.hasTouch&&t instanceof TouchEvent))return;const i=t.touches;if(2>i?.length)return;const s={x:i[0].clientX,y:i[0].clientY},h={x:i[1].clientX,y:i[1].clientY};gi(this.#Zs,s,h)};stop=t=>{wi(this.#Zs,0,this.#Js),t instanceof TouchEvent&&vi(this.#Zs,this.#Ks,t.touches)}},_i=class{#Zs;#Ks;constructor(t,i){this.#Zs=t,this.#Ks=i}hook(){this.#Zs.Re.addEventListener("pointerdown",this.start,li),self.addEventListener("pointerup",this.end,li),self.addEventListener("pointercancel",this.end,li)}unhook(){this.#Zs.Re.removeEventListener("pointerdown",this.start,li),self.removeEventListener("pointerup",this.end,li),self.removeEventListener("pointercancel",this.end,li),self.removeEventListener("pointermove",this.#Js,ui),this.#Zs.tn.clear()}start=t=>{if("touch"===t.pointerType&&t.target==this.#Zs.He&&(this.#Zs.tn.set(t.pointerId,{x:t.clientX,y:t.clientY}),2===this.#Zs.tn.size&&!this.#Zs.Xe)){const t=Array.from(this.#Zs.tn.values()),i=t[0],s=t[1];this.#Zs.Ye.hs.We=this.#Zs.si({x:i.x,y:i.y}),this.#Zs.Ye.hs.Ke=Math.hypot(i.x-s.x,i.y-s.y),self.addEventListener("pointermove",this.#Js,ui),mi(this.#Zs,this.#Ks)}};#Js=t=>{if("touch"!==t.pointerType)return;if(!this.#Zs.tn.has(t.pointerId))return;if(this.#Zs.tn.set(t.pointerId,{x:t.clientX,y:t.clientY}),!this.#Zs.Xe||2!==this.#Zs.tn.size)return;const i=Array.from(this.#Zs.tn.values()),s={x:i[0].x,y:i[0].y},h={x:i[1].x,y:i[1].y};gi(this.#Zs,s,h)};end=t=>{"touch"===t.pointerType&&(this.#Zs.tn.delete(t.pointerId),this.#Zs.Xe&&2>this.#Zs.tn.size&&(self.removeEventListener("pointermove",this.#Js,ui),wi(this.#Zs,0,this.#Js),vi(this.#Zs,this.#Ks,this.#Zs.tn)))}},yi=class{#Zs;constructor(t){this.#Zs=t}hook(){Et.OSX&&(this.#Zs.Re.addEventListener("gesturestart",this.#Qs,di),this.#Zs.Re.addEventListener("gesturechange",this.#Qs,di),this.#Zs.Re.addEventListener("gestureend",this.#Qs,di))}unhook(){Et.OSX&&(this.#Zs.Re.removeEventListener("gesturestart",this.#Qs,di),this.#Zs.Re.removeEventListener("gesturechange",this.#Qs,di),this.#Zs.Re.removeEventListener("gestureend",this.#Qs,di))}#th(t){if("scale"in t&&"number"==typeof t.scale){const i=t;return{scale:i.scale,clientX:i.clientX,clientY:i.clientY}}return null}#Qs=t=>{const i=this.#th(t);if(!i)return;if(1===i.scale)return void(this.#Zs.sn=1);if(t.target instanceof Element&&t.target!=this.#Zs.He)return;const s=this.#Zs.sn-i.scale;this.#Zs.sn=i.scale,t.stopPropagation(),t.preventDefault(),"gesturechange"==t.type&&this.#Zs.si({x:i.clientX,y:i.clientY})?.camera.zoom(s*this.#Zs.Re.canvas.viewport.height,0,i.clientX,i.clientY)}},bi=class{hooked=0;#ih=-1;#Zs;constructor(t){this.#Zs=t}hook(){this.hooked||(this.#Zs.Re.addEventListener("wheel",this.handle,di),this.hooked=1)}unhook(){this.#Zs.Re.removeEventListener("wheel",this.handle,di),this.hooked=0}handle=(t,i=0,s=0)=>{if(!(t instanceof WheelEvent))return;if(this.#Zs.hn&&!t.ctrlKey)return;if(!i&&t.target instanceof Element&&t.target!=this.#Zs.He&&!t.target.classList.contains("marker")&&!t.target.closest("[data-scroll-through]"))return;let h=t.deltaY;t.ctrlKey&&(this.#Zs.nn=1);const e=this.#Zs.hn&&10*h%1==0,n=this.#Zs.nn&&!e,o=Et.firefox||t.ctrlKey||!n;if(this.#Zs.Ne&&this.#Zs.Re.$current?.camera.isZoomedOut())return;t.stopPropagation(),t.preventDefault(),(Et.OSX||n)&&t.ctrlKey&&(h*=10);const r={x:t.clientX,y:t.clientY},a=this.#Zs.si(r);if(a){if(o){const t=this.#Zs.Re.canvas.viewport;let i=0;const e=this.#Zs.Re.getBoundingClientRect();a.camera.zoom(1*h/Math.sqrt(t.scale),0,r.x-s-e.left,r.y-e.top-i)}else a.camera.pan(t.deltaX,t.deltaY);this.#Zs.rn=1,clearTimeout(this.#ih),this.#ih=setTimeout(this.#sh,50)}};#sh=()=>{this.#Zs.rn=0}},ki=Symbol("micrio-provides"),xi=class extends HTMLElement{static tag;static an=new Map;#hh=[];#eh=null;cn={};connectedCallback(){this.ln?.(),this.De?.()}disconnectedCallback(){this.un?.(),this.#ms()}At(t){Object.assign(this.cn,t),this.isConnected&&this.De()}De(){}dn(t){this.#hh.push(t)}fn(t){return t===this.#eh?(this.pn?.(),0):(this.#eh=t,1)}mn(t,i,s){let h=i;s?.skipFirst&&(h=Y(h)),s?.defer&&(h=j(h)),this.dn(t.subscribe(h))}gn(t,i){this.mn(t,i,{skipFirst:1})}wn(t,i){this.mn(t,i,{skipFirst:1,defer:1})}vn(t,i){this.dn(t.subscribe(i))}Mn(t,i){let s=this[ki];s||(this[ki]=s=new Map),s.set(t,i)}_n(t){let i=this;for(;i;){const s=i[ki];if(s?.has(t))return s.get(t);i=i.parentElement}}yn(){return this._n("micrio")}#ms(){for(const t of this.#hh)t();this.#hh=[]}},Pi={0:[0,-.5,1,.5],90:[1,0,.5,1],180:[0,1,1,.5],270:[-.5,0,.5,1]},Ti={0:[0,-1,1,1],90:[1,0,1,1],180:[0,1,1,1],270:[-1,0,1,1]},Si={0:[0,1,1,1],90:[-1,0,1,1],180:[0,-1,1,1],270:[1,0,1,1]},Ai={ArrowLeft:"left",ArrowRight:"right",ArrowUp:"up",ArrowDown:"down"},Ci=class extends xi{static tag="micrio-button";#nh;#oh;pn(){const t=this.cn;t.type!==this.#oh&&(this.#oh&&this.classList.remove(this.#oh),t.type&&this.classList.add(t.type),this.#oh=t.type)}De(){const t=this.cn,i=`${t.type}|${t.icon?.src??""}|${t.title??""}|${t.disabled??""}|${t.active??""}|${t.className??""}|${t.href??""}|${t.blankTarget??""}|${t.noClick??""}`;if(!this.fn(i))return;const s=!!t.href,h=s?"a":"button",e=`${t.className?t.className+" ":""}${t.active?"active":""}${t.noClick?" no-click":""}`.trim();this.#oh&&this.classList.remove(this.#oh),t.type&&this.classList.add(t.type),this.#oh=t.type,this.#nh&&this.#nh.remove();const n={title:t.title??"","aria-label":t.title??""};s&&(n.href=t.href,t.blankTarget&&(n.target="_blank"));const o=Mt(h,{className:e,attrs:n,props:{disabled:s?void 0:!!t.disabled},events:{...t.onclick&&{click:t.onclick},...t.onfocus&&{focus:t.onfocus},...t.onpointerdown&&{pointerdown:t.onpointerdown}},parent:this});this.#nh=o,t.type?Mt("micrio-icon",{setProps:{name:t.type},parent:o}):t.icon&&Mt("img",{props:{src:t.icon.src,alt:"Icon"},parent:o});const r=[];for(const c of this.childNodes)c===o||c.nodeType!==Node.TEXT_NODE&&c.nodeType!==Node.ELEMENT_NODE||(r.push(c.textContent??""),c.remove());const a=r.join("").trim();a&&Mt("span",{textContent:a,parent:o})}};customElements.define(Ci.tag,Ci);var Ei=(t=>(t[t.focus=0]="focus",t[t.flyTo=1]="flyTo",t[t.focusWithTagged=2]="focusWithTagged",t[t.focusTagged=3]="focusTagged",t[t.reset=4]="reset",t[t.back=5]="back",t[t.switchToGrid=6]="switchToGrid",t[t.filterTourImages=7]="filterTourImages",t[t.nextFadeDuration=8]="nextFadeDuration",t))({}),Ii=new WeakMap;function Li(t,i,s,h){"string"==typeof i&&(i=Ei[i]);const e=i+(s??"");if(t.bn==e)return;const n=(t=>{let i=Ii.get(t);return i||(i={[Ei.focus](i,s){const h=i?.split("|").map(t=>t.trim()),e=(h?.[0]??"").split(",").map(i=>t.kn.get(i.trim())).filter(t=>void 0!==t);1==e.length?t.gridFocus(e[0],{duration:s}):e.length>0&&t.set(e.map(t=>({id:t.id,size:[1]})),{duration:s,horizontal:"h"==h?.[1]})},[Ei.flyTo](i,s){const h=i?.split(",").map(i=>t.xn.find(t=>t.id==i?.trim()));if(h?.length){const i=h.map(t=>t?.opts.area?.[0]??0),e=h.map(t=>t?.opts.area?.[1]??0),n=Math.max(...h.map(t=>(t?.opts.area?.[0]??0)+(t?.opts.area?.[2]??1))),o=Math.max(...h.map(t=>(t?.opts.area?.[1]??0)+(t?.opts.area?.[3]??1))),r=Math.min(...i),a=Math.min(...e);t.image.camera.flyToView([r,a,n-r,o-a],{duration:s?1e3*s:void 0}).catch(()=>{})}else console.warn("Given image IDs gave no current displayed images")},[Ei.focusTagged](i,s){t.Pn(i,s)},[Ei.focusWithTagged](i,s){t.Pn(i,s,1)},[Ei.reset](i,s){t.reset(s)},[Ei.back](i,s){t.back(s)},[Ei.switchToGrid](){(t=>{const i=t.$focussed;if(!i)return;const s=i.camera.getView();s&&t.reset(0,1).then(()=>{i.opts.area&&t.image.camera.setView(i.opts.area,{noLimit:1}),i.camera.setView(s,{noLimit:1}),t.micrio.current.set(t.image)})})(t)},[Ei.nextFadeDuration](i){t.Tn=Number(i)},[Ei.filterTourImages](i,s){const h=X(t.micrio.state.tour);if(!h||!("steps"in h)||!h.stepInfo)return;const e=h.stepInfo.map(t=>t.micrioId),n=e.filter((t,i)=>e.indexOf(t)==i).map(i=>t.kn.get(i)).filter(t=>!!t);n.length&&t.set(n.map(t=>({id:t.id,size:[1]})),{duration:s,horizontal:"h"==i})}},Ii.set(t,i)),i})(t)[i];n?n(s,h):console.warn("Warning: unknown grid tour event",i),t.bn=e}var zi=class extends xi{static tag="micrio-grid";Sn=[];kn=new Map;xn=[];An=new Map;Cn=0;En="grid";In=H();get $focussed(){return X(this.In)}Ln=H([]);#rh=[];#ah=H(0);zn=1;#ch=.5;#lh=.5;Tn;#uh=0;#dh=new Map;#fh=new Map;bn;#ph;#mh;#gh;#wh=0;#vh="ease";#Mh;static Dn=0;micrio;image;#_h;#ft=0;ln(){if(this.#ft)return;this.#ft=1;const t=this.cn;this.micrio=t.micrio,this.image=t.image,this.#_h=t.gallery,this.#_h.Sn.forEach(t=>this.#yh(t));const i=this.image.$settings?.grid;this.Cn=i?.clickable&&["focus","zoom"].includes(i.clickable)?i.clickable:0,this.En="cells"==i?.panZoom?"cells":"grid",this.Cn&&this.image.$settings.hookKeys&&this.dn((t=>{zi.Dn=1;const i=(t=>i=>{if(!t.xn.length||!t.Cn)return;if("Escape"==i.key)return t.An.forEach(t=>t.classList.remove("focussed")),void(t.$focussed?(t.back(),i.preventDefault(),i.stopPropagation()):t.image.camera.isZoomedOut()||(t.reset(),i.preventDefault(),i.stopPropagation()));const s=Ai[i.key];if(!s||t.$focussed)return;i.preventDefault(),i.stopPropagation();const h=((t,i)=>{const s=t.xn.map((t,i)=>({img:t,i:i,cx:t.opts.area[0]+t.opts.area[2]/2,cy:t.opts.area[1]+t.opts.area[3]/2}));if(!s.length)return;let h=s.findIndex(i=>i.img.id==t.querySelector(":focus")?.getAttribute("data-id"));0>h&&(h=0);const e=s[h],n=.05;let o;for(const r of s){if(r.i===h)continue;const t=r.cx-e.cx,s=r.cy-e.cy;let a=0;switch(i){case"left":a=0>t&&Math.abs(s)<n;break;case"right":a=t>0&&Math.abs(s)<n;break;case"up":a=0>s&&Math.abs(t)<n;break;case"down":a=s>0&&Math.abs(t)<n}if(!a)continue;const c=Math.abs(t)+Math.abs(s);o&&c>=o.dist||(o={img:r.img,dist:c})}return o?o.img:s["right"==i||"down"==i?0:s.length-1].img})(t,s);if(!h)return;const e=h.id;t.An.forEach((t,i)=>{i===e?(t.focus(),t.classList.add("focussed")):(t.blur(),t.classList.remove("focussed"))}),"zoom"!=t.Cn||t.image.camera.isZoomedOut()||t.image.camera.flyToView(h.opts.area??[0,0,1,1],{duration:1e3*t.zn,limit:0})})(t);let s;document.addEventListener("keydown",i);const h=t=>{s={x:t.clientX,y:t.clientY}},e=i=>{if(!s)return;const h=Math.hypot(i.clientX-s.x,i.clientY-s.y);if(s=void 0,h>10)return;const[e,n]=t.image.camera.getCoo(i.clientX,i.clientY,1),o=t.xn.find(t=>t.opts.area&&nt(e,n,t.opts.area));o&&t.Fn(o)};return"grid"==t.En&&t.Cn&&(t.micrio.addEventListener("pointerdown",h),t.micrio.addEventListener("pointerup",e)),()=>{zi.Dn=0,document.removeEventListener("keydown",i),t.micrio.removeEventListener("pointerdown",h),t.micrio.removeEventListener("pointerup",e)}})(this)),void 0!==i?.transitionDuration&&(this.zn=this.#ch=i.transitionDuration),void 0!==i?.transitionDurationOut&&(this.#ch=i.transitionDurationOut),this.set(this.#bh,{cover:"cover"==this.image.$settings?.initType,duration:0}).then(()=>{this.#kh(),this.micrio.events.Et("grid-load")}),this.#Mh=Mt("micrio-button",{setProps:{type:"close",onclick:()=>this.back(),title:"Close"}}),this.dn(()=>this.#Mh.remove()),this.dn(this.In.subscribe(t=>{t?this.appendChild(this.#Mh):this.#Mh.remove()})),this.micrio.events.Et("grid-init",this)}un(){this.#xh(),this.#ph?.(),this.#ph=void 0}#kh(){if(this.micrio.state.marker.subscribe(t=>{if(t&&"string"!=typeof t){const i=t.data?._meta;if(i?.gridSize){const s="number"==typeof i.gridSize?[i.gridSize,i.gridSize]:i.gridSize.split(",").map(Number),h=this.Sn.find(i=>i.$data?.markers?.find(i=>i==t))?.id;h&&this.#fh.set(h,s)}G().then(()=>{const t=i?.gridAction?.split("|");t?.length&&"string"==typeof t[0]&&this.action(t.shift(),t.join("|"))})}}),this.Cn){this.addEventListener("click",t=>{this.Fn(t.target?.dataset.id)});const t=t=>{t?this.#Ph():this.#Th()};this.micrio.state.tour.subscribe(t),this.micrio.state.marker.subscribe(t),this.In.subscribe(t)}var t;this.#Sh=(t=this,i=>{const s=i.detail;s&&s.action?.startsWith("grid:")&&s.active&&Li(t,s.action.slice(5),s.data,s.end-s.start)}),this.micrio.addEventListener("tour-event",this.#Sh),this.micrio.addEventListener("serialtour-pause",()=>this.Sn.forEach(t=>t.camera.pause())),this.micrio.addEventListener("serialtour-play",()=>this.Sn.forEach(t=>t.camera.resume()))}#Sh;#xh(){clearTimeout(this.#mh),clearTimeout(this.#gh)}#yh(t){this.Sn.push(t),this.kn.set(t.id,t)}get#bh(){return this.#_h.Sn.map(t=>({id:t.id,size:[1]}))}#Ah(){this.#ah.set(this.#rh.push({layout:this.xn.map(t=>({id:t.id,view:t.state.$view,size:this.#dh.get(t.id)})),horizontal:this.#uh,view:this.image.camera.getView()}))}set(t=[],i={}){const s=++this.#wh;return this.Sn.length&&this.Sn.forEach(t=>t.camera.stop()),this.image.camera.stop(),new Promise((h,e)=>{delete this.image.$settings?.focus,this.bn=void 0,0==i.cover&&i.coverLimit&&(i.coverLimit=0),i.coverLimit&&null==i.cover&&(i.cover=1);const n=this.$focussed,o=i.transition?.endsWith("-delayed"),r="behind-delayed"==i.transition,{Ve:a}=this.micrio;"crossfade"==i.transition?i.duration=0:"behind"!=i.transition&&"behind-delayed"!=i.transition||((t,i,s,h)=>{const e="behind-delayed"==s.transition,n=1==s.coverLimit;s.forceAni=1,s.coverLimit=n,s.forceAreaAni=1;const o=e?1/i.length:1;let r=0;t.Sn.forEach(t=>{t.camera.setCoverLimit(n),i.find(i=>i.id==t.id)&&(t.camera.setArea([0,0,h?.id==t.id?1:o,1],{noDispatch:1,direct:1}),t!=h&&t.camera.setView([0,0,1,1]),e&&t.canvas&&(t.canvas.zIndex=i.length-r++))}),i.forEach(t=>t.view=[0,0,1,1])})(this,t,i,n);const c=this.image.ut,l=i.duration??(i.noHistory?this.#ch:this.zn),u=this.Tn??this.image.$settings.crossfadeDuration??1,d=(l||this.zn)/(r?2:1);this.Tn=void 0,c&&(a.ee=l,a.Hh=d);const f=!i.noBlur&&n;f&&this.blur(),!i.noHistory&&this.xn.length&&this.#Ah(),this.#uh=!!i.horizontal,this.#Ch(this.Sn.filter(i=>!t.find(t=>t.id==i.id))),this.#Eh(t,{horizontal:i.horizontal,keepGrid:i.keepGrid,scale:i.scale,columns:i.columns}),this.#xh();let p=0;c&&!i.noCamAni&&(i.view?this.image.camera.flyToView(i.view,{duration:1e3*l}):this.image.camera.flyToFullView({duration:1e3*l})).catch(()=>{s===this.#wh&&(this.#xh(),p||e())}),this.#fh.clear(),null==i.coverLimit&&(i.coverLimit=!!this.image.$settings.limitToCoverScale);const m=i.cover&&!i.coverLimit;m&&(i.coverLimit=1,t.forEach(t=>this.kn.get(t.id)?.camera.setCoverLimit(1)));const g="appear-delayed"==i.transition,w=t=>t*this.#lh+(t>0&&g?l:0);this.xn=t.map((t,s)=>this.#Ih(t,{duration:!i.forceAni&&f&&t.id!=n?.id?0:l,delay:o?w(s):0,noCamAni:g&&s>0?1:!!i.noCamAni,forceAreaAni:g&&s>0?0:i.forceAreaAni,cover:i.cover})),g&&this.xn.slice(1).forEach(t=>{const i=t.canvas;i&&(i.zh=i.Ht=.9999)});const v=()=>this.xn.forEach((t,i)=>yt(o?1e3*(w(i)+(r?l/2:0)):0).then(()=>t.canvas?.jh())),M=()=>{s===this.#wh&&(this.#xh(),Q.request(()=>a.Hh=u),o&&this.Sn.forEach(t=>{t.canvas&&(t.canvas.zIndex=0)}),m?t.forEach(t=>this.kn.get(t.id)?.camera.setCoverLimit(0)):i.coverLimit&&t.forEach(t=>this.kn.get(t.id)?.camera.setCoverLimit(1)),this.Cn&&this.#Th(),this.bn=void 0,p=1,h(this.xn))};l||d?(i.noFade||(this.#gh=setTimeout(v,Math.max(0,l/2*1e3))),this.#mh=setTimeout(M,1e3*(Math.max(d,l)+(o?(t.length-1)*this.#lh:0)))):(i.noFade||v(),M())})}#Lh(){return this.xn.length!==this.Sn.length?1:this.xn.some((t,i)=>t.id!==this.Sn[i].id)}#Eh(t,i){const s=t.reduce((t,i)=>t+i.size[0]*(i.size[1]??1),0),h=i.columns??(i.horizontal?t.length:((t,i)=>{let s=Math.ceil(i/Math.ceil(Math.sqrt(i)));if(t==i){const i=Math.floor(Math.sqrt(t)),h=[];for(let e=i;s+i>e;e++)t%e||h.push(e);h.length&&(s=h[Math.floor(h.length/2)])}return s})(t.length,s));this.style.gridTemplateColumns=`repeat(${h}, auto)`;for(const c of this.An.values())c.remove();this.An.clear(),this.style.removeProperty("--translate"),this.style.removeProperty("--scale"),t.forEach(t=>{this.An.has(t.id)||this.An.set(t.id,Mt("button"));const i=this.An.get(t.id);1!==t.size[0]||void 0!==t.size[1]?(i.style.gridArea=`auto / auto / span ${t.size[1]} / span ${t.size[0]||t.size[1]}`,this.#dh.set(t.id,t.size)):(i.style.removeProperty("grid-area"),this.#dh.delete(t.id)),i.dataset.id=t.id,i.setAttribute("data-scroll-through",""),this.appendChild(i)}),this.classList.toggle("grid-pan-zoom","grid"==this.En);const e=this.classList.contains("grid-cells-hidden");e&&this.classList.remove("grid-cells-hidden"),this.micrio.events.Et("grid-layout-set",this);const n=this.micrio.offsetWidth,o=this.micrio.offsetHeight,r=Math.max(0,Math.min(1,1-(i.scale??1))),a=new Map(t.map(t=>[t.id,t]));this.style.transform="",this.childNodes.forEach(t=>{const i=t,s=i.dataset.id,h=i.getBoundingClientRect(),e=s?a.get(s):void 0,c=[r/2*h.width,r/2*h.height];e&&!e.area&&(e.area=[(h.x+c[0])/n,(h.y+c[1])/o,(h.width-2*c[0])/n,(h.height-2*c[1])/o])}),this.Cn||(this.style.display="none"),e&&this.classList.add("grid-cells-hidden")}#Th(){!this.Cn||this.micrio.state.$tour||this.micrio.state.$marker||(this.classList.remove("grid-cells-hidden"),this.#ph=this.image.state.view.subscribe(this.#zh))}#Ph(){this.#ph&&this.#ph(),this.classList.add("grid-cells-hidden")}#zh=()=>{const t=this.image.camera.getXY(0,0,1);this.style.setProperty("--translate",`translate3d(${t[0]}px, ${t[1]}px, 0)`),this.style.setProperty("--scale",this.image.camera.getScale().toString()),this.dispatchEvent(new CustomEvent("update"))};#Ih(t,i){const{Ve:s}=this.micrio,h=this.kn.get(t.id);if(h.ut||s.Bh(h,this.image),t.area){const e=()=>h.camera.setArea(t.area,{direct:0==i.duration||!i.forceAreaAni&&!X(h.visible)});i.delay?yt(1e3*i.delay).then(e).then(()=>s.render()):e()}const e={duration:1e3*i.duration,timingFunction:this.#vh,limit:0};return i.noCamAni||h.camera.T||!h.ut||(t.view?h.camera.flyToView(t.view,e):i.cover?h.camera.flyToCoverView({...e,duration:0}):h.camera.flyToView([0,0,1,1],e)).catch(()=>{}),h}#Ch(t){const{Ve:i}=this.micrio;t.forEach(t=>{t.ut&&t.canvas?.Gh(),this.An.get(t.id)?.remove(),this.An.delete(t.id)}),i.render()}$n(){const t=this.micrio.$current;return t==this.image||!!t&&this.kn.has(t.id)}async reset(t,i,s){const h=this.#rh[0];return this.Sn.forEach(t=>t.camera.stop()),this.image.camera.stop(),this.Ln.set([]),await G(),s||i||!this.micrio.camera?.isZoomedOut()||this.micrio.state.$tour||this.$focussed||this.#Lh()||(t=0),this.set(this.#Dh(h)??this.#bh,{noHistory:1,duration:t,noCamAni:i,forceAni:s,horizontal:h?h.horizontal:0}).then(t=>(this.#ah.set(this.#rh.length=0),this.micrio.current.set(this.image),t))}async Pn(t,i,s){const h=t?.split("|").map(t=>t.trim()),e=h?.[0]??"",n=e?this.Sn.filter(t=>!!t.$data?.markers?.find(t=>t.tags?.includes(e))):this.Sn;return this.set(n.map(t=>{const i=t.$data?.markers?.find(t=>t.tags?.includes(e));return{id:t.id,size:[1],view:s?void 0:i?.view}}),{duration:i,horizontal:"h"==h?.[1]})}async back(t){const i=this.#rh.pop();if(!i)return;this.#ah.set(this.#rh.length),this.micrio.current.set(this.image),this.$focussed&&this.blur();const s=this.#Dh(i)??[];await this.set(s,{duration:t,noHistory:1,horizontal:i.horizontal,view:i.view})}#Dh(t){if(t?.layout?.length)return t.layout.map(t=>this.kn.has(t.id)?{id:t.id,size:t.size??[1],view:t.view}:null).filter(Boolean)}#Fh(t){this.micrio.Ve.ne=wt(this.#vh=t)}Fn(t){const i="string"==typeof t?this.Sn.find(i=>i.id==t):t;if(this.Cn&&i)if(this.An.forEach(t=>t.classList.remove("focussed")),this.An.get(i.id)?.classList.add("focussed"),"zoom"==this.Cn){const t=i.opts.area??[0,0,1,1];this.image.camera.flyToView(t,{duration:1e3*this.zn,limit:0})}else this.gridFocus(i)}async gridFocus(t,i={}){if(!t)return this.back();i.coverLimit&&(i.cover=1);const s=this.micrio;X(s.Kt).find(t=>t==this.image)||s.current.set(this.image);const h=this.$focussed;if(h==t)return;i.transition?.startsWith("slide-")||0!=i.duration&&(!h||h.canvas?.Yh()||this.xn.includes(t))||t.camera.setArea([0,0,1,1],{noDispatch:1,direct:1}),h&&this.blur(),t.camera.setCoverLimit(!!i.cover),this.#Fh("ease");const e=await(async(t,i,s,{duration:h,view:e,transition:n,noViewAni:o,exitView:r,blur:a,cover:c})=>{if(!n)return[{id:i.id,size:[1],view:e}];if("crossfade"==n&&(i.camera.setArea([0,0,1,1]),o=1),e&&o&&i.camera.setView(e,{noRender:1,noLimit:1}),!s||"crossfade"==n)return[{id:i.id,size:[1],view:e}];const l=n.startsWith("slide")||n.startsWith("swipe"),u=n.startsWith("behind"),d=l?n.endsWith("-up")?0:n.endsWith("-down")?180:n.endsWith("-left")?270:90:void 0;if(l||u){const t=i.canvas;t&&(t.zh=.9999,t.Ht=.9999)}if(n.startsWith("slide"))i.camera.setArea(Pi[d],{noDispatch:1,direct:1});else if(n.startsWith("swipe"))i.camera.setArea(Ti[d],{noDispatch:1,direct:1});else if(u){i.camera.setArea([0,0,1,1]),i.camera.setView([0,0,1,1]);const h=[{id:s.id,size:[1],view:[0,0,1,1]},{id:i.id,size:[1],view:[0,0,1,1]}];"behind-left"==n&&h.reverse(),await t.set(h,{noBlur:1,horizontal:1,coverLimit:c}).then(()=>yt(200))}if(a&&!isNaN(a)&&a>0){const i=(h=h??t.Tn??t.zn)/2,s=t.micrio.canvas.element.style;s.transition=`filter ${i}s ease`,s.filter=`blur(${a}px)`,setTimeout(()=>{s.filter="",setTimeout(()=>{s.transform="",s.transition=""},1e3*i)},1e3*i)}return n.startsWith("swipe")?[{id:s.id,size:[1],view:r??s.camera.getView(),area:Si[d]},{id:i.id,size:[1],view:e,area:[0,0,1,1]}]:[{id:i.id,size:[1],view:e}]})(this,t,h,i);return t.canvas&&(t.canvas.zIndex=3),this.In.set(t),this.set(e,{noBlur:1,duration:i.duration,forceAreaAni:"crossfade"!=i.transition,cover:!!i.cover,coverLimit:!!i.coverLimit}).then(()=>{s.events.Et("grid-focus",t),this.#Ph(),s.$current!=t&&s.current.set(t),this.image.camera.setLimit([0,0,1,1])}).catch(()=>{})}blur(){const t=this.$focussed;t&&(this.An.forEach(t=>t.classList.remove("focussed")),t.canvas&&(t.canvas.zIndex=2),this.micrio.events.Et("grid-blur"),this.In.set(void 0),this.image.camera.setLimit([0,0,1,1]),this.micrio.current.set(this.image))}action(t,i,s){Li(this,t,i,s)}async enlarge(t,i,s=i){const h=this.#rh[this.#rh.length-1]?.layout,e="cover"===this.image.$settings?.initType;if(!h?.length){const h=this.#_h.Sn;return h.length?this.set(h.map((h,e)=>({id:h.id,size:e==t?[i,s]:[1]})),{noHistory:1,keepGrid:1,duration:.5,cover:e}):this.xn}const n=h.map((h,e)=>({id:h.id,size:e==t?[i,s]:h.size??[1]}));return this.set(n,{noHistory:1,keepGrid:1,duration:.5,cover:e})}On(t,i){const s=this.micrio.$current;if(s&&this.Sn.some(t=>t===s))return s;if("grid"==this.En)return this.image;const[h,e]=this.image.camera.getCoo(t,i,1);return this.xn.find(t=>t.opts.area&&nt(h,e,t.opts.area))}};customElements.define(zi.tag,zi);var Di=class{#Zs;constructor(t){this.#Zs=t}hook(){document.addEventListener("keydown",this.#Qs)}unhook(){document.removeEventListener("keydown",this.#Qs)}#Qs=t=>{if(this.#Zs.Ge||this.#Zs.Xe||!this.#Zs.Re.$current?.camera)return;if(zi.Dn&&(t.key.startsWith("Arrow")||"Enter"==t.key||" "==t.key||"Escape"==t.key))return;const i=this.#Zs.Re.$current.camera,s=this.#Zs.Re.offsetWidth/2,h=this.#Zs.Re.offsetHeight/2;let e=0,n=0;switch(t.key){case"ArrowUp":n-=h;break;case"ArrowDown":n+=h;break;case"ArrowLeft":e-=s;break;case"ArrowRight":e+=s;break;case"+":case"=":i.zoom(-200,150).catch(()=>{});break;case"-":case"_":i.zoom(200,150).catch(()=>{});break;default:return}t.preventDefault(),t.stopPropagation(),0==e&&0==n||i.pan(e,n,150)}},Fi=class{#Zs;constructor(t){this.#Zs=t}hookTap(){this.#Zs.He.addEventListener("touchstart",this.#$h)}unhookTap(){this.#Zs.He.removeEventListener("touchstart",this.#$h)}hookClick(){this.#Zs.He.addEventListener("dblclick",this.#Oh)}unhookClick(){this.#Zs.He.removeEventListener("dblclick",this.#Oh)}#$h=t=>{if(!(Et.hasTouch&&t instanceof TouchEvent))return;const i=performance.now();1==t.touches.length&&250>i-this.#Zs.Ye.Vn.Bn&&(t.stopPropagation(),t.preventDefault(),this.#Oh(t)),this.#Zs.Ye.Vn.Bn=i};#Oh=t=>{const i=t instanceof TouchEvent?t.touches[0]:t;this.#Zs.si({x:i.clientX,y:i.clientY})?.camera.zoom(-300,500,i.clientX,i.clientY,1,!this.#Zs.Re.$current?.album).catch(()=>{})}},$i=class{He;enabled=H(0);get $enabled(){return X(this.enabled)}#Us=0;Ge=0;Xe=0;rn=0;hn=0;Ne=0;sn=1;Qe=Et.hasTouch&&"ontouchstart"in self;nn=0;#Bh;#Vh;Ye={je:{Ze:void 0,Bs:[0,0,0],We:void 0},Vn:{Bn:0},hs:{We:void 0,Ke:0,qe:0}};Je;tn=new Map;Ue;Re;#Ks;#Rh;#Nh;#Hh;#Xh;#Gh;#jh;constructor(t){this.Re=t,this.He=t.canvas.element,this.#Ks=new pi(this),this.#Rh=new Mi(this,this.#Ks),this.#Nh=new _i(this,this.#Ks),this.#Hh=new yi(this),this.#Xh=new bi(this),this.#Gh=new Di(this),this.#jh=new Fi(this),this.enabled.subscribe(t=>{t?this.hook():this.unhook()}),t.Kt.subscribe(t=>this.#Vh=t),t.current.subscribe(t=>{t&&!this.#Bh&&(this.#Bh=t.$settings,!t.error&&this.#Bh.hookEvents&&this.enabled.set(1))})}get isNavigating(){return this.Ge||this.Xe||this.rn}Et(t,i){this.Re.dispatchEvent(new CustomEvent(t,void 0!==i?{detail:i}:void 0))}si(t){if(!this.#Vh)return;const i=this.Re.offsetWidth,s=this.Re.offsetHeight,h=Math.max(0,Math.min(1,t.x/i)),e=Math.max(0,Math.min(1,t.y/s)),n=this.#Vh.filter(t=>!t.Rt&&!t.Nt),o=this.Re.Dh.find(t=>t.grid);if(o)return o.grid?.On(t.x,t.y)??this.Re.$current;const r=1==n.length?n[0]:n.find(({grid:t,opts:{area:i}})=>t?0:i?!(h<i[0]||h>i[0]+i[2]||e<i[1]||e>i[1]+i[3]):0);return r&&!r.grid?r:this.Re.$current}Rn(){return this.#Vh}hook(){if(this.#Us)return;this.#Us=1;const t=this.#Bh;t&&(this.Ne=!!t.twoFingerPan,this.Ne?this.Re.setAttribute("data-can-pan",""):this.Re.removeAttribute("data-can-pan"),t?.hookKeys&&this.hookKeys(),t.hookDrag&&this.hookDrag(),t.noZoom||this.hookZoom())}unhook(){this.#Us&&(this.#Us=0,this.tn.clear(),this.unhookDrag(),this.unhookZoom(),this.unhookKeys())}hookKeys(){this.#Gh.hook()}unhookKeys(){this.#Gh.unhook()}hookZoom(){const t=this.#Bh;this.hn=!!t?.controlZoom,t&&!t.hookPinch||this.hookPinch(),(!t||t.hookScroll||this.hn)&&this.hookScroll(),this.Re.canvas.$isMobile?this.#jh.hookTap():this.#jh.hookClick()}unhookZoom(){this.unhookPinch(),this.unhookScroll(),this.Re.canvas.$isMobile?this.#jh.unhookTap():this.#jh.unhookClick()}get scrollHooked(){return this.#Xh.hooked}hookScroll(){this.#Xh.hook()}unhookScroll(){this.#Xh.unhook()}hookPinch(){Et.iOS&&this.Qe?this.#Rh.hook():this.#Nh.hook(),this.#Hh.hook()}unhookPinch(){Et.iOS&&this.Qe?this.#Rh.unhook():this.#Nh.unhook(),this.#Hh.unhook()}hookDrag(){this.#Ks.hook()}unhookDrag(){this.#Ks.unhook()}},Oi=class t{Nn;Sn;#Yh=null;Hn;#Wh=0;#Uh=0;constructor(t,i,s){this.Hn=t;const h="book3d"==s.type;this.Nn=h?{...s,isSpreads:1,coverPages:1}:s;const e="switch"==s.type,n=this.Nn.isSpreads,o=n?this.Nn.coverPages??0:0;e&&(this.#Uh=Math.max(...t.map(t=>t.height)),this.#Wh=Math.max(...t.map(t=>t.width*(n?2:1)))),this.Sn=t.map((h,r)=>{const a={...s.settings};void 0!==s.archiveLayerOffset&&(a.gallery={...a.gallery||{},archive:1,archiveLayerOffset:s.archiveLayerOffset});const c={},l=N.u(h.id)?.data;if(e){let i;c.isEmbed=1,c.useParentCamera=1,i=n?0>r-o||r==t.length-1&&(r-o)%2==0?[.25,0,.5,1]:(r-o)%2==0?[0,0,.5,1]:[.5,0,.5,1]:[0,0,1,1];let s=((t,i,s,h,e)=>{const[n,o,r,a]=t,c=r*i,l=a*s,u=Math.min(c/h,l/e),d=h*u/i,f=e*u/s;return[n+r/2-d/2,o+a/2-f/2,d,f]})(i,this.#Wh,this.#Uh,h.width,h.height);n&&(.5===i[0]?s[0]=.5:0===i[0]&&(s[0]=.5-s[2])),c.area=s}else c.area=[r,0,1,1];return new St(i,{id:h.id,info:h,settings:a,data:l},c)})}static Xn(i,s){if("sc:Manifest"===i["@type"]||i.sequences)throw new y("IIIF_V2_UNSUPPORTED",{displayMessage:"Only IIIF Presentation API 3 manifests are supported"});if("Manifest"===i.type){const h=i.items?.flatMap(t=>t.items?.[0]?.items?.[0]?.body)?.filter(t=>t?.service?.[0]?.id)??[];if(!h.length)throw new y("NO_CANVASES",{displayMessage:"No valid IIIF canvases found in the manifest"});const e=h.map(t=>({id:t.service[0].id,path:t.service[0].id.replace(/\/[^/]*$/,""),version:"",width:t.width,height:t.height,isWebP:"image/webp"===t.format,isPng:"image/png"===t.format,isIIIF:1}));return 1===e.length?null:new t(e,s,{type:"swipe",settings:{}})}return null}static Gn(i,s,h,e){const n=e?.basePath??h.$current?.Ft??"https://b.micr.io/",o=i.map(t=>({id:t.micrioId??t.id,path:n,version:"",width:t.width,height:t.height,isDeepZoom:t.isDeepZoom,isPng:t.isPng,isWebP:t.isWebP}));return new t(o,s,{type:"swipe",startId:e?.startId,settings:{skipMeta:1,noLogo:1}})}static async jn(i,s,h){const e=N._(i);if(!e)return null;const n=h?.path??N.M()?.baseUrl??"https://r2.micr.io/";e.archive&&await At.load(n,"g/"+e.archive,h?.onProgress);const o={...e,startId:h?.startId??e.startId};if(e.settings&&(o.settings={...e.settings}),"grid"===e.type&&e.archive){const t=o.grid?.clickable??o.settings?.grid?.clickable,i={zoomLimit:15,minimap:0,...o.settings??{}};t&&void 0===i.hookKeys&&(i.hookKeys=1),o.settings=i}const r=e.archive?await t.#Zh(e.archive.split(".")[0],n):void 0;r&&(o.archiveLayerOffset=r.delta);const a=o.sort;return a&&r?.images&&r.images.sort(t.#qh(a)),new t((r?.images??[]).map(t=>({...t,path:n,version:""})),s,{...o,type:o.type??"swipe"})}static#Zh=async(t,i)=>At.get(`${i}${t}.json`).then(t=>(t.images.forEach(t=>b.set(`${i}${t.id}/info.json`,t)),t));static#qh(t){return"random"==t?()=>Math.random()-.5:"name"==t?(t,i)=>t.title&&i.title?t.title<i.title?-1:t.title>i.title?1:0:0:"-name"==t?(t,i)=>t.title&&i.title?t.title<i.title?1:t.title>i.title?-1:0:0:"-created"==t?(t,i)=>t.created&&i.created?t.created<i.created?1:t.created>i.created?-1:0:0:(t,i)=>t.created&&i.created?t.created<i.created?-1:t.created>i.created?1:0:0}Yn(){const t=!!this.Nn.isSpreads,i=this.Nn.coverPages??0,s=[];if(t){let t=0;for(;t<Math.min(i,this.Sn.length);t++)s.push([t]);for(;t<this.Sn.length;t+=2){const i=[t];t+1<this.Sn.length&&i.push(t+1),s.push(i)}}else for(let h=0;h<this.Sn.length;h++)s.push([h]);return{pages:s,numPages:s.length}}Wn(t){if(this.#Yh=t,"grid"==this.Nn.type){const i=t.engine.micrio;t.grid=Mt(zi.tag,{setProps:{micrio:i,image:t,gallery:this}})}"book3d"==this.Nn.type&&(t.engine.le=1)}async Un(t){const i="switch"==this.Nn.type,s={view:[0,0,1,1],gallery:{...this.Nn},pinchZoomOutLimit:i?1:void 0};this.Nn.settings&&Object.assign(s,this.Nn.settings);const h=N.M()?.baseUrl??"https://r2.micr.io/";await t.open({id:"",info:{id:"",path:h,version:"",width:i?this.#Wh:t.offsetWidth*t.canvas.getRatio(),height:i?this.#Uh:t.offsetHeight*t.canvas.getRatio()},settings:s},{gallery:this})}gotoId=t=>this.goto(this.Sn.findIndex(i=>i.id==t));goto=t=>this.#Yh?.album?.goto(t)??Promise.resolve(this.Sn[t]);next=()=>this.#Yh?.album?.next();prev=()=>this.#Yh?.album?.prev()},Bi=navigator?.language??"en-EN",Vi="Intl"in self&&Intl.DisplayNames?new Intl.DisplayNames([Bi],{type:"language"}):void 0,Ri=["ar","dv","fa","he","iw","ku","ps","sd","syr","ug","ur","yi"],Ni=["en","nl","de"],Hi={Zn:["Close","Sluit","Schließen"],qn:["Zoom in","Zoom in","Vergrößern"],Jn:["Zoom out","Zoom uit","Verkleinern"],Kn:["Toggle fullscreen","Volledig scherm aan / uit","Vollbild umschalten"],Qn:["Switch language","Kies taal","Sprache wechseln"],io:["Share","Deel","Teilen"],so:["Mute audio","Geluid uit","Ton stummschalten"],ho:["Unmute audio","Geluid aan","Ton einschalten"],eo:["Close this marker","Sluit deze marker","Diesen Marker schließen"],no:["Next step","Volgende stap","Nächster Schritt"],oo:["Previous step","Vorige stap","Vorheriger Schritt"],ro:["Stop this tour","Stop deze tour","Tour beenden"],ao:["Minimize","Minimaliseer","Minimieren"],co:["Play","Start","Abspielen"],lo:["Pause","Pauzeer","Pause"],uo:["Stop","Stop","Stopp"],do:["Toggle subtitles","Ondertitels aan / uit","Untertitel umschalten"],fo:["Previous image","Vorige afbeelding","Vorheriges Bild"],po:["Next image","Volgende afbeelding","Nächstes Bild"],mo:["Rotate view left","Draai beeld naar links","Ansicht nach links drehen"],wo:["Rotate view right","Draai beeld naar rechts","Ansicht nach rechts drehen"],vo:["Toggle menu","Menu openen / sluiten","Menü umschalten"],Mo:["Go this way","Ga deze richting","Diesen Weg gehen"],_o:["Tours","Tours","Touren"],yo:["Marker tours","Marker tours","Marker-Touren"],bo:["Video tours","Video tours","Video-Touren"]},Xi={},Gi=Object.keys(Hi);for(let pe=0;Ni.length>pe;pe++){const t={};for(const i of Gi)t[i]=Hi[i][pe];Xi[Ni[pe]]=t}var ji=H(Xi.en);function Yi(t){if(!t)return;const i=t.split(",").map(t=>t.trim());return i[0]?{micrioId:i[0],markerId:i[1]||void 0,follows:!!i[2]&&"false"!==i[2]}:void 0}var Wi=new Map;function Ui(t){return Wi.get(t)?.secondary}function Zi(t){for(const i of Wi.values())if(i.secondary===t)return 1;return 0}async function qi(t,i,s,h){if(Wi.has(i))return;if(i.Rt||i.grid||Zi(i))return;const e=await N.l(s.micrioId);if(!e)return;const n=new St(t.Ve,e);t.Dh.push(n),t.Ve.Pe(n),n.Ht=0,0!=h?.isPassive&&(n.Nt=1);const o=t.canvas.viewport.portrait;i.camera.setArea(o?[0,0,1,.5]:[0,0,.5,1]),n.camera.setArea(o?[0,1,1,0]:[1,0,0,1],{direct:1}),n.camera.setArea(o?[0,.5,1,.5]:[.5,0,.5,1]);let r=null;0!=h?.isPassive&&(r=i.state.view.subscribe(t=>{t&&!n.camera.T&&n.camera.setView(t,{noLimit:1})}));let a=null;s.markerId&&(a=n.data.subscribe(t=>{if(!t)return;const i=t.markers?.find(t=>t.id===s.markerId);i?.view&&n.camera.flyToView(i.view,{isJump:1}),a?.()})),Wi.set(i,{secondary:n,unsub:r,unsubData:a}),t.events.Et("splitscreen-start",n)}function Ji(t,i,s){const h=Wi.get(i);if(!h)return;Wi.delete(i),h.unsub?.(),h.unsubData?.();const e=t.canvas.viewport.portrait;h.secondary.camera.setArea(e?[0,1,1,0]:[1,0,0,1],{direct:1}),i.camera.setArea([0,0,1,1]),s?.keepSecondaryCanvas||setTimeout(()=>t.Ve.Te(h.secondary),400),t.events.Et("splitscreen-stop",h.secondary)}var Ki=class{el;o;to;ko=1;constructor(t,i={}){this.el=t,this.o={delay:4e3,onIdle(){},onActive(){},shouldIdle:()=>1,...i}}get idle(){return this.el.hasAttribute("data-idle")}get enabled(){return this.ko}set enabled(t){this.ko=t,t||this.pause()}activity(){this.idle&&(this.el.removeAttribute("data-idle"),this.o.onActive()),this.#Jh()}show(){this.idle&&(this.el.removeAttribute("data-idle"),this.o.onActive())}hide(){this.idle||(this.el.setAttribute("data-idle",""),this.o.onIdle()),this.pause()}pause(){clearTimeout(this.to)}resume(){this.#Jh()}destroy(){clearTimeout(this.to)}#Jh(){clearTimeout(this.to),this.ko&&(this.to=window.setTimeout(()=>{this.o.shouldIdle()?this.idle||(this.el.setAttribute("data-idle",""),this.o.onIdle()):this.#Jh()},this.o.delay))}},Qi=class extends xi{static get observedAttributes(){return["id","muted","data-limited","lang"]}static VERSION;static tag="micr-io";#Kh=0;Dh=[];current=H();Kt=H([]);#Qh;get $current(){return this.#Qh}get camera(){return this.#Qh?.camera}canvas=new ci(this);events=new $i(this);state=new ct.Main;It=[];Ct=[];barebone=H(0);qt=new ai(this);Ve=new ei(this);xo;defaultSettings;xe=H(1);Qt=H(0);Po=H("1"==localStorage.getItem(E));Wt=H();spaceData;bundleTours;gallery;Se=0;#te;#ie;#se=0;attributeChangedCallback(t,i,s){switch(t){case"id":if(!this.isConnected||!s)return;this.#Kh?this.open(s):this.#he();break;case"muted":X(this.Po)!==this.hasAttribute("muted")&&this.Po.set(this.hasAttribute("muted"));break;case"data-limited":this.Ve?.yh&&this.$current?.canvas&&(this.$current.canvas.gh=!!s);break;case"lang":{let t=X(this.Wt);if(t!=s){this.Wt.set(s);const i=s.split("-")[0];ji.set(Xi[s]??Xi[i]??Xi.en),s&&(h=s,Ri.some(t=>h===t||h.startsWith(t+"-"))?this.setAttribute("dir","rtl"):this.removeAttribute("dir")),t&&this.events.Et("lang-switch",s)}break}}var h}ln(){this.Mn("micrio",this),this.canvas.place(),this.id&&!this.#Kh&&this.#he(),"muted"in this||(Object.defineProperty(this,"muted",{get(){return X(this.Po)},set(t){t?this.setAttribute("muted",""):this.removeAttribute("muted")}}),this.mn(this.Po,t=>{this.muted=t,t?(localStorage.setItem(E,"1"),this.events.Et("audio-mute")):(localStorage.removeItem(E),this.events.Et("audio-unmute"))}));const t=()=>{const t=X(this.Kt).filter(t=>t.id),i=this.Ve.le?this.#Qh:1===t.length?t[0]:this.#Qh;this.toggleAttribute("data-zoomed",!!i?.camera&&!!i.ut&&!i.camera.isZoomedOut())};this.mn(this.current,i=>{this.#Qh=i,t()}),this.mn(this.Kt,()=>t());const i=()=>t();this.Ct.push(i),this.dn(()=>{const t=this.Ct.indexOf(i);0>t||this.Ct.splice(t,1)});let s=0;const h=this.xe.subscribe(t=>{if(t)return;h(),this.setAttribute("data-loaded",""),this.mn(this.Qt,t=>{t?this.setAttribute("data-switching",""):(s||G().then(()=>this.events.Et("show",this)),s=1,this.removeAttribute("data-switching"))});const i=this.querySelector("img.preview");i&&setTimeout(()=>i.remove(),500)});this.#te=new Ki(this,{shouldIdle:()=>{if(document.activeElement&&this.contains(document.activeElement))return 0;const t=this.querySelectorAll("button, micrio-button");for(const i of t)if(i.matches(":hover"))return 0;return this.querySelector("micrio-gallery[data-dragging]")?0:1}}),this.#ie=()=>this.#te.activity();for(const e of["mousemove","pointerdown","wheel","focusin"])this.addEventListener(e,this.#ie,{passive:1});window.addEventListener("keydown",this.#ie),this.#te.activity()}addEventListener(t,i,s){super.addEventListener(t,i,s)}removeEventListener(t,i,s){super.removeEventListener(t,i,s)}destroy(){if(this.current.set(void 0),this.events.enabled.set(0),this.canvas.unhook(),this.Ve.be(),this.xo&&this.xo.remove(),delete this.xo,this.qt.Fe(1),this.#te?.destroy(),this.#ie){for(const t of["mousemove","pointerdown","wheel","focusin"])this.removeEventListener(t,this.#ie);window.removeEventListener("keydown",this.#ie),this.#ie=void 0}this.#Kh=0}async#ee(t){const i=await x(t).catch(t=>{this.#ne(t)});if(!i)return;let s;try{s=Oi.Xn(i,this.Ve)}catch(o){return void this.#ne(o)}if(s)return void s.Un(this);let h=i["@id"]||i.id||t.replace(/info.json$/,""),e=i.width,n=i.height;if("Manifest"===i.type){const t=i.items?.[0]?.items?.[0]?.items?.[0]?.body,s=t?.service?.[0];s?.id&&(h=s.id,e=t.width,n=t.height,i.preferredFormats=s.preferredFormats)}return{id:h,info:{id:h,path:h.replace(/\/[^/]*$/,""),width:e,height:n,version:A,isIIIF:1,is360:""==this.dataset.is360,tiles:i.tiles,preferredFormats:i.preferredFormats}}}async#he(){if(this.#Kh)return;this.#Kh=1,await G();const i=this.#oe();if(i.settings||(i.settings={}),this.defaultSettings&&t(this.defaultSettings,i.settings),i.settings.noLogo||this.#re(!!i.settings.noUI,0),i.id&&T(i.id)&&!this.hasAttribute("width")&&!this.hasAttribute("height")){const t=await N.l(i.id).catch(()=>{});if(t&&t.info?.albumId){const s=await Oi.jn(t.info.albumId,this.Ve,{startId:i.id,onProgress:t=>this.xo?.At?.({loadingProgress:t})}).catch(()=>null);if(s)return void s.Un(this)}}if(i.id&&i.id.startsWith("http")){const t=await this.#ee(i.id);if(!t)return;return t.settings=i.settings,void this.open(t)}this.Se=!!i.settings.keepRendering,this.events.Et("print",i);const s=()=>{i.id&&this.open(i.id)};if(void 0!==i.settings.lazyload&&"IntersectionObserver"in window){const t=new IntersectionObserver(i=>{i[0]&&i[0].isIntersecting&&(t.unobserve(this),s())},{rootMargin:100*i.settings.lazyload+"% 0px"});t.observe(this)}else i.id&&Q.request(s)}#re(t,i){this.xo?this.xo.At?.({noHTML:t,noLogo:i}):this.xo=Mt("micrio-main",{setProps:{noHTML:t,noLogo:i},parent:this})}#ne(t){const i=(s=t??"An unknown error has occurred")instanceof y?s.displayMessage:(s instanceof Error?s.message:s)??"An unknown error has occurred";var s;console.error("Error:",i+(t instanceof y?` (${t.code}: ${t.message})`:"")),this.xo||this.#re(0,0),this.xo?.At?.({error:i}),this.xe.set(0)}async open(i,s={}){this.#Kh||await this.#he();const h=this.#oe();let e;if("string"==typeof i&&i.startsWith("http")){const t=await this.#ee(i);if(!t)return this.$current;e=t}else if("string"==typeof i){if(this.gallery)return await this.gallery.gotoId(i)??this.$current;if(e=await N.l(i),!e)return this.#ne('Image with id "'+i+'" not found, published, or embeddable.'),this.$current}else e=i;if(e.settings||(e.settings={}),h.settings?.gallery?.archive&&!/\.\d+$/.test(h.settings.gallery.archive)&&delete h.settings.gallery.archive,"string"==typeof i&&t(h.settings,e.settings),this.defaultSettings&&t(this.defaultSettings,e.settings),e.settings?.gallery?.settings&&t(e.settings.gallery.settings,e.settings),t(I,e.settings,{noOverwrite:1}),this.$current&&e.id==this.$current?.id)return this.$current;this.$current&&!s.gridView&&(t=>{for(const i of[...Wi.keys()])Ji(t,i)})(this),!s.gridView&&this.$current&&this.Qt.set(1),this.#re(!!e.settings.noUI,!!e.settings.noLogo);let n=this.Dh.find(t=>e.id&&t.id==e.id),o=0;const r=this.Dh[0]?.grid;if(!n&&r){const t=e.id?r.Sn.find(t=>t.id==e.id):void 0;o=!!t,n=e.id?t:this.Dh[0],o&&!r.$n()&&this.current.set(this.Dh[0])}if(!n){if(this.Dh.length){const t=this.Dh[0];e.info.path=t.Ft,e.info.lang=this.lang}this.Dh.push(n=new St(this.Ve,e))}if(s.gallery&&(s.gallery.Wn(n),this.gallery=s.gallery),s.startView&&(n.state.view.set(e.settings.view=s.startView),n.ut&&n.engine.ready&&n.camera.setView(e.settings.view,{noRender:1})),this.lang||(this.lang="en"),!this.Ve.le&&(this.Ve.pe(),!this.qt.gl))try{this.qt.Be()}catch(a){return this.#ne(a),n}if(!this.#se){switch(this.canvas.hook(),n.$settings?.theme){case"light":this.setAttribute("data-light-mode","");break;case"os":this.setAttribute("data-auto-scheme","")}this.#se=1}G().then(()=>this.dispatchEvent(new CustomEvent("load",{detail:n})));const a=this.Ve;return a.Xh=s.vector?.direction??0,a.Vh=s.vector?.distanceX??0,a.Rh=s.vector?.distanceY??0,a.ue=!s.vector,!o||s.gridView&&r?.xn.find(t=>t.id==e.id)?this.current.set(n):r?.gridFocus(n,{view:e.settings?.view}).then(()=>this.current.set(n)),n.Rt&&this.xe.set(0),!n.$settings.micrioSplitLink||n.Rt||n.grid||G().then(()=>{this.$current===n&&qi(this,n,{micrioId:n.$settings.micrioSplitLink},{isPassive:!n.$settings.noFollow})}),n}close(t){this.Ve.Te(t)}#oe(){const t={gallery:{}},i={settings:t,id:this.id},s=(t,i,s)=>{const h=i.split(".");for(let e=0;e<h.length-1;e++)t=t[h[e]];t[h[h.length-1]]=s},h=(h,e)=>{for(const n of Object.keys(h)){const o=h[n],r=this.getAttribute(n),a=o.f||n.replace("data-",""),c=e(r,o);void 0!==c&&s(o.r?i:t,a,c)}};return h(L,t=>t||void 0),h(z,(t,i)=>{const s=null!=t&&(""===t||"true"===t);if(s||"false"===t)return i.n?!s:!!s}),h(D,(t,i)=>{if(void 0!==i.dN&&null==t&&(t=i.dN),null==t)return;const s=Number(t);return isNaN(s)?void 0:s}),h(F,t=>null!=t?t.split(",").map(Number):void 0),t.static&&(t.noUI=t.skipMeta=1,t.hookEvents=0),i}get lang(){return X(this.Wt)}set lang(t){this.setAttribute("lang",t)}};function ts(t,i){return _t("svg",{...i,attrs:{...i?.attrs,viewBox:`0 0 ${t[0]} ${t[1]}`,fill:"currentColor"},children:[_t("path",{attrs:{d:t[2]}}),...i?.children??[]]})}var is={down:[384,512,"M169.4 502.6c12.5 12.5 32.8 12.5 45.3 0l160-160c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 402.7 224 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 370.7-105.4-105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160z"],prev:[512,512,"M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 288 480 288c17.7 0 32-14.3 32-32s-14.3-32-32-32l-370.7 0 105.4-105.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z"],next:[512,512,"M502.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l370.7 0-105.4 105.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160z"],up:[384,512,"M214.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 109.3 160 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-370.7 105.4 105.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160z"],rotateLeft:[512,512,"M125.7 160l50.3 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L48 224c-17.7 0-32-14.3-32-32L16 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 51.2L97.6 97.6c87.5-87.5 229.3-87.5 316.8 0s87.5 229.3 0 316.8s-229.3 87.5-316.8 0c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0c62.5 62.5 163.8 62.5 226.3 0s62.5-163.8 0-226.3s-163.8-62.5-226.3 0L125.7 160z"],rotateRight:[512,512,"M386.3 160L336 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-128c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 51.2L414.4 97.6c-87.5-87.5-229.3-87.5-316.8 0s-87.5 229.3 0 316.8s229.3 87.5 316.8 0c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0c-62.5 62.5-163.8 62.5-226.3 0s-62.5-163.8 0-226.3s163.8-62.5 226.3 0L386.3 160z"],menu:[448,512,"M0 96C0 78.3 14.3 64 32 64l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 128C14.3 128 0 113.7 0 96zM0 256c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 288c-17.7 0-32-14.3-32-32zM448 416c0 17.7-14.3 32-32 32L32 448c-17.7 0-32-14.3-32-32s14.3-32 32-32l384 0c17.7 0 32 14.3 32 32z"],chevronDown:[448,512,"M201.4 406.6c12.5 12.5 32.8 12.5 45.3 0l192-192c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 338.7 54.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l192 192z"],error:[512,512,"M256 512a256 256 0 1 1 0-512 256 256 0 1 1 0 512zm0-192a32 32 0 1 0 0 64 32 32 0 1 0 0-64zm0-192c-18.2 0-32.7 15.5-31.4 33.7l7.4 104c.9 12.6 11.4 22.3 23.9 22.3 12.6 0 23-9.7 23.9-22.3l7.4-104c1.3-18.2-13.1-33.7-31.4-33.7z"],subtitles:[512,512,"M0 128C0 92.7 28.7 64 64 64l384 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L64 448c-35.3 0-64-28.7-64-64L0 128zm152 80l32 0c4.4 0 8 3.6 8 8 0 13.3 10.7 24 24 24s24-10.7 24-24c0-30.9-25.1-56-56-56l-32 0c-30.9 0-56 25.1-56 56l0 80c0 30.9 25.1 56 56 56l32 0c30.9 0 56-25.1 56-56 0-13.3-10.7-24-24-24s-24 10.7-24 24c0 4.4-3.6 8-8 8l-32 0c-4.4 0-8-3.6-8-8l0-80c0-4.4 3.6-8 8-8zm168 8c0-4.4 3.6-8 8-8l32 0c4.4 0 8 3.6 8 8 0 13.3 10.7 24 24 24s24-10.7 24-24c0-30.9-25.1-56-56-56l-32 0c-30.9 0-56 25.1-56 56l0 80c0 30.9 25.1 56 56 56l32 0c30.9 0 56-25.1 56-56 0-13.3-10.7-24-24-24s-24 10.7-24 24c0 4.4-3.6 8-8 8l-32 0c-4.4 0-8-3.6-8-8l0-80z"],subtitlesOff:[512,512,"M0 128C0 92.7 28.7 64 64 64l384 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L64 448c-35.3 0-64-28.7-64-64L0 128zm152 80l32 0c4.4 0 8 3.6 8 8 0 13.3 10.7 24 24 24s24-10.7 24-24c0-30.9-25.1-56-56-56l-32 0c-30.9 0-56 25.1-56 56l0 80c0 30.9 25.1 56 56 56l32 0c30.9 0 56-25.1 56-56 0-13.3-10.7-24-24-24s-24 10.7-24 24c0 4.4-3.6 8-8 8l-32 0c-4.4 0-8-3.6-8-8l0-80c0-4.4 3.6-8 8-8zm168 8c0-4.4 3.6-8 8-8l32 0c4.4 0 8 3.6 8 8 0 13.3 10.7 24 24 24s24-10.7 24-24c0-30.9-25.1-56-56-56l-32 0c-30.9 0-56 25.1-56 56l0 80c0 30.9 25.1 56 56 56l32 0c30.9 0 56-25.1 56-56 0-13.3-10.7-24-24-24s-24 10.7-24 24c0 4.4-3.6 8-8 8l-32 0c-4.4 0-8-3.6-8-8l0-80z"],fullscreenLeave:[448,512,"M160 64c0-17.7-14.3-32-32-32S96 46.3 96 64l0 64-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c17.7 0 32-14.3 32-32l0-96zM32 320c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0 0 64c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96c0-17.7-14.3-32-32-32l-96 0zM352 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 96c0 17.7 14.3 32 32 32l96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0 0-64zM320 320c-17.7 0-32 14.3-32 32l0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64 64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 0z"],ellipsisVertical:[128,512,"M64 144a56 56 0 1 1 0-112 56 56 0 1 1 0 112zm0 224c30.9 0 56 25.1 56 56s-25.1 56-56 56-56-25.1-56-56 25.1-56 56-56zm56-112c0 30.9-25.1 56-56 56s-56-25.1-56-56 25.1-56 56-56 56 25.1 56 56z"],fullscreenEnter:[448,512,"M32 32C14.3 32 0 46.3 0 64l0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64 64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 32zM64 352c0-17.7-14.3-32-32-32S0 334.3 0 352l0 96c0 17.7 14.3 32 32 32l96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0 0-64zM320 32c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0 0 64c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96c0-17.7-14.3-32-32-32l-96 0zM448 352c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c17.7 0 32-14.3 32-32l0-96z"],linkExt:[512,512,"M320 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l82.7 0-201.4 201.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L448 109.3 448 192c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160c0-17.7-14.3-32-32-32L320 0zM80 96C35.8 96 0 131.8 0 176L0 432c0 44.2 35.8 80 80 80l256 0c44.2 0 80-35.8 80-80l0-80c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 80c0 8.8-7.2 16-16 16L80 448c-8.8 0-16-7.2-16-16l0-256c0-8.8 7.2-16 16-16l80 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L80 96z"],a11y:[512,512,"M351.9 280l-190.9 0c2.9 64.5 17.2 123.9 37.5 167.4 11.4 24.5 23.7 41.8 35.1 52.4 11.2 10.5 18.9 12.2 22.9 12.2s11.7-1.7 22.9-12.2c11.4-10.6 23.7-28 35.1-52.4 20.3-43.5 34.6-102.9 37.5-167.4zM160.9 232l190.9 0C349 167.5 334.7 108.1 314.4 64.6 303 40.2 290.7 22.8 279.3 12.2 268.1 1.7 260.4 0 256.4 0s-11.7 1.7-22.9 12.2c-11.4 10.6-23.7 28-35.1 52.4-20.3 43.5-34.6 102.9-37.5 167.4zm-48 0C116.4 146.4 138.5 66.9 170.8 14.7 78.7 47.3 10.9 131.2 1.5 232l111.4 0zM1.5 280c9.4 100.8 77.2 184.7 169.3 217.3-32.3-52.2-54.4-131.7-57.9-217.3L1.5 280zm398.4 0c-3.5 85.6-25.6 165.1-57.9 217.3 92.1-32.7 159.9-116.5 169.3-217.3l-111.4 0zm111.4-48C501.9 131.2 434.1 47.3 342 14.7 374.3 66.9 396.4 146.4 399.9 232l111.4 0z"],image:[448,512,"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm64 80a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM272 224c8.4 0 16.1 4.4 20.5 11.5l88 144c4.5 7.4 4.7 16.7 .5 24.3S368.7 416 360 416L88 416c-8.9 0-17.2-5-21.3-12.9s-3.5-17.5 1.6-24.8l56-80c4.5-6.4 11.8-10.2 19.7-10.2s15.2 3.8 19.7 10.2l26.4 37.8 61.4-100.5c4.4-7.1 12.1-11.5 20.5-11.5z"],layerGroup:[512,512,"M232.5 5.2c14.9-6.9 32.1-6.9 47 0l218.6 101c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L13.9 149.8C5.4 145.8 0 137.3 0 128s5.4-17.9 13.9-21.8L232.5 5.2zM48.1 218.4l164.3 75.9c27.7 12.8 59.6 12.8 87.3 0l164.3-75.9 34.1 15.8c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L13.9 277.8C5.4 273.8 0 265.3 0 256s5.4-17.9 13.9-21.8l34.1-15.8zM13.9 362.2l34.1-15.8 164.3 75.9c27.7 12.8 59.6 12.8 87.3 0l164.3-75.9 34.1 15.8c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L13.9 405.8C5.4 401.8 0 393.3 0 384s5.4-17.9 13.9-21.8z"],link:[576,512,"M419.5 96c-16.6 0-32.7 4.5-46.8 12.7-15.8-16-34.2-29.4-54.5-39.5 28.2-24 64.1-37.2 101.3-37.2 86.4 0 156.5 70 156.5 156.5 0 41.5-16.5 81.3-45.8 110.6l-71.1 71.1c-29.3 29.3-69.1 45.8-110.6 45.8-86.4 0-156.5-70-156.5-156.5 0-1.5 0-3 .1-4.5 .5-17.7 15.2-31.6 32.9-31.1s31.6 15.2 31.1 32.9c0 .9 0 1.8 0 2.6 0 51.1 41.4 92.5 92.5 92.5 24.5 0 48-9.7 65.4-27.1l71.1-71.1c17.3-17.3 27.1-40.9 27.1-65.4 0-51.1-41.4-92.5-92.5-92.5zM275.2 173.3c-1.9-.8-3.8-1.9-5.5-3.1-12.6-6.5-27-10.2-42.1-10.2-24.5 0-48 9.7-65.4 27.1L91.1 258.2c-17.3 17.3-27.1 40.9-27.1 65.4 0 51.1 41.4 92.5 92.5 92.5 16.5 0 32.6-4.4 46.7-12.6 15.8 16 34.2 29.4 54.6 39.5-28.2 23.9-64 37.2-101.3 37.2-86.4 0-156.5-70-156.5-156.5 0-41.5 16.5-81.3 45.8-110.6l71.1-71.1c29.3-29.3 69.1-45.8 110.6-45.8 86.6 0 156.5 70.6 156.5 156.9 0 1.3 0 2.6 0 3.9-.4 17.7-15.1 31.6-32.8 31.2s-31.6-15.1-31.2-32.8c0-.8 0-1.5 0-2.3 0-33.7-18-63.3-44.8-79.6z"],zoomOut:[448,512,"M0 256c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 288c-17.7 0-32-14.3-32-32z"],pause:[384,512,"M48 32C21.5 32 0 53.5 0 80L0 432c0 26.5 21.5 48 48 48l64 0c26.5 0 48-21.5 48-48l0-352c0-26.5-21.5-48-48-48L48 32zm224 0c-26.5 0-48 21.5-48 48l0 352c0 26.5 21.5 48 48 48l64 0c26.5 0 48-21.5 48-48l0-352c0-26.5-21.5-48-48-48l-64 0z"],play:[448,512,"M91.2 36.9c-12.4-6.8-27.4-6.5-39.6 .7S32 57.9 32 72l0 368c0 14.1 7.5 27.2 19.6 34.4s27.2 7.5 39.6 .7l336-184c12.8-7 20.8-20.5 20.8-35.1s-8-28.1-20.8-35.1l-336-184z"],playFilled:[512,512,"M0 256a256 256 0 1 1 512 0 256 256 0 1 1 -512 0zM188.3 147.1c-7.6 4.2-12.3 12.3-12.3 20.9l0 176c0 8.7 4.7 16.7 12.3 20.9s16.8 4.1 24.3-.5l144-88c7.1-4.4 11.5-12.1 11.5-20.5s-4.4-16.1-11.5-20.5l-144-88c-7.4-4.5-16.7-4.7-24.3-.5z"],zoomIn:[448,512,"M256 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 160-160 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l160 0 0 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160 160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-160 0 0-160z"],share:[512,512,"M307.8 18.4c-12 5-19.8 16.6-19.8 29.6l0 80-112 0c-97.2 0-176 78.8-176 176 0 113.3 81.5 163.9 100.2 174.1 2.5 1.4 5.3 1.9 8.1 1.9 10.9 0 19.7-8.9 19.7-19.7 0-7.5-4.3-14.4-9.8-19.5-9.4-8.8-22.2-26.4-22.2-56.7 0-53 43-96 96-96l96 0 0 80c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l160-160c12.5-12.5 12.5-32.8 0-45.3l-160-160c-9.2-9.2-22.9-11.9-34.9-6.9z"],video:[576,512,"M96 64c-35.3 0-64 28.7-64 64l0 256c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L96 64zM464 336l73.5 58.8c4.2 3.4 9.4 5.2 14.8 5.2 13.1 0 23.7-10.6 23.7-23.7l0-240.6c0-13.1-10.6-23.7-23.7-23.7-5.4 0-10.6 1.8-14.8 5.2L464 176 464 336z"],audio:[640,512,"M533.6 32.5c-10.3-8.4-25.4-6.8-33.8 3.5s-6.8 25.4 3.5 33.8C557.5 113.8 592 180.8 592 256s-34.5 142.2-88.7 186.3c-10.3 8.4-11.8 23.5-3.5 33.8s23.5 11.8 33.8 3.5C598.5 426.7 640 346.2 640 256S598.5 85.2 533.6 32.5zM473.1 107c-10.3-8.4-25.4-6.8-33.8 3.5s-6.8 25.4 3.5 33.8C475.3 170.7 496 210.9 496 256s-20.7 85.3-53.2 111.8c-10.3 8.4-11.8 23.5-3.5 33.8s23.5 11.8 33.8 3.5c43.2-35.2 70.9-88.9 70.9-149s-27.7-113.8-70.9-149zm-60.5 74.5c-10.3-8.4-25.4-6.8-33.8 3.5s-6.8 25.4 3.5 33.8C393.1 227.6 400 241 400 256s-6.9 28.4-17.7 37.3c-10.3 8.4-11.8 23.5-3.5 33.8s23.5 11.8 33.8 3.5C434.1 312.9 448 286.1 448 256s-13.9-56.9-35.4-74.5zM80 352l48 0 134.1 119.2c6.4 5.7 14.6 8.8 23.1 8.8 19.2 0 34.8-15.6 34.8-34.8l0-378.4c0-19.2-15.6-34.8-34.8-34.8-8.5 0-16.7 3.1-23.1 8.8L128 160 80 160c-26.5 0-48 21.5-48 48l0 96c0 26.5 21.5 48 48 48z"],unmuted:[640,512,"M533.6 32.5c-10.3-8.4-25.4-6.8-33.8 3.5s-6.8 25.4 3.5 33.8C557.5 113.8 592 180.8 592 256s-34.5 142.2-88.7 186.3c-10.3 8.4-11.8 23.5-3.5 33.8s23.5 11.8 33.8 3.5C598.5 426.7 640 346.2 640 256S598.5 85.2 533.6 32.5zM473.1 107c-10.3-8.4-25.4-6.8-33.8 3.5s-6.8 25.4 3.5 33.8C475.3 170.7 496 210.9 496 256s-20.7 85.3-53.2 111.8c-10.3 8.4-11.8 23.5-3.5 33.8s23.5 11.8 33.8 3.5c43.2-35.2 70.9-88.9 70.9-149s-27.7-113.8-70.9-149zm-60.5 74.5c-10.3-8.4-25.4-6.8-33.8 3.5s-6.8 25.4 3.5 33.8C393.1 227.6 400 241 400 256s-6.9 28.4-17.7 37.3c-10.3 8.4-11.8 23.5-3.5 33.8s23.5 11.8 33.8 3.5C434.1 312.9 448 286.1 448 256s-13.9-56.9-35.4-74.5zM80 352l48 0 134.1 119.2c6.4 5.7 14.6 8.8 23.1 8.8 19.2 0 34.8-15.6 34.8-34.8l0-378.4c0-19.2-15.6-34.8-34.8-34.8-8.5 0-16.7 3.1-23.1 8.8L128 160 80 160c-26.5 0-48 21.5-48 48l0 96c0 26.5 21.5 48 48 48z"],muted:[576,512,"M48 352l48 0 134.1 119.2c6.4 5.7 14.6 8.8 23.1 8.8 19.2 0 34.8-15.6 34.8-34.8l0-378.4c0-19.2-15.6-34.8-34.8-34.8-8.5 0-16.7 3.1-23.1 8.8L96 160 48 160c-26.5 0-48 21.5-48 48l0 96c0 26.5 21.5 48 48 48zM367 175c-9.4 9.4-9.4 24.6 0 33.9l47 47-47 47c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l47-47 47 47c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-47-47 47-47c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-47 47-47-47c-9.4-9.4-24.6-9.4-33.9 0z"],close:[384,512,"M55.1 73.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L147.2 256 9.9 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192.5 301.3 329.9 438.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L237.8 256 375.1 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192.5 210.7 55.1 73.4z"]},ss=new Set(["chevronDown","linkExt"]),hs=class extends xi{static tag="micrio-icon";#ae="close";#ce;ln(){this.#le(),this.#ue()}At(t){t.name&&(this.#ae=t.name),this.isConnected&&(this.#le(),this.#ue())}#le(){const t=this.yn();this.#ce=t?.$current?.$settings?.ui?.icons?.[this.#ae]}#ue(){const t=this.#ce;if(t)return void(this.innerHTML=t);const i=is[this.#ae];if(!i)return void this.replaceChildren();const s=ts(i);ss.has(this.#ae)&&s.classList.add("small"),this.replaceChildren(s)}};customElements.define(hs.tag,hs);var es=class extends xi{static tag="micrio-button-group"};customElements.define(es.tag,es);var ns="100",os=80*Math.PI,rs={r:"40",cx:"50",cy:"50",fill:"transparent","stroke-width":"8px"},as=class extends xi{static tag="micrio-progress-circle";#de={};#fe;ln(){const t=_t("svg",{attrs:{width:ns,height:ns,viewBox:`0 0 ${ns} ${ns}`}});_t("circle",{attrs:{...rs,stroke:"#e0e0e0"},parent:t});const i=_t("circle",{attrs:{...rs,stroke:"#00d4ee","stroke-dasharray":`${os}px`},parent:t});this.appendChild(t),this.#fe=i,this.#pe()}At(t){Object.assign(this.#de,t),this.isConnected&&this.#pe()}#pe(){if(!this.#fe)return;const t=this.#de.progress??0,i=os*(1-t);this.#fe.setAttribute("stroke-dashoffset",`${i}px`)}};customElements.define(as.tag,as);var cs=class extends xi{static tag="micrio-logo";#me;#ge;#we=0;ln(){const t=this.yn();if(!t)return;const i=/micr\.io/.test(location.origin)&&self.parent==self?void 0:"_blank";this.#me=Mt("a",{props:{rel:"noopener",href:"https://micr.io/",title:"Powered by Micrio"},attrs:{"aria-label":"Micrio homepage"},parent:this}),i&&(this.#me.target=i),this.dn(t.xe.subscribe(t=>{clearTimeout(this.#ge),t?this.#we||(this.#ge=setTimeout(()=>{this.#we=1,this.#ve()},750)):(this.#we=0,this.#ve())})),this.dn(()=>clearTimeout(this.#ge))}un(){clearTimeout(this.#ge)}#ve(){this.#me&&this.#me.classList.toggle("loading",this.#we)}};customElements.define(cs.tag,cs);var ls=class extends xi{static tag="micrio-article";De(){this.cn.html&&(this.innerHTML=this.cn.html)}};customElements.define(ls.tag,ls);var us="micrio-captions-disable",ds=H("1"!=localStorage.getItem(us));ds.subscribe(t=>{t?localStorage.removeItem(us):localStorage.setItem(us,"1")});var fs=class extends xi{static tag="micrio-subtitles";#de={};#Me=[];#_e=0;#ye;#ms;ln(){this.#ms=ds.subscribe(()=>this.#be());const t=this.#de.mediaEl?.querySelector("video,audio")||(this.#de.mediaEl instanceof HTMLMediaElement?this.#de.mediaEl:void 0);if(t){const i=()=>{this.#_e=t.currentTime,this.#be()};t.addEventListener("timeupdate",i);const s=this.#ms;this.#ms=()=>{s?.(),t.removeEventListener("timeupdate",i)}}this.#de.src&&this.#pe()}At(t){const i=void 0!==t.src&&t.src!==this.#de.src;Object.assign(this.#de,t),i&&this.isConnected&&this.#pe()}#pe(){this.#de.src?(this.#Me=[],fetch(this.#de.src).then(t=>t.text()).then(t=>{const i=t.split("\n"),s=[];for(let h=0;h<i.length;h++)if(/-->/.test(i[h])){let t=h+1;const e=[];for(;!i[t]&&t<i.length;)t++;for(;i[t]&&i[t].trim();)e.push(i[t++]);const[n,o]=i[h].split(" --\x3e ").map(t=>t.trim().replace(",",".").split(":").map(Number)).map(t=>3===t.length?3600*t[0]+60*t[1]+t[2]:2===t.length?60*t[0]+t[1]:0);s.push({start:n,end:o,data:e.join("\n")}),h+=e.length+1}this.#Me=s,this.#be()}).catch(t=>console.error("micrio-subtitles: fetch error:",t))):this.replaceChildren()}#be(){if(!X(ds)||!this.#Me.length)return this.replaceChildren(),void(this.#ye=void 0);const t=this.#Me.find(t=>t.start<=this.#_e&&t.end>=this.#_e);t!==this.#ye&&(this.#ye=t,this.innerHTML=t?`<p>${t.data}</p>`:"")}un(){this.#ms?.()}};customElements.define(fs.tag,fs);var ps=class extends xi{static tag="micrio-details";#de={};#ke;ln(){this.yn()&&(this.#ke=Mt("details",{parent:this}),this.#ue())}At(t){void 0!==t.info&&(this.#de.info=t.info),void 0!==t.data&&(this.#de.data=t.data),this.isConnected&&this.#ue()}#ue(){const t=this.#de.info,i=this.#de.data,s=this.yn(),h=s?X(s.Wt):void 0,e=s?X(s.current):void 0;if(!t||!h||!e)return;const n=i?.i18n?i.i18n[h]:i,o=n?.title??t.title??"",r=n?.description,a=n?.sourceUrl,c=n?.copyright;(o||r||a)&&(this.#ke.replaceChildren(),o&&Mt("summary",{children:[Mt("span",{textContent:o})],parent:this.#ke}),r&&Mt("div",{innerHTML:r,parent:this.#ke}),a&&Mt("p",{parent:this.#ke,children:[Mt("a",{props:{href:a,target:"_blank",rel:"noopener noreferrer"},textContent:c||a})]}))}};customElements.define(ps.tag,ps);var ms=class extends xi{static tag="micrio-error";De(){this.replaceChildren(),Mt("div",{parent:this,children:[Mt("span",{textContent:this.cn.message??"An unknown error has occurred"})]})}};customElements.define(ms.tag,ms);var gs=class extends xi{static tag="micrio-controls";#de={};#xe=0;#Pe=0;#Te=0;#Se=0;#Ae="";#Ce=()=>{const t=this.yn();t&&t.Po.set(!X(t.Po))};#Ee=()=>{const t=this.yn();if(t&&navigator.share&&t.$current?.$info){const i=t.$current.$data?.i18n?.[X(t.Wt)];navigator.share({title:t.$current.$info?.title,text:i?.description||`${t.$current.$info.width} x ${t.$current.$info.height} | Micrio`,url:location.href})}};#Ie=t=>{this.yn().lang=t};#Le;#ze;#De;#Fe;#$e;#Oe;#Be;#Ve;ln(){const t=this.yn();if(!t)return;const{state:i,Wt:s}=t,{tour:h,popup:e}=i,n=t=>{this.#Pe=!!t.ui?.controls?.cultureSwitch,this.#Te=!!t.social,void 0!==t.fullscreen&&(this.#Se=!!t.fullscreen&&!!customElements.get("micrio-fullscreen")),this.#Re()};let o;t.$current&&n(t.$current.$settings),this.dn(t.current.subscribe(t=>{if(t){if(X(h)&&"steps"in X(h))return;o?.(),o=t.Lt.subscribe(n)}})),this.gn(h,()=>this.#Re()),this.gn(e,()=>this.#Re()),this.gn(s,()=>this.#Re()),this.gn(t.Po,()=>this.#Re());const r=new MutationObserver(()=>this.#Re());r.observe(t,{attributes:1,attributeFilter:["class"]}),this.dn(()=>r.disconnect()),this.#Ne(),this.#Re()}At(t){Object.assign(this.#de,t)}#Ne(){this.#xe||(this.#Le=Mt("aside",{parent:this}),this.#xe=1)}#Re(){if(!this.#xe||!this.isConnected)return;const t=this.yn();if(!t)return;const i=X(ji),s=X(t.Po),h=X(t.Wt),e=t.$current,n=!(e?.$settings)?.noZoom,o=X(t.state.popup),r=e?.$info,a=r?.revision?Object.keys(r.revision):[],c=t.canvas.$isMobile,l=!(!("micrioAudioContext"in window)&&!this.#de.hasAudio),u=this.#Pe&&a.length>1,d=this.#Te&&"share"in navigator,f=l||u||d||n||this.#Se,p=this.#Se&&!!o&&c,m=n&&!p&&!(e?.grid&&"cells"==e?.$settings?.grid?.panZoom),g=l||m||this.#Se;if(o&&c||!f)this.#Le.replaceChildren();else{if(u&&!p){this.#Fe?.isConnected||(this.#Fe?.remove(),this.#$e=void 0,this.#Ae="",this.#Fe=Mt("menu",{attrs:{tabindex:"0"},children:[Mt("micrio-button"),this.#$e=Mt("div")]}),this.#Le.prepend(this.#Fe)),this.#Fe.querySelector("micrio-button")?.At({type:"a11y",title:i.Qn});const t=this.#$e,s=a.join(",");if(s!==this.#Ae){this.#Ae=s,t.replaceChildren();for(const i of a)Mt("micrio-button",{setProps:{title:Vi?.of(i)??i,onclick:()=>{this.#Ie(i)}},children:[i.toUpperCase()],parent:t})}const e=t.querySelectorAll(":scope > micrio-button");for(let i=0;i<e.length;i++){const t=e[i].querySelector("button, a");t&&t.classList.toggle("active",a[i].toLowerCase()===h.toLowerCase())}}else this.#Fe?.isConnected&&this.#Fe.remove();d&&!p?(this.#De?.isConnected||(this.#De?.remove(),this.#De=Mt("micrio-button"),this.#Le.insertBefore(this.#De,this.#Oe?.isConnected?this.#Oe:null)),this.#De.At({type:"share",title:i.io,onclick:this.#Ee})):this.#De?.isConnected&&this.#De.remove(),g?(this.#Oe?.isConnected||(this.#Oe?.remove(),this.#Oe=Mt("micrio-button-group",{parent:this.#Le})),l?(this.#ze?.isConnected||(this.#ze?.remove(),this.#ze=Mt("micrio-button"),this.#Oe.prepend(this.#ze)),this.#ze.At({type:s?"muted":"unmuted",title:s?i.ho:i.so,onclick:this.#Ce})):this.#ze?.isConnected&&this.#ze.remove(),m?this.#Be?.isConnected||(this.#Be?.remove(),this.#Be=Mt("micrio-zoom-buttons"),this.#Ve?.isConnected?this.#Oe.insertBefore(this.#Be,this.#Ve):this.#Oe.appendChild(this.#Be)):this.#Be?.isConnected&&this.#Be.remove(),this.#Se?(this.#Ve?.isConnected||(this.#Ve?.remove(),this.#Ve=Mt("micrio-fullscreen",{parent:this.#Oe})),this.#Ve.At({el:t})):this.#Ve?.isConnected&&this.#Ve.remove()):this.#Oe?.isConnected&&this.#Oe.remove()}}};customElements.define(gs.tag,gs);var ws=class extends xi{static tag="micrio-fullscreen";#de={};#He=0;#ft=0;#Xe=()=>{const t=this.#de.el;t&&(this.#He?document.exitFullscreen():t.requestFullscreen())};ln(){this.#de?.el&&this.#Ge()}At(t){void 0!==t.el&&(this.#de.el=t.el,this.isConnected&&!this.#ft&&this.#Ge())}#Ge(){if(this.#ft)return;this.#ft=1;const t=this.#de.el;if(!("requestFullscreen"in t))return;this.#He=document.fullscreenElement===t;const i=this.yn(),s=i&&t==i&&!i.events.scrollHooked,h=()=>{this.#He=document.fullscreenElement===t,s&&(this.#He?i.events.hookScroll():i.events.unhookScroll()),this.#je()};document.addEventListener("fullscreenchange",h),this.dn(()=>document.removeEventListener("fullscreenchange",h)),this.#je()}#je(){this.replaceChildren();const t=X(ji);Mt("micrio-button",{setProps:{type:this.#He?"fullscreenLeave":"fullscreenEnter",title:t.Kn,onclick:this.#Xe},parent:this})}};customElements.define(ws.tag,ws);var vs=class extends xi{static tag="micrio-zoom-buttons";#Ye;#We;ln(){const t=this.yn();if(!t)return;const i=()=>{const i=X(t.Kt).filter(t=>t.id);return 1===i.length?i[0]:t.$current};this.#Ye=Mt("micrio-button",{parent:this}),this.#Ye.At({type:"zoomIn",onclick:()=>i()?.camera.zoomIn()}),this.#We=Mt("micrio-button",{parent:this}),this.#We.At({type:"zoomOut",onclick:()=>i()?.camera.zoomOut()});const s=()=>{const t=i(),s=X(ji);this.#Ye.At({title:s.qn,disabled:t?.camera.isZoomedIn()??1}),this.#We.At({title:s.Jn,disabled:t?.camera.isZoomedOut()})};this.dn(t.current.subscribe(()=>s())),this.dn(t.Kt.subscribe(()=>s()));const h=()=>s();t.Ct.push(h),this.dn(()=>{const i=t.Ct.indexOf(h);0>i||t.Ct.splice(i,1)}),s()}};function Ms(t){if("string"==typeof t)return t;let i=0,s=Math.max(t.width,t.height);for(;s>1024;)i++,s/=2;return t.micrioId&&t.width>1024?"https://r2.micr.io/"+t.micrioId+"/"+i+"/0-0."+(t.isPng?"png":t.isWebP?"webp":"jpg"):t.src}customElements.define(vs.tag,vs);var _s=class extends xi{static tag="micrio-logo-org";#de={organisation:null};ln(){this.yn()&&this.#ue()}At(t){void 0!==t.organisation&&(this.#de.organisation=t.organisation),this.isConnected&&this.#ue()}#ue(){const t=this.#de.organisation;t?.logo?(this.replaceChildren(),Mt("a",{props:{rel:"noopener",href:t.href??"#",title:t.name??"",target:"_blank"},attrs:{"aria-label":`${t.name} homepage`},children:[Mt("img",{props:{src:Ms(t.logo),alt:"Logo",crossOrigin:"anonymous"}})],parent:this})):this.replaceChildren()}};function ys(t,i){const s=t.$current;if(!s)return;const h=t.spaceData?.images.find(t=>t.id==s.id),e=t.spaceData?.images.find(t=>t.id==i);if(!h||!e)return;const n=[(e.x??.5)-(h.x??.5),(h.y??.5)-(e.y??.5),(e.z??.5)-(h.z??.5)];let o=n[0]*n[0]+n[1]*n[1]+n[2]*n[2];o>0&&(o=1/Math.sqrt(o));const r=[n[0]*o,n[1]*o,n[2]*o],a=tt(Math.atan2(-r[0],r[2])/Math.PI/2);return{v:n,vN:r,directionX:a,vector:{direction:a%1,distanceX:Math.max(0,Math.min(.4,Math.sqrt(r[0]*r[0]+r[2]*r[2]))),distanceY:-n[1]}}}customElements.define(_s.tag,_s);var bs=class extends xi{static tag="micrio-waypoint";#de={targetId:"",image:null};#Ue=0;#Ze=0;#qe;#Je;#Ke;#Qe;#tn;#Oh;#in;ln(){this.#sn(),this.#ue()}At(t){void 0!==t.targetId&&(this.#de.targetId=t.targetId),void 0!==t.image&&(this.#de.image=t.image),void 0!==t.settings&&(this.#de.settings=t.settings),this.isConnected&&(this.#sn(),this.#ue())}#sn(){const{targetId:t,image:i,settings:s}=this.#de;if(!i||!t)return;const h=this.yn();if(!h)return;const e=i.$info,n=ys(h,t);if(!n)return void console.error(`[Micrio] Could not calculate vector for target ${t}`);const{directionX:o,v:r,vN:a,vector:c}=n;this.#tn=c;const l=.3>Math.abs(a[1]),u=l?.65:.5+a[1]/10,d={x:o,y:u,baseScale:e.width/1024,scale:1,rotX:(1+(l?-(1-u):a[1]))*Math.PI/2,rotY:0,rotZ:0},f=s?.coords??structuredClone(d),p=f.custom;this.#Je=p?f:d,this.classList.toggle("direction-up",0>r[1]),this.classList.toggle("direction-down",r[1]>0);const m=()=>{this.#Ze||(this.style.transform=`matrix3d(${i.camera.getMatrix(this.#Je.x,this.#Je.y,this.#Je.baseScale*this.#Je.scale,1,this.#Je.rotX,this.#Je.rotY,this.#Je.rotZ,0,1,1,1).join(",")})`)},g=this;this.#Ke={coords:f,settings:s??{},click(){},get deleted(){return 0},set deleted(t){t&&(g.#Ze=1)}},m(),this.dn(i.state.view.subscribe(m)),N.t(t).then(t=>{t&&(this.#qe=t),this.#ue()}),h.dispatchEvent(new CustomEvent("wp-print",{detail:this.#Ke})),this.#Oh=()=>{i.$settings._markers?.noMarkerActions||(this.#Ue=1,i.zt=void 0,i.state.marker.set(void 0),h.open(t,{vector:this.#tn}))},this.#in=()=>{i.$settings._markers?.noMarkerActions||(this.parentNode?.scrollTo(0,0),clearTimeout(this.#Qe),this.#Qe=setTimeout(()=>{const t=i.camera.getXY(this.#Je.x,this.#Je.y);!this.#Ue&&(0>t[0]||t[0]>=h.offsetWidth||0>t[1]||t[1]>=h.offsetHeight||i.F&&t[3]>4)&&i.camera.flyToCoo([this.#Je.x,this.#Je.y],{speed:2,limit:1}).catch(()=>{})},150))}}#ue(){if(this.#Ze)return void(this.style.display="none");const{settings:t}=this.#de,i=this.yn(),s=i?X(i.Wt):"en",h=X(ji),e=i?.spaceData,n=t?.i18n?.[s]?.title||this.#qe?.i18n?.[s]?.title,o=e?.icons?.[t?.customIconIdx??-1];this.classList.toggle("clicked",this.#Ue),this.replaceChildren(),Mt("micrio-button",{setProps:{type:o?void 0:"up",icon:o||void 0,title:n??h.Mo,onclick:this.#Oh,onfocus:this.#in},parent:this})}un(){clearTimeout(this.#Qe)}};customElements.define(bs.tag,bs);var ks=class extends xi{static tag="micrio-marker-content";To;De(){const{marker:t,noEmbed:i=0,noImages:s=0,noGallery:h=0,onclose:e}=this.cn;if(!t)return;const n=this.yn(),o=xi.an,r=t.id?o.get(t.id):void 0;if(!n||!r)return;const a=X(n.Wt),c=`${t.id}::${a}::${i}::${s}::${h}`;if(!this.fn(c))return;const l=X(n.state.tour),u=l&&"steps"in l&&l.isSerialTour,d=r.$settings._markers??{},f=!d.preventAutoPlay,p=t.i18n?.[a],m=1==t.images?.length,g=!t.data?.preventImageOpen&&!h,w=r.jt?.includes("micrio.dev"),v=m&&t.images?.[0]?.i18n?.[a]?.description,M=t=>t.i18n?.[a]?.title,_=()=>{l&&"steps"in l&&(l.isSerialTour||d.tourAutoProgress)&&e?.()};if(p){if(this.replaceChildren(),p.title){const t=Mt("h1",{textContent:p.title,parent:this});this.To=t}if(p.body&&d.primaryBodyFirst&&Mt("micrio-article",{setProps:{html:p.body},parent:this}),!u&&(!p.embedUrl&&t.videoTour||p.audio)){const i=(t.videoTour?.i18n?.[a]?.audio??p?.audio)?.src,s=!f||!t?.audioAutoPlay;Mt("micrio-media",{setProps:{src:i,noPlayOverlay:1,image:r,uuid:t.id,tour:t.videoTour,autoplay:t.audioAutoPlay||!p.audio&&!!t.videoTour,controls:!t.videoTour||!p.embedUrl,onended:_,paused:s},parent:this})}if(!s&&t.images?.length){const i=Mt("section");for(const s of t.images){const h=Mt("button",{props:{title:M(s)??"",disabled:!g},events:g?{click(){return i=s.micrioId,void(g&&n.state.popover.set({gallery:t.images,galleryStart:i,image:r}));var i}}:void 0}),e=Mt("figure");Mt("img",{props:{alt:M(s)??"",src:s.micrioId?`https://iiif.${w?"micrio.dev":"micr.io"}/${s.micrioId}/full/${m?"^"+Math.min(s.width,640)+",":"^,320"}/0/default.webp`:s.src},parent:e}),v&&Mt("figcaption",{textContent:v,parent:e}),h.appendChild(e),i.appendChild(h)}this.appendChild(i)}if(p.embedUrl&&!i){!p.audio&&t.videoTour&&Mt("micrio-media",{setProps:{image:r,className:"hidden",uuid:t.id,tour:t.videoTour,autoplay:f,secondary:1},parent:this});const i=0==t?.embedAutoPlay||!f||!(!p?.audio||!t?.audioAutoPlay);Mt("micrio-media",{setProps:{image:r,src:p.embedUrl,uuid:t.id,width:400,height:240,controls:1,title:p.embedTitle,figcaption:p.embedDescription,autoplay:!i,onended:_,paused:i},parent:this})}p.body&&!d.primaryBodyFirst&&Mt("micrio-article",{setProps:{html:p.body},parent:this}),p.bodySecondary&&Mt("micrio-article",{setProps:{html:p.bodySecondary},parent:this})}else this.replaceChildren()}};customElements.define(ks.tag,ks);var xs=H(void 0),Ps=0;function Ts(){xs.set(void 0)}xs.subscribe(t=>{t?Ps||window.addEventListener("click",Ts):Ps&&window.removeEventListener("click",Ts),Ps=!!t});var Ss=class extends xi{static tag="micrio-menu";#de={menu:null,originalId:null};#hn;ln(){const{menu:t}=this.#de,i=this.yn();if(!i)return;const{Wt:s}=i;1!==t.children?.length||this.#en(t,X(s))?.title||(this.#de.menu=t.children[0]),this.#nn(),this.#ue(),this.mn(xs,()=>this.classList.toggle("opened",this.#on(this.#de.menu))),this.vn(s,j(Y(()=>{this.#nn(),this.#ue()})))}#nn(){const{menu:t,originalId:i}=this.#de,s=this.yn();if(!s)return;const{events:h,state:e,Wt:n}=s,o=this.#en(t,X(n)),r=t;this.#hn=void 0,t.action?this.#hn=t.action:t.markerId?this.#hn=()=>{i&&s.$current?.id!=i&&s.open(i),s.$current?.state.marker.set(t.markerId)}:(o?.content||o?.embed||t.image||r.content||r.embedUrl||o?.title&&!t.children?.length&&!t.link&&!t.markerId)&&(this.#hn=()=>{h.Et("page-open",t),e.popover.set({contentPage:t})})}At(t){Object.assign(this.#de,t)}#en(t,i){return t.i18n?.[i]??t}#on(t){const i=X(xs);if(!i)return 0;const s=t=>t===i||!!t.children?.some(s);return s(t)}#ue(){const{menu:t,originalId:i,onclose:s}=this.#de,h=this.yn();if(!h)return;const e=X(h.Wt),n=this.#en(t,e);this.replaceChildren(),this.classList.toggle("opened",this.#on(t)),this.setAttribute("data-title",n?.title?.toLowerCase()??"");const o=i=>{t.link||i.preventDefault(),t.children?.length&&i.stopPropagation(),this.#hn?.();const h=!!(this.#on(t)||this.#hn||t.link);xs.set(h?void 0:t),(this.#hn||t.link)&&s?.()};if(t.link){const i=Mt("a",{props:{href:t.link},events:{click:o},children:[Mt("strong",{textContent:n?.title??"(Unknown)",children:[Mt("micrio-icon",{setProps:{name:t.linkTargetBlank?"linkExt":"link"},style:{opacity:".75"}})]})],parent:this});t.linkTargetBlank&&(i.target="_blank")}else{const i=[n?.title??"(Unknown)"];t.children?.length&&i.push(Mt("micrio-icon",{setProps:{name:"chevronDown"}}));const s=[Mt("strong",{children:i})];t.icon&&s.unshift(ts(t.icon,{style:"height:1em;vertical-align:-.125em;margin-right:10px"})),Mt("button",{props:{type:"button"},events:{click:o},children:s,parent:this})}t.children?.length&&Mt("div",{parent:this,children:t.children.map(t=>Mt("micrio-menu",{setProps:{menu:t,originalId:i,onclose:Ts}}))})}};customElements.define(Ss.tag,Ss);var As=class extends xi{static tag="micrio-toolbar";#x;#rn;#an;#cn=0;#ln=0;#Xe=()=>{this.#cn=!this.#cn,this.#ue()};ln(){const t=this.yn();if(!t)return;const{Wt:i}=t;this.#ln=500>=window.innerWidth;const s=()=>{this.#ln=500>=window.innerWidth,this.#ln||(this.#cn=0),this.#ue()};this.#ue(),this.dn(t.current.subscribe(t=>{t&&(this.#rn?.(),this.#an?.(),this.#rn=t.data.subscribe(t=>{this.#x=t,this.#ue()}),this.#an=t.Lt.subscribe(()=>this.pn?.()))})),this.dn(()=>{this.#rn?.(),this.#an?.()}),this.dn(t.state.tour.subscribe(()=>this.#ue())),this.dn(t.state.marker.subscribe(()=>this.#ue())),this.dn(t.state.popover.subscribe(()=>this.#ue())),this.dn(i.subscribe(()=>this.#ue())),window.addEventListener("resize",s),this.dn(()=>window.removeEventListener("resize",s))}#ue(){const t=this.yn();if(!t)return;const{Wt:i,state:s}=t,h=X(i),e=t=>!!t.i18n?.[h],n=(t.bundleTours??[]).concat(this.#x?.markerTours??[]).filter(e);if(!this.#x&&!n.length)return;const o=X(s.tour),r=X(s.marker),a=X(s.popover),c=X(ji),l=t.$current?.id,u=!!o||!!r||!!a,d=n.length>0,f=this.#x?.tours?.filter(e)??[],p=f.length>0,m=d&&p,g=this.#x?.pages?this.#x.pages.filter(t=>!t.id?.startsWith("_")&&(t=>!!t.i18n?.[h])(t)).concat(this.#x.pages.filter(t=>t.id?.startsWith("_"))):void 0,w=!(g?.length||d||p),v=[(g||[]).map(t=>t.id).join(","),n.map(t=>t.id).join(",")+"|"+f.map(t=>t.id).join(","),u,h,this.#ln,this.#cn].join("::");if(!this.fn(v))return;if(w||u)return void this.replaceChildren();this.replaceChildren(),this.#ln&&this.#cn&&Mt("div",{className:"backdrop",events:{click:this.#Xe},parent:this});const M=Mt("menu",{className:(this.#ln&&this.#cn?"shown":"")||void 0}),_=()=>{this.#ln&&(this.#cn=0,this.#ue())};if(g)for(const y of g)Mt("micrio-menu",{setProps:{menu:y,originalId:l,onclose:_},parent:M});d&&Mt("micrio-menu",{setProps:{onclose:_,menu:{id:"marker-tours",i18n:{[h]:{title:m?c.yo:c._o}},children:n.map(t=>({id:t.id??S(),i18n:{[h]:{title:t.i18n?.[h]?.title??"(Untitled)"}},action(){t.initialStep=0,s.tour.set(t)}}))}},parent:M}),p&&Mt("micrio-menu",{setProps:{onclose:_,menu:{id:"video-tours",i18n:{[h]:{title:m?c.bo:c._o}},children:f.map(i=>({id:i.id??S(),i18n:{[h]:{title:i.i18n?.[h]?.title??"(Untitled)"}},action(){t.$current&&t.$current.id!=l&&t.open(l),s.tour.set(i)}}))}},parent:M}),this.appendChild(M),this.pn?.(),this.#ln&&Mt("micrio-button",{setProps:{title:c.vo,type:this.#cn?"close":"ellipsisVertical",className:"transparent"+(this.querySelector("menu.indent")?" indent":"")||void 0,onclick:this.#Xe},parent:this})}pn(){const t=this.querySelector("menu");if(t){const i=!this.yn()?.$current?.$settings?.noLogo;t.classList.toggle("indent",i)}}};customElements.define(As.tag,As);var Cs,Es,Is=class{#Gs;#un;#dn;#fn;#pn;#ms;constructor(t,i,s,h){this.#Gs=t,this.#Ge(i,s,h)}#Ge(t,i,s){const h=this.#Gs.$current.$info;if(!h)return;const e=h.width,n=h.height,o=t.positionalAudio;if(!o)return;this.#un=i.createGain(),this.#dn=i.createPanner(),this.#dn.panningModel="equalpower",this.#dn.rolloffFactor=1,this.#dn.coneOuterGain=0;const r=()=>{if(this.#un.gain.value=o.volume??1,s){this.#dn.refDistance=2.75*o.radius,this.#dn.maxDistance=o.radius*(11/3);const i=t.x*-Math.PI*2,s=(t.y-.5)*-Math.PI,h=Math.cos(s)*Math.sin(i)*11,e=11*Math.sin(s),n=Math.cos(s)*Math.cos(i)*11;this.#dn.positionX.value=h,this.#dn.positionY.value=e,this.#dn.positionZ.value=n;const[r,a,c]=rt(h,e,n);this.#dn.orientationX.value=r,this.#dn.orientationY.value=a,this.#dn.orientationZ.value=c}else this.#dn.distanceModel="linear",this.#dn.positionX.value=2*(t.x-.5),this.#dn.positionY.value=2*(.5-t.y)*(n/e),this.#dn.positionZ.value=-.2,this.#dn.rolloffFactor=2,this.#dn.refDistance=o.radius*o.radius*10,this.#dn.maxDistance=5*o.radius},a=()=>{this.#fn&&this.#fn.disconnect(),this.#fn=i.createBufferSource(),o.loop&&(o.repeatAfter>0?this.#fn.onended=()=>{this.#pn=setTimeout(a,1e3*o.repeatAfter)}:this.#fn.loop=1),this.#un.gain.value=o.volume??1,this.#fn.buffer=window.__micrioAudioBuffers?.[o.src]??null,this.#fn.buffer&&(this.#fn.connect(this.#dn),this.#fn.start())};r(),this.#dn.connect(this.#un),this.#un.connect(Cs??i.destination),(async()=>{if(!o.src)return;const t=window.__micrioAudioBuffers||{};t[o.src]||(t[o.src]=await fetch(o.src).then(t=>t.arrayBuffer()).then(t=>i.decodeAudioData(t)),window.__micrioAudioBuffers=t),o.alwaysPlay&&o.repeatAfter>0?this.#pn=setTimeout(a,1e3*o.repeatAfter):a()})(),this.#Gs.addEventListener("audio-update",r),this.#ms=()=>this.#Gs.removeEventListener("audio-update",r)}#sh(){this.#fn&&this.#fn.disconnect(),clearTimeout(this.#pn),this.#dn.disconnect(),this.#un.disconnect()}destroy(){this.#ms?.(),this.#sh()}},Ls=null,zs=H(0);function Ds(t,i,s){Es&&(Es.setPosition?Es.setPosition(t,i,s):"positionX"in Es&&(Es.positionX.value=t,Es.positionY.value=i,Es.positionZ.value=s))}function Fs(t,i,s){Es&&(Es.setOrientation?Es.setOrientation(t,i,s,0,1,0):"forwardX"in Es&&(Es.forwardX.value=t,Es.forwardY.value=i,Es.forwardZ.value=s))}var $s=class{#mn=new Audio;#gn;#wn;#vn=-1;constructor(t,i,s){this.#gn=t,this.#wn=i,this.#mn.preload="none",this.#mn.loop=0,this.#mn.volume=s,this.#mn.onended=()=>this.#Mn(),this.#Mn()}#Mn(){if(!this.#wn&&this.#vn+1===this.#gn.length)return;const t=this.#gn[++this.#vn%this.#gn.length];this.#mn.src=t.src??"",this.#mn.play()}destroy(){this.#mn.pause()}},Os=class{#Gs;#d;#_n;#yn=[];#bn=[];constructor(t,i){this.#Gs=t,this.#d=i,this.#Ge()}#kn(t){for(const e of this.#bn)e.destroy();if(this.#bn=[],!Ls||!t)return;const i=t.$info;if(!i)return;const s=!!i.is360,h=t.$data?.markers?.filter(t=>!!t.positionalAudio);if(h?.length)for(const e of h)this.#bn.push(new Is(this.#Gs,e,Ls,s))}#Ge(){const t=this.#Gs,i=this.#d,{events:s}=t,h=i.$info;if(!h)return;const e=!!h.is360,n=h.height/h.width;if(!("AudioContext"in window))return;const o=()=>zs.set(1),r=()=>{"suspended"===Ls?.state?Ls.resume().then(()=>{}).catch(()=>{}):Ls||o()},a=new Audio("data:audio/mpeg;base64,...");a.volume=Et.iOS?0:1e-4,document.body.appendChild(a),this.#yn.push(zs.subscribe(s=>{if(!s)return;const h=X(t.Po)?0:1;Ls||(t=>{if(!Cs){if(Ls||(Ls="micrioAudioContext"in window?window.micrioAudioContext:new AudioContext),!Ls)return console.warn("[Micrio] Your browser does not support the Web Audio API");"suspended"===Ls.state&&Ls.resume().then(()=>{}).catch(()=>{}),(Cs=Ls.createGain()).connect(Ls.destination),Cs.gain.value=t,"upX"in(Es=Ls.listener)&&(Es.upX.value=0,Es.upY.value=1,Es.upZ.value=0)}})("number"==typeof h?h:1),Ls&&(i.$data?.markers?.filter(t=>!!t.positionalAudio).length&&this.#yn.push(i.state.view.subscribe(t=>{if(!t)return;const s=Math.max(0,1.05-i.camera.getScale());((t,i,s)=>{if(e){t*=2*-Math.PI,i-=.5,i*=-Math.PI;const h=10*(1-s),e=Math.cos(i)*Math.sin(t)*h,n=Math.sin(i)*h,o=Math.cos(i)*Math.cos(t)*h;Ds(e,n,o);const[r,a,c]=rt(e,n,o);Fs(r,a,c)}else Ds(2*(t-.5),2*(.5-i)*n,s),Fs(0,0,-1)})(t[0]+t[2]/2,t[1]+t[3]/2,s*(e?1:1.5))})),this.#kn(t.$current))})),this.#yn.push(t.current.subscribe(t=>{t&&Ls&&this.#kn(t)})),Ls||(a.play().then(o).catch(()=>s.Et("autoplay-blocked")),addEventListener("pointerup",r,{once:1}));const c=i.$data;if(c?.music?.items.length){const i=X(t.Po)?0:1;this.#_n=new $s(c.music.items,c.music.loop??1,i*(c.music.volume??1))}this.#yn.push(t.Po.subscribe(t=>{Cs&&(Cs.gain.value=t?0:1)})),this.#yn.push(()=>{a.remove(),removeEventListener("pointerup",r)})}destroy(){for(const t of this.#bn)t.destroy();this.#bn=[];for(const t of this.#yn)t();this.#yn=[],this.#_n?.destroy()}},Bs=class{#xn=[];#Pn;#Tn;#mh;#Sn=1;#An=0;#Z;#Cn=0;#En;#In=0;#Ln;#Gs;#d;#x;constructor(t,i){this.#d=t,this.#x=i,this.#Gs=t.engine.micrio;const s=i.i18n?.[X(this.#Gs.Wt)];if(!s)throw new Error("No valid content for video tour!");this.#Ln=s,this.#In=!i.keepInteraction&&this.#Gs.events.$enabled,i.instance=this,this.read(),this.#zn(),this.#Gs.events.Et("videotour-start",this.#x)}destroy(){this.#In&&this.#Gs.events.enabled.set(1),this.#Dn(),this.#Gs.removeAttribute("data-video-tour-active"),clearTimeout(this.#mh),this.#An&&(this.#d.camera.stop(),this.#An=0),this.#Gs.events.Et("videotour-stop",this.#x),this.#En=void 0,this.#x.instance=void 0,this.#Tn=void 0}read(){const t=this.#Ln.timeline;this.#xn=[];for(let i=0;i<t.length;i++){const s=t[i],h=t[i-1],e=h?h.end:0;this.#xn.push({view:s.rect,start:1e3*e,duration:1e3*(s.start-e),pauseDuration:1e3*(s.end-s.start)})}this.#En&&!this.#An&&(this.progress=this.currentTime)}#zn(){const t=this.#Ln.events;if(!t?.length)return;const i=this.duration;for(const s of t)s.start=Number(s.start||0),s.end=Math.min(Number(s.end||0),i)}#Dn(){const t=this.#Ln.events;if(t?.length)for(const i of t)i.active&&(i.active=0,this.#Gs.events.Et("tour-event",{...i}))}updateEvents(t){const i=this.#Ln.events;if(i?.length)for(const s of i){const i=s.start<=t&&s.end>=t;i!=!!s.active&&(s.active=i,this.#Gs.events.Et("tour-event",{...s}))}}get duration(){return Number(this.#Ln.duration)}set duration(t){this.#Ln.duration=t}get paused(){return this.#Sn}get ended(){return this.currentTime>=this.duration}get currentTime(){return(this.#Z??(this.#En?Date.now()-this.#En:0))/1e3}set currentTime(t){this.#Fn(t/this.#Ln.duration)}get progress(){return this.currentTime/this.#Ln.duration}set progress(t){this.#Fn(t)}play(){this.#$n(),this.#Cn=0,this.#Z?(this.#En=Date.now()-this.#Z,this.#Sn=0,this.#On(this.#Z),this.#Z=void 0):this.#An||(this.#En=Date.now(),void 0===this.#Tn?this.#Bn(0,0):this.#On(this.duration*this.#Tn*1e3),this.#Tn=void 0),this.#Sn=0,this.#An=1}pause(){this.#Sn||null==this.#Pn||null==this.#En||(this.#Sn=1,this.#Vn(),clearTimeout(this.#mh),0>this.#Pn||this.#d.camera.stop(),this.ended?this.#ls():this.#Z=Date.now()-this.#En)}#ls(){this.#Vn(),this.#Z=void 0,this.#An=0,this.read()}#Bn(t,i){if(null==this.#En)return;if(clearTimeout(this.#mh),!this.#xn[t]){if(!this.paused||!this.#Cn){const t=Math.max(0,Math.round(1e3*this.duration-(Date.now()-this.#En)));t>0&&(this.#mh=setTimeout(()=>this.pause(),t))}return}const s=this.#xn[t],h=Math.round(s.start-(Date.now()-this.#En));this.#Pn=t,this.#d.camera.stop(),h>0?this.#Sn||(this.#mh=setTimeout(()=>this.#Rn(i),h)):this.#Rn(i)}#Nn(){null!=this.#Pn&&this.#Bn(this.#Pn+1)}#Rn(t=0){if(null==this.#Pn||isNaN(t))return;const i=this.#xn[this.#Pn];if(!i)return;const s=this.#xn[this.#Pn-1]?.view;if(this.#Cn&&s){const h=dt.get(t),e=et(s),n=et(i.view);this.#d.camera.setView([e.centerX*(1-h)+n.centerX*h-(e.width*(1-h)+n.width*h)/2,e.centerY*(1-h)+n.centerY*h-(e.height*(1-h)+n.height*h)/2,e.width*(1-h)+n.width*h,e.height*(1-h)+n.height*h],{noLimit:1}),this.#Nn()}else this.#d.camera.flyToView(i.view,{duration:i.duration,progress:t,prevView:s}).then(()=>{null!=this.#Pn&&i===this.#xn[this.#Pn]&&this.#Nn()}).catch(()=>{})}#$n(){this.#Gs.setAttribute("data-video-tour-active",""),this.#Gs.events.Et("videotour-play"),this.#In&&this.#Gs.events.enabled.set(0)}#Vn(){this.#Gs.events.Et("videotour-pause"),this.#In&&this.#Gs.events.enabled.set(1)}#Fn(t){t=Math.max(0,Math.min(1,t)),this.#Cn=!!this.paused||!this.#An,this.pause(),this.#Cn||(this.#Sn=0,this.#$n());const i=this.duration*t*1e3;this.#Z=i,this.#On(i),this.#Cn?this.pause():(this.#Z=void 0,this.#Sn=0)}#On(t){let i,s=0;for(;s<this.#xn.length&&this.#xn[s].start<=t;s++)i=this.#xn[s];if(!i)return this.#xn.length&&this.#d.camera.stop(),this.paused||this.#Bn(0),void this.updateEvents(t/1e3);this.#d.camera.stop();const h=i.duration>0?(t-i.start)/i.duration:0;this.#En=Date.now()-i.start-i.duration*h,h>1?(this.#Bn(s),i.view&&this.#d.camera.setView(i.view,{noLimit:1})):(s>1&&this.#d.camera.setView(this.#xn[s-2].view,{noLimit:1}),this.#Bn(s-1,h)),this.updateEvents(t/1e3)}},Vs={UNSTARTED:-1,ENDED:0,PLAYING:1,PAUSED:2,BUFFERING:3,CUED:5},Rs=class{#Hn;#Xn=0;#Gn;#jn;#Yn;constructor(t,i,s={}){this.#Gn=t,this.#jn=i,this.#Yn=s}async initialize(){return await xt("YT","https://r2.micr.io/youtube.js","onYouTubeIframeAPIReady"),new Promise((t,i)=>{this.#Hn=new window.YT.Player(this.#Gn,{host:"https://www.youtube-nocookie.com",width:this.#jn.width.toString(),height:this.#jn.height.toString(),playerVars:{controls:0},events:{onError:()=>{this.#Yn.onError?.(new Error("YouTube player error")),i(new Error("YouTube player error"))},onReady:()=>{this.#Xn?i(new Error("Player destroyed during initialization")):(this.#Yn.onReady?.(),this.#Yn.onDurationChange?.(this.#Hn.getDuration()),t())},onStateChange:t=>this.#Wn(t.data)}})})}#Wn(t){switch(t){case Vs.UNSTARTED:this.#Yn.onBlocked?.(),this.#Yn.onPause?.();break;case Vs.ENDED:this.#Yn.onEnded?.();break;case Vs.PLAYING:this.#Yn.onPlay?.(),this.#Yn.onSeeked?.();break;case Vs.PAUSED:this.#Yn.onPause?.();break;case Vs.BUFFERING:this.#Yn.onBuffering?.(),this.#Yn.onSeeking?.()}}async play(){this.#Hn?.playVideo()}pause(){this.#Xn||this.#Hn?.pauseVideo?.()}async getCurrentTime(){return this.#Hn?.getCurrentTime?.()??0}setCurrentTime(t){this.#Yn.onSeeking?.(),this.#Hn?.seekTo?.(t)}async getDuration(){return this.#Hn?.getDuration?.()??0}async isPaused(){if(!this.#Hn)return 1;const t=this.#Hn.getPlayerState?.();return void 0===t||[Vs.UNSTARTED,Vs.ENDED,Vs.PAUSED,Vs.CUED].includes(t)}setMuted(t){t?this.#Hn?.mute?.():this.#Hn?.unMute?.()}setVolume(t){}destroy(){this.#Xn=1,this.#Hn?.destroy?.(),this.#Hn=void 0}},Ns=class{#Hn;#Xn=0;#Gn;#jn;#Yn;constructor(t,i,s={}){this.#Gn=t,this.#jn=i,this.#Yn=s}async initialize(){return await xt("Vimeo","https://r2.micr.io/vimeo.min.js"),new Promise((t,i)=>{this.#Hn=new window.Vimeo.Player(this.#Gn,{width:this.#jn.width.toString(),height:this.#jn.height.toString(),title:0,autoplay:0});const s=this.#Hn;s.on("error",()=>{this.#Yn.onError?.(new Error("Vimeo player error")),i(new Error("Vimeo player error"))}),s.on("loaded",()=>{this.#Xn?i(new Error("Player destroyed during initialization")):s.getVolume().then(()=>{this.#Yn.onReady?.(),t()})}),s.on("play",()=>{this.#Yn.onPlay?.(),this.#Yn.onSeeked?.()}),s.on("bufferstart",()=>{this.#Yn.onBuffering?.(),this.#Yn.onSeeking?.()}),s.on("seeked",()=>{this.#Yn.onSeeked?.()}),s.on("pause",()=>{this.#Yn.onPause?.()}),s.on("timeupdate",t=>{t&&(this.#Yn.onDurationChange?.(t.duration),this.#Yn.onTimeUpdate?.(t.seconds))}),s.on("ended",()=>{this.#Yn.onEnded?.()})})}async play(){this.#Hn?.play()}pause(){this.#Hn?.pause()}async getCurrentTime(){return await(this.#Hn?.getCurrentTime?.())??0}setCurrentTime(t){this.#Hn?.setCurrentTime?.(t)}async getDuration(){return await(this.#Hn?.getDuration?.())??0}async isPaused(){return await(this.#Hn?.getPaused?.())??1}setMuted(t){this.#Hn?.setVolume?.(t?0:1)}setVolume(t){this.#Hn?.setVolume?.(Math.max(0,Math.min(1,t)))}destroy(){if(this.#Xn=1,this.#Hn){for(const t of["error","loaded","play","bufferstart","seeked","pause","volumechange","timeupdate","ended"])this.#Hn.off(t);this.#Hn.destroy(),this.#Hn=void 0}}},Hs=class{element;callbacks;constructor(t,i={}){this.element=t,this.callbacks=i,this.#Un()}#Un(){const t=this.element,i=this.callbacks;i.onPlay&&t.addEventListener("play",i.onPlay),i.onPause&&t.addEventListener("pause",i.onPause),i.onEnded&&t.addEventListener("ended",i.onEnded),i.onSeeking&&t.addEventListener("seeking",i.onSeeking),i.onSeeked&&t.addEventListener("seeked",i.onSeeked),i.onTimeUpdate&&t.addEventListener("timeupdate",()=>i.onTimeUpdate?.(t.currentTime)),i.onDurationChange&&t.addEventListener("durationchange",()=>i.onDurationChange?.(t.duration)),i.onError&&t.addEventListener("error",()=>i.onError?.(new Error("Media playback error"))),i.onReady&&t.addEventListener("canplay",i.onReady)}async play(){try{await this.element.play()}catch(t){throw t instanceof Error&&!/pause\(\)/.test(t.message)&&this.callbacks.onBlocked?.(),t}}pause(){this.element.pause()}async getCurrentTime(){return this.element.currentTime}setCurrentTime(t){this.element.currentTime=t}async getDuration(){return this.element.duration}async isPaused(){return this.element.paused}setMuted(t){this.element.muted=t}setVolume(t){this.element.volume=Math.max(0,Math.min(1,t))}destroy(){const t=this.element,i=this.callbacks;i.onPlay&&t.removeEventListener("play",i.onPlay),i.onPause&&t.removeEventListener("pause",i.onPause),i.onEnded&&t.removeEventListener("ended",i.onEnded),i.onSeeking&&t.removeEventListener("seeking",i.onSeeking),i.onSeeked&&t.removeEventListener("seeked",i.onSeeked)}},Xs="https://r2.micr.io/hls-1.6.15.min.js",Gs={abrEwmaDefaultEstimate:1e7,abrEwmaDefaultEstimateMax:5e7},js=()=>"MediaSource"in globalThis||"ManagedMediaSource"in globalThis,Ys=t=>`https://videodelivery.net/${t}/manifest/video.m3u8`,Ws=class extends Hs{#Zn;#Xn=0;#qn;constructor(t,i,s={}){super(t,s),this.#qn=i}async initialize(){if(await xt("Hls",Xs),this.#Xn)throw new Error("Adapter destroyed during initialization");const t=new window.Hls(Gs);this.#Zn=t,t.loadSource(this.#qn),t.attachMedia(this.element),this.callbacks.onReady?.()}destroy(){this.#Xn=1,super.destroy(),this.#Zn?.destroy(),this.#Zn=void 0}};function Us(t){if(isNaN(t))return"0:00";const i=new Date(1e3*Math.abs(t)).toISOString().slice(11,19);return(0>t?"-":"")+(i.startsWith("00:")?i.slice(3):i)}var Zs=class extends xi{static tag="micrio-media-controls";#de={paused:1,ended:0};#Jn;#Kn;#Qn;#to;#io;#so;#ho;#xe=0;#eo;#no=0;#oo=0;#ro=-1;#L="";ln(){this.#Ne(),this.dn(ds.subscribe(()=>this.#Re()))}At(t){Object.assign(this.#de,t),this.isConnected&&(this.#Ne(),this.#xe&&this.#Re())}#Ne(){const t=this.#de;if(!this.#xe){this.#xe=1,this.#Jn=Mt("aside",{events:{click:t=>t.stopPropagation(),keydown:t=>t.stopPropagation()},parent:this}),this.#Kn=Mt("micrio-button",{parent:this.#Jn}),t.hasAudio&&(this.#Qn=Mt("micrio-button",{parent:this.#Jn})),t.subtitles&&(this.#to=Mt("micrio-button",{parent:this.#Jn}));const i=Mt("div"),s=Mt("div",{attrs:{"data-part":"bars"},children:[this.#so=Mt("div",{attrs:{"data-part":"bar"}})]}),h=t=>{0==t.button&&(window.addEventListener("mousemove",e),window.addEventListener("mouseup",n),e(t))},e=t=>{const i=s.getClientRects()[0];if(!i)return;const h=Math.min(1,Math.max(0,(t.clientX-i.left)/i.width));this.#de.onseek?.(h*this.#de.duration)},n=()=>{window.removeEventListener("mousemove",e),window.removeEventListener("mouseup",n)};s.addEventListener("mousedown",h),i.appendChild(s),this.#ho=Mt("span",{parent:i}),this.#Jn.appendChild(i),t.fullscreenEl&&(this.#io=Mt("micrio-fullscreen",{parent:this.#Jn})),t.onclose&&Mt("micrio-button",{setProps:{type:"close",title:X(ji).Zn,onclick:t.onclose},parent:this.#Jn})}this.#Re()}#Re(){const t=this.#de,i=X(ji),s=X(ds);if(t.paused===this.#eo&&t.seeking===this.#no&&void 0!==this.#eo||(this.#eo=t.paused,this.#no=!!t.seeking,this.#Kn.At({type:t.paused?"play":"pause",title:t.paused?i.co:i.lo,disabled:!!t.seeking,onclick:t.onplaypause})),this.#Qn&&t.muted!==this.#oo&&(this.#oo=!!t.muted,this.#Qn.At({type:t.muted?"muted":"unmuted",title:t.muted?i.ho:i.so,disabled:t.seeking,onclick:t.onmute})),this.#to&&this.#to.At({type:s?"subtitles":"subtitlesOff",active:s,title:i.do,onclick:()=>ds.set(!X(ds))}),this.#io&&this.#io.At({el:t.fullscreenEl}),t.duration&&!isNaN(t.duration)){const i=(t.currentTime??0)/t.duration*100;(Math.abs(i-this.#ro)>.5||0===i)&&(this.#ro=i,this.#so.style.width=`${i}%`);const s=t.getTimeDisplay?t.getTimeDisplay(t.currentTime??0,t.duration):(0>t.duration-(t.currentTime??0)?"":"-")+(t=>new Date(1e3*Math.abs(t)).toISOString().slice(14,19))(Math.abs(t.duration-(t.currentTime??0)));s!==this.#L&&(this.#L=s,this.#ho.textContent=s)}else"0:00"===this.#L&&0===this.#ro||(this.#L="0:00",this.#ro=0,this.#ho.textContent="0:00",this.#so.style.width="0%")}};customElements.define(Zs.tag,Zs);var qs,Js=/((?:https?:)?\/\/)?((?:www|m)\.)?((?:youtube\.com|youtu.be|youtube-nocookie\.com))(\/(?:[\w\-]+\?v=|embed\/|v\/)?)([\w\-]+)(\S+)?/,Ks=/vimeo\.com/,Qs=0,th=class extends xi{static tag="micrio-media";#ao;#co;#Gn;#qn;#lo;#uo;#do=1;#fo=0;#W=0;#_e=0;#po=0;#mo=0;#go;#wo(t,i,s){const h=t.match(Js)?.[5];if(!h)return;const e=Mt("iframe",{props:{src:`https://www.youtube-nocookie.com/embed/${h}?autoplay=${i.autoplay?1:0}&playsinline=1&enablejsapi=1`,width:String(i.width??400),height:String(i.height??240)},attrs:{allow:"autoplay; encrypted-media",allowfullscreen:""},parent:s});this.#Gn=e}#vo(t,i,s){const h=t.match(/\/(\d+)/);if(!h?.[1])return;const e=h[1],n=t.slice(t.indexOf(e)+e.length+1).replace(/\?.*$/,"")||void 0,o=Mt("iframe",{props:{src:`https://player.vimeo.com/video/${e}?${n?`h=${n}&`:""}title=0&portrait=0&sidedock=0&byline=0&controls=0`,width:String(i.width??400),height:String(i.height??240)},attrs:{allow:"autoplay; fullscreen",allowfullscreen:""},parent:s});this.#Gn=o}#Mo(t,i,s){const h=Ys(t.slice(8)),e=Mt("video",{props:{src:h,width:i.width??400,height:i.height??240,controls:0,preload:"metadata",playsInline:1,crossOrigin:"anonymous",...i.autoplay?{autoplay:1}:{},...i.muted?{muted:1}:{}},parent:s});this.#ao=e,this.#_o(e),this.#qn=h}#yo(t,i,s){if(!(this.#ao instanceof HTMLAudioElement)){const t=(qs||((qs=document.createElement("audio")).style.display="none",qs.controls=0,qs.preload="metadata",document.body.appendChild(qs)),Qs++,qs);this.#ao=t,this.#_o(t),this.dn(()=>{--Qs>0||(Qs=0,qs?.remove(),qs=void 0),this.#ao=void 0})}const h=this.#ao;h.src=t,i.autoplay?h.setAttribute("autoplay",""):h.removeAttribute("autoplay"),h.muted=!!i.muted}#bo(t,i,s){const h=Mt("iframe",{props:{src:t,width:String(i.width??400),height:String(i.height??240)},attrs:{allow:"autoplay; fullscreen",allowfullscreen:""},parent:s});this.#Gn=h}De(){const t=this.cn,i=t.src;if(!i&&!t.tour)return void this.replaceChildren();const s=i?Js.test(i):0,h=i?Ks.test(i):0,e=i?i.startsWith("cfvid://"):0,n=i?i.includes(".mp3")||i.includes(".ogg")||i.includes(".wav")||i.includes("audio/"):0,o=!(!i||s||h||e||n),r=!!t.tour&&!!t.image&&!i;this.replaceChildren();const a=Mt("figure",{className:t.className});if(t.is360&&a.style.setProperty("--micrio-background","transparent"),s?this.#wo(i,t,a):h?this.#vo(i,t,a):e?this.#Mo(i,t,a):n&&i?this.#yo(i,t,a):i&&this.#bo(i,t,a),t.figcaption&&Mt("figcaption",{textContent:t.figcaption,parent:a}),this.appendChild(a),this.#Gn){const i=t.width??400,e=t.height??240;s?(this.#lo=new Rs(this.#Gn,{width:i,height:e},{onPlay:()=>{this.#do=0,this.#ko(),this.#xo()},onPause:()=>{this.#do=1,this.#Po(),this.#xo()},onEnded:()=>{this.#fo=1,this.#do=1,this.#Po(),this.#xo(),t.onended?.()},onSeeking:()=>{this.#po=1},onSeeked:()=>{this.#po=0,this.#xo()}}),this.#lo.initialize().then(()=>{t.autoplay&&this.#lo.play()}).catch(()=>{})):h&&(this.#lo=new Ns(this.#Gn,{width:i,height:e},{onPlay:()=>{this.#do=0,this.#xo()},onPause:()=>{this.#do=1,this.#xo()},onEnded:()=>{this.#fo=1,this.#do=1,this.#xo(),t.onended?.()},onTimeUpdate:t=>{this.#_e=t,this.#xo()},onDurationChange:t=>{this.#W=t}}),this.#lo.initialize().then(()=>{t.autoplay&&this.#lo.play()}).catch(()=>{}))}if(e&&this.#qn&&this.#ao&&js()&&(this.#lo=new Ws(this.#ao,this.#qn,{onReady:()=>{this.#xo()},onEnded:()=>{this.#fo=1,this.#do=1,this.#xo(),t.onended?.()}}),this.#lo.initialize().catch(()=>{})),t.tour&&t.image&&(this.#ao||r)){if(this.#co=new Bs(t.image,t.tour),this.#ao){const t=()=>this.#co?.play();this.#ao.addEventListener("play",t),this.dn(()=>this.#ao?.removeEventListener("play",t))}if(r){this.#W=this.#co.duration;const i=setInterval(()=>{this.#_e=this.#co.currentTime,this.#W=this.#co.duration,this.#do=this.#co.paused,this.#fo=this.#co.ended,this.#co.updateEvents(this.#_e),this.#xo(),t.secondary||this.yn()?.dispatchEvent(new CustomEvent("timeupdate",{detail:this.#_e})),!this.#fo||this.#ao&&!this.#ao.ended||t.onended?.()},250);this.dn(()=>clearInterval(i)),t.autoplay&&this.#co.play()}else{const t=()=>this.#co?.pause();this.#ao?.addEventListener("ended",t),this.dn(()=>this.#ao?.removeEventListener("ended",t)),this.#ao?.paused||this.#co?.play()}}if(!t.secondary&&t.tour&&!("steps"in t.tour)){const i=this.yn()?.lang||"en",s=t.tour.i18n?.[i]?.subtitle;s?.src&&(this.#go=Mt("micrio-subtitles",{setProps:{src:s.src,mediaEl:this.#ao??this},parent:this.closest("micrio-main")||this.parentNode}))}if(0!=t.controls&&!o){const i=!(t.secondary||!t.tour||"steps"in t.tour||!t.tour.i18n?.[this.yn()?.lang||"en"]?.subtitle),s=()=>{const t=this.#ao;t?t.paused?(t.play().catch(()=>{}),this.#co?.play()):(t.pause(),this.#co?.pause()):this.#co?this.#co.paused?this.#co.play():this.#co.pause():this.#lo&&this.#lo.isPaused().then(t=>{t?this.#lo.play():this.#lo.pause()})},h=()=>{const t=this.#ao;t?(this.#mo=!this.#mo,t.muted=this.#mo,this.#xo()):this.#lo&&(this.#mo=!this.#mo,this.#lo.setMuted(this.#mo),this.#xo())},e=t=>{const i=this.#ao;i?i.currentTime=t:this.#co?this.#co.currentTime=t:this.#lo&&this.#lo.setCurrentTime(t)},o=()=>{const o=this.#ao;if(!o)return this.#co?void 0:void this.#lo;this.#_e=o.currentTime,this.#W=o.duration||0,this.#do=o.paused,this.#fo=o.ended||0,this.#po=o.seeking,this.#mo=o.muted,c.At({currentTime:this.#_e,duration:this.#W,paused:this.#do,ended:this.#fo,seeking:this.#po,muted:this.#mo,hasAudio:t.hasAudio??(!!t.src&&!n),subtitles:i,getTimeDisplay:t.getTimeDisplay,fullscreenEl:t.fullscreenEl??(n?void 0:a),onplaypause:s,onmute:h,onseek:e,onclose:t.onclose})},c=Mt("micrio-media-controls",{setProps:{paused:1,ended:0,hasAudio:t.hasAudio??(!!t.src&&!n),subtitles:i,getTimeDisplay:t.getTimeDisplay,fullscreenEl:t.fullscreenEl??(n?void 0:a),onplaypause:s,onmute:h,onseek:e,onclose:t.onclose},parent:a});if(this.#ao&&(this.#ao instanceof HTMLVideoElement||this.#ao instanceof HTMLAudioElement)&&!r){const i=()=>{o(),this.#co?.updateEvents(this.#_e),t.secondary||this.yn()?.dispatchEvent(new CustomEvent("timeupdate",{detail:this.#_e}))},s=()=>{o(),r||t.onended?.()},h=()=>{this.#po=1,o()},e=()=>{this.#po=0,o()};this.#ao.addEventListener("timeupdate",i),this.#ao.addEventListener("loadedmetadata",o),this.#ao.addEventListener("play",o),this.#ao.addEventListener("pause",o),this.#ao.addEventListener("ended",s),this.#ao.addEventListener("seeking",h),this.#ao.addEventListener("seeked",e),this.dn(()=>{const t=this.#ao;t&&(t.removeEventListener("timeupdate",i),t.removeEventListener("loadedmetadata",o),t.removeEventListener("play",o),t.removeEventListener("pause",o),t.removeEventListener("ended",s),t.removeEventListener("seeking",h),t.removeEventListener("seeked",e))}),o()}}}#_o(t){const i=this._n("volume");i&&this.dn(i.subscribe(i=>{t.volume=i}))}#ko(){null==this.#uo&&(this.#uo=setInterval(async()=>{this.#lo&&(this.#_e=await this.#lo.getCurrentTime(),this.#W=await this.#lo.getDuration(),this.#co?.updateEvents(this.#_e),this.#xo())},250))}#Po(){null!=this.#uo&&(clearInterval(this.#uo),this.#uo=void 0)}#xo(){const t=this.querySelector("micrio-media-controls");t&&t.At({currentTime:this.#_e,duration:this.#W,paused:this.#do,ended:this.#fo,seeking:this.#po,muted:this.#mo})}un(){this.#co?.destroy(),this.#lo?.destroy(),this.#Po(),this.#go?.remove()}};customElements.define(th.tag,th);var ih=class extends xi{static tag="micrio-marker-popup";#de={marker:null};#Ln;#To;#So=0;#Ao=0;#Co=0;#Eo=new WeakMap;ln(){const{marker:t}=this.#de,i=this.yn();i&&t&&(t.tags?.forEach(t=>this.classList.add(t)),bt().then(()=>this.querySelector("micrio-button:last-child > button")?.focus()),this.dn(i.state.popup.subscribe(i=>{this.#Ao=!i||i!=t,this.classList.toggle("destroying",this.#Ao)})),this.addEventListener("transitionend",t=>{t.target===this&&this.#Ao&&this.remove()}),this.#ue())}At(t){void 0!==t.marker&&t.marker.id!==this.#de.marker?.id&&(this.#de.marker=t.marker,this.isConnected&&this.#ue())}#ue(){const{marker:t}=this.#de,i=this.yn();if(!i||!t)return;const s=xi.an,h=t.id?s.get(t.id):void 0;if(!h)return;const e=X(i.state.tour),n=X(i.current),o=X(ji),r=h.$settings._markers??{},a=t.data||{},c=r.canMinimizePopup,l=e&&"steps"in e?e:void 0,u=(l?i.Dh.find(t=>t.$data?.markerTours?.find(t=>t.id===l.id)):void 0)?.$settings._markers,d=l&&l.steps?.findIndex(i=>i.startsWith(t.id))>=0,f=!i.canvas.$isMobile&&d&&!l?.isSerialTour&&(u?.tourControlsInPopup??r.tourControlsInPopup),p=f||(l?l.currentStep==l.steps.length-1:void 0),m=t=>{e&&d&&"steps"in e?t instanceof Event&&p?i.state.tour.set(void 0):e.next?.():n&&n.id!=h.id&&a.micrioLink?.id==n.id?(i.open(h.id),h.state.marker.set(void 0),i.state.popup.set(void 0)):h.state.marker.set(void 0)},g=()=>{if(this.#So=!this.#So,this.classList.toggle("minimized",this.#So),this.#Ln)for(let t=0;t<this.#Ln.children.length;t++){const i=this.#Ln.children[t];i&&i!==this.#To&&(this.#Eo.has(i)||(this.#Eo.set(i,i.offsetHeight),i.style.height=i.offsetHeight+"px"),setTimeout(()=>{i.style.height=this.#So?"0px":this.#Eo.get(i)+"px"},100))}};if(this.replaceChildren(),!f){const t=Mt("aside");a.alwaysOpen||Mt("micrio-button",{setProps:{type:!d||p?"close":"next",title:!d||p?o.eo:o.no,disabled:this.#Co,onclick:m},parent:t}),c&&Mt("micrio-button",{setProps:{type:this.#So?"up":"down",title:o.ao,onclick:g},parent:t}),this.appendChild(t)}this.#Ln=Mt("micrio-marker-content",{setProps:{marker:t,onclose:m},parent:this}),f&&Q.request(()=>{const t=document.querySelector("micrio-tour")?.aside;t&&!this.contains(t)&&this.appendChild(t)})}};customElements.define(ih.tag,ih);var sh=class extends xi{static tag="micrio-marker";#de={marker:null};#Io=0;#Lo=0;#zo=0;#Do=0;#Fo=1;#$o=0;#Oo="";#Qe;#Bo=0;#Vo;ln(){const{marker:t,image:i,forceHidden:s=0}=this.#de,h=this.yn();if(!h||!i||!t)return;const e=xi.an;!e.has(t.id)&&i&&e.set(t.id,i);const n=h.events,o=X(h.Wt),r=i.$settings._markers??{},a=t.i18n?.[o],c=t.data??{},l=0==t.data?.showTitle||!!r.noTitles||!!i.$settings.omni?.sideLabels,u=/[?&]micrioNoTooltips/.test(location.search)||!!i.$settings.omni?.sideLabels;let d="book3d"==h.$current?.album?.info?.type?void 0:t.view;if(t.videoTour){const i=t.videoTour.i18n?.[o]?.timeline;i?.length&&(d=i[0].rect)}const f=a&&!l&&(a.label||a.title),p="cluster"==t.type,m=p||"link"!=t.type?"media"==t.type?"play":void 0:"link",g=null!=t.data?.customIconIdx?i.$settings._markers?.customIcons?.[t.data.customIconIdx]:t.data?.icon||r.markerIcon,w=!!m||!!g,v=w||"default"==t.type,M=i.$settings.omni;if(i.Bt&&M){const s=(t.rotation??0)+(t.backside?Math.PI:0);if(this.#Bo=i.camera._t(s)??0,t.visibleArc){const s=i.camera._t(t.visibleArc[0]),h=i.camera._t(t.visibleArc[1]);null!=s&&null!=h&&(this.#Vo=[s,h])}}const _=!!t.data?.scales||!!i.$settings.markersScale,y=()=>{if(i.F&&_)this.#Oo=i.camera.getMatrix(t.x,t.y,1,1,0,0,0).join(","),this.style.setProperty("--mat",`matrix3d(${this.#Oo})`),this.classList.add("mat3d");else{const s=i.camera.R(t.x,t.y,{radius:t.radius,rotation:t.rotation});[this.#zo,this.#Do,this.#Fo,this.#$o]=s;const h=i.F&&this.#$o>=0||-1==this.#zo&&-1==this.#Do;if(this.#Lo=h,i.Bt&&M)if(this.#Vo&&null!=t.rotation){const t=M.frames/(M.layers?.length??1);let s=(i.omni?.currentIndex??0)-this.#Bo;s>t/2&&(s-=t),-t/2>s&&(s+=t),this.#Lo=s<=this.#Vo[0]||s>=this.#Vo[1]}else M.distance&&(this.#Lo=0>this.#$o);this.style.setProperty("--x",`${this.#zo}px`),this.style.setProperty("--y",`${this.#Do}px`),_&&this.style.setProperty("--scale",`${this.#Fo}`),this.classList.remove("mat3d"),this.classList.toggle("behind",this.#Lo)}},b=()=>{if(t.onclick)return t.onclick(t);r.noMarkerActions||("cluster"==t.type?d&&h.$current?.$info&&i.camera.flyToView(d,{limitZoom:1}):i.state.marker.set(t))},k=()=>{r.noMarkerActions||(this.parentNode?.scrollTo(0,0),clearTimeout(this.#Qe),this.#Qe=setTimeout(()=>{const s=i.camera.getXY(t.x,t.y);!this.#Io&&(0>s[0]||s[0]>=h.offsetWidth||0>s[1]||s[1]>=h.offsetHeight||i.F&&s[3]>4)&&i.camera.flyToCoo([t.x,t.y],{speed:2,limit:1}).catch(()=>{})},150))},x=async()=>{if(this.#Io)return void(X(h.state.popup)||i.state.marker.set(void 0));if(this.#Io=1,this.classList.add("opened"),clearTimeout(this.#Qe),r.noMarkerActions)return;n.Et("marker-open",t);const s=X(h.state.tour);!s||"steps"in s&&s.steps?.some(i=>i.startsWith(t.id))||h.state.tour.set(void 0),await G(),!d||c.noAnimate||t.videoTour?P():i.camera.flyToView(d,{omniIndex:i.Bt?this.#Bo:void 0,isJump:1}).then(P).catch(()=>{i.state.$marker===t&&(i.zt=void 0,i.state.marker.set(void 0))})},P=async()=>{if(p)return;if(i.state.$marker!=t){if(!i.state.$marker)return;return i.state.marker.set(t)}if(r.noMarkerActions)return;const s=X(h.state.tour);if(n.Et("marker-opened",t),"popup"==t.popupType&&(a?.title||a?.body||a?.bodySecondary||a?.embedUrl||t.images?.length||t.videoTour))G().then(()=>h.state.popup.set(t));else if("popover"==t.popupType)h.state.popover.set({marker:t,image:i,markerTour:s&&"steps"in s?s:void 0});else if(t.videoTour&&!s){h.state.tour.set(t.videoTour);const s=h.state.tour.subscribe(t=>{t||(s(),i.state.marker.set(void 0))})}const e=c.micrioLink?.id;e&&G().then(()=>{h.open(e,{vector:ys(h,e)?.vector})});const o=c.micrioSplitLink;if(o&&!Zi(i)){const t=Yi(o);if(t){const s=Ui(i);if(s)if(s.id===t.micrioId){if(t.markerId){const i=s.$data?.markers?.find(i=>i.id===t.markerId);i?.view&&s.camera.flyToView(i.view,{isJump:1})}}else Ji(h,i),G().then(()=>qi(h,i,t,{isPassive:t.follows}));else qi(h,i,t,{isPassive:t.follows})}}},T=()=>{this.classList.remove("opened"),n.Et("marker-closed",t),h.state.popover.set(void 0),h.state.popup.set(void 0)};if(this.dn(i.state.marker.subscribe(s=>{if("string"==typeof s&&s==t.id)i.state.marker.set(t);else if(s==t)x();else if(!(c.alwaysOpen||s&&s==t)){if(this.#Io){if(c.micrioSplitLink){const t=s&&"string"!=typeof s?s:null;if(t&&t.data?.micrioSplitLink){const s=Yi(t.data.micrioSplitLink),e=Ui(i);s&&e&&s.micrioId===e.id||Ji(h,i)}else Ji(h,i)}T()}else s||this.classList.remove("opened");this.#Io=0,p||X(h.state.tour)||i.camera.stop()}})),t.noMarker||this.dn(i.state.view.subscribe(()=>{y()})),s||G().then(()=>{const s=X(h.state.popup),e=X(h.state.tour);this.#Io&&!t.noMarker&&s&&s!=t&&!e?i.state.marker.set(void 0):c.alwaysOpen&&P()}),this.classList.toggle("cluster",p),this.classList.toggle("default",!!v),this.classList.toggle("has-icon",w),this.classList.toggle("has-custom-icon",!!g),!t.htmlElement&&!t.noMarker){const i=Mt("button",{props:{...u||p?{}:{title:a?.label||a?.title||""},id:t.id},attrs:{"data-scroll-through":""},events:{click:b,focus:k,blur:()=>clearTimeout(this.#Qe),mouseenter:()=>h.state.markerHoverId.set(t.id),mouseleave:()=>h.state.markerHoverId.set(void 0)},parent:this});g?Mt("img",{props:{src:"string"==typeof g?g:g.src,alt:""},parent:i}):m&&Mt("micrio-icon",{setProps:{name:m},parent:i}),f&&Mt("label",{textContent:a?.label||a?.title||"",attrs:{for:t.id,"data-scroll-through":""},parent:i})}t.noMarker||y(),t.tags&&t.tags.forEach(t=>this.classList.add(t))}At(t){Object.assign(this.#de,t)}un(){clearTimeout(this.#Qe)}};customElements.define(sh.tag,sh);var hh=class extends xi{static tag="micrio-markers";#de={image:null};ln(){const{image:t}=this.#de,i=this.yn();if(!i||!t)return;const{Qt:s,state:h}=i,e=i.Dh[0]?.grid,n=e?.In,o=e?.Ln;this.dn(t.Xt.subscribe(t=>{if(!t||4>t.length)return;t=t.map(t=>Math.round(100*t)/100);const s=i.canvas.viewport;this.style.left=t[0]?`${t[0]}px`:"",this.style.top=t[1]?`${t[1]}px`:"",this.style.width=t[2]==s.width?"":`${t[2]}px`,this.style.height=t[3]==s.height?"":`${t[3]}px`}));const r=()=>{if(!t.$settings.clusterMarkers)return;const s=t.$data?.markers?.filter(t=>!t.i18n||t.i18n[X(i.Wt)]);if(!s)return;const h=t.$settings.clusterMarkerRadius??24,e=s.map(i=>{const s=t.camera.R(i.x,i.y,{radius:i.radius,rotation:i.rotation});return[s[0],s[1]]}),n=[];for(let t=0;t<s.length;t++)for(let i=t+1;i<s.length;i++){if(s[i].tags?.includes("no-cluster"))continue;if(Math.abs(e[i][0]-e[t][0])>=h||Math.abs(e[i][1]-e[t][1])>=h)continue;const o=n.find(s=>s.includes(t)||s.includes(i));o?o.push(t,i):n.push([t,i])}const o=n.map(t=>[...new Set(t)].sort((t,i)=>t-i)),r=new Set;for(const t of o)for(const i of t)r.add(i);for(let t=0;t<s.length;t++)this.querySelector(`[data-marker-id="${CSS.escape(s[t].id)}"]`)?.classList.toggle("overlapped",r.has(t));const a=new Set(o.map(t=>t.join(",")));for(const t of this.querySelectorAll(":scope > micrio-marker.cluster")){const i=t.getAttribute("data-marker-id");i&&!a.has(i)&&t.remove()}for(const i of o){const h=i.join(",");if(this.querySelector(`:scope > micrio-marker.cluster[data-marker-id="${CSS.escape(h)}"]`))continue;const e=i.reduce((t,i)=>t+s[i].x,0)/i.length,n=i.reduce((t,i)=>t+s[i].y,0)/i.length,o=Math.min(...i.map(t=>s[t].view?s[t].view[0]:s[t].x)),r=Math.max(...i.map(t=>s[t].view?s[t].view[0]+s[t].view[2]:s[t].x)),a=Math.min(...i.map(t=>s[t].view?s[t].view[1]:s[t].y)),c=Math.max(...i.map(t=>s[t].view?s[t].view[1]+s[t].view[3]:s[t].y)),l=Math.max(.1,r-o),u=Math.max(.1,c-a),d=[o+(r-o)/2-l/2,a+(c-a)/2-u/2,l,u];Mt("micrio-marker",{attrs:{"data-marker-id":h},setProps:{marker:{id:h,x:e,y:n,type:"cluster",title:i.length+"",view:d,data:{},popupType:"none",tags:[]},image:t},parent:this})}},a=()=>{const h=t.$data?.markers,a=n?X(n):void 0,c=o?X(o):void 0,l=e&&a!=t&&c&&0>c.indexOf(t),u=!!t.$settings._markers?.showTitles;if(this.classList.toggle("inactive",!!l),this.classList.toggle("show-titles",u),!X(s)&&i.spaceData){const s=i.spaceData.links.filter(i=>i[0]==t.id||i[1]==t.id),h=new Set(s.map(i=>i[0]==t.id?i[1]:i[0]));for(const t of this.querySelectorAll(":scope > micrio-waypoint"))h.has(t.getAttribute("data-target-id"))||t.remove();for(const i of s){const s=i[0]==t.id?i[1]:i[0];let h=this.querySelector(`:scope > micrio-waypoint[data-target-id="${CSS.escape(s)}"]`);h||(h=Mt("micrio-waypoint",{attrs:{"data-target-id":s},setProps:{targetId:s,settings:i[2]?.[t.id],image:t},parent:this}))}}else for(const t of this.querySelectorAll(":scope > micrio-waypoint"))t.remove();if(h){const s=X(i.Wt),e=h.filter(t=>!t.i18n||t.i18n[s]),n=new Set(e.map(t=>t.id));for(const t of this.querySelectorAll(":scope > micrio-marker")){const i=t.getAttribute("data-marker-id");i&&!t.classList.contains("cluster")&&(n.has(i)||t.remove())}for(const i of e){let s=this.querySelector(`:scope > micrio-marker[data-marker-id="${CSS.escape(i.id)}"]`);s||(s=Mt("micrio-marker",{attrs:{"data-marker-id":i.id},setProps:{marker:i,image:t,...i.noMarker?{forceHidden:1}:{}},parent:this}))}}else for(const t of this.querySelectorAll(":scope > micrio-marker"))t.remove();if(l)for(const t of this.querySelectorAll(":scope > micrio-marker, :scope > micrio-waypoint"))t.remove();t.$settings.clusterMarkers&&r()};if(this.gn(t.data,a),this.gn(s,a),h.tour&&this.gn(h.tour,a),n&&this.gn(n,a),o&&this.gn(o,a),this.wn(i.Wt,a),t.$settings.clusterMarkers&&this.dn(t.state.view.subscribe(r)),!t.grid&&t.$settings._markers?.zoomOutAfterClose){let s=0;this.dn(t.state.marker.subscribe(h=>{h&&"string"!=typeof h&&!t.zt&&!h.noMarker&&h.view?(t.zt=X(i.state.tour)&&!("steps"in X(i.state.tour))?void 0:structuredClone(t.state.$view??t.camera?.getView()),s=!!h.videoTour):h||!t.zt||X(i.state.tour)||setTimeout(()=>{if(t.zt){const i=t.zt,s=Math.min(1,i[2]),h=Math.min(1,i[3]),e=s/2,n=h/2,o=Math.max(e,Math.min(1-e,i[0]+e)),r=Math.max(n,Math.min(1-n,i[1]+n));t.camera.flyToView([o-e,r-n,s,h],{speed:t.$settings._markers?.zoomOutAfterCloseSpeed}).catch(()=>{})}t.zt=void 0,s=0},s?250:10)}))}a()}At(t){void 0!==t.image&&(this.#de.image=t.image)}};customElements.define(hh.tag,hh);var eh=class extends xi{static tag="micrio-dial";#de={currentRotation:0,frames:1};ln(){const t=this.yn();if(!t)return;const i=t.$current?.camera;if(!i)return;let s,h=0,e=0;const n=s=>{const n=Math.max(1,(i.getXY(1,.5)[0]-i.getXY(0,.5)[0])/t.offsetWidth),o=(e/360+(h-s.clientX)/(this.offsetWidth*n))*this.#de.frames;this.#de.onturn?.(o)},o=()=>{s&&t.releasePointerCapture(s),t.removeAttribute("data-panning"),t.removeEventListener("pointermove",n),t.removeEventListener("pointerup",o)};this.addEventListener("pointerdown",i=>{i.stopPropagation(),i.preventDefault(),0==i.button&&(t.addEventListener("pointermove",n),t.addEventListener("pointerup",o),t.setAttribute("data-panning",""),t.setPointerCapture(s=i.pointerId),e=this.#de.currentRotation,h=i.clientX)})}At(t){if(Object.assign(this.#de,t),this.isConnected){const t=-this.#de.currentRotation/360*(this.offsetWidth??0);this.style.setProperty("--micrio-dial-offset",`${t}px`)}}};customElements.define(eh.tag,eh);var nh=class extends xi{static tag="micrio-minimap";#de={image:null};#Ro=null;#No;#Ho;#Xo;#pn;#Go;ln(){this.#sn()}At(t){void 0!==t.image&&t.image!==this.#de.image&&(this.#de.image=t.image,this.isConnected&&(this.#Xo?.(),this.replaceChildren(),this.#Ro=null,this.#sn()))}#sn(){const{image:t}=this.#de;if(!this.yn()||!t)return;const i=t.$info;if(!i)return;const s=t.camera,h=t.$settings,e=h.minimapWidth??200,n=h.minimapHeight??160,o=i.width/i.height,r=e/o>n?Math.round(n*o):e,a=e/o>n?n:Math.round(e/o),c=-s.rotationY/(2*Math.PI),l=self.crossOriginIsolated;let u=l?void 0:t.thumbSrc;const d=s=>{if(!s||!this.#Ro)return;const h=this.#Ro;h.clearRect(0,0,r,a),clearTimeout(this.#pn),this.classList.remove("hidden"),this.#pn=setTimeout(()=>this.classList.add("hidden"),2500);const e=!(!t.thumbSrc&&!u);if(i.is360){e&&(h.globalCompositeOperation="source-over",h.fillStyle="rgba(0,0,0,.45)",h.fillRect(0,0,r,a),h.globalCompositeOperation="destination-out");const t=it(s[0]+s[2]/2),i=Math.max(0,Math.min(1,s[1]+s[3]/2)),n=Math.round(t*r),o=Math.round(i*a),c=Math.max(1,Math.round(s[2]*r/2));h.fillStyle=e?"white":"rgba(255,255,255,.8)",h.fillRect(Math.round(n-c),0,2*c,a);const l=Math.max(1,Math.round(s[3]*a/2));h.fillRect(0,Math.round(o-l),r,2*l),h.beginPath(),h.arc(n,o,3,0,2*Math.PI),h.fill(),e&&(h.globalCompositeOperation="source-over")}else e?(h.globalCompositeOperation="source-over",h.fillStyle="rgba(0,0,0,.5)",h.fillRect(0,0,r,a),h.globalCompositeOperation="destination-out"):(h.fillStyle="rgba(0,0,0,.5)",h.fillRect(0,0,r,a)),h.beginPath(),h.fillStyle="white",h.rect(Math.floor(s[0]*r),Math.floor(s[1]*a),Math.ceil(s[2]*r),Math.ceil(s[3]*a)),e&&(h.fill(),h.globalCompositeOperation="source-over"),h.stroke()},f=t=>{if(!this.#Ho)return;const i=Math.max(0,Math.min(1,(t.clientX-this.#Ho.left)/this.#Ho.width)),h=Math.max(0,Math.min(1,(t.clientY-this.#Ho.top)/this.#Ho.height));this.#No?s.setView([i-this.#No.width/2,h-this.#No.height/2,this.#No.width,this.#No.height]):s.setCoo(i,h)},p=()=>{window.removeEventListener("mousemove",f),window.removeEventListener("mouseup",p),this.#No=void 0},m=Mt("canvas",{props:{width:r,height:a},className:h.alwaysShowMinimap?"fixed":void 0,events:{mousedown:t=>{if(0!=t.button)return;window.addEventListener("mousemove",f),window.addEventListener("mouseup",p),this.#Ho=m.getBoundingClientRect();const i=s.getView();i&&(this.#No={width:i[2],height:i[3]}),f(t)}},parent:this});u&&(m.style.backgroundImage=`url('${u}')`,0!=c&&(m.style.backgroundPositionX=r*c+"px")),m.addEventListener("wheel",t=>{s.zoom(t.deltaY*(Et.firefox?50:1))},{passive:1}),this.#Ro=m.getContext("2d"),this.#Ro&&(this.#Ro.lineWidth=1,this.#Ro.strokeStyle="white"),l&&t.thumbSrc&&fetch(t.thumbSrc).then(t=>t.blob()).then(i=>{this.#Go&&URL.revokeObjectURL(this.#Go),this.#Go=URL.createObjectURL(i),u=this.#Go,m.style.backgroundImage=`url('${u}')`,d(X(t.state.view))}),this.#Xo?.(),this.#Xo=t.state.view.subscribe(d),this.dn(this.#Xo)}un(){clearTimeout(this.#pn),this.#Go&&URL.revokeObjectURL(this.#Go),this.#Go=void 0}};customElements.define(nh.tag,nh);var oh=class{#jo=0;#Yo=void 0;#Wo=void 0;#Uo=void 0;#Zo=void 0;#qo=0;#Jo=1;So=void 0;#Ko=1;#y;#d;#Qo;#do;#tr;constructor(t,i,s,h,e){this.#y=t,this.#d=i,this.#Qo=s,this.#do=h,this.#tr=e,this.#jo=!!s.video?.streamId&&!s.video?.transparent,this.So=i.Dt,this.#Jo=s.video?.autoplay??1;let n=1;this.#Wo=this.#d.visible.subscribe(t=>{clearTimeout(this.#Zo),this.#Zo=t?setTimeout(()=>{this.#Ko&&(this.So?(this.#kh(),this.#Jo&&!this.#do&&this.So.play().catch(t=>console.warn("WebGL Embed video play() failed",t))):this.#ir())},n?0:100):setTimeout(()=>this.So?.pause(),0),n=0})}Ao(){clearTimeout(this.#Zo)}Co(){this.#Ko=0,clearTimeout(this.#Zo),clearTimeout(this.#Uo),this.So?.pause(),this.#sr(),this.#Wo?.(),this.#Yo?.destroy(),this.#Yo=void 0,this.#hr()}#er(t){this.So&&(this.#do=!t,t?this.So.dataset.playing="1":delete this.So.dataset.playing,this.#y.Ie(this.#d,t),this.#Qo.hideWhenPaused&&this.#y.Ee(this.#d,t?1:0),t&&this.#y.render())}#ir(){if(!this.#Qo.video||this.So)return;const t=this.#jo?Ys(this.#Qo.video.streamId):this.#Qo.video.src;t?(this.So=Mt("video",{props:{crossOrigin:"anonymous",playsInline:1,width:this.#Qo.width,height:this.#Qo.height,muted:this.#Qo.video.muted}}),this.#kh(),this.#jo&&js()?xt("Hls",Xs).then(()=>{this.#Yo=new window.Hls(Gs),this.#Yo.loadSource(t),this.So&&this.#Yo.attachMedia(this.So)}).catch(t=>console.error("[Micrio GL Embed] Failed to load HLS.js:",t)):this.So.src=t):console.error("[Micrio GL Embed] No video source found for embed:",this.#Qo.id)}#nr={play:()=>this.#er(1),pause:()=>this.#er(0),playing:()=>{!this.#d.Dt&&this.So&&("requestVideoFrameCallback"in this.So?this.So.requestVideoFrameCallback(()=>{this.So&&this.#Ko&&(this.#d.video.set(this.So),this.#y.render())}):this.#d.video.set(this.So))},canplayEvt:Et.iOS?"loadedmetadata":"canplay",canplay:()=>{this.So&&this.#Ko&&(this.#Jo&&!this.#do?(this.So.play().catch(t=>console.warn("WebGL Embed video play() failed on canplay:",t)),this.#tr()):this.#Qo.hideWhenPaused||(this.#er(1),G().then(()=>{this.#er(0),this.#hr()})))}};#hr(){this.#qo&&this.So?.parentNode&&(this.So.remove(),this.#qo=0)}#kh(){if(!this.#Qo.video||!this.So)return;const t=this.#Qo.video.loopAfter,i=this.So;this.#Qo.video.loop&&t?(i.loop=0,i.onended=()=>{this.#er(0),this.#Uo=setTimeout(()=>i?.play().catch(t=>console.warn("WebGL Embed video loop play() failed:",t)),1e3*t)},i.onplay=()=>this.#er(1)):(i.loop=this.#Qo.video.loop,i.onended=null,i.onplay=null),i.parentNode||this.#Jo||this.#jo||(i.setAttribute("style","opacity:0;position:absolute;top:0;left:0;transform-origin:left top;transform:scale(0.1);pointer-events:none;"),document.body.appendChild(i),this.#qo=1),i.addEventListener("play",this.#nr.play),i.addEventListener("pause",this.#nr.pause),i.addEventListener("playing",this.#nr.playing,{once:1}),i.addEventListener(this.#nr.canplayEvt,this.#nr.canplay,{once:1})}#sr(){const t=this.So;t&&(t.removeEventListener("play",this.#nr.play),t.removeEventListener("pause",this.#nr.pause),t.removeEventListener("playing",this.#nr.playing),t.removeEventListener(this.#nr.canplayEvt,this.#nr.canplay),t.onended=null,t.onplay=null)}},rh=class extends xi{static tag="micrio-embed";#de={embed:null,image:null};#Gs;#v;#or;#rr;#ar;#Ze=0;#cr;#lr;#ur;#dr;#fr;#pr;#mr=0;#gr=0;#Jo=1;#wr=0;#vr=0;#Mr=0;#_r=0;#yr=0;#br=0;#kr=0;#xr;#Pr=0;#Tr=0;#Sr=0;#do=0;#Ar=0;#Cr=0;#$o=0;#Er=0;#Ir=0;#Lr=0;#zr=1;#Dr=0;#Fr=0;#$r=0;#Or=1;#ri=1;#zo=0;#Do=0;#Fo=0;#Br=0;#Vr=1;#Rr=1;#Nr="";#Hr=NaN;#Xr=NaN;#Gr=NaN;#Xs=1;#jr=0;#Yr="";ln(){const{embed:t,image:i,marker:s}=this.#de;if(this.#Gs=this.yn(),!this.#Gs||!t||!i)return;if(this.#v=i.$info,!this.#v)return;t.uuid||(t.uuid=S()),this.#gr=i.F,this.#Jo=t.video?.autoplay??1;const h=i.grid;if(h){const t=h.In,s=h.Ln,e=()=>{const e=X(t),n=s?X(s):void 0,o=!!(h&&e&&e!=i&&n&&0>n.indexOf(i));this.#ar?.classList.toggle("inactive",o)};this.mn(t,e),s&&this.mn(s,e)}this.#or=i.Gt.find(i=>i.uuid==t.uuid||i.$info?.title==t.uuid),this.#Mr=matchMedia("(dynamic-range: high)").matches||Et.OSX,this.#wr=t.src?.toLowerCase().endsWith(".svg")??0,this.#vr=t.width&&t.height?1048576>t.width*t.height:0;const e=/iPhone OS 14_/i.test(navigator.userAgent),n=this.#Gs.getAttribute("data-embeds-inside-gl"),o="true"===n||"false"===n?n:"auto",r="true"===o;this.#yr="false"===o||"auto"===o&&(this.#wr||e||!this.#Mr&&!!t.video),this.#_r="book3d"==this.#Gs.$current?.album?.info?.type,this.#Br=this.#gr||this.#_r,this.#br=!(this.#_r||this.#yr||(!t.micrioId||!r&&this.#vr&&t.src)&&(!t.video||t.video.controls||t.video.transparent)),this.#kr=!t.clickAction&&!t.frameSrc&&!s,this.#xr="href"==t.clickAction?t.clickTarget:void 0,this.#Pr=!(!this.#xr||!t.clickTargetBlank),this.#Tr=this.#br&&!!t.video,this.#Sr=!this.#br||!!t.clickAction,this.#Cr=!!t.hideWhenPaused,t.video&&!t.video.controls&&(t.video.muted=1),this.#Wr(),this.#Sr&&this.#Ur(t,s),this.#_r&&this.#Sr&&(this.#mr=1,this.#pr=setTimeout(()=>{this.#pr=void 0,this.#mr=0,this.#Zr()},500)),this.#br&&this.#qr();const a=i.camera?.image,c=a&&a!==i?a:i;(this.#Sr||t.video?.pauseWhenSmallerThan||t.video?.pauseWhenLargerThan)&&(this.mn(c.state.view,t=>{this.#ur=t,this.#Zr()}),this.mn(c.Xt,t=>{this.#dr=t,this.#Zr()})),this.#Zr(),this.addEventListener("change",this.#Jr)}#Wr(){const{embed:t}=this.#de,i=t.area;this.#$o=i[2],this.#Er=i[3],this.#Ir=i[0]+this.#$o/2,this.#Lr=i[1]+this.#Er/2,this.#zr=t.scale||1,this.#Dr=t.rotX??0,this.#Fr=t.rotY??0,this.#$r=t.rotZ??0,this.#Or=t.scaleX??1,this.#ri=t.scaleY??1,this.#Vr=(this.#_r?this.#$o:1)*this.#zr,this.#Rr=this.#_r?t.frameSrc||t.video?this.#$o*this.#v.width:t.src?t.width||this.#$o*this.#v.width:100:1;const s=this.#br&&t.micrioId&&t.width,h=s?10:1;if(this.#_r)return;let e=this.#$o*(this.#v.width/(t.width??100)/(this.#br?t.width?this.#$o:1:this.#zr))*(this.#gr?Math.PI/2:1);const n=[];s&&t.width&&(e=this.#$o/(t.width/this.#v.width)*h*(this.#gr?Math.PI/2:1),n.push(`width:${t.width/h}px`)),n.push(`--ratio:${this.#$o/this.#Er*this.#v.width/this.#v.height};--scale:${e}`),this.#wr&&t.height&&n.push(`height:${t.height}px`),this.#Yr=n.join(";"),t.video&&(t.video.width>t.video.height?this.#Ar=Math.min(t.video.width,this.#$o*this.#v.width,2048):this.#Ar=Math.min(t.video.height,this.#Er*this.#v.height,2048)/(t.video.height/t.video.width))}#Ur(t,i){if(this.#ar=Mt(this.#xr?"a":"div",{className:(this.#kr?"no-events":"")+(this.#Cr&&!this.#br&&t.video?" hide-when-paused":"")+(this.#gr||this.#_r?" embed3d":"")||void 0,id:t.id?"e-"+t.id:void 0,props:this.#xr?{href:this.#xr}:{role:"figure"},attrs:this.#xr&&this.#Pr?{target:"_blank"}:void 0,events:{click:()=>this.#Oh(),keydown:()=>this.#Oh()},parent:this}),t.video&&!this.#br)this.#Kr(t);else if(t.frameSrc)this.#Qr(t);else if(!this.#br&&t.src)Mt("img",{props:{src:t.src,alt:"Embed",...this.#wr&&t.width?{width:t.width}:{},...this.#wr&&t.height?{height:t.height}:{}},style:this.#Yr,attrs:{"data-scroll-through":""},parent:this.#ar});else{const s=X(this.#Gs.Wt),h=t.title||i?.i18n?.[s]?.title;Mt("button",{props:h?{title:h}:void 0,style:this.#Yr,attrs:{"data-scroll-through":"","aria-label":"embed-button"},parent:this.#ar})}}#Kr(t){const i=t.video,s=this.#Ar,h=s/(i.width/i.height),e=this.#$o*this.#v.width/s,n=Mt("video",{props:{src:i.src,width:Math.round(s),height:Math.round(h),controls:!!i.controls,loop:!(!i.loop||i.loopAfter&&i.loopAfter>0),muted:!!i.muted,playsInline:1,crossOrigin:"anonymous",preload:"metadata"},style:1!==e?`transform:scale(${e})`:void 0,children:i.transparent&&i.hasH265&&i.src?.endsWith(".webm")?[Mt("source",{props:{src:i.src.replace(".webm",".mp4"),type:"video/mp4;codecs=hvc1"}})]:void 0});if(this.#lr=Mt("figure",{children:[n],parent:this.#ar}),this.#cr=n,t.id&&this.#de.image&&this.#de.image.ii(t.id,n),i.loop&&null!=i.loopAfter&&i.loopAfter>0){n.loop=0;const t=()=>{this.#fr=setTimeout(()=>{this.#do||n.play().catch(()=>{})},1e3*i.loopAfter)};n.addEventListener("ended",t)}!this.#do&&this.#Jo&&n.play().catch(()=>{})}#Qr(t){Mt("iframe",{parent:this.#ar,props:{src:t.frameSrc,width:String(Math.round(this.#$o*this.#v.width)),height:String(Math.round(this.#Er*this.#v.height))},attrs:{frameborder:"0",allow:"autoplay; encrypted-media",allowfullscreen:""}})}#qr(){const{embed:t,image:i}=this.#de;if(!i)return;const s=t.hideWhenPaused?.01:t.opacity??1;this.#or&&(this.#or.ut||i.Gt.includes(this.#or))?(this.#or.camera.setArea(t.area),this.#or.camera.setRotation(this.#Dr,this.#Fr,this.#$r),this.#or.ut&&i.engine.Ee(this.#or,s)):this.#or=i.addEmbed({...t,id:t.video?t.id:t.micrioId,title:t.uuid,path:this.#v.tileBasePath??this.#v.path,isSingle:!!t.video,isVideo:!!t.video},{_360:{rotX:this.#Dr,rotY:this.#Fr,rotZ:this.#$r}},t.area,{opacity:s,asImage:0}),this.#Tr&&(this.#rr=new oh(i.engine,this.#or,t,this.#do,()=>this.#Zr())),i.engine.render()}#Zr(){const{embed:t,image:i}=this.#de;if(!this.#_r&&!i?.engine.ready)return;const s=this.#dr,h=this.#ur;if(h&&s&&s[2]>0&&s[3]>0&&h[2]>0&&h[3]>0)this.#zo=s[0]+(this.#Ir-h[0])/h[2]*s[2],this.#Do=s[1]+(this.#Lr-h[1])/h[3]*s[3],this.#Fo=s[2]/(h[2]*this.#v.width);else{const t=i.camera.R(this.#Ir,this.#Lr);this.#zo=t[0],this.#Do=t[1],this.#Fo=t[2]}if(this.#ar){const s=this.#ar.style;if(this.#_r&&this.#mr)this.#Ze||(this.#Ze=1,s.display="none");else if(this.#Br){const t=i.camera.getMatrix(this.#Ir,this.#Lr,this.#Vr,this.#Rr,this.#Dr,this.#Fr,this.#$r,void 0,this.#Or,this.#ri).join(","),h=!t;h!==this.#Ze&&(this.#Ze=h,s.display=h?"none":""),h||t===this.#Nr||(this.#Nr=t,s.transform=`matrix3d(${t})`)}else this.#Ze&&(this.#Ze=0,s.display=""),this.#zo!==this.#Hr&&(this.#Hr=this.#zo,s.setProperty("--x",`${this.#zo}px`)),this.#Do!==this.#Xr&&(this.#Xr=this.#Do,s.setProperty("--y",`${this.#Do}px`)),this.#Fo!==this.#Gr&&(this.#Gr=this.#Fo,s.setProperty("--s",`${this.#Fo}`));if(!this.#_r||!this.#mr){const i=void 0!==t.opacity&&1!==t.opacity?t.opacity:1;i!==this.#Xs&&(this.#Xs=i,1!==i?s.setProperty("--opacity",`${i}`):s.removeProperty("--opacity"))}}if((t.video?.pauseWhenSmallerThan||t.video?.pauseWhenLargerThan)&&this.#$o){this.#do=this.#ta();const t=this.#rr?.So;t&&(this.#do?t.paused||t.pause():t.paused&&(this.#rr.Ao(),i?.$settings?.embedRestartWhenShown&&(t.currentTime=0),t.play())),this.#ia(i)}}#ia(t){const i=this.#cr;i&&(this.#lr&&this.#jr!==this.#do&&(this.#jr=this.#do,this.#lr.classList.toggle("paused",this.#do)),this.#do?i.paused||i.pause():i.paused&&(t?.$settings?.embedRestartWhenShown&&(i.currentTime=0),i.play().catch(()=>{})))}#ta(){const{embed:t}=this.#de,i=t.video;if(!i?.pauseWhenSmallerThan&&!i?.pauseWhenLargerThan)return!this.#Jo;const s=this.#Gs.canvas.viewport,h=this.#Fo?Math.max(this.#$o*this.#v.width*this.#Fo/s.width,this.#Er*this.#v.height*this.#Fo/s.height):0;return!!(i.pauseWhenSmallerThan&&h<i.pauseWhenSmallerThan||i.pauseWhenLargerThan&&h>i.pauseWhenLargerThan)}#Oh(){const{embed:t,image:i,marker:s}=this.#de,h="markerId"==t.clickAction?t.clickTarget:s?.id;h&&i&&!this.#xr&&i.state.marker.set(h)}#Jr(t){if(t&&"detail"in t){const i=t.detail,s=this.#de.embed;for(const t of Object.keys(i))s[t]=i[t]}this.#Wr(),this.#Zr()}At(t){Object.assign(this.#de,t)}un(){clearTimeout(this.#fr),clearTimeout(this.#pr),this.#rr?.Co();const{embed:t,image:i}=this.#de;this.#or&&this.#or.ut&&i&&(i.engine.Ee(this.#or,0),i.engine.render()),t.video&&t.id&&i&&i.ii(t.id),this.removeEventListener("change",this.#Jr),this.#ar&&(this.#ar.removeEventListener("click",this.#Oh),this.#ar.removeEventListener("keydown",this.#Oh))}};customElements.define(rh.tag,rh);var ah=class extends xi{static tag="micrio-image-embeds";#de={image:null};ln(){const{image:t}=this.#de;this.mn(t.data,i=>{if(this.replaceChildren(),i?.embeds)for(const s of i.embeds)Mt("micrio-embed",{parent:this,setProps:{embed:s,image:t}})})}At(t){void 0!==t.image&&(this.#de.image=t.image)}};customElements.define(ah.tag,ah);var ch=class extends xi{static tag="micrio-tour";#de={tour:null};#sa=0;aside;ln(){const{tour:t}=this.#de,i=this.yn();if(!i||!t)return;const s="steps"in t,h=t=>t?i.Dh.find(i=>i.id===t)??i.gallery?.Sn.find(i=>i.id===t):void 0;if(!("steps"in t)){const s=t,h=i.$current;if(h){const t=s.i18n?.[X(i.Wt)]?.audio;Mt("micrio-media",{parent:this,setProps:{src:t?.src,image:h,tour:s,controls:1,autoplay:1,fullscreenEl:i,onended:()=>i.state.tour.set(void 0),onclose:()=>i.state.tour.set(void 0)}})}}if(s){i.setAttribute("data-marker-tour-active",""),this.dn(()=>i.removeAttribute("data-marker-tour-active"));const s=t;s.currentStep??=s.initialStep??0,this.#sa=s.currentStep;const e=s.stepInfo,n=!!i.$current.$settings?._markers?.tourControlsInPopup,o=async(t,s)=>{const n=e?.[s];if(!n)return;const o=e?.[t];if(o?.micrioId){const t=h(o.micrioId);t&&X(t.state.marker)&&t.state.marker.set(void 0)}let r;const a=N.p(n);if(a?.videoTour){const t=i.lang,s=a.videoTour.i18n?.[t]?.timeline;s?.length&&1>=s[0].start&&(r=s[0].rect)}const c=n.micrioId&&i.$current?.id!==n.micrioId?await i.open(n.micrioId,{startView:r}):i.$current;c&&c.state.marker.set(n.markerId)};s.next=()=>{if(this.#sa<s.steps.length-1){const t=this.#sa;this.#sa++,s.currentStep=this.#sa,o(t,this.#sa),r()}},s.prev=()=>{if(this.#sa>0){const t=this.#sa;this.#sa--,s.currentStep=this.#sa,o(t,this.#sa),r()}},this.aside||(this.aside=Mt("aside",{className:"marker-tour",parent:n?void 0:this}));const r=()=>{if(this.aside&&(this.aside.replaceChildren(),Mt("micrio-button",{parent:this.aside,setProps:{type:"prev",title:X(ji).oo,disabled:0===this.#sa,onclick:()=>s.prev?.()}}),Mt("span",{textContent:`${this.#sa+1}/${s.steps.length}`,parent:this.aside}),Mt("micrio-button",{parent:this.aside,setProps:{type:"next",title:X(ji).no,disabled:this.#sa>=s.steps.length-1,onclick:()=>s.next?.()}}),Mt("micrio-fullscreen",{parent:this.aside,setProps:{el:i}}),!s.cannotClose)){const t=Mt("micrio-button",{parent:this.aside,setProps:{type:"close",title:X(ji).Zn,onclick:()=>i.state.tour.set(void 0)}});n&&this.aside.insertBefore(t,this.aside.firstChild)}};this.dn(i.state.marker.subscribe(t=>{if(!t)return;const i="string"==typeof t?t:t.id,h=s.steps.findIndex(t=>t.startsWith(i));0>h||h===this.#sa||(this.#sa=h,s.currentStep=h,r())})),o(-1,this.#sa),r()}this.dn(i.state.tour.subscribe(i=>{if(!i&&s){const i=t.stepInfo?.[this.#sa];if(i){const t=h(i.micrioId);t&&t.state.marker.set(void 0)}}}))}At(t){Object.assign(this.#de,t)}};customElements.define(ch.tag,ch);var lh=class extends xi{static tag="micrio-swipe-gallery";#de={gallery:null,lang:""};At(t){void 0!==t.gallery&&(this.#de.gallery=t.gallery),void 0!==t.galleryStart&&(this.#de.galleryStart=t.galleryStart),void 0!==t.lang&&(this.#de.lang=t.lang)}ln(){const t=Mt("micr-io",{parent:this}),i=Mt("figcaption",{parent:this}),s=this.yn()?.$current?.$info?.path;Q.request(()=>{Oi.Gn(this.#de.gallery,t.Ve,t,{startId:this.#de.galleryStart,basePath:s}).Un(t)});let h=0;const e=()=>{const t=this.#de.gallery[h]?.i18n?.[this.#de.lang]?.description;i.innerHTML=t??"",i.style.display=t?"":"none"};t.addEventListener("gallery-show",t=>{const i=t.detail[0];h=Math.max(0,this.#de.gallery.findIndex(t=>(t.micrioId??t.id)===i)),e()}),e()}un(){this.querySelector(":scope > micr-io")?.destroy()}};customElements.define(lh.tag,lh);var uh=class extends xi{static tag="micrio-popover";#de={popover:null};#ha;ln(){const t=this.yn();t&&(this.#ha=Mt("dialog",{events:{close:()=>{const i=this.#de.popover;i&&"marker"in i&&i.marker&&i.image?.state?.marker&&i.image.state.marker.set(void 0),t.state.popover.set(void 0)},click:i=>{i.target===this.#ha&&t.state.popover.set(void 0)}},parent:this}),this.#ue())}At(t){void 0!==t.popover&&(this.#de.popover=t.popover),this.isConnected&&this.#ue()}#ue(){const t=this.#de.popover,i=this.yn();if(!i||!t)return;const s=X(i.Wt),h=X(ji),e="contentPage"in t?t.contentPage?.id:"",n="marker"in t?t.marker?.id:"",o=`${t?.constructor?.name??typeof t}::${e}::${n}::${s}`;if(!this.fn(o))return;this.#ha.replaceChildren(),this.#ha.classList.remove("article","page","has-media","gallery");const r="marker"in t?t.marker:void 0,a="markerTour"in t?t.markerTour:void 0,c=!(!(r&&a&&"steps"in a)||0>a.steps?.findIndex(t=>t.startsWith(r.id))),l=c?a.currentStep==a.steps.length-1:1,u=t=>{if(c&&a&&"steps"in a){const s=a;t instanceof Event&&l?i.state.tour.set(void 0):s.next?.()}this.#ha?.open&&this.#ha.close()};if(Mt("aside",{parent:this.#ha,children:[Mt("micrio-button",{setProps:{type:!c||l?"close":"next",title:!c||l?h.eo:h.no,onclick:u}})]}),"contentPage"in t&&t.contentPage){const i=t.contentPage,h=i.i18n?.[s];this.#ha.classList.add("page");const e=h?.embed&&(!h.content||250>h.content.length)&&!i.image&&!i.buttons?.length;if((h?.embed||i.image)&&this.#ha.classList.add("has-media"),e)h.embed&&Mt("micrio-media",{setProps:{src:h.embed,figcaption:h.content,controls:1,autoplay:1},parent:this.#ha});else{this.#ha.classList.add("article");const t=[];h?.title&&t.push(Mt("h2",{textContent:h.title})),h?.embed&&t.push(Mt("micrio-media",{setProps:{src:h.embed,controls:1}})),h?.content&&t.push(Mt("div",{innerHTML:h.content})),Mt("article",{children:t,parent:this.#ha})}}if("gallery"in t&&t.gallery?.length&&(this.#ha.classList.add("gallery"),Mt("micrio-swipe-gallery",{setProps:{gallery:t.gallery,galleryStart:t.galleryStart,lang:s},parent:this.#ha})),"marker"in t&&t.marker){const i=t.marker,h=i.i18n?.[s],e=!!i.images?.length,n=!(!h||!h.body)||e&&!!t.contentPage?.i18n?.[s]?.embed;h?.embedUrl?Mt("micrio-media",{setProps:{src:h.embedUrl,uuid:i.id,figcaption:h.embedDescription,controls:1,autoplay:i.embedAutoPlay},parent:this.#ha}):e&&Mt("micrio-swipe-gallery",{setProps:{gallery:i.images,lang:s},parent:this.#ha}),n&&Mt("micrio-marker-content",{setProps:{marker:i,noEmbed:1,noGallery:1,noImages:!h||!h.embedUrl,onclose:u},parent:this.#ha})}this.#ha.open||this.#ha.showModal()}un(){this.#ha?.open&&this.#ha.close()}};customElements.define(uh.tag,uh);var dh=class{#Gs;#d;#Yh;#ea=0;#na={};#oa;#ra;#aa=0;#ca=[];#la;#ua=new Map;#da=0;#fa=0;#pa;#ma=()=>{};#ga;#yn=[];goto(t){this.#ma(t)}get currentIndex(){return this.#d.canvas?.$i??-1}constructor(t,i,s,h){this.#Gs=t,this.#d=i,this.#Yh=s,this.#ga=h}async setup(){const t=this.#Gs,i=this.#d,s=this.#Yh,h=N.u(i.id);if(!h)return;const e=i.$settings.omni;if(!e)return;const n=t.Ve,o=i.$info;if(!o)return;const r=e.frames,a=r/(e.layers?.length??1);if(!i.ut)return;const c=[];for(let g=0;r>g;g++){const t={id:o.id+"/"+g,image:i,visible:H(0),ge:g,opts:{area:[0,0,1,1]},ut:0,$t:-1,thumbSrc:i.Ut(i.Vt,0,0,g)};n.ti(t,i,{opacity:0,asImage:0}),c.push(t)}h.settings?.omni&&parseFloat(h.info.version)>=5&&await At.load(h.info.tileBasePath||h.info.path,(h.info.tilesId??h.info.id)+"/base",i=>t.xo?.At?.({loadingProgress:i})).catch(()=>{}),i.canvas?.Hi(0,0),n.render();const l=!!i.$settings.gallery?.archive,u="requestIdleCallback"in self?Math.max(36,2*Math.floor(r/8)):50,d=t=>{this.#ga(t,r,u,t=>c[t]?{baseTileIdx:c[t].$t,thumbSrc:c[t].thumbSrc}:void 0,n,l)},f=Mt("micrio-dial",{parent:s,setProps:{currentRotation:0,frames:a,degrees:1,onturn:t=>{this.goto(Math.round(t)%a)}}});this.#ea=a,this.#na={continuous:1},this.#ma=t=>{for(;0>t;)t+=a;t%=a,i.canvas?.Hi(t,0),f.At?.({currentRotation:t/a*360}),d(t),n.render()},this.#wa(),i.omni=this,d(0),this.#yn.push(i.state.layer.subscribe(t=>{f.At?.({currentRotation:t/a*360})}));const p=i.$settings.omni,m=p?.layers?.length??1;if(m>1){const s=p.layers.map((t,i)=>({i18n:Object.fromEntries(Object.entries(t.i18n||{}).map(([t,s])=>[t,{title:s??"Layer "+(i+1)}]))})),h=Object.keys(o.revision??{});if(!h.length){const i=X(t.Wt);i&&h.push(i)}if(h.length)for(const t of h)for(let i=0;i<s.length;i++)s[i].i18n[t]||(s[i].i18n[t]={title:"Layer "+(i+1)});const e=()=>{const t=X(i.state.layer);i.data.update(h=>(h||(h={}),h.pages||(h.pages=[]),h.pages=h.pages.filter(t=>!t.id?.startsWith("_omni-layers")),h.pages.push({id:"_omni-layers-"+t,i18n:s[t].i18n,icon:is.layerGroup,children:s.map((t,s)=>({id:"omni-layer-"+s,i18n:t.i18n,action(){i.state.layer.set(s),d(X(i.state.layer)*Math.floor(r/m))}})).filter(i=>i.id!="omni-layer-"+t)}),h))};e(),this.#yn.push(i.state.layer.subscribe(e))}}destroy(){this.#va();for(const t of this.#yn)t();this.#yn=[]}#wa(){const t=this.#Gs;this.#na.sensitivity||(this.#na.sensitivity=Number(t.getAttribute("data-swipe-sensitivity")??1));const i=t.getAttribute("data-swipe-snap");i&&(this.#ca=i.split(",").map(Number)),this.#Gs.setAttribute("data-hooked",""),this.#yn.push(this.#d.state.view.subscribe(t=>this.#da=this.#na.coverLimit?this.#d.camera.isZoomedOut():t?Math.round(1e3*t[3])/1e3>=1:1)),t.Ve.Is=1,t.Ve.Ss=1,this.#Gs.canvas.element.addEventListener("pointerdown",this.#Ma)}#va(){this.#Gs.canvas.element.removeEventListener("pointerdown",this.#Ma),this.#ua.clear(),this.#_a(),this.#Gs.Ve.Is=0,this.#Gs.Ve.Ss=0}#_a(){this.#Gs.removeEventListener("pointermove",this.#ya),this.#Gs.removeEventListener("pointerup",this.#ba)}#ka=()=>2==this.#ua.size||(this.#da||this.#fa)&&1==this.#ua.size;#Ma=t=>{if(0!==t.button)return;this.#fa=t.shiftKey;const i=!this.#ka();if(this.#ua.set(t.pointerId,1),this.#ua.size>2)return this.#ua.clear(),void this.#_a();i&&(this.#aa=0,this.#Gs.setAttribute("data-panning",""),this.#oa=this.currentIndex,this.#ra=t.clientX,this.#pa=t.pointerId,this.#Gs.addEventListener("pointermove",this.#ya),this.#Gs.addEventListener("pointerup",this.#ba),this.#Gs.setPointerCapture(t.pointerId))};#ya=t=>{if(!this.#ka()||t.pointerId!=this.#pa||void 0===this.#ra||void 0===this.#oa)return;if(!this.#aa&&void 0!==this.#ra&&(this.#aa=2!=this.#ua.size?1:Math.abs(t.clientX-this.#ra)>(this.#Gs.events.Je&&this.#Gs.events.Je>1.25?.3:.15)*this.#Gs.offsetWidth)&&(this.#ra=t.clientX),!this.#aa)return;const i=this.#Gs.$current.camera,s=this.#na.continuous?Math.max(.1,(i.getXY(1,.5)[0]-i.getXY(0,.5)[0])/this.#Gs.offsetWidth):1,h=Math.round((t.clientX-this.#ra)/(this.#Gs.offsetWidth*s)*this.#ea*(this.#na.sensitivity??1));let e=this.#oa-h;if(this.#na.continuous){for(;0>e;)e+=this.#ea;for(;e>this.#ea-1;)e-=this.#ea}e=Math.max(0,Math.min(this.#ea-1,e)),e!=this.currentIndex&&this.#ma(e)};#ba=t=>{this.#ua.delete(t.pointerId),t.pointerId==this.#pa&&(this.#Gs.releasePointerCapture(this.#pa),this.#pa=void 0),this.#ua.size||this.#xa()};#xa(){if(this.#Gs.removeAttribute("data-panning"),this.#_a(),this.#aa=0,this.#ca.length){const t=this.#ca[this.#ca.map((t,i)=>[i,Math.abs(t-this.currentIndex)]).sort((t,i)=>t[1]>i[1]?1:t[1]<i[1]?-1:0)[0][0]];t!=this.currentIndex&&this.animateTo(t)}}animateTo(t){this.#la&&Q.cancel(this.#la);const i=performance.now(),s=this.currentIndex,h=s-t,e=t=>{const n=Math.min(1,(t-i)/250);1>n?(this.#la=e,Q.request(e)):this.#la=void 0;const o=s-Math.round(dt.get(n)*h);o!=this.currentIndex&&this.#ma(o)};this.#la=e,Q.request(e)}},fh=class{#Gs;#Ni;#Pa;#Ta;#Sa;#Aa;#Ca;#Ea=-1;#Ia;#La=0;#za=0;#Da=0;#Fa=0;#$a=0;#Oa=0;#Ba=0;constructor(t,i,s,h,e,n,o){this.#Gs=t,this.#Ni=i,this.#Pa=s,this.#Ta=h,this.#Sa=e,this.#Aa=n,this.#Ca=o}async setup(t,i,s){this.#Ea=t,s.ne=wt("ease-out"),await Promise.allSettled(this.#Ni.map(t=>s.Bh(t,i)));const h=this.#Ta[t]??0;for(let e=0;e<this.#Ni.length;e++){const t=this.#Ni[e];if(!t.camera)continue;t.camera.setCoverLimit(0);const i=[this.#Ta[e]-h,0,this.#Sa[e],1];t.camera.setArea(i,{direct:1,noDispatch:1}),t.camera.setView([0,0,1,1])}this.#Ni[t]?.visible.set(1)}#Va(){return!!this.#Ni[this.#Ea]?.camera?.isZoomedOut()}animateTo(t,i,s,h){return new Promise(e=>{this.#Ea=h;const n=this.#Ni;if(!n[t])return void e();const o=0===s?0:i?.125:.2,r=n[h>-1&&h!==t?h:-1],a=o>0&&r?.camera&&!r.camera.isZoomedOut(),c=n[0]?.engine;if(!c)return void e();const l=this.#Ta[t],u=()=>{c.ee=o,c.Hh=0;for(let t=0;t<n.length;t++){const i=n[t];if(!i?.camera)continue;const s=i.opts.area??[0,0,1,1],h=s[0],e=s[0]+s[2]>-1&&2>h,r=this.#Ta[t]-l,a=this.#Sa[t],c=r+a>-1&&1>r,u=Math.abs(s[0]-r)>1e-4||Math.abs(s[2]-a)>1e-4,d=o>0&&u&&(e||c);i.camera.setArea([r,0,a,1],{direct:!d,noDispatch:1})}n[t]?.camera?.setView([0,0,1,1]),c.render(),this.#Ra(e)};a?r.camera.flyToCoverView({duration:600*o,speed:2}).then(u).catch(u):u()})}#Ra=t=>{const i=()=>{for(const t of this.#Ni)if(t?.canvas?.Yh())return void Q.request(i);t()};Q.request(i)};#Na=()=>{this.#Ha(),this.#Ia=void 0,this.#$a=0,this.#Gs.removeAttribute("data-panning"),this.#Gs.Se=0};handlePointerDown=t=>{0===t.button&&(void 0===this.#Ia?this.#Va()&&(this.#Ia=t.pointerId,this.#La=this.#za=t.clientX,this.#Ba=t.clientY,this.#Da=t.timeStamp,this.#Fa=0,this.#$a=0,this.#Oa=0,window.addEventListener("pointermove",this.#Xa),window.addEventListener("pointerup",this.#Ga),window.addEventListener("pointercancel",this.#Ga)):t.pointerId!==this.#Ia&&(this.#$a&&this.#Aa(this.#Ca()),this.#Na()))};#Xa=t=>{if(t.pointerId!==this.#Ia)return;const i=t.clientX-this.#La,s=t.clientY-this.#Ba;if(!this.#$a){if(6>Math.abs(i)&&6>Math.abs(s))return;if(this.#Oa=Math.abs(i)>Math.abs(s),!this.#Oa)return void this.#Ga(t);this.#$a=1,this.#Gs.setAttribute("data-panning",""),this.#Gs.Se=1,this.#Gs.canvas.element.setPointerCapture(t.pointerId)}const h=Math.max(1,t.timeStamp-this.#Da);this.#Fa=(t.clientX-this.#za)/h,this.#za=t.clientX,this.#Da=t.timeStamp;const e=i/(this.#Gs.offsetWidth||1);this.#ja(e)};#Ga=t=>{if(t.pointerId!==this.#Ia)return;const i=this.#$a;if(this.#Na(),!i)return;try{this.#Gs.canvas.element.releasePointerCapture(t.pointerId)}catch(n){}const s=this.#Gs.offsetWidth||1,h=(t.clientX-this.#La)/s;let e=this.#Ca();-.3>h||-.5>this.#Fa?e=Math.min(this.#Pa.length-1,this.#Ca()+1):(h>.3||this.#Fa>.5)&&(e=Math.max(0,this.#Ca()-1)),this.#Aa(e)};#Ha=()=>{window.removeEventListener("pointermove",this.#Xa),window.removeEventListener("pointerup",this.#Ga),window.removeEventListener("pointercancel",this.#Ga)};#ja(t){const i=this.#Ni,s=this.#Ca(),h=this.#Pa.length,e=0===s&&t>0||s===h-1&&0>t?Math.sign(t)*Math.sqrt(Math.abs(t))*.3:t,n=this.#Pa[s]?.[0]??0,o=this.#Ta[n],r=i[0]?.engine;if(r&&void 0!==o){for(let t=0;t<i.length;t++){const s=i[t];if(!s?.camera)continue;const h=this.#Ta[t]-o+e,n=this.#Sa[t];h+n>-1&&1>h&&s.camera.setArea([h,0,n,1],{direct:1,noDispatch:1})}r.render()}}destroy(){this.#Gs.removeAttribute("data-panning"),this.#Gs.Se=0,this.#Ha()}},ph=class t{Eo;Io;Lo;constructor(t=0,i=0,s=0){this.Eo=t,this.Io=i,this.Lo=s}zo(){return new t(this.Eo,this.Io,this.Lo)}Do(t,i,s){return this.Eo=t,this.Io=i,this.Lo=s,this}fi(t){return this.Eo=t.Eo,this.Io=t.Io,this.Lo=t.Lo,this}Fo(t){return this.Eo+=t.Eo,this.Io+=t.Io,this.Lo+=t.Lo,this}$o(t){return this.Eo-=t.Eo,this.Io-=t.Io,this.Lo-=t.Lo,this}Oo(){return Math.sqrt(this.Eo*this.Eo+this.Io*this.Io+this.Lo*this.Lo)}ss(){const t=this.Oo();return t>1e-9&&this.#Ya(t),this}Bo(t){return this.Eo*t.Eo+this.Io*t.Io+this.Lo*t.Lo}Vo(t){const i=this.Io*t.Lo-this.Lo*t.Io,s=this.Lo*t.Eo-this.Eo*t.Lo,h=this.Eo*t.Io-this.Io*t.Eo;return this.Eo=i,this.Io=s,this.Lo=h,this}#Ya(t){const i=1/t;return this.Eo*=i,this.Io*=i,this.Lo*=i,this}},mh=.0012,gh=Math.SQRT2,wh=.35,vh=.42*Math.PI,Mh=[.96,.94,.91],_h=[.91,.88,.82];function yh(t){const i=new Uint32Array(3*t.length);for(let s=0;s<t.length;s++){const h=t[s];i[3*s]=h.Ro[0],i[3*s+1]=h.Ro[1],i[3*s+2]=h.Ro[2]}return i}function bh(t,i,s){const h=new Float32Array(3*s),e=new Float32Array(s);for(const n of i){const[i,s,o]=n.Ro,r=new ph(t[3*i],t[3*i+1],t[3*i+2]),a=new ph(t[3*s],t[3*s+1],t[3*s+2]),c=new ph(t[3*o],t[3*o+1],t[3*o+2]),l=(new ph).fi(a).$o(r),u=(new ph).fi(c).$o(r),d=(new ph).fi(l).Vo(u);for(const t of[i,s,o])h[3*t]+=d.Eo,h[3*t+1]+=d.Io,h[3*t+2]+=d.Lo,e[t]++}for(let n=0;s>n;n++){const t=e[n];if(t>0){const i=1/t;let s=h[3*n]*i,e=h[3*n+1]*i,o=h[3*n+2]*i;const r=Math.sqrt(s*s+e*e+o*o);r>1e-9&&(h[3*n]=s/r,h[3*n+1]=e/r,h[3*n+2]=o/r)}}return h}function kh(t,i,s,h,e){const n=i>t?`${t}-${i}`:`${i}-${t}`;if(h.has(n))return;h.add(n);const o=3*t,r=3*i,a=s[o]-s[r],c=s[o+1]-s[r+1],l=s[o+2]-s[r+2],u=Math.sqrt(a*a+c*c+l*l);e.push({No:t,Ho:i,Xo:u})}function xh(t,i){const s=(i,s)=>t+10*s+i;for(let h=0;14>h;h++)for(let t=0;10>t;t++){const e=s(t,h);10>t+1&&i(e,s(t+1,h)),14>h+1&&i(e,s(t,h+1)),10>t+1&&14>h+1&&i(e,s(t+1,h+1)),t-1>=0&&14>h+1&&i(e,s(t-1,h+1))}}var Ph=class{Go;jo;Yo;Wo;Uo;Zo;qo;Jo;Ko;Qo;tr;ir;sr;constructor(t=0,i=1,s=gh){this.tr=t,this.ir=i,this.sr=i*s,this.Go=new Float32Array(420),this.jo=new Float32Array(420),this.Yo=new Float32Array(420),this.Wo=new Float32Array(140),this.Uo=new Float32Array(280),this.Zo=[],this.Jo=[],this.Ko=[],this.Qo=[],this.hr(this.sr),this.er(),this.nr(),this.rr(),this.ar(),this.cr()}hr(t){const i=t/2;for(let s=0;14>s;s++){const h=s/13*t-i;for(let t=0;10>t;t++){const i=t/9*this.ir,e=3*(10*s+t);this.Go[e]=i,this.Go[e+1]=this.tr,this.Go[e+2]=h}}this.jo.set(this.Go),this.Wo.fill(1)}er(){for(let t=0;14>t;t++){const i=t/13;for(let s=0;10>s;s++){const h=s/9,e=10*t+s;this.Uo[2*e]=h,this.Uo[2*e+1]=i}}}nr(){const t=[];for(let i=0;13>i;i++)for(let s=0;9>s;s++){const h=10*i+s,e=h+1,n=10*(i+1)+s,o=n+1;t.push({Ro:[h,n,e]}),t.push({Ro:[e,n,o]})}this.Zo=t,this.qo=yh(t)}rr(){const t=new Set,i=[];xh(0,(s,h)=>kh(s,h,this.Go,t,i)),this.Jo=i}ar(){const t=new Map,i=(t,i)=>i>t?`${t}-${i}`:`${i}-${t}`;for(let h=0;h<this.Zo.length;h++){const[s,e,n]=this.Zo[h].Ro;for(const o of[i(s,e),i(e,n),i(n,s)]){const i=t.get(o);i?i.push(h):t.set(o,[h])}}const s=[];for(const[,h]of t){if(2!==h.length)continue;const t=this.Zo[h[0]],i=this.Zo[h[1]],e=new Set(t.Ro),n=[];for(const s of i.Ro)e.has(s)&&n.push(s);if(2!==n.length)continue;const[o,r]=n,a=t.Ro.find(t=>t!==o&&t!==r),c=i.Ro.find(t=>t!==o&&t!==r),l=3*a,u=3*c,d=this.Go[l]-this.Go[u],f=this.Go[l+1]-this.Go[u+1],p=this.Go[l+2]-this.Go[u+2],m=Math.sqrt(d*d+f*f+p*p);s.push({No:a,Ho:c,Xo:m})}this.Ko=s}cr(){this.Qo=[];for(let t=0;14>t;t++)this.Qo.push(10*t)}ae(){this.jo.set(this.Go),this.Yo.fill(0)}lr(){for(const t of this.Qo)this.Wo[t]=0}ur(){return bh(this.jo,this.Zo,140)}},Th=140,Sh=class extends Ph{dr;Y;pr;constructor(t=0,i=1,s=gh,h=.01,e=1.04,n=1.08){super(t,i,s),this.dr=h,this.Y=e,this.pr=n,this.Go=new Float32Array(1128),this.jo=new Float32Array(1128),this.Yo=new Float32Array(1128),this.Wo=new Float32Array(376),this.Uo=new Float32Array(752),this.Zo=[],this.Jo=[],this.Ko=[],this.Qo=[],this.hr(),this.er(),this.nr(),this.rr(),this.cr()}hr(){const t=this.sr/2,i=this.dr/2;this.#Wa(0,i,t),this.#Wa(Th,-i,t);let s=280;s=this.#Ua(s,this.#Za("bottom"),-t),s=this.#Ua(s,this.#Za("top"),t),s=this.#Ua(s,this.#Za("freeEdge"),this.ir),this.#Ua(s,this.#Za("boundEdge"),0),this.jo.set(this.Go),this.Wo.fill(1)}#Wa(t,i,s){const h=this.ir/2;for(let e=0;14>e;e++){const n=(-s+e/13*this.sr)*this.pr;for(let s=0;10>s;s++){const o=h+(s/9*this.ir-h)*this.Y,r=3*(t+10*e+s);this.Go[r]=o,this.Go[r+1]=this.tr+i,this.Go[r+2]=n}}}#Za(t){const i=[];switch(t){case"bottom":for(let t=0;10>t;t++)i.push(t);break;case"top":for(let t=0;10>t;t++)i.push(130+t);break;case"freeEdge":for(let t=0;14>t;t++)i.push(10*t+9);break;case"boundEdge":for(let t=0;14>t;t++)i.push(10*t)}return i}#Ua(t,i,s){const h=i.length;for(let e=0;h>e;e++){const s=3*i[e],h=this.Go[s],n=this.Go[s+1],o=this.Go[s+2],r=3*(t+2*e);this.Go[r]=h,this.Go[r+1]=n,this.Go[r+2]=o;const a=3*(t+2*e+1);this.Go[a]=h,this.Go[a+1]=n-this.dr,this.Go[a+2]=o}return t+2*h}er(){for(let i=0;14>i;i++){const t=i/13;for(let s=0;10>s;s++){const h=s/9,e=2*(10*i+s);this.Uo[e]=h,this.Uo[e+1]=t}}for(let i=0;14>i;i++){const t=i/13;for(let s=0;10>s;s++){const h=1-s/9,e=2*(Th+10*i+s);this.Uo[e]=h,this.Uo[e+1]=t}}let t=280;t=this.#qa(t,"bottom"),t=this.#qa(t,"top"),t=this.#qa(t,"freeEdge"),this.#qa(t,"boundEdge")}#qa(t,i){const s=this.#Za(i),h=s.length;for(let e=0;h>e;e++){const h=s[e],n=h%10,o=Math.floor(h/10);let r,a;switch(i){case"bottom":r=n/9,a=0;break;case"top":r=n/9,a=1;break;case"freeEdge":r=1,a=o/13;break;default:r=0,a=o/13}const c=t+2*e;this.Uo[2*c]=r,this.Uo[2*c+1]=a;const l=t+2*e+1;this.Uo[2*l]=r,this.Uo[2*l+1]=a}return t+2*h}nr(){const t=[];this.#Ja(t,0,0),this.#Ja(t,Th,1);let i=280;for(const s of["bottom","top","freeEdge","boundEdge"]){const h=this.#Za(s).length;for(let e=0;h-1>e;e++){const h=i+2*e,n=i+2*e+1,o=i+2*(e+1),r=i+2*(e+1)+1;"bottom"===s||"freeEdge"===s?(t.push({Ro:[h,n,o]}),t.push({Ro:[o,n,r]})):(t.push({Ro:[h,o,n]}),t.push({Ro:[o,r,n]}))}i+=2*h}this.Zo=t,this.qo=yh(t)}#Ja(t,i,s){for(let h=0;13>h;h++)for(let e=0;9>e;e++){const n=i+10*h+e,o=n+1,r=i+10*(h+1)+e,a=r+1;s?(t.push({Ro:[n,o,r]}),t.push({Ro:[o,a,r]})):(t.push({Ro:[n,r,o]}),t.push({Ro:[o,r,a]}))}}rr(){const t=new Set,i=[],s=(s,h)=>kh(s,h,this.Go,t,i);xh(0,s),xh(Th,s);for(let h=0;14>h;h++)for(let t=0;10>t;t++)s(10*h+t,Th+10*h+t);this.Jo=i}ar(){this.Ko=[]}cr(){this.Qo=[];for(let t=0;14>t;t++)this.Qo.push(10*t);for(let t=0;14>t;t++)this.Qo.push(Th+10*t)}ur(){return bh(this.jo,this.Zo,376)}};function Ah(t,i,s){const h=2.1*t,e=.5+(.45*Math.sin(1.7*i+h)+.3*Math.sin(3.9*i+1.4*h)+.15*Math.sin(7.1*i+2.8*h)+.2*Math.abs(Math.sin(10.3*i+5.1*h)))*s;return Math.max(.1,Math.min(1,e))}function Ch(t){return Math.max(0,Math.min(1,t))}function Eh(t){const i=Math.sqrt(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);return 1e-9>i?[0,1,0]:[t[0]/i,t[1]/i,t[2]/i]}var Ih=[{name:"daylight",isAnimated:0,params:[{key:"timeOfDay",default:12}]},{name:"incandescent",isAnimated:0,params:[{key:"wattage",default:1}]},{name:"candlelight",isAnimated:1,params:[{key:"candleCount",default:3},{key:"spread",default:2},{key:"intensity",default:.65},{key:"flicker",default:.2}]},{name:"rainy day",isAnimated:1,params:[{key:"stormLevel",default:1}]},{name:"moonlight",isAnimated:1,params:[{key:"moonPhase",default:0}]},{name:"fireplace",isAnimated:1,params:[{key:"fireIntensity",default:.8},{key:"crackle",default:.6}]},{name:"haunted",isAnimated:1,params:[{key:"spookiness",default:.7}]}];function Lh(){return Ih}function zh(t,i){let s=0;for(let h=0;h<t.length;h++)s+=t[h];return i>0?s/i:0}function Dh(t,i,s,h,e,n){const o=s*h;return(1-i)*((e-1-t)*n+o)+i*(t*n+(h-o))}function Fh(t,i){if(Math.abs(i)>1e-6)for(let s=1;s<t.length;s+=3)t[s]+=i}function $h(t,i,s){const h=t.createShader(i);if(t.shaderSource(h,s),t.compileShader(h),!t.getShaderParameter(h,t.COMPILE_STATUS)){const i=t.getShaderInfoLog(h);throw t.deleteShader(h),new Error(`Shader compile error: ${i}`)}return h}function Oh(t,i,s){const h=$h(t,t.VERTEX_SHADER,i),e=$h(t,t.FRAGMENT_SHADER,s),n=t.createProgram();if(t.attachShader(n,h),t.attachShader(n,e),t.linkProgram(n),!t.getProgramParameter(n,t.LINK_STATUS)){const i=t.getProgramInfoLog(n);throw t.deleteProgram(n),t.deleteShader(h),t.deleteShader(e),new Error(`Program link error: ${i}`)}return t.detachShader(n,h),t.detachShader(n,e),t.deleteShader(h),t.deleteShader(e),n}function Bh(t,i){t.bindTexture(t.TEXTURE_2D,i),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR_MIPMAP_LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR)}var Vh="#version 300 es\nprecision highp float;in vec2 a;out vec2 X;void main(){gl_Position=vec4(a,0.0,1.0);X=a*0.5+0.5;}",Rh=class{#Ss;#Ka;#Qa={mr:null,gr:null,wr:null,vr:null,Mr:null,_r:null,yr:null,br:null,kr:null,Pr:null,Tr:null,Sr:null,Ar:null,Cr:null,Er:null,Ir:null,Lr:null,zr:null,Dr:null,Fr:null,$r:null,Or:null,Br:null};#tc=[];#ic=[];#sc=[];#hc=[];#ec=[];#nc=[];#oc=[];#rc=new Float32Array(0);#ac=new Float32Array(0);#cc=new Float32Array(0);#lc=new Float32Array(0);#uc=new Float32Array(0);#dc=new Float32Array(0);#fc;#pc="daylight";#mc={};#gc=new Float32Array(24);#wc=new Float32Array(24);#vc=new Float32Array(8);Vr=1;Rr=0;#u;#Mc;#_c={Nr:null,Hr:null,Xr:null,Gr:null};#yc;#bc={jr:null,Yr:null,Hr:null,Wr:null,Ur:null,Xr:null,Zr:null,Gr:null};#kc;#xc=null;#Pc=null;#Tc=new Float32Array(0);#Sc;#Ac=0;#Cc=new Float32Array(3);#Ec=new Float32Array(3);constructor(t){this.#Ss=t,this.#u=t.canvas,this.Ch(),this.#fc=(t=>{const i=t.createTexture();return t.bindTexture(t.TEXTURE_2D,i),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,1,1,0,t.RGBA,t.UNSIGNED_BYTE,new Uint8Array([255,255,255,0])),Bh(t,i),t.generateMipmap(t.TEXTURE_2D),t.bindTexture(t.TEXTURE_2D,null),i})(t),this.#Sc=this.#Ic();const i=Lh();for(const s of i)if("daylight"===s.name){for(const t of s.params)this.#mc[t.key]=t.default;break}}qr(t){const i=this.#Ss;this.#Ka=Oh(i,"#version 300 es\nprecision highp float;layout(location=0)in vec3 b;layout(location=1)in vec3 c;layout(location=2)in vec2 d;uniform mat4 a;out vec3 X;out vec3 Y;out vec2 Z;void main(){vec4 w=vec4(b,1.0);gl_Position=a*w;X=b;Y=c;Z=d;}","#version 300 es\nprecision highp float;\n#define MAX_POINT_LIGHTS 8\nin vec3 X;in vec3 Y;in vec2 Z;uniform vec3 A;uniform vec3 B;uniform vec3 C;uniform vec3 D;uniform vec3 E;uniform sampler2D F;uniform sampler2D G;uniform sampler2D H;uniform sampler2D I;uniform sampler2D J;uniform sampler2D K;uniform float L;uniform float M;uniform float N;uniform float O;uniform int P;uniform vec3 Q[MAX_POINT_LIGHTS];uniform vec3 R[MAX_POINT_LIGHTS];uniform float S[MAX_POINT_LIGHTS];uniform vec4 T;uniform vec4 U;uniform float V;out vec4 o;void main(){vec3 v=vec3(0.0,0.70710678,0.70710678);vec3 n=normalize(Y);if(dot(n,v)<0.0)n=-n;vec4 reg;vec2 c0;if(gl_FrontFacing){c0=Z;reg=T;}else{c0=vec2(1.0-Z.x,Z.y);reg=U;}float mask=1.0;if(reg.x>0.0||reg.y>0.0||reg.z<1.0||reg.w<1.0){vec2 lo=(c0-reg.xy)/reg.zw;vec2 hi=(reg.xy+reg.zw-c0)/reg.zw;mask=(reg.x>0.0?smoothstep(0.0,0.004,lo.x):1.0)*(reg.x+reg.z<1.0?smoothstep(0.0,0.004,hi.x):1.0)*(reg.y>0.0?smoothstep(0.0,0.004,lo.y):1.0)*(reg.y+reg.w<1.0?smoothstep(0.0,0.004,hi.y):1.0);}vec2 q=vec2((c0.x-reg.x)/reg.z,(c0.y-reg.y)/reg.w);if(V>0.5&&mask<0.01)discard;vec4 x;vec3 b;if(gl_FrontFacing){vec4 f=texture(F,q);vec4 i=texture(H,q);vec4 j=texture(I,q);float k=clamp(L+M,0.0,1.0);float r=k>0.0?M/k:0.0;vec4 p=mix(i,j,r);x=mix(f,p,k*p.a);b=D;}else{vec4 f=texture(G,q);vec4 i=texture(J,q);vec4 j=texture(K,q);float k=clamp(N+O,0.0,1.0);float r=k>0.0?O/k:0.0;vec4 p=mix(i,j,r);x=mix(f,p,k*p.a);b=E;}vec3 g=mix(b,x.rgb*b,x.a);vec3 c=B*g;vec3 l=normalize(A);float d=max(dot(n,l),0.0);vec3 h=normalize(l+v);float m=max(dot(n,h),0.0);float s=m*m;s*=s;s*=s;c+=C*g*d*0.82;c+=C*s*0.04;for(int e=0;e<MAX_POINT_LIGHTS;e++){if(e<P){vec3 t=Q[e]-X;float u=dot(t,t);float q=S[e]/(1.0+0.08*u);vec3 r=t*inversesqrt(u);float f=max(dot(n,r),0.0);vec3 i=normalize(r+v);float j=max(dot(n,i),0.0);j*=j;j*=j;j*=j;c+=R[e]*g*f*q*0.68;c+=R[e]*j*q*0.03;}}float a=abs(dot(n,v));float w=1.0-a;float y=w*w*w;c=mix(c,c*0.85,y*0.3);o=vec4(c*mask,mask);}");const s=(t,s=this.#Ka)=>i.getUniformLocation(s,t);this.#Qa.mr=s("a"),this.#Qa.gr=s("A"),this.#Qa.wr=s("B"),this.#Qa.vr=s("C"),this.#Qa.Mr=s("D"),this.#Qa._r=s("E"),this.#Qa.yr=s("F"),this.#Qa.br=s("G"),this.#Qa.kr=s("H"),this.#Qa.Pr=s("I"),this.#Qa.Tr=s("J"),this.#Qa.Sr=s("K"),this.#Qa.Ar=s("L"),this.#Qa.Cr=s("M"),this.#Qa.Er=s("N"),this.#Qa.Ir=s("O"),this.#Qa.Lr=s("P"),this.#Qa.zr=s("Q[0]"),this.#Qa.Dr=s("R[0]"),this.#Qa.Fr=s("S[0]"),this.#Qa.$r=s("T"),this.#Qa.Or=s("U"),this.#Qa.Br=s("V"),this.#tc=t.map((t,i)=>this.#Lc(t,i));const h=t.length;for(let e=0;h>e;e++)this.#ic.push(null),this.#sc.push(null),this.#hc.push(null),this.#ec.push(null),this.#nc.push(null),this.#oc.push(null);this.#rc=new Float32Array(h),this.#ac=new Float32Array(h),this.#cc=new Float32Array(h),this.#lc=new Float32Array(h),this.#uc=new Float32Array(4*h),this.#dc=new Float32Array(4*h);for(let e=0;h>e;e++)this.#uc[4*e+2]=1,this.#uc[4*e+3]=1,this.#dc[4*e+2]=1,this.#dc[4*e+3]=1;i.enable(i.DEPTH_TEST),i.depthFunc(i.LESS),this.#Mc=Oh(i,Vh,"#version 300 es\nprecision highp float;in vec2 X;uniform sampler2D A;uniform vec2 B;uniform float C;uniform float D[15];out vec4 o;void main(){float s=C;float t=s*0.5;vec4 r=vec4(0.0);for(int e=-7;e<=7;e++){float d=float(e)*t;r+=texture(A,X+vec2(B.x*d,0.0))*D[e+7];}o=r;}"),this.#_c.Nr=s("A",this.#Mc),this.#_c.Hr=s("B",this.#Mc),this.#_c.Xr=s("C",this.#Mc),this.#_c.Gr=s("D[0]",this.#Mc),this.#yc=Oh(i,Vh,"#version 300 es\nprecision highp float;in vec2 X;uniform sampler2D A;uniform sampler2D B;uniform vec2 C;uniform float D;uniform float E;uniform float F;uniform float G;uniform float H[15];out vec4 o;void main(){float d=abs(X.y-D);float h=E*0.5;float b=smoothstep(h,h+0.5/max(G,0.1),d);if(b<0.002){o=texture(B,X);return;}float s=F;float t=s*0.5;vec4 r=vec4(0.0);for(int e=-7;e<=7;e++){float p=float(e)*t;r+=texture(A,X+vec2(0.0,C.y*p))*H[e+7];}vec4 u=r;vec4 g=texture(B,X);o=mix(g,u,b);}"),this.#bc.jr=s("A",this.#yc),this.#bc.Yr=s("B",this.#yc),this.#bc.Hr=s("C",this.#yc),this.#bc.Wr=s("D",this.#yc),this.#bc.Ur=s("E",this.#yc),this.#bc.Xr=s("F",this.#yc),this.#bc.Zr=s("G",this.#yc),this.#bc.Gr=s("H[0]",this.#yc),this.#kc=this.#zc()}Jr(t,i,s){const h=this.#Ss;{const s=this.#ic[t]?this.#ic[t]:h.createTexture();h.bindTexture(h.TEXTURE_2D,s),h.texImage2D(h.TEXTURE_2D,0,h.RGBA,h.RGBA,h.UNSIGNED_BYTE,i),Bh(h,s),h.generateMipmap(h.TEXTURE_2D),this.#ic[t]||(this.#ic[t]=s)}{const i=this.#sc[t]?this.#sc[t]:h.createTexture();h.bindTexture(h.TEXTURE_2D,i),h.texImage2D(h.TEXTURE_2D,0,h.RGBA,h.RGBA,h.UNSIGNED_BYTE,s),Bh(h,i),h.generateMipmap(h.TEXTURE_2D),this.#sc[t]||(this.#sc[t]=i)}h.bindTexture(h.TEXTURE_2D,null)}Kr(t,i,s,h){const e=this.#Ss,n=0===i?0===s?this.#hc:this.#ec:0===s?this.#nc:this.#oc;n[t]&&e.deleteTexture(n[t]);const o=e.createTexture();e.bindTexture(e.TEXTURE_2D,o),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,h),Bh(e,o),e.generateMipmap(e.TEXTURE_2D),e.bindTexture(e.TEXTURE_2D,null),n[t]=o}Qr(t,i,s,h,e){this.#rc[t]=i,this.#ac[t]=s,this.#cc[t]=h,this.#lc[t]=e}ta(t,i){this.#uc=t,this.#dc=i}ia(t,i,s){const h=0===i?0===s?this.#hc:this.#ec:0===s?this.#nc:this.#oc;h[t]&&(this.#Ss.deleteTexture(h[t]),h[t]=null),0===i?0===s?this.#rc[t]=0:this.#ac[t]=0:0===s?this.#cc[t]=0:this.#lc[t]=0}Yt(){return this.#u}sa(t,i){t&&t!==this.#pc?(this.#pc=t,this.#mc={...i}):this.#mc={...this.#mc,...i}}ha(){return Lh().find(t=>t.name===this.#pc)?.isAnimated??0}#Lc(t,i){const s=this.#Ss,h=s.createVertexArray();s.bindVertexArray(h);const e=s.ARRAY_BUFFER,n=s.createBuffer();s.bindBuffer(e,n),s.bufferData(e,t.jo,s.DYNAMIC_DRAW),s.enableVertexAttribArray(0),s.vertexAttribPointer(0,3,s.FLOAT,0,0,0);const o=s.createBuffer();s.bindBuffer(e,o);const r=t.ur();s.bufferData(e,r,s.DYNAMIC_DRAW),s.enableVertexAttribArray(1),s.vertexAttribPointer(1,3,s.FLOAT,0,0,0);const a=s.createBuffer();s.bindBuffer(e,a),s.bufferData(e,t.Uo,s.STATIC_DRAW),s.enableVertexAttribArray(2),s.vertexAttribPointer(2,2,s.FLOAT,0,0,0);const c=s.createBuffer();return s.bindBuffer(s.ELEMENT_ARRAY_BUFFER,c),s.bufferData(s.ELEMENT_ARRAY_BUFFER,t.qo,s.STATIC_DRAW),s.bindVertexArray(null),{ea:h,na:n,oa:o,ra:a,aa:c,ca:t.qo.length,la:i}}#zc(){const t=this.#Ss,i=t.createVertexArray();t.bindVertexArray(i);const s=new Float32Array([-1,-1,1,-1,-1,1,1,1]),h=t.createBuffer();return t.bindBuffer(t.ARRAY_BUFFER,h),t.bufferData(t.ARRAY_BUFFER,s,t.STATIC_DRAW),t.enableVertexAttribArray(0),t.vertexAttribPointer(0,2,t.FLOAT,0,0,0),t.bindVertexArray(null),i}#Dc(t){const i=this.#Ss,s=t.la,h=[[this.#ic,this.#Qa.yr],[this.#sc,this.#Qa.br],[this.#hc,this.#Qa.kr],[this.#nc,this.#Qa.Tr],[this.#ec,this.#Qa.Pr],[this.#oc,this.#Qa.Sr]];for(let n=0;h.length>n;n++)i.activeTexture(i.TEXTURE0+n),i.bindTexture(i.TEXTURE_2D,h[n][0][s]??this.#fc),i.uniform1i(h[n][1],n);i.uniform1f(this.#Qa.Ar,this.#rc[s]),i.uniform1f(this.#Qa.Cr,this.#ac[s]),i.uniform1f(this.#Qa.Er,this.#cc[s]),i.uniform1f(this.#Qa.Ir,this.#lc[s]);const e=4*s;i.uniform4f(this.#Qa.$r,this.#uc[e],this.#uc[e+1],this.#uc[e+2],this.#uc[e+3]),i.uniform4f(this.#Qa.Or,this.#dc[e],this.#dc[e+1],this.#dc[e+2],this.#dc[e+3]),i.bindVertexArray(t.ea),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t.aa),i.drawElements(i.TRIANGLES,t.ca,i.UNSIGNED_INT,0)}#Fc(){const t=this.#Ss,i=this.#u.width,s=this.#u.height;this.#xc&&(t.deleteTexture(this.#xc.ua),this.#xc.da&&t.deleteRenderbuffer(this.#xc.da),t.deleteFramebuffer(this.#xc.fa));const h=t.createTexture();t.bindTexture(t.TEXTURE_2D,h),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,i,s,0,t.RGBA,t.UNSIGNED_BYTE,null),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE);const e=t.createRenderbuffer();t.bindRenderbuffer(t.RENDERBUFFER,e),t.renderbufferStorage(t.RENDERBUFFER,t.DEPTH_COMPONENT24,i,s);const n=t.createFramebuffer();t.bindFramebuffer(t.FRAMEBUFFER,n),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,h,0),t.framebufferRenderbuffer(t.FRAMEBUFFER,t.DEPTH_ATTACHMENT,t.RENDERBUFFER,e),this.#xc={fa:n,ua:h,da:e},this.#Pc&&(t.deleteTexture(this.#Pc.ua),t.deleteFramebuffer(this.#Pc.fa));const o=t.createTexture();t.bindTexture(t.TEXTURE_2D,o),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,i,s,0,t.RGBA,t.UNSIGNED_BYTE,null),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE);const r=t.createFramebuffer();t.bindFramebuffer(t.FRAMEBUFFER,r),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,o,0),t.bindFramebuffer(t.FRAMEBUFFER,null),t.bindTexture(t.TEXTURE_2D,null),t.bindRenderbuffer(t.RENDERBUFFER,null),this.#Pc={fa:r,ua:o,da:null}}Ch(){const t=this.#Ss,i=window.devicePixelRatio||1,s=this.#u.clientWidth,h=this.#u.clientHeight;this.#u.width=Math.floor(s*i),this.#u.height=Math.floor(h*i),t.viewport(0,0,this.#u.width,this.#u.height),this.#xc=null,this.#Pc=null}pa(t,i){if(t>=this.#tc.length)return;const s=this.#Ss,h=this.#tc[t];s.bindBuffer(s.ARRAY_BUFFER,h.na),s.bufferSubData(s.ARRAY_BUFFER,0,i.jo)}ma(t,i){if(t>=this.#tc.length)return;const s=this.#Ss,h=this.#tc[t],e=i.ur();s.bindBuffer(s.ARRAY_BUFFER,h.oa),s.bufferSubData(s.ARRAY_BUFFER,0,e)}ga(){if(!this.#Ac)return null;const t=this.#Cc,i=this.#Ec,s=new Float32Array(24);return s.set([t[0],t[1],t[2]]),s.set([i[0],t[1],t[2]],3),s.set([i[0],t[1],i[2]],6),s.set([t[0],t[1],i[2]],9),s.set([t[0],i[1],t[2]],12),s.set([i[0],i[1],t[2]],15),s.set([i[0],i[1],i[2]],18),s.set([t[0],i[1],i[2]],21),s}wa(){return{width:this.#u.width,height:this.#u.height}}va(t){const i=this.ga();if(!i)return null;const s=this.#u.width,h=this.#u.height;let e=1/0,n=-1/0,o=1/0,r=-1/0,a=0;const c=t.arr;for(let l=0;8>l;l++){const t=i[3*l],u=i[3*l+1],d=i[3*l+2],f=c[0]*t+c[4]*u+c[8]*d+c[12],p=c[1]*t+c[5]*u+c[9]*d+c[13],m=c[3]*t+c[7]*u+c[11]*d+c[15];if(0>=m)continue;a=1;const g=(f/m*.5+.5)*s,w=(.5-p/m*.5)*h;e>g&&(e=g),g>n&&(n=g),o>w&&(o=w),w>r&&(r=w)}return a?{minX:e,maxX:n,minY:o,maxY:r}:null}Ma(t){this.#Tc=t}_a(t,i){this.#Ac=1,this.#Cc.set([t.x,t.y,t.z]),this.#Ec.set([i.x,i.y,i.z])}#$c(){if(0===this.#Tc.length)return this.#tc;const t=this.#tc.length,i=t*mh,s=zh(this.#Tc,t),h=this.#tc.map(h=>{const e=h.la;return{md:h,y:Dh(e,this.#Tc[e],s,i,t,mh)}});return h.sort((t,i)=>i.y-t.y),h.map(t=>t.md)}#Ic(){const t=new Float32Array(15);let i=0;for(let s=-7;7>=s;s++){const h=Math.exp(-.125*s*s);t[s+7]=h,i+=h}for(let s=0;15>s;s++)t[s]/=i;return t}De(t){const i=this.#Ss,s=t.ya(),h=this.#u.width/Math.max(1,this.#u.height),e=new Zt;e.Oi(.25*Math.PI,h,.1,50);const n=new Zt;n.fi(s),n.Ki(e);const o=performance.now()/1e3,r=((t,i,s)=>{const h=new Float32Array(24),e=new Float32Array(24),n=new Float32Array(8),o=(t,i,s,o,r)=>({gr:t,vr:i,wr:s,Lr:o,zr:h,Dr:e,Fr:n,ba:r});switch(t){case"daylight":{const t=i.timeOfDay??12,s=(t/24*2-.5)*Math.PI,h=Math.sin(s),e=Eh([Math.cos(s),Math.max(.05,h),-.35]),n=Math.max(0,1-Math.abs(t-6.5)/3.5),r=Math.max(0,1-Math.abs(t-17.5)/3.5),a=Math.max(n,r),c=.85+.15*a,l=.82+.08*a,u=.76-.2*a,d=0>h?Math.min(1,2*-h):0,f=.12+.08*h-.04*d,p=.12+.08*h-.04*d,m=.18+.06*h-.08*d;return o(e,[Ch(c),Ch(l),Ch(u)],[Ch(f),Ch(p),Ch(m)],0,.4)}case"incandescent":{const t=i.wattage??1,s=[.5,1,1.4][Math.round(t)]??1,h=.6+.4*s,e=.4-.15*s;return o(Eh([.3,.85,.35]),[.95*h,.75*h,.45*h],[.1+.05*e,.08+.04*e,.05+.02*e],0,.4)}case"candlelight":{const t=Math.round(i.candleCount??4),r=i.spread??1,a=i.intensity??.7,c=i.flicker??.7,l=Math.ceil(t/2);for(let i=0;t>i&&8>i;i++){const t=l>1?(l>i?i:i-l)/(l-1):0,o=(l>i?-1:1)*(1.2+2.2*t*r),u=-1.5-2*t*r-.5*Math.sin(2.7*i)*r,d=.8+.5*Math.sin(1.3*i);h[3*i]=o,h[3*i+1]=d,h[3*i+2]=u;const f=a*(.5+1.8*Ah(i,s,c));e[3*i]=.95,e[3*i+1]=.6,e[3*i+2]=.18,n[i]=f}return o([0,1,0],[0,0,0],[.06,.04,.04],t,.5)}case"rainy day":{const t=i.stormLevel??1,h=[.45,.3,.15][Math.round(t)]??.3,e=1-.15*Math.abs(Math.sin(.13*s+.7))*h;return o(Eh([.1,.7,.4]),[.55*e,.58*e,.62*e],[.08*h,.09*h,.13*h],0,.5)}case"moonlight":{const t=i.moonPhase??0,h=[1,.55,.22][Math.round(t)]??.55,e=1+.03*Math.sin(.05*s);return o(Eh([-.5,.65,.35]),[.22*h*e,.28*h*e,.42*h*e],[.02*h,.025*h,.06*h],0,.6)}case"fireplace":{const t=i.fireIntensity??.8,r=i.crackle??.6,a=.6+.4*(t=>{const i=.5*Math.sin(1.7*t)+.5,s=.25*Math.abs(Math.sin(8.3*t+.7)),h=.15*Math.abs(Math.sin(13.7*t+1.3)),e=.08*Math.abs(Math.sin(19.1*t+2.1));return Math.max(0,Math.min(1,.6+.4*(i+s+h+e)))})(s);h[0]=-3.5,h[1]=1.2,h[2]=-2.5,e[0]=1,e[1]=.45,e[2]=.08,n[0]=t*a*4,h[3]=3.5,h[4]=1.1,h[5]=-2.5,e[3]=1,e[4]=.5,e[5]=.1,n[1]=t*a*3;const c=1-Math.abs(Math.sin(9.7*s))*r*.4,l=1-Math.abs(Math.sin(14.3*s+1.1))*r*.25;return n[0]*=c,n[1]*=l,o([0,1,0],[0,0,0],[.08*t,.04*t,.03*t],2,.5)}case"haunted":{const t=i.spookiness??.7,h=.3*Math.sin(.7*s+.3)+.7,e=.5*Math.sin(1.3*s)+.5,n=.08+e*t*.35,r=.12+.5*t,a=.05+(1-e)*t*.3,c=.02+.04*t,l=.03+.05*t,u=.02+.03*t;return o(Eh([.4,.5,.3]),[n*h,r*h,a*h],[c,l,u],0,.5)}default:return o([0,1,0],[1,1,1],[.15,.15,.18],0,.4)}})(this.#pc,this.#mc,o);i.clearColor(0,0,0,0),this.Vr&&(this.#xc||this.#Fc(),i.bindFramebuffer(i.FRAMEBUFFER,this.#xc.fa)),i.clear(i.COLOR_BUFFER_BIT|i.DEPTH_BUFFER_BIT),i.useProgram(this.#Ka),i.uniformMatrix4fv(this.#Qa.mr,0,n.arr),i.uniform3f(this.#Qa.gr,r.gr[0],r.gr[1],r.gr[2]),i.uniform3f(this.#Qa.wr,r.wr[0],r.wr[1],r.wr[2]),i.uniform3f(this.#Qa.vr,r.vr[0],r.vr[1],r.vr[2]),i.uniform3f(this.#Qa.Mr,Mh[0],Mh[1],Mh[2]),i.uniform3f(this.#Qa._r,_h[0],_h[1],_h[2]),i.uniform1f(this.#Qa.Br,this.Rr?1:0),i.uniform1i(this.#Qa.Lr,r.Lr),r.Lr>0&&(this.#gc.set(r.zr),this.#wc.set(r.Dr),this.#vc.set(r.Fr)),i.uniform3fv(this.#Qa.zr,this.#gc),i.uniform3fv(this.#Qa.Dr,this.#wc),i.uniform1fv(this.#Qa.Fr,this.#vc),i.disable(i.CULL_FACE);const a=this.#$c(),c=t=>this.#Tc.length>t&&this.#Tc[t]>0&&1>this.#Tc[t],l=a.filter(t=>!c(t.la)),u=a.filter(t=>c(t.la));for(let d=0;d<l.length;d++)this.#Dc(l[d]);if(u.length>0){u.reverse(),i.enable(i.POLYGON_OFFSET_FILL);for(let t=0;t<u.length;t++)i.polygonOffset(0,12e3*-t),this.#Dc(u[t]);i.disable(i.POLYGON_OFFSET_FILL)}if(i.bindVertexArray(null),i.disable(i.POLYGON_OFFSET_FILL),this.Vr){const s=1/this.#u.width,h=1/this.#u.height,e=t.ka-t.xa,n=e>0?(t.bh-t.xa)/e:0,o=Math.max(.05,1-n),r=4*o,a=1*o;i.bindFramebuffer(i.FRAMEBUFFER,this.#Pc.fa),i.clear(i.COLOR_BUFFER_BIT),i.disable(i.DEPTH_TEST),i.useProgram(this.#Mc),i.uniform1i(this.#_c.Nr,0),i.uniform2f(this.#_c.Hr,s,h),i.uniform1f(this.#_c.Xr,r),i.uniform1fv(this.#_c.Gr,this.#Sc),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,this.#xc.ua),i.bindVertexArray(this.#kc),i.drawArrays(i.TRIANGLE_STRIP,0,4),i.bindFramebuffer(i.FRAMEBUFFER,null),i.clear(i.COLOR_BUFFER_BIT),i.useProgram(this.#yc),i.uniform1i(this.#bc.jr,0),i.uniform1i(this.#bc.Yr,1),i.uniform2f(this.#bc.Hr,s,h),i.uniform1f(this.#bc.Wr,.55),i.uniform1f(this.#bc.Ur,.25),i.uniform1f(this.#bc.Xr,r),i.uniform1f(this.#bc.Zr,a),i.uniform1fv(this.#bc.Gr,this.#Sc),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,this.#Pc.ua),i.activeTexture(i.TEXTURE1),i.bindTexture(i.TEXTURE_2D,this.#xc.ua),i.bindVertexArray(this.#kc),i.drawArrays(i.TRIANGLE_STRIP,0,4),i.enable(i.DEPTH_TEST)}i.bindVertexArray(null)}},Nh=class{#u;#Oc;#ie;Pa=null;Ta=null;Sa=null;Aa=null;Ca=null;Ea=null;Ia=null;La=null;za=null;#ua=new Map;Da="none";#Bc=0;#Vc=0;#Rc=0;#Nc=0;#Hc=0;#Xc=0;#Gc=0;#ka=0;#jc=0;constructor(t,i,s){this.#u=t,this.#Oc=i,this.#ie=s,this.#Yc()}#Yc(){const t=this.#u;t.addEventListener("pointerdown",t=>this.#Wc(t)),window.addEventListener("pointermove",t=>this.#Uc(t)),window.addEventListener("pointerup",t=>this.#Zc(t)),window.addEventListener("pointercancel",t=>this.#qc(t)),t.addEventListener("wheel",t=>this.#Jc(t),{passive:0}),t.addEventListener("contextmenu",t=>t.preventDefault())}#Wc(t){this.#Kc(),"mouse"===t.pointerType&&t.button>2||(t.preventDefault(),this.#ua.set(t.pointerId,{Fa:t.clientX,$a:t.clientY}),1===this.#ua.size?this.#Qc(t):2===this.#ua.size&&this.#tl(),this.#ie())}#Uc(t){const i=this.#ua.get(t.pointerId);i&&(t.preventDefault(),this.#ua.set(t.pointerId,{Fa:t.clientX,$a:t.clientY}),1===this.#ua.size?this.#il(t.clientX,t.clientY,i.Fa,i.$a):2>this.#ua.size||this.#sl())}#Zc(t){t.preventDefault(),this.#ua.delete(t.pointerId),0===this.#ua.size?this.#hl():1===this.#ua.size&&this.#el()}#qc(t){this.#ua.delete(t.pointerId),0===this.#ua.size?this.#hl():1===this.#ua.size&&this.#el()}#Jc(t){t.preventDefault();const i=this.#u.getBoundingClientRect(),s=t.clientX-i.left,h=t.clientY-i.top,e=this.Ca?.(s,h)??void 0;this.#Oc.Tt(t.deltaY,e),this.#ie()}#Kc(){const t=document.activeElement;t&&t!==this.#u&&t.blur()}#nl(t){return"touch"===t.pointerType||"pen"===t.pointerType?0:2===t.button||1===t.button||0===t.button&&(t.ctrlKey||t.metaKey)}#Qc(t){this.Da=this.#nl(t)?"orbit":"pan",this.#Nc=t.clientX,this.#Hc=t.clientY,this.#Xc=0,this.#Gc=0,this.#ka=0,this.#jc=0}#tl(){this.Da=this.#ol()?"orbit":"pan";const[t,i]=Hh(this.#ua);this.#Bc=(t.Fa+i.Fa)/2,this.#Vc=(t.$a+i.$a)/2,this.#Rc=Xh(t,i)}#il(t,i,s,h){const e=t-s,n=i-h;"orbit"===this.Da?this.#rl(e,n):"pan"===this.Da&&this.#al(e,n,t,i)}#sl(){const[t,i]=Hh(this.#ua),s=(t.Fa+i.Fa)/2,h=(t.$a+i.$a)/2,e=2*(s-this.#Bc),n=2*(h-this.#Vc);"orbit"===this.Da?this.#Oc.Ti(this.#Oc.Oa?e:0,n,!this.#Oc.Oa):this.#Oc.St(e,n);const o=Xh(t,i);this.#Rc>0&&o>0&&this.#Oc.Tt(4*(this.#Rc-o)),this.#Bc=s,this.#Vc=h,this.#Rc=o}#rl(t,i){this.#Gc+=Math.abs(t)+Math.abs(i),this.#Oc.Ti(this.#Oc.Oa?t:0,i,!this.#Oc.Oa)}#al(t,i,s,h){this.#Xc+=Math.abs(t)+Math.abs(i),this.#ol()?this.#Oc.St(t,i):this.#Xc>=5&&this.La&&(!this.#jc&&this.Ia&&(this.Ia(this.#Nc,this.#Hc),this.#jc=1),this.#ka=1,this.La(s,h))}#hl(){if(this.Aa=null,"pan"===this.Da)if(this.#ka&&this.za)this.za();else if(5>this.#Xc&&this.Sa){const t=this.Sa(this.#Nc,this.#Hc);t&&(this.Aa=t.grabRow,"prev"===t.direction?this.Pa?.():"next"===t.direction&&this.Ta?.())}this.#el()}#el(){this.Da="none",this.#ka=0,this.#jc=0,this.#Xc=0,this.#Gc=0}#ol(){return this.Ea?this.Ea():this.#Oc.q()}};function Hh(t){const i=t.values();return[i.next().value,i.next().value]}function Xh(t,i){const s=i.Fa-t.Fa,h=i.$a-t.$a;return Math.sqrt(s*s+h*h)}var Gh=class{Ba=.4*Math.PI;Va=.25*Math.PI;bh=1.5;Ra=new ph(0,0,0);#cl=this.Ba;#ll=this.Va;#ul=this.bh;#dl=this.Ra.zo();Na=.005;Ha=.003;xa=.6;ka=5;Xa=null;Ga=null;Oa=0;ja=1;Ya=1;Wa=1;Ua=1;Za=0;q(){return this.ja||this.Ya||this.Wa||this.Ua}qa=.25*Math.PI;#fl=1;#pl=1;Ja(t,i){this.#fl=0|t,this.#pl=0|i}Ka(t,i){const s=Math.tan(this.qa/2),h=this.#fl,e=this.#pl,n=h-2*i,o=e-2*i,r=t.maxX-t.minX,a=t.maxZ-t.minZ,c=n>0&&r>0?r*e/(2*n*s):this.xa,l=o>0&&a>0?a*e/(2*o*s):this.xa;this.ka=Math.max(c,l,this.xa),this.bh=this.ka,this.#ul=this.ka,this.Qa()}Qa(){this.#cl=this.Ba,this.#ll=this.Va,this.#ul=this.bh,this.#dl.fi(this.Ra)}Th(t){const i=1-Math.exp(-24*t);this.Ba+=(this.#cl-this.Ba)*i,this.Va+=(this.#ll-this.Va)*i,this.bh+=(this.#ul-this.bh)*i,this.Ra.Eo+=(this.#dl.Eo-this.Ra.Eo)*i,this.Ra.Io+=(this.#dl.Io-this.Ra.Io)*i,this.Ra.Lo+=(this.#dl.Lo-this.Ra.Lo)*i,this.Oa||(this.#ul=Math.min(this.#ul,this.ka),this.bh=Math.min(this.bh,this.ka))}tc(){const t=1e-6;return Math.abs(this.#cl-this.Ba)>t||Math.abs(this.#ll-this.Va)>t||Math.abs(this.#ul-this.bh)>t||Math.abs(this.#dl.Eo-this.Ra.Eo)>t||Math.abs(this.#dl.Io-this.Ra.Io)>t||Math.abs(this.#dl.Lo-this.Ra.Lo)>t}#ml(){if(this.Oa)return this.Va;const t=(this.bh-this.xa)/(this.ka-this.xa),i=(1-t*t)*Math.PI/3;return Math.max(i,this.Va)}sc(){const t=this.#ml(),i=Math.cos(t);return new ph(this.Ra.Eo+this.bh*Math.sin(this.Ba)*i,this.Ra.Io+this.bh*Math.sin(t),this.Ra.Lo+this.bh*Math.cos(this.Ba)*i)}ya(){const t=this.sc(),i=new Zt;return i.Qi(t.Eo,t.Io,t.Lo,this.Ra.Eo,this.Ra.Io,this.Ra.Lo,0,1,0),i}hc(t){if(this.Oa=t,!t){const t=(this.bh-this.xa)/(this.ka-this.xa),i=(1-t*t)*Math.PI/3,s=Math.max(i,Math.min(.49*Math.PI,this.Va));this.#ll=s,this.#ul=Math.max(this.xa,Math.min(this.ka,this.bh)),this.Za=1}}Ti(t,i,s=1){this.#cl+=t*this.Na,this.#ll+=i*this.Na,s&&(this.#ll=Math.max(0,Math.min(.49*Math.PI,this.#ll)))}ec(t){const i=Math.PI/2,s=Math.round(this.#cl/i)*i;this.#cl=s+t*i}nc(t,i){const s=this.sc(),h=this.Ra,e=new ph(h.Eo-s.Eo,h.Io-s.Io,h.Lo-s.Lo).ss(),n=new ph(0,1,0),o=(new ph).fi(e).Vo(n).ss(),r=(new ph).fi(o).Vo(e).ss(),a=this.#fl/Math.max(1,this.#pl),c=Math.tan(this.qa/2),l=c*a,u=(t/this.#fl*2-1)*l,d=(1-i/this.#pl*2)*c,f=e.Eo+o.Eo*u+r.Eo*d,p=e.Io+o.Io*u+r.Io*d,m=e.Lo+o.Lo*u+r.Lo*d,g=1/Math.sqrt(f*f+p*p+m*m);return{origin:s,direction:new ph(f*g,p*g,m*g)}}Tt(t,i){const s=this.#ul;if(this.#ul+=t*this.Ha,this.#ul=Math.max(this.xa,this.#ul),this.Oa||(this.#ul=Math.min(this.ka,this.#ul)),!this.Oa)if(this.#ul<s){this.Za=1;const t=1-this.#ul/s;this.#ll+=t*(.49*Math.PI-this.#ll)}else this.#ul<this.ka||(this.Za=0);if(i){const t=this.#ul;if(s>0&&t>0){const h=1-t/s;this.#dl.Eo+=(i.Eo-this.#dl.Eo)*h,this.#dl.Io+=(i.Io-this.#dl.Io)*h,this.#dl.Lo+=(i.Lo-this.#dl.Lo)*h,this.#gl()}}}St(t,i){if(!(this.ja||this.Ya||this.Wa||this.Ua))return;t>0&&!this.Ya&&(t=0),0>t&&!this.ja&&(t=0),i>0&&!this.Ua&&(i=0),0>i&&!this.Wa&&(i=0);const s=this.sc(),h=new ph(this.Ra.Eo-s.Eo,this.Ra.Io-s.Io,this.Ra.Lo-s.Lo).ss(),e=(new ph).fi(h).Vo(new ph(0,1,0)).ss(),n=(new ph).fi(e).Vo(h).ss(),o=2*this.bh*Math.tan(this.qa/2)/this.#pl,r=-t*o,a=i*o,c=new ph(n.Eo,0,n.Lo),l=Math.sqrt(c.Eo*c.Eo+c.Lo*c.Lo);l>1e-6&&(c.Eo/=l,c.Lo/=l),this.#dl.Fo(new ph(e.Eo*r,e.Io*r,e.Lo*r)),this.#dl.Fo(new ph(c.Eo*a,0,c.Lo*a)),this.#gl()}#gl(){this.Xa&&this.Ga&&(this.#dl.Eo=Math.max(this.Xa.Eo,Math.min(this.Ga.Eo,this.#dl.Eo)),this.#dl.Io=Math.max(this.Xa.Io,Math.min(this.Ga.Io,this.#dl.Io)),this.#dl.Lo=Math.max(this.Xa.Lo,Math.min(this.Ga.Lo,this.#dl.Lo)))}oc(t,i,s,h){const e=t.maxX-t.minX,n=t.maxY-t.minY,o=i-2*h,r=s-2*h;e>o?(this.Ya=t.minX<h,this.ja=t.maxX>i-h):(this.Ya=0,this.ja=0),n>r?(this.Ua=t.minY<h,this.Wa=t.maxY>s-h):(this.Ua=0,this.Wa=0);const a=o>0&&e>0?this.bh*e/(.995*o):this.xa,c=r>0&&n>0?this.bh*n/(.995*r):this.xa;this.ka=Math.max(a,c,this.xa),this.Za||this.Oa||(this.#ul=this.ka);let l=0,u=0;e>o?(t.minX>h&&(l+=t.minX-h),t.maxX<i-h&&(l+=t.maxX-i+h)):l=(t.minX+t.maxX)/2-i/2,n>r?(t.minY>h&&(u+=h-t.minY),t.maxY<s-h&&(u+=s-h-t.maxY)):u=s/2-(t.minY+t.maxY)/2;const d=this.sc(),f=new ph(this.Ra.Eo-d.Eo,this.Ra.Io-d.Io,this.Ra.Lo-d.Lo).ss(),p=(new ph).fi(f).Vo(new ph(0,1,0)).ss(),m=(new ph).fi(p).Vo(f).ss(),g=2*this.bh*Math.tan(this.qa/2)/this.#pl,w=l*g,v=u*g,M=new ph(this.#dl.Eo-this.Ra.Eo,this.#dl.Io-this.Ra.Io,this.#dl.Lo-this.Ra.Lo),_=M.Eo*p.Eo+M.Io*p.Io+M.Lo*p.Lo,y=M.Eo*m.Eo+M.Io*m.Io+M.Lo*m.Lo;let b=0,k=0;if(e>o){const s=(t.minX-h)*g,e=(t.maxX-(i-h))*g;s>_?b=s-_:_>e&&(b=e-_)}else b=w-_;if(n>r){const i=(s-h-t.maxY)*g,e=(h-t.minY)*g;i>y?k=i-y:y>e&&(k=e-y)}else k=v-y;0!==b&&this.#dl.Fo(new ph(p.Eo*b,p.Io*b,p.Lo*b)),0!==k&&this.#dl.Fo(new ph(m.Eo*k,m.Io*k,m.Lo*k)),this.#gl()}},jh={Jh:0,Xh:0,rc:0,ac:0,cc:-1,lc:1,uc:0,dc:0},Yh=class{fc=new Set;get#wl(){return.6/Math.max(.1,.6)}get Kh(){for(const t of this.#vl)if(t&&0!==t.Xh)return 1;return 0}mc(t){const i=this.#vl[t];return i?0!==i.Xh:0}gc(t){const i=this.#vl[t];return i?i.Xh:0}#vl=[];#Ml=0;wc(t){const i=this.#vl[t];return i?i.Jh:0}vc(t,i){const s=this.#vl[t];s&&(s.Jh=i,s.Xh=0,s.rc=i,s.ac=0)}Mc(t,i){const s=this.#vl[i];s&&(s.Jh=1,s.Xh=0,s.rc=1,s.ac=0,this.#_l(t,s),this.#yl(t,s),t.Yo.fill(0))}_c(t){this.#vl=[];for(let i=0;t>i;i++)this.#vl.push({...jh})}yc(t,i){const s=t??this.#Ml,h=this.#vl[s];h&&this.#bl(h,1,i)}bc(t,i){const s=t??this.#Ml,h=this.#vl[s];h&&this.#bl(h,-1,i)}kc(t,i){const s=this.#vl[t];s&&(s.Xh=0,s.ac=0,s.rc=s.Jh,s.uc=i-wh,s.dc=1)}xc(t,i){const s=this.#vl[t];s&&s.dc&&(s.Jh=Math.max(0,Math.min(1,i)))}Pc(t,i){const s=this.#vl[t];s&&(s.dc=0,s.Xh=i,s.rc=s.Jh,s.ac=0)}Tc(t){const i=this.#vl[t];return i?i.dc:0}#bl(t,i,s){t.Xh=i,t.rc=t.Jh,t.ac=0,t.uc=void 0!==s?s-wh:.12*(2*Math.random()-1)}ae(t){this.#kl(t);for(const i of this.#vl)i.Jh=0,i.Xh=0,i.rc=0,i.ac=0,i.cc=-1,i.lc=1,i.uc=0,i.dc=0}#xl(t){return 10*Math.round(13-13*(wh+t))+9}#Pl(t,i,s,h){const e=this.#xl(s),n=i.Go[3*e+2],o=i.ir,r=t*Math.PI,a=o*Math.cos(r),c=.7*Math.sin(r);h.Do(a,c,n)}#yl(t,i){const s=i.Jh*Math.PI,h=Math.cos(s),e=Math.sin(s),n=t.jo,o=t.Go;let r=0;t instanceof Sh&&(r=t.ir/4*(1-t.Y));for(let a=0;a<n.length;a+=3){const t=o[a],i=o[a+1];n[a]=r+(t-r)*h,n[a+1]=(t-r)*e+i,n[a+2]=o[a+2]}}#Tl(t,i,s,h){if(this.fc.has(i)){if(!s.Sc){s.Sc=new Float32Array(t.Wo.length),s.Sc.set(t.Wo);for(let i=0;i<t.Wo.length;i++)t.Wo[i]=0}return void this.#yl(t,s)}const e=this.#xl(s.uc);s.cc!==e&&(0>s.cc||(t.Wo[s.cc]=s.lc),s.lc=t.Wo[e],s.cc=e),t.Wo[e]=0;const n=3*e,o=t.jo[1];t.jo[n]=h.Eo,t.jo[n+1]=h.Io+o,t.jo[n+2]=h.Lo,t.Yo[n]=0,t.Yo[n+1]=0,t.Yo[n+2]=0}#_l(t,i){if(i.Sc){for(let s=0;s<t.Wo.length;s++)t.Wo[s]=i.Sc[s];i.Sc=void 0}0>i.cc||(t.Wo[i.cc]=i.lc),i.cc=-1,i.lc=1}#kl(t){for(let i=0;i<this.#vl.length;i++){const s=this.#vl[i];if(s){if(i<t.length){if(s.Sc){for(let h=0;h<t[i].Wo.length;h++)t[i].Wo[h]=s.Sc[h];s.Sc=void 0}0>s.cc||(t[i].Wo[s.cc]=s.lc)}s.cc=-1,s.lc=1}}}#Sl(t,i,s,h){if(0===i.Xh)return 0;i.ac+=t;const e=i.Xh>0?1:0,n=Math.min(i.ac/this.#wl,1),o=n*n*(3-2*n);return i.Jh=i.rc+(e-i.rc)*o,1>n?(this.#Pl(i.Jh,s,i.uc,h),0):(i.Jh=e,i.Xh=0,1)}Th(t,i,s,h,e,n){if(0>s||s>=i.length)return;this.#Ml=s,this.#vl.length!==i.length&&this._c(i.length);const o=Math.min(t,1/30);for(let a=0;a<i.length;a++){const t=this.#vl[a];if(!t||0===t.Xh||t.dc)continue;const s=i[a],h=new ph;this.#Sl(o,t,s,h)&&this.#_l(s,t)}const r=zh(new Float32Array(this.#vl.map(t=>t?.Jh??0)),e);for(let a=0;a<i.length;a++){const t=this.#vl[a];if(!t||0===t.Xh&&!t.dc)continue;const s=i[a];if(!this.fc.has(a)){const i=Dh(a,t.Jh,r,h,e,n);Fh(s.jo,i-s.jo[1])}const o=new ph;this.#Pl(t.Jh,s,t.uc,o),this.#Tl(s,a,t,o)}}};function Wh(t){const i=t.length,s=new Int32Array(i),h=new Int32Array(i),e=new Float32Array(i);for(let n=0;i>n;n++){const i=t[n];s[n]=i.No,h[n]=i.Ho,e[n]=i.Xo}return{count:i,i:s,j:h,restLength:e}}function Uh(t,i,s,h,e,n,o,r,a,c,l){const{dt:u,solverIterations:d,damping:f,gravity:p,gravityEnabled:m}=c;if(s.set(t),m){const t=-p;for(let s=0;e>s;s++)h[s]>0&&(i[3*s+1]+=t*u)}for(let M=0;e>M;M++)if(h[M]>0){const t=3*M;i[t]*=f,i[t+1]*=f,i[t+2]*=f}for(let M=0;e>M;M++)if(h[M]>0){const s=3*M,h=s;t[s]+=i[h]*u,t[s+1]+=i[h+1]*u,t[s+2]+=i[h+2]*u}const g=c.distanceCompliance/(u*u),w=c.bendingCompliance/(u*u);for(let M=0;d>M;M++)Zh(t,h,n,g,r),Zh(t,h,o,w,a);const v=1/u;for(let M=0;e>M;M++)if(h[M]>0){const i=3*M+1,h=t[i];if(l>h){const e=(h-s[i])*v;t[i]=l,0>e&&(s[i]=l+.1*e*u)}}for(let M=0;e>M;M++)if(h[M]>0){const h=3*M;i[h]=(t[h]-s[h])*v,i[h+1]=(t[h+1]-s[h+1])*v,i[h+2]=(t[h+2]-s[h+2])*v}}function Zh(t,i,s,h,e){const n=s.i,o=s.j,r=s.restLength;for(let a=0;a<s.count;a++){const s=n[a],c=o[a],l=3*s,u=3*c;let d=t[l],f=t[l+1],p=t[l+2],m=t[u],g=t[u+1],w=t[u+2],v=d-m,M=f-g,_=p-w;const y=Math.sqrt(v*v+M*M+_*_);if(1e-12>y)continue;const b=1/y,k=y-r[a],x=i[s]+i[c];if(1e-12>x)continue;const P=e[a],T=-(k+h*P)/(x+h),S=i[s]*T*b,A=i[c]*T*b;d+=S*v,f+=S*M,p+=S*_,m-=A*v,g-=A*M,w-=A*_,t[l]=d,t[l+1]=f,t[l+2]=p,t[u]=m,t[u+1]=g,t[u+2]=w,e[a]=P+T}}var qh,Jh,Kh=0,Qh=[],te=[];function ie(t){return t instanceof Sh}function se(){return Kh}var he=class{Ac=null;#Al;#Cl;#El=[];#Il=0;#Ll=[];constructor(t,i){this.#Al=t,this.#Cl=i??"https://iiif.micr.io"}Be(t,i,s){this.#Il=i,this.#Ll=s;for(let h=0;i>h;h++){const i=t[2*h],s=t[2*h+1];this.#El[h]=[this.#zl(i?.id??"",i?.width??0),this.#zl(s?.id??"",s?.width??0)]}}#zl(t,i){return{Cc:"idle",Ec:0,Ic:0,Lc:null,zc:0,Dc:0,Fc:0,$c:"in",Oc:0,Bc:t,Vc:i}}Rc(t,i,s){return this.#Dl(t,i),this.#Fl(t,i,s),this.#$l(t,i,s),this.#Ol(t),this.#Bl(i),this.#Vl(),this.#Rl()&&this.Ac?.(),this.Nc()}#Rl(){for(let t=0;t<this.#El.length;t++)if("fading"===this.#El[t][0].Cc||"fading"===this.#El[t][1].Cc)return 1;return 0}#Nl(t,i){const s=this.#Ll[i];if(s){const i=2*t,h=2*t+1;if(s.includes(i)||s.includes(h))return 0}return Math.abs(t-i)}#Hl(t,i,s){const h=2*t+i;for(let e=-1;1>=e;e++){const t=s+e;if(t>=0&&t<this.#Il&&this.#Ll[t].includes(h))return 1}return 0}#Xl(t){return 500+2e3*t}#Gl(t,i,s){let h=512;return t>768&&(h=1024),t>1536&&(h=2048),h>s&&i>=s?i:Math.max(h,i)}#Dl(t,i){for(let s=0;s<this.#Il;s++)for(let h=0;2>h;h++){const e=this.#El[s][h];e.Bc&&(this.#Hl(s,h,i)?"idle"===e.Cc&&(e.zc=t,e.Cc="pending"):("downloading"===e.Cc&&e.Lc&&(e.Lc.abort(),e.Lc=null),"pending"!==e.Cc&&"downloading"!==e.Cc||(e.Cc="idle",e.zc=0)))}}#Fl(t,i,s){const h=this.#Al.Yt().width/2*(2.2/Math.max(.01,s));for(let e=0;e<this.#Il;e++)for(let s=0;2>s;s++){const n=this.#El[e][s];this.#Hl(e,s,i)&&"done"===n.Cc&&n.Bc&&this.#Gl(h,n.Ec,n.Vc)>n.Ec&&(n.Cc="pending",n.zc=t)}}#$l(t,i,s){const h=this.#Al.Yt().width/2*(2.2/Math.max(.01,s));for(let e=0;e<this.#Il;e++){const s=this.#Nl(e,i);for(let n=0;2>n;n++){const o=this.#El[e][n];if("pending"!==o.Cc)continue;if(!o.Bc)continue;if(!this.#Hl(e,n,i))continue;if(t-o.zc<this.#Xl(s))continue;const r=this.#Gl(h,o.Ec,o.Vc);if(r<=o.Ec){o.Cc="done";continue}o.Ic=r,o.Cc="downloading";const a=0===o.Ec?o.Oc:1-o.Oc;this.#jl(e,n,a,o)}}}async#jl(t,i,s,h){const e=new AbortController;h.Lc=e;const n=`${this.#Cl}/${h.Bc}/full/!${h.Ic},/0/default.webp`;try{const o=await fetch(n,{signal:e.signal});if(!o.ok)throw new Error(`HTTP ${o.status}`);const r=await o.blob();if(e.signal.aborted||"downloading"!==h.Cc)return;const a=await createImageBitmap(r);if(e.signal.aborted||"downloading"!==h.Cc)return void a.close();this.#Al.Kr(t,i,s,a),a.close(),h.Ec=h.Ic,h.Cc="fading",h.Fc=performance.now(),h.Dc=0,h.$c=h.Oc===s?"in":"cross",h.Lc=null,this.Ac?.()}catch(o){o instanceof DOMException&&o.name,h.Cc="idle",h.zc=0,h.Lc=null}}#Ol(t){for(let i=0;i<this.#Il;i++)for(let s=0;2>s;s++){const h=this.#El[i][s];if("fading"!==h.Cc)continue;const e=t-h.Fc;if(h.Dc=Math.min(1,e/500),h.Dc>=1){if("cross"===h.$c){const t=h.Oc;h.Oc=1-h.Oc,this.#Al.ia(i,s,t)}h.Cc="done"}}}#Bl(t){for(let i=0;i<this.#Il;i++)if(this.#Nl(i,t)>5)for(let t=0;2>t;t++){const s=this.#El[i][t];0!==s.Ec&&("downloading"===s.Cc&&s.Lc&&(s.Lc.abort(),s.Lc=null),this.#Al.ia(i,t,0),this.#Al.ia(i,t,1),s.Ec=0,s.Ic=0,s.Cc="idle",s.zc=0,s.Dc=0,s.$c="in",s.Oc=0)}}#Vl(){for(let t=0;t<this.#Il;t++){const i=this.#Yl(this.#El[t][0],0),s=this.#Yl(this.#El[t][0],1),h=this.#Yl(this.#El[t][1],0),e=this.#Yl(this.#El[t][1],1);this.#Al.Qr(t,i,s,h,e)}}#Yl(t,i){if(0===t.Ec)return 0;if("fading"===t.Cc){const s=t.Dc;return"in"===t.$c?t.Oc===i?s:0:t.Oc===i?1-s:s}return t.Oc===i?1:0}Nc(){for(let t=0;t<this.#Il;t++)for(let i=0;2>i;i++){const s=this.#El[t][i];if("pending"===s.Cc||"downloading"===s.Cc||"fading"===s.Cc)return 1}return 0}};function ee(t,i,s){let h=1/0,e=new ph,n=-1;for(let o=0;o<t.length;o++){const r=t[o];if(!r)continue;const a=r.jo,c=r.Zo;for(const t of c){const[r,c,l]=t.Ro,u=a[3*r],d=a[3*r+1],f=a[3*r+2],p=a[3*c]-u,m=a[3*c+1]-d,g=a[3*c+2]-f,w=a[3*l]-u,v=a[3*l+1]-d,M=a[3*l+2]-f,_=s.Io*M-s.Lo*v,y=s.Lo*w-s.Eo*M,b=s.Eo*v-s.Io*w,k=p*_+m*y+g*b;if(1e-8>Math.abs(k))continue;const x=1/k,P=i.Eo-u,T=i.Io-d,S=i.Lo-f,A=(P*_+T*y+S*b)*x;if(0>A||A>1)continue;const C=T*g-S*m,E=S*p-P*g,I=P*m-T*p,L=(s.Eo*C+s.Io*E+s.Lo*I)*x;if(0>L||A+L>1)continue;const z=(w*C+v*E+M*I)*x;z>0&&h>z&&(h=z,e=new ph(i.Eo+s.Eo*z,i.Io+s.Io*z,i.Lo+s.Lo*z),n=o)}}return h===1/0||0>n?null:{Hc:h,Xc:e,Gc:n}}function ne(t,i,s,h,e,n){if(0>i||i>1||0>s||s>1)return null;const o=t instanceof Sh,r=o&&1===h?140:0,a=n??{uMin:0,vMin:0,fU:1,fV:1},c=a.uMin+i*a.fU,l=9*(o||0===h?c:1-c),u=13*(a.vMin+s*a.fV),d=Math.max(0,Math.min(8,Math.floor(l))),f=Math.max(0,Math.min(12,Math.floor(u))),p=Math.min(1,Math.max(0,l-d)),m=Math.min(1,Math.max(0,u-f)),g=t.jo,w=e?t.ur():null,v=(t,i)=>3*(r+10*t+i),M=v(f,d),_=v(f,d+1),y=v(f+1,d),b=v(f+1,d+1),k=13;let x,P,T,S,A,C,E,I,L,z=0,D=0,F=0;if(p+m>1){const t=1-m,i=1-p,s=p+m-1;x=t*g[_]+i*g[y]+s*g[b],P=t*g[_+1]+i*g[y+1]+s*g[b+1],T=t*g[_+2]+i*g[y+2]+s*g[b+2],w&&(z=t*w[_]+i*w[y]+s*w[b],D=t*w[_+1]+i*w[y+1]+s*w[b+1],F=t*w[_+2]+i*w[y+2]+s*w[b+2]),S=9*(g[b]-g[y]),A=9*(g[b+1]-g[y+1]),C=9*(g[b+2]-g[y+2]),E=(g[b]-g[_])*k,I=(g[b+1]-g[_+1])*k,L=(g[b+2]-g[_+2])*k}else{const t=1-p-m,i=m,s=p;x=t*g[M]+i*g[y]+s*g[_],P=t*g[M+1]+i*g[y+1]+s*g[_+1],T=t*g[M+2]+i*g[y+2]+s*g[_+2],w&&(z=t*w[M]+i*w[y]+s*w[_],D=t*w[M+1]+i*w[y+1]+s*w[_+1],F=t*w[M+2]+i*w[y+2]+s*w[_+2]),S=9*(g[_]-g[M]),A=9*(g[_+1]-g[M+1]),C=9*(g[_+2]-g[M+2]),E=(g[y]-g[M])*k,I=(g[y+1]-g[M+1])*k,L=(g[y+2]-g[M+2])*k}return S*=a.fU,A*=a.fU,C*=a.fU,E*=a.fV,I*=a.fV,L*=a.fV,o||1!==h||(S=-S,A=-A,C=-C),{jc:x,Yc:P,Wc:T,Uc:z,Zc:D,qc:F,Jc:S,Kc:A,Qc:C,tl:E,il:I,sl:L}}function oe(t,i,s,h,e){const n=ne(t,i,s,h,0,e);return n?new ph(n.jc,n.Yc,n.Wc):null}function re(t,i,s,h){const e=i.arr,n=e[0]*t.Eo+e[4]*t.Io+e[8]*t.Lo+e[12],o=e[1]*t.Eo+e[5]*t.Io+e[9]*t.Lo+e[13],r=e[3]*t.Eo+e[7]*t.Io+e[11]*t.Lo+e[15];return r>0?{x:(n/r*.5+.5)*s,y:(.5-o/r*.5)*h}:null}function ae(t,i,s){const h=Math.min(1,i/Math.max(1e-4,t)),e=Math.min(1,t/Math.max(1e-4,i));return[s?1-h:0,(1-e)/2,h,e]}var ce=class{static hl=Lh;nl;#Wl;#Ul;#Zl;#Il=0;#ql=new Float32Array(0);#Jl=new Float32Array(0);#Kl=0;#uc=new Float32Array(0);#dc=new Float32Array(0);#Ni=[];#Ql=[];#Al;#tu;#Oc;#iu;#su=null;#u;#hu;#eu;#nu;#ou=[];#Bn;#ru=0;#au=0;#cu=[];#Ml=0;#lu=0;#uu=-1;#du=0;#fu=0;#pu={ol:64,rl:3,al:0,cl:41e-6,ll:.975,ul:9.81,fl:1};#mu=new Set;#gu=[];#wu=0;#vu=0;#Mu=0;constructor(t){this.#u=t.pl,this.#hu=t.ml,this.#eu=t.wl,this.#nu=t.vl,this.#Wl=t.Ml??0,this.#Ul=t.Rr??0,this.#Zl=t._l??1,this.nl=this.#Ge(t)}goto(t){const i=Math.max(0,Math.min(this.#Il-1,t));if(i===this.#lu)return Promise.resolve();this.#Bn&&(Q.cancel(this.#Bn),this.#Bn=void 0),this.#ru=0,this.#au=1;const s=new Promise(t=>{let i;const s=setTimeout(()=>{const s=this.#cu.indexOf(i);0>s||this.#cu.splice(s,1),t()},3e3);i=()=>{clearTimeout(s),t()},this.#cu.push(i)}),h=i>this.#lu?1:-1,e=!this.#iu.Kh;let n=Math.abs(i-this.#lu),o=1;const r=()=>{if(0>=n)return this.#Bn=void 0,void(this.#ru=0);const t=o&&e?.12:.02,i=wh+(2*Math.random()-1)*t;h>0?this.yl(i):this.kl(i),o=0,n--,this.#Bn=r,Q.request(r)};return this.#Bn=r,this.#ru=1,r(),s}zoom(t){this.#Oc.Tt(t),this.#_u()}rotateView(t){this.#Oc.ec(t),this.#_u()}_l(){return this.#Zl}isZoomedIn(){const t=this.#ou;return 0===t.length?0:this.#yu().some(i=>!t.some(t=>t.id===i.id))?1:!t.every(t=>{const[i,s,h,e]=t.bounds;return!(i>1e-4||s>1e-4||Math.abs(h-1)>1e-4||Math.abs(e-1)>1e-4)})}setLightingPreset(t){const i=(t=>Ih.find(i=>i.name===t))(t);if(!i)return;const s={};for(const h of i.params)s[h.key]=h.default;this.#Al.sa(t,s),this.#_u()}#bu(t,i,s){const h=this.#ku(t,i,s);if(!h)return null;const e=this.#xu(h.result.Xc);if(!e)return null;const{facing:n,obscured:o}=this.#Pu(h.mesh,h.side,h.pageIndex,h.result,e.screen);return{x:e.screen.x,y:e.screen.y,pageIndex:h.pageIndex,side:h.side,facing:n,obscured:o}}#Tu(t,i,s,h,e,n,o,r,a,c,l){const u=e&&e>0?e:1,d=this.#ku(t,i,s);if(!d)return null;const f=this.#xu(d.result.Xc);if(!f)return null;const{facing:p,obscured:m}=this.#Pu(d.mesh,d.side,d.pageIndex,d.result,f.screen),g=d.mesh,w=d.result.xl,v=d.result.Xc.Eo,M=d.result.Xc.Io,_=d.result.Xc.Lo,{screen:y,viewProj:b,clientWidth:k,clientHeight:x}=f,P=d.result.Pl,T=d.result.Tl,S=Math.sqrt(P.Eo*P.Eo+P.Io*P.Io+P.Lo*P.Lo)||1,A=Math.sqrt(T.Eo*T.Eo+T.Io*T.Io+T.Lo*T.Lo)||1,C=P.Eo/S,E=P.Io/S,I=P.Lo/S,L=T.Eo/A,z=T.Io/A,D=T.Lo/A,F=g instanceof Sh||0===d.side?1:-1,$=w.Eo*F,O=w.Io*F,B=w.Lo*F,V=n??0,R=o??0,N=r??0,H=Math.cos(V),X=Math.sin(V),G=Math.cos(R),j=Math.sin(R),Y=Math.cos(N),W=Math.sin(N),U=h*(c??1)*S/u,Z=h*(l??1)*S/u,q=h*S/u,J=(t,i)=>{const s=new Float32Array(16);for(let h=0;4>h;h++)for(let e=0;4>e;e++)s[4*h+e]=t[e]*i[4*h]+t[4+e]*i[4*h+1]+t[8+e]*i[4*h+2]+t[12+e]*i[4*h+3];return s},K=new Float32Array(16);K[0]=1,K[5]=H,K[6]=X,K[9]=-X,K[10]=H,K[15]=1;const Q=new Float32Array(16);Q[0]=G,Q[2]=-j,Q[5]=1,Q[8]=j,Q[10]=G,Q[15]=1;const tt=new Float32Array(16);tt[0]=Y,tt[1]=W,tt[4]=-W,tt[5]=Y,tt[10]=1,tt[15]=1;const it=new Float32Array(16);it[0]=U,it[5]=Z,it[10]=q,it[15]=1;const st=new Float32Array(16);st[0]=C,st[1]=E,st[2]=I,st[4]=L,st[5]=z,st[6]=D,st[8]=$,st[9]=O,st[10]=B,st[15]=1;const ht=new Float32Array(16);ht[0]=1,ht[5]=1,ht[10]=1,ht[15]=1,ht[12]=v,ht[13]=M,ht[14]=_;const et=new Float32Array(16);et[0]=.5*k,et[5]=.5*-x,et[10]=1,et[12]=0,et[13]=0,et[15]=1;const nt=J(et,J(new Float32Array(b.arr),J(ht,J(st,J(tt,J(Q,J(K,it))))))),ot=1/nt[15];for(let rt=0;16>rt;rt++)nt[rt]*=ot;return nt[12]=y.x-.5*k,nt[13]=y.y-.5*x,nt[14]=0,nt[15]=1,{matrix:nt,facing:p,obscured:m}}#ku(t,i,s){if(0===this.#Ni.length||0===this.#Ql.length)return null;const h=this.#Ni.findIndex(i=>i.id===t);if(0>h)return null;const e=Math.floor(h/2),n=h%2;if(e>=this.#Ql.length)return null;const o=this.#Ql[e],r=((t,i,s,h,e)=>{const n=ne(t,i,s,h,1,e);if(!n)return null;const o=Math.sqrt(n.Uc*n.Uc+n.Zc*n.Zc+n.qc*n.qc)||1;return{Xc:new ph(n.jc,n.Yc,n.Wc),xl:new ph(n.Uc/o,n.Zc/o,n.qc/o),Pl:new ph(n.Jc,n.Kc,n.Qc),Tl:new ph(n.tl,n.il,n.sl)}})(o,i,s,n,this.#Su(e,n));return r?{pageIndex:e,side:n,mesh:o,result:r}:null}#Su(t,i){if(!this.#Kl)return null;const s=0===i?this.#uc:this.#dc,h=4*t;return{uMin:s[h],vMin:s[h+1],fU:s[h+2],fV:s[h+3]}}#Au(){const t=this.#Al.Yt(),i=t.clientWidth,s=t.clientHeight;if(0>=i||0>=s)return null;const h=this.#Oc.ya(),e=t.width/Math.max(1,t.height),n=new Zt;n.Oi(.25*Math.PI,e,.1,50);const o=new Zt;return o.fi(h),o.Ki(n),{perspective:n,viewProj:o,clientWidth:i,clientHeight:s}}#xu(t){const i=this.#Au();if(!i)return null;const s=re(t,i.viewProj,i.clientWidth,i.clientHeight);return s?{screen:s,...i}:null}#Pu(t,i,s,h,e){const n=h.Xc,o=h.xl,r=this.#Oc.sc(),a=o.Eo*(r.Eo-n.Eo)+o.Io*(r.Io-n.Io)+o.Lo*(r.Lo-n.Lo),c=t instanceof Sh||0===i?a>0:0>a,l=this.#iu.wc(s);let u=0===i?l>.5:.5>l;if(!u){const{origin:t,direction:i}=this.#Oc.nc(e.x,e.y),s=ee(this.#Ql,t,i);if(s){const h=(n.Eo-t.Eo)*i.Eo+(n.Io-t.Io)*i.Io+(n.Lo-t.Lo)*i.Lo;s.Hc<h-1e-4&&(u=1)}}return{facing:c,obscured:u}}#Cu(t){this.#lu=t,this.#Ml=t;const i=new Float32Array(this.#Il);for(let h=0;h<this.#Il;h++){const s=t>h;i[h]=s?1:0,this.#iu.vc(h,i[h]),s?this.#iu.Mc(this.#Ql[h],h):(this.#Ql[h].jo.set(this.#Ql[h].Go),this.#Ql[h].Yo.fill(0)),this.#mu.delete(h)}const s=zh(i,this.#Il);for(let h=0;h<this.#Il;h++){const t=Dh(h,i[h],s,this.#wu,this.#Il,mh);this.#Eu(h,t,1,1),this.#Al.pa(h,this.#Ql[h]),this.#Al.ma(h,this.#Ql[h])}this.#Al.Ma(i),this.#au=0,this.#hu?.(this.#lu)}Sl(){return this.#lu}Al(){return this.#Il}yl(t){if(this.#iu&&this.#lu<this.#Il){this.#tu.Da="none",this.#Ml=this.#lu;const i=t??this.#tu.Aa??void 0;this.#tu.Aa=null,this.#iu.yc(this.#Ml,i),this.#lu++,this.#hu?.(this.#lu),this.#_u()}}kl(t){if(this.#iu&&this.#lu>0){this.#tu.Da="none",this.#lu--,this.#Ml=this.#lu;const i=t??this.#tu.Aa??void 0;this.#tu.Aa=null,this.#iu.bc(this.#Ml,i),this.#hu?.(this.#lu),this.#_u()}}#_u=()=>{Q.request(this.#Gn)};async#Ge(t){const i=t.Sn;if(!i||0===i.length)throw new Error("BookViewer: no images in book index");const{pageCnt:s,pageIdxes:h,totalImagePages:e,computedPageWidths:n,aspectsForInit:o,frontAspects:r,backAspects:a,avgAspect:c}=(t=>{const i=Math.ceil(t.length/2),s=t.length,h=[[0]];for(let l=1;i>l;l++){const i=2*l-1,s=2*l;s<t.length?h.push([i,s]):h.push([i])}let e=0,n=0;const o=new Float32Array(i),r=new Float32Array(i);for(let l=0;i>l;l++){const i=t[2*l],s=t[2*l+1],h=i&&i.width>0&&i.height>0?i.height/i.width:gh,a=s&&s.width>0&&s.height>0?s.height/s.width:h;o[l]=h,r[l]=a,i&&i.width>0&&i.height>0&&(e+=h,n++),s&&s.width>0&&s.height>0&&(e+=a,n++)}const a=n>0?e/n:gh,c=1*a;return{pageCnt:i,pageIdxes:h,totalImagePages:s,computedPageWidths:new Float32Array(i).fill(Math.sqrt(c/a)),aspectsForInit:new Float32Array(i).fill(a),frontAspects:o,backAspects:r,avgAspect:a}})(i);if(this.#Ni=i,!this.#Iu(s,n,o,t))throw new Error("BookViewer: WebGL is not available in this browser.");const l=t?.Cl??0;this.#Kl=l;const u=l?r:new Float32Array(s).fill(c),d=l?a:new Float32Array(s).fill(c);this.#Lu(s,u,d,c);const f=t.El;if(void 0!==f&&f>0&&e>f){const t=Math.min(Math.ceil(f/2),this.#Il-1);this.#Cu(t)}await(async(t,i)=>{Kh=0;const s=(t=>{for(const i of t)if(!ie(i))return i;return null})(t);if(s){qh=Wh(s.Jo),Jh=Wh(s.Ko),Qh.length=0,te.length=0;for(let t=0;i>t;t++)Qh.push({dl:new Float64Array(qh.count),bl:new Float64Array(Jh.count)}),te.push(new Float32Array(420));Kh=1}else console.warn("[Solver] No paper meshes found — solver will be idle.")})(this.#Ql,this.#Il),await this.#zu(i),this.#su=new he(this.#Al,t.Il),this.#su.Ac=()=>this.#_u(),this.#su.Be(i,this.#Il,h),this.#hu?.(this.#lu),setTimeout(()=>{this.#_u()},500)}#Iu(t,i,s,h){this.#Il=t,this.#Jl=i,this.#ql=s;const e=this.#u;let n=e.getContext("webgl2",{alpha:1,premultipliedAlpha:1,antialias:1});if(!n)return console.warn("BookViewer: WebGL not available"),0;this.#Oc=new Gh,this.#Oc.Ra.Do(0,0,0),this.#Oc.Ba=0,this.#Oc.Va=vh,this.#Oc.bh=2.2,this.#Oc.Qa();let o=0,r=0;for(let g=0;g<this.#Il;g++){const t=this.#Jl[g],i=t*this.#ql[g];t>o&&(o=t),i>r&&(r=i)}this.#Ql.length=0;for(let g=0;g<this.#Il;g++){const t=(this.#Il-1-g)*mh,i=this.#Jl[g],s=this.#ql[g];if(!this.#Wl||0!==g&&g!==this.#Il-1)this.#Ql.push(new Ph(t,i,s));else{const h=o/i,e=r/(i*s),n=Math.max(1.04,h),a=Math.max(1.08,e),c=new Sh(t,i,s,.0192,n,a);this.#Ql.push(c)}}this.#mu.clear(),this.#gu.length=0;for(let g=0;g<this.#Il;g++)this.#gu.push(new Float32Array(this.#Ql[g].jo));this.#wu=this.#Il*mh;let a=1/0,c=1/0,l=1/0,u=-1/0,d=-1/0,f=-1/0;for(const g of this.#Ql){const t=g.Go;for(let i=0;i<t.length;i+=3)t[i]<a&&(a=t[i]),t[i]>u&&(u=t[i]),t[i+1]<c&&(c=t[i+1]),t[i+1]>d&&(d=t[i+1]),t[i+2]<l&&(l=t[i+2]),t[i+2]>f&&(f=t[i+2])}const p=Math.max(Math.abs(a),Math.abs(u));this.#Oc.Xa=new ph(-p,c,l),this.#Oc.Ga=new ph(p,d,f),this.#Al=new Rh(n),this.#Al.Vr=h.Ll??1,this.#Al.Rr=this.#Ul,this.#Al.qr(this.#Ql),this.#Al._a({x:this.#Oc.Xa.Eo,y:this.#Oc.Xa.Io,z:this.#Oc.Xa.Lo},{x:this.#Oc.Ga.Eo,y:this.#Oc.Ga.Io,z:this.#Oc.Ga.Lo}),this.#Oc.Ja(e.clientWidth,e.clientHeight);{const t=.05*Math.min(e.clientWidth,e.clientHeight);this.#Oc.Ka({minX:a,maxX:u,minZ:l,maxZ:f},t)}this.#iu=new Yh,this.#iu._c(this.#Il),this.#Wl&&(this.#iu.fc=new Set([0,this.#Il-1])),this.#tu=new Nh(e,this.#Oc,this.#_u),this.#tu.Ea=()=>this.isZoomedIn();const m=h.zl??"daylight";return this.setLightingPreset(m),this.#Du(),this.#Fu(),this.#$u(e),document.addEventListener("visibilitychange",()=>{document.hidden&&(this.#vu=0)}),1}#Lu(t,i,s,h){const e=new Float32Array(4*t),n=new Float32Array(4*t);for(let o=0;t>o;o++){const t=this.#Ql[o]instanceof Sh;this.#Ou(e,o,ae(i[o],h,0)),this.#Ou(n,o,ae(s[o],h,!t))}this.#uc=e,this.#dc=n,this.#Al.ta(e,n)}#Ou(t,i,s){const h=4*i;t[h]=s[0],t[h+1]=s[1],t[h+2]=s[2],t[h+3]=s[3]}#Du(){for(const t of this.#Ql)t.lr();this.#iu.ae(this.#Ql)}Dl(t){if(!t.camera.D){if(!t.camera.L){const i=new Float64Array(5);t.camera.L=(s,h)=>{const e=this.#bu(t.id,s,h),n=e?.facing&&!e.obscured;return i[0]=n?e.x:-1,i[1]=n?e.y:-1,i}}t.camera.D||(t.camera.D=(i,s,h,e,n,o,r,a,c)=>{const l=this.#Tu(t.id,i,s,h,c,e,n,o,0,r,a);return l&&l.facing&&!l.obscured?l.matrix:new Float32Array})}}#Fu(){this.#tu.Pa=()=>{this.kl()},this.#tu.Ta=()=>{this.yl()},this.#tu.Sa=this.#Bu,this.#tu.Ca=(t,i)=>this.#Vu(t,i),this.#tu.Ia=(t,i)=>{const s=this.#Ru(t,i);if(!s)return;const h=this.#Al.Yt().getBoundingClientRect(),e=t-h.left,n=i-h.top,{origin:o,direction:r}=this.#Oc.nc(e,n);1e-8>Math.abs(r.Io)?this.#du=0:this.#du=o.Eo+r.Eo*(-o.Io/r.Io),this.#uu=s.pageIndex,this.#fu=this.#iu.wc(this.#uu),this.#iu.kc(this.#uu,s.grabRow),this.#Ml=this.#uu,this.#mu.add(this.#uu),this.#_u()},this.#tu.La=(t,i)=>{if(0>this.#uu||this.#uu>=this.#Il)return;const s=this.#Al.Yt().getBoundingClientRect(),h=t-s.left,e=i-s.top,{origin:n,direction:o}=this.#Oc.nc(h,e);if(1e-8>Math.abs(o.Io))return void this.#_u();const r=-n.Io/o.Io,a=n.Eo+o.Eo*r,c=this.#Ql[this.#uu],l=this.#du-a,u=l>0?this.#du+c.ir:c.ir-this.#du,d=this.#fu+l/Math.max(.01,u);this.#iu.xc(this.#uu,Math.max(0,Math.min(1,d))),this.#Ml=this.#uu,this.#_u()},this.#tu.za=()=>{if(0>this.#uu||this.#uu>=this.#Il)return void(this.#uu=-1);const t=this.#iu.wc(this.#uu),i=.5>=this.#fu,s=this.#fu>=.5&&.5>t;i&&t>.5?(this.#iu.Pc(this.#uu,1),this.#uu===this.#lu&&this.#lu<this.#Il&&(this.#lu++,this.#hu?.(this.#lu))):s?(this.#iu.Pc(this.#uu,-1),this.#uu===this.#lu-1&&this.#lu>0&&(this.#lu--,this.#hu?.(this.#lu))):this.#iu.Pc(this.#uu,i?-1:1),this.#uu=-1,this.#_u()}}#$u(t){window.addEventListener("resize",()=>{this.#Al.Ch(),this.#Oc.Ja(t.clientWidth,t.clientHeight),this.#_u()}),t.addEventListener("webglcontextlost",t=>{console.warn("WebGL context lost."),t.preventDefault()}),t.addEventListener("webglcontextrestored",()=>{const i=t.getContext("webgl2",{alpha:1,premultipliedAlpha:1,antialias:1});i&&this.#Al&&(this.#Al=new Rh(i),this.#Al.Rr=this.#Ul,this.#Al.qr(this.#Ql))})}#Ru(t,i){const s=this.#Al.Yt().getBoundingClientRect(),h=t-s.left,e=i-s.top;if(0>=s.width||0>=s.height)return null;const{origin:n,direction:o}=this.#Oc.nc(h,e),r=ee(this.#Ql,n,o);if(!r)return null;const a=this.#Ql[r.Gc],c=.5-r.Xc.Lo/a.sr,l=Math.max(0,Math.min(1,c));return{pageIndex:r.Gc,grabRow:l,worldX:r.Xc.Eo}}#Bu=(t,i)=>{const s=this.#Al.Yt().getBoundingClientRect(),h=t-s.left,e=i-s.top;if(0>=s.width||0>=s.height)return null;const{origin:n,direction:o}=this.#Oc.nc(h,e),r=ee(this.#Ql,n,o);if(!r)return null;const a=this.#Ql[r.Gc],c=.5-r.Xc.Lo/a.sr,l=Math.max(0,Math.min(1,c));return{direction:0>r.Xc.Eo?"prev":"next",grabRow:l}};#Vu(t,i){const{origin:s,direction:h}=this.#Oc.nc(t,i);return ee(this.#Ql,s,h)?.Xc??null}#yu(){const t=[],i=(i,s)=>{const h=this.#Ni[2*i+s];h&&!t.some(t=>t.id===h.id)&&t.push({id:h.id,pageIndex:i,side:s})};i(this.#lu,0),i(this.#lu-1,1);for(let s=0;s<this.#Il;s++){const t=this.#iu.wc(s);if(t>0&&1>t){i(s,0),i(s,1);const t=this.#iu.gc(s);0>t?i(s+1,0):t>0?i(s-1,1):(i(s-1,1),i(s+1,0))}}return t}#Nu(){const t=this.#Au();if(!t)return[];const i=[];for(const s of this.#yu()){const h=this.#Hu(s.pageIndex,s.side,t);h&&i.push({id:s.id,bounds:h})}return i}#Hu(t,i,s){const h=this.#Ql[t],e=this.#Su(t,i);let n=1/0,o=1/0,r=-1/0,a=-1/0,c=0;for(let l=0;32>=l;l++){const t=l/32;for(let l=0;32>=l;l++){const u=l/32,d=oe(h,t,u,i,e);if(!d)continue;const f=re(d,s.viewProj,s.clientWidth,s.clientHeight);f&&(0>f.x||f.x>s.clientWidth||0>f.y||f.y>s.clientHeight||(n>t&&(n=t),o>u&&(o=u),t>r&&(r=t),u>a&&(a=u),c++))}}return 0===c?null:[n,o,r-n,a-o]}#Gn=t=>{0===this.#vu&&(this.#vu=t);let i=(t-this.#vu)/1e3;i>0||(i=1/60),i>1/30&&(i=1/30),this.#vu=t,this.#iu.Th(i,this.#Ql,this.#Ml,this.#wu,this.#Il,mh);const s=new Float32Array(this.#Il);for(let n=0;n<this.#Il;n++)s[n]=this.#iu.wc(n);this.#Al.Ma(s);const h=zh(s,this.#Il);this.#Xu(s,h),this.#Gu(s,h),this.#ju(s,h);for(let n=0;n<this.#Il;n++)this.#iu.mc(n)&&this.#mu.add(n);if(!this.#au||this.#ru||this.#iu.Kh||(this.#au=0),this.#Yu(i,s),this.#Wu(),this.#Uu(),this.#cu.length&&!this.#au&&!this.#ru&&!this.#iu.Kh&&0===this.#mu.size){const t=this.#cu;this.#cu=[];for(const i of t)i()}this.#su&&this.#su.Rc(t,this.#lu,this.#Oc.bh),this.#Oc.Th(i),this.#Zu(),this.#Al.De(this.#Oc);const e=this.#Nu();this.#eu&&this.#Oc.tc()&&this.#eu(e),this.#ou=e,this.#nu&&this.#nu(e),(this.#mu.size>0||this.#iu.Kh||this.#tu&&"none"!==this.#tu.Da||this.#Al.ha()||this.#Oc.tc())&&this.#_u()};#Wu(){if(se()){for(let t=0;t<this.#Il;t++){if(!this.#mu.has(t))continue;if(this.#iu.mc(t)||this.#iu.Tc(t))continue;const i=this.#Ql[t].jo,s=this.#gu[t];let h=0;for(let t=0;t<i.length;t++){const e=Math.abs(i[t]-s[t]);e>h&&(h=e)}1e-6>h&&this.#mu.delete(t)}for(let t=0;t<this.#Il;t++)this.#gu[t].set(this.#Ql[t].jo);this.#Mu++}}#Eu(t,i,s,h){const e=this.#Ql[t],n=i-e.jo[1];Math.abs(n)>1e-4&&(Fh(e.jo,n),h&&this.#gu[t]&&Fh(this.#gu[t],n),s&&(this.#Al.pa(t,e),this.#Al.ma(t,e)))}#Xu(t,i){for(let s=0;s<this.#Il;s++){if(this.#mu.has(s))continue;if(this.#iu.mc(s))continue;if(this.#Wl&&this.#iu.fc.has(s))continue;const h=Dh(s,t[s],i,this.#wu,this.#Il,mh);this.#Eu(s,h,1,1)}}#Gu(t,i){if(this.#Wl)for(const s of this.#iu.fc){const h=Dh(s,t[s],i,this.#wu,this.#Il,mh);this.#Eu(s,h,1,0)}}#ju(t,i){for(let s=0;s<this.#Il;s++){if(!this.#mu.has(s))continue;if(this.#iu.mc(s))continue;if(this.#iu.Tc(s))continue;if(this.#Wl&&this.#iu.fc.has(s))continue;const h=Dh(s,t[s],i,this.#wu,this.#Il,mh);this.#Eu(s,h,0,1)}}#Yu(t,i){if(!se())return;const s=Array.from(this.#mu);if(0===s.length)return;const h=t/this.#pu.rl;this.#pu.ll=this.#au?.995:.975,((t,i,s,h,e,n,o,r,a)=>{if(!Kh)return;i.sort((t,i)=>t-i);const c=((t,i,s,h,e)=>{const n=new Float32Array(h);for(let o=0;h>o;o++)n[o]=Dh(o,t[o],i,s,h,e);return n})(n,zh(n,r),o,r,a),l=i.length,u=t,d={dt:u,solverIterations:l>5?Math.max(2,Math.round(h.ol+Math.min(1,(l-5)/5)*(2-h.ol))):h.ol,distanceCompliance:h.al/(u*u),bendingCompliance:h.cl/(u*u),damping:h.ll,gravity:h.fl?h.ul:0,gravityEnabled:h.fl};for(const f of i){const t=Qh[f];t.dl.fill(0),t.bl.fill(0)}for(let f=0;s>f;f++)for(const t of i){const i=e[t];if(ie(i))continue;const s=Qh[t],h=t<c.length?c[t]:0;Uh(i.jo,i.Yo,te[t],i.Wo,140,qh,Jh,s.dl,s.bl,d,h)}})(h,s,this.#pu.rl,this.#pu,this.#Ql,i,this.#wu,this.#Il,mh)}#Uu(){for(const t of this.#mu)this.#Al.pa(t,this.#Ql[t]),this.#Al.ma(t,this.#Ql[t])}#Zu(){const t=this.#Al.wa(),i=new Zt;i.Oi(.25*Math.PI,t.width/Math.max(1,t.height),.1,50);const s=this.#Oc.ya(),h=new Zt;h.fi(s),h.Ki(i);const e=this.#Al.va(h);if(e){const i=.05*Math.min(t.width,t.height);this.#Oc.oc(e,t.width,t.height,i)}}async#zu(t){const i=Math.ceil(t.length/2),s=[];for(let h=0;i>h;h++){const i=t[2*h],e=t[2*h+1];s.push((async()=>{try{const t=await At.hi(i.id),s=e?await At.hi(e.id):t;this.#Al.Jr(h,t,s)}catch(t){console.warn(`Failed to load textures for page ${h}:`,t)}})())}await Promise.all(s)}},le=class extends xi{static tag="micrio-gallery";#de={};#lu=-1;#Ea=0;#Ni=[];#Pa=[];#Ta=[];#Sa=[];#qu;#Ju=null;#Ku=null;#Qu=null;#td=0;#id=-1;#sd=0;#hd=0;#ed=-1;#nd=null;#od;#rd;#ad=new Map;#cd=0;#ld;#ud=0;#dd=1;async ln(){const t=this.yn();if(!t)return;const i=t.$current;if(!i)return;if(i.$settings?.omni)return this.#od=new dh(t,i,this,(t,i,s,h,e,n)=>this.#fd(t,i,s,h,e,n)),void(await this.#od.setup());const s=this.#de.controller;s&&this.#pd(t,i,s)}At(t){void 0!==t.controller&&(this.#de.controller=t.controller)}#md(t){if(!this.#Ju)return 0;const i=this.#Ju.clientWidth;return 16+t/Math.max(1,this.#Pa.length-1)*(i-32)}#gd(t){const i=this.#Pa[t];return i&&i.length>1?`${i[0]+1}-${i[i.length-1]+1}`:String(t+1)}#wd(t){const i=this.#Pa.findIndex(i=>i.includes(t));return 0>i?0:i}async#ma(t,i=0,s=150,h=0){const e=this.#Ni;if(!e.length||0>t)return;const n=Math.round(Math.max(0,Math.min(this.#Pa.length-1,t))),o=this.#Pa[n]?.[0]??0,r=h||n!==this.#lu,a=this.#Ea;if(this.#lu=n,this.#Ea=o,r&&this.#vd(),this.#ld)await this.#ld.goto(n);else if(this.#rd)await this.#rd.animateTo(o,i,s,a);else if(r){const t=(this.#Pa[n]?.length??1)-1;this.#qu.canvas?.Hi(o,t),this.#qu.camera.setView([0,0,1,1])}return this.#qu.album.hooked=1,e[o]}#vd(){this.#Md(this.#Ea);const t=this.yn(),i=(this.#Pa[this.#lu]??[]).map(t=>this.#Ni[t].id);t?.events.Et("gallery-show",i),this.#rd&&this.#qu.album?.currentImage?.set(this.#Ni[this.#Ea]),this.#_d()}#yd=t=>{if(t.preventDefault(),t.stopPropagation(),this.#sd||(this.#hd="button"in t)&&0!==t.button||!this.#Ju)return;this.#nd=this.#Ju.getBoundingClientRect();const i=this.yn();if(i){if(i.Se=this.#sd=1,this.setAttribute("data-dragging",""),this.#id=-1,this.#hd&&"button"in t){this.#ed=t.pointerId;try{this.#Ju.setPointerCapture(t.pointerId)}catch(s){}window.addEventListener("pointercancel",this.#bd)}window.addEventListener(this.#hd?"pointermove":"touchmove",this.#kd),window.addEventListener(this.#hd?"pointerup":"touchend",this.#bd),this.#kd(t)}};#xd(t){const i=this.#nd??this.#Ju.getBoundingClientRect(),s=this.#Pa.length,h="button"in t?t.clientX:t.touches[0].clientX,e=Math.min(1,Math.max(0,(h-i.left-16)/(i.width-32)));return[e,Math.max(0,Math.min(s-1,Math.round(e*Math.max(1,s-1))))]}#kd=t=>{const[i,s]=this.#xd(t);this.#td=16+i*(this.#nd.width-32),s!==this.#lu&&this.#ma(s,1)};#Pd=t=>{this.#sd||(this.#id=this.#xd(t)[1]),this.#_d()};#bd=()=>{if(window.removeEventListener(this.#hd?"pointermove":"touchmove",this.#kd),window.removeEventListener(this.#hd?"pointerup":"touchend",this.#bd),this.#hd){window.removeEventListener("pointercancel",this.#bd);try{this.#Ju?.releasePointerCapture(this.#ed)}catch(i){}this.#ed=-1}this.#sd=0,this.removeAttribute("data-dragging");const t=this.yn();t&&(t.Se=0,this.#ma(this.#lu))};#fd(t,i,s,h,e,n){if(!i||!e?.ready)return;const o=self.requestIdleCallback?t=>{self.requestIdleCallback(t)}:t=>{Q.request(t)};for(let r=-s;s>=r;r++){if(!r)continue;let s=t+r;for(;0>s;)s+=i;for(;s>=i;)s-=i;const a=h(s);a?.thumbSrc&&!this.#ad.has(a.thumbSrc)&&this.#ad.set(a.thumbSrc,o(()=>{e.Me(a.baseTileIdx,a.thumbSrc,0,{force:n}),this.#ad.delete(a.thumbSrc)}))}}#Md(t){const i=this.#Ni;if(!i.length||1>=i.length)return;const s=i[0].engine,h=!!i[0]?.$settings?.gallery?.archive;this.#fd(t,i.length,this.#cd,t=>i[t]?{baseTileIdx:i[t].$t,thumbSrc:i[t].thumbSrc}:void 0,s,h)}#Td=t=>{switch(t.key){case"PageUp":case"ArrowLeft":this.#ma(this.#lu-1,1);break;case"PageDown":case"ArrowRight":this.#ma(this.#lu+1,1);break;case"Home":this.#ma(0);break;case"End":this.#ma(this.#Pa.length-1);break;default:return}};async#pd(t,i,s){const h=[...s.Sn];if(!h.length)return;this.#Ni=h,this.#qu=i;const e=s.Yn();this.#Pa=e.pages,this.#Ta=[],this.#Sa=[];for(const[f,p]of e.pages.entries()){const t=p.length;for(let i=0;t>i;i++)this.#Ta[p[i]]=f+i/t,this.#Sa[p[i]]=1/t}const n=s.Nn.startId?Math.max(0,h.findIndex(t=>t.id===s.Nn.startId)):0,o=e.pages.findIndex(t=>t.includes(n)),r=0>o?0:o;this.#cd="requestIdleCallback"in self?100:50;const a=t.Ve,c=i,l="swipe"===s.Nn.type,u=this.#ud="book3d"===s.Nn.type;this.#dd=0!=s.Nn.settings?.allowRotation,l&&(this.#rd=new fh(t,h,this.#Pa,this.#Ta,this.#Sa,t=>this.#ma(t),()=>this.#lu)),this.#lu=r,this.#Sd(),this.#_d();const d=this;if(c.album={numPages:e.numPages,get currentIndex(){return d.#lu},info:c.$settings.gallery,prev:()=>d.#ma(d.#lu-1),next:()=>d.#ma(d.#lu+1),goto:t=>d.#ma(d.#wd(t)).then(()=>d.#Ni[t]),...d.#rd?{currentImage:H(h[n])}:{}},this.#rd)await this.#rd.setup(n,c,a),this.#Ea=n,this.#lu=r,this.#vd(),c.album.hooked=1;else if(u)this.#Ad(c,s.Hn,n,s.Nn);else{await Promise.allSettled(h.map(t=>("state"in t&&!("image"in t)&&(t.camera=c.camera),a.ti(t,c,{opacity:0,asImage:"camera"in t}))));const t=this.#Pa[r],i=(t?.length??1)-1;c.canvas?.Hi(t[0],i),c.camera.setView([0,0,1,1]),this.#lu=r,this.#vd(),c.album.hooked=1}this.#rd&&h.length>1&&(t.canvas.element.addEventListener("pointerdown",this.#rd.handlePointerDown),this.dn(()=>t.canvas.element.removeEventListener("pointerdown",this.#rd.handlePointerDown))),window.addEventListener("keydown",this.#Td),this.dn(()=>window.removeEventListener("keydown",this.#Td))}#Ad(t,i,s,h){t.album.hooked=1;const e=t.engine.micrio,n=!!h.settings?.individualAspects,o=this.#ld=new ce({pl:e.canvas.element,Sn:i,El:s,zl:h.settings?.lighting,Cl:n,Rr:n,_l:this.#dd,ml:t=>this.#ma(t),vl:t=>{for(const i of this.#Ni){const s=t.find(t=>t.id==i.id);i.visible.set(!!s),s&&(i.camera.L||o.Dl(i),i.state.view.update(()=>s.bounds))}}});e.events.unhookScroll(),e.events.unhookPinch(),t.camera.C=t=>o.zoom(t),t.camera.I=()=>!!o.isZoomedIn(),this.#ld.nl.then(()=>{t.ut=1,this.#vd()})}#Sd(){const t=this.#Pa.length;if(!this.#Ni.length||1>=t||this.querySelector("ul"))return;const i=X(ji),s=t>24,h=s?Math.max(1,Math.ceil(t/24)):1,e=this.#lu;this.#Ku=Mt("micrio-button",{parent:this,setProps:{type:"prev",title:i.fo,disabled:0>=e,onclick:()=>this.#ma(this.#lu-1)}}),this.#ud&&this.#dd&&Mt("micrio-button",{parent:this,setProps:{type:"rotateLeft",title:i.mo,onclick:()=>this.#ld?.rotateView(-1)}});const n=Mt("ul",{className:s?"dense":"",parent:this,events:{pointerdown:this.#yd,pointermove:this.#Pd,pointerleave:()=>{this.#id=-1,this.#_d()}}});this.#Ju=n,n.addEventListener("touchstart",this.#yd,{passive:0}),Mt("span",{parent:n,children:[Mt("span")]}),Mt("span",{parent:n,children:Array.from({length:t},(i,e)=>s&&e%h!==0&&e!==t-1?null:Mt("span",{attrs:s&&e%(5*h)==0?{"data-major":""}:{},style:{left:(t>1?e/(t-1)*100:50)+"%"}}))}),Mt("button",{parent:n,props:{role:"slider",tabIndex:0},attrs:{"aria-label":"Gallery position","aria-valuemin":"1","aria-valuemax":String(t)}}),Mt("span",{parent:n}),this.#Qu=Mt("micrio-button",{parent:this,setProps:{type:"next",title:i.po,disabled:e>=t-1,onclick:()=>this.#ma(this.#lu+1)}}),this.#ud&&this.#dd&&Mt("micrio-button",{parent:this,setProps:{type:"rotateRight",title:i.wo,onclick:()=>this.#ld?.rotateView(1)}})}#_d(){const t=this.#Pa.length;if(!t)return;const i=this.#lu,s=t>24,h=s?Math.max(1,Math.ceil(t/24)):1,e=t>1?i/(t-1)*100:0,n=this.#Ju&&!this.#sd?this.#md(i):this.#td,o=this.querySelector("ul > :first-child > span");o&&(o.style.width=`${e}%`);const r=this.querySelectorAll("ul > :nth-child(2) > span"),a=[];for(let d=0;t>d;d++)s&&d%h!==0&&d!==t-1&&d!==i||a.push(d);r.forEach((t,s)=>{const h=a[s];void 0!==h&&(t.toggleAttribute("data-active",h===i),t.toggleAttribute("data-hover",h===this.#id))});const c=this.querySelector("ul > button");c&&(c.style.left=`${n}px`,c.classList.toggle("dragging",this.#sd),c.setAttribute("aria-valuenow",String(i+1)));const l=this.querySelector("ul > button + span");if(l){l.style.left=`${n}px`,l.classList.toggle("dragging",this.#sd);const t=this.#Pa.reduce((t,i)=>t+i.length,0);l.textContent=this.#gd(i)+(s?` / ${t}`:"")}let u=this.querySelector('[data-part="hover-label"]');0>this.#id||this.#id===i||this.#sd?u?.remove():(u||(u=Mt("span",{attrs:{"data-part":"hover-label"},parent:this.querySelector("ul")??void 0})),u.style.left=(t>1?this.#id/(t-1)*100:50)+"%",u.textContent=this.#gd(this.#id)),this.#Ku&&this.#Ku.querySelector("button")?.toggleAttribute("disabled",0>=i),this.#Qu&&this.#Qu.querySelector("button")?.toggleAttribute("disabled",i>=t-1)}un(){this.#od?.destroy(),this.#rd?.destroy()}};customElements.define(le.tag,le);var ue=class extends xi{static tag="micrio-serial-tour";#de={tour:null};#Cd=[];#sa=0;#xe=0;#ao=void 0;#W=0;#Ed=0;ln(){const{tour:t}=this.#de,i=this.yn();if(!i||!t)return;this.#Cd=t.stepInfo||[],this.#W=this.#Cd.reduce((t,i)=>t+(i.duration||0),0),this.#Ed=!!i.$current?.$settings?.ui?.controls?.serialTourNoTimeScrub,i.setAttribute("data-marker-tour-active",""),this.dn(()=>i.removeAttribute("data-marker-tour-active"));const s=t;s.next=()=>this.#Nn(),s.prev=()=>{this.#sa>0&&this.#Id(this.#sa-1)},this.dn(i.state.marker.subscribe(t=>{if(!t||!this.#Cd.length)return;const i="string"==typeof t?t:t.id,s=this.#Cd.findIndex(t=>t.markerId===i);0>s||s===this.#sa||(this.#Cd.forEach(t=>t.ended=0),this.#Id(s))})),this.#Ne(),this.#Id(0)}#Ne(){if(!this.#xe&&(this.#xe=1,this.#de.tour.printChapters)){const t=Mt("ol");this.#Cd.forEach((i,s)=>{const h=N.p(i),e=this.#Ld(h);e&&Mt("li",{dataset:{idx:String(s)},parent:t,children:[Mt("button",{textContent:e,events:{click:()=>this.#ma(s)}})]})}),t.children.length&&this.appendChild(t)}}async#Id(t){const i=this.yn();if(!i)return;const s=()=>{i.state.tour.set(void 0),this.#de.onended?.(),this.remove()},h=this.#Cd[t];if(!h)return;h.ended=0,h.currentTime=0;const e=N.p(h);let n;if(e?.videoTour){const t=e.videoTour.i18n?.[i.lang]?.timeline;t?.length&&1>=t[0].start&&(n=t[0].rect)}if(h.micrioId&&i.$current?.id!==h.micrioId&&await i.open(h.micrioId,{startView:n}),this.#ao&&(this.#ao.remove(),this.#ao=void 0),e?.videoTour){const t=i.lang,h=e.videoTour.i18n?.[t]?.audio??e.i18n?.[t]?.audio,n=Mt("micrio-media",{parent:this,setProps:{tour:e.videoTour,src:h?.src,image:i.$current,controls:1,autoplay:1,onended:()=>this.#Nn(),onclose:s,hasAudio:this.#Cd.some(t=>t.duration>0),fullscreenEl:i,getTimeDisplay:()=>`${Us(this.#zd())} / ${Us(this.#W)}`}});this.#ao=n,await bt(),this.#Dd();const o=this.#ao.querySelector("video,audio");o&&o.addEventListener("timeupdate",()=>{const t=this.#Cd[this.#sa];t&&(t.currentTime=o.currentTime),this.#Fd()})}this.#sa=t,this.#Fd(),e?.videoTour||t!==this.#Cd.length-1||this.#Nn()}#Nn(){const t=this.#Cd[this.#sa];t&&(t.ended=1),this.#sa<this.#Cd.length-1?this.#Id(this.#sa+1):(this.#de.onended?.(),this.yn()?.state.tour.set(void 0),this.remove())}#Ld(t){return t?.i18n?.[this.yn()?.lang||"en"]?.title}#Dd(){const t=this.#ao?.querySelector("micrio-media-controls > aside");if(!t)return;const i=t.querySelector("div");if(!i)return;i.querySelector('[data-part="bars"]')?.remove();const s=Mt("div",{attrs:{"data-part":"bars"}});this.#Cd.forEach((t,i)=>{const h=N.p(t);Mt("div",{attrs:{"data-part":"bar",role:"progressbar",tabindex:"0"},dataset:{idx:String(i)},props:{title:this.#Ld(h)??""},style:{width:t.duration/(this.#W||1)*100+"%"},events:{click:()=>this.#ma(i)},parent:s})}),i.prepend(s)}#ma(t){this.#Ed&&t===this.#sa||t!==this.#sa&&(this.#Cd.forEach(t=>t.ended=0),this.#Id(t))}#zd(){let t=0;for(let i=0;i<this.#Cd.length;i++){const s=this.#Cd[i];if(i>=this.#sa&&!s.ended){if(i===this.#sa){t+=s.currentTime??0;break}break}t+=s.duration}return t}#Fd(){this.#xe&&((this.#ao?.querySelectorAll('aside [data-part="bars"] > [data-part="bar"]')??[]).forEach((t,i)=>{const s=this.#Cd[i],h=i===this.#sa?s.currentTime??0:0,e=i<this.#sa||s.ended?100:i===this.#sa?Math.round(h/(s.duration||1)*1e4)/100:0;t.style.setProperty("--progress",`${e}%`),t.classList.toggle("active",i===this.#sa)}),this.querySelectorAll("ol.chapters li").forEach(t=>t.classList.toggle("active",Number(t.dataset.idx)===this.#sa)))}At(t){void 0!==t.tour&&(this.#de.tour=t.tour),void 0!==t.onended&&(this.#de.onended=t.onended)}};function de(t,i){if(i)for(let s,h=0;h<i.length;h++)if(i[h].id==t||(s=de(t,i[h].children)))return s??i[h]}customElements.define(ue.tag,ue);var fe=class extends xi{static tag="micrio-main";#de={};#v;#Bh;#an;#$d=0;#Od;#Bd;#Vd=new Map;#k=new Map;#Rd;#Nd(){this.#Rd?.destroy(),this.#Rd=void 0}#Hd=["audio","media","logo","orgLogo","details","toolbar","grid","gallery","controls","embeds","markers","popup","tour","popover","minimap","error","progress"];#Xd=new Map;#Gd(t){for(let i=this.#Hd.indexOf(t)+1;i<this.#Hd.length;i++){const t=this.#Xd.get(this.#Hd[i]);if(t?.isConnected)return t}return null}#jd(t,i){if(i.isConnected)return;const s=this.#Gd(t);s?this.insertBefore(i,s):this.appendChild(i)}#Yd(t){const i="string"==typeof t?t:t.localName;return!i.includes("-")||!!customElements.get(i)}#Wd(t,i,s,h){const e=this.#Xd.get(t);if(i){if(e?.isConnected)return void h?.(e);e?.remove();const i=s();if(!this.#Yd(i))return;this.#Xd.set(t,i),this.#jd(t,i)}else e?.isConnected&&(e.remove(),this.#Xd.set(t,null))}ln(){const t=this.yn();if(!t)return;const i=H(X(t.Po)?0:1);this.Mn("volume",i),this.dn(t.Po.subscribe(t=>i.set(t?0:1))),this.dn(()=>this.#an?.()),this.Mn("mediaPaused",H(0)),"markers"==t.getAttribute("data-ui")&&(this.#de.noHTML=1);const s=[];this.dn(t.current.subscribe(i=>{if(!i)return;this.#v=i.$info,this.#Bh=void 0,this.#$d=1,this.#an?.(),this.#Bh=i.Lt,this.#an=this.#Bh?.subscribe(()=>this.#Ud()),!this.#Od&&N.M()?.logo&&(this.#Od=N.M()),this.#Ud(),this.isConnected&&this.#Re();const h=i.$data;if(h&&0>s.indexOf(i.id)){s.push(i.id);const e=i.$settings.start;e&&G().then(G).then(()=>{if(!(X(t.state.popover)||X(t.state.marker)||X(t.state.tour)))switch(e.type){case"marker":i.state.marker.set(e.id);break;case"markerTour":{const i=h.markerTours?.find(t=>t.id==e.id);i&&t.state.tour.set(i);break}case"tour":{const i=h.tours?.find(t=>t.id==e.id);i&&t.state.tour.set(i);break}case"page":{const i=de(e.id,h.pages);i&&t.state.popover.set({contentPage:i,showLangSelect:1});break}}})}this.#Ud()})),this.dn(t.state.tour.subscribe(()=>{const i=this.#Xd.get("subtitles");i&&i.At?.({raised:!!X(t.state.tour)})}));for(const h of[t.Kt,t.state.popup,t.state.popover,t.state.tour,t.state.marker])this.dn(h.subscribe(()=>this.#Ud()));this.dn(t.Wt.subscribe(()=>this.#Ud())),this.#Ud()}At(t){Object.assign(this.#de,t),this.isConnected&&this.#Ud()}#Zd=0;#Ud(){this.#Zd||(this.#Zd=1,Q.request(()=>{this.#Zd=0,this.isConnected&&this.#Re()}))}#Re(){const t=this.yn();if(!t)return;const i=X(t.state.tour),s=X(t.state.marker),h=X(t.state.popup),e=X(t.state.popover),n=this.#v,o=this.#Bh?X(this.#Bh):void 0,r=t.$current?X(t.$current.data):void 0,a=this.#de.error,c=this.#de.loadingProgress??1,l=this.#de.noHTML??0,u=this.#de.noLogo??l,d=t.canvas.$isMobile,f=t.$current?.F,p=f?o._360.video:void 0,m=p?.src,g="book3d"==t.$current?.album?.info?.type;this.classList.toggle("is3d",f||g);const w=r?.markers?.filter(t=>!!t.positionalAudio),v=!!r?.music?.items.length||!!w?.length,M=i||s,_=!l||"markers"==t.getAttribute("data-ui"),y=!(u||n&&l||o?.noLogo||s||h),b=!l&&y&&!o?.noOrgLogo&&!!this.#Od&&!e,k=!l&&!!n&&!o?.noControls,x=!l&&!M&&!!o?.showInfo,P=!l&&this.#$d&&!o?.noToolbar,T=!(l||!n||0==o?.minimap||o?.noControls||!t.$current?.thumbSrc||h&&d);v&&r&&n&&t.$current?this.#Rd||(this.#Rd=new Os(t,t.$current),this.dn(()=>this.#Nd())):this.#Nd(),this.#Wd("media",!!m&&!!n,()=>Mt("div")),this.#Wd("logo",y,()=>Mt("micrio-logo")),this.#Wd("details",x&&!!r,()=>Mt("micrio-details",{setProps:{info:this.#v,data:r}})),this.#Wd("toolbar",P,()=>Mt("micrio-toolbar"));const S=X(t.Kt);this.#qd(this.#Vd,"micrio-markers","markers",S,_,i=>!(i.opts?.isEmbed||!i.$data?.markers?.length&&!t.spaceData)),this.#qd(this.#k,"micrio-image-embeds","embeds",S,"false"!=t.getAttribute("data-embeds"),t=>!!t.$data?.embeds?.length),this.#Wd("controls",k,()=>Mt("micrio-controls",{setProps:{hasAudio:v||!(!m||!p||p.muted)}})),this.#Wd("orgLogo",b&&!!this.#Od,()=>Mt("micrio-logo-org",{setProps:{organisation:this.#Od}}));const A=t.$current?.grid;A&&this.#jd("grid",A),this.#Wd("gallery",!!o?.omni||!("grid"===t.gallery?.Nn?.type||!t.gallery),()=>Mt("micrio-gallery",{setProps:{controller:t.gallery}})),this.#Wd("minimap",T,()=>Mt("micrio-minimap",{setProps:{image:t.$current}}),i=>i.At?.({image:t.$current}));const C=X(t.state.popup),E=null!=C&&"popover"!==C.popupType,I=this.#Xd.get("popup");if(E?(I?.isConnected&&(C.id!==this.#Bd||I.classList.contains("destroying"))&&(I.remove(),this.#Xd.set("popup",null)),this.#Bd=C.id,this.#Xd.get("popup")?.isConnected||this.#Xd.set("popup",Mt("micrio-marker-popup",{setProps:{marker:C},parent:this}))):I?.isConnected||(this.#Xd.set("popup",null),this.#Bd=void 0),this.#Wd("tour",!!i,()=>Mt(i&&"steps"in i&&i.isSerialTour?"micrio-serial-tour":"micrio-tour",{setProps:{tour:i,noHTML:l}})),this.#Wd("popover",!!e,()=>Mt("micrio-popover",{setProps:{popover:e}})),this.#Wd("error",!!a,()=>Mt("micrio-error",{setProps:{message:a}})),this.#Wd("progress",1>c,()=>Mt("micrio-progress-circle",{setProps:{progress:c}})),1>c){const t=this.#Xd.get("progress");t?.isConnected&&t.At?.({progress:c})}}#qd(t,i,s,h,e,n){const o=h.filter(t=>n(t)),r=new Set(o.map(t=>t.id));for(const[a,c]of t)r.has(a)||(c.remove(),t.delete(a));if(e&&this.#Yd(i))for(const a of o){if(t.has(a.id))continue;const h=Mt(i,{setProps:{image:a}});t.set(a.id,h);const e=this.#Gd(s);e?this.insertBefore(h,e):this.appendChild(h)}else{for(const i of t.values())i.remove();t.clear()}this.#Xd.set(s,t.values().next().value??null)}};customElements.define(fe.tag,fe),Qi.VERSION=A,customElements.define("micr-io",Qi),console.info("%c◈%c Micrio %cv7.1.2 - https://micr.io/ %c| New in version 7: https://doc.micr.io/client/v7/changes.html","color: #00d4ee","color: #c5ff5b","color: inherit","color: #888")}();
27
+ !function(){function t(i,s,h={}){if(!i||"object"!=typeof i)return s;const e=s;for(const n of Object.keys(i)){if("__proto__"===n||"constructor"===n||"prototype"===n)continue;const s=i[n];s&&"object"==typeof s&&Object.getPrototypeOf(s)===Object.prototype?(e[n]&&"object"==typeof e[n]||(e[n]={}),t(s,e[n],h)):h.noOverwrite&&n in e||(e[n]=s)}return s}var i,s="E001",h="E002",e="E003",n="E004",o="E005",r="E100",a="E101",c="E102",l="E103",u="E200",d="E201",f="E202",p="E203",m="E300",g="E301",w="E302",v="E303",M="E999",_={[s]:"You appear to be offline. Please check your internet connection and try again.",[h]:"The connection timed out. Please try again.",[e]:"Unable to load content due to security restrictions.",[n]:"The requested image or content could not be found.",[o]:"The server encountered an error. Please try again later.",[r]:"Your browser does not support WebGL, which is required to view this content.",[a]:"The graphics context was lost. The page will attempt to recover.",[c]:"There was a problem initializing the graphics. Please try refreshing the page.",[l]:"Your device is low on memory. Try closing other browser tabs or applications.",[u]:"The image data appears to be invalid or corrupted.",[d]:"The requested content could not be loaded.",[f]:"There was a problem processing the image information.",[p]:"This image uses an unsupported format version.",[m]:"Failed to load the image viewer engine. Please try refreshing the page.",[g]:"An error occurred in the image viewer. Please try refreshing the page.",[w]:"Failed to load the image. Please try again.",[v]:"Failed to load the tour. Some features may be unavailable.",[M]:"An unexpected error occurred. Please try refreshing the page."},y=class t extends Error{displayMessage;cause;code;statusCode;constructor(i,s){super(i),this.name="MicrioError",this.code=s?.code??M,this.displayMessage=s?.displayMessage??_[this.code],this.cause=s?.cause,this.statusCode=s?.statusCode,"captureStackTrace"in Error&&"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,t)}static fromResponse(i,e){const r=i.status;let a=M;return 404===r?a=n:r>=500&&600>r?a=o:0===r?a=s:408!==r&&504!==r||(a=h),new t(`${e?e+": ":""}HTTP ${r}`,{code:a,statusCode:r})}static fromError(i,n){const o=i.message.toLowerCase();let a=M;return o.includes("network")||o.includes("internet")||o.includes("offline")?a=s:o.includes("timeout")?a=h:o.includes("cors")||o.includes("cross-origin")?a=e:o.includes("webgl")||o.includes("webglcontext")?a=r:o.includes("memory")||o.includes("out of memory")?a=l:(o.includes("wasm")||o.includes("webassembly"))&&(a=m),new t(`${n?n+": ":""}${i.message}`,{code:a,cause:i})}},b=new Map,k=new Map,x=async(t,i)=>{if(!i&&b.has(t))return structuredClone(b.get(t));if(k.has(t))return k.get(t);const s=fetch(t+(i?(t.includes("?")?"&":"?")+Math.random():"")).then(async i=>{if(200==i.status)return i.json();throw y.fromResponse(i,`fetchJson(${t})`)}).then(s=>(i||b.set(t,s),k.delete(t),structuredClone(s))).catch(i=>{throw k.delete(t),i});return k.set(t,s),s},P=t=>{let i=t.charCodeAt(0),s=91>i;return(i-=s?65:97)-(i>7?1:0)+(s?24:i>10?-1:0)},T=t=>6==t.length||7==t.length,S=()=>Math.random().toString(),A="7.1.3",C=`https://viewer.${(()=>{try{const t=location.hostname;if(t.endsWith("micrio.dev"))return"micrio.dev";if(t.endsWith("micrio.net"))return"micrio.net"}catch{}return"micr.io"})()}/`,E="micrio-muted",I={camspeed:1,view:[0,0,1,1],restrict:[0,0,1,1],focus:[.5,.5],zoomLimit:1,fullscreen:1,hookEvents:1,hookScroll:1,hookPinch:1,hookDrag:1,minimap:1,doTourJumps:1,audio:1,startVolume:1,mutedVolume:0,_markers:{showTitles:0,zoomOutAfterClose:1},ui:{controls:{cultureSwitch:1}},_360:{}},L={id:{r:1},lang:{r:1},"data-path":{r:1},"data-inittype":{f:"initType"},"data-start":{f:"gallery.startId"},"data-gallery-sort":{f:"gallery.sort"},"data-gallery-type":{f:"gallery.type"}},z={"data-static":{},muted:{f:"audio",n:1},"data-no-externals":{f:"noExternals"},"data-skipmeta":{f:"skipMeta"},"data-keeprendering":{f:"keepRendering"},"data-coverlimit":{f:"limitToCoverScale"},"data-events":{f:"hookEvents"},"data-keys":{f:"hookKeys"},"data-zooming":{f:"noZoom",n:1},"data-scroll-zoom":{f:"hookScroll"},"data-pinch-zoom":{f:"hookPinch"},"data-dragging":{f:"hookDrag"},"data-two-finger-pan":{f:"twoFingerPan"},"data-control-zoom":{f:"controlZoom"},"data-ui":{f:"noUI",n:1},"data-controls":{f:"noControls",n:1},"data-logo":{f:"noLogo",n:1},"data-logo-org":{f:"noOrgLogo",n:1},"data-toolbar":{f:"noToolbar",n:1},"data-show-info":{f:"showInfo"},"data-social":{},"data-fullscreen":{},"data-minimap":{},"data-minimap-hide":{f:"alwaysShowMinimap",n:1},"data-normalize-dpr":{f:"zoomLimitDPRFix"},"data-freemove":{f:"freeMove"}},D={"data-version":{r:1},height:{r:1},width:{r:1},volume:{f:"startVolume"},"data-camspeed":{},"data-zoomlimit":{f:"zoomLimit"},"data-minimap-height":{f:"minimapHeight"},"data-minimap-width":{f:"minimapWidth"},"data-mutedvolume":{f:"mutedVolume"},lazyload:{dN:0},"data-elasticity":{f:"dragElasticity"},"data-skip-base-levels":{f:"skipBaseLevels"},"data-watermark-opacity":{f:"watermarkOpacity"}},F={"data-focus":{},"data-view":{}},$=new Map,O=new Map,B=new Map,V=new Map,R=new Map,N={async t(t){return(await this.l(t))?.data},u(t){return $.get(t)},p(t){return($.get(t.micrioId)?.data)?.markers?.find(i=>i.id===t.markerId)},m(t){return O.get(t)},M(){return i},_(t){return B.get(t)},k(t){return V.get(t)},async l(t){if(t)return await(async t=>{if(!t||t.startsWith("http")||$.has(t))return;if(R.has(t))return R.get(t);const s=(async t=>{const s=await x(`${C}${t}/bundle.json?v=${A}`);if(s?.images){for(const t of s.images)t?.id&&($.set(t.id,t),s.tours&&V.set(t.id,s.tours));t.startsWith("external/")&&s.images[0]?.id&&($.set(t,s.images[0]),s.tours&&V.set(t,s.tours))}if(s?.organisation&&(i=s.organisation),s?.spaces)for(const i of s.spaces)i?.id&&i?.data&&O.set(i.id,i.data);s?.album?.id&&B.set(s.album.id,s.album)})(t);R.set(t,s);try{await s}catch{}finally{R.delete(t)}})(t),$.get(t)}};function H(t){const i=new Set;return{subscribe(s,h){return i.add(s),s(t),()=>i.delete(s)},set(s){t=s,i.forEach(t=>t(s))},update(i){this.set(i(t))}}}function X(t){let i;return t.subscribe(t=>{i=t})(),i}function G(){return Promise.resolve()}function j(t){let i,s=0;return h=>{i=h,s||(s=1,Promise.resolve().then(()=>{s=0,t(i)}))}}function Y(t){let i=1;return s=>{i?i=0:t(s)}}var W=self,U=0,Z=0,q=new Set;function J(){U||(U=W.requestAnimationFrame(K))}function K(t){U=0,Z++;const i=[...q];q.clear();for(let h=0;h<i.length;h++)try{i[h](t)}catch(s){console.error("[Micrio] frame callback error",s)}q.size&&J()}var Q={get id(){return Z},request(t){q.add(t),J()},cancel(t){q.delete(t),!q.size&&U&&(W.cancelAnimationFrame(U),U=0)},after(){return new Promise(t=>Q.request(()=>t()))},afterPaint(){return new Promise(t=>Q.request(()=>Q.request(()=>t())))},P(t){W!==t&&(U&&W.cancelAnimationFrame(U),W=t,U=0,q.size&&J())}},tt=(t,i=1)=>(t%i+i)%i,it=t=>tt(t),st=t=>tt(t,2*Math.PI),ht=t=>2**t,et=t=>({centerX:t[0]+t[2]/2,centerY:t[1]+t[3]/2,width:t[2],height:t[3]}),nt=(t,i,s)=>!(t<s[0]||t>s[0]+s[2]||i<s[1]||i>s[1]+s[3]),ot=(t,i)=>1e-6>Math.abs(t-i),rt=(t,i,s)=>{let h=t*t+i*i+s*s;return h>0?(h=1/Math.sqrt(h),[t*h,i*h,s*h]):[0,0,0]};function at(t,i){const s=it(t),h=it(i)-s,e=h>0?h-1:h+1;return Math.abs(h)>Math.abs(e)?e:h}var ct,lt,ut=class{#t;#i;#s;#h;#e;#n;#o;constructor(t,i,s,h){this.#o=t===i&&s===h&&0===t&&1===s;const e=3*t,n=3*(s-t)-e;this.#t=e,this.#i=n,this.#s=1-e-n;const o=3*i,r=3*(h-i)-o;this.#h=o,this.#e=r,this.#n=1-o-r}#r(t){return t*(this.#t+t*(this.#i+t*this.#s))}#a(t){return t*(this.#h+t*(this.#e+t*this.#n))}#c(t){return this.#t+t*(2*this.#i+3*this.#s*t)}#l(t){let i=t,s=0,h=0,e=0;for(;5>s&&(h=this.#r(i)-t,e=this.#c(i),0!==e);)i-=h/e,s++;return i}get(t){return this.#o?t:this.#a(this.#l(t))}},dt=new ut(.42,0,.58,1),ft=new ut(.42,0,1,1),pt=new ut(0,0,.58,1),mt=new ut(0,0,1,1),gt={ease:dt,"ease-in":ft,"ease-out":pt,linear:mt},wt=t=>gt[t??"ease"]??dt,vt=class{rotationY=0;#u;T;S;A=[];C;I;L;D;#d;get image(){return this.#d}constructor(t){if(this.#d=t,!t.F){const i=t.state.$view;i&&t.$info?.width&&G().then(()=>this.setView(i))}}$(t){this.#u=t}getView=()=>{const t=this.#u?.view.arr;return t?[t[0]-t[2]/2,t[1]-t[3]/2,t[2],t[3]]:[0,0,1,1]};getViewRaw=()=>this.#u?.view.arr??new Float64Array(4);setView(t,i={}){if(!this.#u)return;let{centerX:s,centerY:h,width:e,height:n}=et(t);if(this.#d.opts.useParentCamera){const t=this.#d.opts.area;t&&(s=t[0]+s*t[2],h=t[1]+h*t[3],e*=t[2],n*=t[3])}this.#u.O(s,h,e,n,!!i.noLimit,0,i.correctNorth),i.noRender||this.#d.engine.render()}getCoo(t,i,s=0,h=0){return this.#f(t,i,s,h).slice(0).map(t=>Math.round(1e6*t)/1e6)}#f(t,i,s=0,h=0){const e=this.#u;if(!e)return new Float64Array(5);if(s){const s=this.#d.engine.micrio.getBoundingClientRect();t-=s.left,i-=s.top}return(e.is360?e.V.B(t,i):e.camera.B(t,i,!!s,!!h)).arr}getXY(t,i,s=0,h,e,n){return this.R(t,i,{abs:s,radius:h,rotation:e,noTrueNorth:n}).slice(0)}R(t,i,s={}){if(this.L)return this.L(t,i);const h=this.#u;if(!h)return new Float64Array(5);const e=this.#d.F&&!s.noTrueNorth?-this.rotationY/(2*Math.PI):0;return h.is360?h.V.N(t-e,i).arr:void 0===s.rotation||isNaN(s.rotation)?h.X.H(t-e,i,!!s.abs).arr:h.X.G(t-e,i,s.radius??0,s.rotation,!!s.abs).arr}setCoo(t,i,s){this.#u&&(this.#u.camera.setCoo(t,i,s??this.getScale()),this.#d.engine.render())}getScale=()=>this.getCoo(0,0)[2]||1;getCoverScale=()=>this.#u?.camera.Y??1;getMinScale=()=>this.#u?.camera.W??.1;setMinScale(t){this.#u?.U(t)}setMinScreenSize(t){!this.#d.album&&this.#u&&(this.#u.camera.Z=Math.max(0,Math.min(1,t)))}isZoomedIn=()=>!!(this.I?this.I():this.#u?.q());isZoomedOut=(t=0)=>!!(this.I?!this.I():this.#u?.J(t));getDirection=()=>this.#u?.V.K??0;getPitch=()=>this.#u?.V.tt??0;setDirection(t,i){this.#u&&(this.#u.it(t,i??this.#u.V.tt),this.#d.engine.render())}setLimit(t){if(!this.#u)return;const i=et(t);this.#u.view.st(i.centerX,i.centerY,i.width,i.height),this.#d.engine.render()}setCoverLimit(t){this.#u&&(this.#u.ht=!!t,this.#u.et())}getCoverLimit=()=>!!this.#u?.ht;set360RangeLimit(t=0,i=0){this.#u&&(this.#u.V.nt(t,i),this.#d.engine.render())}stop(){this.#u?.ot()}pause(){this.#u?.rt()}resume(){this.#u?.ct(),this.#d.engine.render()}getMatrix(t,i,s,h,e,n,o,r,a,c,l){return this.D?this.D(t,i,s||1,e,n,o,a,c,h):this.#u?.lt(t,i,s??1,h??10,e||0,n||0,o||0,r??0,a??1,c??1,!!l)??new Float32Array(16)}setArea(t,i={}){if(this.#u){if(this.#d.opts.area=t,this.#d.opts.isEmbed&&this.#d.ut){for(const i of this.#u.images)if(i.ft>0)return void i.gt(t[0],t[1],t[0]+t[2],t[1]+t[3])}else this.#u.gt(t[0],t[1],t[0]+t[2],t[1]+t[3],!!i.direct,!!i.noDispatch);i.noRender||this.#d.engine.render()}}setRotation(t=0,i=0,s=0){if(this.#d.opts.isEmbed&&this.#u&&this.#d.engine.ready){for(const h of this.#u.images)if(h.ft>0){h.wt=t,h.vt=i,h.Mt=s;break}this.#d.engine.render()}}getOmniRotation(){const t=this.#d.$settings.omni;return t&&this.#u?(this.#d.omni?.currentIndex??0)/((t.frames??1)/(t.layers?.length??1))*Math.PI*2:0}_t(t){const i=this.#d.$settings.omni;if(i&&null!=t)return Math.floor(t/(2*Math.PI)*(i.frames/(i.layers?.length??1)))}getOmniXY(t,i,s){return this.#u?.X.yt(t,i,s).arr??new Float64Array(5)}bt(){if(!this.#u)return;const t=this.#u.view.arr;this.#d.state.view.set([t[0]-t[2]/2,t[1]-t[3]/2,t[2],t[3]])}#p(t,i){this.T=t,this.S=i}flyToView(t,i={}){return new Promise((s,h)=>{if(!this.#u)return h(new Error("engine not ready"));let{centerX:e,centerY:n,width:o,height:r}=et(t);if(2==i.margin?.length&&(e+=i.margin[0],n+=i.margin[1],o-=2*i.margin[0],r-=2*i.margin[1]),this.#d.opts.useParentCamera){const t=this.#d.opts.area;t&&(e=t[0]+e*t[2],n=t[1]+n*t[3],o*=t[2],r*=t[3])}if(i.prevView){const t=et(i.prevView);this.#u.xt.kt(t.centerX,t.centerY,t.width,t.height)}const a=this.#d.$settings.omni;if(a?.frames){const s=a.layers?.length??1,h=a.frames/s;if(null==i.omniIndex){const s=t[4]||(Array.isArray(t)&&void 0!==t[5]?t[5]:void 0);void 0!==s&&(i.omniIndex=Math.round(tt(s/(2*Math.PI))*h))}null!=i.omniIndex&&(i.omniIndex=tt(i.omniIndex,h))}const c=this.#u.camera.Pt(e,n,o,r,i.duration??-1,i.speed??-1,i.progress??0,!!i.isJump,!!i.limit,!!i.limitZoom,i.omniIndex??0,wt(i.timingFunction));this.#d.engine.render(),0==c?s():this.#p(s,h)})}flyToFullView(t={}){return this.flyToCoo([.5,.5,this.getMinScale()],t)}flyToCoverView(t={}){const i=this.#d.$settings.focus??[.5,.5],s=[i[0],i[1]];return s[2]=this.getCoverScale(),this.flyToCoo(s,t)}flyToCoo(t,i={}){return new Promise((s,h)=>{if(!this.#u)return h(new Error("engine not ready"));const e=wt(i.timingFunction);i.duration=this.#u.camera.setCoo(t[0],t[1],t[2]??this.getScale(),i.duration??-1,i.speed??-1,i.limit??0,e),this.#d.engine.render(),0==i.duration?s():this.#p(s,h)})}zoom(t,i=0,s,h,e=1,n=0){return new Promise((e,o)=>{if(this.C)this.C(t);else if(this.#u){const o=this.#u.view.arr,r=this.getXY(o[0],o[1]);if(null==s&&(s=r[0]),null==h&&(h=r[1]),this.#d.album&&!this.#d.album.hooked)return e();i=this.#u.camera.Tt(t,s,h,i,n),this.#d.engine.render()}0==i?e():this.#p(e,o)})}async zoomIn(t=1,i=250,s=1){return this.zoom(200*-t,i,void 0,void 0,s).catch(()=>{})}async zoomOut(t=1,i=250,s=1){const h=this.#d.engine.micrio.canvas.viewport,e=h.width/h.height,n=this.#d.$info.width/this.#d.$info.height;return this.zoom(t*(400/Math.max(1,e/n/2)),i,void 0,void 0,s).catch(()=>{})}pan(t,i,s=0,h={}){this.#u&&(this.#u.camera.St(t,i,s,!!h.noLimit),(s>0||h.render)&&this.#d.engine.render())}setScale(t){const i=this.#u?.view.arr;i&&this.setCoo(i[0],i[1],t)}};function Mt(t,i={}){const s=i.ns?document.createElementNS(i.ns,t):document.createElement(t);if(i.className&&(s instanceof SVGElement?s.setAttribute("class",i.className):s.className=i.className),void 0!==i.textContent&&(s.textContent=i.textContent),void 0!==i.innerHTML&&(s.innerHTML=i.innerHTML),i.id&&(s.id=i.id),i.dataset)for(const[h,e]of Object.entries(i.dataset))s.dataset[h]=e;if(i.attrs)for(const[h,e]of Object.entries(i.attrs))null==e?s.removeAttribute(h):s.setAttribute(h,e);if(i.style&&("string"==typeof i.style?s.style.cssText=i.style:Object.assign(s.style,i.style)),i.props&&Object.assign(s,i.props),i.events)for(const[h,e]of Object.entries(i.events))s.addEventListener(h,e);if(i.children)for(const h of i.children)null!=h&&0!=h&&("string"==typeof h||"number"==typeof h?s.append(String(h)):s.append(h));return i.setProps&&s.At?.(i.setProps),i.parent&&i.parent.appendChild(s),s}function _t(t,i={}){return Mt(t,{...i,ns:"http://www.w3.org/2000/svg"})}(lt=ct||(ct={})).Main=class{tour=H();#m;get $tour(){return this.#m}marker=H();markerHoverId=H();#g;get $marker(){return this.#g}popup=H();popover=H();mediaState=new Map;constructor(){this.tour.subscribe(t=>{"string"!=typeof t&&(this.#m=t)}),this.marker.subscribe(t=>{"string"!=typeof t&&(this.#g=t)})}},lt.Image=class{view=H(void 0);#w;get $view(){return this.#w}marker=H(void 0);#g;get $marker(){return this.#g}layer=H(0);constructor(t){const i=t.engine.micrio;let s,h,e,n,o,r;this.view.subscribe(a=>{if(this.#w=a,!a)return;const c=a[0],l=a[1],u=a[2],d=a[3];if(s===c&&h===l&&e===u&&n===d)return;const f={image:t,view:a};if(s=c,h=l,e=u,n=d,void 0===o||void 0===r||Math.abs(u-o+(d-r))>1e-5){for(const t of i.Ct)t(f);i.events.Et("zoom",{image:t,view:a}),o=u,r=d}for(const t of i.It)t(f);i.events.Et("move",{image:t,view:a})}),this.marker.subscribe(t=>{const s=this.#g;this.#g=t&&"string"!=typeof t?t:void 0,this.#g?i.state.marker.set(this.#g):t||i.state.$marker!=s||i.state.marker.set(void 0)})}};var yt=t=>new Promise(i=>t?setTimeout(i,t):i()),bt=()=>Q.afterPaint(),kt=new Set;async function xt(t,i,s){if(t in self||await Pt(i,s),!(t in self))throw new Error(`Failed to load ${t} API from ${i}`)}var Pt=(t,i,s)=>new Promise((h,e)=>{if(s||kt.has(t))return h();const n=document.createElement("script"),o=()=>{kt.add(t),h()};i?self[i]=o:n.onload=o,n.onerror=()=>e?.(),n.async=1,n.defer=1,self.crossOriginIsolated&&(n.crossOrigin="anonymous"),n.src=t,document.head.appendChild(n)}),Tt=[],St=class t{id;uuid=S();#v;get $info(){return this.#v}Lt=H({});get $settings(){return X(this.Lt)}data=H(void 0);get $data(){return X(this.data)}state;camera;video=H(void 0);visible=H(0);album;omni;grid;zt;Dt;Ft;error;ut=0;$t=-1;F=0;Ot=0;Bt=0;Vt=1;#M=0;thumbSrc;#_;Rt=0;Nt;Ht=1;Xt=H();Gt=[];jt;get engine(){return this.#y}get canvas(){return this.#y.Yt(this)}#y;opts;constructor(t,i,s={}){if(this.#y=t,this.opts=s,this.state=new ct.Image(this),s.useParentCamera||(this.camera=new vt(this)),this.id=i.id.replace(C,""),this.id.startsWith("external/")){const t=this.id.indexOf("/",this.id.indexOf("/")+1);-1!==t&&(this.id=this.id.substring(0,t+1)+encodeURIComponent(this.id.substring(t+1)))}const h=i.info;this.#v=h,this.Ft=h.path||"https://r2.micr.io/",s.area||(s.area=[0,0,1,1]);const e=i.settings,n=this.#y.micrio;if(!h.isIIIF&&7==this.id.length){const t=P(this.id[1+P(this.id)%6]);h.is360=!!(t>>4&1)||!!h.is360,h.isWebP=!(3&t),h.isPng=2==(3&t),t>>3&1&&T(h.tilesId??this.id)&&(h.format="dz"),h.path||(h.path=`https://${t>>2&1?"eu":"r2"}.micr.io/`)}const o=6==this.id.length&&this.id.startsWith("i")&&!this.id.includes("/"),r=o&&!h.tileBasePath?.includes("micr.io");this.jt=r?h.tileBasePath??"https://b.micr.io/":o?"https://b.micr.io/":h.tileBasePath??h.path??"https://r2.micr.io/";const a=N.M();if(a?.baseUrl&&!h.path?.includes(a.baseUrl)?(this.Ft=h.path=a.baseUrl,o||(this.jt=this.Ft)):("https://eu.micr.io/"==h.path||h.path)&&(this.Ft=h.path),e?.omni&&(this.Bt=1),a?.branding&&!e?.noUI){const t=`https://${0>(a.logo?.src?.indexOf("/eu.")??-1)?"r2":"eu"}.micr.io/`;this.#b(t+"style/"+a.slug+".css").then(()=>{const t=getComputedStyle(this.#y.micrio).getPropertyValue("--micrio-font-family")?.replace(/^'([^']+)'.*$/,"$1");t&&document.fonts.ready.then(()=>{document.fonts.check("16px "+t)||this.#b(`https://fonts.googleapis.com/css2?family=${t}:ital,wght@0,300;0,400;0,500;0,600;0,800;1,300;1,400;1,500;1,600;1,800&display=swap`)})})}if(h.isIIIF&&h.id.includes("/")&&(h.id=("@id"in h?h["@id"]:h.id).replace(/^.*\//,"")),h.spacesId&&!n.spaceData&&(n.spaceData=N.m(h.spacesId),1==n.spaceData?.images.length&&delete n.spaceData),n.bundleTours||(n.bundleTours=N.k(this.id)),h.is360&&this.camera){const t=n.spaceData?.images.find(t=>t.id==this.id)?.rotationY;null!=t?this.camera.rotationY=t:null!=e?._360?.trueNorth&&(this.camera.rotationY=(e._360.trueNorth-.5)*Math.PI*2)}this.Rt=this.Rt||this.Bt||!h.id&&!h.tilesId,this.#_=h.tileExtension||h.isPng&&"png"||h.isWebP&&"webp"||"jpg","dz"==h.format&&(h.isDeepZoom=1),this.F=!!h.is360,this.Ot=!!h.isVideo;let c=X(n.Wt);if(h.revision){const t=Object.keys(h.revision);t.length&&!t.includes(c)&&(n.lang=t.includes("en")?"en":t[0])}if(e&&!e.noExternals&&(e.css&&this.#b(e.css.href),e.js)){const t=e.js.href.replace("$lang",c);Pt(t);const i=document.head.querySelector('script[src="'+t+'"]');i&&(i.micrioElement=this.#y.micrio)}for(let f=h.tileSize??1024;f<Math.max(h.width,h.height);f*=2,this.Vt++);let l=Math.max(h.width,h.height);do{this.#M++}while((l/=2)>1);e?.gallery?.archive&&(this.Vt-=1-(e.gallery.archiveLayerOffset??0)),this.Rt||(this.thumbSrc=this.Ut(this.Vt,0,0)),n.events.Et("pre-info",h),this.Rt&&!this.Bt||e?.skipMeta||!i.data||this.data.set(i.data),e&&this.Lt.set(e),h.watermark&&this.#y.micrio.qt.Zt(h.watermark,e?.watermarkOpacity),this.Bt&&this.state.layer.subscribe(t=>{this.ut&&this.#y.ready&&(this.canvas?.Jt(t),this.#y.render())});const u=this.#y.micrio;let d=X(this.visible);this.visible.subscribe(t=>{t!=d&&(d=t,u.Kt.update(i=>{if(t)i.push(this);else{const t=i.indexOf(this);0>t||i.splice(t,1)}return i}),t&&u.$current==this&&u.Qt.set(0))}),this.video.subscribe(t=>this.Dt=t)}Ut(t,i,s,h){const e=this.#v;if(e.isDeepZoom&&(t=this.#M-t),e.isIIIF){const h=e.tileSize??1024,n=Math.pow(2,t)*h,o=Math.min(e.width,i*n),r=Math.min(e.height,s*n),a=Math.min(e.width-o,n),c=Math.min(e.height-r,n),l=Math.round(Math.min(h,a/n*h)),u=Math.round(Math.min(h,c/n*h)),d=e.isWebP||e.preferredFormats?.includes("webp")?"webp":e.preferredFormats?.[0]??"jpg";return`${e.path}/${e.id}/${[o,r,a,c].join(",")}/${[l,u].join(",")}/0/default.${d}`}if(this.$settings?._360?.video?.src)throw new Error("Video thumb");return`${this.jt}${e.tilesId||e.id}/${void 0!==h?h+"/":""}${t}/${i}${e.isDeepZoom?"_":"-"}${s}.${this.#_}`}#b(t){return new Promise(i=>{Tt.includes(t)||document.head.querySelector('link[href="'+t+'"]')?i():(Tt.push(t),Mt("link",{attrs:{type:"text/css",rel:"stylesheet",href:t},events:{load:i},parent:document.head}))})}addEmbed(i,s,h,e={}){const n=h.slice(0),o=new t(this.#y,{id:i.id??"",info:{...i,id:i.id??""},data:N.u(i.id??"")?.data,settings:s},{area:n,isEmbed:1,useParentCamera:e.asImage});if(o.camera||(o.camera=this.camera),this.Gt.push(o),void 0===e.opacity&&(e.opacity=1),"cover"==e.fit||"contain"==e.fit){const t=o.$info,i=this.F?2:1,s="cover"==e.fit,h=n[2],r=n[3],a=n[0]+h/2,c=n[1]+r/2,l=h/r*i,u=t.width/t.height;if(s&&l>u||!s&&u>=l){const t=h/u*i;n[1]=c-t/2,n[3]=t}else{const t=r*u/i;n[0]=a-t/2,n[2]=t}}return this.#y.ti(o,this,e),this.#y.render(),o}#k=new Map;ii(t,i){i?this.#k.set(t,i):this.#k.delete(t)}getEmbedMediaElement(t){return this.#k.get(t)}},At=new class{#x=new Map;db=new Map;imageKeys=new Map;async load(t,i,s){if(this.#x.has(i))return;const h=i.replace(/^.*\//,"").split(".")[0],e=/\/base$/.test(i),n=e||T(h),o=new XMLHttpRequest,r=await new Promise((h,e)=>{let r=0;o.responseType="arraybuffer",o.onprogress=t=>{r||(r=Number(o.getResponseHeader("Content-Length"))),s?.(Math.min(1,t.loaded/r))},o.onload=()=>{4===o.readyState&&200===o.status?(s?.(1),h(o.response)):e()},o.onerror=e,o.open("GET",t+i+(n?".bin":".mdp")),o.send()});if(!r)return;this.#x.set(i,r);const a=e?i.split("/")[0]+"/":"";let c=0;for(;c<r.byteLength&&c+32<=r.byteLength;){const s=this.#P(new Uint8Array(r,c,32));if(s.name&&s.size>0){this.db.set(t+a+s.name.replace("./",""),[i,c+32,s.size]);const h=s.name.replace("./",""),e=t+a+h,n=h.indexOf("/");if(n>0){const t=h.substring(0,n);this.imageKeys.has(t)||this.imageKeys.set(t,e)}}else if(0===s.size&&!s.name)break;c+=32+s.size}}#P(t){const i=(new TextDecoder).decode(t),s=t=>i.slice(h,h+=t).replace(/\x00/g,"").trim();let h=0;return{name:s(20),size:parseInt(s(12),8)}}get=t=>new Promise((i,s)=>{const h=this.db.get(t);if(!h||!this.#x.has(h[0]))return s(new Error("Could not get blob: "+t));const e=new FileReader;e.onload=()=>i(JSON.parse(e.result)),e.readAsText(new Blob([new Uint8Array(this.#x.get(h[0]),h[1],h[2])]))});si=async t=>{const i=this.db.get(t);if(!i||!this.#x.has(i[0]))throw new Error("Could not get blob: "+t);const s=new Blob([new Uint8Array(this.#x.get(i[0]),i[1],i[2])]);return self.createImageBitmap(s)};hi=async t=>{const i=this.imageKeys.get(t);if(!i)throw new Error(`No image found in archive for ID: ${t}`);return this.si(i)}},Ct=navigator.userAgent,Et={iOS:/ipad|iphone|ipod/i.test(Ct),firefox:/firefox/i.test(Ct),OSX:/macintosh/i.test(Ct)&&/os\ x/i.test(Ct),hasTouch:"TouchEvent"in self,safari:0};Et.safari=(Et.OSX||Et.iOS)&&(/safari/i.test(Ct)||/instagram/i.test(Ct))&&!/chrome/i.test(Ct),Et.OSX&&Et.safari&&"TouchEvent"in self&&(Et.iOS=1,Et.OSX=0);var It=URL.createObjectURL(new Blob(["let controller = null;\nself.addEventListener('message', e => {\n\tif(e.data == 'abort') return controller && controller.abort();\n\tcontroller = new AbortController();\n\tfetch(e.data.src, { signal: controller.signal })\n\t\t.then(r => r.blob())\n\t\t.then(blob => self.createImageBitmap(blob))\n\t\t.then(data => self.postMessage({ data, src: e.data.src }, [data]))\n\t\t.catch(err => self.postMessage({ error: e.data.src + ': ' + err.message, type: err.name }))\n})"],{type:"text/javascript"})),Lt=Math.max(2,Math.min(6,(navigator.hardwareConcurrency||2)-1)),zt=Array(Lt).fill(0),Dt=0,Ft=[],$t=0,Ot=[],Bt=new Map;function Vt(){if(!Ot.length)return;const t=zt.indexOf(0);if(0>t)return;zt[t]=1,Dt++;const i=Ot.shift();Bt.set(t,i),Ft[t].postMessage({src:i[0],type:"image/"+i[0].split(".").pop()})}function Rt(t,i,s,h){const e=Bt.get(t);e&&(Bt.delete(t),s?(e[2](s),"AbortError"!==h&&console.error(`[Micrio Texture] Error loading ${e[0]}: ${h} - ${s}`)):i?e[1](i):(e[2](`Worker ${t} sent invalid message.`),console.error(`[Micrio Texture] Worker ${t} sent invalid message for ${e[0]}`)),setTimeout(()=>{zt[t]=0,Dt--,Vt()},50))}function Nt(){return Dt}function Ht(t){let i=-1;for(const[s,h]of Bt.entries())if(h[0]===t){i=s;break}0>i||Ft[i]?.postMessage("abort")}var Xt=class{x0;y0;x1;y1;layer;x;y;image;constructor(t=0,i=0,s=0,h=0,e=0,n=0,o=0){this.x0=t,this.y0=i,this.x1=s,this.y1=h,this.layer=e,this.x=n,this.y=o}},Gt=class{ei;ni;width;height;oi;ri;ai;ci;#T=new Float64Array([.5,.5,1,1]);#S=0;li=0;di=0;#u;constructor(t,i=.5,s=.5,h=1,e=1,n=.5,o=.5,r=1,a=1){this.ei=i,this.ni=s,this.width=h,this.height=e,this.oi=n,this.ri=o,this.ai=r,this.ci=a,this.#u=t}get arr(){return this.#S&&(this.#T[0]=this.ei,this.#T[1]=this.ni,this.#T[2]=this.width,this.#T[3]=this.height,this.#S=0),this.#T}get x0(){let t=this.ei;return this.#u.is360&&(t=it(t)),this.#u.is360?it(t-this.width/2):t-this.width/2}get y0(){return this.ni-this.height/2}get x1(){let t=this.ei;return this.#u.is360&&(t=it(t)),this.#u.is360?it(t+this.width/2):t+this.width/2}get y1(){return this.ni+this.height/2}get lX0(){return this.oi-this.ai/2}get lY0(){return this.ri-this.ci/2}get lX1(){return this.oi+this.ai/2}get lY1(){return this.ri+this.ci/2}get aspect(){return this.width/this.height}set(t,i,s,h,e=0){if(e){const t=Math.min(1,this.width)/Math.min(1,this.height);s/h>1.5*t&&s<this.width&&(h=s/t)}this.ei=t,this.ni=i,this.width=s,this.height=h,this.#S=1,this.li=1}gt(t,i,s,h){this.ei=(t+s)/2,this.ni=(i+h)/2,this.width=s-t,this.height=h-i,this.#S=1}st(t,i,s,h){this.oi=t,this.ri=i,this.ai=s,this.ci=h,this.li=1,this.di=1}fi(t,i=0){this.ei=t.ei,this.ni=t.ni,this.width=t.width,this.height=t.height,i||(this.oi=t.oi,this.ri=t.ri,this.ai=t.ai,this.ci=t.ci),this.li=1,this.#S=1}#A(){const t=this.#u;return 1/Math.max(this.width*t.width/t.el.width,this.height*t.height/t.el.height)}pi(t,i=0,s=0){const h=this.#u,e=h.X.Z,n=this.#A();if(1>e&&n<h.X.W&&!i){const t=1/e,i=Math.min(t,this.width),s=Math.min(t,this.height);return this.ei=.5,this.ni=.5,this.width=i,this.height=s,void(this.#S=1)}const o=t?Math.max(1,n/h.X.mi):1,r=this.ai,a=this.ci,c=Math.min(r,this.width*o),l=Math.min(a,this.height*o);if(t&&(o>1||i&&n<h.X.W)&&(this.width=c,this.height=l),(1>r||1>a)&&(this.width=Math.min(this.width,r),this.height=Math.min(this.height,a)),i)return void(this.#S=1);const u=Math.min(1,this.width)/2,d=this.ai/2;this.#u.is360?this.ei=it(this.ei):s||(this.ei=Math.max(this.oi-d+u,Math.min(this.ei,this.oi+d-u)));const f=Math.min(1,this.height)/2,p=this.ci/2;s||(this.ni=Math.max(this.ri-p+f,Math.min(this.ni,this.ri+p-f))),this.#S=1}gi(){const t=this.#u;if(t.is360)return;const i=t.X.cpw/t.X.cph;this.width/this.height>i?this.height=this.width/i:this.width=this.height*i,this.#S=1}},jt=class{x;y;scale;w;direction;arr=new Float64Array(5);constructor(t=.5,i=.5,s=1,h=0,e=0){this.x=t,this.y=i,this.scale=s,this.w=h,this.direction=e}wi(t){return-1>this.w||3>this.w&&!(0>this.x||this.x>t.width||0>this.y||this.y>t.height)}Mi(){return this.arr[0]=this.x,this.arr[1]=this.y,this.arr[2]=this.scale,this.arr[3]=this.w,this.arr[4]=this.direction,this.arr}},Yt=class{width;height;left;top;_i;yi;ratio;scale;bi;arr=new Int32Array(4);constructor(t=0,i=0,s=0,h=0,e=0,n=0,o=1,r=1,a=0){this.width=t,this.height=i,this.left=s,this.top=h,this._i=e,this.yi=n,this.ratio=o,this.scale=r,this.bi=a}get ki(){return 0===this.width||0===this.height?1:this.width/this.height}set(t,i,s,h,e,n,o){return this.width===t*e&&this.height===i*e&&this.left===s&&this.top===h&&this.ratio===e&&this.scale===n&&this.bi===o?0:(this.width=t*e,this.height=i*e,this.left=s*e,this.top=h*e,this.ratio=e,this.scale=n,this.bi=o,1)}fi(t){this.width=t.width,this.height=t.height,this.left=t.left,this.top=t.top,this.ratio=t.ratio,this.scale=t.scale,this.bi=t.bi}},Wt=class{#C=0;#E=0;#I=0;#L=0;#z=0;#D=0;#F=0;#$=0;started=0;#u;constructor(t){this.#u=t}addStep(t,i){const s=this.#u.main.now;if(this.#z)return;0===this.#I&&(this.#I=s);const h=s-this.#L,e=this.#L>0&&h>0?16.67/h:1;Math.sqrt(t*t+i*i)*e>20&&(this.#D=s);const n=this.#u.main.xi;this.#C+=t*n,this.#E+=i*n,this.#L=s}start(){this.#u.camera.Pi()||(this.started=1)}stop(){this.started=0,this.#z=0,this.#I=0,this.#L=0,this.#D=0,this.#C=0,this.#E=0,this.#F=0,this.#$=0}step(){const t=this.#u.main.now,i=this.#u.V,s=this.#u.camera;if(!this.started||0===this.#I)return 1;if(0===this.#z){this.#z=t;const i=1-Math.min(1,(this.#z-this.#D)/250),s=this.#z-this.#I,h=s>0?4/s:0;this.#F=this.#C*h*i,this.#$=this.#E*h*i}else this.#F*=.94,this.#$*=.94;let h=Math.sqrt(this.#F*this.#F+this.#$*this.#$);return this.#u.is360?i.Ti(this.#F,this.#$):s.St(this.#F,this.#$,0,0,0,1),h>.01||(h=0,this.stop()),1-h}},Ut=class{#O=0;#B;#V;Si;#R=0;#N=0;#H=0;#X=0;#G=0;#j=dt;#Y=0;#W=0;#U=0;pi=1;Ai=0;Ci=0;#Z=0;#q=0;#J=0;#K=0;#Q=0;#tt=0;#it=0;#st=-1;#ht=0;#u;constructor(t){this.#u=t,this.#B=new Gt(t),this.#V=new Gt(t),this.Si=new Gt(t)}pause(){this.#Z>0||(this.#U=0,this.#Z=performance.now())}resume(){0!==this.#Z&&0!==this.#Y&&(this.#Y+=performance.now()-this.#Z,this.#Z=0,this.#U=1)}stop(){this.#U&&this.#u.S(),this.#Y=0,this.pi=1,this.Ai=0,this.#U=0,this.#O=0,this.#R=0,this.Ci=0,this.#Z=0}Ei(){return this.#U&&this.#O}Ii(t,i,s,h,e,n,o={}){const{speed:r=0,perc:a=0,isJump:c=0,limitViewport:l=0,omniIdx:u=-1,correct:d=0}=o;if(d&&this.Ci)return this.Li(t,i,s,h,1),e;this.Si.set(t,i,s,h),this.#V.set(t,i,s,h);const f=this.#u,p=f.view,m=this.#V,g=this.#B;this.#N=c,this.#j=n;const w=f.main.el;if(0!==w.yi){const t=h/(1-w.yi/w.height);t>0?h+=t:h-=t,w.yi=0}if(0!==w._i){const t=s*(w._i/w.width);t>0?s+=t:s-=t,w._i=0}const v=p.ei,M=p.ni,_=p.width,y=p.height;g.set(v,M,_,y),f.is360&&(t=v+at(v,t),m.set(t,i,s,h)),l&&(m.gi(),m.pi(0)),this.#q=0,this.#K=0,this.#J=0,this.#Q=0;let b=1;if(this.#N){if(!f.is360){const t=m.ei,i=m.ni;if(m.aspect>g.aspect){const s=m.width/g.aspect;m.set(t,i,m.width,s)}else{const s=m.height*g.aspect;m.set(t,i,s,m.height)}}const e=g.x0,n=g.x1,o=g.y0,r=g.y1,a=m.x0,c=m.x1,l=m.y0,u=m.y1,d=e>a,p=o>l,w=c>n,v=u>r;!(d||p||w||v)||d&&p&&w&&v?m.set(t,i,s,h):(this.#q=d?1:a>e?2:0,this.#K=w?1:n>c?2:0,this.#J=p?1:l>o?2:0,this.#Q=v?1:r>u?2:0,b=1.5)}d&&m.pi(1,!l);const k=Math.max(1e4,Math.min(15e3,f.zi/2));let x=Math.abs(v-t);f.is360&&(x=Math.min(x,1-x));const P=_>s&&y>h?.125:.25,T=(x+Math.abs(M-i)+Math.abs(_-s)*P+Math.abs(y-h)*P)/3;this.#tt=Math.max(.5,.8-T*(f.is360?1:2)),this.#it=Math.max(.05,Math.min(.9,T-(f.is360?.2:.1))),this.#W=0>e?T*k/f.Di*b/(r>0?r:1):e;const S=f.images.length/f.Fi;return this.#st=f.$i,this.#ht=0,!isNaN(u)&&u>0&&u!==this.#st&&(this.#ht=u-this.#st,this.#ht<-S/2&&(this.#ht+=S),this.#ht>S/2&&(this.#ht-=S),this.#W+=Math.abs(this.#ht)/this.#u.images.length*6e3),this.stop(),0===this.#W?(f.O(m.ei,m.ni,m.width,m.height,0,1),this.#u.T(),this.#W):(this.#O=1,this.pi=0,this.Ai=1,this.#R=0,d&&(this.Ci=1),this.#Y=performance.now()-a*this.#W,this.#U=1,this.#W*(1-a))}Li(t,i,s,h,e=0){this.#V.set(t,i,s,h),e&&this.#V.pi(1)}zoom(t,i,s,h){this.stop(),this.#O=0,this.Ai=0,this.#R=1,this.#G=h;const e=this.#u,n=e.V;return this.#H=n.Oi,this.#X=this.#H+t/(n.Bi*e.zi/20),h||(this.#X=Math.min(n.Vi,Math.max(n.Ri,this.#X))),this.#Y=performance.now(),this.#U=1,this.#W=0>i?1e3*Math.abs(this.#H-this.#X)/s:i,i}kt(t,i,s,h,e=0){this.#B.set(t,i,s,h,e),this.#V.set(t,i,s,h,e)}Ni(){const t=0===this.#Y?1:Math.min(1,Math.max(0,(this.#u.main.now-this.#Y)/this.#W)),i=this.#j.get(t);if(this.#U){if(this.#O){const s=this.#B,h=this.#V,e=this.#it,n=this.#j.get(Math.min(1,t/this.#tt)),o=this.#j.get(Math.max(0,(t-e)/(1-e)));let r=0,a=s.ei+(h.ei-s.ei)*((r=this.#q||this.#K)?1===r?n:o:i),c=s.ni+(h.ni-s.ni)*((r=this.#J||this.#Q)?1===r?n:o:i);const l=s.width+(h.width-s.width)*i,u=s.height+(h.height-s.height)*i;if(this.#u.is360){const t=at(s.ei,h.ei);a=s.ei+t*i}if(this.#u.O(a,c,l,u,0,1),this.#ht){let i=this.#st+Math.trunc(this.#ht*this.#j.get(Math.min(1,1.5*t)));const s=this.#u.images.length/this.#u.Fi;0>i&&(i+=s),s>i||(i-=s),this.#u.Hi(i,0)}}this.#R&&this.#u.V.Xi(this.#H*(1-i)+this.#X*i,this.#G),1>t||(this.Si.fi(this.#u.view),this.#u.T(),this.stop())}return t}},Zt=class{arr;constructor(t=1,i=0,s=0,h=0,e=0,n=1,o=0,r=0,a=0,c=0,l=1,u=0,d=0,f=0,p=0,m=1){this.arr=new Float32Array([t,i,s,h,e,n,o,r,a,c,l,u,d,f,p,m])}Gi(){const t=this.arr;t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1}fi(t){this.arr.set(t.arr)}ji(t){const i=this.arr,s=Math.sin(t),h=Math.cos(t),e=i[4],n=i[5],o=i[6],r=i[7],a=i[8],c=i[9],l=i[10],u=i[11];i[4]=e*h+a*s,i[5]=n*h+c*s,i[6]=o*h+l*s,i[7]=r*h+u*s,i[8]=a*h-e*s,i[9]=c*h-n*s,i[10]=l*h-o*s,i[11]=u*h-r*s}Yi(t){const i=this.arr,s=Math.sin(t),h=Math.cos(t),e=i[0],n=i[1],o=i[2],r=i[3],a=i[8],c=i[9],l=i[10],u=i[11];i[0]=e*h-a*s,i[1]=n*h-c*s,i[2]=o*h-l*s,i[3]=r*h-u*s,i[8]=e*s+a*h,i[9]=n*s+c*h,i[10]=o*s+l*h,i[11]=r*s+u*h}Wi(t){const i=this.arr,s=Math.sin(t),h=Math.cos(t),e=i[0],n=i[1],o=i[2],r=i[3],a=i[4],c=i[5],l=i[6],u=i[7];i[0]=e*h+a*s,i[1]=n*h+c*s,i[2]=o*h+l*s,i[3]=r*h+u*s,i[4]=a*h-e*s,i[5]=c*h-n*s,i[6]=l*h-o*s,i[7]=u*h-r*s}Ui(t){const i=this.arr;i[0]*=t,i[1]*=t,i[2]*=t,i[3]*=t,i[4]*=t,i[5]*=t,i[6]*=t,i[7]*=t}Zi(t,i,s){const h=this.arr;h[12]+=h[0]*t+h[4]*i+h[8]*s,h[13]+=h[1]*t+h[5]*i+h[9]*s,h[14]+=h[2]*t+h[6]*i+h[10]*s,h[15]+=h[3]*t+h[7]*i+h[11]*s}Oi(t,i,s,h){this.Gi();const e=this.arr,n=1/Math.tan(t/2),o=1/(s-h);e[0]=n/i,e[5]=n,e[10]=(h+s)*o,e[11]=-1,e[14]=2*h*s*o,e[15]=0}qi(t){this.Gi();const i=this.arr,s=1/Math.tan(t/2);i[0]=s,i[5]=s}Ji(){const t=this.arr,i=t[0],s=t[1],h=t[2],e=t[3],n=t[4],o=t[5],r=t[6],a=t[7],c=t[8],l=t[9],u=t[10],d=t[11],f=t[12],p=t[13],m=t[14],g=t[15],w=i*o-s*n,v=i*r-h*n,M=i*a-e*n,_=s*r-h*o,y=s*a-e*o,b=h*a-e*r,k=c*p-l*f,x=c*m-u*f,P=c*g-d*f,T=l*m-u*p,S=l*g-d*p,A=u*g-d*m;let C=w*A-v*S+M*T+_*P-y*x+b*k;C&&(C=1/C,t[0]=(o*A-r*S+a*T)*C,t[1]=(h*S-s*A-e*T)*C,t[2]=(p*b-m*y+g*_)*C,t[3]=(u*y-l*b-d*_)*C,t[4]=(r*P-n*A-a*x)*C,t[5]=(i*A-h*P+e*x)*C,t[6]=(m*M-f*b-g*v)*C,t[7]=(c*b-u*M+d*v)*C,t[8]=(n*S-o*P+a*k)*C,t[9]=(s*P-i*S-e*k)*C,t[10]=(f*y-p*M+g*w)*C,t[11]=(l*M-c*y-d*w)*C,t[12]=(o*x-n*T-r*k)*C,t[13]=(i*T-s*x+h*k)*C,t[14]=(p*v-f*_-m*w)*C,t[15]=(c*_-l*v+u*w)*C)}Ki(t){const i=this.arr,s=t.arr;let h=i[0],e=i[1],n=i[2],o=i[3];i[0]=h*s[0]+e*s[4]+n*s[8]+o*s[12],i[1]=h*s[1]+e*s[5]+n*s[9]+o*s[13],i[2]=h*s[2]+e*s[6]+n*s[10]+o*s[14],i[3]=h*s[3]+e*s[7]+n*s[11]+o*s[15],h=i[4],e=i[5],n=i[6],o=i[7],i[4]=h*s[0]+e*s[4]+n*s[8]+o*s[12],i[5]=h*s[1]+e*s[5]+n*s[9]+o*s[13],i[6]=h*s[2]+e*s[6]+n*s[10]+o*s[14],i[7]=h*s[3]+e*s[7]+n*s[11]+o*s[15],h=i[8],e=i[9],n=i[10],o=i[11],i[8]=h*s[0]+e*s[4]+n*s[8]+o*s[12],i[9]=h*s[1]+e*s[5]+n*s[9]+o*s[13],i[10]=h*s[2]+e*s[6]+n*s[10]+o*s[14],i[11]=h*s[3]+e*s[7]+n*s[11]+o*s[15],h=i[12],e=i[13],n=i[14],o=i[15],i[12]=h*s[0]+e*s[4]+n*s[8]+o*s[12],i[13]=h*s[1]+e*s[5]+n*s[9]+o*s[13],i[14]=h*s[2]+e*s[6]+n*s[10]+o*s[14],i[15]=h*s[3]+e*s[7]+n*s[11]+o*s[15]}Bi(t,i,s=1){const h=this.arr;h[0]*=t,h[1]*=t,h[2]*=t,h[3]*=t,h[4]*=i,h[5]*=i,h[6]*=i,h[7]*=i,h[8]*=s,h[9]*=s,h[10]*=s,h[11]*=s}Qi(t,i,s,h,e,n,o,r,a){const c=this.arr;let l=h-t,u=e-i,d=n-s;const f=Math.sqrt(l*l+u*u+d*d)||1;l/=f,u/=f,d/=f;let p=u*a-d*r,m=d*o-l*a,g=l*r-u*o;const w=Math.sqrt(p*p+m*m+g*g)||1;p/=w,m/=w,g/=w;const v=m*d-g*u,M=g*l-p*d,_=p*u-m*l;c[0]=p,c[1]=v,c[2]=-l,c[3]=0,c[4]=m,c[5]=M,c[6]=-u,c[7]=0,c[8]=g,c[9]=_,c[10]=-d,c[11]=0,c[12]=-(p*t+m*i+g*s),c[13]=-(v*t+M*i+_*s),c[14]=l*t+u*i+d*s,c[15]=1}},qt=class{x;y;z;w;constructor(t=0,i=0,s=0,h=1){this.x=t,this.y=i,this.z=s,this.w=h}fi(t){this.x=t.x,this.y=t.y,this.z=t.z,this.w=t.w}ts(t){const i=t.arr,s=this.x,h=this.y,e=this.z,n=i[3]*s+i[7]*h+i[11]*e+i[15]||1;this.x=(i[0]*s+i[4]*h+i[8]*e+i[12])/n,this.y=(i[1]*s+i[5]*h+i[9]*e+i[13])/n,this.z=(i[2]*s+i[6]*h+i[10]*e+i[14])/n,this.w=n}ss(){let t=this.x*this.x+this.y*this.y+this.z*this.z;t>0&&(t=1/Math.sqrt(t)),this.x*=t,this.y*=t,this.z*=t}},Jt=class{canvas;#et=-1;#nt=-1;#ot=-1;constructor(t){this.canvas=t}hs(t,i,s,h){const e=this.canvas,n=e.main.el,o=(Math.min(t,s)-n.left)/n.scale,r=(Math.min(i,h)-n.top)/n.scale,a=(Math.max(t,s)-n.left)/n.scale,c=(Math.max(i,h)-n.top)/n.scale,l=o+(a-o)/2,u=r+(c-r)/2,d=Math.max(a-o,c-r),f=this.#et-d;if(e.es.stop(),this.#nt>0){const t=this.#nt-l,i=this.#ot-u;this.rs(f,t,i,l,u,n,e)}else e.xt.stop();this.#nt=l,this.#ot=u,this.#et=d}cs(){}ls(){this.#rt()}#rt(){this.#et=-1,this.#nt=-1,this.#ot=-1}Pt(t,i,s,h,e,n,o,r,a,c,l,u){const d=this.canvas,f=d.xt;d.es.stop();const p=this.us(t);return f.pi=0,e=f.Ii(p,i,s,h,e,u,{speed:n,perc:o,isJump:r,limitViewport:a,omniIdx:l,correct:c}),f.pi=0,f.Ai=1,e}us(t){return t}setCoo(t,i,s,h=0,e=0,n=0,o=dt){if(this.ds(t,i,s))return 0;const r=this.canvas;0===s&&(s=r.fs()),s=this.ps(s),r.es.stop();const{w:a,h:c}=this.gs(s);return this.ws(t,i,a,c,h),h=r.xt.Ii(t,i,a,c,h,o,{speed:e}),r.xt.pi=0===h||n,r.xt.Ai=h>0,h}ds(t,i,s){return 0}ps(t){return t}ws(t,i,s,h,e){}},Kt=class extends Jt{Bi=1;W=1;Z=1;mi=1;#at=1;Y=1;#ct=new jt;#lt=new jt;#ut=new jt;#dt=0;#ft=0;#pt=0;#mt=new Zt;cpw=-1;cph=-1;#gt=1;constructor(t){super(t)}B(t,i,s,h){const e=this.canvas;(e.Rt||e.vs)&&(h=1);const n=e.el,o=e.Ms?e.parent.el.ratio:n.ratio,r=e.view,a=this.#lt;s&&(t-=n.left,i-=n.top);const c=t/this.Bi*o/e.width+r.x0,l=i/this.Bi*o/e.height+r.y0;return a.x=h?c:Math.max(r.lX0,Math.min(r.lX1,c)),a.y=h?l:Math.max(r.lY0,Math.min(r.lY1,l)),a.scale=this.Bi,a.Mi(),this.#lt}H(t,i,s){const h=this.canvas,e=h.el,n=h.Ms?h.parent.el.ratio:e.ratio,o=this.#ct;return o.x=(t-h.view.x0)*h.width*this.Bi/n+(s?e.left:0),o.y=(i-h.view.y0)*h.height*this.Bi/n+(s?e.top:0),o.scale=this.Bi/n,o.Mi(),o}G(t,i,s,h,e){return this.yt(t-.5,i-.5,s,h,e)}yt(t,i,s,h=0,e=0){const n=this.canvas,o=n.el,r=this.#mt,a=n.V._s,c=n.Ms?n.parent.el.ratio:o.ratio;a.x=t,a.y=i,a.z=s,a.w=1,r.Gi(),!e&&n.ys&&r.Oi(n.ys,n.aspect,1e-4,100),n.bs&&r.Zi(0,0,n.bs),n.ks&&r.Zi(n.ks,0,0),!e&&n.xs&&r.ji(n.xs);const l=n.images.length/n.Fi,u=n.layer*l,d=n.images.length>0?-(n.$i+1-u)/l*2*Math.PI:0;r.Yi(h+d),a.ts(r);const f=this.#ct;return f.x=(.5+a.x-n.view.x0)*n.width*this.Bi/c+(e?o.left:0),f.y=(.5+a.y-n.view.y0)*n.height*this.Bi/c+(e?o.top:0),f.w=-a.w-n.bs,f.Mi(),f}Ps(){const t=this.canvas,i=t.el,s=i.width/t.width,h=i.height/t.height;if(!t.view.di&&this.cpw===s&&this.cph===h)return void(t.ht!==this.#gt&&this.et());this.cpw=s,this.cph=h,this.#at=Math.min(s,h),this.Y=Math.max(s,h);const e=t.view.ai/t.view.ci;if(t.view.di=0,1>t.view.ai||1>t.view.ci){const i=s/h;this.Y/=i>e?t.view.ai/i:t.view.ci*i}if(this.et(),i.width&&i.height&&!this.canvas.xt.Ei()&&(t.view.fi(t.xt.Si,1),!t.is360)){const i=t.xt.pi;t.xt.pi=0,this.Ts(),t.xt.pi=i}}et(t=0){const i=this.canvas;if(this.W=i.ht?this.Y:this.#at,!t&&!i.main.Ss&&(0===i.$i&&!i.ht||i.$i>0&&!i.ht)){const t=i.focus.width*i.width,s=i.focus.height*i.height,h=i.el.width,e=i.el.height;this.W=h/e>t/s?e/s:h/t}this.mi=this.W>1&&i.maxScale<this.W?this.W:Math.max(this.W,i.maxScale*i.As/i.el.scale),this.#gt=i.ht}Pi(){return 1>this.Z&&this.Bi<this.W}J(t=0){return ot(this.Bi,this.W*(t?this.Z:1))||this.Bi<=this.W*(t?this.Z:1)}q(){return ot(this.Bi,this.mi)||this.Bi>=this.mi}Ts(){if(-1===this.cpw)return 0;const t=this.canvas,i=this.canvas.view,s=!t.vs&&t.xt.pi;!t.xt.Ci&&(s||!t.xt.Ai&&t.ht)&&i.pi(0);const h=i.width,e=i.height,n=this.cpw,o=this.cph;this.Bi=Math.min(n/h,o/e),s&&!this.#dt&&this.Bi>=this.mi&&t.xt.Ai&&(this.Bi=this.mi),(!t.xt.Ci&&!this.#dt||t.ht)&&(this.Bi=Math.max(this.W*this.Z,this.Bi)),!this.#ft&&t.Cs&&(this.Bi=this.Y);const r=n/this.Bi-h,a=o/this.Bi-e;return i.set(i.ei,i.ni,i.width+r,i.height+a),!this.#ft&&t.Cs&&this.canvas.xt.Si.fi(i),!t.xt.Ci&&t.ht&&i.pi(0),this.#ft=this.cpw>0,this.#pt?(this.#pt=0,this.setCoo(this.#ut.x,this.#ut.y,this.#ut.scale),0):1}Es(){const t=this.canvas.view;return!this.canvas.vs&&((!ot(t.x0,t.lX0)&&t.x0<t.lX0)!=(!ot(t.x1,t.lX1)&&t.x1>t.lX1)||(!ot(t.y0,t.lY0)&&t.y0<t.lY0)!=(!ot(t.y1,t.lY1)&&t.y1>t.lY1)||!ot(this.Bi,this.mi)&&this.Bi>this.mi)}St(t,i,s=0,h=0,e=0,n=0){const o=this.canvas;if((this.Pi()||this.#dt)&&!e)return;this.canvas.vs&&(h=1);const r=o.Ms?o.parent.el.ratio:o.el.ratio,a=o.view,c=t/o.width/this.Bi*r,l=i/o.height/this.Bi*r,u=a.ei+c,d=a.ni+l,f=a.width,p=a.height;this.#dt?(o.view.set(u,d,f,p),o.O(u,d,f,p,h,0,0,0)):e||!this.Es()||n?(o.xt.stop(),0===s?(n||o.es.addStep(4*t,4*i),o.view.set(u,d,f,p),h||o.view.pi(0,0,o.vs),o.O(u,d,f,p,h,0,0,n),o.view.li=1):o.xt.Ii(u,d,f,p,s,dt)):o.xt.Ei()?o.xt.Li(u,d,a.width,a.height,1):o.xt.Ii(u,d,f,p,150,dt,{limitViewport:!h&&!this.#dt,correct:!h})}Tt(t,i,s,h=0,e){const n=this.canvas;if(n.es.stop(),!this.#dt&&this.q()&&0>t)return 0;if(this.canvas.vs&&(e=1),t>0&&this.J()&&this.Z>=1&&(!this.#dt||n.ht))return 0;const o=n.el,r=n.view,a=this.cpw/this.cph;let c=t*(o.width/512)/n.width/this.Bi,l=c/a;0>t&&-1>c&&(c=-.9999),0>t&&-1>l&&(l=-.9999);const u=!e&&!n.vs&&n.xt.pi&&0===h,d=n.Ms?n.parent.el.ratio:o.ratio;i-=o.left,s-=o.top;const f=this.Pi(),p=i>0&&!f?i/o.width*d:.5,m=s>0&&!f?s/o.height*d:.5,g=r.ei+c*(.5-p),w=r.ni+l*(.5-m),v=r.width+c,M=r.height+l;return n.xt.pi=u,h=n.xt.Ii(g,w,v,M,h,dt,{limitViewport:!e&&!this.#dt,correct:u}),n.xt.Si.fi(n.view),n.xt.pi=!e,h}rs(t,i,s,h,e,n,o){!this.canvas.main.Is&&this.Bi>this.W&&this.St(i,s,0,0,1),this.Tt(2*t*n.scale,h,e,0,!this.canvas.Ls),o.xt.pi=!!this.canvas.Ls}cs(){this.#dt=1}ls(){this.#wt(),this.#dt=0,super.ls()}#wt(){if(this.canvas.vs)return;const t=this.canvas.view,i=this.Bi>this.mi,s=i?this.cpw/this.mi:t.width,h=i?this.cph/this.mi:t.height,e=s/2,n=h/2,o=t.ai/2,r=t.ci/2,a=o>e?Math.max(t.lX0+e,Math.min(t.ei,t.lX1-e)):t.oi,c=r>n?Math.max(t.lY0+n,Math.min(t.ni,t.lY1-n)):t.ri;this.canvas.xt.Ii(a,c,s,h,150,dt,{correct:1})}ds(t,i,s){if(!this.#ft){this.#pt=1;const h=this.#ut;return h.x=t,h.y=i,h.scale=s,this.Ts(),1}return 0}ps(t){return Math.max(this.W,t)}gs(t){return{w:1/t*this.cpw,h:1/t*this.cph}}ws(t,i,s,h,e){0===e&&(t+s/2>1&&(t=1-s/2),0>t-s/2&&(t=s/2),i+h/2>1&&(i=1-h/2),0>i-h/2&&(i=h/2))}K=0;tt=0;zs(){const t=this.canvas,i=t.view,s=t.V,h=s.Ds;h.Oi(s.Oi,t.el.ki,1e-4,100),h.Zi(-(i.ei-.5)*t.aspect,i.ni-.5,-i.height/2)}},Qt=class{Fs;$s;#d;Os;Bs;Vs;#vt;Rs;Ns;constructor(t,i,s,h,e,n,o){this.#d=t,this.Os=i,this.Bs=s,this.Vs=h,this.#vt=e,this.Rs=n,this.Ns=o,this.Fs=e/t.width,this.$s=e/t.height}Hs(t,i){const s=t-this.Bs,h=s%this.Rs,e=Math.floor(s/this.Rs),n=this.#d;return i.x0=n.x0+h*this.#vt/n.width*n.Xs,i.y0=n.y0+e*this.#vt/n.height*n.Gs,i.x1=n.x0+Math.min((h+1)*this.#vt/n.width,1)*n.Xs,i.y1=n.y0+Math.min((e+1)*this.#vt/n.height,1)*n.Gs,i.image=n,i.layer=this.Os,i.x=h,i.y=e,i}},ti=(t,i)=>i-t,ii=class t{static#Mt=[];static#_t=new Uint8Array(0);static#yt=0;#bt=new qt;#kt=new Zt;#xt=0;Ys=[];#Pt=0;Ws=0;x0=0;y0=0;x1=1;y1=1;Xs=1;Gs=1;#Tt=.5;#St=.5;#At=1;#Ct=1;#Et=0;#It=0;#Lt=-1;#zt=0;#Dt=0;Us=0;Zs;#Ft=0;#$t=0;qs=0;#Ot=0;Js=0;static#Bt=new Float64Array(200);static#Vt=new Float64Array(200);static#Rt=new Float64Array(200);static#Nt=0;static#Ht=0;#u;Os;ft;width;height;#vt;#Xt;Ot;#Gt;opacity;Ks;wt;vt;Mt;#jt;#Yt;constructor(t,i,s,h,e,n,o,r,a,c,l,u,d,f,p,m,g){this.#u=t,this.Os=i,this.ft=s,this.width=h,this.height=e,this.#vt=n,this.#Xt=o,this.Ot=a,this.#Gt=c,this.opacity=l,this.Ks=u,this.wt=d,this.vt=f,this.Mt=p,this.#jt=m,this.#Yt=g;const w=h>e?h:e;this.#Ot=this.#u.is360&&this.ft>0,this.#Pt=r&&!o?2:1;for(let M=n;M<w*t.main.Qs;M*=2)this.#Pt++;(t.main.th||this.#Yt>0)&&(this.#Pt-=3-t.main.ih),this.#Yt>0&&this.#Pt--,this.#Pt=Math.max(1,this.#Pt);let v=c;for(let M=0;M<this.#Pt;M++){const t=ht(M)*this.#vt,i=Math.ceil(h/t),s=Math.ceil(e/t);this.Ys.push(new Qt(this,this.Ys.length,v,this.Zs=v+=i*s,t,i,s))}}gt(t,i,s,h){this.x0=t,this.y0=i,this.x1=s,this.y1=h,this.#At=s+(t>s?1:0)-t,this.#Ct=h-i,this.#Tt=t+this.#At/2,this.#St=i+this.#Ct/2,this.#u.is360&&(this.#Tt=it(this.#Tt)),this.Xs=this.#At,this.Gs=this.#Ct,this.#Ft=this.width/this.height,this.#xt=this.#Ft>this.#u.aspect?this.#u.width/this.width*this.Xs:this.#u.height/this.height*this.Gs,this.#u.is360&&this.#Wt()}#Wt(){let t=2*(this.#Tt-.5)*Math.PI;const i=(this.#St-.5)*Math.PI;t+=this.#u.V.sh,this.#Et=Math.cos(i)*Math.sin(t),this.#It=Math.sin(i),this.#Lt=Math.cos(i)*Math.cos(t),this.#zt=2*this.#At*Math.PI,this.#Dt=this.#Ct*Math.PI}#Ut(){if(!this.#u.is360)return 0;const t=this.#u.V,i=this.#Et*t.hh+this.#It*t.eh+this.#Lt*t.nh;return Math.acos(Math.max(-1,Math.min(1,i)))<t.oh+Math.max(this.#zt,this.#Dt)/2}#Zt(){if(this.#Ot)return!this.#Ut();{const t=this.#u.view;return!(this.x1>t.x0&&this.x0<t.x1&&this.y1>t.y0&&this.y0<t.y1)}}rh(){return this.#Yt>0&&this.#Yt>this.#u.camera.Bi||(this.Ot||this.ft>0)&&0===this.opacity&&0===this.Ks?0:this.Os===this.#u.$i||this.#u.is360&&0===this.ft?1:!this.#Zt()}ah(t){const i=this.Ks;if(this.opacity===i)return 0;const s=1/(this.#u.main.uh*this.#u.main.dh);return this.opacity=Math.min(1,Math.max(0,t?i:i>this.opacity?Math.min(i,this.opacity+s):Math.max(i,this.opacity-s))),this.opacity!==i}fh(i){if(0>=this.opacity)return 0;this.#$t=0;const s=t.#Mt;let h=t.#_t;if(this.#Ot){if(i=this.#qt(i),!(this.qs=i>0))return 0}else i=Math.max(i,this.#u.camera.W)*this.#xt;const e=this.Zs-this.#Gt;h.length<e?h=t.#_t=new Uint8Array(e):h.fill(0,0,e),t.#yt=this.#Gt;const n=this.Zs-1,o=n-this.#Gt;0===this.Us?(s.push(n),h[o]=1,this.#u.main.ph(n,1,1)):this.#Ot&&(s.push(n),h[o]=1,this.#$t++);const r=this.#Jt(i),a=this.#u;if(0===this.ft&&a.is360)this.#Kt(this.Ys[r]);else if(this.#Ot)this.#Qt(r),this.#$t++;else if(a.visible.x0<a.visible.x1&&a.visible.y0<a.visible.y1){const t=a.view;this.#ti(r,Math.max(a.visible.x0,t.x0),Math.max(a.visible.y0,t.y0),Math.min(a.visible.x1,t.x1),Math.min(a.visible.y1,t.y1))}s.sort(ti);for(const t of s)a.mh.push(t);return s.length=0,this.#$t}#Jt(t){let i=this.#Xt||this.#u.gh?this.#Pt:1+this.#u.main.wh;if(!this.#Xt&&!this.#u.gh)for(;i<this.#Pt&&1>ht(i)*t;i++);return this.Ws=i-1}#ti(t,i,s,h,e){if(this.#Zt())return;const n=this.Ys[t],o=n.Fs,r=n.$s,a=this.Xs,c=this.Gs,l=Math.min(n.Rs-1,Math.floor(Math.max(0,h-this.x0)/a/o)),u=Math.min(n.Ns-1,Math.floor(Math.max(0,e-this.y0)/c/r)),d=Math.floor(Math.max(0,i-this.x0)/a/o);let f=Math.floor(Math.max(0,s-this.y0)/c/r);for(;u>=f;f++)for(let t=d;l>=t;t++)this.#ii(n,t,f)}#Qt(t){if(this.#Zt())return;const i=this.Ys[t],s=this.#u,h=s.view.ni,e=s.view.width+.1,n=s.view.height+.1,o=this.#Tt,r=this.#St,a=this.#At,c=this.#Ct,l=Math.max(h-n/2,r-c/2),u=Math.min(h+n/2,r+c/2);if(l>=u)return;const d=s.is360?it(s.view.ei+s.V.Mh):s.view.ei;let f,p;if(s.is360){const t=it(d-e/2),i=it(d+e/2),s=it(o-a/2),h=it(o+a/2);if(i>t&&h>s){if(f=Math.max(t,s),p=Math.min(i,h),f>=p)return}else if(t>i&&h>s){if(s>i&&t>h)return;f=s,p=h}else if(i>t&&s>h){if(t>h&&s>i)return;f=t,p=i}else f=Math.max(t,s),p=Math.min(i,h);const n=o-a/2;o+a/2>1?(n>f&&(f+=1),n>p&&(p+=1)):f>o+.5?f-=1:p>o+.5&&(p-=1)}else if(f=Math.max(d-e/2,o-a/2),p=Math.min(d+e/2,o+a/2),f>=p)return;const m=o-a/2,g=r-c/2,w=i.Fs,v=i.$s,M=Math.floor(Math.max(0,Math.min(1,(f-m)/a))/w),_=Math.min(i.Rs-1,Math.floor(Math.max(0,Math.min(1,(p-m)/a))/w)),y=Math.floor(Math.max(0,Math.min(1,(l-g)/c))/v),b=Math.min(i.Ns-1,Math.floor(Math.max(0,Math.min(1,(u-g)/c))/v));for(let k=y;b>=k;k++)for(let t=M;_>=t;t++)this.#ii(i,t,k)}#ii(i,s,h){const e=t.#_t,n=t.#yt,o=Math.min(this.Zs-1,i.Bs+h*i.Rs+s),r=o-n;if(r<e.length){if(e[r])return;e[r]=1}t.#Mt.push(o),1>this.#u.main.ph(o,o===this.Zs-1,this.#u.Ht)?this.#Xt||this.#u.gh||i.Os>=this.#Pt-1||this.#ii(this.Ys[i.Os+1],s>>1,h>>1):this.#$t++}_h(t){const i=this.#u.main.yh,s=2*Math.PI*this.#u.V.bh,h=this.#bt,e=this.#kt,n=this.x0+this.Xs/2,o=this.y0+this.Gs/2,r=this.#u.V.kh(n-this.#u.V.Mh,o,1,5);e.Gi(),e.Zi(r.x,r.y,r.z),e.Yi(Math.atan2(r.x,r.z)+Math.PI+this.vt),e.ji(-Math.sin((o-.5)*Math.PI)-this.wt),e.Wi(-this.Mt),e.Ui(.5*this.#jt);const a=(t.x0-n)*s,c=(t.x1-n)*s,l=.5*-(t.y0-o)*s,u=.5*-(t.y1-o)*s,d=(t,i)=>{h.x=0,h.y=0,h.z=0,e.Zi(t,i,0),h.ts(e),e.Zi(-t,-i,0)};d(a,l),i[0]=h.x,i[1]=h.y,i[2]=h.z,d(a,u),i[3]=h.x,i[4]=h.y,i[5]=h.z,d(c,l),i[6]=h.x,i[7]=h.y,i[8]=h.z,d(c,u),i[12]=h.x,i[13]=h.y,i[14]=h.z,i[9]=i[3],i[10]=i[4],i[11]=i[5],i[15]=i[6],i[16]=i[7],i[17]=i[8]}#qt(t){if(this.#Ot)return t*Math.max(2*this.#At,this.#Ct)*(this.#u.width/this.width);const i=this.#At,s=this.#Ct,h=this.#Tt,e=this.#St,n=this.#u.el,o=this.#u.V,r=n.width,a=s/2.5;let c=0;const l=o.N(h-i/2,e-a);if(l.wi(n)&&c++,o.N(h+i/2,e-a).wi(n)&&c++,o.N(h-i/2,e+a).wi(n)&&c++,o.N(h+i/2,e+a).wi(n)&&c++,0===c)return 0;const u=l.w>0||0>l.x?0:Math.min(r,l.x),d=l.w>0||l.x>r?r:Math.max(0,l.x);return Math.min(1,(d-u)/this.width)}#Kt(i){const s=this.#u,h=s.el.width,e=s.el.height,n=s.V.oh>Math.PI/2?20:12,o=s.V.Mh;t.#Nt=0;const r=(i,h)=>{const e=s.V.B(i,h),n=t.#Nt++;t.#Bt[n]=e.x,t.#Vt[n]=e.y};for(let t=0;n>=t;t++){const i=t/n;r(i*h,0),r((1-i)*h,e),r(h,i*e),r(0,(1-i)*e)}for(let t=1;3>=t;t++){const i=e*t/4;for(let t=1;3>=t;t++)r(h*t/4,i);r(h*t/4,e-1)}const a=t.#Nt;let c=1/0,l=-1/0;for(let b=0;a>b;b++){const i=t.#Vt[b];c>i&&(c=i),i>l&&(l=i)}c=Math.max(0,c-.001),l=Math.min(1,l+.05);const u=t.#Bt,d=t.#Rt;for(let t=0;a>t;t++)u[t]=it(u[t]-o);t.#Ht=0;for(let b=0;a>b;b++){const i=u[b];let s=0;for(let h=0;h<t.#Ht;h++)if(1e-8>Math.abs(d[h]-i)){s=1;break}s||(d[t.#Ht++]=i)}const f=t.#Ht;for(let t=1;f>t;t++){const i=d[t];let s=t-1;for(;s>=0&&d[s]>i;)d[s+1]=d[s],s--;d[s+1]=i}let p=0,m=1,g=0;if(2>f)g=1,c=0,l=1;else{let t=0,i=-1;for(let e=0;f-1>e;e++){const s=d[e+1]-d[e];s>t&&(t=s,i=e)}const s=d[0]+1-d[f-1],h=s>t;h&&(t=s,i=f-1),.999999>1-t?h?(p=d[0],m=d[f-1]):(p=d[(i+1)%f],m=d[i]+1):g=1}(.05>c||l>.95)&&(g=1);const w=i.$s,v=i.Fs;let M=Math.max(0,Math.floor((c-.001)/w)),_=Math.min(i.Ns-1,Math.max(0,Math.floor((l+w-1e-10)/w)));1e-5>c&&(M=0),l>.99999&&(_=i.Ns-1);const y=m>1;for(let t=M;_>=t;t++)if(g)for(let s=0;s<i.Rs;s++)this.#ii(i,s,t);else{const s=Math.max(0,Math.floor((p-.001)/v)-1);if(y){for(let e=s;e<i.Rs;e++)this.#ii(i,e,t);const h=Math.min(i.Rs-1,Math.ceil(it(m+.001)/v));for(let s=0;h>=s;s++)this.#ii(i,s,t)}else{const h=Math.min(i.Rs-1,Math.ceil((m+.001)/v));for(let e=s;h>=e;e++)this.#ii(i,e,t)}}}},si=class extends Jt{Ds=new Zt;#si=new Zt;#hi=new Zt;#ei=1;#ni=new Zt;#oi=new qt;bh=10;Bi=0;#ri=1;#ai=0;Mh=0;#ci=0;#li=0;sh=0;K=0;tt=0;xh=Math.PI/2;Oi=Math.PI/2;Vi=Math.PI/2;Ri=Math.PI/2;hh=0;eh=0;nh=-1;oh=0;_s=new qt;#lt=new jt;constructor(t){super(t),this.sh=-this.canvas.Ph,this.Mh=this.sh/(2*Math.PI),this.#ri=this.canvas.height/(this.canvas.width/2),this.#ai=(1-this.#ri)/4,this.K=this.sh,this.Th()}nt(t,i){this.#ci=t,this.#li=i,this.Vi=Math.PI/2,i>0&&(this.Vi=Math.min(this.Vi,this.Vi*i*1.5)),this.Xi(this.Oi,1)}Th(t=0){const i=this.canvas.el;t||this.Ds.Oi(this.Oi,i.ki,1e-4,20),this.#ei=1;const s=this.Ds;this.tt=Math.min(Math.PI/2,Math.max(-Math.PI/2,this.tt)),s.ji(this.tt),s.Yi(this.K),s.Zi(this.#oi.x,this.#oi.y,this.#oi.z);const h=this.#ni;h.qi(this.Oi),h.Zi(0,0,i.height/i.ratio/2),h.ji(-this.tt),h.Yi(this.K),this.#lt.direction=(this.K/Math.PI*180%360+360)%360}Ti(t,i,s=0){const h=this.canvas,e=h.el;this.K+=t*e.ratio/e.width*this.Oi*e.ki,this.tt+=i*e.ratio/e.height*this.Oi*this.#ri,this.K=st(this.K),(h.ht||this.#li>0)&&this.#ui(),this.#ci>0&&this.#di(),0===s&&h.es.addStep(2*t,2*i),this.Th(),this.Sh(),this.#fi()}#ui(){const t=this.Oi/2,i=Math.PI*this.#ri/2*(this.#li>0?this.#li:1);this.tt=this.tt>0?Math.min(i,this.tt+t)-t:Math.max(-i,this.tt-t)+t}#di(){const t=this.Oi/2*this.canvas.el.ki,i=Math.PI*(this.#ci>0?this.#ci:1);let s=this.K;for(;s>=Math.PI;)s-=2*Math.PI;for(;s<-Math.PI;)s+=2*Math.PI;this.K=st(Math.min(Math.max(i,t)-t,Math.max(Math.min(-i,-t)+t,s)))}#pi(t,i,s,h=0,e=0,n=0){const o=this.canvas;if(t/=2,0!==i)i=o.xt.zoom(t,i,h,s);else{t/=this.Bi*o.zi/20;const i=e>0&&n>0;let h=0,r=0;if(i){const t=this.B(e,n);h=t.x,r=t.y}if(this.Xi(this.Oi+t,s),i){const t=this.B(e,n);let i=h-t.x;i>.5&&(i-=1),-.5>i&&(i+=1);const s=r-t.y;this.K+=i*Math.PI*2,this.tt+=s*Math.PI*this.#ri,this.K=st(this.K),(o.ht||this.#li>0)&&this.#ui(),this.#ci>0&&this.#di(),this.Th(),this.#mi(),this.Sh(),this.#fi()}}return i}Xi(t,i){const s=this.canvas;this.Oi=t,i&&!s.is360||(this.Oi=Math.min(this.Vi,Math.max(this.Ri,this.Oi))),(s.ht||this.#li>0)&&this.#ui(),this.#ci>0&&this.#di(),this.Ds.Oi(this.Oi,s.el.ki,1e-4,20),this.#mi(),this.Th(1),this.Sh(),this.#fi()}#mi(){const t=this.canvas.el,i=t.width/2,s=t.height/2,h=this.B(i,s).x,e=this.B(i+1,s+1).x;this.Bi=1/(e+(h>e?1:0)-h)/this.canvas.width}it(t,i,s=0){this.K=st(t-this.sh),this.tt=i,0!==s?this.Xi(s,0):this.Th(),this.Sh(),this.#fi()}O(t,i,s,h,e){if(null==t||null==i||null==h)return 0;const n=e?.noLimit??0,o=e?.correctNorth?t+this.Mh:t;return this.K=(o-.5)*Math.PI*2,this.tt=(i-.5)*Math.PI*this.#ri,this.Xi(Math.min(this.Vi,h*Math.PI*this.#ri),n),this.Sh(),this.#fi(),1}#fi(){const t=this.canvas,i=it(this.K/(2*Math.PI)+.5),s=this.tt/this.#ri/Math.PI+.5,h=this.Oi/Math.PI/this.#ri,e=h*(0===t.el.width?1:.5*Math.sqrt(t.el.ki))/(t.aspect/2);t.view.set(i,s,e,h),t.view.li=1}Sh(){const t=this.K,i=this.tt;this.hh=Math.cos(i)*Math.sin(t),this.eh=Math.sin(i),this.nh=Math.cos(i)*Math.cos(t);const s=2*Math.atan(1/this.Oi),h=this.canvas.el.width/this.canvas.el.height,e=s/2,n=Math.atan(Math.tan(e)*h);this.oh=2*n}Ah(t,i,s,h=0){const e=this.#oi,n=s*Math.PI*2+h;e.x=-t*Math.sin(n),e.y=i,e.z=t*Math.cos(n),this.canvas.view.li=1,this.Th()}Ch(){const t=this.canvas,i=t.el;this.Ri=Math.min(.5,i.height/t.height)/t.maxScale*this.#ri*Math.PI/i.ratio*i.scale,this.Xi(this.Oi,1)}#gi(){this.#ei&&(this.#hi.fi(this.Ds),this.#hi.Ji(),this.#ei=0)}B(t,i){const s=this.canvas.el,h=this._s,e=this.#lt;return h.x=t*s.ratio/s.width*2-1,h.y=-(i*s.ratio/s.height*2-1),h.z=1,h.w=1,this.#gi(),h.ts(this.#hi),h.ss(),e.x=Math.atan2(h.x,-h.z)/Math.PI/2+.5,e.y=.5-Math.asin(h.y)/Math.PI/this.#ri,e.scale=this.Bi,e.w=this.#oi.x+this.#oi.z,e.direction=this.K+this.sh,e.Mi(),e}N(t,i){const s=this.canvas.el,h=this._s,e=this.#lt;return this.kh(t+this.Mh,i),e.x=(h.x+1)/2*s.width/s.ratio,e.y=(1-h.y)/2*s.height/s.ratio,e.scale=this.Bi,e.w=-h.w,e.Mi(),e}kh(t,i,s=0,h=this.bh){const e=this._s;t*=2*-Math.PI,i-=.5,i*=-Math.PI,i*=this.#ri;const n=Math.cos(i);return e.x=n*Math.sin(t)*h,e.y=Math.sin(i)*h,e.z=n*Math.cos(t)*h,e.w=1,s||e.ts(this.Ds),e}lt(t,i,s,h,e,n,o,r=0,a=1,c=1,l=0){isNaN(h)&&(h=this.bh);const u=this.#si,d=this._s,f=this.bh,p=this.#oi;u.Gi(),h*=this.bh*(100/(2*Math.PI)),t*=2*-Math.PI,i-=.5,i*=Math.PI*this.#ri;const m=Math.cos(i);return d.x=m*Math.sin(t),d.y=Math.sin(i),d.z=m*Math.cos(t),u.Zi(p.x*h/f,-p.y*h/f+r*f,p.z*h/f),u.Zi(d.x*h,d.y*h,d.z*h),u.Yi(Math.atan2(d.x,d.z)+Math.PI+n),u.ji(d.y+e),u.Wi(o),u.Bi(a,c),u.Ui(s/Math.PI/f),u.Ki(this.#ni),u}Eh(t,i,s,h){i*=this.#ri,i/=2,i-=.25,i+=this.#ai,h*=this.#ri,h/=2;const e=this.canvas.main.Ih,n=this.bh,o=s/16,r=h/16,a=2*Math.PI;for(let c=0;16>c;c++)for(let s=0;16>s;s++){const h=18*(16*c+s),l=-it(t+o*s+this.Mh)*a,u=-(i+r*c)*a,d=-it(t+o*(s+1)+this.Mh)*a,f=-(i+r*(c+1))*a,p=Math.cos(l)*n||0,m=Math.sin(l)*n||0,g=Math.cos(d)*n||0,w=Math.sin(d)*n||0,v=Math.cos(u),M=Math.cos(f),_=Math.sin(u)*n,y=Math.sin(f)*n;e[h+0]=v*m,e[h+1]=_,e[h+2]=v*p,e[h+3]=e[h+9]=M*m,e[h+4]=e[h+10]=y,e[h+5]=e[h+11]=M*p,e[h+6]=e[h+15]=v*w,e[h+7]=e[h+16]=_,e[h+8]=e[h+17]=v*g,e[h+12]=M*w,e[h+13]=y,e[h+14]=M*g}}W=0;mi=0;Y=0;Z=1;et(){}Es(){return 0}Pi(){return 0}J(t=0){return this.Oi>=this.Vi}q(){return this.Oi<=this.Ri}St(t,i,s=0,h=0,e=0,n=0){this.Ti(t,i,s)}Tt(t,i,s,h=0,e){return this.#pi(t,h,e,0,i,s)}rs(t,i,s){this.#pi(2*t,0,0),this.Ti(i,s)}us(t){const i=this.canvas.view.ei;return i+at(i,t)}gs(t){const i=this.canvas.main.el;return{w:1/t*i.width,h:1/t*i.height}}},hi=class t{view;focus;xt;es;X;V;camera;#wi=new Xt;el=new Yt;images=[];zi=0;#vi=[];#Mi;#_i;#yi;visible;#bi;#ki=1;#xi=0;#Pi=0;#Ti=0;get zIndex(){return this.#Pi}set zIndex(t){this.#Pi!==t&&(this.#Pi=t,this.parent&&(this.parent.#Ti=1))}mh=[];aspect;#Si=0;#Ai=0;Ht=0;#Ci=0;#Ei=0;$i=-1;ys=0;xs=0;bs=0;ks=0;gh=0;layer=0;Lh;#vt;is360;Rt;#Ii;vs;Cs;maxScale;As;Di;Ph;#Li;#zi;isOmni;Ls;Fi;main;width;height;zh;ht;Ms;constructor(t,i,s,h,e,n,o,r,a,c,l,u,d,f,p,m,g,w,v,M,_,y,b=0){this.main=t,this.width=i,this.height=s,this.zh=h,this.ht=e,this.Ms=b,this.#vt=n,this.is360=o,this.Rt=r,this.#Ii=a,this.vs=c,this.Cs=e?1:l,this.maxScale=u,this.As=d,this.Di=f,this.Ph=p,this.#Li=m,this.#zi=g,this.isOmni=w,this.Ls=v,this.Fi=M,this.#Si=t.Dh.length,b||t.Dh.push(this),this.aspect=i/s,this.zi=Math.sqrt(i*i+s*s),this.view=new Gt(this),this.focus=new Gt(this),this.xt=new Ut(this),this.es=new Wt(this),this.X=new Kt(this),this.V=new si(this),this.camera=this.is360?this.V:this.X,this.#Mi=new Gt(this),this.#_i=new Gt(this),this.#yi=new Gt(this),this.visible=new Gt(this),this.#bi=new Gt(this),o&&this.view.set(.5,.5,1,.5),b||(this.el.fi(t.el),this.O(this.view.ei,this.view.ni,this.view.width,this.view.height,0,0),this.Ch()),r?(this.main.Fh++,this.#Ci=1,this.Ht=1,this.#Ei=1,y>0&&this.Jt(y)):this.$h(0,0,1,1,i,s,n,_,a,0,h)}parent;#Di(t){this.parent=t,this.#Si+=t.#vi.length}$h(t,i,s,h,e,n,o,r,a,c,l,u=0,d=0,f=0,p=1,m=0){const g=new ii(this,this.main.Fh++,this.images.length,e,n,o,r,a,c,this.main.Oh,l,l,u,d,f,p,m);return g.gt(t,i,s,h),this.images.push(g),this.main.Oh=g.Zs,1===this.images.length&&this.Hi(0),g}Bh(i,s,h,e,n,o,r={}){const a=r.coverLimit??1,c=r.coverStart??1,l=new t(this.main,n,o,1,a,this.#vt,0,0,this.main.th||this.#Ii,0,c,1,1,this.Di,0,0,0,0,this.Ls,1,0,0,1);return l.#Di(this),l.gt(i,s,h,e,1,1),this.#vi.push(l),l}#Fi(){const t=1/(0!==this.main.Vh||0!==this.main.Rh?this.main.Nh:1!==this.main.Dh.length||this.Ms?this.main.Hh:.25)/this.main.uh,i=this.zh>0&&this.zh>=this.Ht;if(this.Ht=i?Math.min(1,this.Ht+t):Math.max(0,this.Ht-t),this.#Ci=dt.get(this.Ht),0!==this.main.Vh||0!==this.main.Rh){const t=0===this.Ht?0:dt.get(1-this.Ht)*(i?1:-1);this.V.Ah(this.main.Vh*t*8,this.main.Rh*t*8,this.main.Xh)}}#$i(t){this.Lh?.visible?.set(t),this.#Ai=t}Gh(){this.zh=0,this.zIndex=0}jh(){if(this.#Ei=1,!this.Ms&&1===this.#_i.width&&1===this.#_i.height)for(let t=0;t<this.main.Dh.length;t++)this.main.Dh[t]!==this&&this.main.Dh[t].Gh();this.zh=1}Yh(){return!this.#xi&&1>this.#ki}#Oi(){return 0===this.zh&&0===this.Ht||0===this.#_i.width||0===this.#_i.height}Wh(){if(!this.Yh()&&this.#Oi())return void(this.#Ai&&this.#$i(0));let t=1>this.xt.Ni()||1>this.es.step()||!this.#Ei;if(this.mh.length=0,this.#Bi(0)&&(t=1),!(this.is360||this.Yh()||this.visible.width>0&&this.visible.height>0))return void(this.#Ai&&this.#$i(0));this.#Ai||1>this.Ht||this.#$i(1),this.V.Sh(),this.#Ei&&this.Ht!==this.zh&&(this.#Fi(),t=1);const i=(this.is360?this.V.Bi:this.X.Bi)*this.el.scale,s=this.main;for(let h=0;h<this.images.length;h++){const e=this.images[h];e.rh()?(h>0&&!e.qs&&s.Uh(e,e.qs=1),e.Ot&&e.Js&&(t=1),e.ah(this.#Li||1>this.Ht)&&(t=1),e.opacity>0&&(s.Zh+=e.fh(i))):e.qs&&s.Uh(e,e.qs=0)}s.qh+=this.mh.length,s.Jh=0===s.qh?1:s.Zh/s.qh;for(let h=0;h<this.#vi.length;h++)this.#vi[h].Wh();t&&(s.Kh=1)}Qh(){if(0===this.zh&&0===this.Ht)return;const t=this.main,i=t.micrio.qt,s=this.el,h=this.view,e=this.xt.Ei();if(i.gl.viewport(this.el.left,t.el.height-s.height-s.top,s.width,s.height),i.gl.uniformMatrix4fv(i.te,0,this.V.Ds.arr),this.#zi)for(let o=0;o<this.images.length;o++){const t=this.images[o];t.x1>h.x0&&t.x0<h.x1&&t.y1>h.y0&&t.y0<h.y1&&(this.#Vi(t.Zs-1),i.ie(void 0,t.Ks))}const n=this.#wi;for(let o=0;o<this.mh.length;o++){const i=this.mh[o];this.#Vi(i);const s=n.layer===n.image.Ws-1||!t.se&&n.layer===n.image.Ws,h=i===n.image.Zs-1,r=t.he(i);(s||1===r||h)&&t.ie(n.image.Os,i,n.layer,n.x,n.y,r*this.#Ci*n.image.opacity,e,n.layer===n.image.Ws-1)&&h&&(n.image.Us=t.now,this.#Ei||this.jh())}this.#Ti&&(this.#vi.sort((t,i)=>t.zIndex>i.zIndex?1:t.zIndex<i.zIndex?-1:0),this.#Ti=0);for(let o=0;o<this.#vi.length;o++)this.#vi[o].Qh();h.li&&this.Lh?.camera?.bt(),h.li=0}#Bi(t){const i=this.main.el,s=this.Ms,h=s?this.parent.fs():1/i.ratio,e=s?this.parent.width:i.width,n=s?this.parent.height:i.height,o=s?this.parent.view:this.#bi,r=this.view,a=this.#_i,c=this.#Mi,l=this.#yi,u=this.Yh();if(u){const t=1/this.main.ee/this.main.uh;this.#ki=Math.min(1,this.#ki+t);const i=this.main.ne.get(this.#ki),s=c.ei+(l.ei-c.ei)*i,h=c.ni+(l.ni-c.ni)*i,e=c.width+(l.width-c.width)*i,n=c.height+(l.height-c.height)*i;a.set(s,h,e,n),1===this.#ki&&(1===this.zIndex&&(this.zIndex=0),c.fi(l)),this.view.li=1}let d=Math.max(r.x0,r.x0+(o.x0-a.x0)/a.width*r.width),f=Math.min(r.x1,r.x0+(1-(a.x1-Math.min(a.x1,o.x1))/a.width)*r.width);this.is360||(d=Math.max(0,d),f=Math.min(1,f));let p=Math.max(Math.max(0,r.y0),r.y0+(o.y0-a.y0)/a.height*r.height),m=Math.min(Math.min(1,r.y1),r.y0+(1-(a.y1-Math.min(a.y1,o.y1))/a.height)*r.height);p=Math.max(p,0),m=Math.min(m,1);const g=(d+f)/2,w=(p+m)/2,v=f-d,M=m-p;this.visible.set(g,w,v,M);const _=s?1:i.ratio;return this.zh>=this.Ht&&this.el.set(a.width*h*e,a.height*h*n,(a.x0-o.x0)*e*h,(a.y0-o.y0)*n*h,_,s?1:i.scale,s?0:i.bi)&&(t||this.oe(),this.view.li=1,this.Ch(),this.is360||(this.X.Ps(),this.X.zs())),u}gt(t,i,s,h,e,n){this.#xi=0,e?(this.#Mi.gt(t,i,s,h),this.#_i.gt(t,i,s,h)):(this.#Mi.fi(this.#_i),this.#ki=0,0===this.zIndex&&(this.zIndex=1),this.xt.pi=0),this.#yi.gt(t,i,s,h),this.#Bi(n),this.oe()}#Vi(t){const i=this.#wi;if(this.#Ri(t),this.is360)0===i.image.ft?this.V.Eh(i.x0,i.y0,i.x1-i.x0,i.y1-i.y0):i.image._h(i);else{const t=this.main.yh,s=this.aspect;t[0]=t[3]=t[9]=(i.x0-.5)*s,t[1]=t[7]=t[16]=.5-i.y0,t[4]=t[10]=t[13]=.5-i.y1,t[6]=t[12]=t[15]=(i.x1-.5)*s,t[2]=t[5]=t[8]=t[11]=t[14]=t[17]=0}}oe(){const t=this.main.el;this.Lh?.Xt?.set([this.el.left/t.ratio,this.el.top/t.ratio,this.el.width/t.ratio,this.el.height/t.ratio])}#Ri(t){let i=0;for(;i<this.images.length-1&&t>=this.images[i].Zs;)i++;const s=this.images[i];let h=0;for(;h<s.Ys.length-1&&t>=s.Ys[h].Vs;)h++;const e=s.Ys[h];return e.Hs(t,this.#wi),[i,e.Os]}re(t){if(this.is360)return 0;const i=this.#wi,s=this.view,[h,e]=this.#Ri(t);return e>this.images[h].Ws?!!(i.x1>s.x0&&i.x0<s.x1&&i.y1>s.y0&&i.y0<s.y1):0}Ch(){if(this.#vi.length){const t=this.main.el;this.width=t.width,this.height=t.height,this.zi=Math.sqrt(t.width*t.width+t.height*t.height)}this.Ms||(this.is360?this.V.Ch():(this.X.Ps(),this.X.zs()))}ae(){if(this.es.stop(),this.xt.stop(),this.images.length>0){const t=this.images[0];t.Us=0,t.opacity=0}}ce(){this.#$i(0),this.main.ce(this)}Jt(t){this.layer=t,this.Hi(this.$i),this.view.li=1}Hi(t,i=0){const s=this.layer*(this.images.length/this.Fi);for(let h=0;h<this.images.length;h++){const e=this.images[h],n=h-s-t;0!==n?e.Ks=0>n||n>i?0:1:(e.Ks=1,this.$i=t,this.view.li=1)}this.X.et()}O(t,i,s,h,e,n,o=0,r=0){const a=this.main.el;a.yi>0&&(h+=h/(1-a.yi/a.height),this.xt.pi=0,a.yi=0),a._i>0&&(s+=s*(a._i/a.width),this.xt.pi=0,a._i=0),e&&(this.xt.pi=0),this.view.set(t,i,s,h),r&&!e&&this.view.pi(0,0,this.vs),n||this.xt.Si.fi(this.view),this.width>0&&(this.is360?(this.V.O(t,i,s,h,{noLimit:e,correctNorth:o}),this.view.set(t,i,s,h)):this.X.Ts()&&this.X.zs())}fs(){return this.is360?this.V.Bi:this.X.Bi}q(){const t=this.V;return this.is360?t.Oi<=t.Ri:this.X.q()}J(t=0){const i=this.V;return this.is360?i.Oi>=i.Vi:this.X.J(t)}et(t){this.X.et(t)}U(t){const i=this.X;i.W=t,i.et(),i.Ts(),this.V.Th()}it(t,i,s=0){isNaN(i)&&(i=this.V.tt),this.V.it(t,i,s?this.V.xh:0)}lt(t,i,s,h,e,n,o,r,a=1,c=1,l=0){const u=2e4/this.width;return this.V.lt(t,i,s*u,h,e,n,o,r,a,c,l).arr}rt(){this.#xi=1,this.xt.pause()}ct(){this.#xi=0,this.xt.resume()}ot(){this.xt.stop();for(let t=0;t<this.#vi.length;t++)this.#vi[t].ot()}T(){const t=this.Lh?.camera;if(t){for(t.T&&t.T();t.A.length;)t.A.shift()?.();t.S=t.T=void 0}}S(){const t=this.Lh?.camera;t&&(t.S&&t.S(),t.A.length=0,t.S=t.T=void 0)}},ei=class t{ready=0;el=new Yt;yh=new Float32Array(18);Ih=new Float32Array(4608);Dh=[];Oh=0;Fh=0;now=0;Kh=0;Jh=0;qh=0;Zh=0;Hh=.25;ee=.5;ne=dt;Nh=.5;dh=.5;xi=1;le=0;th=0;ih=0;Qs=4;wh=0;se=0;Ss=0;Is=0;Xh=0;Vh=0;Rh=0;uh=1/60;#Ni=[];#Hi=0;#Xi=new Set;#Gi=new Set;#ji=new Set;#Yi=new Set;#Wi=new Map;#Ui=new Map;#Zi;#qi=[];#Ji=new Map;#Ki=new Map;ue=0;static de=t.#Qi(1,1);static fe;#ts=0;#is=0;#ss=null;#hs=new Map;Yt(t){return this.#hs.get(t)?.canvas}#es(t){this.#hs.set(t.micrioImage,t)}micrio;constructor(t){this.micrio=t,this.#Zi=Et.iOS?5:X(this.micrio.canvas.isMobile)?30:90,this.render=this.render.bind(this),this.#qi.push(t.current.subscribe(this.#ns.bind(this)))}static#Qi(t,i){const s=new Float32Array(12*t*i),h=1/t,e=1/i;for(let n=0,o=0;i>o;o++)for(let i=0;t>i;i++,n+=12)s[n+3]=s[n+7]=s[n+9]=(s[n+1]=s[n+5]=s[n+11]=o*e)+e,s[n+4]=s[n+8]=s[n+10]=(s[n+0]=s[n+2]=s[n+6]=i*h)+h;return s}pe(){this.ready||(t.fe=t.#Qi(16,16),this.ready=1,this.#qi.push(this.micrio.barebone.subscribe(t=>{this.se=t,this.#Hi=t})))}ie=(t,i,s,h,e,n,o,r)=>{this.#Gi.add(i);const a=this.#os(i);a.me=void 0;const c=Nt(),l=this.#Ni[t],u="camera"in l,d=u&&l.Ot,f=u&&l.F,p=u?l:l.image,m="ge"in l?l.ge:void 0,g=u&&l.$settings.noSmoothing;if(0===a.we&&Lt>c){if(this.#Hi?c>2&&o:r&&o&&c>0)return 0;if(d&&!f)a.we=2,a.ve=this.micrio.qt.Me();else{a.we=1;const t=p.Ut(s,h,e,m);if(!t)return a.we=0,0;this.Me(i,t,o,{noSmoothing:g})}}else if(a.we>=2){if(this.#is||this.#rs(),a.ve){if(d){if(!p.Dt||!p.Dt.dataset.playing)return 0;this.micrio.qt._e(a.ve,p.Dt)}this.micrio.qt.ie(a.ve,n,f)}return 2===a.we&&(a.we=3,a.ye=this.now),1}return 0};he=t=>this.#Wi.get(t)?.Ht||0;ph=(t,i=0,s=1)=>{const h=this.#Wi.get(t);return h?(1>h.Ht&&(h.Ht=i?1:h.ye&&h.ye>0?Math.min(1,(this.now-h.ye)/250)*s:0),h.Ht):0};Uh=(t,i)=>{const s=this.#Ji.get(t);s&&"visible"in s&&s.visible.set(i)};be(){for(this.#as();this.#qi.length;)this.#qi.pop()?.();this.#Ui.forEach(t=>Ht(t)),this.#Ui.clear();for(const[t,i]of this.#Wi.entries())i.ke&&clearTimeout(i.ke),this.#cs(t);this.#Wi.clear(),this.#ls()}#us(t){if(this.le)return;const i=t.$info;if(!i)return;if(t.error)return void this.micrio.xe.set(0);if(!(t.Rt||i.width&&i.height))throw new Error("Invalid Micrio image size");const s=t.$settings;this.#ts=!!this.micrio.gallery||t.Bt,s.gallery?.archive&&(this.th=1,this.ih=s.gallery.archiveLayerOffset??0),i.version&&3.1>=parseFloat(i.version)&&(this.Qs=8),i.is360&&(s.limitToCoverScale=0);const h=!!s.limitToCoverScale,e=h||"cover"==s.initType;t.Rt&&this.micrio.xe.set(0);const n=[.5,.5],o=s.focus,r=!!i.spacesId;o&&(isNaN(o[0])||null===o[0]||(n[0]=o[0]),isNaN(o[1])||null===o[1]||(n[1]=o[1]));const a=s._360?.video,c=i.is360&&a&&(a.src||"video"in a&&a.video),l=!!this.#ts&&"switch"==s.gallery?.type,u=Math.max(1,s.omni?.layers?.length??1);s.omni&&(s.omni.layerStartIndex=Math.min(u-1,s.omni?.layerStartIndex??0));const d=new hi(this,i.width,i.height,t.Ht,h,i.tileSize??1024,i.is360??0,t.Rt,!!i.isDeepZoom,s.freeMove??0,e,s.zoomLimit||1,0!=s.zoomLimitDPRFix?this.micrio.canvas.getRatio(t.$settings):1,s.camspeed??1,t.camera.rotationY,l,!!s.gallery?.isSpreads&&"swipe"==s.gallery.type,t.Bt,s.pinchZoomOutLimit??0,u,!(!i.isSingle&&!c),s.omni?.layerStartIndex??0,0);t.ut=1,d.Lh=t,this.#es({canvas:d,micrioImage:t,camera:t.camera}),this.#Ni.push(t),this.#ds(t),t.opts.area&&t.camera.setArea(t.opts.area,{direct:1,noDispatch:1,noRender:1}),s?.restrict&&t.camera.setLimit(s.restrict),s?.crossfadeDuration&&(this.Hh=s.crossfadeDuration),s?.embedFadeDuration&&(this.dh=s.embedFadeDuration),void 0!==s?.dragElasticity&&(this.xi=s.dragElasticity),s?.skipBaseLevels&&(this.wh=s.skipBaseLevels),s?.omni&&(d.bs=-(s.omni.distance??0),d.ys=s.omni.fieldOfView??0,d.xs=s.omni.verticalAngle??0,d.ks=s.omni.offsetX??0,t.state.view.set([0,0,1,1])),this.micrio.hasAttribute("data-limited")&&t.canvas&&(t.canvas.gh=1),d.oe(),this.Oh>0&&this.#fs(this.Oh-1);const f=X(t.state.view)||s.view;let p;!f||0==f[0]&&0==f[1]&&1==f[2]&&1==f[3]?!r&&i.is360||!n||"0.5,0.5"==n.toString()||(d.camera.setCoo(n[0],n[1],0),s.focus=void 0):d.O(f[0]+f[2]/2,f[1]+f[3]/2,f[2],f[3],0,0,0,0),this.#qi.push(t.video.subscribe(t=>{p&&p.removeEventListener("play",this.render),p=t??void 0,p&&p.addEventListener("play",this.render)})),t.Rt&&t.visible.set(1),this.#ns(t)}#ds(t){const i=this.#hs.get(t).canvas;t.camera.$(i)}#ns(t){if(t&&(!t.ut||t!==this.#ss?.micrioImage)&&!this.le)if(t.ut){if(t!==this.#ss?.micrioImage){const i=this.#hs.get(t);if(!i)return;if(i.canvas.Ms)return;const s=t.F&&this.#ss?this.#ss.canvas.V.tt:0;if(this.#ss=i,t.F&&!this.ue){const h=(this.Xh+.5)%1*Math.PI*2;i.canvas.it(h-t.camera.rotationY,s,1)}0===i.canvas.zh&&i.canvas.jh(),t.$settings.omni?.layerStartIndex&&t.state.layer.set(t.$settings.omni.layerStartIndex),this.ue=0,this.ready=1,this.render()}}else{if(!X(this.micrio.current)||!t.$info.isIIIF&&t.$info.id!=X(this.micrio.current).id)return;this.#us(t),t.Gt.length&&t.Gt.forEach(i=>this.ti(i,t))}}Pe(t){t.ut||this.#us(t)}Te(t){if(!t.ut)throw new Error("Canvas is not placed yet");const i=this.#hs.get(t);i&&(i.canvas.ce(),this.#hs.delete(t),this.render())}render(){this.le||Q.request(this.#ps)}#ps=(t=performance.now())=>{if(this.micrio.isConnected&&this.micrio.$current&&!this.le){this.#is=0,(this.Wh(t)||this.micrio.Se||this.micrio.events.isNavigating||0==this.micrio.$current?.Dt?.paused)&&this.render(),this.#ts&&this.#rs(),this.#Gi.clear();for(let t=0;t<this.Dh.length;t++)this.Dh[t].Qh();this.micrio.events.Et("draw"),this.#ms(),this.micrio.qt.Ae()}};Wh(t){this.uh=1e3/Math.min(33,t-this.now),this.now=t,this.Zh=0,this.qh=0,this.Kh=0;for(let i=0;i<this.Dh.length;i++)this.Dh[i].Wh();return this.Kh||1>this.Jh}#as(){Q.cancel(this.#ps)}#os(t){let i=this.#Wi.get(t);return i||(i={we:0,Ht:0},this.#Wi.set(t,i)),i}#fs(t){this.#os(t).Ht=1,this.#Xi.add(t)}#rs(){this.#is||(this.micrio.qt.Ce(),this.#is=1)}Me(t,i,s,h={}){if(this.#Wi.get(t)?.ve||this.#Ui.has(t)||!h.force&&Nt()>=Lt)return;const e=At.db.has(i);e||this.micrio.xe.set(1),this.#Ui.set(t,i),(e?At.si(i):(t=>new Promise((i,s)=>{(()=>{if(!$t){$t=1;for(let t=0;Lt>t;t++){const i=new Worker(It);i.onmessage=i=>Rt(t,i.data.data,i.data.error,i.data.type),Ft.push(i)}URL.revokeObjectURL(It)}})(),Ot.push([t,i,s]),Vt()}))(i)).then(i=>this.#gs(t,i,s,h.noSmoothing)).catch(()=>this.#ws(t))}#gs(t,i,s,h){const e=this.#os(t);e.ve=this.micrio.qt.Me(i,e.ve,h),void 0!==self.ImageBitmap&&i instanceof ImageBitmap&&i.close instanceof Function&&i.close(),e.we=2,e.ke=setTimeout(()=>{this.#ws(t)},s?150:50)}#ws(t){this.#Ui.delete(t);const i=this.#Wi.get(t);i?.ke&&(clearTimeout(i.ke),i.ke=void 0),this.#Ui.size||this.micrio.xe.set(0)}#cs(t){const i=this.#Wi.get(t);i&&(i.ve&&(this.micrio.qt.gl.deleteTexture(i.ve),i.ve=void 0),i.ke&&clearTimeout(i.ke),this.#Wi.delete(t))}#vs(t){for(let i=0;i<this.Dh.length;i++)if(this.Dh[i].re(t))return 1;return 0}#ms(){const t=performance.now();for(const s of this.#ji){if(this.#Gi.has(s))continue;if(this.#Xi.has(s))continue;const i=this.#Wi.get(s);if(i&&0!==i.we)switch(i.Ht=0,i.we){case 1:const h=this.#Ui.get(s);h&&Ht(h),i.we=0;break;case 2:this.#Ui.has(s)&&this.#ws(s),this.#cs(s);break;case 3:i.me||(i.me=t)}}const i=this.#ji;this.#ji=this.#Yi,this.#Yi=i,this.#Yi.clear();for(const s of this.#Gi)this.#ji.add(s);for(const[s,h]of this.#Wi.entries())h.me&&(t-h.me)/1e3>this.#Zi&&(this.#vs(s)?h.me=t:this.#cs(s))}Ch(t){this.el.set(t.width,t.height,t.left,t.top,t.ratio,t.scale,t.portrait);for(let i=0;i<this.Dh.length;i++)this.Dh[i].Ch();this.ready&&(this.#as(),this.#ps())}#Ms=(t,i,s=0,h=1,e)=>{this.le||(this.#Ni.push(t),this.#_s(t,i,s,h,e))};#_s=(t,i,s,h,e)=>{const n="$info"in t?t.$info:i.$info;if(!n)return;const o=t.opts.area??[0,0,1,1],r=t instanceof St?t.$settings._360??{}:{},a=this.#hs.get(i);if(!a)return;let c;if(s){const i=a.canvas.$h(o[0],o[1],o[0]+o[2],o[1]+o[3],n.width,n.height,n.tileSize??1024,n.isSingle??0,n.isDeepZoom??0,n.isVideo??0,h,r.rotX??0,r.rotY??0,r.rotZ??0,r.scale??1,e??0);return this.#Ji.set(i,t),this.#Ki.set(t,i),t.ut=1,this.#es({canvas:a.canvas,micrioImage:t}),t.$t=this.Oh-1,void this.#fs(t.$t)}{if(!(t instanceof St))return;let s={};s=t.$settings.gallery?.archive||t.$settings.gallery?.type?{coverLimit:0,coverStart:0}:{coverLimit:!!t.$settings?.limitToCoverScale||!!i.$settings?.limitToCoverScale,coverStart:!(!t.$settings?.limitToCoverScale&&"cover"!=t.$settings?.initType&&"cover"!=i.$settings?.initType)},c=a.canvas.Bh(o[0],o[1],o[0]+o[2],o[1]+o[3],n.width,n.height,s),c.Lh=t}if(t.ut=1,this.#es({canvas:c,micrioImage:t,camera:t.camera}),!s){this.#ds(t);const i=t.$settings.focus;i?c.camera.setCoo(i[0],i[1],0):c.Ms&&c.O(c.view.ei,c.view.ni,c.view.width,c.view.height,0,0),c.oe()}t.$t=this.Oh-1,this.#fs(t.$t)};ti(t,i,s={}){this.le||t.ut||this.#Ms(t,i,1,s.opacity??1,"camera"in t&&s.asImage?void 0:s.fromScale)}Bh=(t,i)=>this.#Ms(t,i);Ee(t,i,s=0){const h=this.#hs.get(t),e=h?.canvas;if(e){if(h.camera)e.zh=i;else{const t=e.images;for(let h=0;h<t.length;h++){const e=t[h];e.ft>0&&(e.Ks=i,s&&(e.opacity=i))}}this.render()}}Ie(t,i){const s=this.#Ki.get(t);s&&(s.Js=i)}#ls(){for(let t=0;t<this.Dh.length;t++)this.Dh[t].ae()}ce(t){for(let i=0;i<this.Dh.length;i++)if(this.Dh[i]===t)return void this.Dh.splice(i,1)}},ni=new Float32Array([-1,-1,0,0,1,-1,1,0,-1,1,0,1,1,1,1,1]),oi=class{Le;#ys;#bs;#ks;#xs;#Ps;#Ts;#Ss;constructor(t,i,s){this.#Ss=t;const h=t.createProgram();if(!h)throw new y("Failed to create postprocess program",{code:l});this.#ks=h,i.qt.ze(this.#ks,t.VERTEX_SHADER,"attribute vec2 a_position;attribute vec2 a_texCoord;varying vec2 v_texCoord;void main(){v_texCoord=a_texCoord;gl_Position=vec4(a_position,0.0,1.0);}"),i.qt.ze(this.#ks,t.FRAGMENT_SHADER,s),t.linkProgram(this.#ks),t.getProgramParameter(this.#ks,t.LINK_STATUS)||console.error("Postprocess shader link error:",t.getProgramInfoLog(this.#ks)),t.useProgram(this.#ks),this.#xs=t.getAttribLocation(this.#ks,"a_position"),this.#Ps=t.getAttribLocation(this.#ks,"a_texCoord"),this.#Ts=t.getUniformLocation(this.#ks,"u_time");const e=t.createTexture();if(!e)throw new y("Failed to create postprocess texture",{code:l});this.#ys=e,t.bindTexture(t.TEXTURE_2D,this.#ys),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,this.#Ss.drawingBufferWidth,this.#Ss.drawingBufferHeight,0,t.RGBA,t.UNSIGNED_BYTE,null),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE);const n=t.createFramebuffer();if(!n)throw new y("Failed to create postprocess framebuffer",{code:l});if(this.Le=n,t.bindFramebuffer(t.FRAMEBUFFER,this.Le),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,this.#ys,0),t.checkFramebufferStatus(t.FRAMEBUFFER)!==t.FRAMEBUFFER_COMPLETE)throw new Error("Framebuffer not complete");t.bindFramebuffer(t.FRAMEBUFFER,null);const o=t.createBuffer();if(!o)throw new y("Failed to create postprocess buffer",{code:l});this.#bs=o,t.bindBuffer(t.ARRAY_BUFFER,this.#bs),t.bufferData(t.ARRAY_BUFFER,ni,t.STATIC_DRAW)}De(){const t=this.#Ss;t.bindFramebuffer(t.FRAMEBUFFER,null),t.useProgram(this.#ks),t.bindBuffer(t.ARRAY_BUFFER,this.#bs),t.enableVertexAttribArray(this.#xs),t.vertexAttribPointer(this.#xs,2,t.FLOAT,0,4*Float32Array.BYTES_PER_ELEMENT,0),t.enableVertexAttribArray(this.#Ps),t.vertexAttribPointer(this.#Ps,2,t.FLOAT,0,4*Float32Array.BYTES_PER_ELEMENT,2*Float32Array.BYTES_PER_ELEMENT),t.activeTexture(t.TEXTURE0),t.bindTexture(t.TEXTURE_2D,this.#ys),t.uniform1f(this.#Ts,performance.now()/1e3),t.drawArrays(t.TRIANGLE_STRIP,0,4)}Ch(){const t=this.#Ss;t.bindTexture(t.TEXTURE_2D,this.#ys),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,this.#Ss.drawingBufferWidth,this.#Ss.drawingBufferHeight,0,t.RGBA,t.UNSIGNED_BYTE,null),t.bindTexture(t.TEXTURE_2D,null)}Fe(){const t=this.#Ss;t.deleteFramebuffer(this.Le),t.deleteTexture(this.#ys),t.deleteBuffer(this.#bs),t.deleteProgram(this.#ks)}},ri=256,ai=class{gl;$e=self;#ks;#As;#Cs;te;#Es=-1;#Is;#Ls;#zs;#Ds=null;#Fs=null;#$s=new Float32Array([-1,-1,0,1,-1,0,-1,1,0,-1,1,0,1,-1,0,1,1,0]);#Os=new Float32Array([0,0,0,0,0,0,0,0,0,0,0,0]);#Bs=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]);#Vs=.075;#Rs=-1;#Ns=0;#Hs=-1;#Xs=-1;Oe;#Gs;constructor(t){this.#Gs=t,Q.P(this.$e)}Be(){const t="WebGL2RenderingContext"in window,i=this.#Gs.canvas.element.getContext(t?"webgl2":"webgl",{alpha:1,preserveDrawingBuffer:this.#Gs.hasAttribute("data-preserve-drawing-buffer"),stencil:0,antialias:0,depth:0,desynchronized:0});if(t?!(i instanceof window.WebGL2RenderingContext):!(i instanceof window.WebGLRenderingContext))throw new y("WebGL context creation failed",{code:r});this.gl=i;const s=this.#Gs.$current?.$settings.postProcessingFragmentShader;s&&(this.Oe=new oi(i,this.#Gs,s),this.#Gs.Se=1);const h=i.createProgram();if(!(h instanceof WebGLProgram))throw new y("Failed to create WebGL program",{code:c});if(this.#ks=h,this.ze(this.#ks,i.VERTEX_SHADER,"uniform mat4 GLMatrix;attribute vec3 pos;attribute vec2 aTextureCoord;varying highp vec2 vTextureCoord;void main(){gl_Position=GLMatrix*vec4(pos,1.0);vTextureCoord=aTextureCoord;}"),this.ze(this.#ks,i.FRAGMENT_SHADER,"precision mediump float;varying highp vec2 vTextureCoord;uniform sampler2D uSampler;uniform float opacity;uniform int noTexture;void main(){if(noTexture==1){gl_FragColor=vec4(.1,.1,.1,.1);}else{gl_FragColor=texture2D(uSampler,vTextureCoord)*opacity;}}"),i.linkProgram(this.#ks),!i.getProgramParameter(this.#ks,i.LINK_STATUS))throw new y("Shader link error: "+i.getProgramInfoLog(this.#ks),{code:c});i.useProgram(this.#ks),i.blendFunc(i.ONE,i.ONE_MINUS_SRC_ALPHA),i.enable(i.BLEND),i.disable(i.DEPTH_TEST),i.clearColor(0,0,0,0);const e=i.getUniformLocation(this.#ks,"opacity");if(!e)throw new y("Failed to bind WebGL opacity uniform",{code:c});this.#As=e;const n=i.getUniformLocation(this.#ks,"GLMatrix");if(!n)throw new y("Failed to bind WebGL matrix uniform",{code:c});this.te=n;const o=i.getUniformLocation(this.#ks,"noTexture");if(!o)throw new y("Failed to bind WebGL texture uniform",{code:c});this.#Cs=o,this.#Es=i.getAttribLocation(this.#ks,"aTextureCoord");const a=i.createBuffer();if(!a)throw new y("Failed to create WebGL texture buffer",{code:l});this.#Is=a,i.bindBuffer(i.ARRAY_BUFFER,this.#Is),i.bufferData(i.ARRAY_BUFFER,ei.de,i.STATIC_DRAW);const u=i.createBuffer();if(!u)throw new y("Failed to create WebGL watermark buffer",{code:l});this.#zs=u;const d=i.createBuffer();if(!d)throw new y("Failed to create WebGL geometry buffer",{code:l});this.#Ls=d,this.#Rs=i.getAttribLocation(this.#ks,"pos"),this.#js(),i.activeTexture(i.TEXTURE0),i.viewport(0,0,this.gl.drawingBufferWidth,this.gl.drawingBufferHeight)}#js(){const t=this.gl;t.bindBuffer(t.ARRAY_BUFFER,this.#Ls),t.bufferData(t.ARRAY_BUFFER,this.#Gs.Ve.Ih.byteLength,t.DYNAMIC_DRAW),t.enableVertexAttribArray(this.#Es),t.bindBuffer(t.ARRAY_BUFFER,this.#Is),t.vertexAttribPointer(this.#Es,2,t.FLOAT,0,0,0),t.enableVertexAttribArray(this.#Rs),t.bindBuffer(t.ARRAY_BUFFER,this.#Ls),t.vertexAttribPointer(this.#Rs,3,t.FLOAT,0,0,0)}Fe(t=0){const i=this.gl;if(i){if(i.bindBuffer(i.ARRAY_BUFFER,null),i.bindTexture(i.TEXTURE_2D,null),i.deleteBuffer(this.#Is),i.deleteBuffer(this.#Ls),i.deleteBuffer(this.#zs),i.deleteProgram(this.#ks),this.Oe?.Fe(),this.#Ds&&i.deleteTexture(this.#Ds),t){const t=i.getExtension("WEBGL_lose_context");t instanceof Object&&t.loseContext instanceof Function&&t.loseContext()}this.gl=null}}ze(t,i,s){const h=this.gl.createShader(i);if(!h)throw new Error(`Could not create WebGL shader (type: ${i})`);if(this.gl.shaderSource(h,s),this.gl.compileShader(h),!this.gl.getShaderParameter(h,this.gl.COMPILE_STATUS))throw this.gl.deleteProgram(t),new y("Shader compilation failed: "+this.gl.getShaderInfoLog(h),{code:c});this.gl.attachShader(t,h),this.gl.deleteShader(h)}Me(t,i,s){const h=this.gl,e=i??h.createTexture();if(!e)throw new Error("Could not create WebGL texture");return h.bindTexture(h.TEXTURE_2D,e),t&&h.texImage2D(h.TEXTURE_2D,0,h.RGBA,h.RGBA,h.UNSIGNED_BYTE,t),h.texParameteri(h.TEXTURE_2D,h.TEXTURE_WRAP_S,h.CLAMP_TO_EDGE),h.texParameteri(h.TEXTURE_2D,h.TEXTURE_WRAP_T,h.CLAMP_TO_EDGE),h.texParameteri(h.TEXTURE_2D,h.TEXTURE_MIN_FILTER,h.LINEAR),h.texParameteri(h.TEXTURE_2D,h.TEXTURE_MAG_FILTER,s?h.NEAREST:h.LINEAR),e}_e(t,i){const s=this.gl;s.bindTexture(s.TEXTURE_2D,t),s.texImage2D(s.TEXTURE_2D,0,s.RGBA,s.RGBA,s.UNSIGNED_BYTE,i),s.bindTexture(s.TEXTURE_2D,null)}Ce(){const t=this.gl;this.Oe&&t.bindFramebuffer(t.FRAMEBUFFER,this.Oe.Le),this.gl.clear(this.gl.COLOR_BUFFER_BIT)}Ae(){this.Oe&&(this.Oe.De(),this.gl.useProgram(this.#ks),this.#js()),this.#Ds&&this.#Ys()}ie(t,i=1,s=0){const h=this.gl,e=t?0:1;e!==this.#Hs&&(h.uniform1i(this.#Cs,e),this.#Hs=e),i!==this.#Xs&&(h.uniform1f(this.#As,i),this.#Xs=i),t&&h.bindTexture(h.TEXTURE_2D,t);const n=s?1536:6;s!=this.#Ns&&(h.bindBuffer(h.ARRAY_BUFFER,this.#Is),h.bufferData(h.ARRAY_BUFFER,s?ei.fe:ei.de,h.STATIC_DRAW),h.bindBuffer(h.ARRAY_BUFFER,this.#Ls),this.#Ns=s),h.bufferSubData(h.ARRAY_BUFFER,0,s?this.#Gs.Ve.Ih:this.#Gs.Ve.yh),h.drawArrays(h.TRIANGLES,0,n)}Zt(t,i){if(!this.gl)return;if(t===this.#Fs)return;this.#Fs=t;const s=new Image;i&&(this.#Vs=i),s.crossOrigin="anonymous",s.src=t,s.onload=()=>{const t=Mt("canvas",{props:{width:ri,height:ri}}),i=t.getContext("2d");if(!i)return;const h=Math.min(96/s.width,64/s.height),e=s.width*h,n=s.height*h;i.drawImage(s,(ri-e)/2,(ri-n)/2,e,n),this.#Ds&&this.gl.deleteTexture(this.#Ds),this.#Ds=this.Me(t);const o=this.gl;o.bindTexture(o.TEXTURE_2D,this.#Ds),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_S,o.REPEAT),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_T,o.REPEAT),o.bindTexture(o.TEXTURE_2D,null),this.#Gs.Ve.render()}}#Ys(){const t=this.gl;if(!this.#Ds)return;t.useProgram(this.#ks),t.blendFunc(t.SRC_ALPHA,t.ONE_MINUS_SRC_ALPHA),t.uniformMatrix4fv(this.te,0,this.#Bs),t.activeTexture(t.TEXTURE0),t.bindTexture(t.TEXTURE_2D,this.#Ds),t.uniform1i(this.#Cs,0),t.uniform1f(this.#As,this.#Vs),this.#Hs=0,this.#Xs=this.#Vs;const i=t.drawingBufferWidth/ri,s=t.drawingBufferHeight/ri,h=this.#Os;h[1]=s,h[2]=i,h[3]=s,h[8]=i,h[9]=s,h[10]=i,t.bindBuffer(t.ARRAY_BUFFER,this.#Ls),t.bufferData(t.ARRAY_BUFFER,this.#$s,t.DYNAMIC_DRAW),t.vertexAttribPointer(this.#Rs,3,t.FLOAT,0,0,0),t.bindBuffer(t.ARRAY_BUFFER,this.#zs),t.bufferData(t.ARRAY_BUFFER,this.#Os,t.DYNAMIC_DRAW),t.vertexAttribPointer(this.#Es,2,t.FLOAT,0,0,0),t.drawArrays(t.TRIANGLES,0,6),t.blendFunc(t.ONE,t.ONE_MINUS_SRC_ALPHA),this.#js(),this.#Ns=0}},ci=class{element=Mt("canvas");#Ws;viewport={width:0,height:0,left:0,top:0,ratio:0,scale:0,portrait:0};isMobile=H(0);get $isMobile(){return X(this.isMobile)}#Gs;constructor(t){this.#Gs=t,this.element.className="micrio",this.onresize=this.onresize.bind(this),self.ResizeObserver&&(this.#Ws=new self.ResizeObserver(this.onresize))}place(){if(this.element.parentNode)return;const t=this.#Gs.querySelector("img.preview");this.#Gs.insertBefore(this.element,t?t.nextSibling:this.#Gs.firstChild)}hook(){this.onresize(),this.#Ws?this.#Ws.observe(this.element):window.addEventListener("resize",this.onresize)}unhook(){this.#Ws?this.#Ws.unobserve(this.element):window.removeEventListener("resize",this.onresize)}onresize(){const t=this.element.getBoundingClientRect();let i=t.width,s=t.height;if(!i||!s)return;const h=self.getComputedStyle(this.element),e=parseFloat(h.width);isNaN(e)||(s=parseFloat(h.height)*i/Math.max(1,e));const n=this.#Gs.offsetWidth,o=this.#Gs.hasAttribute("data-static")||!n?1:Math.floor(i)/n;i/=o,s/=o;const r=1!=o?1:this.getRatio(),a=this.viewport;if(a.width==i&&a.height==s&&a.ratio==r&&a.scale==o)return;a.width=i,a.height=s,a.ratio=r,a.scale=o,a.top=t.top,a.left=t.left,a.portrait=window.matchMedia("(orientation: portrait)")?.matches??s>i,this.#Gs.qt.gl&&(this.element.width=i*r,this.element.height=s*r,this.#Gs.qt.gl.viewport(0,0,a.width*a.ratio,a.height*a.ratio),this.#Gs.qt.Oe?.Ch(),this.#Gs.Ve.Ch(a)),this.#Gs.events.Et("resize",t);const c=/mobile/i.test(navigator.userAgent);c!==this.$isMobile&&this.isMobile.set(c)}getRatio=(t=this.#Gs.$current?.$settings??{})=>!Et.iOS&&!t?.noRetina&&self.devicePixelRatio&&Math.max(1,Math.min(2,self.devicePixelRatio))||1;setMargins(t,i){this.#Gs.Ve.ready&&(this.#Gs.Ve.el._i=t,this.#Gs.Ve.el.yi=i)}},li={passive:1},ui={passive:1,capture:1},di={passive:0};function fi(t){t.stopPropagation(),t.preventDefault()}var pi=class{#Us=0;#Zs;constructor(t){this.#Zs=t}hook(){this.#Us||(this.#Us=1,this.#Zs.Re.addEventListener("dragstart",fi),this.#Zs.Re.addEventListener("pointerdown",this.start,li),self.addEventListener("pointercancel",this.#qs,li),this.#Zs.Re.setAttribute("data-hooked",""))}unhook(){this.#Us&&(this.#Us=0,this.#Zs.Re.removeEventListener("pointerdown",this.start,li),this.#Zs.Re.removeEventListener("dragstart",fi),self.removeEventListener("pointercancel",this.#qs,li),this.#Zs.Re.removeAttribute("data-hooked"))}start=(t,i=0,s=0)=>{if(0!=t.button||"touch"==t.pointerType&&this.#Zs.Ne)return;if(!(i||t.target==this.#Zs.He||t.target instanceof Element&&t.target.closest("[data-scroll-through]")))return;if(this.#Zs.Re.$current?.Bt&&t.shiftKey)return;if(this.#Zs.Xe)return;if(this.#Zs.Ge)return void(t instanceof TouchEvent&&t.touches.length>1&&this.stop());const h=this.#Zs.si({x:t.clientX,y:t.clientY});h&&(this.#Zs.Ge=1,this.#Zs.Ye.je.Bs=[t.clientX,t.clientY,performance.now()],this.#Zs.Ye.je.We=h,this.#Zs.Re.addEventListener("pointermove",this.#Js,li),this.#Zs.Re.addEventListener("pointerup",this.stop,li),this.#Zs.Re.setAttribute("data-panning",""),h.canvas?.es.stop(),s||h.camera.stop(),this.#Zs.Re.Ve.render(),this.#Zs.Et("panstart"))};#Js=t=>{const i=t.clientX,s=t.clientY,h=Math.hypot(this.#Zs.Ye.je.Bs[0]-t.clientX,this.#Zs.Ye.je.Bs[1]-t.clientY);!this.#Zs.Ue&&h>10&&(this.#Zs.Ue=t.pointerId,this.#Zs.Re.setPointerCapture(t.pointerId)),this.#Zs.Ye.je.Ze&&this.#Zs.Ye.je.We?.camera.pan(this.#Zs.Ye.je.Ze[0]-i,this.#Zs.Ye.je.Ze[1]-s),this.#Zs.Ye.je.Ze=[i,s]};stop=(t,i=0,s=0)=>{if(this.#Zs.Ge){if(this.#Zs.Ge=0,this.#Zs.Ye.je.Ze=void 0,this.#Zs.Re.removeEventListener("pointermove",this.#Js,li),this.#Zs.Re.removeEventListener("pointerup",this.stop,li),this.#Zs.Ue&&this.#Zs.Re.releasePointerCapture(this.#Zs.Ue),this.#Zs.Ue=void 0,this.#Zs.Re.removeAttribute("data-panning"),t&&0==i){const i=this.#Zs.Ye.je.We??this.#Zs.si({x:t.clientX,y:t.clientY});i&&(i.canvas?.es.start(),this.#Zs.Re.Ve.render())}this.#Zs.Ye.je.We=void 0,s||this.#Zs.Et("panend",t?{duration:performance.now()-this.#Zs.Ye.je.Bs[2],movedX:t.clientX-this.#Zs.Ye.je.Bs[0],movedY:t.clientY-this.#Zs.Ye.je.Bs[1]}:void 0)}};#qs=t=>{this.#Zs.Ge&&(void 0!==this.#Zs.Ue&&t.pointerId!==this.#Zs.Ue||this.stop(void 0,1,1))}};function mi(t,i){t.Ye.hs.qe=t.Ge,i.stop(void 0,0,1),t.Xe=1,t.Re.setAttribute("data-pinching",""),t.Je=void 0,t.Ye.hs.We&&t.Ye.hs.We.canvas?.camera.cs(),t.Re.Ve.render(),t.Et("pinchstart"),t.Ne&&t.Et("panstart")}function gi(t,i,s){const h=t.Ye.hs,e=h.We;e&&(t.Je=Math.hypot(i.x-s.x,i.y-s.y)/h.Ke,e.canvas?.camera.hs(i.x,i.y,s.x,s.y))}function wi(t,i,s){if(!t.Xe)return;t.Xe=0,self.removeEventListener("touchmove",s,{passive:1,capture:1}),self.removeEventListener("pointermove",s,{passive:1,capture:1}),t.Re.removeAttribute("data-pinching");const h=t.Ye.hs.We;h&&(h.canvas?.camera.ls(),t.Re.Ve.render()),t.Ye.hs.We=void 0,t.Je=void 0,t.Et("pinchend"),t.Ne&&!t.Ye.hs.qe&&t.Et("panend")}function vi(t,i,s){if(s instanceof TouchList?1===s.length:1===s.size){let h;if(s instanceof TouchList){const i=s[0];h={button:0,target:t.He,clientX:i.clientX,clientY:i.clientY}}else{const[i,{x:e,y:n}]=s.entries().next().value;h={button:0,pointerType:"touch",target:t.He,clientX:e,clientY:n,pointerId:i}}i.start(h,1,1)}}var Mi=class{#Zs;#Ks;constructor(t,i){this.#Zs=t,this.#Ks=i}hook(){Et.iOS&&this.#Zs.Qe&&this.#Zs.Re.addEventListener("touchstart",this.start,li)}unhook(){Et.iOS&&this.#Zs.Qe&&this.#Zs.Re.removeEventListener("touchstart",this.start,li),self.removeEventListener("touchmove",this.#Js,ui),self.removeEventListener("touchend",this.stop,ui)}start=t=>{if(!(Et.hasTouch&&t instanceof TouchEvent))return;if(this.#Zs.Ne&&2>t.touches.length)return;if(this.#Zs.Xe||2!=t.touches.length)return void this.stop(t);t.stopPropagation();const i=t.touches;this.#Zs.Ye.hs.We=this.#Zs.si({x:i[0].clientX,y:i[0].clientY}),this.#Zs.Ye.hs.Ke=Math.hypot(i[0].clientX-i[1].clientX,i[0].clientY-i[1].clientY),self.addEventListener("touchmove",this.#Js,ui),self.addEventListener("touchend",this.stop,ui),mi(this.#Zs,this.#Ks)};#Js=t=>{if(!(Et.hasTouch&&t instanceof TouchEvent))return;const i=t.touches;if(2>i?.length)return;const s={x:i[0].clientX,y:i[0].clientY},h={x:i[1].clientX,y:i[1].clientY};gi(this.#Zs,s,h)};stop=t=>{wi(this.#Zs,0,this.#Js),t instanceof TouchEvent&&vi(this.#Zs,this.#Ks,t.touches)}},_i=class{#Zs;#Ks;constructor(t,i){this.#Zs=t,this.#Ks=i}hook(){this.#Zs.Re.addEventListener("pointerdown",this.start,li),self.addEventListener("pointerup",this.end,li),self.addEventListener("pointercancel",this.end,li)}unhook(){this.#Zs.Re.removeEventListener("pointerdown",this.start,li),self.removeEventListener("pointerup",this.end,li),self.removeEventListener("pointercancel",this.end,li),self.removeEventListener("pointermove",this.#Js,ui),this.#Zs.tn.clear()}start=t=>{if("touch"===t.pointerType&&t.target==this.#Zs.He&&(this.#Zs.tn.set(t.pointerId,{x:t.clientX,y:t.clientY}),2===this.#Zs.tn.size&&!this.#Zs.Xe)){const t=Array.from(this.#Zs.tn.values()),i=t[0],s=t[1];this.#Zs.Ye.hs.We=this.#Zs.si({x:i.x,y:i.y}),this.#Zs.Ye.hs.Ke=Math.hypot(i.x-s.x,i.y-s.y),self.addEventListener("pointermove",this.#Js,ui),mi(this.#Zs,this.#Ks)}};#Js=t=>{if("touch"!==t.pointerType)return;if(!this.#Zs.tn.has(t.pointerId))return;if(this.#Zs.tn.set(t.pointerId,{x:t.clientX,y:t.clientY}),!this.#Zs.Xe||2!==this.#Zs.tn.size)return;const i=Array.from(this.#Zs.tn.values()),s={x:i[0].x,y:i[0].y},h={x:i[1].x,y:i[1].y};gi(this.#Zs,s,h)};end=t=>{"touch"===t.pointerType&&(this.#Zs.tn.delete(t.pointerId),this.#Zs.Xe&&2>this.#Zs.tn.size&&(self.removeEventListener("pointermove",this.#Js,ui),wi(this.#Zs,0,this.#Js),vi(this.#Zs,this.#Ks,this.#Zs.tn)))}},yi=class{#Zs;constructor(t){this.#Zs=t}hook(){Et.OSX&&(this.#Zs.Re.addEventListener("gesturestart",this.#Qs,di),this.#Zs.Re.addEventListener("gesturechange",this.#Qs,di),this.#Zs.Re.addEventListener("gestureend",this.#Qs,di))}unhook(){Et.OSX&&(this.#Zs.Re.removeEventListener("gesturestart",this.#Qs,di),this.#Zs.Re.removeEventListener("gesturechange",this.#Qs,di),this.#Zs.Re.removeEventListener("gestureend",this.#Qs,di))}#th(t){if("scale"in t&&"number"==typeof t.scale){const i=t;return{scale:i.scale,clientX:i.clientX,clientY:i.clientY}}return null}#Qs=t=>{const i=this.#th(t);if(!i)return;if(1===i.scale)return void(this.#Zs.sn=1);if(t.target instanceof Element&&t.target!=this.#Zs.He)return;const s=this.#Zs.sn-i.scale;this.#Zs.sn=i.scale,t.stopPropagation(),t.preventDefault(),"gesturechange"==t.type&&this.#Zs.si({x:i.clientX,y:i.clientY})?.camera.zoom(s*this.#Zs.Re.canvas.viewport.height,0,i.clientX,i.clientY)}},bi=class{hooked=0;#ih=-1;#Zs;constructor(t){this.#Zs=t}hook(){this.hooked||(this.#Zs.Re.addEventListener("wheel",this.handle,di),this.hooked=1)}unhook(){this.#Zs.Re.removeEventListener("wheel",this.handle,di),this.hooked=0}handle=(t,i=0,s=0)=>{if(!(t instanceof WheelEvent))return;if(this.#Zs.hn&&!t.ctrlKey)return;if(!i&&t.target instanceof Element&&t.target!=this.#Zs.He&&!t.target.classList.contains("marker")&&!t.target.closest("[data-scroll-through]"))return;let h=t.deltaY;t.ctrlKey&&(this.#Zs.nn=1);const e=this.#Zs.hn&&10*h%1==0,n=this.#Zs.nn&&!e,o=Et.firefox||t.ctrlKey||!n;if(this.#Zs.Ne&&this.#Zs.Re.$current?.camera.isZoomedOut())return;t.stopPropagation(),t.preventDefault(),(Et.OSX||n)&&t.ctrlKey&&(h*=10);const r={x:t.clientX,y:t.clientY},a=this.#Zs.si(r);if(a){if(o){const t=this.#Zs.Re.canvas.viewport;let i=0;const e=this.#Zs.Re.getBoundingClientRect();a.camera.zoom(1*h/Math.sqrt(t.scale),0,r.x-s-e.left,r.y-e.top-i)}else a.camera.pan(t.deltaX,t.deltaY);this.#Zs.rn=1,clearTimeout(this.#ih),this.#ih=setTimeout(this.#sh,50)}};#sh=()=>{this.#Zs.rn=0}},ki=Symbol("micrio-provides"),xi=class extends HTMLElement{static tag;static an=new Map;#hh=[];#eh=null;cn={};connectedCallback(){this.ln?.(),this.De?.()}disconnectedCallback(){this.un?.(),this.#ms()}At(t){Object.assign(this.cn,t),this.isConnected&&this.De()}De(){}dn(t){this.#hh.push(t)}fn(t){return t===this.#eh?(this.pn?.(),0):(this.#eh=t,1)}mn(t,i,s){let h=i;s?.skipFirst&&(h=Y(h)),s?.defer&&(h=j(h)),this.dn(t.subscribe(h))}gn(t,i){this.mn(t,i,{skipFirst:1})}wn(t,i){this.mn(t,i,{skipFirst:1,defer:1})}vn(t,i){this.dn(t.subscribe(i))}Mn(t,i){let s=this[ki];s||(this[ki]=s=new Map),s.set(t,i)}_n(t){let i=this;for(;i;){const s=i[ki];if(s?.has(t))return s.get(t);i=i.parentElement}}yn(){return this._n("micrio")}#ms(){for(const t of this.#hh)t();this.#hh=[]}},Pi={0:[0,-.5,1,.5],90:[1,0,.5,1],180:[0,1,1,.5],270:[-.5,0,.5,1]},Ti={0:[0,-1,1,1],90:[1,0,1,1],180:[0,1,1,1],270:[-1,0,1,1]},Si={0:[0,1,1,1],90:[-1,0,1,1],180:[0,-1,1,1],270:[1,0,1,1]},Ai={ArrowLeft:"left",ArrowRight:"right",ArrowUp:"up",ArrowDown:"down"},Ci=class extends xi{static tag="micrio-button";#nh;#oh;pn(){const t=this.cn;t.type!==this.#oh&&(this.#oh&&this.classList.remove(this.#oh),t.type&&this.classList.add(t.type),this.#oh=t.type)}De(){const t=this.cn,i=`${t.type}|${t.icon?.src??""}|${t.title??""}|${t.disabled??""}|${t.active??""}|${t.className??""}|${t.href??""}|${t.blankTarget??""}|${t.noClick??""}`;if(!this.fn(i))return;const s=!!t.href,h=s?"a":"button",e=`${t.className?t.className+" ":""}${t.active?"active":""}${t.noClick?" no-click":""}`.trim();this.#oh&&this.classList.remove(this.#oh),t.type&&this.classList.add(t.type),this.#oh=t.type,this.#nh&&this.#nh.remove();const n={title:t.title??"","aria-label":t.title??""};s&&(n.href=t.href,t.blankTarget&&(n.target="_blank"));const o=Mt(h,{className:e,attrs:n,props:{disabled:s?void 0:!!t.disabled},events:{...t.onclick&&{click:t.onclick},...t.onfocus&&{focus:t.onfocus},...t.onpointerdown&&{pointerdown:t.onpointerdown}},parent:this});this.#nh=o,t.type?Mt("micrio-icon",{setProps:{name:t.type},parent:o}):t.icon&&Mt("img",{props:{src:t.icon.src,alt:"Icon"},parent:o});const r=[];for(const c of this.childNodes)c===o||c.nodeType!==Node.TEXT_NODE&&c.nodeType!==Node.ELEMENT_NODE||(r.push(c.textContent??""),c.remove());const a=r.join("").trim();a&&Mt("span",{textContent:a,parent:o})}};customElements.define(Ci.tag,Ci);var Ei=(t=>(t[t.focus=0]="focus",t[t.flyTo=1]="flyTo",t[t.focusWithTagged=2]="focusWithTagged",t[t.focusTagged=3]="focusTagged",t[t.reset=4]="reset",t[t.back=5]="back",t[t.switchToGrid=6]="switchToGrid",t[t.filterTourImages=7]="filterTourImages",t[t.nextFadeDuration=8]="nextFadeDuration",t))({}),Ii=new WeakMap;function Li(t,i,s,h){"string"==typeof i&&(i=Ei[i]);const e=i+(s??"");if(t.bn==e)return;const n=(t=>{let i=Ii.get(t);return i||(i={[Ei.focus](i,s){const h=i?.split("|").map(t=>t.trim()),e=(h?.[0]??"").split(",").map(i=>t.kn.get(i.trim())).filter(t=>void 0!==t);1==e.length?t.gridFocus(e[0],{duration:s}):e.length>0&&t.set(e.map(t=>({id:t.id,size:[1]})),{duration:s,horizontal:"h"==h?.[1]})},[Ei.flyTo](i,s){const h=i?.split(",").map(i=>t.xn.find(t=>t.id==i?.trim()));if(h?.length){const i=h.map(t=>t?.opts.area?.[0]??0),e=h.map(t=>t?.opts.area?.[1]??0),n=Math.max(...h.map(t=>(t?.opts.area?.[0]??0)+(t?.opts.area?.[2]??1))),o=Math.max(...h.map(t=>(t?.opts.area?.[1]??0)+(t?.opts.area?.[3]??1))),r=Math.min(...i),a=Math.min(...e);t.image.camera.flyToView([r,a,n-r,o-a],{duration:s?1e3*s:void 0}).catch(()=>{})}else console.warn("Given image IDs gave no current displayed images")},[Ei.focusTagged](i,s){t.Pn(i,s)},[Ei.focusWithTagged](i,s){t.Pn(i,s,1)},[Ei.reset](i,s){t.reset(s)},[Ei.back](i,s){t.back(s)},[Ei.switchToGrid](){(t=>{const i=t.$focussed;if(!i)return;const s=i.camera.getView();s&&t.reset(0,1).then(()=>{i.opts.area&&t.image.camera.setView(i.opts.area,{noLimit:1}),i.camera.setView(s,{noLimit:1}),t.micrio.current.set(t.image)})})(t)},[Ei.nextFadeDuration](i){t.Tn=Number(i)},[Ei.filterTourImages](i,s){const h=X(t.micrio.state.tour);if(!h||!("steps"in h)||!h.stepInfo)return;const e=h.stepInfo.map(t=>t.micrioId),n=e.filter((t,i)=>e.indexOf(t)==i).map(i=>t.kn.get(i)).filter(t=>!!t);n.length&&t.set(n.map(t=>({id:t.id,size:[1]})),{duration:s,horizontal:"h"==i})}},Ii.set(t,i)),i})(t)[i];n?n(s,h):console.warn("Warning: unknown grid tour event",i),t.bn=e}var zi=class extends xi{static tag="micrio-grid";Sn=[];kn=new Map;xn=[];An=new Map;Cn=0;En="grid";In=H();get $focussed(){return X(this.In)}Ln=H([]);#rh=[];#ah=H(0);zn=1;#ch=.5;#lh=.5;Tn;#uh=0;#dh=new Map;#fh=new Map;bn;#ph;#mh;#gh;#wh=0;#vh="ease";#Mh;static Dn=0;micrio;image;#_h;#ft=0;ln(){if(this.#ft)return;this.#ft=1;const t=this.cn;this.micrio=t.micrio,this.image=t.image,this.#_h=t.gallery,this.#_h.Sn.forEach(t=>this.#yh(t));const i=this.image.$settings?.grid;this.Cn=i?.clickable&&["focus","zoom"].includes(i.clickable)?i.clickable:0,this.En="cells"==i?.panZoom?"cells":"grid",this.Cn&&this.image.$settings.hookKeys&&this.dn((t=>{zi.Dn=1;const i=(t=>i=>{if(!t.xn.length||!t.Cn)return;if("Escape"==i.key)return t.An.forEach(t=>t.classList.remove("focussed")),void(t.$focussed?(t.back(),i.preventDefault(),i.stopPropagation()):t.image.camera.isZoomedOut()||(t.reset(),i.preventDefault(),i.stopPropagation()));const s=Ai[i.key];if(!s||t.$focussed)return;i.preventDefault(),i.stopPropagation();const h=((t,i)=>{const s=t.xn.map((t,i)=>({img:t,i:i,cx:t.opts.area[0]+t.opts.area[2]/2,cy:t.opts.area[1]+t.opts.area[3]/2}));if(!s.length)return;let h=s.findIndex(i=>i.img.id==t.querySelector(":focus")?.getAttribute("data-id"));0>h&&(h=0);const e=s[h],n=.05;let o;for(const r of s){if(r.i===h)continue;const t=r.cx-e.cx,s=r.cy-e.cy;let a=0;switch(i){case"left":a=0>t&&Math.abs(s)<n;break;case"right":a=t>0&&Math.abs(s)<n;break;case"up":a=0>s&&Math.abs(t)<n;break;case"down":a=s>0&&Math.abs(t)<n}if(!a)continue;const c=Math.abs(t)+Math.abs(s);o&&c>=o.dist||(o={img:r.img,dist:c})}return o?o.img:s["right"==i||"down"==i?0:s.length-1].img})(t,s);if(!h)return;const e=h.id;t.An.forEach((t,i)=>{i===e?(t.focus(),t.classList.add("focussed")):(t.blur(),t.classList.remove("focussed"))}),"zoom"!=t.Cn||t.image.camera.isZoomedOut()||t.image.camera.flyToView(h.opts.area??[0,0,1,1],{duration:1e3*t.zn,limit:0})})(t);let s;document.addEventListener("keydown",i);const h=t=>{s={x:t.clientX,y:t.clientY}},e=i=>{if(!s)return;const h=Math.hypot(i.clientX-s.x,i.clientY-s.y);if(s=void 0,h>10)return;const[e,n]=t.image.camera.getCoo(i.clientX,i.clientY,1),o=t.xn.find(t=>t.opts.area&&nt(e,n,t.opts.area));o&&t.Fn(o)};return"grid"==t.En&&t.Cn&&(t.micrio.addEventListener("pointerdown",h),t.micrio.addEventListener("pointerup",e)),()=>{zi.Dn=0,document.removeEventListener("keydown",i),t.micrio.removeEventListener("pointerdown",h),t.micrio.removeEventListener("pointerup",e)}})(this)),void 0!==i?.transitionDuration&&(this.zn=this.#ch=i.transitionDuration),void 0!==i?.transitionDurationOut&&(this.#ch=i.transitionDurationOut),this.set(this.#bh,{cover:"cover"==this.image.$settings?.initType,duration:0}).then(()=>{this.#kh(),this.micrio.events.Et("grid-load")}),this.#Mh=Mt("micrio-button",{setProps:{type:"close",onclick:()=>this.back(),title:"Close"}}),this.dn(()=>this.#Mh.remove()),this.dn(this.In.subscribe(t=>{t?this.appendChild(this.#Mh):this.#Mh.remove()})),this.micrio.events.Et("grid-init",this)}un(){this.#xh(),this.#ph?.(),this.#ph=void 0}#kh(){if(this.micrio.state.marker.subscribe(t=>{if(t&&"string"!=typeof t){const i=t.data?._meta;if(i?.gridSize){const s="number"==typeof i.gridSize?[i.gridSize,i.gridSize]:i.gridSize.split(",").map(Number),h=this.Sn.find(i=>i.$data?.markers?.find(i=>i==t))?.id;h&&this.#fh.set(h,s)}G().then(()=>{const t=i?.gridAction?.split("|");t?.length&&"string"==typeof t[0]&&this.action(t.shift(),t.join("|"))})}}),this.Cn){this.addEventListener("click",t=>{this.Fn(t.target?.dataset.id)});const t=t=>{t?this.#Ph():this.#Th()};this.micrio.state.tour.subscribe(t),this.micrio.state.marker.subscribe(t),this.In.subscribe(t)}var t;this.#Sh=(t=this,i=>{const s=i.detail;s&&s.action?.startsWith("grid:")&&s.active&&Li(t,s.action.slice(5),s.data,s.end-s.start)}),this.micrio.addEventListener("tour-event",this.#Sh),this.micrio.addEventListener("serialtour-pause",()=>this.Sn.forEach(t=>t.camera.pause())),this.micrio.addEventListener("serialtour-play",()=>this.Sn.forEach(t=>t.camera.resume()))}#Sh;#xh(){clearTimeout(this.#mh),clearTimeout(this.#gh)}#yh(t){this.Sn.push(t),this.kn.set(t.id,t)}get#bh(){return this.#_h.Sn.map(t=>({id:t.id,size:[1]}))}#Ah(){this.#ah.set(this.#rh.push({layout:this.xn.map(t=>({id:t.id,view:t.state.$view,size:this.#dh.get(t.id)})),horizontal:this.#uh,view:this.image.camera.getView()}))}set(t=[],i={}){const s=++this.#wh;return this.Sn.length&&this.Sn.forEach(t=>t.camera.stop()),this.image.camera.stop(),new Promise((h,e)=>{delete this.image.$settings?.focus,this.bn=void 0,0==i.cover&&i.coverLimit&&(i.coverLimit=0),i.coverLimit&&null==i.cover&&(i.cover=1);const n=this.$focussed,o=i.transition?.endsWith("-delayed"),r="behind-delayed"==i.transition,{Ve:a}=this.micrio;"crossfade"==i.transition?i.duration=0:"behind"!=i.transition&&"behind-delayed"!=i.transition||((t,i,s,h)=>{const e="behind-delayed"==s.transition,n=1==s.coverLimit;s.forceAni=1,s.coverLimit=n,s.forceAreaAni=1;const o=e?1/i.length:1;let r=0;t.Sn.forEach(t=>{t.camera.setCoverLimit(n),i.find(i=>i.id==t.id)&&(t.camera.setArea([0,0,h?.id==t.id?1:o,1],{noDispatch:1,direct:1}),t!=h&&t.camera.setView([0,0,1,1]),e&&t.canvas&&(t.canvas.zIndex=i.length-r++))}),i.forEach(t=>t.view=[0,0,1,1])})(this,t,i,n);const c=this.image.ut,l=i.duration??(i.noHistory?this.#ch:this.zn),u=this.Tn??this.image.$settings.crossfadeDuration??1,d=(l||this.zn)/(r?2:1);this.Tn=void 0,c&&(a.ee=l,a.Hh=d);const f=!i.noBlur&&n;f&&this.blur(),!i.noHistory&&this.xn.length&&this.#Ah(),this.#uh=!!i.horizontal,this.#Ch(this.Sn.filter(i=>!t.find(t=>t.id==i.id))),this.#Eh(t,{horizontal:i.horizontal,keepGrid:i.keepGrid,scale:i.scale,columns:i.columns}),this.#xh();let p=0;c&&!i.noCamAni&&(i.view?this.image.camera.flyToView(i.view,{duration:1e3*l}):this.image.camera.flyToFullView({duration:1e3*l})).catch(()=>{s===this.#wh&&(this.#xh(),p||e())}),this.#fh.clear(),null==i.coverLimit&&(i.coverLimit=!!this.image.$settings.limitToCoverScale);const m=i.cover&&!i.coverLimit;m&&(i.coverLimit=1,t.forEach(t=>this.kn.get(t.id)?.camera.setCoverLimit(1)));const g="appear-delayed"==i.transition,w=t=>t*this.#lh+(t>0&&g?l:0);this.xn=t.map((t,s)=>this.#Ih(t,{duration:!i.forceAni&&f&&t.id!=n?.id?0:l,delay:o?w(s):0,noCamAni:g&&s>0?1:!!i.noCamAni,forceAreaAni:g&&s>0?0:i.forceAreaAni,cover:i.cover})),g&&this.xn.slice(1).forEach(t=>{const i=t.canvas;i&&(i.zh=i.Ht=.9999)});const v=()=>this.xn.forEach((t,i)=>yt(o?1e3*(w(i)+(r?l/2:0)):0).then(()=>t.canvas?.jh())),M=()=>{s===this.#wh&&(this.#xh(),Q.request(()=>a.Hh=u),o&&this.Sn.forEach(t=>{t.canvas&&(t.canvas.zIndex=0)}),m?t.forEach(t=>this.kn.get(t.id)?.camera.setCoverLimit(0)):i.coverLimit&&t.forEach(t=>this.kn.get(t.id)?.camera.setCoverLimit(1)),this.Cn&&this.#Th(),this.bn=void 0,p=1,h(this.xn))};l||d?(i.noFade||(this.#gh=setTimeout(v,Math.max(0,l/2*1e3))),this.#mh=setTimeout(M,1e3*(Math.max(d,l)+(o?(t.length-1)*this.#lh:0)))):(i.noFade||v(),M())})}#Lh(){return this.xn.length!==this.Sn.length?1:this.xn.some((t,i)=>t.id!==this.Sn[i].id)}#Eh(t,i){const s=t.reduce((t,i)=>t+i.size[0]*(i.size[1]??1),0),h=i.columns??(i.horizontal?t.length:((t,i)=>{let s=Math.ceil(i/Math.ceil(Math.sqrt(i)));if(t==i){const i=Math.floor(Math.sqrt(t)),h=[];for(let e=i;s+i>e;e++)t%e||h.push(e);h.length&&(s=h[Math.floor(h.length/2)])}return s})(t.length,s));this.style.gridTemplateColumns=`repeat(${h}, auto)`;for(const c of this.An.values())c.remove();this.An.clear(),this.style.removeProperty("--translate"),this.style.removeProperty("--scale"),t.forEach(t=>{this.An.has(t.id)||this.An.set(t.id,Mt("button"));const i=this.An.get(t.id);1!==t.size[0]||void 0!==t.size[1]?(i.style.gridArea=`auto / auto / span ${t.size[1]} / span ${t.size[0]||t.size[1]}`,this.#dh.set(t.id,t.size)):(i.style.removeProperty("grid-area"),this.#dh.delete(t.id)),i.dataset.id=t.id,i.setAttribute("data-scroll-through",""),this.appendChild(i)}),this.classList.toggle("grid-pan-zoom","grid"==this.En);const e=this.classList.contains("grid-cells-hidden");e&&this.classList.remove("grid-cells-hidden"),this.micrio.events.Et("grid-layout-set",this);const n=this.micrio.offsetWidth,o=this.micrio.offsetHeight,r=Math.max(0,Math.min(1,1-(i.scale??1))),a=new Map(t.map(t=>[t.id,t]));this.style.transform="",this.childNodes.forEach(t=>{const i=t,s=i.dataset.id,h=i.getBoundingClientRect(),e=s?a.get(s):void 0,c=[r/2*h.width,r/2*h.height];e&&!e.area&&(e.area=[(h.x+c[0])/n,(h.y+c[1])/o,(h.width-2*c[0])/n,(h.height-2*c[1])/o])}),this.Cn||(this.style.display="none"),e&&this.classList.add("grid-cells-hidden")}#Th(){!this.Cn||this.micrio.state.$tour||this.micrio.state.$marker||(this.classList.remove("grid-cells-hidden"),this.#ph=this.image.state.view.subscribe(this.#zh))}#Ph(){this.#ph&&this.#ph(),this.classList.add("grid-cells-hidden")}#zh=()=>{const t=this.image.camera.getXY(0,0,1);this.style.setProperty("--translate",`translate3d(${t[0]}px, ${t[1]}px, 0)`),this.style.setProperty("--scale",this.image.camera.getScale().toString()),this.dispatchEvent(new CustomEvent("update"))};#Ih(t,i){const{Ve:s}=this.micrio,h=this.kn.get(t.id);if(h.ut||s.Bh(h,this.image),t.area){const e=()=>h.camera.setArea(t.area,{direct:0==i.duration||!i.forceAreaAni&&!X(h.visible)});i.delay?yt(1e3*i.delay).then(e).then(()=>s.render()):e()}const e={duration:1e3*i.duration,timingFunction:this.#vh,limit:0};return i.noCamAni||h.camera.T||!h.ut||(t.view?h.camera.flyToView(t.view,e):i.cover?h.camera.flyToCoverView({...e,duration:0}):h.camera.flyToView([0,0,1,1],e)).catch(()=>{}),h}#Ch(t){const{Ve:i}=this.micrio;t.forEach(t=>{t.ut&&t.canvas?.Gh(),this.An.get(t.id)?.remove(),this.An.delete(t.id)}),i.render()}$n(){const t=this.micrio.$current;return t==this.image||!!t&&this.kn.has(t.id)}async reset(t,i,s){const h=this.#rh[0];return this.Sn.forEach(t=>t.camera.stop()),this.image.camera.stop(),this.Ln.set([]),await G(),s||i||!this.micrio.camera?.isZoomedOut()||this.micrio.state.$tour||this.$focussed||this.#Lh()||(t=0),this.set(this.#Dh(h)??this.#bh,{noHistory:1,duration:t,noCamAni:i,forceAni:s,horizontal:h?h.horizontal:0}).then(t=>(this.#ah.set(this.#rh.length=0),this.micrio.current.set(this.image),t))}async Pn(t,i,s){const h=t?.split("|").map(t=>t.trim()),e=h?.[0]??"",n=e?this.Sn.filter(t=>!!t.$data?.markers?.find(t=>t.tags?.includes(e))):this.Sn;return this.set(n.map(t=>{const i=t.$data?.markers?.find(t=>t.tags?.includes(e));return{id:t.id,size:[1],view:s?void 0:i?.view}}),{duration:i,horizontal:"h"==h?.[1]})}async back(t){const i=this.#rh.pop();if(!i)return;this.#ah.set(this.#rh.length),this.micrio.current.set(this.image),this.$focussed&&this.blur();const s=this.#Dh(i)??[];await this.set(s,{duration:t,noHistory:1,horizontal:i.horizontal,view:i.view})}#Dh(t){if(t?.layout?.length)return t.layout.map(t=>this.kn.has(t.id)?{id:t.id,size:t.size??[1],view:t.view}:null).filter(Boolean)}#Fh(t){this.micrio.Ve.ne=wt(this.#vh=t)}Fn(t){const i="string"==typeof t?this.Sn.find(i=>i.id==t):t;if(this.Cn&&i)if(this.An.forEach(t=>t.classList.remove("focussed")),this.An.get(i.id)?.classList.add("focussed"),"zoom"==this.Cn){const t=i.opts.area??[0,0,1,1];this.image.camera.flyToView(t,{duration:1e3*this.zn,limit:0})}else this.gridFocus(i)}async gridFocus(t,i={}){if(!t)return this.back();i.coverLimit&&(i.cover=1);const s=this.micrio;X(s.Kt).find(t=>t==this.image)||s.current.set(this.image);const h=this.$focussed;if(h==t)return;i.transition?.startsWith("slide-")||0!=i.duration&&(!h||h.canvas?.Yh()||this.xn.includes(t))||t.camera.setArea([0,0,1,1],{noDispatch:1,direct:1}),h&&this.blur(),t.camera.setCoverLimit(!!i.cover),this.#Fh("ease");const e=await(async(t,i,s,{duration:h,view:e,transition:n,noViewAni:o,exitView:r,blur:a,cover:c})=>{if(!n)return[{id:i.id,size:[1],view:e}];if("crossfade"==n&&(i.camera.setArea([0,0,1,1]),o=1),e&&o&&i.camera.setView(e,{noRender:1,noLimit:1}),!s||"crossfade"==n)return[{id:i.id,size:[1],view:e}];const l=n.startsWith("slide")||n.startsWith("swipe"),u=n.startsWith("behind"),d=l?n.endsWith("-up")?0:n.endsWith("-down")?180:n.endsWith("-left")?270:90:void 0;if(l||u){const t=i.canvas;t&&(t.zh=.9999,t.Ht=.9999)}if(n.startsWith("slide"))i.camera.setArea(Pi[d],{noDispatch:1,direct:1});else if(n.startsWith("swipe"))i.camera.setArea(Ti[d],{noDispatch:1,direct:1});else if(u){i.camera.setArea([0,0,1,1]),i.camera.setView([0,0,1,1]);const h=[{id:s.id,size:[1],view:[0,0,1,1]},{id:i.id,size:[1],view:[0,0,1,1]}];"behind-left"==n&&h.reverse(),await t.set(h,{noBlur:1,horizontal:1,coverLimit:c}).then(()=>yt(200))}if(a&&!isNaN(a)&&a>0){const i=(h=h??t.Tn??t.zn)/2,s=t.micrio.canvas.element.style;s.transition=`filter ${i}s ease`,s.filter=`blur(${a}px)`,setTimeout(()=>{s.filter="",setTimeout(()=>{s.transform="",s.transition=""},1e3*i)},1e3*i)}return n.startsWith("swipe")?[{id:s.id,size:[1],view:r??s.camera.getView(),area:Si[d]},{id:i.id,size:[1],view:e,area:[0,0,1,1]}]:[{id:i.id,size:[1],view:e}]})(this,t,h,i);return t.canvas&&(t.canvas.zIndex=3),this.In.set(t),this.set(e,{noBlur:1,duration:i.duration,forceAreaAni:"crossfade"!=i.transition,cover:!!i.cover,coverLimit:!!i.coverLimit}).then(()=>{s.events.Et("grid-focus",t),this.#Ph(),s.$current!=t&&s.current.set(t),this.image.camera.setLimit([0,0,1,1])}).catch(()=>{})}blur(){const t=this.$focussed;t&&(this.An.forEach(t=>t.classList.remove("focussed")),t.canvas&&(t.canvas.zIndex=2),this.micrio.events.Et("grid-blur"),this.In.set(void 0),this.image.camera.setLimit([0,0,1,1]),this.micrio.current.set(this.image))}action(t,i,s){Li(this,t,i,s)}async enlarge(t,i,s=i){const h=this.#rh[this.#rh.length-1]?.layout,e="cover"===this.image.$settings?.initType;if(!h?.length){const h=this.#_h.Sn;return h.length?this.set(h.map((h,e)=>({id:h.id,size:e==t?[i,s]:[1]})),{noHistory:1,keepGrid:1,duration:.5,cover:e}):this.xn}const n=h.map((h,e)=>({id:h.id,size:e==t?[i,s]:h.size??[1]}));return this.set(n,{noHistory:1,keepGrid:1,duration:.5,cover:e})}On(t,i){const s=this.micrio.$current;if(s&&this.Sn.some(t=>t===s))return s;if("grid"==this.En)return this.image;const[h,e]=this.image.camera.getCoo(t,i,1);return this.xn.find(t=>t.opts.area&&nt(h,e,t.opts.area))}};customElements.define(zi.tag,zi);var Di=class{#Zs;constructor(t){this.#Zs=t}hook(){document.addEventListener("keydown",this.#Qs)}unhook(){document.removeEventListener("keydown",this.#Qs)}#Qs=t=>{if(this.#Zs.Ge||this.#Zs.Xe||!this.#Zs.Re.$current?.camera)return;if(zi.Dn&&(t.key.startsWith("Arrow")||"Enter"==t.key||" "==t.key||"Escape"==t.key))return;const i=this.#Zs.Re.$current.camera,s=this.#Zs.Re.offsetWidth/2,h=this.#Zs.Re.offsetHeight/2;let e=0,n=0;switch(t.key){case"ArrowUp":n-=h;break;case"ArrowDown":n+=h;break;case"ArrowLeft":e-=s;break;case"ArrowRight":e+=s;break;case"+":case"=":i.zoom(-200,150).catch(()=>{});break;case"-":case"_":i.zoom(200,150).catch(()=>{});break;default:return}t.preventDefault(),t.stopPropagation(),0==e&&0==n||i.pan(e,n,150)}},Fi=class{#Zs;constructor(t){this.#Zs=t}hookTap(){this.#Zs.He.addEventListener("touchstart",this.#$h)}unhookTap(){this.#Zs.He.removeEventListener("touchstart",this.#$h)}hookClick(){this.#Zs.He.addEventListener("dblclick",this.#Oh)}unhookClick(){this.#Zs.He.removeEventListener("dblclick",this.#Oh)}#$h=t=>{if(!(Et.hasTouch&&t instanceof TouchEvent))return;const i=performance.now();1==t.touches.length&&250>i-this.#Zs.Ye.Vn.Bn&&(t.stopPropagation(),t.preventDefault(),this.#Oh(t)),this.#Zs.Ye.Vn.Bn=i};#Oh=t=>{const i=t instanceof TouchEvent?t.touches[0]:t;this.#Zs.si({x:i.clientX,y:i.clientY})?.camera.zoom(-300,500,i.clientX,i.clientY,1,!this.#Zs.Re.$current?.album).catch(()=>{})}},$i=class{He;enabled=H(0);get $enabled(){return X(this.enabled)}#Us=0;Ge=0;Xe=0;rn=0;hn=0;Ne=0;sn=1;Qe=Et.hasTouch&&"ontouchstart"in self;nn=0;#Bh;#Vh;Ye={je:{Ze:void 0,Bs:[0,0,0],We:void 0},Vn:{Bn:0},hs:{We:void 0,Ke:0,qe:0}};Je;tn=new Map;Ue;Re;#Ks;#Rh;#Nh;#Hh;#Xh;#Gh;#jh;constructor(t){this.Re=t,this.He=t.canvas.element,this.#Ks=new pi(this),this.#Rh=new Mi(this,this.#Ks),this.#Nh=new _i(this,this.#Ks),this.#Hh=new yi(this),this.#Xh=new bi(this),this.#Gh=new Di(this),this.#jh=new Fi(this),this.enabled.subscribe(t=>{t?this.hook():this.unhook()}),t.Kt.subscribe(t=>this.#Vh=t),t.current.subscribe(t=>{t&&!this.#Bh&&(this.#Bh=t.$settings,!t.error&&this.#Bh.hookEvents&&this.enabled.set(1))})}get isNavigating(){return this.Ge||this.Xe||this.rn}Et(t,i){this.Re.dispatchEvent(new CustomEvent(t,void 0!==i?{detail:i}:void 0))}si(t){if(!this.#Vh)return;const i=this.Re.offsetWidth,s=this.Re.offsetHeight,h=Math.max(0,Math.min(1,t.x/i)),e=Math.max(0,Math.min(1,t.y/s)),n=this.#Vh.filter(t=>!t.Rt&&!t.Nt),o=this.Re.Dh.find(t=>t.grid);if(o)return o.grid?.On(t.x,t.y)??this.Re.$current;const r=1==n.length?n[0]:n.find(({grid:t,opts:{area:i}})=>t?0:i?!(h<i[0]||h>i[0]+i[2]||e<i[1]||e>i[1]+i[3]):0);return r&&!r.grid?r:this.Re.$current}Rn(){return this.#Vh}hook(){if(this.#Us)return;this.#Us=1;const t=this.#Bh;t&&(this.Ne=!!t.twoFingerPan,this.Ne?this.Re.setAttribute("data-can-pan",""):this.Re.removeAttribute("data-can-pan"),t?.hookKeys&&this.hookKeys(),t.hookDrag&&this.hookDrag(),t.noZoom||this.hookZoom())}unhook(){this.#Us&&(this.#Us=0,this.tn.clear(),this.unhookDrag(),this.unhookZoom(),this.unhookKeys())}hookKeys(){this.#Gh.hook()}unhookKeys(){this.#Gh.unhook()}hookZoom(){const t=this.#Bh;this.hn=!!t?.controlZoom,t&&!t.hookPinch||this.hookPinch(),(!t||t.hookScroll||this.hn)&&this.hookScroll(),this.Re.canvas.$isMobile?this.#jh.hookTap():this.#jh.hookClick()}unhookZoom(){this.unhookPinch(),this.unhookScroll(),this.Re.canvas.$isMobile?this.#jh.unhookTap():this.#jh.unhookClick()}get scrollHooked(){return this.#Xh.hooked}hookScroll(){this.#Xh.hook()}unhookScroll(){this.#Xh.unhook()}hookPinch(){Et.iOS&&this.Qe?this.#Rh.hook():this.#Nh.hook(),this.#Hh.hook()}unhookPinch(){Et.iOS&&this.Qe?this.#Rh.unhook():this.#Nh.unhook(),this.#Hh.unhook()}hookDrag(){this.#Ks.hook()}unhookDrag(){this.#Ks.unhook()}},Oi=class t{Nn;Sn;#Yh=null;Hn;#Wh=0;#Uh=0;constructor(t,i,s){this.Hn=t;const h="book3d"==s.type;this.Nn=h?{...s,isSpreads:1,coverPages:1}:s;const e="switch"==s.type,n=this.Nn.isSpreads,o=n?this.Nn.coverPages??0:0;e&&(this.#Uh=Math.max(...t.map(t=>t.height)),this.#Wh=Math.max(...t.map(t=>t.width*(n?2:1)))),this.Sn=t.map((h,r)=>{const a={...s.settings};void 0!==s.archiveLayerOffset&&(a.gallery={...a.gallery||{},archive:1,archiveLayerOffset:s.archiveLayerOffset});const c={},l=N.u(h.id)?.data;if(e){let i;c.isEmbed=1,c.useParentCamera=1,i=n?0>r-o||r==t.length-1&&(r-o)%2==0?[.25,0,.5,1]:(r-o)%2==0?[0,0,.5,1]:[.5,0,.5,1]:[0,0,1,1];let s=((t,i,s,h,e)=>{const[n,o,r,a]=t,c=r*i,l=a*s,u=Math.min(c/h,l/e),d=h*u/i,f=e*u/s;return[n+r/2-d/2,o+a/2-f/2,d,f]})(i,this.#Wh,this.#Uh,h.width,h.height);n&&(.5===i[0]?s[0]=.5:0===i[0]&&(s[0]=.5-s[2])),c.area=s}else c.area=[r,0,1,1];return new St(i,{id:h.id,info:h,settings:a,data:l},c)})}static Xn(i,s){if("sc:Manifest"===i["@type"]||i.sequences)throw new y("IIIF_V2_UNSUPPORTED",{displayMessage:"Only IIIF Presentation API 3 manifests are supported"});if("Manifest"===i.type){const h=i.items?.flatMap(t=>t.items?.[0]?.items?.[0]?.body)?.filter(t=>t?.service?.[0]?.id)??[];if(!h.length)throw new y("NO_CANVASES",{displayMessage:"No valid IIIF canvases found in the manifest"});const e=h.map(t=>({id:t.service[0].id,path:t.service[0].id.replace(/\/[^/]*$/,""),version:"",width:t.width,height:t.height,isWebP:"image/webp"===t.format,isPng:"image/png"===t.format,isIIIF:1}));return 1===e.length?null:new t(e,s,{type:"swipe",settings:{}})}return null}static Gn(i,s,h,e){const n=e?.basePath??h.$current?.Ft??"https://b.micr.io/",o=i.map(t=>({id:t.micrioId??t.id,path:n,version:"",width:t.width,height:t.height,isDeepZoom:t.isDeepZoom,isPng:t.isPng,isWebP:t.isWebP}));return new t(o,s,{type:"swipe",startId:e?.startId,settings:{skipMeta:1,noLogo:1}})}static async jn(i,s,h){const e=N._(i);if(!e)return null;const n=h?.path??N.M()?.baseUrl??"https://r2.micr.io/";e.archive&&await At.load(n,"g/"+e.archive,h?.onProgress);const o={...e,startId:h?.startId??e.startId};if(e.settings&&(o.settings={...e.settings}),"grid"===e.type&&e.archive){const t=o.grid?.clickable??o.settings?.grid?.clickable,i={zoomLimit:15,minimap:0,...o.settings??{}};t&&void 0===i.hookKeys&&(i.hookKeys=1),o.settings=i}const r=e.archive?await t.#Zh(e.archive.split(".")[0],n):void 0;r&&(o.archiveLayerOffset=r.delta);const a=o.sort;return a&&r?.images&&r.images.sort(t.#qh(a)),new t((r?.images??[]).map(t=>({...t,path:n,version:""})),s,{...o,type:o.type??"swipe"})}static#Zh=async(t,i)=>At.get(`${i}${t}.json`).then(t=>(t.images.forEach(t=>b.set(`${i}${t.id}/info.json`,t)),t));static#qh(t){return"random"==t?()=>Math.random()-.5:"name"==t?(t,i)=>t.title&&i.title?t.title<i.title?-1:t.title>i.title?1:0:0:"-name"==t?(t,i)=>t.title&&i.title?t.title<i.title?1:t.title>i.title?-1:0:0:"-created"==t?(t,i)=>t.created&&i.created?t.created<i.created?1:t.created>i.created?-1:0:0:(t,i)=>t.created&&i.created?t.created<i.created?-1:t.created>i.created?1:0:0}Yn(){const t=!!this.Nn.isSpreads,i=this.Nn.coverPages??0,s=[];if(t){let t=0;for(;t<Math.min(i,this.Sn.length);t++)s.push([t]);for(;t<this.Sn.length;t+=2){const i=[t];t+1<this.Sn.length&&i.push(t+1),s.push(i)}}else for(let h=0;h<this.Sn.length;h++)s.push([h]);return{pages:s,numPages:s.length}}Wn(t){if(this.#Yh=t,"grid"==this.Nn.type){const i=t.engine.micrio;t.grid=Mt(zi.tag,{setProps:{micrio:i,image:t,gallery:this}})}"book3d"==this.Nn.type&&(t.engine.le=1)}async Un(t){const i="switch"==this.Nn.type,s={view:[0,0,1,1],gallery:{...this.Nn},pinchZoomOutLimit:i?1:void 0};this.Nn.settings&&Object.assign(s,this.Nn.settings);const h=N.M()?.baseUrl??"https://r2.micr.io/";await t.open({id:"",info:{id:"",path:h,version:"",width:i?this.#Wh:t.offsetWidth*t.canvas.getRatio(),height:i?this.#Uh:t.offsetHeight*t.canvas.getRatio()},settings:s},{gallery:this})}gotoId=t=>this.goto(this.Sn.findIndex(i=>i.id==t));goto=t=>this.#Yh?.album?.goto(t)??Promise.resolve(this.Sn[t]);next=()=>this.#Yh?.album?.next();prev=()=>this.#Yh?.album?.prev()},Bi=navigator?.language??"en-EN",Vi="Intl"in self&&Intl.DisplayNames?new Intl.DisplayNames([Bi],{type:"language"}):void 0,Ri=["ar","dv","fa","he","iw","ku","ps","sd","syr","ug","ur","yi"],Ni=["en","nl","de"],Hi={Zn:["Close","Sluit","Schließen"],qn:["Zoom in","Zoom in","Vergrößern"],Jn:["Zoom out","Zoom uit","Verkleinern"],Kn:["Toggle fullscreen","Volledig scherm aan / uit","Vollbild umschalten"],Qn:["Switch language","Kies taal","Sprache wechseln"],io:["Share","Deel","Teilen"],so:["Mute audio","Geluid uit","Ton stummschalten"],ho:["Unmute audio","Geluid aan","Ton einschalten"],eo:["Close this marker","Sluit deze marker","Diesen Marker schließen"],no:["Next step","Volgende stap","Nächster Schritt"],oo:["Previous step","Vorige stap","Vorheriger Schritt"],ro:["Stop this tour","Stop deze tour","Tour beenden"],ao:["Minimize","Minimaliseer","Minimieren"],co:["Play","Start","Abspielen"],lo:["Pause","Pauzeer","Pause"],uo:["Stop","Stop","Stopp"],do:["Toggle subtitles","Ondertitels aan / uit","Untertitel umschalten"],fo:["Previous image","Vorige afbeelding","Vorheriges Bild"],po:["Next image","Volgende afbeelding","Nächstes Bild"],mo:["Rotate view left","Draai beeld naar links","Ansicht nach links drehen"],wo:["Rotate view right","Draai beeld naar rechts","Ansicht nach rechts drehen"],vo:["Toggle menu","Menu openen / sluiten","Menü umschalten"],Mo:["Go this way","Ga deze richting","Diesen Weg gehen"],_o:["Tours","Tours","Touren"],yo:["Marker tours","Marker tours","Marker-Touren"],bo:["Video tours","Video tours","Video-Touren"]},Xi={},Gi=Object.keys(Hi);for(let pe=0;Ni.length>pe;pe++){const t={};for(const i of Gi)t[i]=Hi[i][pe];Xi[Ni[pe]]=t}var ji=H(Xi.en);function Yi(t){if(!t)return;const i=t.split(",").map(t=>t.trim());return i[0]?{micrioId:i[0],markerId:i[1]||void 0,follows:!!i[2]&&"false"!==i[2]}:void 0}var Wi=new Map;function Ui(t){return Wi.get(t)?.secondary}function Zi(t){for(const i of Wi.values())if(i.secondary===t)return 1;return 0}async function qi(t,i,s,h){if(Wi.has(i))return;if(i.Rt||i.grid||Zi(i))return;const e=await N.l(s.micrioId);if(!e)return;const n=new St(t.Ve,e);t.Dh.push(n),t.Ve.Pe(n),n.Ht=0,0!=h?.isPassive&&(n.Nt=1);const o=t.canvas.viewport.portrait;i.camera.setArea(o?[0,0,1,.5]:[0,0,.5,1]),n.camera.setArea(o?[0,1,1,0]:[1,0,0,1],{direct:1}),n.camera.setArea(o?[0,.5,1,.5]:[.5,0,.5,1]);let r=null;0!=h?.isPassive&&(r=i.state.view.subscribe(t=>{t&&!n.camera.T&&n.camera.setView(t,{noLimit:1})}));let a=null;s.markerId&&(a=n.data.subscribe(t=>{if(!t)return;const i=t.markers?.find(t=>t.id===s.markerId);i?.view&&n.camera.flyToView(i.view,{isJump:1}),a?.()})),Wi.set(i,{secondary:n,unsub:r,unsubData:a}),t.events.Et("splitscreen-start",n)}function Ji(t,i,s){const h=Wi.get(i);if(!h)return;Wi.delete(i),h.unsub?.(),h.unsubData?.();const e=t.canvas.viewport.portrait;h.secondary.camera.setArea(e?[0,1,1,0]:[1,0,0,1],{direct:1}),i.camera.setArea([0,0,1,1]),s?.keepSecondaryCanvas||setTimeout(()=>t.Ve.Te(h.secondary),400),t.events.Et("splitscreen-stop",h.secondary)}var Ki=class{el;o;to;ko=1;constructor(t,i={}){this.el=t,this.o={delay:4e3,onIdle(){},onActive(){},shouldIdle:()=>1,...i}}get idle(){return this.el.hasAttribute("data-idle")}get enabled(){return this.ko}set enabled(t){this.ko=t,t||this.pause()}activity(){this.idle&&(this.el.removeAttribute("data-idle"),this.o.onActive()),this.#Jh()}show(){this.idle&&(this.el.removeAttribute("data-idle"),this.o.onActive())}hide(){this.idle||(this.el.setAttribute("data-idle",""),this.o.onIdle()),this.pause()}pause(){clearTimeout(this.to)}resume(){this.#Jh()}destroy(){clearTimeout(this.to)}#Jh(){clearTimeout(this.to),this.ko&&(this.to=window.setTimeout(()=>{this.o.shouldIdle()?this.idle||(this.el.setAttribute("data-idle",""),this.o.onIdle()):this.#Jh()},this.o.delay))}},Qi=class extends xi{static get observedAttributes(){return["id","muted","data-limited","lang"]}static VERSION;static tag="micr-io";#Kh=0;Dh=[];current=H();Kt=H([]);#Qh;get $current(){return this.#Qh}get camera(){return this.#Qh?.camera}canvas=new ci(this);events=new $i(this);state=new ct.Main;It=[];Ct=[];barebone=H(0);qt=new ai(this);Ve=new ei(this);xo;defaultSettings;xe=H(1);Qt=H(0);Po=H("1"==localStorage.getItem(E));Wt=H();spaceData;bundleTours;gallery;Se=0;#te;#ie;#se=0;attributeChangedCallback(t,i,s){switch(t){case"id":if(!this.isConnected||!s)return;this.#Kh?this.open(s):this.#he();break;case"muted":X(this.Po)!==this.hasAttribute("muted")&&this.Po.set(this.hasAttribute("muted"));break;case"data-limited":this.Ve?.yh&&this.$current?.canvas&&(this.$current.canvas.gh=!!s);break;case"lang":{let t=X(this.Wt);if(t!=s){this.Wt.set(s);const i=s.split("-")[0];ji.set(Xi[s]??Xi[i]??Xi.en),s&&(h=s,Ri.some(t=>h===t||h.startsWith(t+"-"))?this.setAttribute("dir","rtl"):this.removeAttribute("dir")),t&&this.events.Et("lang-switch",s)}break}}var h}ln(){this.Mn("micrio",this),this.canvas.place(),this.id&&!this.#Kh&&this.#he(),"muted"in this||(Object.defineProperty(this,"muted",{get(){return X(this.Po)},set(t){t?this.setAttribute("muted",""):this.removeAttribute("muted")}}),this.mn(this.Po,t=>{this.muted=t,t?(localStorage.setItem(E,"1"),this.events.Et("audio-mute")):(localStorage.removeItem(E),this.events.Et("audio-unmute"))}));const t=()=>{const t=X(this.Kt).filter(t=>t.id),i=this.Ve.le?this.#Qh:1===t.length?t[0]:this.#Qh;this.toggleAttribute("data-zoomed",!!i?.camera&&!!i.ut&&!i.camera.isZoomedOut())};this.mn(this.current,i=>{this.#Qh=i,t()}),this.mn(this.Kt,()=>t());const i=()=>t();this.Ct.push(i),this.dn(()=>{const t=this.Ct.indexOf(i);0>t||this.Ct.splice(t,1)});let s=0;const h=this.xe.subscribe(t=>{if(t)return;h(),this.setAttribute("data-loaded",""),this.mn(this.Qt,t=>{t?this.setAttribute("data-switching",""):(s||G().then(()=>this.events.Et("show",this)),s=1,this.removeAttribute("data-switching"))});const i=this.querySelector("img.preview");i&&setTimeout(()=>i.remove(),500)});this.#te=new Ki(this,{shouldIdle:()=>{if(document.activeElement&&this.contains(document.activeElement))return 0;const t=this.querySelectorAll("button, micrio-button");for(const i of t)if(i.matches(":hover"))return 0;return this.querySelector("micrio-gallery[data-dragging]")?0:1}}),this.#ie=()=>this.#te.activity();for(const e of["mousemove","pointerdown","wheel","focusin"])this.addEventListener(e,this.#ie,{passive:1});window.addEventListener("keydown",this.#ie),this.#te.activity()}addEventListener(t,i,s){super.addEventListener(t,i,s)}removeEventListener(t,i,s){super.removeEventListener(t,i,s)}destroy(){if(this.current.set(void 0),this.events.enabled.set(0),this.canvas.unhook(),this.Ve.be(),this.xo&&this.xo.remove(),delete this.xo,this.qt.Fe(1),this.#te?.destroy(),this.#ie){for(const t of["mousemove","pointerdown","wheel","focusin"])this.removeEventListener(t,this.#ie);window.removeEventListener("keydown",this.#ie),this.#ie=void 0}this.#Kh=0}async#ee(t){const i=await x(t).catch(t=>{this.#ne(t)});if(!i)return;let s;try{s=Oi.Xn(i,this.Ve)}catch(o){return void this.#ne(o)}if(s)return void s.Un(this);let h=i["@id"]||i.id||t.replace(/info.json$/,""),e=i.width,n=i.height;if("Manifest"===i.type){const t=i.items?.[0]?.items?.[0]?.items?.[0]?.body,s=t?.service?.[0];s?.id&&(h=s.id,e=t.width,n=t.height,i.preferredFormats=s.preferredFormats)}return{id:h,info:{id:h,path:h.replace(/\/[^/]*$/,""),width:e,height:n,version:A,isIIIF:1,is360:""==this.dataset.is360,tiles:i.tiles,preferredFormats:i.preferredFormats}}}async#he(){if(this.#Kh)return;this.#Kh=1,await G();const i=this.#oe();if(i.settings||(i.settings={}),this.defaultSettings&&t(this.defaultSettings,i.settings),i.settings.noLogo||this.#re(!!i.settings.noUI,0),i.id&&T(i.id)&&!this.hasAttribute("width")&&!this.hasAttribute("height")){const t=await N.l(i.id).catch(()=>{});if(t&&t.info?.albumId){const s=await Oi.jn(t.info.albumId,this.Ve,{startId:i.id,onProgress:t=>this.xo?.At?.({loadingProgress:t})}).catch(()=>null);if(s)return void s.Un(this)}}if(i.id&&i.id.startsWith("http")){const t=await this.#ee(i.id);if(!t)return;return t.settings=i.settings,void this.open(t)}this.Se=!!i.settings.keepRendering,this.events.Et("print",i);const s=()=>{i.id&&this.open(i.id)};if(void 0!==i.settings.lazyload&&"IntersectionObserver"in window){const t=new IntersectionObserver(i=>{i[0]&&i[0].isIntersecting&&(t.unobserve(this),s())},{rootMargin:100*i.settings.lazyload+"% 0px"});t.observe(this)}else i.id&&Q.request(s)}#re(t,i){this.xo?this.xo.At?.({noHTML:t,noLogo:i}):this.xo=Mt("micrio-main",{setProps:{noHTML:t,noLogo:i},parent:this})}#ne(t){const i=(s=t??"An unknown error has occurred")instanceof y?s.displayMessage:(s instanceof Error?s.message:s)??"An unknown error has occurred";var s;console.error("Error:",i+(t instanceof y?` (${t.code}: ${t.message})`:"")),this.xo||this.#re(0,0),this.xo?.At?.({error:i}),this.xe.set(0)}async open(i,s={}){this.#Kh||await this.#he();const h=this.#oe();let e;if("string"==typeof i&&i.startsWith("http")){const t=await this.#ee(i);if(!t)return this.$current;e=t}else if("string"==typeof i){if(this.gallery)return await this.gallery.gotoId(i)??this.$current;if(e=await N.l(i),!e)return this.#ne('Image with id "'+i+'" not found, published, or embeddable.'),this.$current}else e=i;if(e.settings||(e.settings={}),h.settings?.gallery?.archive&&!/\.\d+$/.test(h.settings.gallery.archive)&&delete h.settings.gallery.archive,"string"==typeof i&&t(h.settings,e.settings),this.defaultSettings&&t(this.defaultSettings,e.settings),e.settings?.gallery?.settings&&t(e.settings.gallery.settings,e.settings),t(I,e.settings,{noOverwrite:1}),this.$current&&e.id==this.$current?.id)return this.$current;this.$current&&!s.gridView&&(t=>{for(const i of[...Wi.keys()])Ji(t,i)})(this),!s.gridView&&this.$current&&this.Qt.set(1),this.#re(!!e.settings.noUI,!!e.settings.noLogo);let n=this.Dh.find(t=>e.id&&t.id==e.id),o=0;const r=this.Dh[0]?.grid;if(!n&&r){const t=e.id?r.Sn.find(t=>t.id==e.id):void 0;o=!!t,n=e.id?t:this.Dh[0],o&&!r.$n()&&this.current.set(this.Dh[0])}if(!n){if(this.Dh.length){const t=this.Dh[0];e.info.path=t.Ft,e.info.lang=this.lang}this.Dh.push(n=new St(this.Ve,e))}if(s.gallery&&(s.gallery.Wn(n),this.gallery=s.gallery),s.startView&&(n.state.view.set(e.settings.view=s.startView),n.ut&&n.engine.ready&&n.camera.setView(e.settings.view,{noRender:1})),this.lang||(this.lang="en"),!this.Ve.le&&(this.Ve.pe(),!this.qt.gl))try{this.qt.Be()}catch(a){return this.#ne(a),n}if(!this.#se){switch(this.canvas.hook(),n.$settings?.theme){case"light":this.setAttribute("data-light-mode","");break;case"os":this.setAttribute("data-auto-scheme","")}this.#se=1}G().then(()=>this.dispatchEvent(new CustomEvent("load",{detail:n})));const a=this.Ve;return a.Xh=s.vector?.direction??0,a.Vh=s.vector?.distanceX??0,a.Rh=s.vector?.distanceY??0,a.ue=!s.vector,!o||s.gridView&&r?.xn.find(t=>t.id==e.id)?this.current.set(n):r?.gridFocus(n,{view:e.settings?.view}).then(()=>this.current.set(n)),n.Rt&&this.xe.set(0),!n.$settings.micrioSplitLink||n.Rt||n.grid||G().then(()=>{this.$current===n&&qi(this,n,{micrioId:n.$settings.micrioSplitLink},{isPassive:!n.$settings.noFollow})}),n}close(t){this.Ve.Te(t)}#oe(){const t={gallery:{}},i={settings:t,id:this.id},s=(t,i,s)=>{const h=i.split(".");for(let e=0;e<h.length-1;e++)t=t[h[e]];t[h[h.length-1]]=s},h=(h,e)=>{for(const n of Object.keys(h)){const o=h[n],r=this.getAttribute(n),a=o.f||n.replace("data-",""),c=e(r,o);void 0!==c&&s(o.r?i:t,a,c)}};return h(L,t=>t||void 0),h(z,(t,i)=>{const s=null!=t&&(""===t||"true"===t);if(s||"false"===t)return i.n?!s:!!s}),h(D,(t,i)=>{if(void 0!==i.dN&&null==t&&(t=i.dN),null==t)return;const s=Number(t);return isNaN(s)?void 0:s}),h(F,t=>null!=t?t.split(",").map(Number):void 0),t.static&&(t.noUI=t.skipMeta=1,t.hookEvents=0),i}get lang(){return X(this.Wt)}set lang(t){this.setAttribute("lang",t)}};function ts(t,i){return _t("svg",{...i,attrs:{...i?.attrs,viewBox:`0 0 ${t[0]} ${t[1]}`,fill:"currentColor"},children:[_t("path",{attrs:{d:t[2]}}),...i?.children??[]]})}var is={down:[384,512,"M169.4 502.6c12.5 12.5 32.8 12.5 45.3 0l160-160c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 402.7 224 32c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 370.7-105.4-105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l160 160z"],prev:[512,512,"M9.4 233.4c-12.5 12.5-12.5 32.8 0 45.3l160 160c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L109.3 288 480 288c17.7 0 32-14.3 32-32s-14.3-32-32-32l-370.7 0 105.4-105.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-160 160z"],next:[512,512,"M502.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L402.7 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l370.7 0-105.4 105.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160z"],up:[384,512,"M214.6 9.4c-12.5-12.5-32.8-12.5-45.3 0l-160 160c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 109.3 160 480c0 17.7 14.3 32 32 32s32-14.3 32-32l0-370.7 105.4 105.4c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-160-160z"],rotateLeft:[512,512,"M125.7 160l50.3 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L48 224c-17.7 0-32-14.3-32-32L16 64c0-17.7 14.3-32 32-32s32 14.3 32 32l0 51.2L97.6 97.6c87.5-87.5 229.3-87.5 316.8 0s87.5 229.3 0 316.8s-229.3 87.5-316.8 0c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0c62.5 62.5 163.8 62.5 226.3 0s62.5-163.8 0-226.3s-163.8-62.5-226.3 0L125.7 160z"],rotateRight:[512,512,"M386.3 160L336 160c-17.7 0-32 14.3-32 32s14.3 32 32 32l128 0c17.7 0 32-14.3 32-32l0-128c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 51.2L414.4 97.6c-87.5-87.5-229.3-87.5-316.8 0s-87.5 229.3 0 316.8s229.3 87.5 316.8 0c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0c-62.5 62.5-163.8 62.5-226.3 0s-62.5-163.8 0-226.3s163.8-62.5 226.3 0L386.3 160z"],menu:[448,512,"M0 96C0 78.3 14.3 64 32 64l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 128C14.3 128 0 113.7 0 96zM0 256c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 288c-17.7 0-32-14.3-32-32zM448 416c0 17.7-14.3 32-32 32L32 448c-17.7 0-32-14.3-32-32s14.3-32 32-32l384 0c17.7 0 32 14.3 32 32z"],chevronDown:[448,512,"M201.4 406.6c12.5 12.5 32.8 12.5 45.3 0l192-192c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L224 338.7 54.6 169.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l192 192z"],error:[512,512,"M256 512a256 256 0 1 1 0-512 256 256 0 1 1 0 512zm0-192a32 32 0 1 0 0 64 32 32 0 1 0 0-64zm0-192c-18.2 0-32.7 15.5-31.4 33.7l7.4 104c.9 12.6 11.4 22.3 23.9 22.3 12.6 0 23-9.7 23.9-22.3l7.4-104c1.3-18.2-13.1-33.7-31.4-33.7z"],subtitles:[512,512,"M0 128C0 92.7 28.7 64 64 64l384 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L64 448c-35.3 0-64-28.7-64-64L0 128zm152 80l32 0c4.4 0 8 3.6 8 8 0 13.3 10.7 24 24 24s24-10.7 24-24c0-30.9-25.1-56-56-56l-32 0c-30.9 0-56 25.1-56 56l0 80c0 30.9 25.1 56 56 56l32 0c30.9 0 56-25.1 56-56 0-13.3-10.7-24-24-24s-24 10.7-24 24c0 4.4-3.6 8-8 8l-32 0c-4.4 0-8-3.6-8-8l0-80c0-4.4 3.6-8 8-8zm168 8c0-4.4 3.6-8 8-8l32 0c4.4 0 8 3.6 8 8 0 13.3 10.7 24 24 24s24-10.7 24-24c0-30.9-25.1-56-56-56l-32 0c-30.9 0-56 25.1-56 56l0 80c0 30.9 25.1 56 56 56l32 0c30.9 0 56-25.1 56-56 0-13.3-10.7-24-24-24s-24 10.7-24 24c0 4.4-3.6 8-8 8l-32 0c-4.4 0-8-3.6-8-8l0-80z"],subtitlesOff:[512,512,"M0 128C0 92.7 28.7 64 64 64l384 0c35.3 0 64 28.7 64 64l0 256c0 35.3-28.7 64-64 64L64 448c-35.3 0-64-28.7-64-64L0 128zm152 80l32 0c4.4 0 8 3.6 8 8 0 13.3 10.7 24 24 24s24-10.7 24-24c0-30.9-25.1-56-56-56l-32 0c-30.9 0-56 25.1-56 56l0 80c0 30.9 25.1 56 56 56l32 0c30.9 0 56-25.1 56-56 0-13.3-10.7-24-24-24s-24 10.7-24 24c0 4.4-3.6 8-8 8l-32 0c-4.4 0-8-3.6-8-8l0-80c0-4.4 3.6-8 8-8zm168 8c0-4.4 3.6-8 8-8l32 0c4.4 0 8 3.6 8 8 0 13.3 10.7 24 24 24s24-10.7 24-24c0-30.9-25.1-56-56-56l-32 0c-30.9 0-56 25.1-56 56l0 80c0 30.9 25.1 56 56 56l32 0c30.9 0 56-25.1 56-56 0-13.3-10.7-24-24-24s-24 10.7-24 24c0 4.4-3.6 8-8 8l-32 0c-4.4 0-8-3.6-8-8l0-80z"],fullscreenLeave:[448,512,"M160 64c0-17.7-14.3-32-32-32S96 46.3 96 64l0 64-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c17.7 0 32-14.3 32-32l0-96zM32 320c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0 0 64c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96c0-17.7-14.3-32-32-32l-96 0zM352 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 96c0 17.7 14.3 32 32 32l96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0 0-64zM320 320c-17.7 0-32 14.3-32 32l0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64 64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-96 0z"],ellipsisVertical:[128,512,"M64 144a56 56 0 1 1 0-112 56 56 0 1 1 0 112zm0 224c30.9 0 56 25.1 56 56s-25.1 56-56 56-56-25.1-56-56 25.1-56 56-56zm56-112c0 30.9-25.1 56-56 56s-56-25.1-56-56 25.1-56 56-56 56 25.1 56 56z"],fullscreenEnter:[448,512,"M32 32C14.3 32 0 46.3 0 64l0 96c0 17.7 14.3 32 32 32s32-14.3 32-32l0-64 64 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 32zM64 352c0-17.7-14.3-32-32-32S0 334.3 0 352l0 96c0 17.7 14.3 32 32 32l96 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-64 0 0-64zM320 32c-17.7 0-32 14.3-32 32s14.3 32 32 32l64 0 0 64c0 17.7 14.3 32 32 32s32-14.3 32-32l0-96c0-17.7-14.3-32-32-32l-96 0zM448 352c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 64-64 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l96 0c17.7 0 32-14.3 32-32l0-96z"],linkExt:[512,512,"M320 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l82.7 0-201.4 201.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L448 109.3 448 192c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160c0-17.7-14.3-32-32-32L320 0zM80 96C35.8 96 0 131.8 0 176L0 432c0 44.2 35.8 80 80 80l256 0c44.2 0 80-35.8 80-80l0-80c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 80c0 8.8-7.2 16-16 16L80 448c-8.8 0-16-7.2-16-16l0-256c0-8.8 7.2-16 16-16l80 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L80 96z"],a11y:[512,512,"M351.9 280l-190.9 0c2.9 64.5 17.2 123.9 37.5 167.4 11.4 24.5 23.7 41.8 35.1 52.4 11.2 10.5 18.9 12.2 22.9 12.2s11.7-1.7 22.9-12.2c11.4-10.6 23.7-28 35.1-52.4 20.3-43.5 34.6-102.9 37.5-167.4zM160.9 232l190.9 0C349 167.5 334.7 108.1 314.4 64.6 303 40.2 290.7 22.8 279.3 12.2 268.1 1.7 260.4 0 256.4 0s-11.7 1.7-22.9 12.2c-11.4 10.6-23.7 28-35.1 52.4-20.3 43.5-34.6 102.9-37.5 167.4zm-48 0C116.4 146.4 138.5 66.9 170.8 14.7 78.7 47.3 10.9 131.2 1.5 232l111.4 0zM1.5 280c9.4 100.8 77.2 184.7 169.3 217.3-32.3-52.2-54.4-131.7-57.9-217.3L1.5 280zm398.4 0c-3.5 85.6-25.6 165.1-57.9 217.3 92.1-32.7 159.9-116.5 169.3-217.3l-111.4 0zm111.4-48C501.9 131.2 434.1 47.3 342 14.7 374.3 66.9 396.4 146.4 399.9 232l111.4 0z"],image:[448,512,"M64 32C28.7 32 0 60.7 0 96L0 416c0 35.3 28.7 64 64 64l320 0c35.3 0 64-28.7 64-64l0-320c0-35.3-28.7-64-64-64L64 32zm64 80a48 48 0 1 1 0 96 48 48 0 1 1 0-96zM272 224c8.4 0 16.1 4.4 20.5 11.5l88 144c4.5 7.4 4.7 16.7 .5 24.3S368.7 416 360 416L88 416c-8.9 0-17.2-5-21.3-12.9s-3.5-17.5 1.6-24.8l56-80c4.5-6.4 11.8-10.2 19.7-10.2s15.2 3.8 19.7 10.2l26.4 37.8 61.4-100.5c4.4-7.1 12.1-11.5 20.5-11.5z"],layerGroup:[512,512,"M232.5 5.2c14.9-6.9 32.1-6.9 47 0l218.6 101c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L13.9 149.8C5.4 145.8 0 137.3 0 128s5.4-17.9 13.9-21.8L232.5 5.2zM48.1 218.4l164.3 75.9c27.7 12.8 59.6 12.8 87.3 0l164.3-75.9 34.1 15.8c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L13.9 277.8C5.4 273.8 0 265.3 0 256s5.4-17.9 13.9-21.8l34.1-15.8zM13.9 362.2l34.1-15.8 164.3 75.9c27.7 12.8 59.6 12.8 87.3 0l164.3-75.9 34.1 15.8c8.5 3.9 13.9 12.4 13.9 21.8s-5.4 17.9-13.9 21.8l-218.6 101c-14.9 6.9-32.1 6.9-47 0L13.9 405.8C5.4 401.8 0 393.3 0 384s5.4-17.9 13.9-21.8z"],link:[576,512,"M419.5 96c-16.6 0-32.7 4.5-46.8 12.7-15.8-16-34.2-29.4-54.5-39.5 28.2-24 64.1-37.2 101.3-37.2 86.4 0 156.5 70 156.5 156.5 0 41.5-16.5 81.3-45.8 110.6l-71.1 71.1c-29.3 29.3-69.1 45.8-110.6 45.8-86.4 0-156.5-70-156.5-156.5 0-1.5 0-3 .1-4.5 .5-17.7 15.2-31.6 32.9-31.1s31.6 15.2 31.1 32.9c0 .9 0 1.8 0 2.6 0 51.1 41.4 92.5 92.5 92.5 24.5 0 48-9.7 65.4-27.1l71.1-71.1c17.3-17.3 27.1-40.9 27.1-65.4 0-51.1-41.4-92.5-92.5-92.5zM275.2 173.3c-1.9-.8-3.8-1.9-5.5-3.1-12.6-6.5-27-10.2-42.1-10.2-24.5 0-48 9.7-65.4 27.1L91.1 258.2c-17.3 17.3-27.1 40.9-27.1 65.4 0 51.1 41.4 92.5 92.5 92.5 16.5 0 32.6-4.4 46.7-12.6 15.8 16 34.2 29.4 54.6 39.5-28.2 23.9-64 37.2-101.3 37.2-86.4 0-156.5-70-156.5-156.5 0-41.5 16.5-81.3 45.8-110.6l71.1-71.1c29.3-29.3 69.1-45.8 110.6-45.8 86.6 0 156.5 70.6 156.5 156.9 0 1.3 0 2.6 0 3.9-.4 17.7-15.1 31.6-32.8 31.2s-31.6-15.1-31.2-32.8c0-.8 0-1.5 0-2.3 0-33.7-18-63.3-44.8-79.6z"],zoomOut:[448,512,"M0 256c0-17.7 14.3-32 32-32l384 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 288c-17.7 0-32-14.3-32-32z"],pause:[384,512,"M48 32C21.5 32 0 53.5 0 80L0 432c0 26.5 21.5 48 48 48l64 0c26.5 0 48-21.5 48-48l0-352c0-26.5-21.5-48-48-48L48 32zm224 0c-26.5 0-48 21.5-48 48l0 352c0 26.5 21.5 48 48 48l64 0c26.5 0 48-21.5 48-48l0-352c0-26.5-21.5-48-48-48l-64 0z"],play:[448,512,"M91.2 36.9c-12.4-6.8-27.4-6.5-39.6 .7S32 57.9 32 72l0 368c0 14.1 7.5 27.2 19.6 34.4s27.2 7.5 39.6 .7l336-184c12.8-7 20.8-20.5 20.8-35.1s-8-28.1-20.8-35.1l-336-184z"],playFilled:[512,512,"M0 256a256 256 0 1 1 512 0 256 256 0 1 1 -512 0zM188.3 147.1c-7.6 4.2-12.3 12.3-12.3 20.9l0 176c0 8.7 4.7 16.7 12.3 20.9s16.8 4.1 24.3-.5l144-88c7.1-4.4 11.5-12.1 11.5-20.5s-4.4-16.1-11.5-20.5l-144-88c-7.4-4.5-16.7-4.7-24.3-.5z"],zoomIn:[448,512,"M256 64c0-17.7-14.3-32-32-32s-32 14.3-32 32l0 160-160 0c-17.7 0-32 14.3-32 32s14.3 32 32 32l160 0 0 160c0 17.7 14.3 32 32 32s32-14.3 32-32l0-160 160 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-160 0 0-160z"],share:[512,512,"M307.8 18.4c-12 5-19.8 16.6-19.8 29.6l0 80-112 0c-97.2 0-176 78.8-176 176 0 113.3 81.5 163.9 100.2 174.1 2.5 1.4 5.3 1.9 8.1 1.9 10.9 0 19.7-8.9 19.7-19.7 0-7.5-4.3-14.4-9.8-19.5-9.4-8.8-22.2-26.4-22.2-56.7 0-53 43-96 96-96l96 0 0 80c0 12.9 7.8 24.6 19.8 29.6s25.7 2.2 34.9-6.9l160-160c12.5-12.5 12.5-32.8 0-45.3l-160-160c-9.2-9.2-22.9-11.9-34.9-6.9z"],video:[576,512,"M96 64c-35.3 0-64 28.7-64 64l0 256c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-256c0-35.3-28.7-64-64-64L96 64zM464 336l73.5 58.8c4.2 3.4 9.4 5.2 14.8 5.2 13.1 0 23.7-10.6 23.7-23.7l0-240.6c0-13.1-10.6-23.7-23.7-23.7-5.4 0-10.6 1.8-14.8 5.2L464 176 464 336z"],audio:[640,512,"M533.6 32.5c-10.3-8.4-25.4-6.8-33.8 3.5s-6.8 25.4 3.5 33.8C557.5 113.8 592 180.8 592 256s-34.5 142.2-88.7 186.3c-10.3 8.4-11.8 23.5-3.5 33.8s23.5 11.8 33.8 3.5C598.5 426.7 640 346.2 640 256S598.5 85.2 533.6 32.5zM473.1 107c-10.3-8.4-25.4-6.8-33.8 3.5s-6.8 25.4 3.5 33.8C475.3 170.7 496 210.9 496 256s-20.7 85.3-53.2 111.8c-10.3 8.4-11.8 23.5-3.5 33.8s23.5 11.8 33.8 3.5c43.2-35.2 70.9-88.9 70.9-149s-27.7-113.8-70.9-149zm-60.5 74.5c-10.3-8.4-25.4-6.8-33.8 3.5s-6.8 25.4 3.5 33.8C393.1 227.6 400 241 400 256s-6.9 28.4-17.7 37.3c-10.3 8.4-11.8 23.5-3.5 33.8s23.5 11.8 33.8 3.5C434.1 312.9 448 286.1 448 256s-13.9-56.9-35.4-74.5zM80 352l48 0 134.1 119.2c6.4 5.7 14.6 8.8 23.1 8.8 19.2 0 34.8-15.6 34.8-34.8l0-378.4c0-19.2-15.6-34.8-34.8-34.8-8.5 0-16.7 3.1-23.1 8.8L128 160 80 160c-26.5 0-48 21.5-48 48l0 96c0 26.5 21.5 48 48 48z"],unmuted:[640,512,"M533.6 32.5c-10.3-8.4-25.4-6.8-33.8 3.5s-6.8 25.4 3.5 33.8C557.5 113.8 592 180.8 592 256s-34.5 142.2-88.7 186.3c-10.3 8.4-11.8 23.5-3.5 33.8s23.5 11.8 33.8 3.5C598.5 426.7 640 346.2 640 256S598.5 85.2 533.6 32.5zM473.1 107c-10.3-8.4-25.4-6.8-33.8 3.5s-6.8 25.4 3.5 33.8C475.3 170.7 496 210.9 496 256s-20.7 85.3-53.2 111.8c-10.3 8.4-11.8 23.5-3.5 33.8s23.5 11.8 33.8 3.5c43.2-35.2 70.9-88.9 70.9-149s-27.7-113.8-70.9-149zm-60.5 74.5c-10.3-8.4-25.4-6.8-33.8 3.5s-6.8 25.4 3.5 33.8C393.1 227.6 400 241 400 256s-6.9 28.4-17.7 37.3c-10.3 8.4-11.8 23.5-3.5 33.8s23.5 11.8 33.8 3.5C434.1 312.9 448 286.1 448 256s-13.9-56.9-35.4-74.5zM80 352l48 0 134.1 119.2c6.4 5.7 14.6 8.8 23.1 8.8 19.2 0 34.8-15.6 34.8-34.8l0-378.4c0-19.2-15.6-34.8-34.8-34.8-8.5 0-16.7 3.1-23.1 8.8L128 160 80 160c-26.5 0-48 21.5-48 48l0 96c0 26.5 21.5 48 48 48z"],muted:[576,512,"M48 352l48 0 134.1 119.2c6.4 5.7 14.6 8.8 23.1 8.8 19.2 0 34.8-15.6 34.8-34.8l0-378.4c0-19.2-15.6-34.8-34.8-34.8-8.5 0-16.7 3.1-23.1 8.8L96 160 48 160c-26.5 0-48 21.5-48 48l0 96c0 26.5 21.5 48 48 48zM367 175c-9.4 9.4-9.4 24.6 0 33.9l47 47-47 47c-9.4 9.4-9.4 24.6 0 33.9s24.6 9.4 33.9 0l47-47 47 47c9.4 9.4 24.6 9.4 33.9 0s9.4-24.6 0-33.9l-47-47 47-47c9.4-9.4 9.4-24.6 0-33.9s-24.6-9.4-33.9 0l-47 47-47-47c-9.4-9.4-24.6-9.4-33.9 0z"],close:[384,512,"M55.1 73.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L147.2 256 9.9 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192.5 301.3 329.9 438.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L237.8 256 375.1 118.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192.5 210.7 55.1 73.4z"]},ss=new Set(["chevronDown","linkExt"]),hs=class extends xi{static tag="micrio-icon";#ae="close";#ce;ln(){this.#le(),this.#ue()}At(t){t.name&&(this.#ae=t.name),this.isConnected&&(this.#le(),this.#ue())}#le(){const t=this.yn();this.#ce=t?.$current?.$settings?.ui?.icons?.[this.#ae]}#ue(){const t=this.#ce;if(t)return void(this.innerHTML=t);const i=is[this.#ae];if(!i)return void this.replaceChildren();const s=ts(i);ss.has(this.#ae)&&s.classList.add("small"),this.replaceChildren(s)}};customElements.define(hs.tag,hs);var es=class extends xi{static tag="micrio-button-group"};customElements.define(es.tag,es);var ns="100",os=80*Math.PI,rs={r:"40",cx:"50",cy:"50",fill:"transparent","stroke-width":"8px"},as=class extends xi{static tag="micrio-progress-circle";#de={};#fe;ln(){const t=_t("svg",{attrs:{width:ns,height:ns,viewBox:`0 0 ${ns} ${ns}`}});_t("circle",{attrs:{...rs,stroke:"#e0e0e0"},parent:t});const i=_t("circle",{attrs:{...rs,stroke:"#00d4ee","stroke-dasharray":`${os}px`},parent:t});this.appendChild(t),this.#fe=i,this.#pe()}At(t){Object.assign(this.#de,t),this.isConnected&&this.#pe()}#pe(){if(!this.#fe)return;const t=this.#de.progress??0,i=os*(1-t);this.#fe.setAttribute("stroke-dashoffset",`${i}px`)}};customElements.define(as.tag,as);var cs=class extends xi{static tag="micrio-logo";#me;#ge;#we=0;ln(){const t=this.yn();if(!t)return;const i=/micr\.io/.test(location.origin)&&self.parent==self?void 0:"_blank";this.#me=Mt("a",{props:{rel:"noopener",href:"https://micr.io/",title:"Powered by Micrio"},attrs:{"aria-label":"Micrio homepage"},parent:this}),i&&(this.#me.target=i),this.dn(t.xe.subscribe(t=>{clearTimeout(this.#ge),t?this.#we||(this.#ge=setTimeout(()=>{this.#we=1,this.#ve()},750)):(this.#we=0,this.#ve())})),this.dn(()=>clearTimeout(this.#ge))}un(){clearTimeout(this.#ge)}#ve(){this.#me&&this.#me.classList.toggle("loading",this.#we)}};customElements.define(cs.tag,cs);var ls=class extends xi{static tag="micrio-article";De(){this.cn.html&&(this.innerHTML=this.cn.html)}};customElements.define(ls.tag,ls);var us="micrio-captions-disable",ds=H("1"!=localStorage.getItem(us));ds.subscribe(t=>{t?localStorage.removeItem(us):localStorage.setItem(us,"1")});var fs=class extends xi{static tag="micrio-subtitles";#de={};#Me=[];#_e=0;#ye;#ms;ln(){this.#ms=ds.subscribe(()=>this.#be());const t=this.#de.mediaEl?.querySelector("video,audio")||(this.#de.mediaEl instanceof HTMLMediaElement?this.#de.mediaEl:void 0);if(t){const i=()=>{this.#_e=t.currentTime,this.#be()};t.addEventListener("timeupdate",i);const s=this.#ms;this.#ms=()=>{s?.(),t.removeEventListener("timeupdate",i)}}this.#de.src&&this.#pe()}At(t){const i=void 0!==t.src&&t.src!==this.#de.src;Object.assign(this.#de,t),i&&this.isConnected&&this.#pe()}#pe(){this.#de.src?(this.#Me=[],fetch(this.#de.src).then(t=>t.text()).then(t=>{const i=t.split("\n"),s=[];for(let h=0;h<i.length;h++)if(/-->/.test(i[h])){let t=h+1;const e=[];for(;!i[t]&&t<i.length;)t++;for(;i[t]&&i[t].trim();)e.push(i[t++]);const[n,o]=i[h].split(" --\x3e ").map(t=>t.trim().replace(",",".").split(":").map(Number)).map(t=>3===t.length?3600*t[0]+60*t[1]+t[2]:2===t.length?60*t[0]+t[1]:0);s.push({start:n,end:o,data:e.join("\n")}),h+=e.length+1}this.#Me=s,this.#be()}).catch(t=>console.error("micrio-subtitles: fetch error:",t))):this.replaceChildren()}#be(){if(!X(ds)||!this.#Me.length)return this.replaceChildren(),void(this.#ye=void 0);const t=this.#Me.find(t=>t.start<=this.#_e&&t.end>=this.#_e);t!==this.#ye&&(this.#ye=t,this.innerHTML=t?`<p>${t.data}</p>`:"")}un(){this.#ms?.()}};customElements.define(fs.tag,fs);var ps=class extends xi{static tag="micrio-details";#de={};#ke;ln(){this.yn()&&(this.#ke=Mt("details",{parent:this}),this.#ue())}At(t){void 0!==t.info&&(this.#de.info=t.info),void 0!==t.data&&(this.#de.data=t.data),this.isConnected&&this.#ue()}#ue(){const t=this.#de.info,i=this.#de.data,s=this.yn(),h=s?X(s.Wt):void 0,e=s?X(s.current):void 0;if(!t||!h||!e)return;const n=i?.i18n?i.i18n[h]:i,o=n?.title??t.title??"",r=n?.description,a=n?.sourceUrl,c=n?.copyright;(o||r||a)&&(this.#ke.replaceChildren(),o&&Mt("summary",{children:[Mt("span",{textContent:o})],parent:this.#ke}),r&&Mt("div",{innerHTML:r,parent:this.#ke}),a&&Mt("p",{parent:this.#ke,children:[Mt("a",{props:{href:a,target:"_blank",rel:"noopener noreferrer"},textContent:c||a})]}))}};customElements.define(ps.tag,ps);var ms=class extends xi{static tag="micrio-error";De(){this.replaceChildren(),Mt("div",{parent:this,children:[Mt("span",{textContent:this.cn.message??"An unknown error has occurred"})]})}};customElements.define(ms.tag,ms);var gs=class extends xi{static tag="micrio-controls";#de={};#xe=0;#Pe=0;#Te=0;#Se=0;#Ae="";#Ce=()=>{const t=this.yn();t&&t.Po.set(!X(t.Po))};#Ee=()=>{const t=this.yn();if(t&&navigator.share&&t.$current?.$info){const i=t.$current.$data?.i18n?.[X(t.Wt)];navigator.share({title:t.$current.$info?.title,text:i?.description||`${t.$current.$info.width} x ${t.$current.$info.height} | Micrio`,url:location.href})}};#Ie=t=>{this.yn().lang=t};#Le;#ze;#De;#Fe;#$e;#Oe;#Be;#Ve;ln(){const t=this.yn();if(!t)return;const{state:i,Wt:s}=t,{tour:h,popup:e}=i,n=t=>{this.#Pe=!!t.ui?.controls?.cultureSwitch,this.#Te=!!t.social,void 0!==t.fullscreen&&(this.#Se=!!t.fullscreen&&!!customElements.get("micrio-fullscreen")),this.#Re()};let o;t.$current&&n(t.$current.$settings),this.dn(t.current.subscribe(t=>{if(t){if(X(h)&&"steps"in X(h))return;o?.(),o=t.Lt.subscribe(n)}})),this.gn(h,()=>this.#Re()),this.gn(e,()=>this.#Re()),this.gn(s,()=>this.#Re()),this.gn(t.Po,()=>this.#Re());const r=new MutationObserver(()=>this.#Re());r.observe(t,{attributes:1,attributeFilter:["class"]}),this.dn(()=>r.disconnect()),this.#Ne(),this.#Re()}At(t){Object.assign(this.#de,t)}#Ne(){this.#xe||(this.#Le=Mt("aside",{parent:this}),this.#xe=1)}#Re(){if(!this.#xe||!this.isConnected)return;const t=this.yn();if(!t)return;const i=X(ji),s=X(t.Po),h=X(t.Wt),e=t.$current,n=!(e?.$settings)?.noZoom,o=X(t.state.popup),r=e?.$info,a=r?.revision?Object.keys(r.revision):[],c=t.canvas.$isMobile,l=!(!("micrioAudioContext"in window)&&!this.#de.hasAudio),u=this.#Pe&&a.length>1,d=this.#Te&&"share"in navigator,f=l||u||d||n||this.#Se,p=this.#Se&&!!o&&c,m=n&&!p&&!(e?.grid&&"cells"==e?.$settings?.grid?.panZoom),g=l||m||this.#Se;if(o&&c||!f)this.#Le.replaceChildren();else{if(u&&!p){this.#Fe?.isConnected||(this.#Fe?.remove(),this.#$e=void 0,this.#Ae="",this.#Fe=Mt("menu",{attrs:{tabindex:"0"},children:[Mt("micrio-button"),this.#$e=Mt("div")]}),this.#Le.prepend(this.#Fe)),this.#Fe.querySelector("micrio-button")?.At({type:"a11y",title:i.Qn});const t=this.#$e,s=a.join(",");if(s!==this.#Ae){this.#Ae=s,t.replaceChildren();for(const i of a)Mt("micrio-button",{setProps:{title:Vi?.of(i)??i,onclick:()=>{this.#Ie(i)}},children:[i.toUpperCase()],parent:t})}const e=t.querySelectorAll(":scope > micrio-button");for(let i=0;i<e.length;i++){const t=e[i].querySelector("button, a");t&&t.classList.toggle("active",a[i].toLowerCase()===h.toLowerCase())}}else this.#Fe?.isConnected&&this.#Fe.remove();d&&!p?(this.#De?.isConnected||(this.#De?.remove(),this.#De=Mt("micrio-button"),this.#Le.insertBefore(this.#De,this.#Oe?.isConnected?this.#Oe:null)),this.#De.At({type:"share",title:i.io,onclick:this.#Ee})):this.#De?.isConnected&&this.#De.remove(),g?(this.#Oe?.isConnected||(this.#Oe?.remove(),this.#Oe=Mt("micrio-button-group",{parent:this.#Le})),l?(this.#ze?.isConnected||(this.#ze?.remove(),this.#ze=Mt("micrio-button"),this.#Oe.prepend(this.#ze)),this.#ze.At({type:s?"muted":"unmuted",title:s?i.ho:i.so,onclick:this.#Ce})):this.#ze?.isConnected&&this.#ze.remove(),m?this.#Be?.isConnected||(this.#Be?.remove(),this.#Be=Mt("micrio-zoom-buttons"),this.#Ve?.isConnected?this.#Oe.insertBefore(this.#Be,this.#Ve):this.#Oe.appendChild(this.#Be)):this.#Be?.isConnected&&this.#Be.remove(),this.#Se?(this.#Ve?.isConnected||(this.#Ve?.remove(),this.#Ve=Mt("micrio-fullscreen",{parent:this.#Oe})),this.#Ve.At({el:t})):this.#Ve?.isConnected&&this.#Ve.remove()):this.#Oe?.isConnected&&this.#Oe.remove()}}};customElements.define(gs.tag,gs);var ws=class extends xi{static tag="micrio-fullscreen";#de={};#He=0;#ft=0;#Xe=()=>{const t=this.#de.el;t&&(this.#He?document.exitFullscreen():t.requestFullscreen())};ln(){this.#de?.el&&this.#Ge()}At(t){void 0!==t.el&&(this.#de.el=t.el,this.isConnected&&!this.#ft&&this.#Ge())}#Ge(){if(this.#ft)return;this.#ft=1;const t=this.#de.el;if(!("requestFullscreen"in t))return;this.#He=document.fullscreenElement===t;const i=this.yn(),s=i&&t==i&&!i.events.scrollHooked,h=()=>{this.#He=document.fullscreenElement===t,s&&(this.#He?i.events.hookScroll():i.events.unhookScroll()),this.#je()};document.addEventListener("fullscreenchange",h),this.dn(()=>document.removeEventListener("fullscreenchange",h)),this.#je()}#je(){this.replaceChildren();const t=X(ji);Mt("micrio-button",{setProps:{type:this.#He?"fullscreenLeave":"fullscreenEnter",title:t.Kn,onclick:this.#Xe},parent:this})}};customElements.define(ws.tag,ws);var vs=class extends xi{static tag="micrio-zoom-buttons";#Ye;#We;ln(){const t=this.yn();if(!t)return;const i=()=>{const i=X(t.Kt).filter(t=>t.id);return 1===i.length?i[0]:t.$current};this.#Ye=Mt("micrio-button",{parent:this}),this.#Ye.At({type:"zoomIn",onclick:()=>i()?.camera.zoomIn()}),this.#We=Mt("micrio-button",{parent:this}),this.#We.At({type:"zoomOut",onclick:()=>i()?.camera.zoomOut()});const s=()=>{const t=i(),s=X(ji);this.#Ye.At({title:s.qn,disabled:t?.camera.isZoomedIn()??1}),this.#We.At({title:s.Jn,disabled:t?.camera.isZoomedOut()})};this.dn(t.current.subscribe(()=>s())),this.dn(t.Kt.subscribe(()=>s()));const h=()=>s();t.Ct.push(h),this.dn(()=>{const i=t.Ct.indexOf(h);0>i||t.Ct.splice(i,1)}),s()}};function Ms(t){if("string"==typeof t)return t;let i=0,s=Math.max(t.width,t.height);for(;s>1024;)i++,s/=2;return t.micrioId&&t.width>1024?"https://r2.micr.io/"+t.micrioId+"/"+i+"/0-0."+(t.isPng?"png":t.isWebP?"webp":"jpg"):t.src}customElements.define(vs.tag,vs);var _s=class extends xi{static tag="micrio-logo-org";#de={organisation:null};ln(){this.yn()&&this.#ue()}At(t){void 0!==t.organisation&&(this.#de.organisation=t.organisation),this.isConnected&&this.#ue()}#ue(){const t=this.#de.organisation;t?.logo?(this.replaceChildren(),Mt("a",{props:{rel:"noopener",href:t.href??"#",title:t.name??"",target:"_blank"},attrs:{"aria-label":`${t.name} homepage`},children:[Mt("img",{props:{src:Ms(t.logo),alt:"Logo",crossOrigin:"anonymous"}})],parent:this})):this.replaceChildren()}};function ys(t,i){const s=t.$current;if(!s)return;const h=t.spaceData?.images.find(t=>t.id==s.id),e=t.spaceData?.images.find(t=>t.id==i);if(!h||!e)return;const n=[(e.x??.5)-(h.x??.5),(h.y??.5)-(e.y??.5),(e.z??.5)-(h.z??.5)];let o=n[0]*n[0]+n[1]*n[1]+n[2]*n[2];o>0&&(o=1/Math.sqrt(o));const r=[n[0]*o,n[1]*o,n[2]*o],a=tt(Math.atan2(-r[0],r[2])/Math.PI/2);return{v:n,vN:r,directionX:a,vector:{direction:a%1,distanceX:Math.max(0,Math.min(.4,Math.sqrt(r[0]*r[0]+r[2]*r[2]))),distanceY:-n[1]}}}customElements.define(_s.tag,_s);var bs=class extends xi{static tag="micrio-waypoint";#de={targetId:"",image:null};#Ue=0;#Ze=0;#qe;#Je;#Ke;#Qe;#tn;#Oh;#in;ln(){this.#sn(),this.#ue()}At(t){void 0!==t.targetId&&(this.#de.targetId=t.targetId),void 0!==t.image&&(this.#de.image=t.image),void 0!==t.settings&&(this.#de.settings=t.settings),this.isConnected&&(this.#sn(),this.#ue())}#sn(){const{targetId:t,image:i,settings:s}=this.#de;if(!i||!t)return;const h=this.yn();if(!h)return;const e=i.$info,n=ys(h,t);if(!n)return void console.error(`[Micrio] Could not calculate vector for target ${t}`);const{directionX:o,v:r,vN:a,vector:c}=n;this.#tn=c;const l=.3>Math.abs(a[1]),u=l?.65:.5+a[1]/10,d={x:o,y:u,baseScale:e.width/1024,scale:1,rotX:(1+(l?-(1-u):a[1]))*Math.PI/2,rotY:0,rotZ:0},f=s?.coords??structuredClone(d),p=f.custom;this.#Je=p?f:d,this.classList.toggle("direction-up",0>r[1]),this.classList.toggle("direction-down",r[1]>0);const m=()=>{this.#Ze||(this.style.transform=`matrix3d(${i.camera.getMatrix(this.#Je.x,this.#Je.y,this.#Je.baseScale*this.#Je.scale,1,this.#Je.rotX,this.#Je.rotY,this.#Je.rotZ,0,1,1,1).join(",")})`)},g=this;this.#Ke={coords:f,settings:s??{},click(){},get deleted(){return 0},set deleted(t){t&&(g.#Ze=1)}},m(),this.dn(i.state.view.subscribe(m)),N.t(t).then(t=>{t&&(this.#qe=t),this.#ue()}),h.dispatchEvent(new CustomEvent("wp-print",{detail:this.#Ke})),this.#Oh=()=>{i.$settings._markers?.noMarkerActions||(this.#Ue=1,i.zt=void 0,i.state.marker.set(void 0),h.open(t,{vector:this.#tn}))},this.#in=()=>{i.$settings._markers?.noMarkerActions||(this.parentNode?.scrollTo(0,0),clearTimeout(this.#Qe),this.#Qe=setTimeout(()=>{const t=i.camera.getXY(this.#Je.x,this.#Je.y);!this.#Ue&&(0>t[0]||t[0]>=h.offsetWidth||0>t[1]||t[1]>=h.offsetHeight||i.F&&t[3]>4)&&i.camera.flyToCoo([this.#Je.x,this.#Je.y],{speed:2,limit:1}).catch(()=>{})},150))}}#ue(){if(this.#Ze)return void(this.style.display="none");const{settings:t}=this.#de,i=this.yn(),s=i?X(i.Wt):"en",h=X(ji),e=i?.spaceData,n=t?.i18n?.[s]?.title||this.#qe?.i18n?.[s]?.title,o=e?.icons?.[t?.customIconIdx??-1];this.classList.toggle("clicked",this.#Ue),this.replaceChildren(),Mt("micrio-button",{setProps:{type:o?void 0:"up",icon:o||void 0,title:n??h.Mo,onclick:this.#Oh,onfocus:this.#in},parent:this})}un(){clearTimeout(this.#Qe)}};customElements.define(bs.tag,bs);var ks=class extends xi{static tag="micrio-marker-content";To;De(){const{marker:t,noEmbed:i=0,noImages:s=0,noGallery:h=0,onclose:e}=this.cn;if(!t)return;const n=this.yn(),o=xi.an,r=t.id?o.get(t.id):void 0;if(!n||!r)return;const a=X(n.Wt),c=`${t.id}::${a}::${i}::${s}::${h}`;if(!this.fn(c))return;const l=X(n.state.tour),u=l&&"steps"in l&&l.isSerialTour,d=r.$settings._markers??{},f=!d.preventAutoPlay,p=t.i18n?.[a],m=1==t.images?.length,g=!t.data?.preventImageOpen&&!h,w=r.jt?.includes("micrio.dev"),v=m&&t.images?.[0]?.i18n?.[a]?.description,M=t=>t.i18n?.[a]?.title,_=()=>{l&&"steps"in l&&(l.isSerialTour||d.tourAutoProgress)&&e?.()};if(p){if(this.replaceChildren(),p.title){const t=Mt("h1",{textContent:p.title,parent:this});this.To=t}if(p.body&&d.primaryBodyFirst&&Mt("micrio-article",{setProps:{html:p.body},parent:this}),!u&&(!p.embedUrl&&t.videoTour||p.audio)){const i=(t.videoTour?.i18n?.[a]?.audio??p?.audio)?.src,s=!f||!t?.audioAutoPlay;Mt("micrio-media",{setProps:{src:i,noPlayOverlay:1,image:r,uuid:t.id,tour:t.videoTour,autoplay:t.audioAutoPlay||!p.audio&&!!t.videoTour,controls:!t.videoTour||!p.embedUrl,onended:_,paused:s},parent:this})}if(!s&&t.images?.length){const i=Mt("section");for(const s of t.images){const h=Mt("button",{props:{title:M(s)??"",disabled:!g},events:g?{click(){return i=s.micrioId,void(g&&n.state.popover.set({gallery:t.images,galleryStart:i,image:r}));var i}}:void 0}),e=Mt("figure");Mt("img",{props:{alt:M(s)??"",src:s.micrioId?`https://iiif.${w?"micrio.dev":"micr.io"}/${s.micrioId}/full/${m?"^"+Math.min(s.width,640)+",":"^,320"}/0/default.webp`:s.src},parent:e}),v&&Mt("figcaption",{textContent:v,parent:e}),h.appendChild(e),i.appendChild(h)}this.appendChild(i)}if(p.embedUrl&&!i){!p.audio&&t.videoTour&&Mt("micrio-media",{setProps:{image:r,className:"hidden",uuid:t.id,tour:t.videoTour,autoplay:f,secondary:1},parent:this});const i=0==t?.embedAutoPlay||!f||!(!p?.audio||!t?.audioAutoPlay);Mt("micrio-media",{setProps:{image:r,src:p.embedUrl,uuid:t.id,width:400,height:240,controls:1,title:p.embedTitle,figcaption:p.embedDescription,autoplay:!i,onended:_,paused:i},parent:this})}p.body&&!d.primaryBodyFirst&&Mt("micrio-article",{setProps:{html:p.body},parent:this}),p.bodySecondary&&Mt("micrio-article",{setProps:{html:p.bodySecondary},parent:this})}else this.replaceChildren()}};customElements.define(ks.tag,ks);var xs=H(void 0),Ps=0;function Ts(){xs.set(void 0)}xs.subscribe(t=>{t?Ps||window.addEventListener("click",Ts):Ps&&window.removeEventListener("click",Ts),Ps=!!t});var Ss=class extends xi{static tag="micrio-menu";#de={menu:null,originalId:null};#hn;ln(){const{menu:t}=this.#de,i=this.yn();if(!i)return;const{Wt:s}=i;1!==t.children?.length||this.#en(t,X(s))?.title||(this.#de.menu=t.children[0]),this.#nn(),this.#ue(),this.mn(xs,()=>this.classList.toggle("opened",this.#on(this.#de.menu))),this.vn(s,j(Y(()=>{this.#nn(),this.#ue()})))}#nn(){const{menu:t,originalId:i}=this.#de,s=this.yn();if(!s)return;const{events:h,state:e,Wt:n}=s,o=this.#en(t,X(n)),r=t;this.#hn=void 0,t.action?this.#hn=t.action:t.markerId?this.#hn=()=>{i&&s.$current?.id!=i&&s.open(i),s.$current?.state.marker.set(t.markerId)}:(o?.content||o?.embed||t.image||r.content||r.embedUrl||o?.title&&!t.children?.length&&!t.link&&!t.markerId)&&(this.#hn=()=>{h.Et("page-open",t),e.popover.set({contentPage:t})})}At(t){Object.assign(this.#de,t)}#en(t,i){return t.i18n?.[i]??t}#on(t){const i=X(xs);if(!i)return 0;const s=t=>t===i||!!t.children?.some(s);return s(t)}#ue(){const{menu:t,originalId:i,onclose:s}=this.#de,h=this.yn();if(!h)return;const e=X(h.Wt),n=this.#en(t,e);this.replaceChildren(),this.classList.toggle("opened",this.#on(t)),this.setAttribute("data-title",n?.title?.toLowerCase()??"");const o=i=>{t.link||i.preventDefault(),t.children?.length&&i.stopPropagation(),this.#hn?.();const h=!!(this.#on(t)||this.#hn||t.link);xs.set(h?void 0:t),(this.#hn||t.link)&&s?.()};if(t.link){const i=Mt("a",{props:{href:t.link},events:{click:o},children:[Mt("strong",{textContent:n?.title??"(Unknown)",children:[Mt("micrio-icon",{setProps:{name:t.linkTargetBlank?"linkExt":"link"},style:{opacity:".75"}})]})],parent:this});t.linkTargetBlank&&(i.target="_blank")}else{const i=[n?.title??"(Unknown)"];t.children?.length&&i.push(Mt("micrio-icon",{setProps:{name:"chevronDown"}}));const s=[Mt("strong",{children:i})];t.icon&&s.unshift(ts(t.icon,{style:"height:1em;vertical-align:-.125em;margin-right:10px"})),Mt("button",{props:{type:"button"},events:{click:o},children:s,parent:this})}t.children?.length&&Mt("div",{parent:this,children:t.children.map(t=>Mt("micrio-menu",{setProps:{menu:t,originalId:i,onclose:Ts}}))})}};customElements.define(Ss.tag,Ss);var As=class extends xi{static tag="micrio-toolbar";#x;#rn;#an;#cn=0;#ln=0;#Xe=()=>{this.#cn=!this.#cn,this.#ue()};ln(){const t=this.yn();if(!t)return;const{Wt:i}=t;this.#ln=500>=window.innerWidth;const s=()=>{this.#ln=500>=window.innerWidth,this.#ln||(this.#cn=0),this.#ue()};this.#ue(),this.dn(t.current.subscribe(t=>{t&&(this.#rn?.(),this.#an?.(),this.#rn=t.data.subscribe(t=>{this.#x=t,this.#ue()}),this.#an=t.Lt.subscribe(()=>this.pn?.()))})),this.dn(()=>{this.#rn?.(),this.#an?.()}),this.dn(t.state.tour.subscribe(()=>this.#ue())),this.dn(t.state.marker.subscribe(()=>this.#ue())),this.dn(t.state.popover.subscribe(()=>this.#ue())),this.dn(i.subscribe(()=>this.#ue())),window.addEventListener("resize",s),this.dn(()=>window.removeEventListener("resize",s))}#ue(){const t=this.yn();if(!t)return;const{Wt:i,state:s}=t,h=X(i),e=t=>!!t.i18n?.[h],n=(t.bundleTours??[]).concat(this.#x?.markerTours??[]).filter(e);if(!this.#x&&!n.length)return;const o=X(s.tour),r=X(s.marker),a=X(s.popover),c=X(ji),l=t.$current?.id,u=!!o||!!r||!!a,d=n.length>0,f=this.#x?.tours?.filter(e)??[],p=f.length>0,m=d&&p,g=this.#x?.pages?this.#x.pages.filter(t=>!t.id?.startsWith("_")&&(t=>!!t.i18n?.[h])(t)).concat(this.#x.pages.filter(t=>t.id?.startsWith("_"))):void 0,w=!(g?.length||d||p),v=[(g||[]).map(t=>t.id).join(","),n.map(t=>t.id).join(",")+"|"+f.map(t=>t.id).join(","),u,h,this.#ln,this.#cn].join("::");if(!this.fn(v))return;if(w||u)return void this.replaceChildren();this.replaceChildren(),this.#ln&&this.#cn&&Mt("div",{className:"backdrop",events:{click:this.#Xe},parent:this});const M=Mt("menu",{className:(this.#ln&&this.#cn?"shown":"")||void 0}),_=()=>{this.#ln&&(this.#cn=0,this.#ue())};if(g)for(const y of g)Mt("micrio-menu",{setProps:{menu:y,originalId:l,onclose:_},parent:M});d&&Mt("micrio-menu",{setProps:{onclose:_,menu:{id:"marker-tours",i18n:{[h]:{title:m?c.yo:c._o}},children:n.map(t=>({id:t.id??S(),i18n:{[h]:{title:t.i18n?.[h]?.title??"(Untitled)"}},action(){t.initialStep=0,s.tour.set(t)}}))}},parent:M}),p&&Mt("micrio-menu",{setProps:{onclose:_,menu:{id:"video-tours",i18n:{[h]:{title:m?c.bo:c._o}},children:f.map(i=>({id:i.id??S(),i18n:{[h]:{title:i.i18n?.[h]?.title??"(Untitled)"}},action(){t.$current&&t.$current.id!=l&&t.open(l),s.tour.set(i)}}))}},parent:M}),this.appendChild(M),this.pn?.(),this.#ln&&Mt("micrio-button",{setProps:{title:c.vo,type:this.#cn?"close":"ellipsisVertical",className:"transparent"+(this.querySelector("menu.indent")?" indent":"")||void 0,onclick:this.#Xe},parent:this})}pn(){const t=this.querySelector("menu");if(t){const i=!this.yn()?.$current?.$settings?.noLogo;t.classList.toggle("indent",i)}}};customElements.define(As.tag,As);var Cs,Es,Is=class{#Gs;#un;#dn;#fn;#pn;#ms;constructor(t,i,s,h){this.#Gs=t,this.#Ge(i,s,h)}#Ge(t,i,s){const h=this.#Gs.$current.$info;if(!h)return;const e=h.width,n=h.height,o=t.positionalAudio;if(!o)return;this.#un=i.createGain(),this.#dn=i.createPanner(),this.#dn.panningModel="equalpower",this.#dn.rolloffFactor=1,this.#dn.coneOuterGain=0;const r=()=>{if(this.#un.gain.value=o.volume??1,s){this.#dn.refDistance=2.75*o.radius,this.#dn.maxDistance=o.radius*(11/3);const i=t.x*-Math.PI*2,s=(t.y-.5)*-Math.PI,h=Math.cos(s)*Math.sin(i)*11,e=11*Math.sin(s),n=Math.cos(s)*Math.cos(i)*11;this.#dn.positionX.value=h,this.#dn.positionY.value=e,this.#dn.positionZ.value=n;const[r,a,c]=rt(h,e,n);this.#dn.orientationX.value=r,this.#dn.orientationY.value=a,this.#dn.orientationZ.value=c}else this.#dn.distanceModel="linear",this.#dn.positionX.value=2*(t.x-.5),this.#dn.positionY.value=2*(.5-t.y)*(n/e),this.#dn.positionZ.value=-.2,this.#dn.rolloffFactor=2,this.#dn.refDistance=o.radius*o.radius*10,this.#dn.maxDistance=5*o.radius},a=()=>{this.#fn&&this.#fn.disconnect(),this.#fn=i.createBufferSource(),o.loop&&(o.repeatAfter>0?this.#fn.onended=()=>{this.#pn=setTimeout(a,1e3*o.repeatAfter)}:this.#fn.loop=1),this.#un.gain.value=o.volume??1,this.#fn.buffer=window.__micrioAudioBuffers?.[o.src]??null,this.#fn.buffer&&(this.#fn.connect(this.#dn),this.#fn.start())};r(),this.#dn.connect(this.#un),this.#un.connect(Cs??i.destination),(async()=>{if(!o.src)return;const t=window.__micrioAudioBuffers||{};t[o.src]||(t[o.src]=await fetch(o.src).then(t=>t.arrayBuffer()).then(t=>i.decodeAudioData(t)),window.__micrioAudioBuffers=t),o.alwaysPlay&&o.repeatAfter>0?this.#pn=setTimeout(a,1e3*o.repeatAfter):a()})(),this.#Gs.addEventListener("audio-update",r),this.#ms=()=>this.#Gs.removeEventListener("audio-update",r)}#sh(){this.#fn&&this.#fn.disconnect(),clearTimeout(this.#pn),this.#dn.disconnect(),this.#un.disconnect()}destroy(){this.#ms?.(),this.#sh()}},Ls=null,zs=H(0);function Ds(t,i,s){Es&&(Es.setPosition?Es.setPosition(t,i,s):"positionX"in Es&&(Es.positionX.value=t,Es.positionY.value=i,Es.positionZ.value=s))}function Fs(t,i,s){Es&&(Es.setOrientation?Es.setOrientation(t,i,s,0,1,0):"forwardX"in Es&&(Es.forwardX.value=t,Es.forwardY.value=i,Es.forwardZ.value=s))}var $s=class{#mn=new Audio;#gn;#wn;#vn=-1;constructor(t,i,s){this.#gn=t,this.#wn=i,this.#mn.preload="none",this.#mn.loop=0,this.#mn.volume=s,this.#mn.onended=()=>this.#Mn(),this.#Mn()}#Mn(){if(!this.#wn&&this.#vn+1===this.#gn.length)return;const t=this.#gn[++this.#vn%this.#gn.length];this.#mn.src=t.src??"",this.#mn.play()}destroy(){this.#mn.pause()}},Os=class{#Gs;#d;#_n;#yn=[];#bn=[];constructor(t,i){this.#Gs=t,this.#d=i,this.#Ge()}#kn(t){for(const e of this.#bn)e.destroy();if(this.#bn=[],!Ls||!t)return;const i=t.$info;if(!i)return;const s=!!i.is360,h=t.$data?.markers?.filter(t=>!!t.positionalAudio);if(h?.length)for(const e of h)this.#bn.push(new Is(this.#Gs,e,Ls,s))}#Ge(){const t=this.#Gs,i=this.#d,{events:s}=t,h=i.$info;if(!h)return;const e=!!h.is360,n=h.height/h.width;if(!("AudioContext"in window))return;const o=()=>zs.set(1),r=()=>{"suspended"===Ls?.state?Ls.resume().then(()=>{}).catch(()=>{}):Ls||o()},a=new Audio("data:audio/mpeg;base64,...");a.volume=Et.iOS?0:1e-4,document.body.appendChild(a),this.#yn.push(zs.subscribe(s=>{if(!s)return;const h=X(t.Po)?0:1;Ls||(t=>{if(!Cs){if(Ls||(Ls="micrioAudioContext"in window?window.micrioAudioContext:new AudioContext),!Ls)return console.warn("[Micrio] Your browser does not support the Web Audio API");"suspended"===Ls.state&&Ls.resume().then(()=>{}).catch(()=>{}),(Cs=Ls.createGain()).connect(Ls.destination),Cs.gain.value=t,"upX"in(Es=Ls.listener)&&(Es.upX.value=0,Es.upY.value=1,Es.upZ.value=0)}})("number"==typeof h?h:1),Ls&&(i.$data?.markers?.filter(t=>!!t.positionalAudio).length&&this.#yn.push(i.state.view.subscribe(t=>{if(!t)return;const s=Math.max(0,1.05-i.camera.getScale());((t,i,s)=>{if(e){t*=2*-Math.PI,i-=.5,i*=-Math.PI;const h=10*(1-s),e=Math.cos(i)*Math.sin(t)*h,n=Math.sin(i)*h,o=Math.cos(i)*Math.cos(t)*h;Ds(e,n,o);const[r,a,c]=rt(e,n,o);Fs(r,a,c)}else Ds(2*(t-.5),2*(.5-i)*n,s),Fs(0,0,-1)})(t[0]+t[2]/2,t[1]+t[3]/2,s*(e?1:1.5))})),this.#kn(t.$current))})),this.#yn.push(t.current.subscribe(t=>{t&&Ls&&this.#kn(t)})),Ls||(a.play().then(o).catch(()=>s.Et("autoplay-blocked")),addEventListener("pointerup",r,{once:1}));const c=i.$data;if(c?.music?.items.length){const i=X(t.Po)?0:1;this.#_n=new $s(c.music.items,c.music.loop??1,i*(c.music.volume??1))}this.#yn.push(t.Po.subscribe(t=>{Cs&&(Cs.gain.value=t?0:1)})),this.#yn.push(()=>{a.remove(),removeEventListener("pointerup",r)})}destroy(){for(const t of this.#bn)t.destroy();this.#bn=[];for(const t of this.#yn)t();this.#yn=[],this.#_n?.destroy()}},Bs=class{#xn=[];#Pn;#Tn;#mh;#Sn=1;#An=0;#Z;#Cn=0;#En;#In=0;#Ln;#Gs;#d;#x;constructor(t,i){this.#d=t,this.#x=i,this.#Gs=t.engine.micrio;const s=i.i18n?.[X(this.#Gs.Wt)];if(!s)throw new Error("No valid content for video tour!");this.#Ln=s,this.#In=!i.keepInteraction&&this.#Gs.events.$enabled,i.instance=this,this.read(),this.#zn(),this.#Gs.events.Et("videotour-start",this.#x)}destroy(){this.#In&&this.#Gs.events.enabled.set(1),this.#Dn(),this.#Gs.removeAttribute("data-video-tour-active"),clearTimeout(this.#mh),this.#An&&(this.#d.camera.stop(),this.#An=0),this.#Gs.events.Et("videotour-stop",this.#x),this.#En=void 0,this.#x.instance=void 0,this.#Tn=void 0}read(){const t=this.#Ln.timeline;this.#xn=[];for(let i=0;i<t.length;i++){const s=t[i],h=t[i-1],e=h?h.end:0;this.#xn.push({view:s.rect,start:1e3*e,duration:1e3*(s.start-e),pauseDuration:1e3*(s.end-s.start)})}this.#En&&!this.#An&&(this.progress=this.currentTime)}#zn(){const t=this.#Ln.events;if(!t?.length)return;const i=this.duration;for(const s of t)s.start=Number(s.start||0),s.end=Math.min(Number(s.end||0),i)}#Dn(){const t=this.#Ln.events;if(t?.length)for(const i of t)i.active&&(i.active=0,this.#Gs.events.Et("tour-event",{...i}))}updateEvents(t){const i=this.#Ln.events;if(i?.length)for(const s of i){const i=s.start<=t&&s.end>=t;i!=!!s.active&&(s.active=i,this.#Gs.events.Et("tour-event",{...s}))}}get duration(){return Number(this.#Ln.duration)}set duration(t){this.#Ln.duration=t}get paused(){return this.#Sn}get ended(){return this.currentTime>=this.duration}get currentTime(){return(this.#Z??(this.#En?Date.now()-this.#En:0))/1e3}set currentTime(t){this.#Fn(t/this.#Ln.duration)}get progress(){return this.currentTime/this.#Ln.duration}set progress(t){this.#Fn(t)}play(){this.#$n(),this.#Cn=0,this.#Z?(this.#En=Date.now()-this.#Z,this.#Sn=0,this.#On(this.#Z),this.#Z=void 0):this.#An||(this.#En=Date.now(),void 0===this.#Tn?this.#Bn(0,0):this.#On(this.duration*this.#Tn*1e3),this.#Tn=void 0),this.#Sn=0,this.#An=1}pause(){this.#Sn||null==this.#Pn||null==this.#En||(this.#Sn=1,this.#Vn(),clearTimeout(this.#mh),0>this.#Pn||this.#d.camera.stop(),this.ended?this.#ls():this.#Z=Date.now()-this.#En)}#ls(){this.#Vn(),this.#Z=void 0,this.#An=0,this.read()}#Bn(t,i){if(null==this.#En)return;if(clearTimeout(this.#mh),!this.#xn[t]){if(!this.paused||!this.#Cn){const t=Math.max(0,Math.round(1e3*this.duration-(Date.now()-this.#En)));t>0&&(this.#mh=setTimeout(()=>this.pause(),t))}return}const s=this.#xn[t],h=Math.round(s.start-(Date.now()-this.#En));this.#Pn=t,this.#d.camera.stop(),h>0?this.#Sn||(this.#mh=setTimeout(()=>this.#Rn(i),h)):this.#Rn(i)}#Nn(){null!=this.#Pn&&this.#Bn(this.#Pn+1)}#Rn(t=0){if(null==this.#Pn||isNaN(t))return;const i=this.#xn[this.#Pn];if(!i)return;const s=this.#xn[this.#Pn-1]?.view;if(this.#Cn&&s){const h=dt.get(t),e=et(s),n=et(i.view);this.#d.camera.setView([e.centerX*(1-h)+n.centerX*h-(e.width*(1-h)+n.width*h)/2,e.centerY*(1-h)+n.centerY*h-(e.height*(1-h)+n.height*h)/2,e.width*(1-h)+n.width*h,e.height*(1-h)+n.height*h],{noLimit:1}),this.#Nn()}else this.#d.camera.flyToView(i.view,{duration:i.duration,progress:t,prevView:s}).then(()=>{null!=this.#Pn&&i===this.#xn[this.#Pn]&&this.#Nn()}).catch(()=>{})}#$n(){this.#Gs.setAttribute("data-video-tour-active",""),this.#Gs.events.Et("videotour-play"),this.#In&&this.#Gs.events.enabled.set(0)}#Vn(){this.#Gs.events.Et("videotour-pause"),this.#In&&this.#Gs.events.enabled.set(1)}#Fn(t){t=Math.max(0,Math.min(1,t)),this.#Cn=!!this.paused||!this.#An,this.pause(),this.#Cn||(this.#Sn=0,this.#$n());const i=this.duration*t*1e3;this.#Z=i,this.#On(i),this.#Cn?this.pause():(this.#Z=void 0,this.#Sn=0)}#On(t){let i,s=0;for(;s<this.#xn.length&&this.#xn[s].start<=t;s++)i=this.#xn[s];if(!i)return this.#xn.length&&this.#d.camera.stop(),this.paused||this.#Bn(0),void this.updateEvents(t/1e3);this.#d.camera.stop();const h=i.duration>0?(t-i.start)/i.duration:0;this.#En=Date.now()-i.start-i.duration*h,h>1?(this.#Bn(s),i.view&&this.#d.camera.setView(i.view,{noLimit:1})):(s>1&&this.#d.camera.setView(this.#xn[s-2].view,{noLimit:1}),this.#Bn(s-1,h)),this.updateEvents(t/1e3)}},Vs={UNSTARTED:-1,ENDED:0,PLAYING:1,PAUSED:2,BUFFERING:3,CUED:5},Rs=class{#Hn;#Xn=0;#Gn;#jn;#Yn;constructor(t,i,s={}){this.#Gn=t,this.#jn=i,this.#Yn=s}async initialize(){return await xt("YT","https://r2.micr.io/youtube.js","onYouTubeIframeAPIReady"),new Promise((t,i)=>{this.#Hn=new window.YT.Player(this.#Gn,{host:"https://www.youtube-nocookie.com",width:this.#jn.width.toString(),height:this.#jn.height.toString(),playerVars:{controls:0},events:{onError:()=>{this.#Yn.onError?.(new Error("YouTube player error")),i(new Error("YouTube player error"))},onReady:()=>{this.#Xn?i(new Error("Player destroyed during initialization")):(this.#Yn.onReady?.(),this.#Yn.onDurationChange?.(this.#Hn.getDuration()),t())},onStateChange:t=>this.#Wn(t.data)}})})}#Wn(t){switch(t){case Vs.UNSTARTED:this.#Yn.onBlocked?.(),this.#Yn.onPause?.();break;case Vs.ENDED:this.#Yn.onEnded?.();break;case Vs.PLAYING:this.#Yn.onPlay?.(),this.#Yn.onSeeked?.();break;case Vs.PAUSED:this.#Yn.onPause?.();break;case Vs.BUFFERING:this.#Yn.onBuffering?.(),this.#Yn.onSeeking?.()}}async play(){this.#Hn?.playVideo()}pause(){this.#Xn||this.#Hn?.pauseVideo?.()}async getCurrentTime(){return this.#Hn?.getCurrentTime?.()??0}setCurrentTime(t){this.#Yn.onSeeking?.(),this.#Hn?.seekTo?.(t)}async getDuration(){return this.#Hn?.getDuration?.()??0}async isPaused(){if(!this.#Hn)return 1;const t=this.#Hn.getPlayerState?.();return void 0===t||[Vs.UNSTARTED,Vs.ENDED,Vs.PAUSED,Vs.CUED].includes(t)}setMuted(t){t?this.#Hn?.mute?.():this.#Hn?.unMute?.()}setVolume(t){}destroy(){this.#Xn=1,this.#Hn?.destroy?.(),this.#Hn=void 0}},Ns=class{#Hn;#Xn=0;#Gn;#jn;#Yn;constructor(t,i,s={}){this.#Gn=t,this.#jn=i,this.#Yn=s}async initialize(){return await xt("Vimeo","https://r2.micr.io/vimeo.min.js"),new Promise((t,i)=>{this.#Hn=new window.Vimeo.Player(this.#Gn,{width:this.#jn.width.toString(),height:this.#jn.height.toString(),title:0,autoplay:0});const s=this.#Hn;s.on("error",()=>{this.#Yn.onError?.(new Error("Vimeo player error")),i(new Error("Vimeo player error"))}),s.on("loaded",()=>{this.#Xn?i(new Error("Player destroyed during initialization")):s.getVolume().then(()=>{this.#Yn.onReady?.(),t()})}),s.on("play",()=>{this.#Yn.onPlay?.(),this.#Yn.onSeeked?.()}),s.on("bufferstart",()=>{this.#Yn.onBuffering?.(),this.#Yn.onSeeking?.()}),s.on("seeked",()=>{this.#Yn.onSeeked?.()}),s.on("pause",()=>{this.#Yn.onPause?.()}),s.on("timeupdate",t=>{t&&(this.#Yn.onDurationChange?.(t.duration),this.#Yn.onTimeUpdate?.(t.seconds))}),s.on("ended",()=>{this.#Yn.onEnded?.()})})}async play(){this.#Hn?.play()}pause(){this.#Hn?.pause()}async getCurrentTime(){return await(this.#Hn?.getCurrentTime?.())??0}setCurrentTime(t){this.#Hn?.setCurrentTime?.(t)}async getDuration(){return await(this.#Hn?.getDuration?.())??0}async isPaused(){return await(this.#Hn?.getPaused?.())??1}setMuted(t){this.#Hn?.setVolume?.(t?0:1)}setVolume(t){this.#Hn?.setVolume?.(Math.max(0,Math.min(1,t)))}destroy(){if(this.#Xn=1,this.#Hn){for(const t of["error","loaded","play","bufferstart","seeked","pause","volumechange","timeupdate","ended"])this.#Hn.off(t);this.#Hn.destroy(),this.#Hn=void 0}}},Hs=class{element;callbacks;constructor(t,i={}){this.element=t,this.callbacks=i,this.#Un()}#Un(){const t=this.element,i=this.callbacks;i.onPlay&&t.addEventListener("play",i.onPlay),i.onPause&&t.addEventListener("pause",i.onPause),i.onEnded&&t.addEventListener("ended",i.onEnded),i.onSeeking&&t.addEventListener("seeking",i.onSeeking),i.onSeeked&&t.addEventListener("seeked",i.onSeeked),i.onTimeUpdate&&t.addEventListener("timeupdate",()=>i.onTimeUpdate?.(t.currentTime)),i.onDurationChange&&t.addEventListener("durationchange",()=>i.onDurationChange?.(t.duration)),i.onError&&t.addEventListener("error",()=>i.onError?.(new Error("Media playback error"))),i.onReady&&t.addEventListener("canplay",i.onReady)}async play(){try{await this.element.play()}catch(t){throw t instanceof Error&&!/pause\(\)/.test(t.message)&&this.callbacks.onBlocked?.(),t}}pause(){this.element.pause()}async getCurrentTime(){return this.element.currentTime}setCurrentTime(t){this.element.currentTime=t}async getDuration(){return this.element.duration}async isPaused(){return this.element.paused}setMuted(t){this.element.muted=t}setVolume(t){this.element.volume=Math.max(0,Math.min(1,t))}destroy(){const t=this.element,i=this.callbacks;i.onPlay&&t.removeEventListener("play",i.onPlay),i.onPause&&t.removeEventListener("pause",i.onPause),i.onEnded&&t.removeEventListener("ended",i.onEnded),i.onSeeking&&t.removeEventListener("seeking",i.onSeeking),i.onSeeked&&t.removeEventListener("seeked",i.onSeeked)}},Xs="https://r2.micr.io/hls-1.6.15.min.js",Gs={abrEwmaDefaultEstimate:1e7,abrEwmaDefaultEstimateMax:5e7},js=()=>"MediaSource"in globalThis||"ManagedMediaSource"in globalThis,Ys=t=>`https://videodelivery.net/${t}/manifest/video.m3u8`,Ws=class extends Hs{#Zn;#Xn=0;#qn;constructor(t,i,s={}){super(t,s),this.#qn=i}async initialize(){if(await xt("Hls",Xs),this.#Xn)throw new Error("Adapter destroyed during initialization");const t=new window.Hls(Gs);this.#Zn=t,t.loadSource(this.#qn),t.attachMedia(this.element),this.callbacks.onReady?.()}destroy(){this.#Xn=1,super.destroy(),this.#Zn?.destroy(),this.#Zn=void 0}};function Us(t){if(isNaN(t))return"0:00";const i=new Date(1e3*Math.abs(t)).toISOString().slice(11,19);return(0>t?"-":"")+(i.startsWith("00:")?i.slice(3):i)}var Zs=class extends xi{static tag="micrio-media-controls";#de={paused:1,ended:0};#Jn;#Kn;#Qn;#to;#io;#so;#ho;#xe=0;#eo;#no=0;#oo=0;#ro=-1;#L="";ln(){this.#Ne(),this.dn(ds.subscribe(()=>this.#Re()))}At(t){Object.assign(this.#de,t),this.isConnected&&(this.#Ne(),this.#xe&&this.#Re())}#Ne(){const t=this.#de;if(!this.#xe){this.#xe=1,this.#Jn=Mt("aside",{events:{click:t=>t.stopPropagation(),keydown:t=>t.stopPropagation()},parent:this}),this.#Kn=Mt("micrio-button",{parent:this.#Jn}),t.hasAudio&&(this.#Qn=Mt("micrio-button",{parent:this.#Jn})),t.subtitles&&(this.#to=Mt("micrio-button",{parent:this.#Jn}));const i=Mt("div"),s=Mt("div",{attrs:{"data-part":"bars"},children:[this.#so=Mt("div",{attrs:{"data-part":"bar"}})]}),h=t=>{0==t.button&&(window.addEventListener("mousemove",e),window.addEventListener("mouseup",n),e(t))},e=t=>{const i=s.getClientRects()[0];if(!i)return;const h=Math.min(1,Math.max(0,(t.clientX-i.left)/i.width));this.#de.onseek?.(h*this.#de.duration)},n=()=>{window.removeEventListener("mousemove",e),window.removeEventListener("mouseup",n)};s.addEventListener("mousedown",h),i.appendChild(s),this.#ho=Mt("span",{parent:i}),this.#Jn.appendChild(i),t.fullscreenEl&&(this.#io=Mt("micrio-fullscreen",{parent:this.#Jn})),t.onclose&&Mt("micrio-button",{setProps:{type:"close",title:X(ji).Zn,onclick:t.onclose},parent:this.#Jn})}this.#Re()}#Re(){const t=this.#de,i=X(ji),s=X(ds);if(t.paused===this.#eo&&t.seeking===this.#no&&void 0!==this.#eo||(this.#eo=t.paused,this.#no=!!t.seeking,this.#Kn.At({type:t.paused?"play":"pause",title:t.paused?i.co:i.lo,disabled:!!t.seeking,onclick:t.onplaypause})),this.#Qn&&t.muted!==this.#oo&&(this.#oo=!!t.muted,this.#Qn.At({type:t.muted?"muted":"unmuted",title:t.muted?i.ho:i.so,disabled:t.seeking,onclick:t.onmute})),this.#to&&this.#to.At({type:s?"subtitles":"subtitlesOff",active:s,title:i.do,onclick:()=>ds.set(!X(ds))}),this.#io&&this.#io.At({el:t.fullscreenEl}),t.duration&&!isNaN(t.duration)){const i=(t.currentTime??0)/t.duration*100;(Math.abs(i-this.#ro)>.5||0===i)&&(this.#ro=i,this.#so.style.width=`${i}%`);const s=t.getTimeDisplay?t.getTimeDisplay(t.currentTime??0,t.duration):(0>t.duration-(t.currentTime??0)?"":"-")+(t=>new Date(1e3*Math.abs(t)).toISOString().slice(14,19))(Math.abs(t.duration-(t.currentTime??0)));s!==this.#L&&(this.#L=s,this.#ho.textContent=s)}else"0:00"===this.#L&&0===this.#ro||(this.#L="0:00",this.#ro=0,this.#ho.textContent="0:00",this.#so.style.width="0%")}};customElements.define(Zs.tag,Zs);var qs,Js=/((?:https?:)?\/\/)?((?:www|m)\.)?((?:youtube\.com|youtu.be|youtube-nocookie\.com))(\/(?:[\w\-]+\?v=|embed\/|v\/)?)([\w\-]+)(\S+)?/,Ks=/vimeo\.com/,Qs=0,th=class extends xi{static tag="micrio-media";#ao;#co;#Gn;#qn;#lo;#uo;#do=1;#fo=0;#W=0;#_e=0;#po=0;#mo=0;#go;#wo(t,i,s){const h=t.match(Js)?.[5];if(!h)return;const e=Mt("iframe",{props:{src:`https://www.youtube-nocookie.com/embed/${h}?autoplay=${i.autoplay?1:0}&playsinline=1&enablejsapi=1`,width:String(i.width??400),height:String(i.height??240)},attrs:{allow:"autoplay; encrypted-media",allowfullscreen:""},parent:s});this.#Gn=e}#vo(t,i,s){const h=t.match(/\/(\d+)/);if(!h?.[1])return;const e=h[1],n=t.slice(t.indexOf(e)+e.length+1).replace(/\?.*$/,"")||void 0,o=Mt("iframe",{props:{src:`https://player.vimeo.com/video/${e}?${n?`h=${n}&`:""}title=0&portrait=0&sidedock=0&byline=0&controls=0`,width:String(i.width??400),height:String(i.height??240)},attrs:{allow:"autoplay; fullscreen",allowfullscreen:""},parent:s});this.#Gn=o}#Mo(t,i,s){const h=Ys(t.slice(8)),e=Mt("video",{props:{src:h,width:i.width??400,height:i.height??240,controls:0,preload:"metadata",playsInline:1,crossOrigin:"anonymous",...i.autoplay?{autoplay:1}:{},...i.muted?{muted:1}:{}},parent:s});this.#ao=e,this.#_o(e),this.#qn=h}#yo(t,i,s){if(!(this.#ao instanceof HTMLAudioElement)){const t=(qs||((qs=document.createElement("audio")).style.display="none",qs.controls=0,qs.preload="metadata",document.body.appendChild(qs)),Qs++,qs);this.#ao=t,this.#_o(t),this.dn(()=>{--Qs>0||(Qs=0,qs?.remove(),qs=void 0),this.#ao=void 0})}const h=this.#ao;h.src=t,i.autoplay?h.setAttribute("autoplay",""):h.removeAttribute("autoplay"),h.muted=!!i.muted}#bo(t,i,s){const h=Mt("iframe",{props:{src:t,width:String(i.width??400),height:String(i.height??240)},attrs:{allow:"autoplay; fullscreen",allowfullscreen:""},parent:s});this.#Gn=h}De(){const t=this.cn,i=t.src;if(!i&&!t.tour)return void this.replaceChildren();const s=i?Js.test(i):0,h=i?Ks.test(i):0,e=i?i.startsWith("cfvid://"):0,n=i?i.includes(".mp3")||i.includes(".ogg")||i.includes(".wav")||i.includes("audio/"):0,o=!(!i||s||h||e||n),r=!!t.tour&&!!t.image&&!i;this.replaceChildren();const a=Mt("figure",{className:t.className});if(t.is360&&a.style.setProperty("--micrio-background","transparent"),s?this.#wo(i,t,a):h?this.#vo(i,t,a):e?this.#Mo(i,t,a):n&&i?this.#yo(i,t,a):i&&this.#bo(i,t,a),t.figcaption&&Mt("figcaption",{textContent:t.figcaption,parent:a}),this.appendChild(a),this.#Gn){const i=t.width??400,e=t.height??240;s?(this.#lo=new Rs(this.#Gn,{width:i,height:e},{onPlay:()=>{this.#do=0,this.#ko(),this.#xo()},onPause:()=>{this.#do=1,this.#Po(),this.#xo()},onEnded:()=>{this.#fo=1,this.#do=1,this.#Po(),this.#xo(),t.onended?.()},onSeeking:()=>{this.#po=1},onSeeked:()=>{this.#po=0,this.#xo()}}),this.#lo.initialize().then(()=>{t.autoplay&&this.#lo.play()}).catch(()=>{})):h&&(this.#lo=new Ns(this.#Gn,{width:i,height:e},{onPlay:()=>{this.#do=0,this.#xo()},onPause:()=>{this.#do=1,this.#xo()},onEnded:()=>{this.#fo=1,this.#do=1,this.#xo(),t.onended?.()},onTimeUpdate:t=>{this.#_e=t,this.#xo()},onDurationChange:t=>{this.#W=t}}),this.#lo.initialize().then(()=>{t.autoplay&&this.#lo.play()}).catch(()=>{}))}if(e&&this.#qn&&this.#ao&&js()&&(this.#lo=new Ws(this.#ao,this.#qn,{onReady:()=>{this.#xo()},onEnded:()=>{this.#fo=1,this.#do=1,this.#xo(),t.onended?.()}}),this.#lo.initialize().catch(()=>{})),t.tour&&t.image&&(this.#ao||r)){if(this.#co=new Bs(t.image,t.tour),this.#ao){const t=()=>this.#co?.play();this.#ao.addEventListener("play",t),this.dn(()=>this.#ao?.removeEventListener("play",t))}if(r){this.#W=this.#co.duration;const i=setInterval(()=>{this.#_e=this.#co.currentTime,this.#W=this.#co.duration,this.#do=this.#co.paused,this.#fo=this.#co.ended,this.#co.updateEvents(this.#_e),this.#xo(),t.secondary||this.yn()?.dispatchEvent(new CustomEvent("timeupdate",{detail:this.#_e})),!this.#fo||this.#ao&&!this.#ao.ended||t.onended?.()},250);this.dn(()=>clearInterval(i)),t.autoplay&&this.#co.play()}else{const t=()=>this.#co?.pause();this.#ao?.addEventListener("ended",t),this.dn(()=>this.#ao?.removeEventListener("ended",t)),this.#ao?.paused||this.#co?.play()}}if(!t.secondary&&t.tour&&!("steps"in t.tour)){const i=this.yn()?.lang||"en",s=t.tour.i18n?.[i]?.subtitle;s?.src&&(this.#go=Mt("micrio-subtitles",{setProps:{src:s.src,mediaEl:this.#ao??this},parent:this.closest("micrio-main")||this.parentNode}))}if(0!=t.controls&&!o){const i=!(t.secondary||!t.tour||"steps"in t.tour||!t.tour.i18n?.[this.yn()?.lang||"en"]?.subtitle),s=()=>{const t=this.#ao;t?t.paused?(t.play().catch(()=>{}),this.#co?.play()):(t.pause(),this.#co?.pause()):this.#co?this.#co.paused?this.#co.play():this.#co.pause():this.#lo&&this.#lo.isPaused().then(t=>{t?this.#lo.play():this.#lo.pause()})},h=()=>{const t=this.#ao;t?(this.#mo=!this.#mo,t.muted=this.#mo,this.#xo()):this.#lo&&(this.#mo=!this.#mo,this.#lo.setMuted(this.#mo),this.#xo())},e=t=>{const i=this.#ao;i?i.currentTime=t:this.#co?this.#co.currentTime=t:this.#lo&&this.#lo.setCurrentTime(t)},o=()=>{const o=this.#ao;if(!o)return this.#co?void 0:void this.#lo;this.#_e=o.currentTime,this.#W=o.duration||0,this.#do=o.paused,this.#fo=o.ended||0,this.#po=o.seeking,this.#mo=o.muted,c.At({currentTime:this.#_e,duration:this.#W,paused:this.#do,ended:this.#fo,seeking:this.#po,muted:this.#mo,hasAudio:t.hasAudio??(!!t.src&&!n),subtitles:i,getTimeDisplay:t.getTimeDisplay,fullscreenEl:t.fullscreenEl??(n?void 0:a),onplaypause:s,onmute:h,onseek:e,onclose:t.onclose})},c=Mt("micrio-media-controls",{setProps:{paused:1,ended:0,hasAudio:t.hasAudio??(!!t.src&&!n),subtitles:i,getTimeDisplay:t.getTimeDisplay,fullscreenEl:t.fullscreenEl??(n?void 0:a),onplaypause:s,onmute:h,onseek:e,onclose:t.onclose},parent:a});if(this.#ao&&(this.#ao instanceof HTMLVideoElement||this.#ao instanceof HTMLAudioElement)&&!r){const i=()=>{o(),this.#co?.updateEvents(this.#_e),t.secondary||this.yn()?.dispatchEvent(new CustomEvent("timeupdate",{detail:this.#_e}))},s=()=>{o(),r||t.onended?.()},h=()=>{this.#po=1,o()},e=()=>{this.#po=0,o()};this.#ao.addEventListener("timeupdate",i),this.#ao.addEventListener("loadedmetadata",o),this.#ao.addEventListener("play",o),this.#ao.addEventListener("pause",o),this.#ao.addEventListener("ended",s),this.#ao.addEventListener("seeking",h),this.#ao.addEventListener("seeked",e),this.dn(()=>{const t=this.#ao;t&&(t.removeEventListener("timeupdate",i),t.removeEventListener("loadedmetadata",o),t.removeEventListener("play",o),t.removeEventListener("pause",o),t.removeEventListener("ended",s),t.removeEventListener("seeking",h),t.removeEventListener("seeked",e))}),o()}}}#_o(t){const i=this._n("volume");i&&this.dn(i.subscribe(i=>{t.volume=i}))}#ko(){null==this.#uo&&(this.#uo=setInterval(async()=>{this.#lo&&(this.#_e=await this.#lo.getCurrentTime(),this.#W=await this.#lo.getDuration(),this.#co?.updateEvents(this.#_e),this.#xo())},250))}#Po(){null!=this.#uo&&(clearInterval(this.#uo),this.#uo=void 0)}#xo(){const t=this.querySelector("micrio-media-controls");t&&t.At({currentTime:this.#_e,duration:this.#W,paused:this.#do,ended:this.#fo,seeking:this.#po,muted:this.#mo})}un(){this.#co?.destroy(),this.#lo?.destroy(),this.#Po(),this.#go?.remove()}};customElements.define(th.tag,th);var ih=class extends xi{static tag="micrio-marker-popup";#de={marker:null};#Ln;#To;#So=0;#Ao=0;#Co=0;#Eo=new WeakMap;ln(){const{marker:t}=this.#de,i=this.yn();i&&t&&(t.tags?.forEach(t=>this.classList.add(t)),bt().then(()=>this.querySelector("micrio-button:last-child > button")?.focus()),this.dn(i.state.popup.subscribe(i=>{this.#Ao=!i||i!=t,this.classList.toggle("destroying",this.#Ao)})),this.addEventListener("transitionend",t=>{t.target===this&&this.#Ao&&this.remove()}),this.#ue())}At(t){void 0!==t.marker&&t.marker.id!==this.#de.marker?.id&&(this.#de.marker=t.marker,this.isConnected&&this.#ue())}#ue(){const{marker:t}=this.#de,i=this.yn();if(!i||!t)return;const s=xi.an,h=t.id?s.get(t.id):void 0;if(!h)return;const e=X(i.state.tour),n=X(i.current),o=X(ji),r=h.$settings._markers??{},a=t.data||{},c=r.canMinimizePopup,l=e&&"steps"in e?e:void 0,u=(l?i.Dh.find(t=>t.$data?.markerTours?.find(t=>t.id===l.id)):void 0)?.$settings._markers,d=l&&l.steps?.findIndex(i=>i.startsWith(t.id))>=0,f=!i.canvas.$isMobile&&d&&!l?.isSerialTour&&(u?.tourControlsInPopup??r.tourControlsInPopup),p=f||(l?l.currentStep==l.steps.length-1:void 0),m=t=>{e&&d&&"steps"in e?t instanceof Event&&p?i.state.tour.set(void 0):e.next?.():n&&n.id!=h.id&&a.micrioLink?.id==n.id?(i.open(h.id),h.state.marker.set(void 0),i.state.popup.set(void 0)):h.state.marker.set(void 0)},g=()=>{if(this.#So=!this.#So,this.classList.toggle("minimized",this.#So),this.#Ln)for(let t=0;t<this.#Ln.children.length;t++){const i=this.#Ln.children[t];i&&i!==this.#To&&(this.#Eo.has(i)||(this.#Eo.set(i,i.offsetHeight),i.style.height=i.offsetHeight+"px"),setTimeout(()=>{i.style.height=this.#So?"0px":this.#Eo.get(i)+"px"},100))}};if(this.replaceChildren(),!f){const t=Mt("aside");a.alwaysOpen||Mt("micrio-button",{setProps:{type:!d||p?"close":"next",title:!d||p?o.eo:o.no,disabled:this.#Co,onclick:m},parent:t}),c&&Mt("micrio-button",{setProps:{type:this.#So?"up":"down",title:o.ao,onclick:g},parent:t}),this.appendChild(t)}this.#Ln=Mt("micrio-marker-content",{setProps:{marker:t,onclose:m},parent:this}),f&&Q.request(()=>{const t=document.querySelector("micrio-tour")?.aside;t&&!this.contains(t)&&this.appendChild(t)})}};customElements.define(ih.tag,ih);var sh=class extends xi{static tag="micrio-marker";#de={marker:null};#Io=0;#Lo=0;#zo=0;#Do=0;#Fo=1;#$o=0;#Oo="";#Qe;#Bo=0;#Vo;ln(){const{marker:t,image:i,forceHidden:s=0}=this.#de,h=this.yn();if(!h||!i||!t)return;const e=xi.an;!e.has(t.id)&&i&&e.set(t.id,i);const n=h.events,o=X(h.Wt),r=i.$settings._markers??{},a=t.i18n?.[o],c=t.data??{},l=0==t.data?.showTitle||!!r.noTitles||!!i.$settings.omni?.sideLabels,u=/[?&]micrioNoTooltips/.test(location.search)||!!i.$settings.omni?.sideLabels;let d="book3d"==h.$current?.album?.info?.type?void 0:t.view;if(t.videoTour){const i=t.videoTour.i18n?.[o]?.timeline;i?.length&&(d=i[0].rect)}const f=a&&!l&&(a.label||a.title),p="cluster"==t.type,m=p||"link"!=t.type?"media"==t.type?"play":void 0:"link",g=null!=t.data?.customIconIdx?i.$settings._markers?.customIcons?.[t.data.customIconIdx]:t.data?.icon||r.markerIcon,w=!!m||!!g,v=w||"default"==t.type,M=i.$settings.omni;if(i.Bt&&M){const s=(t.rotation??0)+(t.backside?Math.PI:0);if(this.#Bo=i.camera._t(s)??0,t.visibleArc){const s=i.camera._t(t.visibleArc[0]),h=i.camera._t(t.visibleArc[1]);null!=s&&null!=h&&(this.#Vo=[s,h])}}const _=!!t.data?.scales||!!i.$settings.markersScale,y=()=>{if(i.F&&_)this.#Oo=i.camera.getMatrix(t.x,t.y,1,1,0,0,0).join(","),this.style.setProperty("--mat",`matrix3d(${this.#Oo})`),this.classList.add("mat3d");else{const s=i.camera.R(t.x,t.y,{radius:t.radius,rotation:t.rotation});[this.#zo,this.#Do,this.#Fo,this.#$o]=s;const h=i.F&&this.#$o>=0||-1==this.#zo&&-1==this.#Do;if(this.#Lo=h,i.Bt&&M)if(this.#Vo&&null!=t.rotation){const t=M.frames/(M.layers?.length??1);let s=(i.omni?.currentIndex??0)-this.#Bo;s>t/2&&(s-=t),-t/2>s&&(s+=t),this.#Lo=s<=this.#Vo[0]||s>=this.#Vo[1]}else M.distance&&(this.#Lo=0>this.#$o);this.style.setProperty("--x",`${this.#zo}px`),this.style.setProperty("--y",`${this.#Do}px`),_&&this.style.setProperty("--scale",`${this.#Fo}`),this.classList.remove("mat3d"),this.classList.toggle("behind",this.#Lo)}},b=()=>{if(t.onclick)return t.onclick(t);r.noMarkerActions||("cluster"==t.type?d&&h.$current?.$info&&i.camera.flyToView(d,{limitZoom:1}):i.state.marker.set(t))},k=()=>{r.noMarkerActions||(this.parentNode?.scrollTo(0,0),clearTimeout(this.#Qe),this.#Qe=setTimeout(()=>{const s=i.camera.getXY(t.x,t.y);!this.#Io&&(0>s[0]||s[0]>=h.offsetWidth||0>s[1]||s[1]>=h.offsetHeight||i.F&&s[3]>4)&&i.camera.flyToCoo([t.x,t.y],{speed:2,limit:1}).catch(()=>{})},150))},x=async()=>{if(this.#Io)return void(X(h.state.popup)||i.state.marker.set(void 0));if(this.#Io=1,this.classList.add("opened"),clearTimeout(this.#Qe),r.noMarkerActions)return;n.Et("marker-open",t);const s=X(h.state.tour);!s||"steps"in s&&s.steps?.some(i=>i.startsWith(t.id))||h.state.tour.set(void 0),await G(),!d||c.noAnimate||t.videoTour?P():i.camera.flyToView(d,{omniIndex:i.Bt?this.#Bo:void 0,isJump:1}).then(P).catch(()=>{i.state.$marker===t&&(i.zt=void 0,i.state.marker.set(void 0))})},P=async()=>{if(p)return;if(i.state.$marker!=t){if(!i.state.$marker)return;return i.state.marker.set(t)}if(r.noMarkerActions)return;const s=X(h.state.tour);if(n.Et("marker-opened",t),"popup"==t.popupType&&(a?.title||a?.body||a?.bodySecondary||a?.embedUrl||t.images?.length||t.videoTour))G().then(()=>h.state.popup.set(t));else if("popover"==t.popupType)h.state.popover.set({marker:t,image:i,markerTour:s&&"steps"in s?s:void 0});else if(t.videoTour&&!s){h.state.tour.set(t.videoTour);const s=h.state.tour.subscribe(t=>{t||(s(),i.state.marker.set(void 0))})}const e=c.micrioLink?.id;e&&G().then(()=>{h.open(e,{vector:ys(h,e)?.vector})});const o=c.micrioSplitLink;if(o&&!Zi(i)){const t=Yi(o);if(t){const s=Ui(i);if(s)if(s.id===t.micrioId){if(t.markerId){const i=s.$data?.markers?.find(i=>i.id===t.markerId);i?.view&&s.camera.flyToView(i.view,{isJump:1})}}else Ji(h,i),G().then(()=>qi(h,i,t,{isPassive:t.follows}));else qi(h,i,t,{isPassive:t.follows})}}},T=()=>{this.classList.remove("opened"),n.Et("marker-closed",t),h.state.popover.set(void 0),h.state.popup.set(void 0)};if(this.dn(i.state.marker.subscribe(s=>{if("string"==typeof s&&s==t.id)i.state.marker.set(t);else if(s==t)x();else if(!(c.alwaysOpen||s&&s==t)){if(this.#Io){if(c.micrioSplitLink){const t=s&&"string"!=typeof s?s:null;if(t&&t.data?.micrioSplitLink){const s=Yi(t.data.micrioSplitLink),e=Ui(i);s&&e&&s.micrioId===e.id||Ji(h,i)}else Ji(h,i)}T()}else s||this.classList.remove("opened");this.#Io=0,p||X(h.state.tour)||i.camera.stop()}})),t.noMarker||this.dn(i.state.view.subscribe(()=>{y()})),s||G().then(()=>{const s=X(h.state.popup),e=X(h.state.tour);this.#Io&&!t.noMarker&&s&&s!=t&&!e?i.state.marker.set(void 0):c.alwaysOpen&&P()}),this.classList.toggle("cluster",p),this.classList.toggle("default",!!v),this.classList.toggle("has-icon",w),this.classList.toggle("has-custom-icon",!!g),!t.htmlElement&&!t.noMarker){const i=Mt("button",{props:{...u||p?{}:{title:a?.label||a?.title||""},id:t.id},attrs:{"data-scroll-through":""},events:{click:b,focus:k,blur:()=>clearTimeout(this.#Qe),mouseenter:()=>h.state.markerHoverId.set(t.id),mouseleave:()=>h.state.markerHoverId.set(void 0)},parent:this});g?Mt("img",{props:{src:"string"==typeof g?g:g.src,alt:""},parent:i}):m&&Mt("micrio-icon",{setProps:{name:m},parent:i}),f&&Mt("label",{textContent:a?.label||a?.title||"",attrs:{for:t.id,"data-scroll-through":""},parent:i})}t.noMarker||y(),t.tags&&t.tags.forEach(t=>this.classList.add(t))}At(t){Object.assign(this.#de,t)}un(){clearTimeout(this.#Qe)}};customElements.define(sh.tag,sh);var hh=class extends xi{static tag="micrio-markers";#de={image:null};ln(){const{image:t}=this.#de,i=this.yn();if(!i||!t)return;const{Qt:s,state:h}=i,e=i.Dh[0]?.grid,n=e?.In,o=e?.Ln;this.dn(t.Xt.subscribe(t=>{if(!t||4>t.length)return;t=t.map(t=>Math.round(100*t)/100);const s=i.canvas.viewport;this.style.left=t[0]?`${t[0]}px`:"",this.style.top=t[1]?`${t[1]}px`:"",this.style.width=t[2]==s.width?"":`${t[2]}px`,this.style.height=t[3]==s.height?"":`${t[3]}px`}));const r=()=>{if(!t.$settings.clusterMarkers)return;const s=t.$data?.markers?.filter(t=>!t.i18n||t.i18n[X(i.Wt)]);if(!s)return;const h=t.$settings.clusterMarkerRadius??24,e=s.map(i=>{const s=t.camera.R(i.x,i.y,{radius:i.radius,rotation:i.rotation});return[s[0],s[1]]}),n=[];for(let t=0;t<s.length;t++)for(let i=t+1;i<s.length;i++){if(s[i].tags?.includes("no-cluster"))continue;if(Math.abs(e[i][0]-e[t][0])>=h||Math.abs(e[i][1]-e[t][1])>=h)continue;const o=n.find(s=>s.includes(t)||s.includes(i));o?o.push(t,i):n.push([t,i])}const o=n.map(t=>[...new Set(t)].sort((t,i)=>t-i)),r=new Set;for(const t of o)for(const i of t)r.add(i);for(let t=0;t<s.length;t++)this.querySelector(`[data-marker-id="${CSS.escape(s[t].id)}"]`)?.classList.toggle("overlapped",r.has(t));const a=new Set(o.map(t=>t.join(",")));for(const t of this.querySelectorAll(":scope > micrio-marker.cluster")){const i=t.getAttribute("data-marker-id");i&&!a.has(i)&&t.remove()}for(const i of o){const h=i.join(",");if(this.querySelector(`:scope > micrio-marker.cluster[data-marker-id="${CSS.escape(h)}"]`))continue;const e=i.reduce((t,i)=>t+s[i].x,0)/i.length,n=i.reduce((t,i)=>t+s[i].y,0)/i.length,o=Math.min(...i.map(t=>s[t].view?s[t].view[0]:s[t].x)),r=Math.max(...i.map(t=>s[t].view?s[t].view[0]+s[t].view[2]:s[t].x)),a=Math.min(...i.map(t=>s[t].view?s[t].view[1]:s[t].y)),c=Math.max(...i.map(t=>s[t].view?s[t].view[1]+s[t].view[3]:s[t].y)),l=Math.max(.1,r-o),u=Math.max(.1,c-a),d=[o+(r-o)/2-l/2,a+(c-a)/2-u/2,l,u];Mt("micrio-marker",{attrs:{"data-marker-id":h},setProps:{marker:{id:h,x:e,y:n,type:"cluster",title:i.length+"",view:d,data:{},popupType:"none",tags:[]},image:t},parent:this})}},a=()=>{const h=t.$data?.markers,a=n?X(n):void 0,c=o?X(o):void 0,l=e&&a!=t&&c&&0>c.indexOf(t),u=!!t.$settings._markers?.showTitles;if(this.classList.toggle("inactive",!!l),this.classList.toggle("show-titles",u),!X(s)&&i.spaceData){const s=i.spaceData.links.filter(i=>i[0]==t.id||i[1]==t.id),h=new Set(s.map(i=>i[0]==t.id?i[1]:i[0]));for(const t of this.querySelectorAll(":scope > micrio-waypoint"))h.has(t.getAttribute("data-target-id"))||t.remove();for(const i of s){const s=i[0]==t.id?i[1]:i[0];let h=this.querySelector(`:scope > micrio-waypoint[data-target-id="${CSS.escape(s)}"]`);h||(h=Mt("micrio-waypoint",{attrs:{"data-target-id":s},setProps:{targetId:s,settings:i[2]?.[t.id],image:t},parent:this}))}}else for(const t of this.querySelectorAll(":scope > micrio-waypoint"))t.remove();if(h){const s=X(i.Wt),e=h.filter(t=>!t.i18n||t.i18n[s]),n=new Set(e.map(t=>t.id));for(const t of this.querySelectorAll(":scope > micrio-marker")){const i=t.getAttribute("data-marker-id");i&&!t.classList.contains("cluster")&&(n.has(i)||t.remove())}for(const i of e){let s=this.querySelector(`:scope > micrio-marker[data-marker-id="${CSS.escape(i.id)}"]`);s||(s=Mt("micrio-marker",{attrs:{"data-marker-id":i.id},setProps:{marker:i,image:t,...i.noMarker?{forceHidden:1}:{}},parent:this}))}}else for(const t of this.querySelectorAll(":scope > micrio-marker"))t.remove();if(l)for(const t of this.querySelectorAll(":scope > micrio-marker, :scope > micrio-waypoint"))t.remove();t.$settings.clusterMarkers&&r()};if(this.gn(t.data,a),this.gn(s,a),h.tour&&this.gn(h.tour,a),n&&this.gn(n,a),o&&this.gn(o,a),this.wn(i.Wt,a),t.$settings.clusterMarkers&&this.dn(t.state.view.subscribe(r)),!t.grid&&t.$settings._markers?.zoomOutAfterClose){let s=0;this.dn(t.state.marker.subscribe(h=>{h&&"string"!=typeof h&&!t.zt&&!h.noMarker&&h.view?(t.zt=X(i.state.tour)&&!("steps"in X(i.state.tour))?void 0:structuredClone(t.state.$view??t.camera?.getView()),s=!!h.videoTour):h||!t.zt||X(i.state.tour)||setTimeout(()=>{if(t.zt){const i=t.zt,s=Math.min(1,i[2]),h=Math.min(1,i[3]),e=s/2,n=h/2,o=Math.max(e,Math.min(1-e,i[0]+e)),r=Math.max(n,Math.min(1-n,i[1]+n));t.camera.flyToView([o-e,r-n,s,h],{speed:t.$settings._markers?.zoomOutAfterCloseSpeed}).catch(()=>{})}t.zt=void 0,s=0},s?250:10)}))}a()}At(t){void 0!==t.image&&(this.#de.image=t.image)}};customElements.define(hh.tag,hh);var eh=class extends xi{static tag="micrio-dial";#de={currentRotation:0,frames:1};ln(){const t=this.yn();if(!t)return;const i=t.$current?.camera;if(!i)return;let s,h=0,e=0;const n=s=>{const n=Math.max(1,(i.getXY(1,.5)[0]-i.getXY(0,.5)[0])/t.offsetWidth),o=(e/360+(h-s.clientX)/(this.offsetWidth*n))*this.#de.frames;this.#de.onturn?.(o)},o=()=>{s&&t.releasePointerCapture(s),t.removeAttribute("data-panning"),t.removeEventListener("pointermove",n),t.removeEventListener("pointerup",o)};this.addEventListener("pointerdown",i=>{i.stopPropagation(),i.preventDefault(),0==i.button&&(t.addEventListener("pointermove",n),t.addEventListener("pointerup",o),t.setAttribute("data-panning",""),t.setPointerCapture(s=i.pointerId),e=this.#de.currentRotation,h=i.clientX)})}At(t){if(Object.assign(this.#de,t),this.isConnected){const t=-this.#de.currentRotation/360*(this.offsetWidth??0);this.style.setProperty("--micrio-dial-offset",`${t}px`)}}};customElements.define(eh.tag,eh);var nh=class extends xi{static tag="micrio-minimap";#de={image:null};#Ro=null;#No;#Ho;#Xo;#pn;#Go;ln(){this.#sn()}At(t){void 0!==t.image&&t.image!==this.#de.image&&(this.#de.image=t.image,this.isConnected&&(this.#Xo?.(),this.replaceChildren(),this.#Ro=null,this.#sn()))}#sn(){const{image:t}=this.#de;if(!this.yn()||!t)return;const i=t.$info;if(!i)return;const s=t.camera,h=t.$settings,e=h.minimapWidth??200,n=h.minimapHeight??160,o=i.width/i.height,r=e/o>n?Math.round(n*o):e,a=e/o>n?n:Math.round(e/o),c=-s.rotationY/(2*Math.PI),l=self.crossOriginIsolated;let u=l?void 0:t.thumbSrc;const d=s=>{if(!s||!this.#Ro)return;const h=this.#Ro;h.clearRect(0,0,r,a),clearTimeout(this.#pn),this.classList.remove("hidden"),this.#pn=setTimeout(()=>this.classList.add("hidden"),2500);const e=!(!t.thumbSrc&&!u);if(i.is360){e&&(h.globalCompositeOperation="source-over",h.fillStyle="rgba(0,0,0,.45)",h.fillRect(0,0,r,a),h.globalCompositeOperation="destination-out");const t=it(s[0]+s[2]/2),i=Math.max(0,Math.min(1,s[1]+s[3]/2)),n=Math.round(t*r),o=Math.round(i*a),c=Math.max(1,Math.round(s[2]*r/2));h.fillStyle=e?"white":"rgba(255,255,255,.8)",h.fillRect(Math.round(n-c),0,2*c,a);const l=Math.max(1,Math.round(s[3]*a/2));h.fillRect(0,Math.round(o-l),r,2*l),h.beginPath(),h.arc(n,o,3,0,2*Math.PI),h.fill(),e&&(h.globalCompositeOperation="source-over")}else e?(h.globalCompositeOperation="source-over",h.fillStyle="rgba(0,0,0,.5)",h.fillRect(0,0,r,a),h.globalCompositeOperation="destination-out"):(h.fillStyle="rgba(0,0,0,.5)",h.fillRect(0,0,r,a)),h.beginPath(),h.fillStyle="white",h.rect(Math.floor(s[0]*r),Math.floor(s[1]*a),Math.ceil(s[2]*r),Math.ceil(s[3]*a)),e&&(h.fill(),h.globalCompositeOperation="source-over"),h.stroke()},f=t=>{if(!this.#Ho)return;const i=Math.max(0,Math.min(1,(t.clientX-this.#Ho.left)/this.#Ho.width)),h=Math.max(0,Math.min(1,(t.clientY-this.#Ho.top)/this.#Ho.height));this.#No?s.setView([i-this.#No.width/2,h-this.#No.height/2,this.#No.width,this.#No.height]):s.setCoo(i,h)},p=()=>{window.removeEventListener("mousemove",f),window.removeEventListener("mouseup",p),this.#No=void 0},m=Mt("canvas",{props:{width:r,height:a},className:h.alwaysShowMinimap?"fixed":void 0,events:{mousedown:t=>{if(0!=t.button)return;window.addEventListener("mousemove",f),window.addEventListener("mouseup",p),this.#Ho=m.getBoundingClientRect();const i=s.getView();i&&(this.#No={width:i[2],height:i[3]}),f(t)}},parent:this});u&&(m.style.backgroundImage=`url('${u}')`,0!=c&&(m.style.backgroundPositionX=r*c+"px")),m.addEventListener("wheel",t=>{s.zoom(t.deltaY*(Et.firefox?50:1))},{passive:1}),this.#Ro=m.getContext("2d"),this.#Ro&&(this.#Ro.lineWidth=1,this.#Ro.strokeStyle="white"),l&&t.thumbSrc&&fetch(t.thumbSrc).then(t=>t.blob()).then(i=>{this.#Go&&URL.revokeObjectURL(this.#Go),this.#Go=URL.createObjectURL(i),u=this.#Go,m.style.backgroundImage=`url('${u}')`,d(X(t.state.view))}),this.#Xo?.(),this.#Xo=t.state.view.subscribe(d),this.dn(this.#Xo)}un(){clearTimeout(this.#pn),this.#Go&&URL.revokeObjectURL(this.#Go),this.#Go=void 0}};customElements.define(nh.tag,nh);var oh=class{#jo=0;#Yo=void 0;#Wo=void 0;#Uo=void 0;#Zo=void 0;#qo=0;#Jo=1;So=void 0;#Ko=1;#y;#d;#Qo;#do;#tr;constructor(t,i,s,h,e){this.#y=t,this.#d=i,this.#Qo=s,this.#do=h,this.#tr=e,this.#jo=!!s.video?.streamId&&!s.video?.transparent,this.So=i.Dt,this.#Jo=s.video?.autoplay??1;let n=1;this.#Wo=this.#d.visible.subscribe(t=>{clearTimeout(this.#Zo),this.#Zo=t?setTimeout(()=>{this.#Ko&&(this.So?(this.#kh(),this.#Jo&&!this.#do&&this.So.play().catch(t=>console.warn("WebGL Embed video play() failed",t))):this.#ir())},n?0:100):setTimeout(()=>this.So?.pause(),0),n=0})}Ao(){clearTimeout(this.#Zo)}Co(){this.#Ko=0,clearTimeout(this.#Zo),clearTimeout(this.#Uo),this.So?.pause(),this.#sr(),this.#Wo?.(),this.#Yo?.destroy(),this.#Yo=void 0,this.#hr()}#er(t){this.So&&(this.#do=!t,t?this.So.dataset.playing="1":delete this.So.dataset.playing,this.#y.Ie(this.#d,t),this.#Qo.hideWhenPaused&&this.#y.Ee(this.#d,t?1:0),t&&this.#y.render())}#ir(){if(!this.#Qo.video||this.So)return;const t=this.#jo?Ys(this.#Qo.video.streamId):this.#Qo.video.src;t?(this.So=Mt("video",{props:{crossOrigin:"anonymous",playsInline:1,width:this.#Qo.width,height:this.#Qo.height,muted:this.#Qo.video.muted}}),this.#kh(),this.#jo&&js()?xt("Hls",Xs).then(()=>{this.#Yo=new window.Hls(Gs),this.#Yo.loadSource(t),this.So&&this.#Yo.attachMedia(this.So)}).catch(t=>console.error("[Micrio GL Embed] Failed to load HLS.js:",t)):this.So.src=t):console.error("[Micrio GL Embed] No video source found for embed:",this.#Qo.id)}#nr={play:()=>this.#er(1),pause:()=>this.#er(0),playing:()=>{!this.#d.Dt&&this.So&&("requestVideoFrameCallback"in this.So?this.So.requestVideoFrameCallback(()=>{this.So&&this.#Ko&&(this.#d.video.set(this.So),this.#y.render())}):this.#d.video.set(this.So))},canplayEvt:Et.iOS?"loadedmetadata":"canplay",canplay:()=>{this.So&&this.#Ko&&(this.#Jo&&!this.#do?(this.So.play().catch(t=>console.warn("WebGL Embed video play() failed on canplay:",t)),this.#tr()):this.#Qo.hideWhenPaused||(this.#er(1),G().then(()=>{this.#er(0),this.#hr()})))}};#hr(){this.#qo&&this.So?.parentNode&&(this.So.remove(),this.#qo=0)}#kh(){if(!this.#Qo.video||!this.So)return;const t=this.#Qo.video.loopAfter,i=this.So;this.#Qo.video.loop&&t?(i.loop=0,i.onended=()=>{this.#er(0),this.#Uo=setTimeout(()=>i?.play().catch(t=>console.warn("WebGL Embed video loop play() failed:",t)),1e3*t)},i.onplay=()=>this.#er(1)):(i.loop=this.#Qo.video.loop,i.onended=null,i.onplay=null),i.parentNode||this.#Jo||this.#jo||(i.setAttribute("style","opacity:0;position:absolute;top:0;left:0;transform-origin:left top;transform:scale(0.1);pointer-events:none;"),document.body.appendChild(i),this.#qo=1),i.addEventListener("play",this.#nr.play),i.addEventListener("pause",this.#nr.pause),i.addEventListener("playing",this.#nr.playing,{once:1}),i.addEventListener(this.#nr.canplayEvt,this.#nr.canplay,{once:1})}#sr(){const t=this.So;t&&(t.removeEventListener("play",this.#nr.play),t.removeEventListener("pause",this.#nr.pause),t.removeEventListener("playing",this.#nr.playing),t.removeEventListener(this.#nr.canplayEvt,this.#nr.canplay),t.onended=null,t.onplay=null)}},rh=class extends xi{static tag="micrio-embed";#de={embed:null,image:null};#Gs;#v;#or;#rr;#ar;#Ze=0;#cr;#lr;#ur;#dr;#fr;#pr;#mr=0;#gr=0;#Jo=1;#wr=0;#vr=0;#Mr=0;#_r=0;#yr=0;#br=0;#kr=0;#xr;#Pr=0;#Tr=0;#Sr=0;#do=0;#Ar=0;#Cr=0;#$o=0;#Er=0;#Ir=0;#Lr=0;#zr=1;#Dr=0;#Fr=0;#$r=0;#Or=1;#ri=1;#zo=0;#Do=0;#Fo=0;#Br=0;#Vr=1;#Rr=1;#Nr="";#Hr=NaN;#Xr=NaN;#Gr=NaN;#Xs=1;#jr=0;#Yr="";ln(){const{embed:t,image:i,marker:s}=this.#de;if(this.#Gs=this.yn(),!this.#Gs||!t||!i)return;if(this.#v=i.$info,!this.#v)return;t.uuid||(t.uuid=S()),this.#gr=i.F,this.#Jo=t.video?.autoplay??1;const h=i.grid;if(h){const t=h.In,s=h.Ln,e=()=>{const e=X(t),n=s?X(s):void 0,o=!!(h&&e&&e!=i&&n&&0>n.indexOf(i));this.#ar?.classList.toggle("inactive",o)};this.mn(t,e),s&&this.mn(s,e)}this.#or=i.Gt.find(i=>i.uuid==t.uuid||i.$info?.title==t.uuid),this.#Mr=matchMedia("(dynamic-range: high)").matches||Et.OSX,this.#wr=t.src?.toLowerCase().endsWith(".svg")??0,this.#vr=t.width&&t.height?1048576>t.width*t.height:0;const e=/iPhone OS 14_/i.test(navigator.userAgent),n=this.#Gs.getAttribute("data-embeds-inside-gl"),o="true"===n||"false"===n?n:"auto",r="true"===o;this.#yr="false"===o||"auto"===o&&(this.#wr||e||!this.#Mr&&!!t.video),this.#_r="book3d"==this.#Gs.$current?.album?.info?.type,this.#Br=this.#gr||this.#_r,this.#br=!(this.#_r||this.#yr||(!t.micrioId||!r&&this.#vr&&t.src)&&(!t.video||t.video.controls||t.video.transparent)),this.#kr=!t.clickAction&&!t.frameSrc&&!s,this.#xr="href"==t.clickAction?t.clickTarget:void 0,this.#Pr=!(!this.#xr||!t.clickTargetBlank),this.#Tr=this.#br&&!!t.video,this.#Sr=!this.#br||!!t.clickAction,this.#Cr=!!t.hideWhenPaused,t.video&&!t.video.controls&&(t.video.muted=1),this.#Wr(),this.#Sr&&this.#Ur(t,s),this.#_r&&this.#Sr&&(this.#mr=1,this.#pr=setTimeout(()=>{this.#pr=void 0,this.#mr=0,this.#Zr()},500)),this.#br&&this.#qr();const a=i.camera?.image,c=a&&a!==i?a:i;(this.#Sr||t.video?.pauseWhenSmallerThan||t.video?.pauseWhenLargerThan)&&(this.mn(c.state.view,t=>{this.#ur=t,this.#Zr()}),this.mn(c.Xt,t=>{this.#dr=t,this.#Zr()})),this.#Zr(),this.addEventListener("change",this.#Jr)}#Wr(){const{embed:t}=this.#de,i=t.area;this.#$o=i[2],this.#Er=i[3],this.#Ir=i[0]+this.#$o/2,this.#Lr=i[1]+this.#Er/2,this.#zr=t.scale||1,this.#Dr=t.rotX??0,this.#Fr=t.rotY??0,this.#$r=t.rotZ??0,this.#Or=t.scaleX??1,this.#ri=t.scaleY??1,this.#Vr=(this.#_r?this.#$o:1)*this.#zr,this.#Rr=this.#_r?t.frameSrc||t.video?this.#$o*this.#v.width:t.src?t.width||this.#$o*this.#v.width:100:1;const s=this.#br&&t.micrioId&&t.width,h=s?10:1;if(this.#_r)return;let e=this.#$o*(this.#v.width/(t.width??100)/(this.#br?t.width?this.#$o:1:this.#zr))*(this.#gr?Math.PI/2:1);const n=[];s&&t.width&&(e=this.#$o/(t.width/this.#v.width)*h*(this.#gr?Math.PI/2:1),n.push(`width:${t.width/h}px`)),n.push(`--ratio:${this.#$o/this.#Er*this.#v.width/this.#v.height};--scale:${e}`),this.#wr&&t.height&&n.push(`height:${t.height}px`),this.#Yr=n.join(";"),t.video&&(t.video.width>t.video.height?this.#Ar=Math.min(t.video.width,this.#$o*this.#v.width,2048):this.#Ar=Math.min(t.video.height,this.#Er*this.#v.height,2048)/(t.video.height/t.video.width))}#Ur(t,i){if(this.#ar=Mt(this.#xr?"a":"div",{className:(this.#kr?"no-events":"")+(this.#Cr&&!this.#br&&t.video?" hide-when-paused":"")+(this.#gr||this.#_r?" embed3d":"")||void 0,id:t.id?"e-"+t.id:void 0,props:this.#xr?{href:this.#xr}:{role:"figure"},attrs:this.#xr&&this.#Pr?{target:"_blank"}:void 0,events:{click:()=>this.#Oh(),keydown:()=>this.#Oh()},parent:this}),t.video&&!this.#br)this.#Kr(t);else if(t.frameSrc)this.#Qr(t);else if(!this.#br&&t.src)Mt("img",{props:{src:t.src,alt:"Embed",...this.#wr&&t.width?{width:t.width}:{},...this.#wr&&t.height?{height:t.height}:{}},style:this.#Yr,attrs:{"data-scroll-through":""},parent:this.#ar});else{const s=X(this.#Gs.Wt),h=t.title||i?.i18n?.[s]?.title;Mt("button",{props:h?{title:h}:void 0,style:this.#Yr,attrs:{"data-scroll-through":"","aria-label":"embed-button"},parent:this.#ar})}}#Kr(t){const i=t.video,s=this.#Ar,h=s/(i.width/i.height),e=this.#$o*this.#v.width/s,n=Mt("video",{props:{src:i.src,width:Math.round(s),height:Math.round(h),controls:!!i.controls,loop:!(!i.loop||i.loopAfter&&i.loopAfter>0),muted:!!i.muted,playsInline:1,crossOrigin:"anonymous",preload:"metadata"},style:1!==e?`transform:scale(${e})`:void 0,children:i.transparent&&i.hasH265&&i.src?.endsWith(".webm")?[Mt("source",{props:{src:i.src.replace(".webm",".mp4"),type:"video/mp4;codecs=hvc1"}})]:void 0});if(this.#lr=Mt("figure",{children:[n],parent:this.#ar}),this.#cr=n,t.id&&this.#de.image&&this.#de.image.ii(t.id,n),i.loop&&null!=i.loopAfter&&i.loopAfter>0){n.loop=0;const t=()=>{this.#fr=setTimeout(()=>{this.#do||n.play().catch(()=>{})},1e3*i.loopAfter)};n.addEventListener("ended",t)}!this.#do&&this.#Jo&&n.play().catch(()=>{})}#Qr(t){Mt("iframe",{parent:this.#ar,props:{src:t.frameSrc,width:String(Math.round(this.#$o*this.#v.width)),height:String(Math.round(this.#Er*this.#v.height))},attrs:{frameborder:"0",allow:"autoplay; encrypted-media",allowfullscreen:""}})}#qr(){const{embed:t,image:i}=this.#de;if(!i)return;const s=t.hideWhenPaused?.01:t.opacity??1;this.#or&&(this.#or.ut||i.Gt.includes(this.#or))?(this.#or.camera.setArea(t.area),this.#or.camera.setRotation(this.#Dr,this.#Fr,this.#$r),this.#or.ut&&i.engine.Ee(this.#or,s)):this.#or=i.addEmbed({...t,id:t.video?t.id:t.micrioId,title:t.uuid,path:this.#v.tileBasePath??this.#v.path,isSingle:!!t.video,isVideo:!!t.video},{_360:{rotX:this.#Dr,rotY:this.#Fr,rotZ:this.#$r}},t.area,{opacity:s,asImage:0}),this.#Tr&&(this.#rr=new oh(i.engine,this.#or,t,this.#do,()=>this.#Zr())),i.engine.render()}#Zr(){const{embed:t,image:i}=this.#de;if(!this.#_r&&!i?.engine.ready)return;const s=this.#dr,h=this.#ur;if(h&&s&&s[2]>0&&s[3]>0&&h[2]>0&&h[3]>0)this.#zo=s[0]+(this.#Ir-h[0])/h[2]*s[2],this.#Do=s[1]+(this.#Lr-h[1])/h[3]*s[3],this.#Fo=s[2]/(h[2]*this.#v.width);else{const t=i.camera.R(this.#Ir,this.#Lr);this.#zo=t[0],this.#Do=t[1],this.#Fo=t[2]}if(this.#ar){const s=this.#ar.style;if(this.#_r&&this.#mr)this.#Ze||(this.#Ze=1,s.display="none");else if(this.#Br){const t=i.camera.getMatrix(this.#Ir,this.#Lr,this.#Vr,this.#Rr,this.#Dr,this.#Fr,this.#$r,void 0,this.#Or,this.#ri).join(","),h=!t;h!==this.#Ze&&(this.#Ze=h,s.display=h?"none":""),h||t===this.#Nr||(this.#Nr=t,s.transform=`matrix3d(${t})`)}else this.#Ze&&(this.#Ze=0,s.display=""),this.#zo!==this.#Hr&&(this.#Hr=this.#zo,s.setProperty("--x",`${this.#zo}px`)),this.#Do!==this.#Xr&&(this.#Xr=this.#Do,s.setProperty("--y",`${this.#Do}px`)),this.#Fo!==this.#Gr&&(this.#Gr=this.#Fo,s.setProperty("--s",`${this.#Fo}`));if(!this.#_r||!this.#mr){const i=void 0!==t.opacity&&1!==t.opacity?t.opacity:1;i!==this.#Xs&&(this.#Xs=i,1!==i?s.setProperty("--opacity",`${i}`):s.removeProperty("--opacity"))}}if((t.video?.pauseWhenSmallerThan||t.video?.pauseWhenLargerThan)&&this.#$o){this.#do=this.#ta();const t=this.#rr?.So;t&&(this.#do?t.paused||t.pause():t.paused&&(this.#rr.Ao(),i?.$settings?.embedRestartWhenShown&&(t.currentTime=0),t.play())),this.#ia(i)}}#ia(t){const i=this.#cr;i&&(this.#lr&&this.#jr!==this.#do&&(this.#jr=this.#do,this.#lr.classList.toggle("paused",this.#do)),this.#do?i.paused||i.pause():i.paused&&(t?.$settings?.embedRestartWhenShown&&(i.currentTime=0),i.play().catch(()=>{})))}#ta(){const{embed:t}=this.#de,i=t.video;if(!i?.pauseWhenSmallerThan&&!i?.pauseWhenLargerThan)return!this.#Jo;const s=this.#Gs.canvas.viewport,h=this.#Fo?Math.max(this.#$o*this.#v.width*this.#Fo/s.width,this.#Er*this.#v.height*this.#Fo/s.height):0;return!!(i.pauseWhenSmallerThan&&h<i.pauseWhenSmallerThan||i.pauseWhenLargerThan&&h>i.pauseWhenLargerThan)}#Oh(){const{embed:t,image:i,marker:s}=this.#de,h="markerId"==t.clickAction?t.clickTarget:s?.id;h&&i&&!this.#xr&&i.state.marker.set(h)}#Jr(t){if(t&&"detail"in t){const i=t.detail,s=this.#de.embed;for(const t of Object.keys(i))s[t]=i[t]}this.#Wr(),this.#Zr()}At(t){Object.assign(this.#de,t)}un(){clearTimeout(this.#fr),clearTimeout(this.#pr),this.#rr?.Co();const{embed:t,image:i}=this.#de;this.#or&&this.#or.ut&&i&&(i.engine.Ee(this.#or,0),i.engine.render()),t.video&&t.id&&i&&i.ii(t.id),this.removeEventListener("change",this.#Jr),this.#ar&&(this.#ar.removeEventListener("click",this.#Oh),this.#ar.removeEventListener("keydown",this.#Oh))}};customElements.define(rh.tag,rh);var ah=class extends xi{static tag="micrio-image-embeds";#de={image:null};ln(){const{image:t}=this.#de;this.mn(t.data,i=>{if(this.replaceChildren(),i?.embeds)for(const s of i.embeds)Mt("micrio-embed",{parent:this,setProps:{embed:s,image:t}})})}At(t){void 0!==t.image&&(this.#de.image=t.image)}};customElements.define(ah.tag,ah);var ch=class extends xi{static tag="micrio-tour";#de={tour:null};#sa=0;aside;ln(){const{tour:t}=this.#de,i=this.yn();if(!i||!t)return;const s="steps"in t,h=t=>t?i.Dh.find(i=>i.id===t)??i.gallery?.Sn.find(i=>i.id===t):void 0;if(!("steps"in t)){const s=t,h=i.$current;if(h){const t=s.i18n?.[X(i.Wt)]?.audio;Mt("micrio-media",{parent:this,setProps:{src:t?.src,image:h,tour:s,controls:1,autoplay:1,fullscreenEl:i,onended:()=>i.state.tour.set(void 0),onclose:()=>i.state.tour.set(void 0)}})}}if(s){i.setAttribute("data-marker-tour-active",""),this.dn(()=>i.removeAttribute("data-marker-tour-active"));const s=t;s.currentStep??=s.initialStep??0,this.#sa=s.currentStep;const e=s.stepInfo,n=!!i.$current.$settings?._markers?.tourControlsInPopup,o=async(t,s)=>{const n=e?.[s];if(!n)return;const o=e?.[t];if(o?.micrioId){const t=h(o.micrioId);t&&X(t.state.marker)&&t.state.marker.set(void 0)}let r;const a=N.p(n);if(a?.videoTour){const t=i.lang,s=a.videoTour.i18n?.[t]?.timeline;s?.length&&1>=s[0].start&&(r=s[0].rect)}const c=n.micrioId&&i.$current?.id!==n.micrioId?await i.open(n.micrioId,{startView:r}):i.$current;c&&c.state.marker.set(n.markerId)};s.next=()=>{if(this.#sa<s.steps.length-1){const t=this.#sa;this.#sa++,s.currentStep=this.#sa,o(t,this.#sa),r()}},s.prev=()=>{if(this.#sa>0){const t=this.#sa;this.#sa--,s.currentStep=this.#sa,o(t,this.#sa),r()}},this.aside||(this.aside=Mt("aside",{className:"marker-tour",parent:n?void 0:this}));const r=()=>{if(this.aside&&(this.aside.replaceChildren(),Mt("micrio-button",{parent:this.aside,setProps:{type:"prev",title:X(ji).oo,disabled:0===this.#sa,onclick:()=>s.prev?.()}}),Mt("span",{textContent:`${this.#sa+1}/${s.steps.length}`,parent:this.aside}),Mt("micrio-button",{parent:this.aside,setProps:{type:"next",title:X(ji).no,disabled:this.#sa>=s.steps.length-1,onclick:()=>s.next?.()}}),Mt("micrio-fullscreen",{parent:this.aside,setProps:{el:i}}),!s.cannotClose)){const t=Mt("micrio-button",{parent:this.aside,setProps:{type:"close",title:X(ji).Zn,onclick:()=>i.state.tour.set(void 0)}});n&&this.aside.insertBefore(t,this.aside.firstChild)}};this.dn(i.state.marker.subscribe(t=>{if(!t)return;const i="string"==typeof t?t:t.id,h=s.steps.findIndex(t=>t.startsWith(i));0>h||h===this.#sa||(this.#sa=h,s.currentStep=h,r())})),o(-1,this.#sa),r()}this.dn(i.state.tour.subscribe(i=>{if(!i&&s){const i=t.stepInfo?.[this.#sa];if(i){const t=h(i.micrioId);t&&t.state.marker.set(void 0)}}}))}At(t){Object.assign(this.#de,t)}};customElements.define(ch.tag,ch);var lh=class extends xi{static tag="micrio-swipe-gallery";#de={gallery:null,lang:""};At(t){void 0!==t.gallery&&(this.#de.gallery=t.gallery),void 0!==t.galleryStart&&(this.#de.galleryStart=t.galleryStart),void 0!==t.lang&&(this.#de.lang=t.lang)}ln(){const t=Mt("micr-io",{parent:this}),i=Mt("figcaption",{parent:this}),s=this.yn()?.$current?.$info?.path;Q.request(()=>{Oi.Gn(this.#de.gallery,t.Ve,t,{startId:this.#de.galleryStart,basePath:s}).Un(t)});let h=0;const e=()=>{const t=this.#de.gallery[h]?.i18n?.[this.#de.lang]?.description;i.innerHTML=t??"",i.style.display=t?"":"none"};t.addEventListener("gallery-show",t=>{const i=t.detail[0];h=Math.max(0,this.#de.gallery.findIndex(t=>(t.micrioId??t.id)===i)),e()}),e()}un(){this.querySelector(":scope > micr-io")?.destroy()}};customElements.define(lh.tag,lh);var uh=class extends xi{static tag="micrio-popover";#de={popover:null};#ha;ln(){const t=this.yn();t&&(this.#ha=Mt("dialog",{events:{close:()=>{const i=this.#de.popover;i&&"marker"in i&&i.marker&&i.image?.state?.marker&&i.image.state.marker.set(void 0),t.state.popover.set(void 0)},click:i=>{i.target===this.#ha&&t.state.popover.set(void 0)}},parent:this}),this.#ue())}At(t){void 0!==t.popover&&(this.#de.popover=t.popover),this.isConnected&&this.#ue()}#ue(){const t=this.#de.popover,i=this.yn();if(!i||!t)return;const s=X(i.Wt),h=X(ji),e="contentPage"in t?t.contentPage?.id:"",n="marker"in t?t.marker?.id:"",o=`${t?.constructor?.name??typeof t}::${e}::${n}::${s}`;if(!this.fn(o))return;this.#ha.replaceChildren(),this.#ha.classList.remove("article","page","has-media","gallery");const r="marker"in t?t.marker:void 0,a="markerTour"in t?t.markerTour:void 0,c=!(!(r&&a&&"steps"in a)||0>a.steps?.findIndex(t=>t.startsWith(r.id))),l=c?a.currentStep==a.steps.length-1:1,u=t=>{if(c&&a&&"steps"in a){const s=a;t instanceof Event&&l?i.state.tour.set(void 0):s.next?.()}this.#ha?.open&&this.#ha.close()};if(Mt("aside",{parent:this.#ha,children:[Mt("micrio-button",{setProps:{type:!c||l?"close":"next",title:!c||l?h.eo:h.no,onclick:u}})]}),"contentPage"in t&&t.contentPage){const i=t.contentPage,h=i.i18n?.[s];this.#ha.classList.add("page");const e=h?.embed&&(!h.content||250>h.content.length)&&!i.image&&!i.buttons?.length;if((h?.embed||i.image)&&this.#ha.classList.add("has-media"),e)h.embed&&Mt("micrio-media",{setProps:{src:h.embed,figcaption:h.content,controls:1,autoplay:1},parent:this.#ha});else{this.#ha.classList.add("article");const t=[];h?.title&&t.push(Mt("h2",{textContent:h.title})),h?.embed&&t.push(Mt("micrio-media",{setProps:{src:h.embed,controls:1}})),h?.content&&t.push(Mt("div",{innerHTML:h.content})),Mt("article",{children:t,parent:this.#ha})}}if("gallery"in t&&t.gallery?.length&&(this.#ha.classList.add("gallery"),Mt("micrio-swipe-gallery",{setProps:{gallery:t.gallery,galleryStart:t.galleryStart,lang:s},parent:this.#ha})),"marker"in t&&t.marker){const i=t.marker,h=i.i18n?.[s],e=!!i.images?.length,n=!(!h||!h.body)||e&&!!t.contentPage?.i18n?.[s]?.embed;h?.embedUrl?Mt("micrio-media",{setProps:{src:h.embedUrl,uuid:i.id,figcaption:h.embedDescription,controls:1,autoplay:i.embedAutoPlay},parent:this.#ha}):e&&Mt("micrio-swipe-gallery",{setProps:{gallery:i.images,lang:s},parent:this.#ha}),n&&Mt("micrio-marker-content",{setProps:{marker:i,noEmbed:1,noGallery:1,noImages:!h||!h.embedUrl,onclose:u},parent:this.#ha})}this.#ha.open||this.#ha.showModal()}un(){this.#ha?.open&&this.#ha.close()}};customElements.define(uh.tag,uh);var dh=class{#Gs;#d;#Yh;#ea=0;#na={};#oa;#ra;#aa=0;#ca=[];#la;#ua=new Map;#da=0;#fa=0;#pa;#ma=()=>{};#ga;#yn=[];goto(t){this.#ma(t)}get currentIndex(){return this.#d.canvas?.$i??-1}constructor(t,i,s,h){this.#Gs=t,this.#d=i,this.#Yh=s,this.#ga=h}async setup(){const t=this.#Gs,i=this.#d,s=this.#Yh,h=N.u(i.id);if(!h)return;const e=i.$settings.omni;if(!e)return;const n=t.Ve,o=i.$info;if(!o)return;const r=e.frames,a=r/(e.layers?.length??1);if(!i.ut)return;const c=[];for(let g=0;r>g;g++){const t={id:o.id+"/"+g,image:i,visible:H(0),ge:g,opts:{area:[0,0,1,1]},ut:0,$t:-1,thumbSrc:i.Ut(i.Vt,0,0,g)};n.ti(t,i,{opacity:0,asImage:0}),c.push(t)}h.settings?.omni&&parseFloat(h.info.version)>=5&&await At.load(h.info.tileBasePath||h.info.path,(h.info.tilesId??h.info.id)+"/base",i=>t.xo?.At?.({loadingProgress:i})).catch(()=>{}),i.canvas?.Hi(0,0),n.render();const l=!!i.$settings.gallery?.archive,u="requestIdleCallback"in self?Math.max(36,2*Math.floor(r/8)):50,d=t=>{this.#ga(t,r,u,t=>c[t]?{baseTileIdx:c[t].$t,thumbSrc:c[t].thumbSrc}:void 0,n,l)},f=Mt("micrio-dial",{parent:s,setProps:{currentRotation:0,frames:a,degrees:1,onturn:t=>{this.goto(Math.round(t)%a)}}});this.#ea=a,this.#na={continuous:1},this.#ma=t=>{for(;0>t;)t+=a;t%=a,i.canvas?.Hi(t,0),f.At?.({currentRotation:t/a*360}),d(t),n.render()},this.#wa(),i.omni=this,d(0),this.#yn.push(i.state.layer.subscribe(t=>{f.At?.({currentRotation:t/a*360})}));const p=i.$settings.omni,m=p?.layers?.length??1;if(m>1){const s=p.layers.map((t,i)=>({i18n:Object.fromEntries(Object.entries(t.i18n||{}).map(([t,s])=>[t,{title:s??"Layer "+(i+1)}]))})),h=Object.keys(o.revision??{});if(!h.length){const i=X(t.Wt);i&&h.push(i)}if(h.length)for(const t of h)for(let i=0;i<s.length;i++)s[i].i18n[t]||(s[i].i18n[t]={title:"Layer "+(i+1)});const e=()=>{const t=X(i.state.layer);i.data.update(h=>(h||(h={}),h.pages||(h.pages=[]),h.pages=h.pages.filter(t=>!t.id?.startsWith("_omni-layers")),h.pages.push({id:"_omni-layers-"+t,i18n:s[t].i18n,icon:is.layerGroup,children:s.map((t,s)=>({id:"omni-layer-"+s,i18n:t.i18n,action(){i.state.layer.set(s),d(X(i.state.layer)*Math.floor(r/m))}})).filter(i=>i.id!="omni-layer-"+t)}),h))};e(),this.#yn.push(i.state.layer.subscribe(e))}}destroy(){this.#va();for(const t of this.#yn)t();this.#yn=[]}#wa(){const t=this.#Gs;this.#na.sensitivity||(this.#na.sensitivity=Number(t.getAttribute("data-swipe-sensitivity")??1));const i=t.getAttribute("data-swipe-snap");i&&(this.#ca=i.split(",").map(Number)),this.#Gs.setAttribute("data-hooked",""),this.#yn.push(this.#d.state.view.subscribe(t=>this.#da=this.#na.coverLimit?this.#d.camera.isZoomedOut():t?Math.round(1e3*t[3])/1e3>=1:1)),t.Ve.Is=1,t.Ve.Ss=1,this.#Gs.canvas.element.addEventListener("pointerdown",this.#Ma)}#va(){this.#Gs.canvas.element.removeEventListener("pointerdown",this.#Ma),this.#ua.clear(),this.#_a(),this.#Gs.Ve.Is=0,this.#Gs.Ve.Ss=0}#_a(){this.#Gs.removeEventListener("pointermove",this.#ya),this.#Gs.removeEventListener("pointerup",this.#ba)}#ka=()=>2==this.#ua.size||(this.#da||this.#fa)&&1==this.#ua.size;#Ma=t=>{if(0!==t.button)return;this.#fa=t.shiftKey;const i=!this.#ka();if(this.#ua.set(t.pointerId,1),this.#ua.size>2)return this.#ua.clear(),void this.#_a();i&&(this.#aa=0,this.#Gs.setAttribute("data-panning",""),this.#oa=this.currentIndex,this.#ra=t.clientX,this.#pa=t.pointerId,this.#Gs.addEventListener("pointermove",this.#ya),this.#Gs.addEventListener("pointerup",this.#ba),this.#Gs.setPointerCapture(t.pointerId))};#ya=t=>{if(!this.#ka()||t.pointerId!=this.#pa||void 0===this.#ra||void 0===this.#oa)return;if(!this.#aa&&void 0!==this.#ra&&(this.#aa=2!=this.#ua.size?1:Math.abs(t.clientX-this.#ra)>(this.#Gs.events.Je&&this.#Gs.events.Je>1.25?.3:.15)*this.#Gs.offsetWidth)&&(this.#ra=t.clientX),!this.#aa)return;const i=this.#Gs.$current.camera,s=this.#na.continuous?Math.max(.1,(i.getXY(1,.5)[0]-i.getXY(0,.5)[0])/this.#Gs.offsetWidth):1,h=Math.round((t.clientX-this.#ra)/(this.#Gs.offsetWidth*s)*this.#ea*(this.#na.sensitivity??1));let e=this.#oa-h;if(this.#na.continuous){for(;0>e;)e+=this.#ea;for(;e>this.#ea-1;)e-=this.#ea}e=Math.max(0,Math.min(this.#ea-1,e)),e!=this.currentIndex&&this.#ma(e)};#ba=t=>{this.#ua.delete(t.pointerId),t.pointerId==this.#pa&&(this.#Gs.releasePointerCapture(this.#pa),this.#pa=void 0),this.#ua.size||this.#xa()};#xa(){if(this.#Gs.removeAttribute("data-panning"),this.#_a(),this.#aa=0,this.#ca.length){const t=this.#ca[this.#ca.map((t,i)=>[i,Math.abs(t-this.currentIndex)]).sort((t,i)=>t[1]>i[1]?1:t[1]<i[1]?-1:0)[0][0]];t!=this.currentIndex&&this.animateTo(t)}}animateTo(t){this.#la&&Q.cancel(this.#la);const i=performance.now(),s=this.currentIndex,h=s-t,e=t=>{const n=Math.min(1,(t-i)/250);1>n?(this.#la=e,Q.request(e)):this.#la=void 0;const o=s-Math.round(dt.get(n)*h);o!=this.currentIndex&&this.#ma(o)};this.#la=e,Q.request(e)}},fh=class{#Gs;#Ni;#Pa;#Ta;#Sa;#Aa;#Ca;#Ea=-1;#Ia;#La=0;#za=0;#Da=0;#Fa=0;#$a=0;#Oa=0;#Ba=0;constructor(t,i,s,h,e,n,o){this.#Gs=t,this.#Ni=i,this.#Pa=s,this.#Ta=h,this.#Sa=e,this.#Aa=n,this.#Ca=o}async setup(t,i,s){this.#Ea=t,s.ne=wt("ease-out"),await Promise.allSettled(this.#Ni.map(t=>s.Bh(t,i)));const h=this.#Ta[t]??0;for(let e=0;e<this.#Ni.length;e++){const t=this.#Ni[e];if(!t.camera)continue;t.camera.setCoverLimit(0);const i=[this.#Ta[e]-h,0,this.#Sa[e],1];t.camera.setArea(i,{direct:1,noDispatch:1}),t.camera.setView([0,0,1,1])}this.#Ni[t]?.visible.set(1)}#Va(){return!!this.#Ni[this.#Ea]?.camera?.isZoomedOut()}animateTo(t,i,s,h){return new Promise(e=>{this.#Ea=h;const n=this.#Ni;if(!n[t])return void e();const o=0===s?0:i?.125:.2,r=n[h>-1&&h!==t?h:-1],a=o>0&&r?.camera&&!r.camera.isZoomedOut(),c=n[0]?.engine;if(!c)return void e();const l=this.#Ta[t],u=()=>{c.ee=o,c.Hh=0;for(let t=0;t<n.length;t++){const i=n[t];if(!i?.camera)continue;const s=i.opts.area??[0,0,1,1],h=s[0],e=s[0]+s[2]>-1&&2>h,r=this.#Ta[t]-l,a=this.#Sa[t],c=r+a>-1&&1>r,u=Math.abs(s[0]-r)>1e-4||Math.abs(s[2]-a)>1e-4,d=o>0&&u&&(e||c);i.camera.setArea([r,0,a,1],{direct:!d,noDispatch:1})}n[t]?.camera?.setView([0,0,1,1]),c.render(),this.#Ra(e)};a?r.camera.flyToCoverView({duration:600*o,speed:2}).then(u).catch(u):u()})}#Ra=t=>{const i=()=>{for(const t of this.#Ni)if(t?.canvas?.Yh())return void Q.request(i);t()};Q.request(i)};#Na=()=>{this.#Ha(),this.#Ia=void 0,this.#$a=0,this.#Gs.removeAttribute("data-panning"),this.#Gs.Se=0};handlePointerDown=t=>{0===t.button&&(void 0===this.#Ia?this.#Va()&&(this.#Ia=t.pointerId,this.#La=this.#za=t.clientX,this.#Ba=t.clientY,this.#Da=t.timeStamp,this.#Fa=0,this.#$a=0,this.#Oa=0,window.addEventListener("pointermove",this.#Xa),window.addEventListener("pointerup",this.#Ga),window.addEventListener("pointercancel",this.#Ga)):t.pointerId!==this.#Ia&&(this.#$a&&this.#Aa(this.#Ca()),this.#Na()))};#Xa=t=>{if(t.pointerId!==this.#Ia)return;const i=t.clientX-this.#La,s=t.clientY-this.#Ba;if(!this.#$a){if(6>Math.abs(i)&&6>Math.abs(s))return;if(this.#Oa=Math.abs(i)>Math.abs(s),!this.#Oa)return void this.#Ga(t);this.#$a=1,this.#Gs.setAttribute("data-panning",""),this.#Gs.Se=1,this.#Gs.canvas.element.setPointerCapture(t.pointerId)}const h=Math.max(1,t.timeStamp-this.#Da);this.#Fa=(t.clientX-this.#za)/h,this.#za=t.clientX,this.#Da=t.timeStamp;const e=i/(this.#Gs.offsetWidth||1);this.#ja(e)};#Ga=t=>{if(t.pointerId!==this.#Ia)return;const i=this.#$a;if(this.#Na(),!i)return;try{this.#Gs.canvas.element.releasePointerCapture(t.pointerId)}catch(n){}const s=this.#Gs.offsetWidth||1,h=(t.clientX-this.#La)/s;let e=this.#Ca();-.3>h||-.5>this.#Fa?e=Math.min(this.#Pa.length-1,this.#Ca()+1):(h>.3||this.#Fa>.5)&&(e=Math.max(0,this.#Ca()-1)),this.#Aa(e)};#Ha=()=>{window.removeEventListener("pointermove",this.#Xa),window.removeEventListener("pointerup",this.#Ga),window.removeEventListener("pointercancel",this.#Ga)};#ja(t){const i=this.#Ni,s=this.#Ca(),h=this.#Pa.length,e=0===s&&t>0||s===h-1&&0>t?Math.sign(t)*Math.sqrt(Math.abs(t))*.3:t,n=this.#Pa[s]?.[0]??0,o=this.#Ta[n],r=i[0]?.engine;if(r&&void 0!==o){for(let t=0;t<i.length;t++){const s=i[t];if(!s?.camera)continue;const h=this.#Ta[t]-o+e,n=this.#Sa[t];h+n>-1&&1>h&&s.camera.setArea([h,0,n,1],{direct:1,noDispatch:1})}r.render()}}destroy(){this.#Gs.removeAttribute("data-panning"),this.#Gs.Se=0,this.#Ha()}},ph=class t{Eo;Io;Lo;constructor(t=0,i=0,s=0){this.Eo=t,this.Io=i,this.Lo=s}zo(){return new t(this.Eo,this.Io,this.Lo)}Do(t,i,s){return this.Eo=t,this.Io=i,this.Lo=s,this}fi(t){return this.Eo=t.Eo,this.Io=t.Io,this.Lo=t.Lo,this}Fo(t){return this.Eo+=t.Eo,this.Io+=t.Io,this.Lo+=t.Lo,this}$o(t){return this.Eo-=t.Eo,this.Io-=t.Io,this.Lo-=t.Lo,this}Oo(){return Math.sqrt(this.Eo*this.Eo+this.Io*this.Io+this.Lo*this.Lo)}ss(){const t=this.Oo();return t>1e-9&&this.#Ya(t),this}Bo(t){return this.Eo*t.Eo+this.Io*t.Io+this.Lo*t.Lo}Vo(t){const i=this.Io*t.Lo-this.Lo*t.Io,s=this.Lo*t.Eo-this.Eo*t.Lo,h=this.Eo*t.Io-this.Io*t.Eo;return this.Eo=i,this.Io=s,this.Lo=h,this}#Ya(t){const i=1/t;return this.Eo*=i,this.Io*=i,this.Lo*=i,this}},mh=.0012,gh=Math.SQRT2,wh=.35,vh=.42*Math.PI,Mh=[.96,.94,.91],_h=[.91,.88,.82];function yh(t){const i=new Uint32Array(3*t.length);for(let s=0;s<t.length;s++){const h=t[s];i[3*s]=h.Ro[0],i[3*s+1]=h.Ro[1],i[3*s+2]=h.Ro[2]}return i}function bh(t,i,s){const h=new Float32Array(3*s),e=new Float32Array(s);for(const n of i){const[i,s,o]=n.Ro,r=new ph(t[3*i],t[3*i+1],t[3*i+2]),a=new ph(t[3*s],t[3*s+1],t[3*s+2]),c=new ph(t[3*o],t[3*o+1],t[3*o+2]),l=(new ph).fi(a).$o(r),u=(new ph).fi(c).$o(r),d=(new ph).fi(l).Vo(u);for(const t of[i,s,o])h[3*t]+=d.Eo,h[3*t+1]+=d.Io,h[3*t+2]+=d.Lo,e[t]++}for(let n=0;s>n;n++){const t=e[n];if(t>0){const i=1/t;let s=h[3*n]*i,e=h[3*n+1]*i,o=h[3*n+2]*i;const r=Math.sqrt(s*s+e*e+o*o);r>1e-9&&(h[3*n]=s/r,h[3*n+1]=e/r,h[3*n+2]=o/r)}}return h}function kh(t,i,s,h,e){const n=i>t?`${t}-${i}`:`${i}-${t}`;if(h.has(n))return;h.add(n);const o=3*t,r=3*i,a=s[o]-s[r],c=s[o+1]-s[r+1],l=s[o+2]-s[r+2],u=Math.sqrt(a*a+c*c+l*l);e.push({No:t,Ho:i,Xo:u})}function xh(t,i){const s=(i,s)=>t+10*s+i;for(let h=0;14>h;h++)for(let t=0;10>t;t++){const e=s(t,h);10>t+1&&i(e,s(t+1,h)),14>h+1&&i(e,s(t,h+1)),10>t+1&&14>h+1&&i(e,s(t+1,h+1)),t-1>=0&&14>h+1&&i(e,s(t-1,h+1))}}var Ph=class{Go;jo;Yo;Wo;Uo;Zo;qo;Jo;Ko;Qo;tr;ir;sr;constructor(t=0,i=1,s=gh){this.tr=t,this.ir=i,this.sr=i*s,this.Go=new Float32Array(420),this.jo=new Float32Array(420),this.Yo=new Float32Array(420),this.Wo=new Float32Array(140),this.Uo=new Float32Array(280),this.Zo=[],this.Jo=[],this.Ko=[],this.Qo=[],this.hr(this.sr),this.er(),this.nr(),this.rr(),this.ar(),this.cr()}hr(t){const i=t/2;for(let s=0;14>s;s++){const h=s/13*t-i;for(let t=0;10>t;t++){const i=t/9*this.ir,e=3*(10*s+t);this.Go[e]=i,this.Go[e+1]=this.tr,this.Go[e+2]=h}}this.jo.set(this.Go),this.Wo.fill(1)}er(){for(let t=0;14>t;t++){const i=t/13;for(let s=0;10>s;s++){const h=s/9,e=10*t+s;this.Uo[2*e]=h,this.Uo[2*e+1]=i}}}nr(){const t=[];for(let i=0;13>i;i++)for(let s=0;9>s;s++){const h=10*i+s,e=h+1,n=10*(i+1)+s,o=n+1;t.push({Ro:[h,n,e]}),t.push({Ro:[e,n,o]})}this.Zo=t,this.qo=yh(t)}rr(){const t=new Set,i=[];xh(0,(s,h)=>kh(s,h,this.Go,t,i)),this.Jo=i}ar(){const t=new Map,i=(t,i)=>i>t?`${t}-${i}`:`${i}-${t}`;for(let h=0;h<this.Zo.length;h++){const[s,e,n]=this.Zo[h].Ro;for(const o of[i(s,e),i(e,n),i(n,s)]){const i=t.get(o);i?i.push(h):t.set(o,[h])}}const s=[];for(const[,h]of t){if(2!==h.length)continue;const t=this.Zo[h[0]],i=this.Zo[h[1]],e=new Set(t.Ro),n=[];for(const s of i.Ro)e.has(s)&&n.push(s);if(2!==n.length)continue;const[o,r]=n,a=t.Ro.find(t=>t!==o&&t!==r),c=i.Ro.find(t=>t!==o&&t!==r),l=3*a,u=3*c,d=this.Go[l]-this.Go[u],f=this.Go[l+1]-this.Go[u+1],p=this.Go[l+2]-this.Go[u+2],m=Math.sqrt(d*d+f*f+p*p);s.push({No:a,Ho:c,Xo:m})}this.Ko=s}cr(){this.Qo=[];for(let t=0;14>t;t++)this.Qo.push(10*t)}ae(){this.jo.set(this.Go),this.Yo.fill(0)}lr(){for(const t of this.Qo)this.Wo[t]=0}ur(){return bh(this.jo,this.Zo,140)}},Th=140,Sh=class extends Ph{dr;Y;pr;constructor(t=0,i=1,s=gh,h=.01,e=1.04,n=1.08){super(t,i,s),this.dr=h,this.Y=e,this.pr=n,this.Go=new Float32Array(1128),this.jo=new Float32Array(1128),this.Yo=new Float32Array(1128),this.Wo=new Float32Array(376),this.Uo=new Float32Array(752),this.Zo=[],this.Jo=[],this.Ko=[],this.Qo=[],this.hr(),this.er(),this.nr(),this.rr(),this.cr()}hr(){const t=this.sr/2,i=this.dr/2;this.#Wa(0,i,t),this.#Wa(Th,-i,t);let s=280;s=this.#Ua(s,this.#Za("bottom"),-t),s=this.#Ua(s,this.#Za("top"),t),s=this.#Ua(s,this.#Za("freeEdge"),this.ir),this.#Ua(s,this.#Za("boundEdge"),0),this.jo.set(this.Go),this.Wo.fill(1)}#Wa(t,i,s){const h=this.ir/2;for(let e=0;14>e;e++){const n=(-s+e/13*this.sr)*this.pr;for(let s=0;10>s;s++){const o=h+(s/9*this.ir-h)*this.Y,r=3*(t+10*e+s);this.Go[r]=o,this.Go[r+1]=this.tr+i,this.Go[r+2]=n}}}#Za(t){const i=[];switch(t){case"bottom":for(let t=0;10>t;t++)i.push(t);break;case"top":for(let t=0;10>t;t++)i.push(130+t);break;case"freeEdge":for(let t=0;14>t;t++)i.push(10*t+9);break;case"boundEdge":for(let t=0;14>t;t++)i.push(10*t)}return i}#Ua(t,i,s){const h=i.length;for(let e=0;h>e;e++){const s=3*i[e],h=this.Go[s],n=this.Go[s+1],o=this.Go[s+2],r=3*(t+2*e);this.Go[r]=h,this.Go[r+1]=n,this.Go[r+2]=o;const a=3*(t+2*e+1);this.Go[a]=h,this.Go[a+1]=n-this.dr,this.Go[a+2]=o}return t+2*h}er(){for(let i=0;14>i;i++){const t=i/13;for(let s=0;10>s;s++){const h=s/9,e=2*(10*i+s);this.Uo[e]=h,this.Uo[e+1]=t}}for(let i=0;14>i;i++){const t=i/13;for(let s=0;10>s;s++){const h=1-s/9,e=2*(Th+10*i+s);this.Uo[e]=h,this.Uo[e+1]=t}}let t=280;t=this.#qa(t,"bottom"),t=this.#qa(t,"top"),t=this.#qa(t,"freeEdge"),this.#qa(t,"boundEdge")}#qa(t,i){const s=this.#Za(i),h=s.length;for(let e=0;h>e;e++){const h=s[e],n=h%10,o=Math.floor(h/10);let r,a;switch(i){case"bottom":r=n/9,a=0;break;case"top":r=n/9,a=1;break;case"freeEdge":r=1,a=o/13;break;default:r=0,a=o/13}const c=t+2*e;this.Uo[2*c]=r,this.Uo[2*c+1]=a;const l=t+2*e+1;this.Uo[2*l]=r,this.Uo[2*l+1]=a}return t+2*h}nr(){const t=[];this.#Ja(t,0,0),this.#Ja(t,Th,1);let i=280;for(const s of["bottom","top","freeEdge","boundEdge"]){const h=this.#Za(s).length;for(let e=0;h-1>e;e++){const h=i+2*e,n=i+2*e+1,o=i+2*(e+1),r=i+2*(e+1)+1;"bottom"===s||"freeEdge"===s?(t.push({Ro:[h,n,o]}),t.push({Ro:[o,n,r]})):(t.push({Ro:[h,o,n]}),t.push({Ro:[o,r,n]}))}i+=2*h}this.Zo=t,this.qo=yh(t)}#Ja(t,i,s){for(let h=0;13>h;h++)for(let e=0;9>e;e++){const n=i+10*h+e,o=n+1,r=i+10*(h+1)+e,a=r+1;s?(t.push({Ro:[n,o,r]}),t.push({Ro:[o,a,r]})):(t.push({Ro:[n,r,o]}),t.push({Ro:[o,r,a]}))}}rr(){const t=new Set,i=[],s=(s,h)=>kh(s,h,this.Go,t,i);xh(0,s),xh(Th,s);for(let h=0;14>h;h++)for(let t=0;10>t;t++)s(10*h+t,Th+10*h+t);this.Jo=i}ar(){this.Ko=[]}cr(){this.Qo=[];for(let t=0;14>t;t++)this.Qo.push(10*t);for(let t=0;14>t;t++)this.Qo.push(Th+10*t)}ur(){return bh(this.jo,this.Zo,376)}};function Ah(t,i,s){const h=2.1*t,e=.5+(.45*Math.sin(1.7*i+h)+.3*Math.sin(3.9*i+1.4*h)+.15*Math.sin(7.1*i+2.8*h)+.2*Math.abs(Math.sin(10.3*i+5.1*h)))*s;return Math.max(.1,Math.min(1,e))}function Ch(t){return Math.max(0,Math.min(1,t))}function Eh(t){const i=Math.sqrt(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);return 1e-9>i?[0,1,0]:[t[0]/i,t[1]/i,t[2]/i]}var Ih=[{name:"daylight",isAnimated:0,params:[{key:"timeOfDay",default:12}]},{name:"incandescent",isAnimated:0,params:[{key:"wattage",default:1}]},{name:"candlelight",isAnimated:1,params:[{key:"candleCount",default:3},{key:"spread",default:2},{key:"intensity",default:.65},{key:"flicker",default:.2}]},{name:"rainy day",isAnimated:1,params:[{key:"stormLevel",default:1}]},{name:"moonlight",isAnimated:1,params:[{key:"moonPhase",default:0}]},{name:"fireplace",isAnimated:1,params:[{key:"fireIntensity",default:.8},{key:"crackle",default:.6}]},{name:"haunted",isAnimated:1,params:[{key:"spookiness",default:.7}]}];function Lh(){return Ih}function zh(t,i){let s=0;for(let h=0;h<t.length;h++)s+=t[h];return i>0?s/i:0}function Dh(t,i,s,h,e,n){const o=s*h;return(1-i)*((e-1-t)*n+o)+i*(t*n+(h-o))}function Fh(t,i){if(Math.abs(i)>1e-6)for(let s=1;s<t.length;s+=3)t[s]+=i}function $h(t,i,s){const h=t.createShader(i);if(t.shaderSource(h,s),t.compileShader(h),!t.getShaderParameter(h,t.COMPILE_STATUS)){const i=t.getShaderInfoLog(h);throw t.deleteShader(h),new Error(`Shader compile error: ${i}`)}return h}function Oh(t,i,s){const h=$h(t,t.VERTEX_SHADER,i),e=$h(t,t.FRAGMENT_SHADER,s),n=t.createProgram();if(t.attachShader(n,h),t.attachShader(n,e),t.linkProgram(n),!t.getProgramParameter(n,t.LINK_STATUS)){const i=t.getProgramInfoLog(n);throw t.deleteProgram(n),t.deleteShader(h),t.deleteShader(e),new Error(`Program link error: ${i}`)}return t.detachShader(n,h),t.detachShader(n,e),t.deleteShader(h),t.deleteShader(e),n}function Bh(t,i){t.bindTexture(t.TEXTURE_2D,i),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR_MIPMAP_LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR)}var Vh="#version 300 es\nprecision highp float;in vec2 a;out vec2 X;void main(){gl_Position=vec4(a,0.0,1.0);X=a*0.5+0.5;}",Rh=class{#Ss;#Ka;#Qa={mr:null,gr:null,wr:null,vr:null,Mr:null,_r:null,yr:null,br:null,kr:null,Pr:null,Tr:null,Sr:null,Ar:null,Cr:null,Er:null,Ir:null,Lr:null,zr:null,Dr:null,Fr:null,$r:null,Or:null,Br:null};#tc=[];#ic=[];#sc=[];#hc=[];#ec=[];#nc=[];#oc=[];#rc=new Float32Array(0);#ac=new Float32Array(0);#cc=new Float32Array(0);#lc=new Float32Array(0);#uc=new Float32Array(0);#dc=new Float32Array(0);#fc;#pc="daylight";#mc={};#gc=new Float32Array(24);#wc=new Float32Array(24);#vc=new Float32Array(8);Vr=1;Rr=0;#u;#Mc;#_c={Nr:null,Hr:null,Xr:null,Gr:null};#yc;#bc={jr:null,Yr:null,Hr:null,Wr:null,Ur:null,Xr:null,Zr:null,Gr:null};#kc;#xc=null;#Pc=null;#Tc=new Float32Array(0);#Sc;#Ac=0;#Cc=new Float32Array(3);#Ec=new Float32Array(3);constructor(t){this.#Ss=t,this.#u=t.canvas,this.Ch(),this.#fc=(t=>{const i=t.createTexture();return t.bindTexture(t.TEXTURE_2D,i),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,1,1,0,t.RGBA,t.UNSIGNED_BYTE,new Uint8Array([255,255,255,0])),Bh(t,i),t.generateMipmap(t.TEXTURE_2D),t.bindTexture(t.TEXTURE_2D,null),i})(t),this.#Sc=this.#Ic();const i=Lh();for(const s of i)if("daylight"===s.name){for(const t of s.params)this.#mc[t.key]=t.default;break}}qr(t){const i=this.#Ss;this.#Ka=Oh(i,"#version 300 es\nprecision highp float;layout(location=0)in vec3 b;layout(location=1)in vec3 c;layout(location=2)in vec2 d;uniform mat4 a;out vec3 X;out vec3 Y;out vec2 Z;void main(){vec4 w=vec4(b,1.0);gl_Position=a*w;X=b;Y=c;Z=d;}","#version 300 es\nprecision highp float;\n#define MAX_POINT_LIGHTS 8\nin vec3 X;in vec3 Y;in vec2 Z;uniform vec3 A;uniform vec3 B;uniform vec3 C;uniform vec3 D;uniform vec3 E;uniform sampler2D F;uniform sampler2D G;uniform sampler2D H;uniform sampler2D I;uniform sampler2D J;uniform sampler2D K;uniform float L;uniform float M;uniform float N;uniform float O;uniform int P;uniform vec3 Q[MAX_POINT_LIGHTS];uniform vec3 R[MAX_POINT_LIGHTS];uniform float S[MAX_POINT_LIGHTS];uniform vec4 T;uniform vec4 U;uniform float V;out vec4 o;void main(){vec3 v=vec3(0.0,0.70710678,0.70710678);vec3 n=normalize(Y);if(dot(n,v)<0.0)n=-n;vec4 reg;vec2 c0;if(gl_FrontFacing){c0=Z;reg=T;}else{c0=vec2(1.0-Z.x,Z.y);reg=U;}float mask=1.0;if(reg.x>0.0||reg.y>0.0||reg.z<1.0||reg.w<1.0){vec2 lo=(c0-reg.xy)/reg.zw;vec2 hi=(reg.xy+reg.zw-c0)/reg.zw;mask=(reg.x>0.0?smoothstep(0.0,0.004,lo.x):1.0)*(reg.x+reg.z<1.0?smoothstep(0.0,0.004,hi.x):1.0)*(reg.y>0.0?smoothstep(0.0,0.004,lo.y):1.0)*(reg.y+reg.w<1.0?smoothstep(0.0,0.004,hi.y):1.0);}vec2 q=vec2((c0.x-reg.x)/reg.z,(c0.y-reg.y)/reg.w);if(V>0.5&&mask<0.01)discard;vec4 x;vec3 b;if(gl_FrontFacing){vec4 f=texture(F,q);vec4 i=texture(H,q);vec4 j=texture(I,q);float k=clamp(L+M,0.0,1.0);float r=k>0.0?M/k:0.0;vec4 p=mix(i,j,r);x=mix(f,p,k*p.a);b=D;}else{vec4 f=texture(G,q);vec4 i=texture(J,q);vec4 j=texture(K,q);float k=clamp(N+O,0.0,1.0);float r=k>0.0?O/k:0.0;vec4 p=mix(i,j,r);x=mix(f,p,k*p.a);b=E;}vec3 g=mix(b,x.rgb*b,x.a);vec3 c=B*g;vec3 l=normalize(A);float d=max(dot(n,l),0.0);vec3 h=normalize(l+v);float m=max(dot(n,h),0.0);float s=m*m;s*=s;s*=s;c+=C*g*d*0.82;c+=C*s*0.04;for(int e=0;e<MAX_POINT_LIGHTS;e++){if(e<P){vec3 t=Q[e]-X;float u=dot(t,t);float q=S[e]/(1.0+0.08*u);vec3 r=t*inversesqrt(u);float f=max(dot(n,r),0.0);vec3 i=normalize(r+v);float j=max(dot(n,i),0.0);j*=j;j*=j;j*=j;c+=R[e]*g*f*q*0.68;c+=R[e]*j*q*0.03;}}float a=abs(dot(n,v));float w=1.0-a;float y=w*w*w;c=mix(c,c*0.85,y*0.3);o=vec4(c*mask,mask);}");const s=(t,s=this.#Ka)=>i.getUniformLocation(s,t);this.#Qa.mr=s("a"),this.#Qa.gr=s("A"),this.#Qa.wr=s("B"),this.#Qa.vr=s("C"),this.#Qa.Mr=s("D"),this.#Qa._r=s("E"),this.#Qa.yr=s("F"),this.#Qa.br=s("G"),this.#Qa.kr=s("H"),this.#Qa.Pr=s("I"),this.#Qa.Tr=s("J"),this.#Qa.Sr=s("K"),this.#Qa.Ar=s("L"),this.#Qa.Cr=s("M"),this.#Qa.Er=s("N"),this.#Qa.Ir=s("O"),this.#Qa.Lr=s("P"),this.#Qa.zr=s("Q[0]"),this.#Qa.Dr=s("R[0]"),this.#Qa.Fr=s("S[0]"),this.#Qa.$r=s("T"),this.#Qa.Or=s("U"),this.#Qa.Br=s("V"),this.#tc=t.map((t,i)=>this.#Lc(t,i));const h=t.length;for(let e=0;h>e;e++)this.#ic.push(null),this.#sc.push(null),this.#hc.push(null),this.#ec.push(null),this.#nc.push(null),this.#oc.push(null);this.#rc=new Float32Array(h),this.#ac=new Float32Array(h),this.#cc=new Float32Array(h),this.#lc=new Float32Array(h),this.#uc=new Float32Array(4*h),this.#dc=new Float32Array(4*h);for(let e=0;h>e;e++)this.#uc[4*e+2]=1,this.#uc[4*e+3]=1,this.#dc[4*e+2]=1,this.#dc[4*e+3]=1;i.enable(i.DEPTH_TEST),i.depthFunc(i.LESS),this.#Mc=Oh(i,Vh,"#version 300 es\nprecision highp float;in vec2 X;uniform sampler2D A;uniform vec2 B;uniform float C;uniform float D[15];out vec4 o;void main(){float s=C;float t=s*0.5;vec4 r=vec4(0.0);for(int e=-7;e<=7;e++){float d=float(e)*t;r+=texture(A,X+vec2(B.x*d,0.0))*D[e+7];}o=r;}"),this.#_c.Nr=s("A",this.#Mc),this.#_c.Hr=s("B",this.#Mc),this.#_c.Xr=s("C",this.#Mc),this.#_c.Gr=s("D[0]",this.#Mc),this.#yc=Oh(i,Vh,"#version 300 es\nprecision highp float;in vec2 X;uniform sampler2D A;uniform sampler2D B;uniform vec2 C;uniform float D;uniform float E;uniform float F;uniform float G;uniform float H[15];out vec4 o;void main(){float d=abs(X.y-D);float h=E*0.5;float b=smoothstep(h,h+0.5/max(G,0.1),d);if(b<0.002){o=texture(B,X);return;}float s=F;float t=s*0.5;vec4 r=vec4(0.0);for(int e=-7;e<=7;e++){float p=float(e)*t;r+=texture(A,X+vec2(0.0,C.y*p))*H[e+7];}vec4 u=r;vec4 g=texture(B,X);o=mix(g,u,b);}"),this.#bc.jr=s("A",this.#yc),this.#bc.Yr=s("B",this.#yc),this.#bc.Hr=s("C",this.#yc),this.#bc.Wr=s("D",this.#yc),this.#bc.Ur=s("E",this.#yc),this.#bc.Xr=s("F",this.#yc),this.#bc.Zr=s("G",this.#yc),this.#bc.Gr=s("H[0]",this.#yc),this.#kc=this.#zc()}Jr(t,i,s){const h=this.#Ss;{const s=this.#ic[t]?this.#ic[t]:h.createTexture();h.bindTexture(h.TEXTURE_2D,s),h.texImage2D(h.TEXTURE_2D,0,h.RGBA,h.RGBA,h.UNSIGNED_BYTE,i),Bh(h,s),h.generateMipmap(h.TEXTURE_2D),this.#ic[t]||(this.#ic[t]=s)}{const i=this.#sc[t]?this.#sc[t]:h.createTexture();h.bindTexture(h.TEXTURE_2D,i),h.texImage2D(h.TEXTURE_2D,0,h.RGBA,h.RGBA,h.UNSIGNED_BYTE,s),Bh(h,i),h.generateMipmap(h.TEXTURE_2D),this.#sc[t]||(this.#sc[t]=i)}h.bindTexture(h.TEXTURE_2D,null)}Kr(t,i,s,h){const e=this.#Ss,n=0===i?0===s?this.#hc:this.#ec:0===s?this.#nc:this.#oc;n[t]&&e.deleteTexture(n[t]);const o=e.createTexture();e.bindTexture(e.TEXTURE_2D,o),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,h),Bh(e,o),e.generateMipmap(e.TEXTURE_2D),e.bindTexture(e.TEXTURE_2D,null),n[t]=o}Qr(t,i,s,h,e){this.#rc[t]=i,this.#ac[t]=s,this.#cc[t]=h,this.#lc[t]=e}ta(t,i){this.#uc=t,this.#dc=i}ia(t,i,s){const h=0===i?0===s?this.#hc:this.#ec:0===s?this.#nc:this.#oc;h[t]&&(this.#Ss.deleteTexture(h[t]),h[t]=null),0===i?0===s?this.#rc[t]=0:this.#ac[t]=0:0===s?this.#cc[t]=0:this.#lc[t]=0}Yt(){return this.#u}sa(t,i){t&&t!==this.#pc?(this.#pc=t,this.#mc={...i}):this.#mc={...this.#mc,...i}}ha(){return Lh().find(t=>t.name===this.#pc)?.isAnimated??0}#Lc(t,i){const s=this.#Ss,h=s.createVertexArray();s.bindVertexArray(h);const e=s.ARRAY_BUFFER,n=s.createBuffer();s.bindBuffer(e,n),s.bufferData(e,t.jo,s.DYNAMIC_DRAW),s.enableVertexAttribArray(0),s.vertexAttribPointer(0,3,s.FLOAT,0,0,0);const o=s.createBuffer();s.bindBuffer(e,o);const r=t.ur();s.bufferData(e,r,s.DYNAMIC_DRAW),s.enableVertexAttribArray(1),s.vertexAttribPointer(1,3,s.FLOAT,0,0,0);const a=s.createBuffer();s.bindBuffer(e,a),s.bufferData(e,t.Uo,s.STATIC_DRAW),s.enableVertexAttribArray(2),s.vertexAttribPointer(2,2,s.FLOAT,0,0,0);const c=s.createBuffer();return s.bindBuffer(s.ELEMENT_ARRAY_BUFFER,c),s.bufferData(s.ELEMENT_ARRAY_BUFFER,t.qo,s.STATIC_DRAW),s.bindVertexArray(null),{ea:h,na:n,oa:o,ra:a,aa:c,ca:t.qo.length,la:i}}#zc(){const t=this.#Ss,i=t.createVertexArray();t.bindVertexArray(i);const s=new Float32Array([-1,-1,1,-1,-1,1,1,1]),h=t.createBuffer();return t.bindBuffer(t.ARRAY_BUFFER,h),t.bufferData(t.ARRAY_BUFFER,s,t.STATIC_DRAW),t.enableVertexAttribArray(0),t.vertexAttribPointer(0,2,t.FLOAT,0,0,0),t.bindVertexArray(null),i}#Dc(t){const i=this.#Ss,s=t.la,h=[[this.#ic,this.#Qa.yr],[this.#sc,this.#Qa.br],[this.#hc,this.#Qa.kr],[this.#nc,this.#Qa.Tr],[this.#ec,this.#Qa.Pr],[this.#oc,this.#Qa.Sr]];for(let n=0;h.length>n;n++)i.activeTexture(i.TEXTURE0+n),i.bindTexture(i.TEXTURE_2D,h[n][0][s]??this.#fc),i.uniform1i(h[n][1],n);i.uniform1f(this.#Qa.Ar,this.#rc[s]),i.uniform1f(this.#Qa.Cr,this.#ac[s]),i.uniform1f(this.#Qa.Er,this.#cc[s]),i.uniform1f(this.#Qa.Ir,this.#lc[s]);const e=4*s;i.uniform4f(this.#Qa.$r,this.#uc[e],this.#uc[e+1],this.#uc[e+2],this.#uc[e+3]),i.uniform4f(this.#Qa.Or,this.#dc[e],this.#dc[e+1],this.#dc[e+2],this.#dc[e+3]),i.bindVertexArray(t.ea),i.bindBuffer(i.ELEMENT_ARRAY_BUFFER,t.aa),i.drawElements(i.TRIANGLES,t.ca,i.UNSIGNED_INT,0)}#Fc(){const t=this.#Ss,i=this.#u.width,s=this.#u.height;this.#xc&&(t.deleteTexture(this.#xc.ua),this.#xc.da&&t.deleteRenderbuffer(this.#xc.da),t.deleteFramebuffer(this.#xc.fa));const h=t.createTexture();t.bindTexture(t.TEXTURE_2D,h),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,i,s,0,t.RGBA,t.UNSIGNED_BYTE,null),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE);const e=t.createRenderbuffer();t.bindRenderbuffer(t.RENDERBUFFER,e),t.renderbufferStorage(t.RENDERBUFFER,t.DEPTH_COMPONENT24,i,s);const n=t.createFramebuffer();t.bindFramebuffer(t.FRAMEBUFFER,n),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,h,0),t.framebufferRenderbuffer(t.FRAMEBUFFER,t.DEPTH_ATTACHMENT,t.RENDERBUFFER,e),this.#xc={fa:n,ua:h,da:e},this.#Pc&&(t.deleteTexture(this.#Pc.ua),t.deleteFramebuffer(this.#Pc.fa));const o=t.createTexture();t.bindTexture(t.TEXTURE_2D,o),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,i,s,0,t.RGBA,t.UNSIGNED_BYTE,null),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE);const r=t.createFramebuffer();t.bindFramebuffer(t.FRAMEBUFFER,r),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,o,0),t.bindFramebuffer(t.FRAMEBUFFER,null),t.bindTexture(t.TEXTURE_2D,null),t.bindRenderbuffer(t.RENDERBUFFER,null),this.#Pc={fa:r,ua:o,da:null}}Ch(){const t=this.#Ss,i=window.devicePixelRatio||1,s=this.#u.clientWidth,h=this.#u.clientHeight;this.#u.width=Math.floor(s*i),this.#u.height=Math.floor(h*i),t.viewport(0,0,this.#u.width,this.#u.height),this.#xc=null,this.#Pc=null}pa(t,i){if(t>=this.#tc.length)return;const s=this.#Ss,h=this.#tc[t];s.bindBuffer(s.ARRAY_BUFFER,h.na),s.bufferSubData(s.ARRAY_BUFFER,0,i.jo)}ma(t,i){if(t>=this.#tc.length)return;const s=this.#Ss,h=this.#tc[t],e=i.ur();s.bindBuffer(s.ARRAY_BUFFER,h.oa),s.bufferSubData(s.ARRAY_BUFFER,0,e)}ga(){if(!this.#Ac)return null;const t=this.#Cc,i=this.#Ec,s=new Float32Array(24);return s.set([t[0],t[1],t[2]]),s.set([i[0],t[1],t[2]],3),s.set([i[0],t[1],i[2]],6),s.set([t[0],t[1],i[2]],9),s.set([t[0],i[1],t[2]],12),s.set([i[0],i[1],t[2]],15),s.set([i[0],i[1],i[2]],18),s.set([t[0],i[1],i[2]],21),s}wa(){return{width:this.#u.width,height:this.#u.height}}va(t){const i=this.ga();if(!i)return null;const s=this.#u.width,h=this.#u.height;let e=1/0,n=-1/0,o=1/0,r=-1/0,a=0;const c=t.arr;for(let l=0;8>l;l++){const t=i[3*l],u=i[3*l+1],d=i[3*l+2],f=c[0]*t+c[4]*u+c[8]*d+c[12],p=c[1]*t+c[5]*u+c[9]*d+c[13],m=c[3]*t+c[7]*u+c[11]*d+c[15];if(0>=m)continue;a=1;const g=(f/m*.5+.5)*s,w=(.5-p/m*.5)*h;e>g&&(e=g),g>n&&(n=g),o>w&&(o=w),w>r&&(r=w)}return a?{minX:e,maxX:n,minY:o,maxY:r}:null}Ma(t){this.#Tc=t}_a(t,i){this.#Ac=1,this.#Cc.set([t.x,t.y,t.z]),this.#Ec.set([i.x,i.y,i.z])}#$c(){if(0===this.#Tc.length)return this.#tc;const t=this.#tc.length,i=t*mh,s=zh(this.#Tc,t),h=this.#tc.map(h=>{const e=h.la;return{md:h,y:Dh(e,this.#Tc[e],s,i,t,mh)}});return h.sort((t,i)=>i.y-t.y),h.map(t=>t.md)}#Ic(){const t=new Float32Array(15);let i=0;for(let s=-7;7>=s;s++){const h=Math.exp(-.125*s*s);t[s+7]=h,i+=h}for(let s=0;15>s;s++)t[s]/=i;return t}De(t){const i=this.#Ss,s=t.ya(),h=this.#u.width/Math.max(1,this.#u.height),e=new Zt;e.Oi(.25*Math.PI,h,.1,50);const n=new Zt;n.fi(s),n.Ki(e);const o=performance.now()/1e3,r=((t,i,s)=>{const h=new Float32Array(24),e=new Float32Array(24),n=new Float32Array(8),o=(t,i,s,o,r)=>({gr:t,vr:i,wr:s,Lr:o,zr:h,Dr:e,Fr:n,ba:r});switch(t){case"daylight":{const t=i.timeOfDay??12,s=(t/24*2-.5)*Math.PI,h=Math.sin(s),e=Eh([Math.cos(s),Math.max(.05,h),-.35]),n=Math.max(0,1-Math.abs(t-6.5)/3.5),r=Math.max(0,1-Math.abs(t-17.5)/3.5),a=Math.max(n,r),c=.85+.15*a,l=.82+.08*a,u=.76-.2*a,d=0>h?Math.min(1,2*-h):0,f=.12+.08*h-.04*d,p=.12+.08*h-.04*d,m=.18+.06*h-.08*d;return o(e,[Ch(c),Ch(l),Ch(u)],[Ch(f),Ch(p),Ch(m)],0,.4)}case"incandescent":{const t=i.wattage??1,s=[.5,1,1.4][Math.round(t)]??1,h=.6+.4*s,e=.4-.15*s;return o(Eh([.3,.85,.35]),[.95*h,.75*h,.45*h],[.1+.05*e,.08+.04*e,.05+.02*e],0,.4)}case"candlelight":{const t=Math.round(i.candleCount??4),r=i.spread??1,a=i.intensity??.7,c=i.flicker??.7,l=Math.ceil(t/2);for(let i=0;t>i&&8>i;i++){const t=l>1?(l>i?i:i-l)/(l-1):0,o=(l>i?-1:1)*(1.2+2.2*t*r),u=-1.5-2*t*r-.5*Math.sin(2.7*i)*r,d=.8+.5*Math.sin(1.3*i);h[3*i]=o,h[3*i+1]=d,h[3*i+2]=u;const f=a*(.5+1.8*Ah(i,s,c));e[3*i]=.95,e[3*i+1]=.6,e[3*i+2]=.18,n[i]=f}return o([0,1,0],[0,0,0],[.06,.04,.04],t,.5)}case"rainy day":{const t=i.stormLevel??1,h=[.45,.3,.15][Math.round(t)]??.3,e=1-.15*Math.abs(Math.sin(.13*s+.7))*h;return o(Eh([.1,.7,.4]),[.55*e,.58*e,.62*e],[.08*h,.09*h,.13*h],0,.5)}case"moonlight":{const t=i.moonPhase??0,h=[1,.55,.22][Math.round(t)]??.55,e=1+.03*Math.sin(.05*s);return o(Eh([-.5,.65,.35]),[.22*h*e,.28*h*e,.42*h*e],[.02*h,.025*h,.06*h],0,.6)}case"fireplace":{const t=i.fireIntensity??.8,r=i.crackle??.6,a=.6+.4*(t=>{const i=.5*Math.sin(1.7*t)+.5,s=.25*Math.abs(Math.sin(8.3*t+.7)),h=.15*Math.abs(Math.sin(13.7*t+1.3)),e=.08*Math.abs(Math.sin(19.1*t+2.1));return Math.max(0,Math.min(1,.6+.4*(i+s+h+e)))})(s);h[0]=-3.5,h[1]=1.2,h[2]=-2.5,e[0]=1,e[1]=.45,e[2]=.08,n[0]=t*a*4,h[3]=3.5,h[4]=1.1,h[5]=-2.5,e[3]=1,e[4]=.5,e[5]=.1,n[1]=t*a*3;const c=1-Math.abs(Math.sin(9.7*s))*r*.4,l=1-Math.abs(Math.sin(14.3*s+1.1))*r*.25;return n[0]*=c,n[1]*=l,o([0,1,0],[0,0,0],[.08*t,.04*t,.03*t],2,.5)}case"haunted":{const t=i.spookiness??.7,h=.3*Math.sin(.7*s+.3)+.7,e=.5*Math.sin(1.3*s)+.5,n=.08+e*t*.35,r=.12+.5*t,a=.05+(1-e)*t*.3,c=.02+.04*t,l=.03+.05*t,u=.02+.03*t;return o(Eh([.4,.5,.3]),[n*h,r*h,a*h],[c,l,u],0,.5)}default:return o([0,1,0],[1,1,1],[.15,.15,.18],0,.4)}})(this.#pc,this.#mc,o);i.clearColor(0,0,0,0),this.Vr&&(this.#xc||this.#Fc(),i.bindFramebuffer(i.FRAMEBUFFER,this.#xc.fa)),i.clear(i.COLOR_BUFFER_BIT|i.DEPTH_BUFFER_BIT),i.useProgram(this.#Ka),i.uniformMatrix4fv(this.#Qa.mr,0,n.arr),i.uniform3f(this.#Qa.gr,r.gr[0],r.gr[1],r.gr[2]),i.uniform3f(this.#Qa.wr,r.wr[0],r.wr[1],r.wr[2]),i.uniform3f(this.#Qa.vr,r.vr[0],r.vr[1],r.vr[2]),i.uniform3f(this.#Qa.Mr,Mh[0],Mh[1],Mh[2]),i.uniform3f(this.#Qa._r,_h[0],_h[1],_h[2]),i.uniform1f(this.#Qa.Br,this.Rr?1:0),i.uniform1i(this.#Qa.Lr,r.Lr),r.Lr>0&&(this.#gc.set(r.zr),this.#wc.set(r.Dr),this.#vc.set(r.Fr)),i.uniform3fv(this.#Qa.zr,this.#gc),i.uniform3fv(this.#Qa.Dr,this.#wc),i.uniform1fv(this.#Qa.Fr,this.#vc),i.disable(i.CULL_FACE);const a=this.#$c(),c=t=>this.#Tc.length>t&&this.#Tc[t]>0&&1>this.#Tc[t],l=a.filter(t=>!c(t.la)),u=a.filter(t=>c(t.la));for(let d=0;d<l.length;d++)this.#Dc(l[d]);if(u.length>0){u.reverse(),i.enable(i.POLYGON_OFFSET_FILL);for(let t=0;t<u.length;t++)i.polygonOffset(0,12e3*-t),this.#Dc(u[t]);i.disable(i.POLYGON_OFFSET_FILL)}if(i.bindVertexArray(null),i.disable(i.POLYGON_OFFSET_FILL),this.Vr){const s=1/this.#u.width,h=1/this.#u.height,e=t.ka-t.xa,n=e>0?(t.bh-t.xa)/e:0,o=Math.max(.05,1-n),r=4*o,a=1*o;i.bindFramebuffer(i.FRAMEBUFFER,this.#Pc.fa),i.clear(i.COLOR_BUFFER_BIT),i.disable(i.DEPTH_TEST),i.useProgram(this.#Mc),i.uniform1i(this.#_c.Nr,0),i.uniform2f(this.#_c.Hr,s,h),i.uniform1f(this.#_c.Xr,r),i.uniform1fv(this.#_c.Gr,this.#Sc),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,this.#xc.ua),i.bindVertexArray(this.#kc),i.drawArrays(i.TRIANGLE_STRIP,0,4),i.bindFramebuffer(i.FRAMEBUFFER,null),i.clear(i.COLOR_BUFFER_BIT),i.useProgram(this.#yc),i.uniform1i(this.#bc.jr,0),i.uniform1i(this.#bc.Yr,1),i.uniform2f(this.#bc.Hr,s,h),i.uniform1f(this.#bc.Wr,.55),i.uniform1f(this.#bc.Ur,.25),i.uniform1f(this.#bc.Xr,r),i.uniform1f(this.#bc.Zr,a),i.uniform1fv(this.#bc.Gr,this.#Sc),i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,this.#Pc.ua),i.activeTexture(i.TEXTURE1),i.bindTexture(i.TEXTURE_2D,this.#xc.ua),i.bindVertexArray(this.#kc),i.drawArrays(i.TRIANGLE_STRIP,0,4),i.enable(i.DEPTH_TEST)}i.bindVertexArray(null)}},Nh=class{#u;#Oc;#ie;Pa=null;Ta=null;Sa=null;Aa=null;Ca=null;Ea=null;Ia=null;La=null;za=null;#ua=new Map;Da="none";#Bc=0;#Vc=0;#Rc=0;#Nc=0;#Hc=0;#Xc=0;#Gc=0;#ka=0;#jc=0;constructor(t,i,s){this.#u=t,this.#Oc=i,this.#ie=s,this.#Yc()}#Yc(){const t=this.#u;t.addEventListener("pointerdown",t=>this.#Wc(t)),window.addEventListener("pointermove",t=>this.#Uc(t)),window.addEventListener("pointerup",t=>this.#Zc(t)),window.addEventListener("pointercancel",t=>this.#qc(t)),t.addEventListener("wheel",t=>this.#Jc(t),{passive:0}),t.addEventListener("contextmenu",t=>t.preventDefault())}#Wc(t){this.#Kc(),"mouse"===t.pointerType&&t.button>2||(t.preventDefault(),this.#ua.set(t.pointerId,{Fa:t.clientX,$a:t.clientY}),1===this.#ua.size?this.#Qc(t):2===this.#ua.size&&this.#tl(),this.#ie())}#Uc(t){const i=this.#ua.get(t.pointerId);i&&(t.preventDefault(),this.#ua.set(t.pointerId,{Fa:t.clientX,$a:t.clientY}),1===this.#ua.size?this.#il(t.clientX,t.clientY,i.Fa,i.$a):2>this.#ua.size||this.#sl())}#Zc(t){t.preventDefault(),this.#ua.delete(t.pointerId),0===this.#ua.size?this.#hl():1===this.#ua.size&&this.#el()}#qc(t){this.#ua.delete(t.pointerId),0===this.#ua.size?this.#hl():1===this.#ua.size&&this.#el()}#Jc(t){t.preventDefault();const i=this.#u.getBoundingClientRect(),s=t.clientX-i.left,h=t.clientY-i.top,e=this.Ca?.(s,h)??void 0;this.#Oc.Tt(t.deltaY,e),this.#ie()}#Kc(){const t=document.activeElement;t&&t!==this.#u&&t.blur()}#nl(t){return"touch"===t.pointerType||"pen"===t.pointerType?0:2===t.button||1===t.button||0===t.button&&(t.ctrlKey||t.metaKey)}#Qc(t){this.Da=this.#nl(t)?"orbit":"pan",this.#Nc=t.clientX,this.#Hc=t.clientY,this.#Xc=0,this.#Gc=0,this.#ka=0,this.#jc=0}#tl(){this.Da=this.#ol()?"orbit":"pan";const[t,i]=Hh(this.#ua);this.#Bc=(t.Fa+i.Fa)/2,this.#Vc=(t.$a+i.$a)/2,this.#Rc=Xh(t,i)}#il(t,i,s,h){const e=t-s,n=i-h;"orbit"===this.Da?this.#rl(e,n):"pan"===this.Da&&this.#al(e,n,t,i)}#sl(){const[t,i]=Hh(this.#ua),s=(t.Fa+i.Fa)/2,h=(t.$a+i.$a)/2,e=2*(s-this.#Bc),n=2*(h-this.#Vc);"orbit"===this.Da?this.#Oc.Ti(this.#Oc.Oa?e:0,n,!this.#Oc.Oa):this.#Oc.St(e,n);const o=Xh(t,i);this.#Rc>0&&o>0&&this.#Oc.Tt(4*(this.#Rc-o)),this.#Bc=s,this.#Vc=h,this.#Rc=o}#rl(t,i){this.#Gc+=Math.abs(t)+Math.abs(i),this.#Oc.Ti(this.#Oc.Oa?t:0,i,!this.#Oc.Oa)}#al(t,i,s,h){this.#Xc+=Math.abs(t)+Math.abs(i),this.#ol()?this.#Oc.St(t,i):this.#Xc>=5&&this.La&&(!this.#jc&&this.Ia&&(this.Ia(this.#Nc,this.#Hc),this.#jc=1),this.#ka=1,this.La(s,h))}#hl(){if(this.Aa=null,"pan"===this.Da)if(this.#ka&&this.za)this.za();else if(5>this.#Xc&&this.Sa){const t=this.Sa(this.#Nc,this.#Hc);t&&(this.Aa=t.grabRow,"prev"===t.direction?this.Pa?.():"next"===t.direction&&this.Ta?.())}this.#el()}#el(){this.Da="none",this.#ka=0,this.#jc=0,this.#Xc=0,this.#Gc=0}#ol(){return this.Ea?this.Ea():this.#Oc.q()}};function Hh(t){const i=t.values();return[i.next().value,i.next().value]}function Xh(t,i){const s=i.Fa-t.Fa,h=i.$a-t.$a;return Math.sqrt(s*s+h*h)}var Gh=class{Ba=.4*Math.PI;Va=.25*Math.PI;bh=1.5;Ra=new ph(0,0,0);#cl=this.Ba;#ll=this.Va;#ul=this.bh;#dl=this.Ra.zo();Na=.005;Ha=.003;xa=.6;ka=5;Xa=null;Ga=null;Oa=0;ja=1;Ya=1;Wa=1;Ua=1;Za=0;q(){return this.ja||this.Ya||this.Wa||this.Ua}qa=.25*Math.PI;#fl=1;#pl=1;Ja(t,i){this.#fl=0|t,this.#pl=0|i}Ka(t,i){const s=Math.tan(this.qa/2),h=this.#fl,e=this.#pl,n=h-2*i,o=e-2*i,r=t.maxX-t.minX,a=t.maxZ-t.minZ,c=n>0&&r>0?r*e/(2*n*s):this.xa,l=o>0&&a>0?a*e/(2*o*s):this.xa;this.ka=Math.max(c,l,this.xa),this.bh=this.ka,this.#ul=this.ka,this.Qa()}Qa(){this.#cl=this.Ba,this.#ll=this.Va,this.#ul=this.bh,this.#dl.fi(this.Ra)}Th(t){const i=1-Math.exp(-24*t);this.Ba+=(this.#cl-this.Ba)*i,this.Va+=(this.#ll-this.Va)*i,this.bh+=(this.#ul-this.bh)*i,this.Ra.Eo+=(this.#dl.Eo-this.Ra.Eo)*i,this.Ra.Io+=(this.#dl.Io-this.Ra.Io)*i,this.Ra.Lo+=(this.#dl.Lo-this.Ra.Lo)*i,this.Oa||(this.#ul=Math.min(this.#ul,this.ka),this.bh=Math.min(this.bh,this.ka))}tc(){const t=1e-6;return Math.abs(this.#cl-this.Ba)>t||Math.abs(this.#ll-this.Va)>t||Math.abs(this.#ul-this.bh)>t||Math.abs(this.#dl.Eo-this.Ra.Eo)>t||Math.abs(this.#dl.Io-this.Ra.Io)>t||Math.abs(this.#dl.Lo-this.Ra.Lo)>t}#ml(){if(this.Oa)return this.Va;const t=(this.bh-this.xa)/(this.ka-this.xa),i=(1-t*t)*Math.PI/3;return Math.max(i,this.Va)}sc(){const t=this.#ml(),i=Math.cos(t);return new ph(this.Ra.Eo+this.bh*Math.sin(this.Ba)*i,this.Ra.Io+this.bh*Math.sin(t),this.Ra.Lo+this.bh*Math.cos(this.Ba)*i)}ya(){const t=this.sc(),i=new Zt;return i.Qi(t.Eo,t.Io,t.Lo,this.Ra.Eo,this.Ra.Io,this.Ra.Lo,0,1,0),i}hc(t){if(this.Oa=t,!t){const t=(this.bh-this.xa)/(this.ka-this.xa),i=(1-t*t)*Math.PI/3,s=Math.max(i,Math.min(.49*Math.PI,this.Va));this.#ll=s,this.#ul=Math.max(this.xa,Math.min(this.ka,this.bh)),this.Za=1}}Ti(t,i,s=1){this.#cl+=t*this.Na,this.#ll+=i*this.Na,s&&(this.#ll=Math.max(0,Math.min(.49*Math.PI,this.#ll)))}ec(t){const i=Math.PI/2,s=Math.round(this.#cl/i)*i;this.#cl=s+t*i}nc(t,i){const s=this.sc(),h=this.Ra,e=new ph(h.Eo-s.Eo,h.Io-s.Io,h.Lo-s.Lo).ss(),n=new ph(0,1,0),o=(new ph).fi(e).Vo(n).ss(),r=(new ph).fi(o).Vo(e).ss(),a=this.#fl/Math.max(1,this.#pl),c=Math.tan(this.qa/2),l=c*a,u=(t/this.#fl*2-1)*l,d=(1-i/this.#pl*2)*c,f=e.Eo+o.Eo*u+r.Eo*d,p=e.Io+o.Io*u+r.Io*d,m=e.Lo+o.Lo*u+r.Lo*d,g=1/Math.sqrt(f*f+p*p+m*m);return{origin:s,direction:new ph(f*g,p*g,m*g)}}Tt(t,i){const s=this.#ul;if(this.#ul+=t*this.Ha,this.#ul=Math.max(this.xa,this.#ul),this.Oa||(this.#ul=Math.min(this.ka,this.#ul)),!this.Oa)if(this.#ul<s){this.Za=1;const t=1-this.#ul/s;this.#ll+=t*(.49*Math.PI-this.#ll)}else this.#ul<this.ka||(this.Za=0);if(i){const t=this.#ul;if(s>0&&t>0){const h=1-t/s;this.#dl.Eo+=(i.Eo-this.#dl.Eo)*h,this.#dl.Io+=(i.Io-this.#dl.Io)*h,this.#dl.Lo+=(i.Lo-this.#dl.Lo)*h,this.#gl()}}}St(t,i){if(!(this.ja||this.Ya||this.Wa||this.Ua))return;t>0&&!this.Ya&&(t=0),0>t&&!this.ja&&(t=0),i>0&&!this.Ua&&(i=0),0>i&&!this.Wa&&(i=0);const s=this.sc(),h=new ph(this.Ra.Eo-s.Eo,this.Ra.Io-s.Io,this.Ra.Lo-s.Lo).ss(),e=(new ph).fi(h).Vo(new ph(0,1,0)).ss(),n=(new ph).fi(e).Vo(h).ss(),o=2*this.bh*Math.tan(this.qa/2)/this.#pl,r=-t*o,a=i*o,c=new ph(n.Eo,0,n.Lo),l=Math.sqrt(c.Eo*c.Eo+c.Lo*c.Lo);l>1e-6&&(c.Eo/=l,c.Lo/=l),this.#dl.Fo(new ph(e.Eo*r,e.Io*r,e.Lo*r)),this.#dl.Fo(new ph(c.Eo*a,0,c.Lo*a)),this.#gl()}#gl(){this.Xa&&this.Ga&&(this.#dl.Eo=Math.max(this.Xa.Eo,Math.min(this.Ga.Eo,this.#dl.Eo)),this.#dl.Io=Math.max(this.Xa.Io,Math.min(this.Ga.Io,this.#dl.Io)),this.#dl.Lo=Math.max(this.Xa.Lo,Math.min(this.Ga.Lo,this.#dl.Lo)))}oc(t,i,s,h){const e=t.maxX-t.minX,n=t.maxY-t.minY,o=i-2*h,r=s-2*h;e>o?(this.Ya=t.minX<h,this.ja=t.maxX>i-h):(this.Ya=0,this.ja=0),n>r?(this.Ua=t.minY<h,this.Wa=t.maxY>s-h):(this.Ua=0,this.Wa=0);const a=o>0&&e>0?this.bh*e/(.995*o):this.xa,c=r>0&&n>0?this.bh*n/(.995*r):this.xa;this.ka=Math.max(a,c,this.xa),this.Za||this.Oa||(this.#ul=this.ka);let l=0,u=0;e>o?(t.minX>h&&(l+=t.minX-h),t.maxX<i-h&&(l+=t.maxX-i+h)):l=(t.minX+t.maxX)/2-i/2,n>r?(t.minY>h&&(u+=h-t.minY),t.maxY<s-h&&(u+=s-h-t.maxY)):u=s/2-(t.minY+t.maxY)/2;const d=this.sc(),f=new ph(this.Ra.Eo-d.Eo,this.Ra.Io-d.Io,this.Ra.Lo-d.Lo).ss(),p=(new ph).fi(f).Vo(new ph(0,1,0)).ss(),m=(new ph).fi(p).Vo(f).ss(),g=2*this.bh*Math.tan(this.qa/2)/this.#pl,w=l*g,v=u*g,M=new ph(this.#dl.Eo-this.Ra.Eo,this.#dl.Io-this.Ra.Io,this.#dl.Lo-this.Ra.Lo),_=M.Eo*p.Eo+M.Io*p.Io+M.Lo*p.Lo,y=M.Eo*m.Eo+M.Io*m.Io+M.Lo*m.Lo;let b=0,k=0;if(e>o){const s=(t.minX-h)*g,e=(t.maxX-(i-h))*g;s>_?b=s-_:_>e&&(b=e-_)}else b=w-_;if(n>r){const i=(s-h-t.maxY)*g,e=(h-t.minY)*g;i>y?k=i-y:y>e&&(k=e-y)}else k=v-y;0!==b&&this.#dl.Fo(new ph(p.Eo*b,p.Io*b,p.Lo*b)),0!==k&&this.#dl.Fo(new ph(m.Eo*k,m.Io*k,m.Lo*k)),this.#gl()}},jh={Jh:0,Xh:0,rc:0,ac:0,cc:-1,lc:1,uc:0,dc:0},Yh=class{fc=new Set;get#wl(){return.6/Math.max(.1,.6)}get Kh(){for(const t of this.#vl)if(t&&0!==t.Xh)return 1;return 0}mc(t){const i=this.#vl[t];return i?0!==i.Xh:0}gc(t){const i=this.#vl[t];return i?i.Xh:0}#vl=[];#Ml=0;wc(t){const i=this.#vl[t];return i?i.Jh:0}vc(t,i){const s=this.#vl[t];s&&(s.Jh=i,s.Xh=0,s.rc=i,s.ac=0)}Mc(t,i){const s=this.#vl[i];s&&(s.Jh=1,s.Xh=0,s.rc=1,s.ac=0,this.#_l(t,s),this.#yl(t,s),t.Yo.fill(0))}_c(t){this.#vl=[];for(let i=0;t>i;i++)this.#vl.push({...jh})}yc(t,i){const s=t??this.#Ml,h=this.#vl[s];h&&this.#bl(h,1,i)}bc(t,i){const s=t??this.#Ml,h=this.#vl[s];h&&this.#bl(h,-1,i)}kc(t,i){const s=this.#vl[t];s&&(s.Xh=0,s.ac=0,s.rc=s.Jh,s.uc=i-wh,s.dc=1)}xc(t,i){const s=this.#vl[t];s&&s.dc&&(s.Jh=Math.max(0,Math.min(1,i)))}Pc(t,i){const s=this.#vl[t];s&&(s.dc=0,s.Xh=i,s.rc=s.Jh,s.ac=0)}Tc(t){const i=this.#vl[t];return i?i.dc:0}#bl(t,i,s){t.Xh=i,t.rc=t.Jh,t.ac=0,t.uc=void 0!==s?s-wh:.12*(2*Math.random()-1)}ae(t){this.#kl(t);for(const i of this.#vl)i.Jh=0,i.Xh=0,i.rc=0,i.ac=0,i.cc=-1,i.lc=1,i.uc=0,i.dc=0}#xl(t){return 10*Math.round(13-13*(wh+t))+9}#Pl(t,i,s,h){const e=this.#xl(s),n=i.Go[3*e+2],o=i.ir,r=t*Math.PI,a=o*Math.cos(r),c=.7*Math.sin(r);h.Do(a,c,n)}#yl(t,i){const s=i.Jh*Math.PI,h=Math.cos(s),e=Math.sin(s),n=t.jo,o=t.Go;let r=0;t instanceof Sh&&(r=t.ir/4*(1-t.Y));for(let a=0;a<n.length;a+=3){const t=o[a],i=o[a+1];n[a]=r+(t-r)*h,n[a+1]=(t-r)*e+i,n[a+2]=o[a+2]}}#Tl(t,i,s,h){if(this.fc.has(i)){if(!s.Sc){s.Sc=new Float32Array(t.Wo.length),s.Sc.set(t.Wo);for(let i=0;i<t.Wo.length;i++)t.Wo[i]=0}return void this.#yl(t,s)}const e=this.#xl(s.uc);s.cc!==e&&(0>s.cc||(t.Wo[s.cc]=s.lc),s.lc=t.Wo[e],s.cc=e),t.Wo[e]=0;const n=3*e,o=t.jo[1];t.jo[n]=h.Eo,t.jo[n+1]=h.Io+o,t.jo[n+2]=h.Lo,t.Yo[n]=0,t.Yo[n+1]=0,t.Yo[n+2]=0}#_l(t,i){if(i.Sc){for(let s=0;s<t.Wo.length;s++)t.Wo[s]=i.Sc[s];i.Sc=void 0}0>i.cc||(t.Wo[i.cc]=i.lc),i.cc=-1,i.lc=1}#kl(t){for(let i=0;i<this.#vl.length;i++){const s=this.#vl[i];if(s){if(i<t.length){if(s.Sc){for(let h=0;h<t[i].Wo.length;h++)t[i].Wo[h]=s.Sc[h];s.Sc=void 0}0>s.cc||(t[i].Wo[s.cc]=s.lc)}s.cc=-1,s.lc=1}}}#Sl(t,i,s,h){if(0===i.Xh)return 0;i.ac+=t;const e=i.Xh>0?1:0,n=Math.min(i.ac/this.#wl,1),o=n*n*(3-2*n);return i.Jh=i.rc+(e-i.rc)*o,1>n?(this.#Pl(i.Jh,s,i.uc,h),0):(i.Jh=e,i.Xh=0,1)}Th(t,i,s,h,e,n){if(0>s||s>=i.length)return;this.#Ml=s,this.#vl.length!==i.length&&this._c(i.length);const o=Math.min(t,1/30);for(let a=0;a<i.length;a++){const t=this.#vl[a];if(!t||0===t.Xh||t.dc)continue;const s=i[a],h=new ph;this.#Sl(o,t,s,h)&&this.#_l(s,t)}const r=zh(new Float32Array(this.#vl.map(t=>t?.Jh??0)),e);for(let a=0;a<i.length;a++){const t=this.#vl[a];if(!t||0===t.Xh&&!t.dc)continue;const s=i[a];if(!this.fc.has(a)){const i=Dh(a,t.Jh,r,h,e,n);Fh(s.jo,i-s.jo[1])}const o=new ph;this.#Pl(t.Jh,s,t.uc,o),this.#Tl(s,a,t,o)}}};function Wh(t){const i=t.length,s=new Int32Array(i),h=new Int32Array(i),e=new Float32Array(i);for(let n=0;i>n;n++){const i=t[n];s[n]=i.No,h[n]=i.Ho,e[n]=i.Xo}return{count:i,i:s,j:h,restLength:e}}function Uh(t,i,s,h,e,n,o,r,a,c,l){const{dt:u,solverIterations:d,damping:f,gravity:p,gravityEnabled:m}=c;if(s.set(t),m){const t=-p;for(let s=0;e>s;s++)h[s]>0&&(i[3*s+1]+=t*u)}for(let M=0;e>M;M++)if(h[M]>0){const t=3*M;i[t]*=f,i[t+1]*=f,i[t+2]*=f}for(let M=0;e>M;M++)if(h[M]>0){const s=3*M,h=s;t[s]+=i[h]*u,t[s+1]+=i[h+1]*u,t[s+2]+=i[h+2]*u}const g=c.distanceCompliance/(u*u),w=c.bendingCompliance/(u*u);for(let M=0;d>M;M++)Zh(t,h,n,g,r),Zh(t,h,o,w,a);const v=1/u;for(let M=0;e>M;M++)if(h[M]>0){const i=3*M+1,h=t[i];if(l>h){const e=(h-s[i])*v;t[i]=l,0>e&&(s[i]=l+.1*e*u)}}for(let M=0;e>M;M++)if(h[M]>0){const h=3*M;i[h]=(t[h]-s[h])*v,i[h+1]=(t[h+1]-s[h+1])*v,i[h+2]=(t[h+2]-s[h+2])*v}}function Zh(t,i,s,h,e){const n=s.i,o=s.j,r=s.restLength;for(let a=0;a<s.count;a++){const s=n[a],c=o[a],l=3*s,u=3*c;let d=t[l],f=t[l+1],p=t[l+2],m=t[u],g=t[u+1],w=t[u+2],v=d-m,M=f-g,_=p-w;const y=Math.sqrt(v*v+M*M+_*_);if(1e-12>y)continue;const b=1/y,k=y-r[a],x=i[s]+i[c];if(1e-12>x)continue;const P=e[a],T=-(k+h*P)/(x+h),S=i[s]*T*b,A=i[c]*T*b;d+=S*v,f+=S*M,p+=S*_,m-=A*v,g-=A*M,w-=A*_,t[l]=d,t[l+1]=f,t[l+2]=p,t[u]=m,t[u+1]=g,t[u+2]=w,e[a]=P+T}}var qh,Jh,Kh=0,Qh=[],te=[];function ie(t){return t instanceof Sh}function se(){return Kh}var he=class{Ac=null;#Al;#Cl;#El=[];#Il=0;#Ll=[];constructor(t,i){this.#Al=t,this.#Cl=i??"https://iiif.micr.io"}Be(t,i,s){this.#Il=i,this.#Ll=s;for(let h=0;i>h;h++){const i=t[2*h],s=t[2*h+1];this.#El[h]=[this.#zl(i?.id??"",i?.width??0),this.#zl(s?.id??"",s?.width??0)]}}#zl(t,i){return{Cc:"idle",Ec:0,Ic:0,Lc:null,zc:0,Dc:0,Fc:0,$c:"in",Oc:0,Bc:t,Vc:i}}Rc(t,i,s){return this.#Dl(t,i),this.#Fl(t,i,s),this.#$l(t,i,s),this.#Ol(t),this.#Bl(i),this.#Vl(),this.#Rl()&&this.Ac?.(),this.Nc()}#Rl(){for(let t=0;t<this.#El.length;t++)if("fading"===this.#El[t][0].Cc||"fading"===this.#El[t][1].Cc)return 1;return 0}#Nl(t,i){const s=this.#Ll[i];if(s){const i=2*t,h=2*t+1;if(s.includes(i)||s.includes(h))return 0}return Math.abs(t-i)}#Hl(t,i,s){const h=2*t+i;for(let e=-1;1>=e;e++){const t=s+e;if(t>=0&&t<this.#Il&&this.#Ll[t].includes(h))return 1}return 0}#Xl(t){return 500+2e3*t}#Gl(t,i,s){let h=512;return t>768&&(h=1024),t>1536&&(h=2048),h>s&&i>=s?i:Math.max(h,i)}#Dl(t,i){for(let s=0;s<this.#Il;s++)for(let h=0;2>h;h++){const e=this.#El[s][h];e.Bc&&(this.#Hl(s,h,i)?"idle"===e.Cc&&(e.zc=t,e.Cc="pending"):("downloading"===e.Cc&&e.Lc&&(e.Lc.abort(),e.Lc=null),"pending"!==e.Cc&&"downloading"!==e.Cc||(e.Cc="idle",e.zc=0)))}}#Fl(t,i,s){const h=this.#Al.Yt().width/2*(2.2/Math.max(.01,s));for(let e=0;e<this.#Il;e++)for(let s=0;2>s;s++){const n=this.#El[e][s];this.#Hl(e,s,i)&&"done"===n.Cc&&n.Bc&&this.#Gl(h,n.Ec,n.Vc)>n.Ec&&(n.Cc="pending",n.zc=t)}}#$l(t,i,s){const h=this.#Al.Yt().width/2*(2.2/Math.max(.01,s));for(let e=0;e<this.#Il;e++){const s=this.#Nl(e,i);for(let n=0;2>n;n++){const o=this.#El[e][n];if("pending"!==o.Cc)continue;if(!o.Bc)continue;if(!this.#Hl(e,n,i))continue;if(t-o.zc<this.#Xl(s))continue;const r=this.#Gl(h,o.Ec,o.Vc);if(r<=o.Ec){o.Cc="done";continue}o.Ic=r,o.Cc="downloading";const a=0===o.Ec?o.Oc:1-o.Oc;this.#jl(e,n,a,o)}}}async#jl(t,i,s,h){const e=new AbortController;h.Lc=e;const n=`${this.#Cl}/${h.Bc}/full/!${h.Ic},/0/default.webp`;try{const o=await fetch(n,{signal:e.signal});if(!o.ok)throw new Error(`HTTP ${o.status}`);const r=await o.blob();if(e.signal.aborted||"downloading"!==h.Cc)return;const a=await createImageBitmap(r);if(e.signal.aborted||"downloading"!==h.Cc)return void a.close();this.#Al.Kr(t,i,s,a),a.close(),h.Ec=h.Ic,h.Cc="fading",h.Fc=performance.now(),h.Dc=0,h.$c=h.Oc===s?"in":"cross",h.Lc=null,this.Ac?.()}catch(o){o instanceof DOMException&&o.name,h.Cc="idle",h.zc=0,h.Lc=null}}#Ol(t){for(let i=0;i<this.#Il;i++)for(let s=0;2>s;s++){const h=this.#El[i][s];if("fading"!==h.Cc)continue;const e=t-h.Fc;if(h.Dc=Math.min(1,e/500),h.Dc>=1){if("cross"===h.$c){const t=h.Oc;h.Oc=1-h.Oc,this.#Al.ia(i,s,t)}h.Cc="done"}}}#Bl(t){for(let i=0;i<this.#Il;i++)if(this.#Nl(i,t)>5)for(let t=0;2>t;t++){const s=this.#El[i][t];0!==s.Ec&&("downloading"===s.Cc&&s.Lc&&(s.Lc.abort(),s.Lc=null),this.#Al.ia(i,t,0),this.#Al.ia(i,t,1),s.Ec=0,s.Ic=0,s.Cc="idle",s.zc=0,s.Dc=0,s.$c="in",s.Oc=0)}}#Vl(){for(let t=0;t<this.#Il;t++){const i=this.#Yl(this.#El[t][0],0),s=this.#Yl(this.#El[t][0],1),h=this.#Yl(this.#El[t][1],0),e=this.#Yl(this.#El[t][1],1);this.#Al.Qr(t,i,s,h,e)}}#Yl(t,i){if(0===t.Ec)return 0;if("fading"===t.Cc){const s=t.Dc;return"in"===t.$c?t.Oc===i?s:0:t.Oc===i?1-s:s}return t.Oc===i?1:0}Nc(){for(let t=0;t<this.#Il;t++)for(let i=0;2>i;i++){const s=this.#El[t][i];if("pending"===s.Cc||"downloading"===s.Cc||"fading"===s.Cc)return 1}return 0}};function ee(t,i,s){let h=1/0,e=new ph,n=-1;for(let o=0;o<t.length;o++){const r=t[o];if(!r)continue;const a=r.jo,c=r.Zo;for(const t of c){const[r,c,l]=t.Ro,u=a[3*r],d=a[3*r+1],f=a[3*r+2],p=a[3*c]-u,m=a[3*c+1]-d,g=a[3*c+2]-f,w=a[3*l]-u,v=a[3*l+1]-d,M=a[3*l+2]-f,_=s.Io*M-s.Lo*v,y=s.Lo*w-s.Eo*M,b=s.Eo*v-s.Io*w,k=p*_+m*y+g*b;if(1e-8>Math.abs(k))continue;const x=1/k,P=i.Eo-u,T=i.Io-d,S=i.Lo-f,A=(P*_+T*y+S*b)*x;if(0>A||A>1)continue;const C=T*g-S*m,E=S*p-P*g,I=P*m-T*p,L=(s.Eo*C+s.Io*E+s.Lo*I)*x;if(0>L||A+L>1)continue;const z=(w*C+v*E+M*I)*x;z>0&&h>z&&(h=z,e=new ph(i.Eo+s.Eo*z,i.Io+s.Io*z,i.Lo+s.Lo*z),n=o)}}return h===1/0||0>n?null:{Hc:h,Xc:e,Gc:n}}function ne(t,i,s,h,e,n){if(0>i||i>1||0>s||s>1)return null;const o=t instanceof Sh,r=o&&1===h?140:0,a=n??{uMin:0,vMin:0,fU:1,fV:1},c=a.uMin+i*a.fU,l=9*(o||0===h?c:1-c),u=13*(a.vMin+s*a.fV),d=Math.max(0,Math.min(8,Math.floor(l))),f=Math.max(0,Math.min(12,Math.floor(u))),p=Math.min(1,Math.max(0,l-d)),m=Math.min(1,Math.max(0,u-f)),g=t.jo,w=e?t.ur():null,v=(t,i)=>3*(r+10*t+i),M=v(f,d),_=v(f,d+1),y=v(f+1,d),b=v(f+1,d+1),k=13;let x,P,T,S,A,C,E,I,L,z=0,D=0,F=0;if(p+m>1){const t=1-m,i=1-p,s=p+m-1;x=t*g[_]+i*g[y]+s*g[b],P=t*g[_+1]+i*g[y+1]+s*g[b+1],T=t*g[_+2]+i*g[y+2]+s*g[b+2],w&&(z=t*w[_]+i*w[y]+s*w[b],D=t*w[_+1]+i*w[y+1]+s*w[b+1],F=t*w[_+2]+i*w[y+2]+s*w[b+2]),S=9*(g[b]-g[y]),A=9*(g[b+1]-g[y+1]),C=9*(g[b+2]-g[y+2]),E=(g[b]-g[_])*k,I=(g[b+1]-g[_+1])*k,L=(g[b+2]-g[_+2])*k}else{const t=1-p-m,i=m,s=p;x=t*g[M]+i*g[y]+s*g[_],P=t*g[M+1]+i*g[y+1]+s*g[_+1],T=t*g[M+2]+i*g[y+2]+s*g[_+2],w&&(z=t*w[M]+i*w[y]+s*w[_],D=t*w[M+1]+i*w[y+1]+s*w[_+1],F=t*w[M+2]+i*w[y+2]+s*w[_+2]),S=9*(g[_]-g[M]),A=9*(g[_+1]-g[M+1]),C=9*(g[_+2]-g[M+2]),E=(g[y]-g[M])*k,I=(g[y+1]-g[M+1])*k,L=(g[y+2]-g[M+2])*k}return S*=a.fU,A*=a.fU,C*=a.fU,E*=a.fV,I*=a.fV,L*=a.fV,o||1!==h||(S=-S,A=-A,C=-C),{jc:x,Yc:P,Wc:T,Uc:z,Zc:D,qc:F,Jc:S,Kc:A,Qc:C,tl:E,il:I,sl:L}}function oe(t,i,s,h,e){const n=ne(t,i,s,h,0,e);return n?new ph(n.jc,n.Yc,n.Wc):null}function re(t,i,s,h){const e=i.arr,n=e[0]*t.Eo+e[4]*t.Io+e[8]*t.Lo+e[12],o=e[1]*t.Eo+e[5]*t.Io+e[9]*t.Lo+e[13],r=e[3]*t.Eo+e[7]*t.Io+e[11]*t.Lo+e[15];return r>0?{x:(n/r*.5+.5)*s,y:(.5-o/r*.5)*h}:null}function ae(t,i,s){const h=Math.min(1,i/Math.max(1e-4,t)),e=Math.min(1,t/Math.max(1e-4,i));return[s?1-h:0,(1-e)/2,h,e]}var ce=class{static hl=Lh;nl;#Wl;#Ul;#Zl;#Il=0;#ql=new Float32Array(0);#Jl=new Float32Array(0);#Kl=0;#uc=new Float32Array(0);#dc=new Float32Array(0);#Ni=[];#Ql=[];#Al;#tu;#Oc;#iu;#su=null;#u;#hu;#eu;#nu;#ou=[];#Bn;#ru=0;#au=0;#cu=[];#Ml=0;#lu=0;#uu=-1;#du=0;#fu=0;#pu={ol:64,rl:3,al:0,cl:41e-6,ll:.975,ul:9.81,fl:1};#mu=new Set;#gu=[];#wu=0;#vu=0;#Mu=0;constructor(t){this.#u=t.pl,this.#hu=t.ml,this.#eu=t.wl,this.#nu=t.vl,this.#Wl=t.Ml??0,this.#Ul=t.Rr??0,this.#Zl=t._l??1,this.nl=this.#Ge(t)}goto(t){const i=Math.max(0,Math.min(this.#Il-1,t));if(i===this.#lu)return Promise.resolve();this.#Bn&&(Q.cancel(this.#Bn),this.#Bn=void 0),this.#ru=0,this.#au=1;const s=new Promise(t=>{let i;const s=setTimeout(()=>{const s=this.#cu.indexOf(i);0>s||this.#cu.splice(s,1),t()},3e3);i=()=>{clearTimeout(s),t()},this.#cu.push(i)}),h=i>this.#lu?1:-1,e=!this.#iu.Kh;let n=Math.abs(i-this.#lu),o=1;const r=()=>{if(0>=n)return this.#Bn=void 0,void(this.#ru=0);const t=o&&e?.12:.02,i=wh+(2*Math.random()-1)*t;h>0?this.yl(i):this.kl(i),o=0,n--,this.#Bn=r,Q.request(r)};return this.#Bn=r,this.#ru=1,r(),s}zoom(t){this.#Oc.Tt(t),this.#_u()}rotateView(t){this.#Oc.ec(t),this.#_u()}_l(){return this.#Zl}isZoomedIn(){const t=this.#ou;return 0===t.length?0:this.#yu().some(i=>!t.some(t=>t.id===i.id))?1:!t.every(t=>{const[i,s,h,e]=t.bounds;return!(i>1e-4||s>1e-4||Math.abs(h-1)>1e-4||Math.abs(e-1)>1e-4)})}setLightingPreset(t){const i=(t=>Ih.find(i=>i.name===t))(t);if(!i)return;const s={};for(const h of i.params)s[h.key]=h.default;this.#Al.sa(t,s),this.#_u()}#bu(t,i,s){const h=this.#ku(t,i,s);if(!h)return null;const e=this.#xu(h.result.Xc);if(!e)return null;const{facing:n,obscured:o}=this.#Pu(h.mesh,h.side,h.pageIndex,h.result,e.screen);return{x:e.screen.x,y:e.screen.y,pageIndex:h.pageIndex,side:h.side,facing:n,obscured:o}}#Tu(t,i,s,h,e,n,o,r,a,c,l){const u=e&&e>0?e:1,d=this.#ku(t,i,s);if(!d)return null;const f=this.#xu(d.result.Xc);if(!f)return null;const{facing:p,obscured:m}=this.#Pu(d.mesh,d.side,d.pageIndex,d.result,f.screen),g=d.mesh,w=d.result.xl,v=d.result.Xc.Eo,M=d.result.Xc.Io,_=d.result.Xc.Lo,{screen:y,viewProj:b,clientWidth:k,clientHeight:x}=f,P=d.result.Pl,T=d.result.Tl,S=Math.sqrt(P.Eo*P.Eo+P.Io*P.Io+P.Lo*P.Lo)||1,A=Math.sqrt(T.Eo*T.Eo+T.Io*T.Io+T.Lo*T.Lo)||1,C=P.Eo/S,E=P.Io/S,I=P.Lo/S,L=T.Eo/A,z=T.Io/A,D=T.Lo/A,F=g instanceof Sh||0===d.side?1:-1,$=w.Eo*F,O=w.Io*F,B=w.Lo*F,V=n??0,R=o??0,N=r??0,H=Math.cos(V),X=Math.sin(V),G=Math.cos(R),j=Math.sin(R),Y=Math.cos(N),W=Math.sin(N),U=h*(c??1)*S/u,Z=h*(l??1)*S/u,q=h*S/u,J=(t,i)=>{const s=new Float32Array(16);for(let h=0;4>h;h++)for(let e=0;4>e;e++)s[4*h+e]=t[e]*i[4*h]+t[4+e]*i[4*h+1]+t[8+e]*i[4*h+2]+t[12+e]*i[4*h+3];return s},K=new Float32Array(16);K[0]=1,K[5]=H,K[6]=X,K[9]=-X,K[10]=H,K[15]=1;const Q=new Float32Array(16);Q[0]=G,Q[2]=-j,Q[5]=1,Q[8]=j,Q[10]=G,Q[15]=1;const tt=new Float32Array(16);tt[0]=Y,tt[1]=W,tt[4]=-W,tt[5]=Y,tt[10]=1,tt[15]=1;const it=new Float32Array(16);it[0]=U,it[5]=Z,it[10]=q,it[15]=1;const st=new Float32Array(16);st[0]=C,st[1]=E,st[2]=I,st[4]=L,st[5]=z,st[6]=D,st[8]=$,st[9]=O,st[10]=B,st[15]=1;const ht=new Float32Array(16);ht[0]=1,ht[5]=1,ht[10]=1,ht[15]=1,ht[12]=v,ht[13]=M,ht[14]=_;const et=new Float32Array(16);et[0]=.5*k,et[5]=.5*-x,et[10]=1,et[12]=0,et[13]=0,et[15]=1;const nt=J(et,J(new Float32Array(b.arr),J(ht,J(st,J(tt,J(Q,J(K,it))))))),ot=1/nt[15];for(let rt=0;16>rt;rt++)nt[rt]*=ot;return nt[12]=y.x-.5*k,nt[13]=y.y-.5*x,nt[14]=0,nt[15]=1,{matrix:nt,facing:p,obscured:m}}#ku(t,i,s){if(0===this.#Ni.length||0===this.#Ql.length)return null;const h=this.#Ni.findIndex(i=>i.id===t);if(0>h)return null;const e=Math.floor(h/2),n=h%2;if(e>=this.#Ql.length)return null;const o=this.#Ql[e],r=((t,i,s,h,e)=>{const n=ne(t,i,s,h,1,e);if(!n)return null;const o=Math.sqrt(n.Uc*n.Uc+n.Zc*n.Zc+n.qc*n.qc)||1;return{Xc:new ph(n.jc,n.Yc,n.Wc),xl:new ph(n.Uc/o,n.Zc/o,n.qc/o),Pl:new ph(n.Jc,n.Kc,n.Qc),Tl:new ph(n.tl,n.il,n.sl)}})(o,i,s,n,this.#Su(e,n));return r?{pageIndex:e,side:n,mesh:o,result:r}:null}#Su(t,i){if(!this.#Kl)return null;const s=0===i?this.#uc:this.#dc,h=4*t;return{uMin:s[h],vMin:s[h+1],fU:s[h+2],fV:s[h+3]}}#Au(){const t=this.#Al.Yt(),i=t.clientWidth,s=t.clientHeight;if(0>=i||0>=s)return null;const h=this.#Oc.ya(),e=t.width/Math.max(1,t.height),n=new Zt;n.Oi(.25*Math.PI,e,.1,50);const o=new Zt;return o.fi(h),o.Ki(n),{perspective:n,viewProj:o,clientWidth:i,clientHeight:s}}#xu(t){const i=this.#Au();if(!i)return null;const s=re(t,i.viewProj,i.clientWidth,i.clientHeight);return s?{screen:s,...i}:null}#Pu(t,i,s,h,e){const n=h.Xc,o=h.xl,r=this.#Oc.sc(),a=o.Eo*(r.Eo-n.Eo)+o.Io*(r.Io-n.Io)+o.Lo*(r.Lo-n.Lo),c=t instanceof Sh||0===i?a>0:0>a,l=this.#iu.wc(s);let u=0===i?l>.5:.5>l;if(!u){const{origin:t,direction:i}=this.#Oc.nc(e.x,e.y),s=ee(this.#Ql,t,i);if(s){const h=(n.Eo-t.Eo)*i.Eo+(n.Io-t.Io)*i.Io+(n.Lo-t.Lo)*i.Lo;s.Hc<h-1e-4&&(u=1)}}return{facing:c,obscured:u}}#Cu(t){this.#lu=t,this.#Ml=t;const i=new Float32Array(this.#Il);for(let h=0;h<this.#Il;h++){const s=t>h;i[h]=s?1:0,this.#iu.vc(h,i[h]),s?this.#iu.Mc(this.#Ql[h],h):(this.#Ql[h].jo.set(this.#Ql[h].Go),this.#Ql[h].Yo.fill(0)),this.#mu.delete(h)}const s=zh(i,this.#Il);for(let h=0;h<this.#Il;h++){const t=Dh(h,i[h],s,this.#wu,this.#Il,mh);this.#Eu(h,t,1,1),this.#Al.pa(h,this.#Ql[h]),this.#Al.ma(h,this.#Ql[h])}this.#Al.Ma(i),this.#au=0,this.#hu?.(this.#lu)}Sl(){return this.#lu}Al(){return this.#Il}yl(t){if(this.#iu&&this.#lu<this.#Il){this.#tu.Da="none",this.#Ml=this.#lu;const i=t??this.#tu.Aa??void 0;this.#tu.Aa=null,this.#iu.yc(this.#Ml,i),this.#lu++,this.#hu?.(this.#lu),this.#_u()}}kl(t){if(this.#iu&&this.#lu>0){this.#tu.Da="none",this.#lu--,this.#Ml=this.#lu;const i=t??this.#tu.Aa??void 0;this.#tu.Aa=null,this.#iu.bc(this.#Ml,i),this.#hu?.(this.#lu),this.#_u()}}#_u=()=>{Q.request(this.#Gn)};async#Ge(t){const i=t.Sn;if(!i||0===i.length)throw new Error("BookViewer: no images in book index");const{pageCnt:s,pageIdxes:h,totalImagePages:e,computedPageWidths:n,aspectsForInit:o,frontAspects:r,backAspects:a,avgAspect:c}=(t=>{const i=Math.ceil(t.length/2),s=t.length,h=[[0]];for(let l=1;i>l;l++){const i=2*l-1,s=2*l;s<t.length?h.push([i,s]):h.push([i])}let e=0,n=0;const o=new Float32Array(i),r=new Float32Array(i);for(let l=0;i>l;l++){const i=t[2*l],s=t[2*l+1],h=i&&i.width>0&&i.height>0?i.height/i.width:gh,a=s&&s.width>0&&s.height>0?s.height/s.width:h;o[l]=h,r[l]=a,i&&i.width>0&&i.height>0&&(e+=h,n++),s&&s.width>0&&s.height>0&&(e+=a,n++)}const a=n>0?e/n:gh,c=1*a;return{pageCnt:i,pageIdxes:h,totalImagePages:s,computedPageWidths:new Float32Array(i).fill(Math.sqrt(c/a)),aspectsForInit:new Float32Array(i).fill(a),frontAspects:o,backAspects:r,avgAspect:a}})(i);if(this.#Ni=i,!this.#Iu(s,n,o,t))throw new Error("BookViewer: WebGL is not available in this browser.");const l=t?.Cl??0;this.#Kl=l;const u=l?r:new Float32Array(s).fill(c),d=l?a:new Float32Array(s).fill(c);this.#Lu(s,u,d,c);const f=t.El;if(void 0!==f&&f>0&&e>f){const t=Math.min(Math.ceil(f/2),this.#Il-1);this.#Cu(t)}await(async(t,i)=>{Kh=0;const s=(t=>{for(const i of t)if(!ie(i))return i;return null})(t);if(s){qh=Wh(s.Jo),Jh=Wh(s.Ko),Qh.length=0,te.length=0;for(let t=0;i>t;t++)Qh.push({dl:new Float64Array(qh.count),bl:new Float64Array(Jh.count)}),te.push(new Float32Array(420));Kh=1}else console.warn("[Solver] No paper meshes found — solver will be idle.")})(this.#Ql,this.#Il),await this.#zu(i),this.#su=new he(this.#Al,t.Il),this.#su.Ac=()=>this.#_u(),this.#su.Be(i,this.#Il,h),this.#hu?.(this.#lu),setTimeout(()=>{this.#_u()},500)}#Iu(t,i,s,h){this.#Il=t,this.#Jl=i,this.#ql=s;const e=this.#u;let n=e.getContext("webgl2",{alpha:1,premultipliedAlpha:1,antialias:1});if(!n)return console.warn("BookViewer: WebGL not available"),0;this.#Oc=new Gh,this.#Oc.Ra.Do(0,0,0),this.#Oc.Ba=0,this.#Oc.Va=vh,this.#Oc.bh=2.2,this.#Oc.Qa();let o=0,r=0;for(let g=0;g<this.#Il;g++){const t=this.#Jl[g],i=t*this.#ql[g];t>o&&(o=t),i>r&&(r=i)}this.#Ql.length=0;for(let g=0;g<this.#Il;g++){const t=(this.#Il-1-g)*mh,i=this.#Jl[g],s=this.#ql[g];if(!this.#Wl||0!==g&&g!==this.#Il-1)this.#Ql.push(new Ph(t,i,s));else{const h=o/i,e=r/(i*s),n=Math.max(1.04,h),a=Math.max(1.08,e),c=new Sh(t,i,s,.0192,n,a);this.#Ql.push(c)}}this.#mu.clear(),this.#gu.length=0;for(let g=0;g<this.#Il;g++)this.#gu.push(new Float32Array(this.#Ql[g].jo));this.#wu=this.#Il*mh;let a=1/0,c=1/0,l=1/0,u=-1/0,d=-1/0,f=-1/0;for(const g of this.#Ql){const t=g.Go;for(let i=0;i<t.length;i+=3)t[i]<a&&(a=t[i]),t[i]>u&&(u=t[i]),t[i+1]<c&&(c=t[i+1]),t[i+1]>d&&(d=t[i+1]),t[i+2]<l&&(l=t[i+2]),t[i+2]>f&&(f=t[i+2])}const p=Math.max(Math.abs(a),Math.abs(u));this.#Oc.Xa=new ph(-p,c,l),this.#Oc.Ga=new ph(p,d,f),this.#Al=new Rh(n),this.#Al.Vr=h.Ll??1,this.#Al.Rr=this.#Ul,this.#Al.qr(this.#Ql),this.#Al._a({x:this.#Oc.Xa.Eo,y:this.#Oc.Xa.Io,z:this.#Oc.Xa.Lo},{x:this.#Oc.Ga.Eo,y:this.#Oc.Ga.Io,z:this.#Oc.Ga.Lo}),this.#Oc.Ja(e.clientWidth,e.clientHeight);{const t=.05*Math.min(e.clientWidth,e.clientHeight);this.#Oc.Ka({minX:a,maxX:u,minZ:l,maxZ:f},t)}this.#iu=new Yh,this.#iu._c(this.#Il),this.#Wl&&(this.#iu.fc=new Set([0,this.#Il-1])),this.#tu=new Nh(e,this.#Oc,this.#_u),this.#tu.Ea=()=>this.isZoomedIn();const m=h.zl??"daylight";return this.setLightingPreset(m),this.#Du(),this.#Fu(),this.#$u(e),document.addEventListener("visibilitychange",()=>{document.hidden&&(this.#vu=0)}),1}#Lu(t,i,s,h){const e=new Float32Array(4*t),n=new Float32Array(4*t);for(let o=0;t>o;o++){const t=this.#Ql[o]instanceof Sh;this.#Ou(e,o,ae(i[o],h,0)),this.#Ou(n,o,ae(s[o],h,!t))}this.#uc=e,this.#dc=n,this.#Al.ta(e,n)}#Ou(t,i,s){const h=4*i;t[h]=s[0],t[h+1]=s[1],t[h+2]=s[2],t[h+3]=s[3]}#Du(){for(const t of this.#Ql)t.lr();this.#iu.ae(this.#Ql)}Dl(t){if(!t.camera.D){if(!t.camera.L){const i=new Float64Array(5);t.camera.L=(s,h)=>{const e=this.#bu(t.id,s,h),n=e?.facing&&!e.obscured;return i[0]=n?e.x:-1,i[1]=n?e.y:-1,i}}t.camera.D||(t.camera.D=(i,s,h,e,n,o,r,a,c)=>{const l=this.#Tu(t.id,i,s,h,c,e,n,o,0,r,a);return l&&l.facing&&!l.obscured?l.matrix:new Float32Array})}}#Fu(){this.#tu.Pa=()=>{this.kl()},this.#tu.Ta=()=>{this.yl()},this.#tu.Sa=this.#Bu,this.#tu.Ca=(t,i)=>this.#Vu(t,i),this.#tu.Ia=(t,i)=>{const s=this.#Ru(t,i);if(!s)return;const h=this.#Al.Yt().getBoundingClientRect(),e=t-h.left,n=i-h.top,{origin:o,direction:r}=this.#Oc.nc(e,n);1e-8>Math.abs(r.Io)?this.#du=0:this.#du=o.Eo+r.Eo*(-o.Io/r.Io),this.#uu=s.pageIndex,this.#fu=this.#iu.wc(this.#uu),this.#iu.kc(this.#uu,s.grabRow),this.#Ml=this.#uu,this.#mu.add(this.#uu),this.#_u()},this.#tu.La=(t,i)=>{if(0>this.#uu||this.#uu>=this.#Il)return;const s=this.#Al.Yt().getBoundingClientRect(),h=t-s.left,e=i-s.top,{origin:n,direction:o}=this.#Oc.nc(h,e);if(1e-8>Math.abs(o.Io))return void this.#_u();const r=-n.Io/o.Io,a=n.Eo+o.Eo*r,c=this.#Ql[this.#uu],l=this.#du-a,u=l>0?this.#du+c.ir:c.ir-this.#du,d=this.#fu+l/Math.max(.01,u);this.#iu.xc(this.#uu,Math.max(0,Math.min(1,d))),this.#Ml=this.#uu,this.#_u()},this.#tu.za=()=>{if(0>this.#uu||this.#uu>=this.#Il)return void(this.#uu=-1);const t=this.#iu.wc(this.#uu),i=.5>=this.#fu,s=this.#fu>=.5&&.5>t;i&&t>.5?(this.#iu.Pc(this.#uu,1),this.#uu===this.#lu&&this.#lu<this.#Il&&(this.#lu++,this.#hu?.(this.#lu))):s?(this.#iu.Pc(this.#uu,-1),this.#uu===this.#lu-1&&this.#lu>0&&(this.#lu--,this.#hu?.(this.#lu))):this.#iu.Pc(this.#uu,i?-1:1),this.#uu=-1,this.#_u()}}#$u(t){window.addEventListener("resize",()=>{this.#Al.Ch(),this.#Oc.Ja(t.clientWidth,t.clientHeight),this.#_u()}),t.addEventListener("webglcontextlost",t=>{console.warn("WebGL context lost."),t.preventDefault()}),t.addEventListener("webglcontextrestored",()=>{const i=t.getContext("webgl2",{alpha:1,premultipliedAlpha:1,antialias:1});i&&this.#Al&&(this.#Al=new Rh(i),this.#Al.Rr=this.#Ul,this.#Al.qr(this.#Ql))})}#Ru(t,i){const s=this.#Al.Yt().getBoundingClientRect(),h=t-s.left,e=i-s.top;if(0>=s.width||0>=s.height)return null;const{origin:n,direction:o}=this.#Oc.nc(h,e),r=ee(this.#Ql,n,o);if(!r)return null;const a=this.#Ql[r.Gc],c=.5-r.Xc.Lo/a.sr,l=Math.max(0,Math.min(1,c));return{pageIndex:r.Gc,grabRow:l,worldX:r.Xc.Eo}}#Bu=(t,i)=>{const s=this.#Al.Yt().getBoundingClientRect(),h=t-s.left,e=i-s.top;if(0>=s.width||0>=s.height)return null;const{origin:n,direction:o}=this.#Oc.nc(h,e),r=ee(this.#Ql,n,o);if(!r)return null;const a=this.#Ql[r.Gc],c=.5-r.Xc.Lo/a.sr,l=Math.max(0,Math.min(1,c));return{direction:0>r.Xc.Eo?"prev":"next",grabRow:l}};#Vu(t,i){const{origin:s,direction:h}=this.#Oc.nc(t,i);return ee(this.#Ql,s,h)?.Xc??null}#yu(){const t=[],i=(i,s)=>{const h=this.#Ni[2*i+s];h&&!t.some(t=>t.id===h.id)&&t.push({id:h.id,pageIndex:i,side:s})};i(this.#lu,0),i(this.#lu-1,1);for(let s=0;s<this.#Il;s++){const t=this.#iu.wc(s);if(t>0&&1>t){i(s,0),i(s,1);const t=this.#iu.gc(s);0>t?i(s+1,0):t>0?i(s-1,1):(i(s-1,1),i(s+1,0))}}return t}#Nu(){const t=this.#Au();if(!t)return[];const i=[];for(const s of this.#yu()){const h=this.#Hu(s.pageIndex,s.side,t);h&&i.push({id:s.id,bounds:h})}return i}#Hu(t,i,s){const h=this.#Ql[t],e=this.#Su(t,i);let n=1/0,o=1/0,r=-1/0,a=-1/0,c=0;for(let l=0;32>=l;l++){const t=l/32;for(let l=0;32>=l;l++){const u=l/32,d=oe(h,t,u,i,e);if(!d)continue;const f=re(d,s.viewProj,s.clientWidth,s.clientHeight);f&&(0>f.x||f.x>s.clientWidth||0>f.y||f.y>s.clientHeight||(n>t&&(n=t),o>u&&(o=u),t>r&&(r=t),u>a&&(a=u),c++))}}return 0===c?null:[n,o,r-n,a-o]}#Gn=t=>{0===this.#vu&&(this.#vu=t);let i=(t-this.#vu)/1e3;i>0||(i=1/60),i>1/30&&(i=1/30),this.#vu=t,this.#iu.Th(i,this.#Ql,this.#Ml,this.#wu,this.#Il,mh);const s=new Float32Array(this.#Il);for(let n=0;n<this.#Il;n++)s[n]=this.#iu.wc(n);this.#Al.Ma(s);const h=zh(s,this.#Il);this.#Xu(s,h),this.#Gu(s,h),this.#ju(s,h);for(let n=0;n<this.#Il;n++)this.#iu.mc(n)&&this.#mu.add(n);if(!this.#au||this.#ru||this.#iu.Kh||(this.#au=0),this.#Yu(i,s),this.#Wu(),this.#Uu(),this.#cu.length&&!this.#au&&!this.#ru&&!this.#iu.Kh&&0===this.#mu.size){const t=this.#cu;this.#cu=[];for(const i of t)i()}this.#su&&this.#su.Rc(t,this.#lu,this.#Oc.bh),this.#Oc.Th(i),this.#Zu(),this.#Al.De(this.#Oc);const e=this.#Nu();this.#eu&&this.#Oc.tc()&&this.#eu(e),this.#ou=e,this.#nu&&this.#nu(e),(this.#mu.size>0||this.#iu.Kh||this.#tu&&"none"!==this.#tu.Da||this.#Al.ha()||this.#Oc.tc())&&this.#_u()};#Wu(){if(se()){for(let t=0;t<this.#Il;t++){if(!this.#mu.has(t))continue;if(this.#iu.mc(t)||this.#iu.Tc(t))continue;const i=this.#Ql[t].jo,s=this.#gu[t];let h=0;for(let t=0;t<i.length;t++){const e=Math.abs(i[t]-s[t]);e>h&&(h=e)}1e-6>h&&this.#mu.delete(t)}for(let t=0;t<this.#Il;t++)this.#gu[t].set(this.#Ql[t].jo);this.#Mu++}}#Eu(t,i,s,h){const e=this.#Ql[t],n=i-e.jo[1];Math.abs(n)>1e-4&&(Fh(e.jo,n),h&&this.#gu[t]&&Fh(this.#gu[t],n),s&&(this.#Al.pa(t,e),this.#Al.ma(t,e)))}#Xu(t,i){for(let s=0;s<this.#Il;s++){if(this.#mu.has(s))continue;if(this.#iu.mc(s))continue;if(this.#Wl&&this.#iu.fc.has(s))continue;const h=Dh(s,t[s],i,this.#wu,this.#Il,mh);this.#Eu(s,h,1,1)}}#Gu(t,i){if(this.#Wl)for(const s of this.#iu.fc){const h=Dh(s,t[s],i,this.#wu,this.#Il,mh);this.#Eu(s,h,1,0)}}#ju(t,i){for(let s=0;s<this.#Il;s++){if(!this.#mu.has(s))continue;if(this.#iu.mc(s))continue;if(this.#iu.Tc(s))continue;if(this.#Wl&&this.#iu.fc.has(s))continue;const h=Dh(s,t[s],i,this.#wu,this.#Il,mh);this.#Eu(s,h,0,1)}}#Yu(t,i){if(!se())return;const s=Array.from(this.#mu);if(0===s.length)return;const h=t/this.#pu.rl;this.#pu.ll=this.#au?.995:.975,((t,i,s,h,e,n,o,r,a)=>{if(!Kh)return;i.sort((t,i)=>t-i);const c=((t,i,s,h,e)=>{const n=new Float32Array(h);for(let o=0;h>o;o++)n[o]=Dh(o,t[o],i,s,h,e);return n})(n,zh(n,r),o,r,a),l=i.length,u=t,d={dt:u,solverIterations:l>5?Math.max(2,Math.round(h.ol+Math.min(1,(l-5)/5)*(2-h.ol))):h.ol,distanceCompliance:h.al/(u*u),bendingCompliance:h.cl/(u*u),damping:h.ll,gravity:h.fl?h.ul:0,gravityEnabled:h.fl};for(const f of i){const t=Qh[f];t.dl.fill(0),t.bl.fill(0)}for(let f=0;s>f;f++)for(const t of i){const i=e[t];if(ie(i))continue;const s=Qh[t],h=t<c.length?c[t]:0;Uh(i.jo,i.Yo,te[t],i.Wo,140,qh,Jh,s.dl,s.bl,d,h)}})(h,s,this.#pu.rl,this.#pu,this.#Ql,i,this.#wu,this.#Il,mh)}#Uu(){for(const t of this.#mu)this.#Al.pa(t,this.#Ql[t]),this.#Al.ma(t,this.#Ql[t])}#Zu(){const t=this.#Al.wa(),i=new Zt;i.Oi(.25*Math.PI,t.width/Math.max(1,t.height),.1,50);const s=this.#Oc.ya(),h=new Zt;h.fi(s),h.Ki(i);const e=this.#Al.va(h);if(e){const i=.05*Math.min(t.width,t.height);this.#Oc.oc(e,t.width,t.height,i)}}async#zu(t){const i=Math.ceil(t.length/2),s=[];for(let h=0;i>h;h++){const i=t[2*h],e=t[2*h+1];s.push((async()=>{try{const t=await At.hi(i.id),s=e?await At.hi(e.id):t;this.#Al.Jr(h,t,s)}catch(t){console.warn(`Failed to load textures for page ${h}:`,t)}})())}await Promise.all(s)}},le=class extends xi{static tag="micrio-gallery";#de={};#lu=-1;#Ea=0;#Ni=[];#Pa=[];#Ta=[];#Sa=[];#qu;#Ju=null;#Ku=null;#Qu=null;#td=0;#id=-1;#sd=0;#hd=0;#ed=-1;#nd=null;#od;#rd;#ad=new Map;#cd=0;#ld;#ud=0;#dd=1;async ln(){const t=this.yn();if(!t)return;const i=t.$current;if(!i)return;if(i.$settings?.omni)return this.#od=new dh(t,i,this,(t,i,s,h,e,n)=>this.#fd(t,i,s,h,e,n)),void(await this.#od.setup());const s=this.#de.controller;s&&this.#pd(t,i,s)}At(t){void 0!==t.controller&&(this.#de.controller=t.controller)}#md(t){if(!this.#Ju)return 0;const i=this.#Ju.clientWidth;return 16+t/Math.max(1,this.#Pa.length-1)*(i-32)}#gd(t){const i=this.#Pa[t];return i&&i.length>1?`${i[0]+1}-${i[i.length-1]+1}`:String(t+1)}#wd(t){const i=this.#Pa.findIndex(i=>i.includes(t));return 0>i?0:i}async#ma(t,i=0,s=150,h=0){const e=this.#Ni;if(!e.length||0>t)return;const n=Math.round(Math.max(0,Math.min(this.#Pa.length-1,t))),o=this.#Pa[n]?.[0]??0,r=h||n!==this.#lu,a=this.#Ea;if(this.#lu=n,this.#Ea=o,r&&this.#vd(),this.#ld)await this.#ld.goto(n);else if(this.#rd)await this.#rd.animateTo(o,i,s,a);else if(r){const t=(this.#Pa[n]?.length??1)-1;this.#qu.canvas?.Hi(o,t),this.#qu.camera.setView([0,0,1,1])}return this.#qu.album.hooked=1,e[o]}#vd(){this.#Md(this.#Ea);const t=this.yn(),i=(this.#Pa[this.#lu]??[]).map(t=>this.#Ni[t].id);t?.events.Et("gallery-show",i),this.#rd&&this.#qu.album?.currentImage?.set(this.#Ni[this.#Ea]),this.#_d()}#yd=t=>{if(t.preventDefault(),t.stopPropagation(),this.#sd||(this.#hd="button"in t)&&0!==t.button||!this.#Ju)return;this.#nd=this.#Ju.getBoundingClientRect();const i=this.yn();if(i){if(i.Se=this.#sd=1,this.setAttribute("data-dragging",""),this.#id=-1,this.#hd&&"button"in t){this.#ed=t.pointerId;try{this.#Ju.setPointerCapture(t.pointerId)}catch(s){}window.addEventListener("pointercancel",this.#bd)}window.addEventListener(this.#hd?"pointermove":"touchmove",this.#kd),window.addEventListener(this.#hd?"pointerup":"touchend",this.#bd),this.#kd(t)}};#xd(t){const i=this.#nd??this.#Ju.getBoundingClientRect(),s=this.#Pa.length,h="button"in t?t.clientX:t.touches[0].clientX,e=Math.min(1,Math.max(0,(h-i.left-16)/(i.width-32)));return[e,Math.max(0,Math.min(s-1,Math.round(e*Math.max(1,s-1))))]}#kd=t=>{const[i,s]=this.#xd(t);this.#td=16+i*(this.#nd.width-32),s!==this.#lu&&this.#ma(s,1)};#Pd=t=>{this.#sd||(this.#id=this.#xd(t)[1]),this.#_d()};#bd=()=>{if(window.removeEventListener(this.#hd?"pointermove":"touchmove",this.#kd),window.removeEventListener(this.#hd?"pointerup":"touchend",this.#bd),this.#hd){window.removeEventListener("pointercancel",this.#bd);try{this.#Ju?.releasePointerCapture(this.#ed)}catch(i){}this.#ed=-1}this.#sd=0,this.removeAttribute("data-dragging");const t=this.yn();t&&(t.Se=0,this.#ma(this.#lu))};#fd(t,i,s,h,e,n){if(!i||!e?.ready)return;const o=self.requestIdleCallback?t=>{self.requestIdleCallback(t)}:t=>{Q.request(t)};for(let r=-s;s>=r;r++){if(!r)continue;let s=t+r;for(;0>s;)s+=i;for(;s>=i;)s-=i;const a=h(s);a?.thumbSrc&&!this.#ad.has(a.thumbSrc)&&this.#ad.set(a.thumbSrc,o(()=>{e.Me(a.baseTileIdx,a.thumbSrc,0,{force:n}),this.#ad.delete(a.thumbSrc)}))}}#Md(t){const i=this.#Ni;if(!i.length||1>=i.length)return;const s=i[0].engine,h=!!i[0]?.$settings?.gallery?.archive;this.#fd(t,i.length,this.#cd,t=>i[t]?{baseTileIdx:i[t].$t,thumbSrc:i[t].thumbSrc}:void 0,s,h)}#Td=t=>{switch(t.key){case"PageUp":case"ArrowLeft":this.#ma(this.#lu-1,1);break;case"PageDown":case"ArrowRight":this.#ma(this.#lu+1,1);break;case"Home":this.#ma(0);break;case"End":this.#ma(this.#Pa.length-1);break;default:return}};async#pd(t,i,s){const h=[...s.Sn];if(!h.length)return;this.#Ni=h,this.#qu=i;const e=s.Yn();this.#Pa=e.pages,this.#Ta=[],this.#Sa=[];for(const[f,p]of e.pages.entries()){const t=p.length;for(let i=0;t>i;i++)this.#Ta[p[i]]=f+i/t,this.#Sa[p[i]]=1/t}const n=s.Nn.startId?Math.max(0,h.findIndex(t=>t.id===s.Nn.startId)):0,o=e.pages.findIndex(t=>t.includes(n)),r=0>o?0:o;this.#cd="requestIdleCallback"in self?100:50;const a=t.Ve,c=i,l="swipe"===s.Nn.type,u=this.#ud="book3d"===s.Nn.type;this.#dd=0!=s.Nn.settings?.allowRotation,l&&(this.#rd=new fh(t,h,this.#Pa,this.#Ta,this.#Sa,t=>this.#ma(t),()=>this.#lu)),this.#lu=r,this.#Sd(),this.#_d();const d=this;if(c.album={numPages:e.numPages,get currentIndex(){return d.#lu},info:c.$settings.gallery,prev:()=>d.#ma(d.#lu-1),next:()=>d.#ma(d.#lu+1),goto:t=>d.#ma(d.#wd(t)).then(()=>d.#Ni[t]),...d.#rd?{currentImage:H(h[n])}:{}},this.#rd)await this.#rd.setup(n,c,a),this.#Ea=n,this.#lu=r,this.#vd(),c.album.hooked=1;else if(u)this.#Ad(c,s.Hn,n,s.Nn);else{await Promise.allSettled(h.map(t=>("state"in t&&!("image"in t)&&(t.camera=c.camera),a.ti(t,c,{opacity:0,asImage:"camera"in t}))));const t=this.#Pa[r],i=(t?.length??1)-1;c.canvas?.Hi(t[0],i),c.camera.setView([0,0,1,1]),this.#lu=r,this.#vd(),c.album.hooked=1}this.#rd&&h.length>1&&(t.canvas.element.addEventListener("pointerdown",this.#rd.handlePointerDown),this.dn(()=>t.canvas.element.removeEventListener("pointerdown",this.#rd.handlePointerDown))),window.addEventListener("keydown",this.#Td),this.dn(()=>window.removeEventListener("keydown",this.#Td))}#Ad(t,i,s,h){t.album.hooked=1;const e=t.engine.micrio,n=!!h.settings?.individualAspects,o=this.#ld=new ce({pl:e.canvas.element,Sn:i,El:s,zl:h.settings?.lighting,Cl:n,Rr:n,_l:this.#dd,ml:t=>this.#ma(t),vl:t=>{for(const i of this.#Ni){const s=t.find(t=>t.id==i.id);i.visible.set(!!s),s&&(i.camera.L||o.Dl(i),i.state.view.update(()=>s.bounds))}}});e.events.unhookScroll(),e.events.unhookPinch(),t.camera.C=t=>o.zoom(t),t.camera.I=()=>!!o.isZoomedIn(),this.#ld.nl.then(()=>{t.ut=1,this.#vd()})}#Sd(){const t=this.#Pa.length;if(!this.#Ni.length||1>=t||this.querySelector("ul"))return;const i=X(ji),s=t>24,h=s?Math.max(1,Math.ceil(t/24)):1,e=this.#lu;this.#Ku=Mt("micrio-button",{parent:this,setProps:{type:"prev",title:i.fo,disabled:0>=e,onclick:()=>this.#ma(this.#lu-1)}}),this.#ud&&this.#dd&&Mt("micrio-button",{parent:this,setProps:{type:"rotateLeft",title:i.mo,onclick:()=>this.#ld?.rotateView(-1)}});const n=Mt("ul",{className:s?"dense":"",parent:this,events:{pointerdown:this.#yd,pointermove:this.#Pd,pointerleave:()=>{this.#id=-1,this.#_d()}}});this.#Ju=n,n.addEventListener("touchstart",this.#yd,{passive:0}),Mt("span",{parent:n,children:[Mt("span")]}),Mt("span",{parent:n,children:Array.from({length:t},(i,e)=>s&&e%h!==0&&e!==t-1?null:Mt("span",{attrs:s&&e%(5*h)==0?{"data-major":""}:{},style:{left:(t>1?e/(t-1)*100:50)+"%"}}))}),Mt("button",{parent:n,props:{role:"slider",tabIndex:0},attrs:{"aria-label":"Gallery position","aria-valuemin":"1","aria-valuemax":String(t)}}),Mt("span",{parent:n}),this.#Qu=Mt("micrio-button",{parent:this,setProps:{type:"next",title:i.po,disabled:e>=t-1,onclick:()=>this.#ma(this.#lu+1)}}),this.#ud&&this.#dd&&Mt("micrio-button",{parent:this,setProps:{type:"rotateRight",title:i.wo,onclick:()=>this.#ld?.rotateView(1)}})}#_d(){const t=this.#Pa.length;if(!t)return;const i=this.#lu,s=t>24,h=s?Math.max(1,Math.ceil(t/24)):1,e=t>1?i/(t-1)*100:0,n=this.#Ju&&!this.#sd?this.#md(i):this.#td,o=this.querySelector("ul > :first-child > span");o&&(o.style.width=`${e}%`);const r=this.querySelectorAll("ul > :nth-child(2) > span"),a=[];for(let d=0;t>d;d++)s&&d%h!==0&&d!==t-1&&d!==i||a.push(d);r.forEach((t,s)=>{const h=a[s];void 0!==h&&(t.toggleAttribute("data-active",h===i),t.toggleAttribute("data-hover",h===this.#id))});const c=this.querySelector("ul > button");c&&(c.style.left=`${n}px`,c.classList.toggle("dragging",this.#sd),c.setAttribute("aria-valuenow",String(i+1)));const l=this.querySelector("ul > button + span");if(l){l.style.left=`${n}px`,l.classList.toggle("dragging",this.#sd);const t=this.#Pa.reduce((t,i)=>t+i.length,0);l.textContent=this.#gd(i)+(s?` / ${t}`:"")}let u=this.querySelector('[data-part="hover-label"]');0>this.#id||this.#id===i||this.#sd?u?.remove():(u||(u=Mt("span",{attrs:{"data-part":"hover-label"},parent:this.querySelector("ul")??void 0})),u.style.left=(t>1?this.#id/(t-1)*100:50)+"%",u.textContent=this.#gd(this.#id)),this.#Ku&&this.#Ku.querySelector("button")?.toggleAttribute("disabled",0>=i),this.#Qu&&this.#Qu.querySelector("button")?.toggleAttribute("disabled",i>=t-1)}un(){this.#od?.destroy(),this.#rd?.destroy()}};customElements.define(le.tag,le);var ue=class extends xi{static tag="micrio-serial-tour";#de={tour:null};#Cd=[];#sa=0;#xe=0;#ao=void 0;#W=0;#Ed=0;ln(){const{tour:t}=this.#de,i=this.yn();if(!i||!t)return;this.#Cd=t.stepInfo||[],this.#W=this.#Cd.reduce((t,i)=>t+(i.duration||0),0),this.#Ed=!!i.$current?.$settings?.ui?.controls?.serialTourNoTimeScrub,i.setAttribute("data-marker-tour-active",""),this.dn(()=>i.removeAttribute("data-marker-tour-active"));const s=t;s.next=()=>this.#Nn(),s.prev=()=>{this.#sa>0&&this.#Id(this.#sa-1)},this.dn(i.state.marker.subscribe(t=>{if(!t||!this.#Cd.length)return;const i="string"==typeof t?t:t.id,s=this.#Cd.findIndex(t=>t.markerId===i);0>s||s===this.#sa||(this.#Cd.forEach(t=>t.ended=0),this.#Id(s))})),this.#Ne(),this.#Id(0)}#Ne(){if(!this.#xe&&(this.#xe=1,this.#de.tour.printChapters)){const t=Mt("ol");this.#Cd.forEach((i,s)=>{const h=N.p(i),e=this.#Ld(h);e&&Mt("li",{dataset:{idx:String(s)},parent:t,children:[Mt("button",{textContent:e,events:{click:()=>this.#ma(s)}})]})}),t.children.length&&this.appendChild(t)}}async#Id(t){const i=this.yn();if(!i)return;const s=()=>{i.state.tour.set(void 0),this.#de.onended?.(),this.remove()},h=this.#Cd[t];if(!h)return;h.ended=0,h.currentTime=0;const e=N.p(h);let n;if(e?.videoTour){const t=e.videoTour.i18n?.[i.lang]?.timeline;t?.length&&1>=t[0].start&&(n=t[0].rect)}if(h.micrioId&&i.$current?.id!==h.micrioId&&await i.open(h.micrioId,{startView:n}),this.#ao&&(this.#ao.remove(),this.#ao=void 0),e?.videoTour){const t=i.lang,h=e.videoTour.i18n?.[t]?.audio??e.i18n?.[t]?.audio,n=Mt("micrio-media",{parent:this,setProps:{tour:e.videoTour,src:h?.src,image:i.$current,controls:1,autoplay:1,onended:()=>this.#Nn(),onclose:s,hasAudio:this.#Cd.some(t=>t.duration>0),fullscreenEl:i,getTimeDisplay:()=>`${Us(this.#zd())} / ${Us(this.#W)}`}});this.#ao=n,await bt(),this.#Dd();const o=this.#ao.querySelector("video,audio");o&&o.addEventListener("timeupdate",()=>{const t=this.#Cd[this.#sa];t&&(t.currentTime=o.currentTime),this.#Fd()})}this.#sa=t,this.#Fd(),e?.videoTour||t!==this.#Cd.length-1||this.#Nn()}#Nn(){const t=this.#Cd[this.#sa];t&&(t.ended=1),this.#sa<this.#Cd.length-1?this.#Id(this.#sa+1):(this.#de.onended?.(),this.yn()?.state.tour.set(void 0),this.remove())}#Ld(t){return t?.i18n?.[this.yn()?.lang||"en"]?.title}#Dd(){const t=this.#ao?.querySelector("micrio-media-controls > aside");if(!t)return;const i=t.querySelector("div");if(!i)return;i.querySelector('[data-part="bars"]')?.remove();const s=Mt("div",{attrs:{"data-part":"bars"}});this.#Cd.forEach((t,i)=>{const h=N.p(t);Mt("div",{attrs:{"data-part":"bar",role:"progressbar",tabindex:"0"},dataset:{idx:String(i)},props:{title:this.#Ld(h)??""},style:{width:t.duration/(this.#W||1)*100+"%"},events:{click:()=>this.#ma(i)},parent:s})}),i.prepend(s)}#ma(t){this.#Ed&&t===this.#sa||t!==this.#sa&&(this.#Cd.forEach(t=>t.ended=0),this.#Id(t))}#zd(){let t=0;for(let i=0;i<this.#Cd.length;i++){const s=this.#Cd[i];if(i>=this.#sa&&!s.ended){if(i===this.#sa){t+=s.currentTime??0;break}break}t+=s.duration}return t}#Fd(){this.#xe&&((this.#ao?.querySelectorAll('aside [data-part="bars"] > [data-part="bar"]')??[]).forEach((t,i)=>{const s=this.#Cd[i],h=i===this.#sa?s.currentTime??0:0,e=i<this.#sa||s.ended?100:i===this.#sa?Math.round(h/(s.duration||1)*1e4)/100:0;t.style.setProperty("--progress",`${e}%`),t.classList.toggle("active",i===this.#sa)}),this.querySelectorAll("ol.chapters li").forEach(t=>t.classList.toggle("active",Number(t.dataset.idx)===this.#sa)))}At(t){void 0!==t.tour&&(this.#de.tour=t.tour),void 0!==t.onended&&(this.#de.onended=t.onended)}};function de(t,i){if(i)for(let s,h=0;h<i.length;h++)if(i[h].id==t||(s=de(t,i[h].children)))return s??i[h]}customElements.define(ue.tag,ue);var fe=class extends xi{static tag="micrio-main";#de={};#v;#Bh;#an;#$d=0;#Od;#Bd;#Vd=new Map;#k=new Map;#Rd;#Nd(){this.#Rd?.destroy(),this.#Rd=void 0}#Hd=["audio","media","logo","orgLogo","details","toolbar","grid","gallery","controls","embeds","markers","popup","tour","popover","minimap","error","progress"];#Xd=new Map;#Gd(t){for(let i=this.#Hd.indexOf(t)+1;i<this.#Hd.length;i++){const t=this.#Xd.get(this.#Hd[i]);if(t?.isConnected)return t}return null}#jd(t,i){if(i.isConnected)return;const s=this.#Gd(t);s?this.insertBefore(i,s):this.appendChild(i)}#Yd(t){const i="string"==typeof t?t:t.localName;return!i.includes("-")||!!customElements.get(i)}#Wd(t,i,s,h){const e=this.#Xd.get(t);if(i){if(e?.isConnected)return void h?.(e);e?.remove();const i=s();if(!this.#Yd(i))return;this.#Xd.set(t,i),this.#jd(t,i)}else e?.isConnected&&(e.remove(),this.#Xd.set(t,null))}ln(){const t=this.yn();if(!t)return;const i=H(X(t.Po)?0:1);this.Mn("volume",i),this.dn(t.Po.subscribe(t=>i.set(t?0:1))),this.dn(()=>this.#an?.()),this.Mn("mediaPaused",H(0)),"markers"==t.getAttribute("data-ui")&&(this.#de.noHTML=1);const s=[];this.dn(t.current.subscribe(i=>{if(!i)return;this.#v=i.$info,this.#Bh=void 0,this.#$d=1,this.#an?.(),this.#Bh=i.Lt,this.#an=this.#Bh?.subscribe(()=>this.#Ud()),!this.#Od&&N.M()?.logo&&(this.#Od=N.M()),this.#Ud(),this.isConnected&&this.#Re();const h=i.$data;if(h&&0>s.indexOf(i.id)){s.push(i.id);const e=i.$settings.start;e&&G().then(G).then(()=>{if(!(X(t.state.popover)||X(t.state.marker)||X(t.state.tour)))switch(e.type){case"marker":i.state.marker.set(e.id);break;case"markerTour":{const i=h.markerTours?.find(t=>t.id==e.id);i&&t.state.tour.set(i);break}case"tour":{const i=h.tours?.find(t=>t.id==e.id);i&&t.state.tour.set(i);break}case"page":{const i=de(e.id,h.pages);i&&t.state.popover.set({contentPage:i,showLangSelect:1});break}}})}this.#Ud()})),this.dn(t.state.tour.subscribe(()=>{const i=this.#Xd.get("subtitles");i&&i.At?.({raised:!!X(t.state.tour)})}));for(const h of[t.Kt,t.state.popup,t.state.popover,t.state.tour,t.state.marker])this.dn(h.subscribe(()=>this.#Ud()));this.dn(t.Wt.subscribe(()=>this.#Ud())),this.#Ud()}At(t){Object.assign(this.#de,t),this.isConnected&&this.#Ud()}#Zd=0;#Ud(){this.#Zd||(this.#Zd=1,Q.request(()=>{this.#Zd=0,this.isConnected&&this.#Re()}))}#Re(){const t=this.yn();if(!t)return;const i=X(t.state.tour),s=X(t.state.marker),h=X(t.state.popup),e=X(t.state.popover),n=this.#v,o=this.#Bh?X(this.#Bh):void 0,r=t.$current?X(t.$current.data):void 0,a=this.#de.error,c=this.#de.loadingProgress??1,l=this.#de.noHTML??0,u=this.#de.noLogo??l,d=t.canvas.$isMobile,f=t.$current?.F,p=f?o._360.video:void 0,m=p?.src,g="book3d"==t.$current?.album?.info?.type;this.classList.toggle("is3d",f||g);const w=r?.markers?.filter(t=>!!t.positionalAudio),v=!!r?.music?.items.length||!!w?.length,M=i||s,_=!l||"markers"==t.getAttribute("data-ui"),y=!(u||n&&l||o?.noLogo||s||h),b=!l&&y&&!o?.noOrgLogo&&!!this.#Od&&!e,k=!l&&!!n&&!o?.noControls,x=!l&&!M&&!!o?.showInfo,P=!l&&this.#$d&&!o?.noToolbar,T=!(l||!n||0==o?.minimap||o?.noControls||!t.$current?.thumbSrc||h&&d);v&&r&&n&&t.$current?this.#Rd||(this.#Rd=new Os(t,t.$current),this.dn(()=>this.#Nd())):this.#Nd(),this.#Wd("media",!!m&&!!n,()=>Mt("div")),this.#Wd("logo",y,()=>Mt("micrio-logo")),this.#Wd("details",x&&!!r,()=>Mt("micrio-details",{setProps:{info:this.#v,data:r}})),this.#Wd("toolbar",P,()=>Mt("micrio-toolbar"));const S=X(t.Kt);this.#qd(this.#Vd,"micrio-markers","markers",S,_,i=>!(i.opts?.isEmbed||!i.$data?.markers?.length&&!t.spaceData)),this.#qd(this.#k,"micrio-image-embeds","embeds",S,"false"!=t.getAttribute("data-embeds"),t=>!!t.$data?.embeds?.length),this.#Wd("controls",k,()=>Mt("micrio-controls",{setProps:{hasAudio:v||!(!m||!p||p.muted)}})),this.#Wd("orgLogo",b&&!!this.#Od,()=>Mt("micrio-logo-org",{setProps:{organisation:this.#Od}}));const A=t.$current?.grid;A&&this.#jd("grid",A),this.#Wd("gallery",!!o?.omni||!("grid"===t.gallery?.Nn?.type||!t.gallery),()=>Mt("micrio-gallery",{setProps:{controller:t.gallery}})),this.#Wd("minimap",T,()=>Mt("micrio-minimap",{setProps:{image:t.$current}}),i=>i.At?.({image:t.$current}));const C=X(t.state.popup),E=null!=C&&"popover"!==C.popupType,I=this.#Xd.get("popup");if(E?(I?.isConnected&&(C.id!==this.#Bd||I.classList.contains("destroying"))&&(I.remove(),this.#Xd.set("popup",null)),this.#Bd=C.id,this.#Xd.get("popup")?.isConnected||this.#Xd.set("popup",Mt("micrio-marker-popup",{setProps:{marker:C},parent:this}))):I?.isConnected||(this.#Xd.set("popup",null),this.#Bd=void 0),this.#Wd("tour",!!i,()=>Mt(i&&"steps"in i&&i.isSerialTour?"micrio-serial-tour":"micrio-tour",{setProps:{tour:i,noHTML:l}})),this.#Wd("popover",!!e,()=>Mt("micrio-popover",{setProps:{popover:e}})),this.#Wd("error",!!a,()=>Mt("micrio-error",{setProps:{message:a}})),this.#Wd("progress",1>c,()=>Mt("micrio-progress-circle",{setProps:{progress:c}})),1>c){const t=this.#Xd.get("progress");t?.isConnected&&t.At?.({progress:c})}}#qd(t,i,s,h,e,n){const o=h.filter(t=>n(t)),r=new Set(o.map(t=>t.id));for(const[a,c]of t)r.has(a)||(c.remove(),t.delete(a));if(e&&this.#Yd(i))for(const a of o){if(t.has(a.id))continue;const h=Mt(i,{setProps:{image:a}});t.set(a.id,h);const e=this.#Gd(s);e?this.insertBefore(h,e):this.appendChild(h)}else{for(const i of t.values())i.remove();t.clear()}this.#Xd.set(s,t.values().next().value??null)}};customElements.define(fe.tag,fe),Qi.VERSION=A,customElements.define("micr-io",Qi),console.info("%c◈%c Micrio %cv7.1.3 - https://micr.io/ %c| New in version 7: https://doc.micr.io/client/v7/changes.html","color: #00d4ee","color: #c5ff5b","color: inherit","color: #888")}();