camera-MsEzBYBi.js 2.7 KB

1
  1. var e=`cameraViewMode`;function t(e){return e===`window`||e===`embedded`}function n(){try{let n=localStorage.getItem(e);return t(n)?n:null}catch{return null}}function r(t){try{localStorage.setItem(e,t)}catch{}}function i(){try{return navigator.standalone===!0}catch{return!1}}function a(e){let t={width:640,height:400};try{let e=localStorage.getItem(`cameraWindowState`);if(e){let n=JSON.parse(e);n&&typeof n==`object`&&(t=n)}}catch{}let n=[`width=${t.width??640}`,`height=${t.height??400}`,t.left===void 0?``:`left=${t.left}`,t.top===void 0?``:`top=${t.top}`,`menubar=no,toolbar=no,location=no,status=no`].filter(Boolean).join(`,`);return window.open(`/camera/${e}`,`camera-${e}`,n)!==null}var o=`bambuddy-camera`,s=`bambuddyTabId`;function c(e){return`${e}${Math.random().toString(36).slice(2,12)}`}function l(){try{let e=sessionStorage.getItem(s);if(e)return e;let t=c(`t`);return sessionStorage.setItem(s,t),t}catch{return c(`t`)}}function u(){try{return sessionStorage.getItem(s)}catch{return null}}function d(e,t,n=async()=>!0){if(typeof BroadcastChannel>`u`)return()=>{};let r=new BroadcastChannel(o),i=!1,a=c(`i`),s=new Map;return r.onmessage=async o=>{let c=o.data;if(c?.type===`pop-in-offer`&&Number.isInteger(c.printerId)&&c.printerId>0)s.set(c.requestId,{printerId:c.printerId,printerName:String(c.printerName??``)}),r.postMessage({type:`pop-in-candidate`,requestId:c.requestId,tabId:e,instanceId:a});else if(c?.type===`pop-in-claim`){if(c.instanceId!==a)return;let e=s.get(c.requestId);if(s.delete(c.requestId),!e)return;let o=!1;try{o=await n(e.printerId)}catch{o=!1}if(i)return;if(!o){r.postMessage({type:`pop-in-refused`,requestId:c.requestId,instanceId:a});return}if(!(Date.now()<=c.deadline))return;t(e.printerId,e.printerName),r.postMessage({type:`pop-in-done`,requestId:c.requestId})}else c?.type===`pop-in-done`&&s.delete(c.requestId)},()=>{i=!0,r.close()}}function f(e,t,n,{answerMs:r=400,doneMs:i=3e3}={}){if(typeof BroadcastChannel>`u`)return Promise.resolve(!1);let a=new BroadcastChannel(o),s=c(`r`);return new Promise(o=>{let c=[],l=null,u,d=e=>{clearTimeout(u),a.close(),o(e)},f=()=>{clearTimeout(u);let e=c.find(e=>e.tabId===n)??c[0];if(!e){d(!1);return}c.splice(c.indexOf(e),1),l=e.instanceId;let t=Date.now()+i/2;a.postMessage({type:`pop-in-claim`,requestId:s,instanceId:e.instanceId,deadline:t}),u=setTimeout(()=>d(!1),i)};a.onmessage=e=>{let t=e.data;t?.requestId===s&&(t.type===`pop-in-candidate`?(c.push({tabId:t.tabId,instanceId:t.instanceId}),l===null&&n&&t.tabId===n&&f()):t.type===`pop-in-refused`&&t.instanceId===l?f():t.type===`pop-in-done`&&d(!0))},u=setTimeout(f,r),a.postMessage({type:`pop-in-offer`,requestId:s,printerId:e,printerName:t})})}export{n as a,r as c,u as i,d as n,l as o,a as r,f as s,i as t};