@scandit/web-datacapture-core
Version:
Scandit Data Capture SDK for the Web
1 lines • 3.27 kB
JavaScript
import {a}from'./chunk-R6E4CT22.js';import {b}from'./chunk-VBUDN72N.js';import {a as a$1}from'./chunk-XR65N6EG.js';var d="orientationchange",n={"portrait-primary":{type:"portrait-primary",angle:0,value:"portrait"},"portrait-secondary":{type:"portrait-secondary",angle:180,value:"portraitUpsideDown"},"landscape-primary":{type:"landscape-primary",angle:90,value:"landscapeLeft"},"landscape-secondary":{type:"landscape-secondary",angle:270,value:"landscapeRight"}},l=class extends EventTarget{constructor(){super(...arguments);this.orientation={value:"portrait",type:"portrait-primary",angle:0};this._landscapeOrientationMediaQuery=null;this.screenOrientationChangeListener=this.onScreenOrientationChange.bind(this);this.landscapeOrientationMediaQueryChangeListener=this.onLandscapeOrientationMediaQueryChange.bind(this);this.windowResizeListener=a(this.handleWindowResize.bind(this),700);this.lastWidth=null;this.lastHeight=null;}get landscapeOrientationMediaQuery(){return this._landscapeOrientationMediaQuery===null&&(this._landscapeOrientationMediaQuery=globalThis.matchMedia("(orientation: landscape)")),this._landscapeOrientationMediaQuery}get isIosPwaMode(){return b.isIOS()&&(b.isPwaDisplayMode("standalone")||b.isPwaDisplayMode("fullscreen")||b.isPwaDisplayMode("minimal-ui"))}register(){var e,i;this.isScreenOrientationApiSupported()&&!this.isIosPwaMode?(screen.orientation.addEventListener("change",this.screenOrientationChangeListener),this.onScreenOrientationChange()):this.isIosPwaMode?((e=globalThis.addEventListener)==null||e.call(globalThis,"resize",this.windowResizeListener),this.handleWindowResize()):((i=this.landscapeOrientationMediaQuery)==null||i.addEventListener("change",this.landscapeOrientationMediaQueryChangeListener),this.onLandscapeOrientationMediaQueryChange(new MediaQueryListEvent("change",{matches:this.landscapeOrientationMediaQuery.matches})));}unregister(){globalThis.removeEventListener("resize",this.windowResizeListener),this.isScreenOrientationApiSupported()&&screen.orientation.removeEventListener("change",this.screenOrientationChangeListener),this.landscapeOrientationMediaQuery.removeEventListener("change",this.landscapeOrientationMediaQueryChangeListener);}isScreenOrientationApiSupported(){return "screen"in globalThis&&"orientation"in screen&&typeof screen.orientation.addEventListener=="function"}dispatchOrientationChangeEvent(e){this.dispatchEvent(new CustomEvent(d,{detail:e}));}onScreenOrientationChange(){this.orientation=n[screen.orientation.type],this.dispatchOrientationChangeEvent(this.orientation);}onLandscapeOrientationMediaQueryChange(e){let i=e;this.orientation=i.matches?n["landscape-primary"]:n["portrait-primary"],this.dispatchOrientationChangeEvent(this.orientation);}handleWindowResize(){let e=globalThis.innerWidth,i=globalThis.innerHeight,r=this.lastWidth===null||this.lastHeight===null;if(!r&&e===this.lastWidth&&i===this.lastHeight)return;let a=e>i?n["landscape-primary"]:n["portrait-primary"];(r||this.orientation.value!==a.value)&&(a$1.debug("OrientationObserver: dispatching orientation change event",{newOrientation:a,currentOrientation:this.orientation}),this.orientation=a,this.dispatchOrientationChangeEvent(this.orientation)),this.lastWidth=e,this.lastHeight=i;}};export{d as a,l as b};