PageSourceSearch

https://www.interlaken.swiss/dist/js/srcset-focus-BViGBk0s.js

js interlaken.swiss collected 2026-09-25 00:14:43 UTC 2,481 bytes, 1 lines download raw bytes

1import{n as e}from"./debounce-B316v5qs.js";var t=class t{constructor(e,t,n=!1){this.imageElement=e,this.options=t,this.boundingClientRect=null,this.immediately=n,this.currentSrc=``,this.initialize()}static observe(e,n,r=!1){if(!e||!n||getComputedStyle(e).objectFit!==`cover`||e.tagName!==`IMG`||t.observables.has(e))return;let i=new this(e,n,r);return t.observables.set(e,i),t.observes||=!0,i}static createObserver(){if(!window.ResizeObserver)return!1;let n=e.debounce(e=>{for(let n of e)t.observables.forEach(e=>{e.imageElement.parentElement===n.target&&(e.updateFocusAreaBySrc(),e.updateImagePosition())})},100);return new ResizeObserver(e=>{n(e)})}initialize(){let e=!1,n=()=>{e||(e=!0,this.updateFocusAreaBySrc(),this.updateImagePosition(),t.observer.observe(this.imageElement.parentElement))};this.imageElement.addEventListener(`load`,()=>{n()}),document.readyState===`interactive`||document.readyState===`complete`||document.readyState===`loaded`?n():(this.immediately&&n(),document.addEventListener(`readystatechange`,()=>{(document.readyState===`interactive`||document.readyState===`complete`||document.readyState===`loaded`)&&n()}))}updateImagePosition(){let e=this.imageElement.parentElement;this.boundingClientRect=e.getBoundingClientRect();let t=this.boundingClientRect.width,n=this.boundingClientRect.height;if(!this.focusArea||!t||!n)return;let r=this.calcImageCoverSize(t,n,this.focusArea.iw,this.focusArea.ih),i=(r.width-t)*-1,a=(r.height-n)*-1,o=r.width*this.focusArea.x*-1-r.width*this.focusArea.fw/2+t/2,s=r.height*this.focusArea.y*-1-r.height*this.focusArea.fh/2+n/2,c=this.range(o,i,0),l=this.range(s,a,0);this.imageElement.style.objectPosition=`${c}px ${l}px`}range(e,t,n){return e<t?t:e>n?n:e}calcImageCoverSize(e,t,n,r){let i=n/r,a=e/t,o={};return a>i?(o.width=e,o.height=e/i):(o.height=t,o.width=t*i),o}updateFocusAreaBySrc(){let e=this.imageElement.currentSrc||this.imageElement.src;if(e===this.currentSrc&&this.focusArea)return this.focusArea;if(this.currentSrc=e,this.focusArea=!1,this.options[e])return this.focusArea=this.options[e],this.focusArea;for(let t in Object.keys(this.options))if(Object.prototype.hasOwnProperty.call(this.options,t)&&e.includes(new URL(t).pathname))return this.focusArea=this.options[t],this.focusArea;return!this.focusArea&&Object.keys(this.options).length>0&&(this.focusArea=this.options[Object.keys(this.options)[0]]),this.focusArea}};t.observer=t.createObserver(),t.observes=!!t.observer,t.observables=new Map;export{t};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.