@lingxia/bridge 0.5.0 → 0.5.1

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.
@@ -0,0 +1 @@
1
+ const __LX_RUNTIME_PLATFORM__="all";var LingXiaBridgeRuntime=function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const t="BRIDGE_TIMEOUT",n="BRIDGE_CANCELED",o="BRIDGE_HANDSHAKE_FAILED",r="BRIDGE_MALFORMED_MESSAGE",i="BRIDGE_METHOD_NOT_FOUND",s="BRIDGE_CAPABILITY_DENIED",a="BRIDGE_INTERNAL_ERROR",l="BRIDGE_OUTBOX_FULL",c="BRIDGE_STREAM_CLOSED";var d=class extends Error{constructor(e,t,n){super(t),this.name="BridgeInvocationError",this.code=e,this.data=n}};function u(e){if(e instanceof d)return e;if(e&&"object"==typeof e){const t=e;let n=a;("string"==typeof t.code&&""!==t.code.trim()||"number"==typeof t.code&&Number.isFinite(t.code))&&(n=t.code);const o="string"==typeof t.message&&""!==t.message.trim()?t.message:"Unknown error";return new d(n,o,"data"in t?t.data:void 0)}const t=e instanceof Error?e.message:"string"==typeof e?e:"Unknown error";return new d(a,t)}function m({os:e,send:t}){if("undefined"==typeof window)return;if("undefined"==typeof document)return;const n="iOS"===e;if(!n&&"Android"!==e)return;const o=Symbol.for("LingXia.NativeComponentCoverageMonitor");if(window[o]?.installed)return;const r={installed:!0,coveredById:new Map,coveredCount:0,anyCovered:!1,scheduled:!1,hasAnyVideo:!1,scrollLocked:!1,scrollY:0,htmlOverflow:"",bodyOverflow:"",bodyPosition:"",bodyTop:"",bodyWidth:""};function i(e){const t=e.getBoundingClientRect?.();if(!t)return!1;if(t.width<2||t.height<2)return!1;const n=t.left+t.width/2,o=t.top+t.height/2;if(n<0||o<0||n>=window.innerWidth||o>=window.innerHeight)return!1;const r=document.elementFromPoint?.(n,o);return!!r&&(r!==document.documentElement&&r!==document.body&&!(r===e||e.contains(r)))}function s(){r.scheduled=!1;const e=document.querySelectorAll("lx-video[id]");if(r.hasAnyVideo=e.length>0,!r.hasAnyVideo&&0===r.coveredById.size&&!r.anyCovered)return;const o=new Set;for(const n of Array.from(e)){const e=n.id;if(!e)continue;o.add(e);const s=i(n),a=r.coveredById.get(e);a!==s&&(!0===a&&(r.coveredCount-=1),!0===s&&(r.coveredCount+=1),r.coveredById.set(e,s),t({id:e,action:"component.coverage",covered:s}))}const s=[];for(const[e,t]of r.coveredById.entries())o.has(e)||(s.push(e),!0===t&&(r.coveredCount-=1));for(const e of s)r.coveredById.delete(e),t({id:e,action:"component.coverage",covered:!1});const a=r.coveredCount>0;a!==r.anyCovered&&(r.anyCovered=a,n&&(a?function(){if(!n)return;if(r.scrollLocked)return;const e=document.documentElement,t=document.body;e&&t&&(r.scrollLocked=!0,r.scrollY=window.scrollY||e.scrollTop||0,r.htmlOverflow=e.style.overflow||"",r.bodyOverflow=t.style.overflow||"",r.bodyPosition=t.style.position||"",r.bodyTop=t.style.top||"",r.bodyWidth=t.style.width||"",e.style.overflow="hidden",t.style.overflow="hidden",t.style.position="fixed",t.style.top=-r.scrollY+"px",t.style.width="100%")}():function(){if(!n)return;if(!r.scrollLocked)return;const e=document.documentElement,t=document.body;e&&t&&(r.scrollLocked=!1,e.style.overflow=r.htmlOverflow,t.style.overflow=r.bodyOverflow,t.style.position=r.bodyPosition,t.style.top=r.bodyTop,t.style.width=r.bodyWidth,window.scrollTo(0,r.scrollY))}()))}function a(){r.scheduled||(r.scheduled=!0,requestAnimationFrame(s))}window[o]=r,new MutationObserver(a).observe(document.documentElement,{subtree:!0,childList:!0,attributes:!0});const l={handleEvent:()=>{(r.hasAnyVideo||0!==r.coveredById.size)&&a()}},c={handleEvent:()=>a()};window.addEventListener("scroll",l,{capture:!0,passive:!0}),window.addEventListener("resize",c),a()}const f="undefined"!=typeof window&&window.__LX_BRIDGE_CFG||{};function p(){return f.os||"unknown"}function h(){return"iOS"===f.os}function g(){return"macOS"===f.os}const y="__LingXiaRecvMessage",v=5e3,x="[LX.Bridge]",w="messageport",b="jsinterface",k={data:!1,proto:!1,all:!1},E=[];function _(e){return k.all||k[e]}function I(...e){console.log(x,...e)}function C(...e){console.warn(x,...e)}function T(...e){console.error(x,...e)}function L(e){try{return JSON.stringify(e)}catch{return function(e,t){const n=new WeakSet;return JSON.stringify(e,(e,t)=>{if("object"==typeof t&&null!==t){if(n.has(t))return"[Circular]";n.add(t)}return t},t)}(e)}}function M(e){try{return"function"==typeof structuredClone?structuredClone(e):JSON.parse(JSON.stringify(e))}catch{return{}}}const S="iOS"===f.os||"macOS"===f.os?"webkit":"Harmony"===f.os?"messageport":"Android"===f.os?window.LingXiaProxy?.supportsMessagePort?.()?"messageport":"jsinterface":"unknown";"undefined"!=typeof window&&"function"!=typeof window[y]&&(window[y]=e=>{E.push(e)});let N=null,P=!1,A=null,O=null,j=null,B=200;const R={listenerInstalled:!1,promise:null,resolve:null,reject:null,timer:null},F={handleEvent:e=>{const t=e;if("LingXia-port-init"!==t.data)return;const n=t.ports?.[0];n&&(De._connectWebMessagePort(n),R.resolve?.(n))}};function D(){R.listenerInstalled||(R.listenerInstalled=!0,window.addEventListener("message",F))}function $(){null!==R.timer&&(window.clearTimeout(R.timer),R.timer=null),R.resolve=null,R.reject=null,R.promise=null}function X(){return"webkit"===S&&(h()||g())}function H(){null!==j&&(clearTimeout(j),j=null)}function q(e){for(const t of Array.from(ne.keys()))ge(t,{code:c,message:e});for(const t of Array.from(oe.keys()))ye(t,{code:c,message:e});!function(e){for(const[t,n]of Array.from(re.entries()))re.delete(t),n._emitClose(c,e)}(e)}function z(e){let t=e;for(;;){const e=t.indexOf("\n");if(e<0)break;const n=t.slice(0,e).trim();if(t=t.slice(e+1),n)try{Me(JSON.parse(n))}catch(e){C("Apple downstream parse error:",e,n)}}return t}function G(){X()&&(A||(H(),A=async function(){const e=new AbortController;let t;O=e;try{t=await fetch("/__lingxia/bridge/downstream",{method:"GET",cache:"no-store",headers:{Accept:"application/x-ndjson"},signal:e.signal})}catch(t){if(e.signal.aborted)return;throw t}if(!t.ok)throw new Error(`Apple downstream HTTP ${t.status}`);if(!t.body)throw new Error("Apple downstream response body unavailable");P=!0,B=200,_("proto")&&I("Apple downstream connected"),_e();const n=t.body.getReader(),o=new TextDecoder;let r="";try{for(;;){const{value:e,done:t}=await n.read();if(t)break;r+=o.decode(e,{stream:!0}),r=z(r)}r+=o.decode();const e=r.trim();if(e)try{Me(JSON.parse(e))}catch(t){C("Apple downstream trailing parse error:",t,e)}}finally{try{n.releaseLock()}catch{}}}().catch(e=>{O?.signal.aborted||C("Apple downstream failed:",e)}).finally(()=>{const e=O?.signal.aborted??!1;A=null,O=null;const t=P;var n,o;P=!1,n="Apple downstream closed",o=t,Ee(),U=null,J=!1,Y=!1,V=0,o&&q(n),e||function(e){if(!X())return;H();const t=B;B=Math.min(2*B,2e3);const n=`Apple downstream disconnected, retrying in ${t}ms: ${e}`;t<=200?I(n):C(n),j=setTimeout(()=>{j=null,G()},t)}("stream closed")})))}function W(e){const t=e.kind;"req"!==t&&"notify"!==t||I(`postToNative: ${t} ${e.method}`),_("proto")&&console.log("→",JSON.stringify(e,null,2));try{if("webkit"===S)return void window.webkit?.messageHandlers.LingXia?.postMessage(e);const t=L(e);if(S===w&&N)return void N.postMessage(t);if(S===b&&window.LingXiaProxy?.postMessage)return void window.LingXiaProxy.postMessage(t);C("Transport not ready")}catch(e){T("Send error:",e)}}let U=null,J=!1,Y=!1,V=0,K=null;const Q={};let Z=0;function ee(){return{data:new Set,end:new Set,error:new Set,close:new Set}}function te(e,t){const n=ee();let o=!1,r=()=>{},i=()=>{};const s=[],a=[],l=new Promise((e,t)=>{r=e,i=t});return{id:e,result:l,on(e,t){return"data"===e&&n.data.add(t),"end"===e&&n.end.add(t),"error"===e&&n.error.add(t),this},[Symbol.asyncIterator]:()=>({next:()=>s.length>0?Promise.resolve({done:!1,value:s.shift()}):o?l.then(e=>({done:!0,value:e}),e=>Promise.reject(e)):new Promise((e,t)=>{a.push({resolve:e,reject:t})})}),cancel(){o||t()},_emitData(e){if(!o){a.length>0?a.shift().resolve({done:!1,value:e}):s.push(e);for(const t of n.data)try{t(e)}catch(e){C("Stream data listener failed:",e)}}},_resolve(e){if(!o){for(o=!0,r(e);a.length>0;)a.shift().resolve({done:!0,value:e});for(const t of n.end)try{t(e)}catch(e){C("Stream end listener failed:",e)}}},_reject(e){if(!o){for(o=!0,i(e);a.length>0;)a.shift().reject(e);for(const t of n.error)try{t(e)}catch(e){C("Stream error listener failed:",e)}}}}}const ne=new Map,oe=new Map,re=new Map,ie=[];let se=-1,ae={};const le=new Set,ce=new WeakMap,de=new Map;function ue(e,t){de.set(e,t)}function me(e){if(e.startsWith("host."))return"host";const t=e.indexOf(".");return t>0?e.slice(0,t):"page"}function fe(e){if(null!=e)return e}function pe(){return S===w?!!N:X()?P:"webkit"===S||S===b}function he(){return pe()&&J}function ge(e,t){const n=ne.get(e);if(n){ne.delete(e),null!==n.timerId&&clearTimeout(n.timerId);const o=u(t);if("stream"===n.mode&&n.stream)return void n.stream._reject(o);n.reject?.(o)}}function ye(e,t){const n=oe.get(e);if(!n)return;oe.delete(e),null!==n.timerId&&clearTimeout(n.timerId);const o=u(t);n.channel._reject(o),n.reject(o)}function ve(e,t){ne.has(e)?ge(e,t):oe.has(e)&&ye(e,t)}function xe(e){const n=ne.get(e);n&&(!Number.isFinite(n.timeoutMs)||n.timeoutMs<=0?null!==n.timerId&&(clearTimeout(n.timerId),n.timerId=null):(null!==n.timerId&&clearTimeout(n.timerId),n.timerId=setTimeout(()=>{ne.has(e)&&ge(e,{code:t,message:`'${n.method}' timed out`})},n.timeoutMs)))}function we(e){ne.has(e)?xe(e):oe.has(e)&&function(e){const n=oe.get(e);n&&(null!==n.timerId&&clearTimeout(n.timerId),n.timerId=setTimeout(()=>{ye(e,{code:t,message:`Channel '${n.topic}' timed out`})},v))}(e)}function be(e){for(let t=ie.length-1;t>=0;t--)if(ie[t]?.reqId===e)return ie.splice(t,1),!0;return!1}function ke(e,t){const n=e.kind,o="hello"===n||"helloAck"===n||"ready"===n;if(!he()&&!o)return ie.length>=256?(T("Outbox full"),void(t&&ve(t,{code:l,message:"Bridge outbox is full"}))):void ie.push({msg:e,reqId:t});t&&we(t),W(e)}function Ee(){null!==K&&(clearTimeout(K),K=null)}function _e(){if(J)return;if(!pe())return;Ee();const e={v:2,kind:"hello",nonce:f.nonce||"",role:"view",protocolsSupported:[2]};Y=!0,W(e),K=setTimeout(()=>{if(!J)if(V++,V<3)C(`Handshake timeout (${V}/3), retrying...`),Y=!1,_e();else{for(T("Handshake failed"),Ee(),Y=!1,V=0;ie.length;){const e=ie.shift();e?.reqId&&ve(e.reqId,{code:o,message:"Bridge handshake failed"})}for(const e of Array.from(oe.keys()))ye(e,{code:o,message:"Bridge handshake failed"})}},1e4)}function Ie(e){return e.replace(/~1/g,"/").replace(/~0/g,"~")}function Ce(e,t,n=!1){const o=function(e){if(""===e)return[];if(!e.startsWith("/"))throw new Error(`Invalid JSON pointer: ${e}`);return e.split("/").slice(1).map(Ie)}(t);if(0===o.length)return{container:{$root:e},key:"$root"};let r=e;for(let e=0;e<o.length-1;e++){const t=o[e];if(Array.isArray(r))r=r[Number(t)];else{if(!r||"object"!=typeof r)throw new Error(`Invalid container at ${t}`);{const i=r;if(n&&void 0===i[t]){const n=o[e+1];i[t]=n&&/^\d+$/.test(n)?[]:{}}r=i[t]}}}return{container:r,key:o[o.length-1]}}function Te(e){le.forEach(t=>{try{if(!ce.has(t))return ce.set(t,!0),void t(M(ae),{rev:se,initial:!0});t(M(ae),{rev:se,initial:e})}catch(e){C("Subscriber error:",e)}})}function Le(e){De.call("state.getSnapshot",{scope:e}).catch(()=>{})}function Me(e){if(e&&"object"==typeof e){const t=e;if("event"===t.type&&"nativecomponent"===t.name&&t.payload){const e=t.payload,n=e.id||e.componentId;if("string"==typeof n){const t=Se.get(n);if(t)try{t(e)}catch(e){T("NC handler error:",e)}}return}}const t=function(e){if(!e||"object"!=typeof e)return null;const t=e.v,n=e.kind;return 2!==t||"string"!=typeof n?null:e}(e);if(t)switch(t.kind){case"helloAck":return void(U=t.sessionId);case"ready":if(U&&t.sessionId!==U)return void C("sessionId mismatch");if(Ee(),J=!0,V=0,t.hostMethods)for(const[e,n]of Object.entries(t.hostMethods))Q[e]=n;return _("proto")&&I("Handshake complete, hostMethods:",Object.keys(Q).length),void function(){if(he())for(;ie.length;){const e=ie.shift();e&&(e.reqId&&we(e.reqId),W(e.msg))}}();case"res":{const e=ne.get(t.id);if(!e)return;if(ne.delete(t.id),null!==e.timerId&&clearTimeout(e.timerId),t.ok){if("state.getSnapshot"===e.method&&(function(e){if(!e||"object"!=typeof e)return!1;const t=e;return!("number"!=typeof t.rev||!Number.isFinite(t.rev)||!t.state||"object"!=typeof t.state||(ae=t.state,se=t.rev,_("data")&&(console.group("[LX] snapshot(res)"),console.log("rev:",se,"state:",M(ae)),console.groupEnd()),Te(!0),0))}(t.result)||C("Invalid state.getSnapshot result")),"stream"===e.mode&&e.stream)return void e.stream._resolve(t.result);e.resolve?.(t.result)}else{const n=u(t.error);if("stream"===e.mode&&e.stream)return void e.stream._reject(n);e.reject?.(n)}return}case"event":if(ne.has(t.id)){const e=ne.get(t.id);return void("stream"===e?.mode&&e.stream?(xe(t.id),e.stream._emitData(t.payload)):C(`Received event for non-stream request '${t.id}'`))}return;case"state.snapshot":return ae=t.state||{},se=t.rev,_("data")&&(console.group("[LX] snapshot"),console.log("rev:",se,"state:",M(ae)),console.groupEnd()),void Te(!0);case"state.patch":if(t.baseRev!==se)return C("baseRev mismatch",{have:se,want:t.baseRev}),void Le(t.scope);try{!function(e,t){for(const n of t){const t="add"===n.op||"replace"===n.op,{container:o,key:r}=Ce(e,n.path,t);if("$root"===r){for(const t of Object.keys(e))delete e[t];if("remove"!==n.op){const t=n.value;t&&"object"==typeof t&&Object.assign(e,t)}continue}if(Array.isArray(o)){const e="-"===r?o.length:Number(r);if(!Number.isFinite(e)||e<0)throw new Error("Invalid index");"remove"===n.op?o.splice(e,1):"add"===n.op?o.splice(e,0,n.value):"replace"===n.op&&(o[e]=n.value);continue}if(!o||"object"!=typeof o)throw new Error("Invalid container");const i=o;"remove"===n.op?delete i[r]:i[r]=n.value}}(ae,t.ops||[]),se=t.rev}catch(e){return T("Patch failed:",e),void Le(t.scope)}return _("data")&&(console.group("[LX] patch"),console.log("rev:",se,"ops:",t.ops),console.groupEnd()),Te(!1),void(t.ack&&ke({v:2,kind:"state.ack",scope:t.scope,rev:t.rev}));case"ch.ack":{const e=oe.get(t.id);if(!e)return;if(oe.delete(t.id),null!==e.timerId&&clearTimeout(e.timerId),t.ok)e.channel._markOpen(),re.set(t.id,e.channel),e.resolve(e.channel);else{const n=u(t.error);e.channel._reject(n),e.reject(n)}return}case"ch.data":{const e=re.get(t.id);if(!e)return;return void e._emitData(t.payload)}case"ch.close":{const e=oe.get(t.id);if(e)return oe.delete(t.id),void e.channel._emitClose(t.code,t.reason);const n=re.get(t.id);if(!n)return;return re.delete(t.id),void n._emitClose(t.code,t.reason)}case"req":{const e=t,n=me(e.method);if(!e.cap||e.cap!==n)return void ke({v:2,kind:"res",id:e.id,ok:!1,error:{code:s,message:`Invalid cap for ${e.method}`}});const o=de.get(e.method);return o?void Promise.resolve().then(()=>o(e.params)).then(t=>{ke({v:2,kind:"res",id:e.id,ok:!0,result:t})}).catch(t=>{ke({v:2,kind:"res",id:e.id,ok:!1,error:u(t)})}):void ke({v:2,kind:"res",id:e.id,ok:!1,error:{code:i,message:`View handler not found: ${e.method}`}})}}else C("Invalid V2 message:",e)}const Se=new Map,Ne=[];let Pe=!1;function Ae(){return"undefined"!=typeof window&&!(!window.webkit?.messageHandlers?.NativeComponent&&!window.NativeComponentBridge?.postMessage)}function Oe(e){try{if(window.webkit?.messageHandlers?.NativeComponent)return void window.webkit.messageHandlers.NativeComponent.postMessage(e);if(window.NativeComponentBridge?.postMessage)return void window.NativeComponentBridge.postMessage(L(e))}catch(e){T("NativeComponent send error:",e)}}function je(){if(Ae()&&0!==Ne.length)for(Pe=!0;Ne.length;){const e=Ne.shift();try{Oe(e)}catch{break}}}function Be(e){try{if(!Ae())return void Ne.push(e);Pe||je(),Oe(e)}catch(e){T("NC send failed:",e)}}function Re(e){return`${e}_${Date.now()}_${Z++}`}function Fe(e,t,n){if(!t)return;if(t.aborted)return void n();let o={handleEvent:()=>{t.removeEventListener("abort",o),n()}};t.addEventListener("abort",o)}const De={call:(e,t,o)=>new Promise((i,s)=>{if(!e||"string"!=typeof e)return void s({code:r,message:"Method name must be a non-empty string"});Y||_e();const a=Re("c"),l=o?.cap||me(e),c=o?.timeoutMs??v;ne.set(a,{method:e,mode:"call",resolve:i,reject:e=>s(e),timeoutMs:c,timerId:null}),ke({v:2,kind:"req",id:a,method:e,params:fe(t),cap:l},a),Fe(0,o?.signal,()=>{const e=be(a);ge(a,{code:n,message:"Bridge request aborted"}),!e&&J&&ke({v:2,kind:"cancel",id:a})})}),stream(e,t,o){if(!e||"string"!=typeof e){const e=te("invalid",()=>{});return e._reject({code:r,message:"Method name must be a non-empty string"}),e}Y||_e();const i=Re("c"),s=te(i,()=>{be(i)?ge(i,{code:n,message:"Bridge request aborted"}):J&&ke({v:2,kind:"cancel",id:i})}),a=o?.cap||me(e),l=o?.timeoutMs??v;return ne.set(i,{method:e,mode:"stream",stream:s,timeoutMs:l,timerId:null}),ke({v:2,kind:"req",id:i,method:e,params:fe(t),cap:a},i),Fe(0,o?.signal,()=>s.cancel()),s},notify(e,t,n){e&&"string"==typeof e&&(Y||_e(),ke({v:2,kind:"notify",method:e,params:fe(t),cap:n?.cap||me(e)}))},state:{subscribe:function(e){if("function"!=typeof e)return()=>{};if(le.add(e),se>=0){ce.set(e,!0);try{e(M(ae),{rev:se,initial:!0})}catch(e){T("Callback error:",e)}}return()=>{le.delete(e),ce.delete(e)}}},channel:{open:(e,t,n)=>e&&"string"==typeof e?(Y||_e(),new Promise((o,r)=>{const i=Re("ch"),s=function(e,t,n){const o=ee();let r=!1,i=0,s=!1;const a=[],l=[],d={id:e,send(n){r?t(n,i++):d._reject({code:c,message:`Channel '${e}' is closed`})},on(e,t){return"data"===e&&o.data.add(t),"close"===e&&o.close.add(t),"error"===e&&o.error.add(t),this},[Symbol.asyncIterator]:()=>({next:()=>a.length>0?Promise.resolve({done:!1,value:a.shift()}):s?Promise.resolve({done:!0,value:void 0}):new Promise((e,t)=>{l.push({resolve:e,reject:t})})}),close(e,t){r&&(r=!1,s=!0,n(e,t),d._emitClose(e,t))},_emitData(e){if(r){l.length>0?l.shift().resolve({done:!1,value:e}):a.push(e);for(const t of o.data)try{t(e)}catch(e){C("Channel listener failed:",e)}}},_emitClose(e,t){for(s=!0;l.length>0;)l.shift().resolve({done:!0,value:void 0});for(const n of o.close)try{n(e,t)}catch(e){C("Channel close listener failed:",e)}},_reject(e){for(s=!0;l.length>0;)l.shift().reject(e);for(const t of o.error)try{t(e)}catch(e){C("Channel error listener failed:",e)}},_markOpen(){r=!0,s=!1},_isOpen:()=>r,_nextSeq:()=>i++};return d}(i,(e,t)=>{ke({v:2,kind:"ch.data",id:i,seq:t,payload:e})},(e,t)=>{const n=oe.get(i);n&&null!==n.timerId&&clearTimeout(n.timerId),oe.delete(i),re.delete(i),ke({v:2,kind:"ch.close",id:i,code:e,reason:t})});oe.set(i,{topic:e,channel:s,resolve:o,reject:r,timerId:null}),ke({v:2,kind:"ch.open",id:i,topic:e,params:fe(t),cap:n?.cap||me(e)},i)})):Promise.reject({code:r,message:"Topic name must be a non-empty string"})},_connectWebMessagePort(e){if(S===w){if(N&&N!==e)try{N.onmessage=null,N.close()}catch{}N=e,e.onmessage=e=>{let t=e.data;if("string"==typeof t)try{t=JSON.parse(t)}catch{return}Me(t)};try{e.start()}catch{}I("Port connected"),_e()}},_receiveEvaluateMessage(e){try{e&&Me(JSON.parse(e))}catch(e){T("Parse error:",e)}},debug:new Proxy(k,{get:(e,t)=>e[t],set:(e,t,n)=>t in e&&(e[t]=!!n,console.log(`[LX] ${t}: ${n}`),!0)}),platform:{isHarmony:function(){return"Harmony"===f.os},isIOS:h,isAndroid:function(){return"Android"===f.os},isMacOS:g,isDesktop:function(){return g()},getOS:p},dom:{measureById(e){try{if(!e)return null;const t=document.getElementById(e);if(!t)return null;const n=t.getBoundingClientRect();let o=0;try{o=parseFloat(getComputedStyle(t).borderRadius)||0}catch{}return[n.left+window.scrollX,n.top+window.scrollY,n.width,n.height,o]}catch{return null}}},nativeComponents:{send:Be,hasHandler:Ae,flush:je,register:(e,t)=>e&&"function"==typeof t?(Se.set(e,t),()=>Se.delete(e)):()=>{},unregister(e){Se.delete(e)}},isReady:()=>J};function $e(e){return new Proxy(()=>{},{apply(t,n,o){const r=e.join("."),i=0===o.length?void 0:1===o.length?o[0]:o,s=De.stream(`host.${r}`,i,{cap:"host",timeoutMs:0}),a=s.result;return new Proxy(s,{get(e,t){if("then"===t)return a.then.bind(a);if("catch"===t)return a.catch.bind(a);const n=e[t];return"function"==typeof n?n.bind(e):n}})},get(t,n){if("then"!==n){if("__funcName"===n)return`host.${e.join(".")}`;if("__bridgeMode"===n)return"stream";if("string"==typeof n)return $e([...e,n])}}})}function Xe(e){return new Proxy(()=>{},{apply(t,n,o){const r=e.join("."),i=0===o.length?void 0:1===o.length?o[0]:o;return De.channel.open(`host.${r}`,i,{cap:"host"})},get(t,n){if("then"!==n){if("__funcName"===n)return`host.${e.join(".")}`;if("__bridgeMode"===n)return"channel";if("open"===n)return(...t)=>{const n=e.join("."),o=0===t.length?void 0:1===t.length?t[0]:t;return De.channel.open(`host.${n}`,o,{cap:"host"})};if("string"==typeof n)return Xe([...e,n])}}})}const He=new Proxy({},{get(e,t){if("string"==typeof t)return"channel"===t?new Proxy({},{get(e,t){if("string"==typeof t)return Xe([t])}}):$e([t])}});function qe(){if(window.__LX_BRIDGE_INIT_STATE)I(`Bridge already ${window.__LX_BRIDGE_INIT_STATE}, skipping duplicate init`);else{window.__LX_BRIDGE_INIT_STATE="initializing";try{I(`Method: ${S}`),function(e){if("undefined"==typeof window)return;if(window[y]=e,0===E.length)return;const t=E.splice(0,E.length);for(const n of t)try{e(n)}catch(e){C("Failed to replay queued native message:",e)}}(De._receiveEvaluateMessage),X()?G():S===w?(D(),function(){if(N)return Promise.resolve(N);if(R.promise)return R.promise;D(),R.promise=new Promise((e,t)=>{R.resolve=t=>{$(),e(t)},R.reject=e=>{$(),t(e)},R.timer=window.setTimeout(()=>{R.reject?.(new Error("MessagePort init timed out after 5000ms"))},5e3)});try{window.LingXiaProxy?.getPort("LingXiaPort")}catch(e){R.reject?.(e)}return R.promise}().catch(e=>C("Port init failed:",e))):"webkit"===S||S===b?_e():C("Unknown method"),window.LingXiaBridge=De,window.host=He,m({os:p(),send:Be}),window.__LX_BRIDGE_INIT_STATE="initialized",I("Init complete")}catch(e){throw delete window.__LX_BRIDGE_INIT_STATE,e}}}function ze(e){const t=document.createElement("div");return t.textContent=e,t.innerHTML}function Ge(e){const{failedPath:t,reason:n}=e,o=document.createElement("style");o.textContent="\n* { margin: 0; padding: 0; box-sizing: border-box; }\nbody {\n font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Text', 'Segoe UI', Roboto, sans-serif;\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 100vh;\n background: #f5f5f7;\n color: #1d1d1f;\n padding: 20px;\n -webkit-font-smoothing: antialiased;\n}\n.lx-error {\n text-align: center;\n max-width: 400px;\n}\n.lx-error-code {\n font-size: 120px;\n font-weight: 700;\n color: #d1d1d6;\n line-height: 1;\n letter-spacing: -4px;\n}\n.lx-error-title {\n font-size: 21px;\n font-weight: 600;\n margin: 16px 0 8px;\n color: #1d1d1f;\n}\n.lx-error-desc {\n font-size: 15px;\n color: #86868b;\n line-height: 1.5;\n}\n.lx-error-path {\n display: inline-block;\n margin-top: 20px;\n padding: 10px 16px;\n background: rgba(0,0,0,0.04);\n border-radius: 8px;\n font-family: 'SF Mono', ui-monospace, Menlo, Monaco, monospace;\n font-size: 13px;\n color: #1d1d1f;\n word-break: break-all;\n max-width: 100%;\n}\n@media (prefers-color-scheme: dark) {\n body { background: #000; color: #f5f5f7; }\n .lx-error-code { color: #3a3a3c; }\n .lx-error-title { color: #f5f5f7; }\n .lx-error-desc { color: #86868b; }\n .lx-error-path { background: rgba(255,255,255,0.08); color: #f5f5f7; }\n}\n",document.head.appendChild(o),document.body.innerHTML="",document.body.style.cssText="";const r=document.createElement("div");r.className="lx-error";let i='<div class="lx-error-code">404</div>';i+='<h1 class="lx-error-title">Page Not Found</h1>',i+="<p class=\"lx-error-desc\">The page you're looking for doesn't exist.</p>",t&&(i+=`<div class="lx-error-path">${ze(t)}</div>`),n&&(i+=`<p class="lx-error-desc" style="margin-top:12px">${ze(n)}</p>`),r.innerHTML=i,document.body.appendChild(r)}function We(){const e=window.__LX_RUNTIME_CONFIG;return!(!e||!e.error)}function Ue(){return window.__LX_RUNTIME_CONFIG?.error||null}const Je={handleEvent:()=>Ye()};function Ye(){if(We()){const e=Ue();e&&Ge(e)}}function Ve(){qe(),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",Je):Ye()}function Ke(e){const t=e.trim();return function(e){return 0!==e.length&&!(e.startsWith("lx://")||e.startsWith("data:")||e.startsWith("blob:")||e.startsWith("file:"))&&(e.startsWith("http://")||e.startsWith("https://"))}(t)?function(e){return`lx://proxy/${btoa(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"")}`}(t):e}const Qe="lx-action-sheet-style";let Ze=null;function et(e){const t=e,n=t?.itemList??[],o=t?.cancelText??"Cancel",r=t?.itemColor??"#007AFF",i=(Ze??Promise.resolve()).then(()=>tt(n,o,r),()=>tt(n,o,r));return Ze=i,i}function tt(e,t,n){return new Promise(o=>{let r=!1;const i="macOS"===p();!function(){if(document.getElementById(Qe))return;const e=document.createElement("style");e.id=Qe,e.textContent="\n.lx-as-backdrop {\n position: fixed; inset: 0; z-index: 99999;\n background: rgba(0,0,0,0.4);\n opacity: 0; transition: opacity 300ms ease;\n}\n.lx-as-backdrop.lx-as-visible { opacity: 1; }\n\n.lx-as-sheet {\n position: fixed; left: 0; right: 0; bottom: 0; z-index: 100000;\n transform: translateY(100%);\n transition: transform 300ms ease;\n font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Text', 'Segoe UI', Roboto, sans-serif;\n -webkit-font-smoothing: antialiased;\n}\n.lx-as-sheet.lx-as-visible { transform: translateY(0); }\n.lx-as-sheet.lx-as-desktop {\n left: 50%;\n right: auto;\n bottom: auto;\n top: 50%;\n width: min(92vw, 460px);\n transform: translate(-50%, calc(-50% + 16px));\n}\n.lx-as-sheet.lx-as-desktop.lx-as-visible { transform: translate(-50%, -50%); }\n\n.lx-as-container {\n background: #fff;\n border-radius: 16px 16px 0 0;\n overflow: hidden;\n}\n.lx-as-container.lx-as-desktop {\n border-radius: 16px;\n}\n\n.lx-as-item {\n display: block; width: 100%;\n height: 56px;\n line-height: 56px;\n padding: 0;\n border: none; background: none;\n font-size: 18px; font-weight: 400;\n text-align: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n position: relative;\n}\n.lx-as-item:active { background: rgba(0,0,0,0.08); }\n.lx-as-item + .lx-as-item::before {\n content: ''; position: absolute; top: 0; left: 0; right: 0;\n height: 1px; background: #E0E0E0;\n}\n.lx-as-separator {\n height: 8px;\n background: #F2F2F2;\n}\n.lx-as-cancel-btn { font-weight: 500; color: #000; }\n",document.head.appendChild(e)}();const s=document.createElement("div");s.className="lx-as-backdrop";const a=document.createElement("div");a.className="lx-as-sheet",i&&a.classList.add("lx-as-desktop");const l=document.createElement("div");l.className="lx-as-container",i&&l.classList.add("lx-as-desktop"),e.forEach((e,t)=>{const o=document.createElement("button");o.className="lx-as-item",o.textContent=e,o.style.color=n,o.addEventListener("click",()=>u(t)),l.appendChild(o)});const c=document.createElement("div");c.className="lx-as-separator",l.appendChild(c);const d=document.createElement("button");function u(e){r||(r=!0,s.classList.remove("lx-as-visible"),a.classList.remove("lx-as-visible"),setTimeout(()=>{s.remove(),a.remove(),o({tapIndex:e})},300))}d.className="lx-as-item lx-as-cancel-btn",d.textContent=t,d.addEventListener("click",()=>u(-1)),l.appendChild(d),a.appendChild(l),document.body.appendChild(s),document.body.appendChild(a),requestAnimationFrame(()=>{s.classList.add("lx-as-visible"),a.classList.add("lx-as-visible")}),s.addEventListener("click",()=>u(-1))})}const nt=200,ot="lx-modal-style";let rt=null;function it(e){const t=e,n=t?.title??"",o=t?.content??"",r=t?.showCancel??!0,i=t?.cancelText??"Cancel",s=t?.cancelColor,a=t?.confirmText??"OK",l=t?.confirmColor??"#007AFF",c=(rt??Promise.resolve()).then(()=>st(n,o,r,i,s,a,l),()=>st(n,o,r,i,s,a,l));return rt=c,c}function st(e,t,n,o,r,i,s){return new Promise(a=>{let l=!1;!function(){if(document.getElementById(ot))return;const e=document.createElement("style");e.id=ot,e.textContent="\n.lx-modal-backdrop {\n position: fixed; inset: 0; z-index: 99999;\n background: rgba(0,0,0,0.4);\n opacity: 0; transition: opacity 200ms ease;\n display: flex; align-items: center; justify-content: center;\n}\n.lx-modal-backdrop.lx-modal-visible { opacity: 1; }\n\n.lx-modal-dialog {\n width: min(92vw, 320px);\n background: #fff;\n border-radius: 14px;\n overflow: hidden;\n font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Text', 'Segoe UI', Roboto, sans-serif;\n -webkit-font-smoothing: antialiased;\n transform: scale(0.95); opacity: 0;\n transition: transform 200ms ease, opacity 200ms ease;\n}\n.lx-modal-backdrop.lx-modal-visible .lx-modal-dialog {\n transform: scale(1); opacity: 1;\n}\n\n.lx-modal-body {\n padding: 24px 20px 16px;\n text-align: center;\n}\n.lx-modal-title {\n margin: 0 0 8px;\n font-size: 17px;\n font-weight: 600;\n color: #000;\n line-height: 1.35;\n}\n.lx-modal-content {\n margin: 0;\n font-size: 14px;\n color: #666;\n line-height: 1.5;\n word-break: break-word;\n}\n.lx-modal-body:has(.lx-modal-title:empty) .lx-modal-content {\n font-size: 17px;\n font-weight: 600;\n color: #000;\n}\n\n.lx-modal-footer {\n display: flex;\n border-top: 1px solid #E0E0E0;\n}\n.lx-modal-btn {\n flex: 1;\n height: 44px;\n line-height: 44px;\n padding: 0;\n border: none;\n background: none;\n font-size: 17px;\n text-align: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n}\n.lx-modal-btn:active { background: rgba(0,0,0,0.06); }\n.lx-modal-btn + .lx-modal-btn {\n border-left: 1px solid #E0E0E0;\n}\n.lx-modal-btn-cancel {\n color: #666;\n font-weight: 400;\n}\n.lx-modal-btn-confirm {\n font-weight: 600;\n}\n\n@media (prefers-color-scheme: dark) {\n .lx-modal-dialog { background: #2c2c2e; }\n .lx-modal-title { color: #f5f5f7; }\n .lx-modal-content { color: #ababab; }\n .lx-modal-body:has(.lx-modal-title:empty) .lx-modal-content {\n color: #f5f5f7;\n }\n .lx-modal-footer { border-top-color: #3a3a3c; }\n .lx-modal-btn:active { background: rgba(255,255,255,0.08); }\n .lx-modal-btn + .lx-modal-btn { border-left-color: #3a3a3c; }\n .lx-modal-btn-cancel { color: #ababab; }\n}\n",document.head.appendChild(e)}();const c=document.createElement("div");c.className="lx-modal-backdrop";const d=document.createElement("div");d.className="lx-modal-dialog";const u=document.createElement("div");u.className="lx-modal-body";const m=document.createElement("div");if(m.className="lx-modal-title",m.textContent=e,u.appendChild(m),t){const e=document.createElement("p");e.className="lx-modal-content",e.textContent=t,u.appendChild(e)}d.appendChild(u);const f=document.createElement("div");if(f.className="lx-modal-footer",n){const e=document.createElement("button");e.className="lx-modal-btn lx-modal-btn-cancel",e.textContent=o,r&&(e.style.color=r),e.addEventListener("click",()=>h(!1)),f.appendChild(e)}const p=document.createElement("button");function h(e){l||(l=!0,c.classList.remove("lx-modal-visible"),setTimeout(()=>{c.remove(),a({confirm:e,cancel:!e})},nt))}p.className="lx-modal-btn lx-modal-btn-confirm",p.textContent=i,p.style.color=s,p.addEventListener("click",()=>h(!0)),f.appendChild(p),d.appendChild(f),c.appendChild(d),document.body.appendChild(c),requestAnimationFrame(()=>{c.classList.add("lx-modal-visible")})})}const at="lx-toast-style";let lt=null;function ct(e){const t=e,n=t?.title??"",o=t?.icon??"none",r=t?.duration??1500,i=t?.mask??!1,s=t?.position??"center";lt&&(lt.dismiss(),lt=null),function(){if(document.getElementById(at))return;const e=document.createElement("style");e.id=at,e.textContent="\n.lx-toast-mask {\n position: fixed; inset: 0; z-index: 99998;\n}\n.lx-toast-container {\n position: fixed; left: 0; right: 0; z-index: 99999;\n display: flex; justify-content: center;\n pointer-events: none;\n}\n.lx-toast-container.lx-toast-top { top: 0; padding-top: 80px; }\n.lx-toast-container.lx-toast-center { top: 0; bottom: 0; align-items: center; }\n.lx-toast-container.lx-toast-bottom { bottom: 0; padding-bottom: 80px; }\n\n.lx-toast-box {\n display: flex; flex-direction: column; align-items: center; gap: 10px;\n min-width: 120px; max-width: 280px;\n padding: 20px;\n background: rgba(0,0,0,0.8);\n border-radius: 12px;\n color: #fff;\n pointer-events: auto;\n transform: scale(0.8); opacity: 0;\n transition: transform 200ms ease, opacity 200ms ease;\n}\n.lx-toast-box.lx-toast-no-icon {\n min-width: auto; min-height: auto;\n padding: 12px 20px;\n}\n.lx-toast-box.lx-toast-visible {\n transform: scale(1); opacity: 1;\n}\n.lx-toast-icon {\n width: 36px; height: 36px;\n color: #fff;\n line-height: 0;\n}\n.lx-toast-title {\n font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Text', 'Segoe UI', Roboto, sans-serif;\n font-size: 16px; font-weight: 500;\n text-align: center;\n line-height: 1.4;\n word-break: break-word;\n -webkit-font-smoothing: antialiased;\n}\n",document.head.appendChild(e)}();let a=null;i&&(a=document.createElement("div"),a.className="lx-toast-mask",document.body.appendChild(a));const l=document.createElement("div");l.className="lx-toast-container","top"===s?l.classList.add("lx-toast-top"):"bottom"===s?l.classList.add("lx-toast-bottom"):l.classList.add("lx-toast-center");const c=document.createElement("div");c.className="lx-toast-box";const d="none"!==o;if(d||c.classList.add("lx-toast-no-icon"),d){const e=document.createElement("div");e.className="lx-toast-icon","success"===o?e.innerHTML='<svg width="36" height="36" viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="18" cy="18" r="17" stroke="currentColor" stroke-width="2"/><path d="M11 18l5 5 9-9" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/></svg>':"error"===o?e.innerHTML='<svg width="36" height="36" viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="18" cy="18" r="17" stroke="currentColor" stroke-width="2"/><path d="M13 13l10 10M23 13l-10 10" stroke="currentColor" stroke-width="2.5" stroke-linecap="round"/></svg>':"loading"===o&&(e.innerHTML='<svg width="36" height="36" viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M18 4a14 14 0 0 1 14 14" stroke="currentColor" stroke-width="2.5" stroke-linecap="round"><animateTransform attributeName="transform" type="rotate" from="0 18 18" to="360 18 18" dur="0.8s" repeatCount="indefinite"/></path></svg>'),c.appendChild(e)}const u=document.createElement("div");u.className="lx-toast-title",u.textContent=n,c.appendChild(u),l.appendChild(c),document.body.appendChild(l),requestAnimationFrame(()=>{c.classList.add("lx-toast-visible")});let m=!1;function f(){m||(m=!0,lt?.dismiss===f&&(lt=null),c.classList.remove("lx-toast-visible"),p&&clearTimeout(p),setTimeout(()=>{l.remove(),a?.remove()},200))}let p=null;return r>0&&(p=setTimeout(f,r)),lt={dismiss:f,timer:p},Promise.resolve()}function dt(){return lt&&(lt.dismiss(),lt=null),Promise.resolve()}return ue("ui.showActionSheet",et),ue("ui.showModal",it),ue("ui.showToast",ct),ue("ui.hideToast",dt),function(){const e=p();if("iOS"!==e&&"macOS"!==e)return;if("undefined"==typeof window||"undefined"==typeof document)return;if("undefined"==typeof HTMLImageElement)return;const t=HTMLImageElement.prototype;if(t.__lxProxyPatched)return;t.__lxProxyPatched=!0;const n=t.setAttribute;t.setAttribute=function(e,t){return"string"==typeof e&&"src"===e.toLowerCase()&&"string"==typeof t?n.call(this,e,Ke(t)):n.call(this,e,t)};const o=Object.getOwnPropertyDescriptor(t,"src");o?.set&&Object.defineProperty(t,"src",{configurable:o.configurable,enumerable:o.enumerable,get:o.get,set(e){"string"==typeof e?o.set?.call(this,Ke(e)):o.set?.call(this,e)}});const r=()=>{document.querySelectorAll("img[src]").forEach(e=>{const t=e.getAttribute("src");if(!t)return;const o=Ke(t);o!==t&&n.call(e,"src",o)})},i={handleEvent:()=>r()};"loading"===document.readyState?document.addEventListener("DOMContentLoaded",i):r()}(),Ve(),e.LingXiaBridge=De,e.boot=function(){qe(),Ye()},e.bootWhenReady=Ve,e.getErrorInfo=Ue,e.hasError=We,e.host=He,e.initBridge=qe,e.renderErrorUI=Ge,e}({});
@@ -0,0 +1 @@
1
+ var __extends=this&&this.__extends||function(){var e=function(n,t){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var t in n)Object.prototype.hasOwnProperty.call(n,t)&&(e[t]=n[t])},e(n,t)};return function(n,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function o(){this.constructor=n}e(n,t),n.prototype=null===t?Object.create(t):(o.prototype=t.prototype,new o)}}(),__awaiter=this&&this.__awaiter||function(e,n,t,o){return new(t||(t=Promise))(function(r,i){function a(e){try{s(o.next(e))}catch(e){i(e)}}function l(e){try{s(o.throw(e))}catch(e){i(e)}}function s(e){var n;e.done?r(e.value):(n=e.value,n instanceof t?n:new t(function(e){e(n)})).then(a,l)}s((o=o.apply(e,n||[])).next())})},__generator=this&&this.__generator||function(e,n){var t,o,r,i={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]},a=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return a.next=l(0),a.throw=l(1),a.return=l(2),"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function l(l){return function(s){return function(l){if(t)throw new TypeError("Generator is already executing.");for(;a&&(a=0,l[0]&&(i=0)),i;)try{if(t=1,o&&(r=2&l[0]?o.return:l[0]?o.throw||((r=o.return)&&r.call(o),0):o.next)&&!(r=r.call(o,l[1])).done)return r;switch(o=0,r&&(l=[2&l[0],r.value]),l[0]){case 0:case 1:r=l;break;case 4:return i.label++,{value:l[1],done:!1};case 5:i.label++,o=l[1],l=[0];continue;case 7:l=i.ops.pop(),i.trys.pop();continue;default:if(!(r=i.trys,(r=r.length>0&&r[r.length-1])||6!==l[0]&&2!==l[0])){i=0;continue}if(3===l[0]&&(!r||l[1]>r[0]&&l[1]<r[3])){i.label=l[1];break}if(6===l[0]&&i.label<r[1]){i.label=r[1],r=l;break}if(r&&i.label<r[2]){i.label=r[2],i.ops.push(l);break}r[2]&&i.ops.pop(),i.trys.pop();continue}l=n.call(e,i)}catch(e){l=[6,e],o=0}finally{t=r=0}if(5&l[0])throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}([l,s])}}},__spreadArray=this&&this.__spreadArray||function(e,n,t){if(t||2===arguments.length)for(var o,r=0,i=n.length;r<i;r++)!o&&r in n||(o||(o=Array.prototype.slice.call(n,0,r)),o[r]=n[r]);return e.concat(o||Array.prototype.slice.call(n))},__LX_RUNTIME_PLATFORM__="mobile",LingXiaBridgeRuntime=function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});var n="BRIDGE_TIMEOUT",t="BRIDGE_CANCELED",o="BRIDGE_HANDSHAKE_FAILED",r="BRIDGE_MALFORMED_MESSAGE",i="BRIDGE_METHOD_NOT_FOUND",a="BRIDGE_CAPABILITY_DENIED",l="BRIDGE_INTERNAL_ERROR",s="BRIDGE_OUTBOX_FULL",c="BRIDGE_STREAM_CLOSED",d=function(e){function n(n,t,o){var r=e.call(this,t)||this;return r.name="BridgeInvocationError",r.code=n,r.data=o,r}return __extends(n,e),n}(Error);function u(e){if(e instanceof d)return e;if(e&&"object"==typeof e){var n=e,t=l;("string"==typeof n.code&&""!==n.code.trim()||"number"==typeof n.code&&Number.isFinite(n.code))&&(t=n.code);var o="string"==typeof n.message&&""!==n.message.trim()?n.message:"Unknown error";return new d(t,o,"data"in n?n.data:void 0)}var r=e instanceof Error?e.message:"string"==typeof e?e:"Unknown error";return new d(l,r)}function f(e){var n,t=e.os,o=e.send;if("undefined"!=typeof window&&"undefined"!=typeof document){var r="iOS"===t;if(r||"Android"===t){var i=Symbol.for("LingXia.NativeComponentCoverageMonitor");if(!(null===(n=window[i])||void 0===n?void 0:n.installed)){var a={installed:!0,coveredById:new Map,coveredCount:0,anyCovered:!1,scheduled:!1,hasAnyVideo:!1,scrollLocked:!1,scrollY:0,htmlOverflow:"",bodyOverflow:"",bodyPosition:"",bodyTop:"",bodyWidth:""};window[i]=a,new MutationObserver(u).observe(document.documentElement,{subtree:!0,childList:!0,attributes:!0});var l={handleEvent:function(){(a.hasAnyVideo||0!==a.coveredById.size)&&u()}},s={handleEvent:function(){return u()}};window.addEventListener("scroll",l,{capture:!0,passive:!0}),window.addEventListener("resize",s),u()}}}function c(e){var n,t,o=null===(n=e.getBoundingClientRect)||void 0===n?void 0:n.call(e);if(!o)return!1;if(o.width<2||o.height<2)return!1;var r=o.left+o.width/2,i=o.top+o.height/2;if(r<0||i<0||r>=window.innerWidth||i>=window.innerHeight)return!1;var a=null===(t=document.elementFromPoint)||void 0===t?void 0:t.call(document,r,i);return!!a&&(a!==document.documentElement&&a!==document.body&&!(a===e||e.contains(a)))}function d(){a.scheduled=!1;var e=document.querySelectorAll("lx-video[id]");if(a.hasAnyVideo=e.length>0,a.hasAnyVideo||0!==a.coveredById.size||a.anyCovered){for(var n=new Set,t=0,i=Array.from(e);t<i.length;t++){var l=i[t];if(p=l.id){n.add(p);var s=c(l),d=a.coveredById.get(p);d!==s&&(!0===d&&(a.coveredCount-=1),!0===s&&(a.coveredCount+=1),a.coveredById.set(p,s),o({id:p,action:"component.coverage",covered:s}))}}for(var u=[],f=0,m=a.coveredById.entries();f<m.length;f++){var v=m[f],p=v[0];s=v[1];n.has(p)||(u.push(p),!0===s&&(a.coveredCount-=1))}for(var h=0,g=u;h<g.length;h++){p=g[h];a.coveredById.delete(p),o({id:p,action:"component.coverage",covered:!1})}var y=a.coveredCount>0;y!==a.anyCovered&&(a.anyCovered=y,r&&(y?function(){if(r&&!a.scrollLocked){var e=document.documentElement,n=document.body;e&&n&&(a.scrollLocked=!0,a.scrollY=window.scrollY||e.scrollTop||0,a.htmlOverflow=e.style.overflow||"",a.bodyOverflow=n.style.overflow||"",a.bodyPosition=n.style.position||"",a.bodyTop=n.style.top||"",a.bodyWidth=n.style.width||"",e.style.overflow="hidden",n.style.overflow="hidden",n.style.position="fixed",n.style.top="".concat(-a.scrollY,"px"),n.style.width="100%")}}():function(){if(r&&a.scrollLocked){var e=document.documentElement,n=document.body;e&&n&&(a.scrollLocked=!1,e.style.overflow=a.htmlOverflow,n.style.overflow=a.bodyOverflow,n.style.position=a.bodyPosition,n.style.top=a.bodyTop,n.style.width=a.bodyWidth,window.scrollTo(0,a.scrollY))}}()))}}function u(){a.scheduled||(a.scheduled=!0,requestAnimationFrame(d))}}var m="undefined"!=typeof window&&window.__LX_BRIDGE_CFG||{};function v(){return m.os||"unknown"}function p(){return"iOS"===m.os}function h(){return"macOS"===m.os}var g="__LingXiaRecvMessage",y=5e3,x="[LX.Bridge]",b="messageport",w="jsinterface",_={data:!1,proto:!1,all:!1},k=[];function E(e){return _.all||_[e]}function I(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];console.log.apply(console,__spreadArray([x],e,!1))}function C(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];console.warn.apply(console,__spreadArray([x],e,!1))}function T(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];console.error.apply(console,__spreadArray([x],e,!1))}function L(e){try{return JSON.stringify(e)}catch(n){return function(e,n){var t=new WeakSet;return JSON.stringify(e,function(e,n){if("object"==typeof n&&null!==n){if(t.has(n))return"[Circular]";t.add(n)}return n},n)}(e)}}function M(e){try{return"function"==typeof structuredClone?structuredClone(e):JSON.parse(JSON.stringify(e))}catch(e){return{}}}var S,A,N="iOS"===m.os||"macOS"===m.os?"webkit":"Harmony"===m.os?"messageport":"Android"===m.os?(null===(A=null===(S=window.LingXiaProxy)||void 0===S?void 0:S.supportsMessagePort)||void 0===A?void 0:A.call(S))?"messageport":"jsinterface":"unknown";"undefined"!=typeof window&&"function"!=typeof window[g]&&(window[g]=function(e){k.push(e)});var O=null,P=!1,j=null,B=null,R=null,F=200,D={listenerInstalled:!1,promise:null,resolve:null,reject:null,timer:null},X={handleEvent:function(e){var n,t,o=e;if("LingXia-port-init"===o.data){var r=null===(n=o.ports)||void 0===n?void 0:n[0];r&&(He._connectWebMessagePort(r),null===(t=D.resolve)||void 0===t||t.call(D,r))}}};function H(){D.listenerInstalled||(D.listenerInstalled=!0,window.addEventListener("message",X))}function q(){null!==D.timer&&(window.clearTimeout(D.timer),D.timer=null),D.resolve=null,D.reject=null,D.promise=null}function z(){return"webkit"===N&&(p()||h())}function G(){null!==R&&(clearTimeout(R),R=null)}function U(e){for(var n=0,t=Array.from(re.keys());n<t.length;n++){ye(t[n],{code:c,message:e})}for(var o=0,r=Array.from(ie.keys());o<r.length;o++){xe(r[o],{code:c,message:e})}!function(e){for(var n=0,t=Array.from(ae.entries());n<t.length;n++){var o=t[n],r=o[0],i=o[1];ae.delete(r),i._emitClose(c,e)}}(e)}function W(){return __awaiter(this,void 0,void 0,function(){var e,n,t,o,r,i,a,l,s;return __generator(this,function(c){switch(c.label){case 0:e=new AbortController,B=e,c.label=1;case 1:return c.trys.push([1,3,,4]),[4,fetch("/__lingxia/bridge/downstream",{method:"GET",cache:"no-store",headers:{Accept:"application/x-ndjson"},signal:e.signal})];case 2:return n=c.sent(),[3,4];case 3:if(t=c.sent(),e.signal.aborted)return[2];throw t;case 4:if(!n.ok)throw new Error("Apple downstream HTTP ".concat(n.status));if(!n.body)throw new Error("Apple downstream response body unavailable");P=!0,F=200,E("proto")&&I("Apple downstream connected"),Ce(),o=n.body.getReader(),r=new TextDecoder,i="",c.label=5;case 5:c.trys.push([5,,9,10]),c.label=6;case 6:return[4,o.read()];case 7:return a=c.sent(),l=a.value,a.done?[3,8]:(i=function(e){for(var n=e;;){var t=n.indexOf("\n");if(t<0)break;var o=n.slice(0,t).trim();if(n=n.slice(t+1),o)try{Ae(JSON.parse(o))}catch(e){C("Apple downstream parse error:",e,o)}}return n}(i+=r.decode(l,{stream:!0})),[3,6]);case 8:if(i+=r.decode(),s=i.trim())try{Ae(JSON.parse(s))}catch(e){C("Apple downstream trailing parse error:",e,s)}return[3,10];case 9:try{o.releaseLock()}catch(e){}return[7];case 10:return[2]}})})}function J(){z()&&(j||(G(),j=W().catch(function(e){(null==B?void 0:B.signal.aborted)||C("Apple downstream failed:",e)}).finally(function(){var e,n=null!==(e=null==B?void 0:B.signal.aborted)&&void 0!==e&&e;j=null,B=null;var t,o,r=P;P=!1,t="Apple downstream closed",o=r,Ie(),V=null,$=!1,K=!1,Q=0,o&&U(t),n||function(e){if(z()){G();var n=F;F=Math.min(2*F,2e3);var t="Apple downstream disconnected, retrying in ".concat(n,"ms: ").concat(e);n<=200?I(t):C(t),R=setTimeout(function(){R=null,J()},n)}}("stream closed")})))}function Y(e){var n,t,o,r=e.kind;"req"!==r&&"notify"!==r||I("postToNative: ".concat(r," ").concat(e.method)),E("proto")&&console.log("→",JSON.stringify(e,null,2));try{if("webkit"===N)return void(null===(t=null===(n=window.webkit)||void 0===n?void 0:n.messageHandlers.LingXia)||void 0===t||t.postMessage(e));var i=L(e);if(N===b&&O)return void O.postMessage(i);if(N===w&&(null===(o=window.LingXiaProxy)||void 0===o?void 0:o.postMessage))return void window.LingXiaProxy.postMessage(i);C("Transport not ready")}catch(e){T("Send error:",e)}}var V=null,$=!1,K=!1,Q=0,Z=null,ee={},ne=0;function te(){return{data:new Set,end:new Set,error:new Set,close:new Set}}function oe(e,n){var t,o=te(),r=!1,i=function(){},a=function(){},l=[],s=[],c=new Promise(function(e,n){i=e,a=n});return(t={id:e,result:c,on:function(e,n){return"data"===e&&o.data.add(n),"end"===e&&o.end.add(n),"error"===e&&o.error.add(n),this}})[Symbol.asyncIterator]=function(){return{next:function(){return l.length>0?Promise.resolve({done:!1,value:l.shift()}):r?c.then(function(e){return{done:!0,value:e}},function(e){return Promise.reject(e)}):new Promise(function(e,n){s.push({resolve:e,reject:n})})}}},t.cancel=function(){r||n()},t._emitData=function(e){if(!r){s.length>0?s.shift().resolve({done:!1,value:e}):l.push(e);for(var n=0,t=o.data;n<t.length;n++){var i=t[n];try{i(e)}catch(e){C("Stream data listener failed:",e)}}}},t._resolve=function(e){if(!r){for(r=!0,i(e);s.length>0;)s.shift().resolve({done:!0,value:e});for(var n=0,t=o.end;n<t.length;n++){var a=t[n];try{a(e)}catch(e){C("Stream end listener failed:",e)}}}},t._reject=function(e){if(!r){for(r=!0,a(e);s.length>0;)s.shift().reject(e);for(var n=0,t=o.error;n<t.length;n++){var i=t[n];try{i(e)}catch(e){C("Stream error listener failed:",e)}}}},t}var re=new Map,ie=new Map,ae=new Map,le=[],se=-1,ce={},de=new Set,ue=new WeakMap,fe=new Map;function me(e,n){fe.set(e,n)}function ve(e){if(e.startsWith("host."))return"host";var n=e.indexOf(".");return n>0?e.slice(0,n):"page"}function pe(e){if(null!=e)return e}function he(){return N===b?!!O:z()?P:"webkit"===N||N===w}function ge(){return he()&&$}function ye(e,n){var t,o=re.get(e);if(o){re.delete(e),null!==o.timerId&&clearTimeout(o.timerId);var r=u(n);if("stream"===o.mode&&o.stream)return void o.stream._reject(r);null===(t=o.reject)||void 0===t||t.call(o,r)}}function xe(e,n){var t=ie.get(e);if(t){ie.delete(e),null!==t.timerId&&clearTimeout(t.timerId);var o=u(n);t.channel._reject(o),t.reject(o)}}function be(e,n){re.has(e)?ye(e,n):ie.has(e)&&xe(e,n)}function we(e){var t=re.get(e);t&&(!Number.isFinite(t.timeoutMs)||t.timeoutMs<=0?null!==t.timerId&&(clearTimeout(t.timerId),t.timerId=null):(null!==t.timerId&&clearTimeout(t.timerId),t.timerId=setTimeout(function(){re.has(e)&&ye(e,{code:n,message:"'".concat(t.method,"' timed out")})},t.timeoutMs)))}function _e(e){re.has(e)?we(e):ie.has(e)&&function(e){var t=ie.get(e);t&&(null!==t.timerId&&clearTimeout(t.timerId),t.timerId=setTimeout(function(){xe(e,{code:n,message:"Channel '".concat(t.topic,"' timed out")})},y))}(e)}function ke(e){for(var n,t=le.length-1;t>=0;t--)if((null===(n=le[t])||void 0===n?void 0:n.reqId)===e)return le.splice(t,1),!0;return!1}function Ee(e,n){var t=e.kind,o="hello"===t||"helloAck"===t||"ready"===t;if(!ge()&&!o)return le.length>=256?(T("Outbox full"),void(n&&be(n,{code:s,message:"Bridge outbox is full"}))):void le.push({msg:e,reqId:n});n&&_e(n),Y(e)}function Ie(){null!==Z&&(clearTimeout(Z),Z=null)}function Ce(){if(!$&&he()){Ie();var e={v:2,kind:"hello",nonce:m.nonce||"",role:"view",protocolsSupported:[2]};K=!0,Y(e),Z=setTimeout(function(){if(!$)if(++Q<3)C("Handshake timeout (".concat(Q,"/").concat(3,"), retrying...")),K=!1,Ce();else{for(T("Handshake failed"),Ie(),K=!1,Q=0;le.length;){var e=le.shift();(null==e?void 0:e.reqId)&&be(e.reqId,{code:o,message:"Bridge handshake failed"})}for(var n=0,t=Array.from(ie.keys());n<t.length;n++){xe(t[n],{code:o,message:"Bridge handshake failed"})}}},1e4)}}function Te(e){return e.replace(/~1/g,"/").replace(/~0/g,"~")}function Le(e,n,t){void 0===t&&(t=!1);var o=function(e){if(""===e)return[];if(!e.startsWith("/"))throw new Error("Invalid JSON pointer: ".concat(e));return e.split("/").slice(1).map(Te)}(n);if(0===o.length)return{container:{$root:e},key:"$root"};for(var r=e,i=0;i<o.length-1;i++){var a=o[i];if(Array.isArray(r))r=r[Number(a)];else{if(!r||"object"!=typeof r)throw new Error("Invalid container at ".concat(a));var l=r;if(t&&void 0===l[a]){var s=o[i+1];l[a]=s&&/^\d+$/.test(s)?[]:{}}r=l[a]}}return{container:r,key:o[o.length-1]}}function Me(e){de.forEach(function(n){try{if(!ue.has(n))return ue.set(n,!0),void n(M(ce),{rev:se,initial:!0});n(M(ce),{rev:se,initial:e})}catch(e){C("Subscriber error:",e)}})}function Se(e){He.call("state.getSnapshot",{scope:e}).catch(function(){})}function Ae(e){var n,t;if(e&&"object"==typeof e){var o=e;if("event"===o.type&&"nativecomponent"===o.name&&o.payload){var r=o.payload,l=r.id||r.componentId;if("string"==typeof l){var s=Ne.get(l);if(s)try{s(r)}catch(e){T("NC handler error:",e)}}return}}var c=function(e){if(!e||"object"!=typeof e)return null;var n=e.v,t=e.kind;return 2!==n||"string"!=typeof t?null:e}(e);if(c)switch(c.kind){case"helloAck":return void(V=c.sessionId);case"ready":if(V&&c.sessionId!==V)return void C("sessionId mismatch");if(Ie(),$=!0,Q=0,c.hostMethods)for(var d=0,f=Object.entries(c.hostMethods);d<f.length;d++){var m=f[d],v=m[0],p=m[1];ee[v]=p}return E("proto")&&I("Handshake complete, hostMethods:",Object.keys(ee).length),void function(){if(ge())for(;le.length;){var e=le.shift();e&&(e.reqId&&_e(e.reqId),Y(e.msg))}}();case"res":var h=re.get(c.id);if(!h)return;if(re.delete(c.id),null!==h.timerId&&clearTimeout(h.timerId),c.ok){if("state.getSnapshot"===h.method&&(function(e){if(!e||"object"!=typeof e)return!1;var n=e;return!("number"!=typeof n.rev||!Number.isFinite(n.rev)||!n.state||"object"!=typeof n.state||(ce=n.state,se=n.rev,E("data")&&(console.group("[LX] snapshot(res)"),console.log("rev:",se,"state:",M(ce)),console.groupEnd()),Me(!0),0))}(c.result)||C("Invalid state.getSnapshot result")),"stream"===h.mode&&h.stream)return void h.stream._resolve(c.result);null===(n=h.resolve)||void 0===n||n.call(h,c.result)}else{var g=u(c.error);if("stream"===h.mode&&h.stream)return void h.stream._reject(g);null===(t=h.reject)||void 0===t||t.call(h,g)}return;case"event":if(re.has(c.id)){var y=re.get(c.id);return void("stream"===(null==y?void 0:y.mode)&&y.stream?(we(c.id),y.stream._emitData(c.payload)):C("Received event for non-stream request '".concat(c.id,"'")))}return;case"state.snapshot":return ce=c.state||{},se=c.rev,E("data")&&(console.group("[LX] snapshot"),console.log("rev:",se,"state:",M(ce)),console.groupEnd()),void Me(!0);case"state.patch":if(c.baseRev!==se)return C("baseRev mismatch",{have:se,want:c.baseRev}),void Se(c.scope);try{!function(e,n){for(var t=0,o=n;t<o.length;t++){var r=o[t],i="add"===r.op||"replace"===r.op,a=Le(e,r.path,i),l=a.container,s=a.key;if("$root"!==s)if(Array.isArray(l)){var c="-"===s?l.length:Number(s);if(!Number.isFinite(c)||c<0)throw new Error("Invalid index");"remove"===r.op?l.splice(c,1):"add"===r.op?l.splice(c,0,r.value):"replace"===r.op&&(l[c]=r.value)}else{if(!l||"object"!=typeof l)throw new Error("Invalid container");var d=l;"remove"===r.op?delete d[s]:d[s]=r.value}else{for(var u=0,f=Object.keys(e);u<f.length;u++)delete e[f[u]];if("remove"!==r.op){var m=r.value;m&&"object"==typeof m&&Object.assign(e,m)}}}}(ce,c.ops||[]),se=c.rev}catch(e){return T("Patch failed:",e),void Se(c.scope)}return E("data")&&(console.group("[LX] patch"),console.log("rev:",se,"ops:",c.ops),console.groupEnd()),Me(!1),void(c.ack&&Ee({v:2,kind:"state.ack",scope:c.scope,rev:c.rev}));case"ch.ack":if(!(x=ie.get(c.id)))return;if(ie.delete(c.id),null!==x.timerId&&clearTimeout(x.timerId),c.ok)x.channel._markOpen(),ae.set(c.id,x.channel),x.resolve(x.channel);else{g=u(c.error);x.channel._reject(g),x.reject(g)}return;case"ch.data":if(!(b=ae.get(c.id)))return;return void b._emitData(c.payload);case"ch.close":var x,b;if(x=ie.get(c.id))return ie.delete(c.id),void x.channel._emitClose(c.code,c.reason);if(!(b=ae.get(c.id)))return;return ae.delete(c.id),void b._emitClose(c.code,c.reason);case"req":var w=c,_=ve(w.method);if(!w.cap||w.cap!==_)return void Ee({v:2,kind:"res",id:w.id,ok:!1,error:{code:a,message:"Invalid cap for ".concat(w.method)}});var k=fe.get(w.method);return k?void Promise.resolve().then(function(){return k(w.params)}).then(function(e){Ee({v:2,kind:"res",id:w.id,ok:!0,result:e})}).catch(function(e){Ee({v:2,kind:"res",id:w.id,ok:!1,error:u(e)})}):void Ee({v:2,kind:"res",id:w.id,ok:!1,error:{code:i,message:"View handler not found: ".concat(w.method)}})}else C("Invalid V2 message:",e)}var Ne=new Map,Oe=[],Pe=!1;function je(){var e,n,t;return"undefined"!=typeof window&&!(!(null===(n=null===(e=window.webkit)||void 0===e?void 0:e.messageHandlers)||void 0===n?void 0:n.NativeComponent)&&!(null===(t=window.NativeComponentBridge)||void 0===t?void 0:t.postMessage))}function Be(e){var n,t,o;try{if(null===(t=null===(n=window.webkit)||void 0===n?void 0:n.messageHandlers)||void 0===t?void 0:t.NativeComponent)return void window.webkit.messageHandlers.NativeComponent.postMessage(e);if(null===(o=window.NativeComponentBridge)||void 0===o?void 0:o.postMessage)return void window.NativeComponentBridge.postMessage(L(e))}catch(e){T("NativeComponent send error:",e)}}function Re(){if(je()&&0!==Oe.length)for(Pe=!0;Oe.length;){var e=Oe.shift();try{Be(e)}catch(e){break}}}function Fe(e){try{if(!je())return void Oe.push(e);Pe||Re(),Be(e)}catch(e){T("NC send failed:",e)}}function De(e){return"".concat(e,"_").concat(Date.now(),"_").concat(ne++)}function Xe(e,n,t){if(n)if(n.aborted)t();else{var o={handleEvent:function(){n.removeEventListener("abort",o),t()}};n.addEventListener("abort",o)}}var He={call:function(e,n,o){return new Promise(function(i,a){var l;if(e&&"string"==typeof e){K||Ce();var s=De("c"),c=(null==o?void 0:o.cap)||ve(e),d=null!==(l=null==o?void 0:o.timeoutMs)&&void 0!==l?l:y;re.set(s,{method:e,mode:"call",resolve:i,reject:function(e){return a(e)},timeoutMs:d,timerId:null}),Ee({v:2,kind:"req",id:s,method:e,params:pe(n),cap:c},s),Xe(0,null==o?void 0:o.signal,function(){var e=ke(s);ye(s,{code:t,message:"Bridge request aborted"}),!e&&$&&Ee({v:2,kind:"cancel",id:s})})}else a({code:r,message:"Method name must be a non-empty string"})})},stream:function(e,n,o){var i;if(!e||"string"!=typeof e){var a=oe("invalid",function(){});return a._reject({code:r,message:"Method name must be a non-empty string"}),a}K||Ce();var l=De("c"),s=oe(l,function(){ke(l)?ye(l,{code:t,message:"Bridge request aborted"}):$&&Ee({v:2,kind:"cancel",id:l})}),c=(null==o?void 0:o.cap)||ve(e),d=null!==(i=null==o?void 0:o.timeoutMs)&&void 0!==i?i:y;return re.set(l,{method:e,mode:"stream",stream:s,timeoutMs:d,timerId:null}),Ee({v:2,kind:"req",id:l,method:e,params:pe(n),cap:c},l),Xe(0,null==o?void 0:o.signal,function(){return s.cancel()}),s},notify:function(e,n,t){e&&"string"==typeof e&&(K||Ce(),Ee({v:2,kind:"notify",method:e,params:pe(n),cap:(null==t?void 0:t.cap)||ve(e)}))},state:{subscribe:function(e){if("function"!=typeof e)return function(){};if(de.add(e),se>=0){ue.set(e,!0);try{e(M(ce),{rev:se,initial:!0})}catch(e){T("Callback error:",e)}}return function(){de.delete(e),ue.delete(e)}}},channel:{open:function(e,n,t){return e&&"string"==typeof e?(K||Ce(),new Promise(function(o,r){var i=De("ch"),a=function(e,n,t){var o,r=te(),i=!1,a=0,l=!1,s=[],d=[],u=((o={id:e,send:function(t){i?n(t,a++):u._reject({code:c,message:"Channel '".concat(e,"' is closed")})},on:function(e,n){return"data"===e&&r.data.add(n),"close"===e&&r.close.add(n),"error"===e&&r.error.add(n),this}})[Symbol.asyncIterator]=function(){return{next:function(){return s.length>0?Promise.resolve({done:!1,value:s.shift()}):l?Promise.resolve({done:!0,value:void 0}):new Promise(function(e,n){d.push({resolve:e,reject:n})})}}},o.close=function(e,n){i&&(i=!1,l=!0,t(e,n),u._emitClose(e,n))},o._emitData=function(e){if(i){d.length>0?d.shift().resolve({done:!1,value:e}):s.push(e);for(var n=0,t=r.data;n<t.length;n++){var o=t[n];try{o(e)}catch(e){C("Channel listener failed:",e)}}}},o._emitClose=function(e,n){for(l=!0;d.length>0;)d.shift().resolve({done:!0,value:void 0});for(var t=0,o=r.close;t<o.length;t++){var i=o[t];try{i(e,n)}catch(e){C("Channel close listener failed:",e)}}},o._reject=function(e){for(l=!0;d.length>0;)d.shift().reject(e);for(var n=0,t=r.error;n<t.length;n++){var o=t[n];try{o(e)}catch(e){C("Channel error listener failed:",e)}}},o._markOpen=function(){i=!0,l=!1},o._isOpen=function(){return i},o._nextSeq=function(){return a++},o);return u}(i,function(e,n){Ee({v:2,kind:"ch.data",id:i,seq:n,payload:e})},function(e,n){var t=ie.get(i);t&&null!==t.timerId&&clearTimeout(t.timerId),ie.delete(i),ae.delete(i),Ee({v:2,kind:"ch.close",id:i,code:e,reason:n})});ie.set(i,{topic:e,channel:a,resolve:o,reject:r,timerId:null}),Ee({v:2,kind:"ch.open",id:i,topic:e,params:pe(n),cap:(null==t?void 0:t.cap)||ve(e)},i)})):Promise.reject({code:r,message:"Topic name must be a non-empty string"})}},_connectWebMessagePort:function(e){if(N===b){if(O&&O!==e)try{O.onmessage=null,O.close()}catch(e){}O=e,e.onmessage=function(e){var n=e.data;if("string"==typeof n)try{n=JSON.parse(n)}catch(e){return}Ae(n)};try{e.start()}catch(e){}I("Port connected"),Ce()}},_receiveEvaluateMessage:function(e){try{e&&Ae(JSON.parse(e))}catch(e){T("Parse error:",e)}},debug:new Proxy(_,{get:function(e,n){return e[n]},set:function(e,n,t){return n in e&&(e[n]=!!t,console.log("[LX] ".concat(n,": ").concat(t)),!0)}}),platform:{isHarmony:function(){return"Harmony"===m.os},isIOS:p,isAndroid:function(){return"Android"===m.os},isMacOS:h,isDesktop:function(){return h()},getOS:v},dom:{measureById:function(e){try{if(!e)return null;var n=document.getElementById(e);if(!n)return null;var t=n.getBoundingClientRect(),o=0;try{o=parseFloat(getComputedStyle(n).borderRadius)||0}catch(e){}return[t.left+window.scrollX,t.top+window.scrollY,t.width,t.height,o]}catch(e){return null}}},nativeComponents:{send:Fe,hasHandler:je,flush:Re,register:function(e,n){return e&&"function"==typeof n?(Ne.set(e,n),function(){return Ne.delete(e)}):function(){}},unregister:function(e){Ne.delete(e)}},isReady:function(){return $}};function qe(e){return new Proxy(function(){},{apply:function(n,t,o){var r=e.join("."),i=0===o.length?void 0:1===o.length?o[0]:o,a=He.stream("host.".concat(r),i,{cap:"host",timeoutMs:0}),l=a.result;return new Proxy(a,{get:function(e,n){if("then"===n)return l.then.bind(l);if("catch"===n)return l.catch.bind(l);var t=e[n];return"function"==typeof t?t.bind(e):t}})},get:function(n,t){if("then"!==t){if("__funcName"===t)return"host.".concat(e.join("."));if("__bridgeMode"===t)return"stream";if("string"==typeof t)return qe(__spreadArray(__spreadArray([],e,!0),[t],!1))}}})}function ze(e){return new Proxy(function(){},{apply:function(n,t,o){var r=e.join("."),i=0===o.length?void 0:1===o.length?o[0]:o;return He.channel.open("host.".concat(r),i,{cap:"host"})},get:function(n,t){if("then"!==t){if("__funcName"===t)return"host.".concat(e.join("."));if("__bridgeMode"===t)return"channel";if("open"===t)return function(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var o=e.join("."),r=0===n.length?void 0:1===n.length?n[0]:n;return He.channel.open("host.".concat(o),r,{cap:"host"})};if("string"==typeof t)return ze(__spreadArray(__spreadArray([],e,!0),[t],!1))}}})}var Ge=new Proxy({},{get:function(e,n){if("string"==typeof n)return"channel"===n?new Proxy({},{get:function(e,n){if("string"==typeof n)return ze([n])}}):qe([n])}});function Ue(){if(window.__LX_BRIDGE_INIT_STATE)I("Bridge already ".concat(window.__LX_BRIDGE_INIT_STATE,", skipping duplicate init"));else{window.__LX_BRIDGE_INIT_STATE="initializing";try{I("Method: ".concat(N)),function(e){if("undefined"!=typeof window&&(window[g]=e,0!==k.length))for(var n=0,t=k.splice(0,k.length);n<t.length;n++){var o=t[n];try{e(o)}catch(e){C("Failed to replay queued native message:",e)}}}(He._receiveEvaluateMessage),z()?J():N===b?(H(),function(){var e,n;if(O)return Promise.resolve(O);if(D.promise)return D.promise;H(),D.promise=new Promise(function(e,n){D.resolve=function(n){q(),e(n)},D.reject=function(e){q(),n(e)},D.timer=window.setTimeout(function(){var e;null===(e=D.reject)||void 0===e||e.call(D,new Error("MessagePort init timed out after ".concat(5e3,"ms")))},5e3)});try{null===(e=window.LingXiaProxy)||void 0===e||e.getPort("LingXiaPort")}catch(e){null===(n=D.reject)||void 0===n||n.call(D,e)}return D.promise}().catch(function(e){return C("Port init failed:",e)})):"webkit"===N||N===w?Ce():C("Unknown method"),window.LingXiaBridge=He,window.host=Ge,f({os:v(),send:Fe}),window.__LX_BRIDGE_INIT_STATE="initialized",I("Init complete")}catch(e){throw delete window.__LX_BRIDGE_INIT_STATE,e}}}function We(e){var n=document.createElement("div");return n.textContent=e,n.innerHTML}function Je(e){var n=e.failedPath,t=e.reason,o=document.createElement("style");o.textContent="\n* { margin: 0; padding: 0; box-sizing: border-box; }\nbody {\n font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Text', 'Segoe UI', Roboto, sans-serif;\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 100vh;\n background: #f5f5f7;\n color: #1d1d1f;\n padding: 20px;\n -webkit-font-smoothing: antialiased;\n}\n.lx-error {\n text-align: center;\n max-width: 400px;\n}\n.lx-error-code {\n font-size: 120px;\n font-weight: 700;\n color: #d1d1d6;\n line-height: 1;\n letter-spacing: -4px;\n}\n.lx-error-title {\n font-size: 21px;\n font-weight: 600;\n margin: 16px 0 8px;\n color: #1d1d1f;\n}\n.lx-error-desc {\n font-size: 15px;\n color: #86868b;\n line-height: 1.5;\n}\n.lx-error-path {\n display: inline-block;\n margin-top: 20px;\n padding: 10px 16px;\n background: rgba(0,0,0,0.04);\n border-radius: 8px;\n font-family: 'SF Mono', ui-monospace, Menlo, Monaco, monospace;\n font-size: 13px;\n color: #1d1d1f;\n word-break: break-all;\n max-width: 100%;\n}\n@media (prefers-color-scheme: dark) {\n body { background: #000; color: #f5f5f7; }\n .lx-error-code { color: #3a3a3c; }\n .lx-error-title { color: #f5f5f7; }\n .lx-error-desc { color: #86868b; }\n .lx-error-path { background: rgba(255,255,255,0.08); color: #f5f5f7; }\n}\n",document.head.appendChild(o),document.body.innerHTML="",document.body.style.cssText="";var r=document.createElement("div");r.className="lx-error";var i='<div class="lx-error-code">404</div>';i+='<h1 class="lx-error-title">Page Not Found</h1>',i+="<p class=\"lx-error-desc\">The page you're looking for doesn't exist.</p>",n&&(i+='<div class="lx-error-path">'.concat(We(n),"</div>")),t&&(i+='<p class="lx-error-desc" style="margin-top:12px">'.concat(We(t),"</p>")),r.innerHTML=i,document.body.appendChild(r)}function Ye(){var e=window.__LX_RUNTIME_CONFIG;return!(!e||!e.error)}function Ve(){var e;return(null===(e=window.__LX_RUNTIME_CONFIG)||void 0===e?void 0:e.error)||null}var $e={handleEvent:function(){return Ke()}};function Ke(){if(Ye()){var e=Ve();e&&Je(e)}}function Qe(){Ue(),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",$e):Ke()}function Ze(e){var n=e.trim();return function(e){return 0!==e.length&&!(e.startsWith("lx://")||e.startsWith("data:")||e.startsWith("blob:")||e.startsWith("file:"))&&(e.startsWith("http://")||e.startsWith("https://"))}(n)?function(e){return"".concat("lx://proxy/").concat(btoa(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,""))}(n):e}var en="lx-action-sheet-style",nn=null;function tn(e){var n,t,o,r=e,i=null!==(n=null==r?void 0:r.itemList)&&void 0!==n?n:[],a=null!==(t=null==r?void 0:r.cancelText)&&void 0!==t?t:"Cancel",l=null!==(o=null==r?void 0:r.itemColor)&&void 0!==o?o:"#007AFF",s=(null!=nn?nn:Promise.resolve()).then(function(){return on(i,a,l)},function(){return on(i,a,l)});return nn=s,s}function on(e,n,t){return new Promise(function(o){var r=!1,i="macOS"===v();!function(){if(!document.getElementById(en)){var e=document.createElement("style");e.id=en,e.textContent="\n.lx-as-backdrop {\n position: fixed; inset: 0; z-index: 99999;\n background: rgba(0,0,0,0.4);\n opacity: 0; transition: opacity ".concat(300,"ms ease;\n}\n.lx-as-backdrop.lx-as-visible { opacity: 1; }\n\n.lx-as-sheet {\n position: fixed; left: 0; right: 0; bottom: 0; z-index: 100000;\n transform: translateY(100%);\n transition: transform ").concat(300,"ms ease;\n font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Text', 'Segoe UI', Roboto, sans-serif;\n -webkit-font-smoothing: antialiased;\n}\n.lx-as-sheet.lx-as-visible { transform: translateY(0); }\n.lx-as-sheet.lx-as-desktop {\n left: 50%;\n right: auto;\n bottom: auto;\n top: 50%;\n width: min(92vw, 460px);\n transform: translate(-50%, calc(-50% + 16px));\n}\n.lx-as-sheet.lx-as-desktop.lx-as-visible { transform: translate(-50%, -50%); }\n\n.lx-as-container {\n background: #fff;\n border-radius: 16px 16px 0 0;\n overflow: hidden;\n}\n.lx-as-container.lx-as-desktop {\n border-radius: 16px;\n}\n\n.lx-as-item {\n display: block; width: 100%;\n height: 56px;\n line-height: 56px;\n padding: 0;\n border: none; background: none;\n font-size: 18px; font-weight: 400;\n text-align: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n position: relative;\n}\n.lx-as-item:active { background: rgba(0,0,0,0.08); }\n.lx-as-item + .lx-as-item::before {\n content: ''; position: absolute; top: 0; left: 0; right: 0;\n height: 1px; background: #E0E0E0;\n}\n.lx-as-separator {\n height: 8px;\n background: #F2F2F2;\n}\n.lx-as-cancel-btn { font-weight: 500; color: #000; }\n"),document.head.appendChild(e)}}();var a=document.createElement("div");a.className="lx-as-backdrop";var l=document.createElement("div");l.className="lx-as-sheet",i&&l.classList.add("lx-as-desktop");var s=document.createElement("div");s.className="lx-as-container",i&&s.classList.add("lx-as-desktop"),e.forEach(function(e,n){var o=document.createElement("button");o.className="lx-as-item",o.textContent=e,o.style.color=t,o.addEventListener("click",function(){return u(n)}),s.appendChild(o)});var c=document.createElement("div");c.className="lx-as-separator",s.appendChild(c);var d=document.createElement("button");function u(e){r||(r=!0,a.classList.remove("lx-as-visible"),l.classList.remove("lx-as-visible"),setTimeout(function(){a.remove(),l.remove(),o({tapIndex:e})},300))}d.className="lx-as-item lx-as-cancel-btn",d.textContent=n,d.addEventListener("click",function(){return u(-1)}),s.appendChild(d),l.appendChild(s),document.body.appendChild(a),document.body.appendChild(l),requestAnimationFrame(function(){a.classList.add("lx-as-visible"),l.classList.add("lx-as-visible")}),a.addEventListener("click",function(){return u(-1)})})}var rn=200,an="lx-modal-style",ln=null;function sn(e){var n,t,o,r,i,a,l=e,s=null!==(n=null==l?void 0:l.title)&&void 0!==n?n:"",c=null!==(t=null==l?void 0:l.content)&&void 0!==t?t:"",d=null===(o=null==l?void 0:l.showCancel)||void 0===o||o,u=null!==(r=null==l?void 0:l.cancelText)&&void 0!==r?r:"Cancel",f=null==l?void 0:l.cancelColor,m=null!==(i=null==l?void 0:l.confirmText)&&void 0!==i?i:"OK",v=null!==(a=null==l?void 0:l.confirmColor)&&void 0!==a?a:"#007AFF",p=(null!=ln?ln:Promise.resolve()).then(function(){return cn(s,c,d,u,f,m,v)},function(){return cn(s,c,d,u,f,m,v)});return ln=p,p}function cn(e,n,t,o,r,i,a){return new Promise(function(l){var s=!1;!function(){if(!document.getElementById(an)){var e=document.createElement("style");e.id=an,e.textContent="\n.lx-modal-backdrop {\n position: fixed; inset: 0; z-index: 99999;\n background: rgba(0,0,0,0.4);\n opacity: 0; transition: opacity ".concat(rn,"ms ease;\n display: flex; align-items: center; justify-content: center;\n}\n.lx-modal-backdrop.lx-modal-visible { opacity: 1; }\n\n.lx-modal-dialog {\n width: min(92vw, 320px);\n background: #fff;\n border-radius: 14px;\n overflow: hidden;\n font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Text', 'Segoe UI', Roboto, sans-serif;\n -webkit-font-smoothing: antialiased;\n transform: scale(0.95); opacity: 0;\n transition: transform ").concat(rn,"ms ease, opacity ").concat(rn,"ms ease;\n}\n.lx-modal-backdrop.lx-modal-visible .lx-modal-dialog {\n transform: scale(1); opacity: 1;\n}\n\n.lx-modal-body {\n padding: 24px 20px 16px;\n text-align: center;\n}\n.lx-modal-title {\n margin: 0 0 8px;\n font-size: 17px;\n font-weight: 600;\n color: #000;\n line-height: 1.35;\n}\n.lx-modal-content {\n margin: 0;\n font-size: 14px;\n color: #666;\n line-height: 1.5;\n word-break: break-word;\n}\n.lx-modal-body:has(.lx-modal-title:empty) .lx-modal-content {\n font-size: 17px;\n font-weight: 600;\n color: #000;\n}\n\n.lx-modal-footer {\n display: flex;\n border-top: 1px solid #E0E0E0;\n}\n.lx-modal-btn {\n flex: 1;\n height: 44px;\n line-height: 44px;\n padding: 0;\n border: none;\n background: none;\n font-size: 17px;\n text-align: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n}\n.lx-modal-btn:active { background: rgba(0,0,0,0.06); }\n.lx-modal-btn + .lx-modal-btn {\n border-left: 1px solid #E0E0E0;\n}\n.lx-modal-btn-cancel {\n color: #666;\n font-weight: 400;\n}\n.lx-modal-btn-confirm {\n font-weight: 600;\n}\n\n@media (prefers-color-scheme: dark) {\n .lx-modal-dialog { background: #2c2c2e; }\n .lx-modal-title { color: #f5f5f7; }\n .lx-modal-content { color: #ababab; }\n .lx-modal-body:has(.lx-modal-title:empty) .lx-modal-content {\n color: #f5f5f7;\n }\n .lx-modal-footer { border-top-color: #3a3a3c; }\n .lx-modal-btn:active { background: rgba(255,255,255,0.08); }\n .lx-modal-btn + .lx-modal-btn { border-left-color: #3a3a3c; }\n .lx-modal-btn-cancel { color: #ababab; }\n}\n"),document.head.appendChild(e)}}();var c=document.createElement("div");c.className="lx-modal-backdrop";var d=document.createElement("div");d.className="lx-modal-dialog";var u=document.createElement("div");u.className="lx-modal-body";var f=document.createElement("div");if(f.className="lx-modal-title",f.textContent=e,u.appendChild(f),n){var m=document.createElement("p");m.className="lx-modal-content",m.textContent=n,u.appendChild(m)}d.appendChild(u);var v=document.createElement("div");if(v.className="lx-modal-footer",t){var p=document.createElement("button");p.className="lx-modal-btn lx-modal-btn-cancel",p.textContent=o,r&&(p.style.color=r),p.addEventListener("click",function(){return g(!1)}),v.appendChild(p)}var h=document.createElement("button");function g(e){s||(s=!0,c.classList.remove("lx-modal-visible"),setTimeout(function(){c.remove(),l({confirm:e,cancel:!e})},rn))}h.className="lx-modal-btn lx-modal-btn-confirm",h.textContent=i,h.style.color=a,h.addEventListener("click",function(){return g(!0)}),v.appendChild(h),d.appendChild(v),c.appendChild(d),document.body.appendChild(c),requestAnimationFrame(function(){c.classList.add("lx-modal-visible")})})}var dn="lx-toast-style",un=null;function fn(e){var n,t,o,r,i,a=e,l=null!==(n=null==a?void 0:a.title)&&void 0!==n?n:"",s=null!==(t=null==a?void 0:a.icon)&&void 0!==t?t:"none",c=null!==(o=null==a?void 0:a.duration)&&void 0!==o?o:1500,d=null!==(r=null==a?void 0:a.mask)&&void 0!==r&&r,u=null!==(i=null==a?void 0:a.position)&&void 0!==i?i:"center";un&&(un.dismiss(),un=null),function(){if(!document.getElementById(dn)){var e=document.createElement("style");e.id=dn,e.textContent="\n.lx-toast-mask {\n position: fixed; inset: 0; z-index: 99998;\n}\n.lx-toast-container {\n position: fixed; left: 0; right: 0; z-index: 99999;\n display: flex; justify-content: center;\n pointer-events: none;\n}\n.lx-toast-container.lx-toast-top { top: 0; padding-top: 80px; }\n.lx-toast-container.lx-toast-center { top: 0; bottom: 0; align-items: center; }\n.lx-toast-container.lx-toast-bottom { bottom: 0; padding-bottom: 80px; }\n\n.lx-toast-box {\n display: flex; flex-direction: column; align-items: center; gap: 10px;\n min-width: 120px; max-width: 280px;\n padding: 20px;\n background: rgba(0,0,0,0.8);\n border-radius: 12px;\n color: #fff;\n pointer-events: auto;\n transform: scale(0.8); opacity: 0;\n transition: transform ".concat(200,"ms ease, opacity ").concat(200,"ms ease;\n}\n.lx-toast-box.lx-toast-no-icon {\n min-width: auto; min-height: auto;\n padding: 12px 20px;\n}\n.lx-toast-box.lx-toast-visible {\n transform: scale(1); opacity: 1;\n}\n.lx-toast-icon {\n width: 36px; height: 36px;\n color: #fff;\n line-height: 0;\n}\n.lx-toast-title {\n font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Text', 'Segoe UI', Roboto, sans-serif;\n font-size: 16px; font-weight: 500;\n text-align: center;\n line-height: 1.4;\n word-break: break-word;\n -webkit-font-smoothing: antialiased;\n}\n"),document.head.appendChild(e)}}();var f=null;d&&((f=document.createElement("div")).className="lx-toast-mask",document.body.appendChild(f));var m=document.createElement("div");m.className="lx-toast-container","top"===u?m.classList.add("lx-toast-top"):"bottom"===u?m.classList.add("lx-toast-bottom"):m.classList.add("lx-toast-center");var v=document.createElement("div");v.className="lx-toast-box";var p="none"!==s;if(p||v.classList.add("lx-toast-no-icon"),p){var h=document.createElement("div");h.className="lx-toast-icon","success"===s?h.innerHTML='<svg width="36" height="36" viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="18" cy="18" r="17" stroke="currentColor" stroke-width="2"/><path d="M11 18l5 5 9-9" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/></svg>':"error"===s?h.innerHTML='<svg width="36" height="36" viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="18" cy="18" r="17" stroke="currentColor" stroke-width="2"/><path d="M13 13l10 10M23 13l-10 10" stroke="currentColor" stroke-width="2.5" stroke-linecap="round"/></svg>':"loading"===s&&(h.innerHTML='<svg width="36" height="36" viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M18 4a14 14 0 0 1 14 14" stroke="currentColor" stroke-width="2.5" stroke-linecap="round"><animateTransform attributeName="transform" type="rotate" from="0 18 18" to="360 18 18" dur="0.8s" repeatCount="indefinite"/></path></svg>'),v.appendChild(h)}var g=document.createElement("div");g.className="lx-toast-title",g.textContent=l,v.appendChild(g),m.appendChild(v),document.body.appendChild(m),requestAnimationFrame(function(){v.classList.add("lx-toast-visible")});var y=!1;function x(){y||(y=!0,(null==un?void 0:un.dismiss)===x&&(un=null),v.classList.remove("lx-toast-visible"),b&&clearTimeout(b),setTimeout(function(){m.remove(),null==f||f.remove()},200))}var b=null;return c>0&&(b=setTimeout(x,c)),un={dismiss:x,timer:b},Promise.resolve()}function mn(){return un&&(un.dismiss(),un=null),Promise.resolve()}return"all"!==__LX_RUNTIME_PLATFORM__&&"desktop"!==__LX_RUNTIME_PLATFORM__||(me("ui.showActionSheet",tn),me("ui.showModal",sn),me("ui.showToast",fn),me("ui.hideToast",mn)),function(){var e=v();if(("iOS"===e||"macOS"===e)&&"undefined"!=typeof window&&"undefined"!=typeof document&&"undefined"!=typeof HTMLImageElement){var n=HTMLImageElement.prototype;if(!n.__lxProxyPatched){n.__lxProxyPatched=!0;var t=n.setAttribute;n.setAttribute=function(e,n){return"string"==typeof e&&"src"===e.toLowerCase()&&"string"==typeof n?t.call(this,e,Ze(n)):t.call(this,e,n)};var o=Object.getOwnPropertyDescriptor(n,"src");(null==o?void 0:o.set)&&Object.defineProperty(n,"src",{configurable:o.configurable,enumerable:o.enumerable,get:o.get,set:function(e){var n,t;"string"==typeof e?null===(n=o.set)||void 0===n||n.call(this,Ze(e)):null===(t=o.set)||void 0===t||t.call(this,e)}});var r=function(){document.querySelectorAll("img[src]").forEach(function(e){var n=e.getAttribute("src");if(n){var o=Ze(n);o!==n&&t.call(e,"src",o)}})},i={handleEvent:function(){return r()}};"loading"===document.readyState?document.addEventListener("DOMContentLoaded",i):r()}}}(),Qe(),e.LingXiaBridge=He,e.boot=function(){Ue(),Ke()},e.bootWhenReady=Qe,e.getErrorInfo=Ve,e.hasError=Ye,e.host=Ge,e.initBridge=Ue,e.renderErrorUI=Je,e}({});
@@ -0,0 +1,34 @@
1
+ import { initBridge } from './bridge';
2
+ import { hasError, getErrorInfo, renderErrorUI } from './error';
3
+ const domReadyListener = {
4
+ handleEvent: () => maybeRenderErrorUI(),
5
+ };
6
+ function maybeRenderErrorUI() {
7
+ if (hasError()) {
8
+ const errorInfo = getErrorInfo();
9
+ if (errorInfo) {
10
+ renderErrorUI(errorInfo);
11
+ }
12
+ }
13
+ }
14
+ /**
15
+ * Immediately initialize bridge and render error UI if present.
16
+ * Use this when DOM is already ready.
17
+ */
18
+ export function boot() {
19
+ initBridge();
20
+ maybeRenderErrorUI();
21
+ }
22
+ /**
23
+ * Initialize bridge immediately, but wait for DOM to render error UI.
24
+ * Use this at page load time.
25
+ */
26
+ export function bootWhenReady() {
27
+ initBridge();
28
+ if (document.readyState === 'loading') {
29
+ document.addEventListener('DOMContentLoaded', domReadyListener);
30
+ }
31
+ else {
32
+ maybeRenderErrorUI();
33
+ }
34
+ }