| 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(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 a=`bambuddy-camera`,o=`bambuddyTabId`;function s(e){return`${e}${Math.random().toString(36).slice(2,12)}`}function c(){try{let e=sessionStorage.getItem(o);if(e)return e;let t=s(`t`);return sessionStorage.setItem(o,t),t}catch{return s(`t`)}}function l(){try{return sessionStorage.getItem(o)}catch{return null}}function u(e,t,n=async()=>!0){if(typeof BroadcastChannel>`u`)return()=>{};let r=new BroadcastChannel(a),i=!1,o=s(`i`),c=new Map;return r.onmessage=async a=>{let s=a.data;if(s?.type===`pop-in-offer`&&Number.isInteger(s.printerId)&&s.printerId>0)c.set(s.requestId,{printerId:s.printerId,printerName:String(s.printerName??``)}),r.postMessage({type:`pop-in-candidate`,requestId:s.requestId,tabId:e,instanceId:o});else if(s?.type===`pop-in-claim`){if(s.instanceId!==o)return;let e=c.get(s.requestId);if(c.delete(s.requestId),!e)return;let a=!1;try{a=await n(e.printerId)}catch{a=!1}if(i)return;if(!a){r.postMessage({type:`pop-in-refused`,requestId:s.requestId,instanceId:o});return}if(!(Date.now()<=s.deadline))return;t(e.printerId,e.printerName),r.postMessage({type:`pop-in-done`,requestId:s.requestId})}else s?.type===`pop-in-done`&&c.delete(s.requestId)},()=>{i=!0,r.close()}}function d(e,t,n,{answerMs:r=400,doneMs:i=3e3}={}){if(typeof BroadcastChannel>`u`)return Promise.resolve(!1);let o=new BroadcastChannel(a),c=s(`r`);return new Promise(a=>{let s=[],l=null,u,d=e=>{clearTimeout(u),o.close(),a(e)},f=()=>{clearTimeout(u);let e=s.find(e=>e.tabId===n)??s[0];if(!e){d(!1);return}s.splice(s.indexOf(e),1),l=e.instanceId;let t=Date.now()+i/2;o.postMessage({type:`pop-in-claim`,requestId:c,instanceId:e.instanceId,deadline:t}),u=setTimeout(()=>d(!1),i)};o.onmessage=e=>{let t=e.data;t?.requestId===c&&(t.type===`pop-in-candidate`?(s.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),o.postMessage({type:`pop-in-offer`,requestId:c,printerId:e,printerName:t})})}export{c as a,n as i,i as n,d as o,l as r,r as s,u as t};
|