@lingxia/bridge 0.10.0 → 0.12.0
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.
- package/dist/bridge-runtime.es2020.js +1 -1
- package/dist/bridge-runtime.es5.js +1 -1
- package/dist/es2020/bridge.js +200 -20
- package/dist/es2020/index.js +1 -0
- package/dist/es2020/runtime-env.js +81 -0
- package/dist/es2020/ui/action-sheet.js +2 -2
- package/dist/es2020/ui/toast.js +27 -6
- package/dist/es5/bridge.js +205 -25
- package/dist/es5/index.js +1 -0
- package/dist/es5/runtime-env.js +131 -0
- package/dist/es5/ui/action-sheet.js +2 -2
- package/dist/es5/ui/toast.js +27 -6
- package/dist/index.d.ts +1 -0
- package/dist/runtime-env.d.ts +6 -0
- package/dist/types.d.ts +13 -0
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
const __LX_RUNTIME_PLATFORM__="all";var __LingXiaBridgeBundle=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(e){const t=u(e);return{code:String(t.code||a),message:"string"==typeof t.message&&""!==t.message.trim()?t.message:"Unknown error",...void 0===t.data?{}:{data:t.data}}}function f({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 p="undefined"!=typeof window&&window.__LX_BRIDGE_CFG||{};function h(){return p.os||"unknown"}function g(){return"iOS"===p.os}function v(){return"macOS"===p.os}function y(){return"Windows"===p.os}const x="__LingXiaRecvMessage",w=5e3,b="[LX.Bridge]",k="messageport",E="jsinterface",I="webmessage",C=p.appleDownstreamURL,_={data:!1,proto:!1,all:!1},T=[];function L(e){return _.all||_[e]}function S(...e){console.log(b,...e)}function M(...e){console.warn(b,...e)}function N(...e){console.error(b,...e)}function A(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 B(e){try{return"function"==typeof structuredClone?structuredClone(e):JSON.parse(JSON.stringify(e))}catch{return{}}}const O="iOS"===p.os||"macOS"===p.os?"webkit":"Harmony"===p.os?"messageport":"Windows"===p.os?"webmessage":"Android"===p.os?window.LingXiaProxy?.supportsMessagePort?.()?"messageport":"jsinterface":"unknown";"undefined"!=typeof window&&"function"!=typeof window[x]&&(window[x]=e=>{T.push(e)});let j=null,P=!1,R=null,F=null,D=null,X=200;const $={listenerInstalled:!1,promise:null,resolve:null,reject:null,timer:null},H={handleEvent:e=>{const t=e;if("LingXia-port-init"!==t.data)return;const n=t.ports?.[0];n&&(Ge._connectWebMessagePort(n),$.resolve?.(n))}};function q(){$.listenerInstalled||($.listenerInstalled=!0,window.addEventListener("message",H))}function z(){null!==$.timer&&(window.clearTimeout($.timer),$.timer=null),$.resolve=null,$.reject=null,$.promise=null}function G(){return"webkit"===O&&(g()||v())}function U(){null!==D&&(clearTimeout(D),D=null)}function W(e){for(const t of Array.from(se.keys()))we(t,{code:c,message:e});for(const t of Array.from(ae.keys()))be(t,{code:c,message:e});!function(e){for(const[t,n]of Array.from(le.entries()))le.delete(t),n._emitClose(c,e)}(e)}function J(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{Oe(JSON.parse(n))}catch(e){M("Apple downstream parse error:",e,n)}}return t}function Y(){G()&&(R||(U(),R=async function(){if(!C)throw new Error("Apple downstream URL is not configured");const e=new AbortController;F=e;const t=await fetch(C,{method:"GET",cache:"no-store",headers:{Accept:"application/x-ndjson"},signal:e.signal});if(!t.ok)throw new Error(`Apple downstream HTTP ${t.status}`);if(!t.body)throw new Error("Apple downstream response body unavailable");P=!0,X=200,L("proto")&&S("Apple downstream connected"),Le();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=J(r)}r+=o.decode();const e=r.trim();if(e)try{Oe(JSON.parse(e))}catch(t){M("Apple downstream trailing parse error:",t,e)}}catch(t){if(e.signal.aborted)return;throw t}finally{try{n.releaseLock()}catch{}}}().catch(e=>{F?.signal.aborted||M("Apple downstream failed:",e)}).finally(()=>{const e=F?.signal.aborted??!1;R=null,F=null;const t=P;var n,o;P=!1,n="Apple downstream closed",o=t,Te(),K=null,Q=!1,Z=!1,ee=0,o&&W(n),e||function(e){if(!G())return;U();const t=X;X=Math.min(2*X,2e3);const n=`Apple downstream disconnected, retrying in ${t}ms: ${e}`;t<=200?S(n):M(n),D=setTimeout(()=>{D=null,Y()},t)}("stream closed")})))}function V(e){const t=e.kind;"req"!==t&&"notify"!==t||S(`postToNative: ${t} ${e.method}`),L("proto")&&console.log("→",JSON.stringify(e,null,2));try{if("webkit"===O)return void window.webkit?.messageHandlers.LingXia?.postMessage(e);const t=A(e);if(O===k&&j)return void j.postMessage(t);if((O===E||O===I)&&window.LingXiaProxy?.postMessage)return void window.LingXiaProxy.postMessage(t);M("Transport not ready")}catch(e){N("Send error:",e)}}let K=null,Q=!1,Z=!1,ee=0,te=null;const ne={};let oe=0;function re(){return{data:new Set,end:new Set,error:new Set,close:new Set}}function ie(e,t){const n=re();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){M("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){M("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){M("Stream error listener failed:",e)}}}}}const se=new Map,ae=new Map,le=new Map,ce=[];let de=-1,ue={};const me=new Set,fe=new WeakMap,pe=new Map;function he(e,t){pe.set(e,t)}function ge(e){if(e.startsWith("host."))return"host";const t=e.indexOf(".");return t>0?e.slice(0,t):"page"}function ve(e){if(null!=e)return e}function ye(){return O===k?!!j:G()?P:"webkit"===O||O===E||O===I}function xe(){return ye()&&Q}function we(e,t){const n=se.get(e);if(n){se.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 be(e,t){const n=ae.get(e);if(!n)return;ae.delete(e),null!==n.timerId&&clearTimeout(n.timerId);const o=u(t);n.channel._reject(o),n.reject(o)}function ke(e,t){se.has(e)?we(e,t):ae.has(e)&&be(e,t)}function Ee(e){const n=se.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(()=>{se.has(e)&&we(e,{code:t,message:`'${n.method}' timed out`})},n.timeoutMs)))}function Ie(e){se.has(e)?Ee(e):ae.has(e)&&function(e){const n=ae.get(e);n&&(null!==n.timerId&&clearTimeout(n.timerId),n.timerId=setTimeout(()=>{be(e,{code:t,message:`Channel '${n.topic}' timed out`})},w))}(e)}function Ce(e){for(let t=ce.length-1;t>=0;t--)if(ce[t]?.reqId===e)return ce.splice(t,1),!0;return!1}function _e(e,t){const n=e.kind,o="hello"===n||"helloAck"===n||"ready"===n;if(!xe()&&!o)return ce.length>=256?(N("Outbox full"),void(t&&ke(t,{code:l,message:"Bridge outbox is full"}))):void ce.push({msg:e,reqId:t});t&&Ie(t),V(e)}function Te(){null!==te&&(clearTimeout(te),te=null)}function Le(){if(Q)return;if(!ye())return;Te();const e={v:2,kind:"hello",nonce:p.nonce||"",role:"view",protocolsSupported:[2]};Z=!0,V(e),te=setTimeout(()=>{if(!Q)if(ee++,ee<3)M(`Handshake timeout (${ee}/3), retrying...`),Z=!1,Le();else{for(N("Handshake failed"),Te(),Z=!1,ee=0;ce.length;){const e=ce.shift();e?.reqId&&ke(e.reqId,{code:o,message:"Bridge handshake failed"})}for(const e of Array.from(ae.keys()))be(e,{code:o,message:"Bridge handshake failed"})}},1e4)}function Se(e){return e.replace(/~1/g,"/").replace(/~0/g,"~")}function Me(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(Se)}(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 Ne(e){me.forEach(t=>{try{if(!fe.has(t))return fe.set(t,!0),void t(B(ue),{rev:de,initial:!0});t(B(ue),{rev:de,initial:e})}catch(e){M("Subscriber error:",e)}})}function Ae(e){if("function"!=typeof e)return()=>{};if(me.add(e),de>=0){fe.set(e,!0);try{e(B(ue),{rev:de,initial:!0})}catch(e){N("Callback error:",e)}}return()=>{me.delete(e),fe.delete(e)}}function Be(e){ze.call("state.getSnapshot",{scope:e}).catch(()=>{})}function Oe(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=je.get(n);if(t)try{t(e)}catch(e){N("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(K=t.sessionId);case"ready":if(K&&t.sessionId!==K)return void M("sessionId mismatch");if(Te(),Q=!0,ee=0,t.hostMethods)for(const[e,n]of Object.entries(t.hostMethods))ne[e]=n;return L("proto")&&S("Handshake complete, hostMethods:",Object.keys(ne).length),void function(){if(xe())for(;ce.length;){const e=ce.shift();e&&(e.reqId&&Ie(e.reqId),V(e.msg))}}();case"res":{const e=se.get(t.id);if(!e)return;if(se.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||(ue=t.state,de=t.rev,L("data")&&(console.group("[LX] snapshot(res)"),console.log("rev:",de,"state:",B(ue)),console.groupEnd()),Ne(!0),0))}(t.result)||M("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(se.has(t.id)){const e=se.get(t.id);return void("stream"===e?.mode&&e.stream?(Ee(t.id),e.stream._emitData(t.payload)):M(`Received event for non-stream request '${t.id}'`))}return;case"state.snapshot":return ue=t.state||{},de=t.rev,L("data")&&(console.group("[LX] snapshot"),console.log("rev:",de,"state:",B(ue)),console.groupEnd()),void Ne(!0);case"state.patch":if(t.baseRev!==de)return M("baseRev mismatch",{have:de,want:t.baseRev}),void Be(t.scope);try{!function(e,t){for(const n of t){const t="add"===n.op||"replace"===n.op,{container:o,key:r}=Me(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}}(ue,t.ops||[]),de=t.rev}catch(e){return N("Patch failed:",e),void Be(t.scope)}return L("data")&&(console.group("[LX] patch"),console.log("rev:",de,"ops:",t.ops),console.groupEnd()),Ne(!1),void(t.ack&&_e({v:2,kind:"state.ack",scope:t.scope,rev:t.rev}));case"ch.ack":{const e=ae.get(t.id);if(!e)return;if(ae.delete(t.id),null!==e.timerId&&clearTimeout(e.timerId),t.ok)e.channel._markOpen(),le.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=le.get(t.id);if(!e)return;return void e._emitData(t.payload)}case"ch.close":{const e=ae.get(t.id);if(e)return ae.delete(t.id),void e.channel._emitClose(t.code,t.reason);const n=le.get(t.id);if(!n)return;return le.delete(t.id),void n._emitClose(t.code,t.reason)}case"req":{const e=t,n=ge(e.method);if(!e.cap||e.cap!==n)return void _e({v:2,kind:"res",id:e.id,ok:!1,error:{code:s,message:`Invalid cap for ${e.method}`}});const o=pe.get(e.method);return o?void Promise.resolve().then(()=>o(e.params)).then(t=>{_e({v:2,kind:"res",id:e.id,ok:!0,result:t})}).catch(t=>{_e({v:2,kind:"res",id:e.id,ok:!1,error:u(t)})}):void _e({v:2,kind:"res",id:e.id,ok:!1,error:{code:i,message:`View handler not found: ${e.method}`}})}}else M("Invalid V2 message:",e)}const je=new Map,Pe=[];let Re=!1;function Fe(){return"undefined"!=typeof window&&!(!window.webkit?.messageHandlers?.NativeComponent&&!window.NativeComponentBridge?.postMessage)}function De(e){try{if(window.webkit?.messageHandlers?.NativeComponent)return void window.webkit.messageHandlers.NativeComponent.postMessage(e);if(window.NativeComponentBridge?.postMessage)return void window.NativeComponentBridge.postMessage(A(e))}catch(e){N("NativeComponent send error:",e)}}function Xe(){if(Fe()&&0!==Pe.length)for(Re=!0;Pe.length;){const e=Pe.shift();try{De(e)}catch{break}}}function $e(e){try{if(!Fe())return void Pe.push(e);Re||Xe(),De(e)}catch(e){N("NC send failed:",e)}}function He(e){return`${e}_${Date.now()}_${oe++}`}function qe(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 ze={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"});Z||Le();const a=He("c"),l=o?.cap||ge(e),c=o?.timeoutMs??w;se.set(a,{method:e,mode:"call",resolve:i,reject:e=>s(e),timeoutMs:c,timerId:null}),_e({v:2,kind:"req",id:a,method:e,params:ve(t),cap:l},a),qe(0,o?.signal,()=>{const e=Ce(a);we(a,{code:n,message:"Bridge request aborted"}),!e&&Q&&_e({v:2,kind:"cancel",id:a})})}),stream(e,t,o){if(!e||"string"!=typeof e){const e=ie("invalid",()=>{});return e._reject({code:r,message:"Method name must be a non-empty string"}),e}Z||Le();const i=He("c"),s=ie(i,()=>{Ce(i)?we(i,{code:n,message:"Bridge request aborted"}):Q&&_e({v:2,kind:"cancel",id:i})}),a=o?.cap||ge(e),l=o?.timeoutMs??w;return se.set(i,{method:e,mode:"stream",stream:s,timeoutMs:l,timerId:null}),_e({v:2,kind:"req",id:i,method:e,params:ve(t),cap:a},i),qe(0,o?.signal,()=>s.cancel()),s},notify(e,t,n){e&&"string"==typeof e&&(Z||Le(),_e({v:2,kind:"notify",method:e,params:ve(t),cap:n?.cap||ge(e)}))},state:{subscribe:Ae},channel:{open:(e,t,n)=>e&&"string"==typeof e?(Z||Le(),new Promise((o,r)=>{const i=He("ch"),s=function(e,t,n){const o=re();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){if("data"===e&&(o.data.add(t),a.length>0)){const e=a.splice(0);for(const n of e)try{t(n)}catch(e){M("Channel listener failed:",e)}}return"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){M("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){M("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){M("Channel error listener failed:",e)}},_markOpen(){r=!0,s=!1},_isOpen:()=>r,_nextSeq:()=>i++};return d}(i,(e,t)=>{_e({v:2,kind:"ch.data",id:i,seq:t,payload:e})},(e,t)=>{const n=ae.get(i);n&&null!==n.timerId&&clearTimeout(n.timerId),ae.delete(i),le.delete(i),_e({v:2,kind:"ch.close",id:i,code:e,reason:t})});ae.set(i,{topic:e,channel:s,resolve:o,reject:r,timerId:null}),_e({v:2,kind:"ch.open",id:i,topic:e,params:ve(t),cap:n?.cap||ge(e)},i)})):Promise.reject({code:r,message:"Topic name must be a non-empty string"})}},Ge={invoke:(e,t,n)=>ze.call(Ue(e),t,We(n)).then(e=>e).catch(e=>Promise.reject(m(e))),notify(e,t,n){ze.notify(Ue(e),t,We(n))},stream:(e,t,n)=>Je(ze.stream(Ue(e),t,We(n))),channel:(e,t,n)=>ze.channel.open(Ue(e),t,We(n)).then(e=>function(e){const t=new Set,n=new Set;return e.on("data",e=>{for(const n of t)n(e)}),e.on("close",(e,t)=>{const o={code:e,reason:t};for(const e of n)e(o)}),{send(t){e.send(t)},onMessage:e=>(t.add(e),()=>{t.delete(e)}),onClose:e=>(n.add(e),()=>{n.delete(e)}),close(t,n){e.close(t,n)}}}(e)).catch(e=>Promise.reject(m(e))),raw:ze,state:{subscribe:Ae},_connectWebMessagePort(e){if(O===k){if(j&&j!==e)try{j.onmessage=null,j.close()}catch{}j=e,e.onmessage=e=>{let t=e.data;if("string"==typeof t)try{t=JSON.parse(t)}catch{return}Oe(t)};try{e.start()}catch{}S("Port connected"),Le()}},_receiveEvaluateMessage(e){try{e&&Oe(JSON.parse(e))}catch(e){N("Parse error:",e)}},debug:function(e){const t={};return Object.keys(e).forEach(n=>{Object.defineProperty(t,n,{enumerable:!0,configurable:!1,get:()=>e[n],set(t){e[n]=!!t,console.log(`[LX] ${n}: ${t}`)}})}),t}(_),platform:{isHarmony:function(){return"Harmony"===p.os},isIOS:g,isAndroid:function(){return"Android"===p.os},isMacOS:v,isWindows:y,isDesktop:function(){return v()||y()},getOS:h},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:$e,hasHandler:Fe,flush:Xe,register:(e,t)=>e&&"function"==typeof t?(je.set(e,t),()=>je.delete(e)):()=>{},unregister(e){je.delete(e)}},isReady:()=>Q};function Ue(e){return e.startsWith("host.")?e:`host.${e}`}function We(e){return{...e||{},cap:e?.cap||"host"}}function Je(e){const t=new Set,n=new Set;return e.on("data",e=>{for(const n of t)n(e)}),e.on("error",e=>{const t=m(e);for(const e of n)e(t)}),{onEvent:e=>(t.add(e),()=>{t.delete(e)}),onError:e=>(n.add(e),()=>{n.delete(e)}),result:e.result.catch(e=>Promise.reject(m(e))),cancel(){e.cancel()}}}function Ye(){if(window.__LX_BRIDGE_INIT_STATE)S(`Bridge already ${window.__LX_BRIDGE_INIT_STATE}, skipping duplicate init`);else{window.__LX_BRIDGE_INIT_STATE="initializing";try{S(`Method: ${O}`),function(e){if("undefined"==typeof window)return;if(window[x]=e,0===T.length)return;const t=T.splice(0,T.length);for(const n of t)try{e(n)}catch(e){M("Failed to replay queued native message:",e)}}(Ge._receiveEvaluateMessage),G()?Y():O===k?(q(),function(){if(j)return Promise.resolve(j);if($.promise)return $.promise;q(),$.promise=new Promise((e,t)=>{$.resolve=t=>{z(),e(t)},$.reject=e=>{z(),t(e)},$.timer=window.setTimeout(()=>{$.reject?.(new Error("MessagePort init timed out after 5000ms"))},5e3)});try{window.LingXiaProxy?.getPort("LingXiaPort")}catch(e){$.reject?.(e)}return $.promise}().catch(e=>M("Port init failed:",e))):"webkit"===O||O===E||O===I?Le():M("Unknown method"),window.LingXiaBridge=Ge,f({os:h(),send:$e}),window.__LX_BRIDGE_INIT_STATE="initialized",S("Init complete")}catch(e){throw delete window.__LX_BRIDGE_INIT_STATE,e}}}function Ve(e){const t=document.createElement("div");return t.textContent=e,t.innerHTML}function Ke(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">${Ve(t)}</div>`),n&&(i+=`<p class="lx-error-desc" style="margin-top:12px">${Ve(n)}</p>`),r.innerHTML=i,document.body.appendChild(r)}function Qe(){const e=window.__LX_RUNTIME_CONFIG;return!(!e||!e.error)}function Ze(){return window.__LX_RUNTIME_CONFIG?.error||null}const et={handleEvent:()=>tt()};function tt(){if(Qe()){const e=Ze();e&&Ke(e)}}function nt(){Ye(),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",et):tt()}const ot="lx-action-sheet-style";let rt=null;function it(e){const t=e,n=t?.itemList??[],o=t?.cancelText??"Cancel",r=t?.itemColor??"#007AFF",i=(rt??Promise.resolve()).then(()=>st(n,o,r),()=>st(n,o,r));return rt=i,i}function st(e,t,n){return new Promise(o=>{let r=!1;const i="macOS"===h();!function(){if(document.getElementById(ot))return;const e=document.createElement("style");e.id=ot,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 at=200,lt="lx-modal-style";let ct=null;function dt(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=(ct??Promise.resolve()).then(()=>ut(n,o,r,i,s,a,l),()=>ut(n,o,r,i,s,a,l));return ct=c,c}function ut(e,t,n,o,r,i,s){return new Promise(a=>{let l=!1;!function(){if(document.getElementById(lt))return;const e=document.createElement("style");e.id=lt,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})},at))}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 mt="lx-toast-style";let ft=null;function pt(e){const t=e,n=t?.title??"",o=t?.icon??"none",r=t?.duration??1500,i=t?.mask??!1,s=t?.position??"center";ft&&(ft.dismiss(),ft=null),function(){if(document.getElementById(mt))return;const e=document.createElement("style");e.id=mt,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,ft?.dismiss===f&&(ft=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)),ft={dismiss:f,timer:p},Promise.resolve()}function ht(){return ft&&(ft.dismiss(),ft=null),Promise.resolve()}return he("ui.showActionSheet",it),he("ui.showModal",dt),he("ui.showToast",pt),he("ui.hideToast",ht),nt(),e.LingXiaBridge=Ge,e.boot=function(){Ye(),tt()},e.bootWhenReady=nt,e.channel=function(e,t,n){return Ge.channel(e,t,n)},e.getErrorInfo=Ze,e.hasError=Qe,e.initBridge=Ye,e.invoke=function(e,t,n){return Ge.invoke(e,t,n)},e.isNativeError=function(e,t){if(!e||"object"!=typeof e)return!1;const n=e;return"string"==typeof n.code&&""!==n.code.trim()&&("string"==typeof n.message&&(void 0===t||n.code===t))},e.notify=function(e,t,n){ze.notify(Ue(e),t,We(n))},e.renderErrorUI=Ke,e.stream=function(e,t,n){return Je(ze.stream(Ue(e),t,We(n)))},e}({});
|
|
1
|
+
const __LX_RUNTIME_PLATFORM__="all";var __LingXiaBridgeBundle=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(e){const t=u(e);return{code:String(t.code||a),message:"string"==typeof t.message&&""!==t.message.trim()?t.message:"Unknown error",...void 0===t.data?{}:{data:t.data}}}function f({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 p="undefined"!=typeof window&&window.__LX_BRIDGE_CFG||{},h={value:p.displayLanguage?.trim()||"en-US",listeners:new Set};function g(){return"undefined"==typeof window?h:(window.__lxDisplayLanguage||(window.__lxDisplayLanguage={value:p.displayLanguage?.trim()||"en-US",listeners:new Set}),window.__lxDisplayLanguage)}function v(){"undefined"!=typeof document&&document.documentElement&&(document.documentElement.lang=g().value)}function y(){return p.os||"unknown"}function w(){return"iOS"===p.os}function x(){return"macOS"===p.os}function b(){return"Windows"===p.os}function k(){return x()||b()}v(),"undefined"==typeof window||window.__lingxiaApplyDisplayLanguage||Object.defineProperty(window,"__lingxiaApplyDisplayLanguage",{configurable:!1,enumerable:!1,value:function(e){const t="string"==typeof e?e.trim():"",n=g();if(t&&t!==n.value){n.value=t,v();for(const e of[...n.listeners])e()}}});const E="__LingXiaRecvMessage",I=5e3,_="[LX.Bridge]",C="messageport",L="jsinterface",T="webmessage",S=p.appleDownstreamURL,M={data:!1,proto:!1,all:!1},N=[];function A(e){return M.all||M[e]}function B(...e){(!0===p.dev||M.all||M.proto||M.data)&&console.log(_,...e)}function j(...e){console.warn(_,...e)}function O(...e){console.error(_,...e)}function P(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 D(e){try{return"function"==typeof structuredClone?structuredClone(e):JSON.parse(JSON.stringify(e))}catch{return{}}}const R="iOS"===p.os||"macOS"===p.os?"webkit":"Harmony"===p.os?"messageport":"Windows"===p.os?"webmessage":"Android"===p.os?window.LingXiaProxy?.supportsMessagePort?.()?"messageport":"jsinterface":"unknown";"undefined"!=typeof window&&"function"!=typeof window[E]&&(window[E]=e=>{N.push(e)});let F=null,$=!1,X=null,z=null,H=null,q=200,G=!1,U=0;let W=0,J=null;const Y={listenerInstalled:!1,promise:null,resolve:null,reject:null,timer:null},V={handleEvent:e=>{const t=e;if("LingXia-port-init"!==t.data)return;const n=t.ports?.[0];n&&(rt._connectWebMessagePort(n),Y.resolve?.(n))}};function K(){Y.listenerInstalled||(Y.listenerInstalled=!0,window.addEventListener("message",V))}function Q(){null!==Y.timer&&(window.clearTimeout(Y.timer),Y.timer=null),Y.resolve=null,Y.reject=null,Y.promise=null}function Z(){return"webkit"===R&&(w()||x())}function ee(){null!==H&&(clearTimeout(H),H=null)}function te(e){Z()&&!G&&(G=!0,ee(),null!==J&&(clearInterval(J),J=null),"undefined"!=typeof document&&document.removeEventListener("visibilitychange",ce),ae=!1,z?.abort(),$=!1,oe(e,!0))}function ne(e){for(const t of Array.from(xe.keys()))je(t,{code:c,message:e});for(const t of Array.from(be.keys()))Oe(t,{code:c,message:e});!function(e){for(const[t,n]of Array.from(ke.entries()))ke.delete(t),n._emitClose(c,e)}(e)}function oe(e,t){$e(),ue=null,me=!1,fe=!1,pe=0,t&&ne(e)}function re(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{ie(JSON.parse(n))}catch(e){j("Apple downstream parse error:",e,n)}}return t}function ie(e){if(!e||"object"!=typeof e)return;W=Date.now();const t=e;if(!0!==t.lxshutdown){if(void 0===t.lxhb){if(!0===t.lxreset)return U=0,oe("Apple downstream reset",!0),void Xe();if("number"==typeof t.lxff){if(t.lxff<=U)return;return U=t.lxff,void We(t.m)}We(e)}}else te("Apple downstream closed")}function se(){if(!Z()||G)return;if(X)return;ee();let e=!1;X=async function(){if(!S)throw new Error("Apple downstream URL is not configured");const e=new AbortController;z=e;const t=S.includes("?")?"&":"?",n=`${S}${t}from=${U}`,o=await fetch(n,{method:"GET",cache:"no-store",headers:{Accept:"application/x-ndjson"},signal:e.signal});if(!o.ok)throw new Error(`Apple downstream HTTP ${o.status}`);if("1"===o.headers.get("X-LingXia-Bridge-Shutdown"))return void te("Apple downstream closed");if(!o.body)throw new Error("Apple downstream response body unavailable");$=!0,q=200,W=Date.now(),A("proto")&&B("Apple downstream connected"),Xe();const r=o.body.getReader(),i=new TextDecoder;let s="";try{for(;;){const{value:e,done:t}=await r.read();if(t)break;s+=i.decode(e,{stream:!0}),s=re(s)}s+=i.decode();const e=s.trim();if(e)try{ie(JSON.parse(e))}catch(t){j("Apple downstream trailing parse error:",t,e)}}catch(t){if(e.signal.aborted)return;throw t}finally{try{r.releaseLock()}catch{}}}().then(()=>{e=!0}).catch(e=>{z?.signal.aborted||j("Apple downstream failed:",e)}).finally(()=>{const t=z?.signal.aborted??!1;X=null,z=null,$=!1,t||G||function(e,t=!1){if(!Z()||G)return;ee();const n=t?0:q;t||(q=Math.min(2*q,2e3));const o=t?`Apple downstream completed, reconnecting immediately: ${e}`:`Apple downstream disconnected, retrying in ${n}ms: ${e}`;n<=200?B(o):j(o),H=setTimeout(()=>{H=null,se()},n)}("stream closed",e)})}let ae=!1;function le(){if(!Z()||G)return;if(ae)return;ae=!0;const e=X;z?.abort();const t=()=>{ae=!1,se()};e?e.finally(t):t()}function ce(){"visible"===document.visibilityState&&le()}function de(e){const t=e.kind;"req"!==t&&"notify"!==t||B(`postToNative: ${t} ${e.method}`),A("proto")&&console.log("→",JSON.stringify(e,null,2));try{if("webkit"===R)return void window.webkit?.messageHandlers.LingXia?.postMessage(e);const t=P(e);if(R===C&&F)return void F.postMessage(t);if((R===L||R===T)&&window.LingXiaProxy?.postMessage)return void window.LingXiaProxy.postMessage(t);j("Transport not ready")}catch(e){O("Send error:",e)}}let ue=null,me=!1,fe=!1,pe=0,he=null;const ge={};let ve=0;function ye(){return{data:new Set,end:new Set,error:new Set,close:new Set}}function we(e,t){const n=ye();let o=!1,r=!1,i=()=>{},s=()=>{};const a=[],l=[],c=new Promise((e,t)=>{i=e,s=t});return{id:e,result:c,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]:()=>(r=!0,{next:()=>a.length>0?Promise.resolve({done:!1,value:a.shift()}):o?c.then(e=>({done:!0,value:e}),e=>Promise.reject(e)):new Promise((e,t)=>{l.push({resolve:e,reject:t})})}),cancel(){o||t()},_emitData(e){if(!o){l.length>0?l.shift().resolve({done:!1,value:e}):r&&a.push(e);for(const t of n.data)try{t(e)}catch(e){j("Stream data listener failed:",e)}}},_resolve(e){if(!o){for(o=!0,i(e);l.length>0;)l.shift().resolve({done:!0,value:e});for(const t of n.end)try{t(e)}catch(e){j("Stream end listener failed:",e)}}},_reject(e){if(!o){for(o=!0,s(e);l.length>0;)l.shift().reject(e);for(const t of n.error)try{t(e)}catch(e){j("Stream error listener failed:",e)}}}}}const xe=new Map,be=new Map,ke=new Map,Ee=[];let Ie=-1,_e={};const Ce=new Set,Le=new WeakMap,Te=new Map;function Se(e,t){Te.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 Ne(e){if(null!=e)return e}function Ae(){return R===C?!!F:Z()?$:"webkit"===R||R===L||R===T}function Be(){return!!me&&(!!Z()||Ae())}function je(e,t){const n=xe.get(e);if(n){xe.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 Oe(e,t){const n=be.get(e);if(!n)return;be.delete(e),null!==n.timerId&&clearTimeout(n.timerId);const o=u(t);n.channel._reject(o),n.reject(o)}function Pe(e,t){xe.has(e)?je(e,t):be.has(e)&&Oe(e,t)}function De(e){xe.has(e)?function(e){const n=xe.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(()=>{xe.has(e)&&je(e,{code:t,message:`'${n.method}' timed out`})},n.timeoutMs)))}(e):be.has(e)&&function(e){const n=be.get(e);n&&(null!==n.timerId&&clearTimeout(n.timerId),n.timerId=setTimeout(()=>{Oe(e,{code:t,message:`Channel '${n.topic}' timed out`})},I))}(e)}function Re(e){for(let t=Ee.length-1;t>=0;t--)if(Ee[t]?.reqId===e)return Ee.splice(t,1),!0;return!1}function Fe(e,t){const n=e.kind,o="hello"===n||"helloAck"===n||"ready"===n;if(!Be()&&!o)return Ee.length>=256?(O("Outbox full"),void(t&&Pe(t,{code:l,message:"Bridge outbox is full"}))):void Ee.push({msg:e,reqId:t});t&&De(t),de(e)}function $e(){null!==he&&(clearTimeout(he),he=null)}function Xe(){if(me)return;if(!Ae())return;$e();const e={v:2,kind:"hello",nonce:p.nonce||"",role:"view",protocolsSupported:[2]};fe=!0,de(e),he=setTimeout(()=>{if(!me)if(pe++,pe<3)j(`Handshake timeout (${pe}/3), retrying...`),fe=!1,Xe();else{for(O("Handshake failed"),$e(),fe=!1,pe=0;Ee.length;){const e=Ee.shift();e?.reqId&&Pe(e.reqId,{code:o,message:"Bridge handshake failed"})}for(const e of Array.from(be.keys()))Oe(e,{code:o,message:"Bridge handshake failed"})}},1e4)}function ze(e){return e.replace(/~1/g,"/").replace(/~0/g,"~")}function He(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(ze)}(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 qe(e){Ce.forEach(t=>{try{if(!Le.has(t))return Le.set(t,!0),void t(D(_e),{rev:Ie,initial:!0});t(D(_e),{rev:Ie,initial:e})}catch(e){j("Subscriber error:",e)}})}function Ge(e){if("function"!=typeof e)return()=>{};if(Ce.add(e),Ie>=0){Le.set(e,!0);try{e(D(_e),{rev:Ie,initial:!0})}catch(e){O("Callback error:",e)}}return()=>{Ce.delete(e),Le.delete(e)}}function Ue(e){ot.call("state.getSnapshot",{scope:e}).catch(()=>{})}function We(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=Je.get(n);if(t)try{t(e)}catch(e){O("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(ue=t.sessionId);case"ready":if(ue&&t.sessionId!==ue)return void j("sessionId mismatch");if($e(),me=!0,pe=0,t.hostMethods)for(const[e,n]of Object.entries(t.hostMethods))ge[e]=n;return A("proto")&&B("Handshake complete, hostMethods:",Object.keys(ge).length),void function(){if(Be())for(;Ee.length;){const e=Ee.shift();e&&(e.reqId&&De(e.reqId),de(e.msg))}}();case"res":{const e=xe.get(t.id);if(!e)return;if(xe.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||(_e=t.state,Ie=t.rev,A("data")&&(console.group("[LX] snapshot(res)"),console.log("rev:",Ie,"state:",D(_e)),console.groupEnd()),qe(!0),0))}(t.result)||j("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(xe.has(t.id)){const e=xe.get(t.id);return void("stream"===e?.mode&&e.stream?(null!==e.timerId&&(clearTimeout(e.timerId),e.timerId=null),e.timeoutMs=0,e.stream._emitData(t.payload)):j(`Received event for non-stream request '${t.id}'`))}return;case"state.snapshot":return _e=t.state||{},Ie=t.rev,A("data")&&(console.group("[LX] snapshot"),console.log("rev:",Ie,"state:",D(_e)),console.groupEnd()),void qe(!0);case"state.patch":if(t.baseRev!==Ie)return j("baseRev mismatch",{have:Ie,want:t.baseRev}),void Ue(t.scope);try{!function(e,t){for(const n of t){const t="add"===n.op||"replace"===n.op,{container:o,key:r}=He(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}}(_e,t.ops||[]),Ie=t.rev}catch(e){return O("Patch failed:",e),void Ue(t.scope)}return A("data")&&(console.group("[LX] patch"),console.log("rev:",Ie,"ops:",t.ops),console.groupEnd()),qe(!1),void(t.ack&&Fe({v:2,kind:"state.ack",scope:t.scope,rev:t.rev}));case"ch.ack":{const e=be.get(t.id);if(!e)return;if(be.delete(t.id),null!==e.timerId&&clearTimeout(e.timerId),t.ok)e.channel._markOpen(),ke.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=ke.get(t.id);if(!e)return;return void e._emitData(t.payload)}case"ch.close":{if(be.get(t.id))return void Oe(t.id,{code:t.code??c,message:t.reason??"Channel closed before opening"});const e=ke.get(t.id);if(!e)return;return ke.delete(t.id),void e._emitClose(t.code,t.reason)}case"req":{const e=t,n=Me(e.method);if(!e.cap||e.cap!==n)return void Fe({v:2,kind:"res",id:e.id,ok:!1,error:{code:s,message:`Invalid cap for ${e.method}`}});const o=Te.get(e.method);return o?void Promise.resolve().then(()=>o(e.params)).then(t=>{Fe({v:2,kind:"res",id:e.id,ok:!0,result:t})}).catch(t=>{Fe({v:2,kind:"res",id:e.id,ok:!1,error:u(t)})}):void Fe({v:2,kind:"res",id:e.id,ok:!1,error:{code:i,message:`View handler not found: ${e.method}`}})}}else j("Invalid V2 message:",e)}const Je=new Map,Ye=[];let Ve=!1;function Ke(){return"undefined"!=typeof window&&!(!window.webkit?.messageHandlers?.NativeComponent&&!window.NativeComponentBridge?.postMessage)}function Qe(e){try{if(window.webkit?.messageHandlers?.NativeComponent)return void window.webkit.messageHandlers.NativeComponent.postMessage(e);if(window.NativeComponentBridge?.postMessage)return void window.NativeComponentBridge.postMessage(P(e))}catch(e){O("NativeComponent send error:",e)}}function Ze(){if(Ke()&&0!==Ye.length)for(Ve=!0;Ye.length;){const e=Ye.shift();try{Qe(e)}catch{break}}}function et(e){try{if(!Ke())return void Ye.push(e);Ve||Ze(),Qe(e)}catch(e){O("NC send failed:",e)}}function tt(e){return`${e}_${Date.now()}_${ve++}`}function nt(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 ot={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"});fe||Xe();const a=tt("c"),l=o?.cap||Me(e),c=o?.timeoutMs??I;xe.set(a,{method:e,mode:"call",resolve:i,reject:e=>s(e),timeoutMs:c,timerId:null}),Fe({v:2,kind:"req",id:a,method:e,params:Ne(t),cap:l},a),nt(0,o?.signal,()=>{const e=Re(a);je(a,{code:n,message:"Bridge request aborted"}),!e&&me&&Fe({v:2,kind:"cancel",id:a})})}),stream(e,t,o){if(!e||"string"!=typeof e){const e=we("invalid",()=>{});return e._reject({code:r,message:"Method name must be a non-empty string"}),e}fe||Xe();const i=tt("c"),s=we(i,()=>{Re(i)?je(i,{code:n,message:"Bridge request aborted"}):me&&Fe({v:2,kind:"cancel",id:i})}),a=o?.cap||Me(e),l=o?.timeoutMs??I;return xe.set(i,{method:e,mode:"stream",stream:s,timeoutMs:l,timerId:null}),Fe({v:2,kind:"req",id:i,method:e,params:Ne(t),cap:a},i),nt(0,o?.signal,()=>s.cancel()),s},notify(e,t,n){e&&"string"==typeof e&&(fe||Xe(),Fe({v:2,kind:"notify",method:e,params:Ne(t),cap:n?.cap||Me(e)}))},state:{subscribe:Ge},channel:{open:(e,t,n)=>e&&"string"==typeof e?(fe||Xe(),new Promise((o,r)=>{const i=tt("ch"),s=function(e,t,n){const o=ye();let r=!1,i=0,s=!1,a=!1;const l=[],d=[],u={id:e,send(n){r?t(n,i++):u._reject({code:c,message:`Channel '${e}' is closed`})},on(e,t){if("data"===e&&(o.data.add(t),l.length>0)){const e=l.splice(0);for(const n of e)try{t(n)}catch(e){j("Channel listener failed:",e)}}return"close"===e&&o.close.add(t),"error"===e&&o.error.add(t),this},[Symbol.asyncIterator]:()=>(a=!0,{next:()=>l.length>0?Promise.resolve({done:!1,value:l.shift()}):s?Promise.resolve({done:!0,value:void 0}):new Promise((e,t)=>{d.push({resolve:e,reject:t})})}),close(e,t){r&&(r=!1,s=!0,n(e,t),u._emitClose(e,t))},_emitData(e){if(r){d.length>0?d.shift().resolve({done:!1,value:e}):(a||0===o.data.size)&&l.push(e);for(const t of o.data)try{t(e)}catch(e){j("Channel listener failed:",e)}}},_emitClose(e,t){for(s=!0;d.length>0;)d.shift().resolve({done:!0,value:void 0});for(const n of o.close)try{n(e,t)}catch(e){j("Channel close listener failed:",e)}},_reject(e){for(s=!0;d.length>0;)d.shift().reject(e);for(const t of o.error)try{t(e)}catch(e){j("Channel error listener failed:",e)}},_markOpen(){r=!0,s=!1},_isOpen:()=>r,_nextSeq:()=>i++};return u}(i,(e,t)=>{Fe({v:2,kind:"ch.data",id:i,seq:t,payload:e})},(e,t)=>{const n=be.get(i);n&&null!==n.timerId&&clearTimeout(n.timerId),be.delete(i),ke.delete(i),Fe({v:2,kind:"ch.close",id:i,code:e,reason:t})});be.set(i,{topic:e,channel:s,resolve:o,reject:r,timerId:null}),Fe({v:2,kind:"ch.open",id:i,topic:e,params:Ne(t),cap:n?.cap||Me(e)},i)})):Promise.reject({code:r,message:"Topic name must be a non-empty string"})}},rt={invoke:(e,t,n)=>ot.call(it(e),t,st(n)).then(e=>e).catch(e=>Promise.reject(m(e))),notify(e,t,n){ot.notify(it(e),t,st(n))},stream:(e,t,n)=>at(ot.stream(it(e),t,st(n))),channel:(e,t,n)=>ot.channel.open(it(e),t,st(n)).then(e=>function(e){const t=new Set,n=new Set;return e.on("data",e=>{for(const n of t)n(e)}),e.on("close",(e,t)=>{const o={code:e,reason:t};for(const e of n)e(o)}),{send(t){e.send(t)},onMessage:e=>(t.add(e),()=>{t.delete(e)}),onClose:e=>(n.add(e),()=>{n.delete(e)}),close(t,n){e.close(t,n)}}}(e)).catch(e=>Promise.reject(m(e))),raw:ot,state:{subscribe:Ge},_connectWebMessagePort(e){if(R===C){if(F&&F!==e)try{F.onmessage=null,F.close()}catch{}F=e,e.onmessage=e=>{let t=e.data;if("string"==typeof t)try{t=JSON.parse(t)}catch{return}We(t)};try{e.start()}catch{}B("Port connected"),Xe()}},_receiveEvaluateMessage(e){try{e&&We(JSON.parse(e))}catch(e){O("Parse error:",e)}},debug:function(e){const t={};return Object.keys(e).forEach(n=>{Object.defineProperty(t,n,{enumerable:!0,configurable:!1,get:()=>e[n],set(t){e[n]=!!t,console.log(`[LX] ${n}: ${t}`)}})}),t}(M),platform:{isHarmony:function(){return"Harmony"===p.os},isIOS:w,isAndroid:function(){return"Android"===p.os},isMacOS:x,isWindows:b,isDesktop:k,isApple:function(){return w()||x()},isRunner:function(){return!0===p.runner},getOS:y},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:et,hasHandler:Ke,flush:Ze,register:(e,t)=>e&&"function"==typeof t?(Je.set(e,t),()=>Je.delete(e)):()=>{},unregister(e){Je.delete(e)}},isReady:()=>me};function it(e){return e.startsWith("host.")?e:`host.${e}`}function st(e){return{...e||{},cap:e?.cap||"host"}}function at(e){const t=new Set,n=new Set;return e.on("data",e=>{for(const n of t)n(e)}),e.on("error",e=>{const t=m(e);for(const e of n)e(t)}),{onEvent:e=>(t.add(e),()=>{t.delete(e)}),onError:e=>(n.add(e),()=>{n.delete(e)}),result:e.result.catch(e=>Promise.reject(m(e))),cancel(){e.cancel()}}}function lt(){if(window.__LX_BRIDGE_INIT_STATE)B(`Bridge already ${window.__LX_BRIDGE_INIT_STATE}, skipping duplicate init`);else{window.__LX_BRIDGE_INIT_STATE="initializing";try{B(`Method: ${R}`),function(e){if("undefined"==typeof window)return;if(window[E]=e,0===N.length)return;const t=N.splice(0,N.length);for(const n of t)try{e(n)}catch(e){j("Failed to replay queued native message:",e)}}(rt._receiveEvaluateMessage),Z()?(se(),Z()&&!G&&null===J&&(J=setInterval(()=>{0!==W&&Date.now()-W>35e3&&(j("Apple downstream stale (no heartbeat), forcing reconnect"),le())},5e3)),Z()&&"undefined"!=typeof document&&document.addEventListener("visibilitychange",ce)):R===C?(K(),function(){if(F)return Promise.resolve(F);if(Y.promise)return Y.promise;K(),Y.promise=new Promise((e,t)=>{Y.resolve=t=>{Q(),e(t)},Y.reject=e=>{Q(),t(e)},Y.timer=window.setTimeout(()=>{Y.reject?.(new Error("MessagePort init timed out after 5000ms"))},5e3)});try{window.LingXiaProxy?.getPort("LingXiaPort")}catch(e){Y.reject?.(e)}return Y.promise}().catch(e=>j("Port init failed:",e))):"webkit"===R||R===L||R===T?Xe():j("Unknown method"),window.LingXiaBridge=rt,window.__lxForceDownstreamReconnect=le,f({os:y(),send:et}),window.__LX_BRIDGE_INIT_STATE="initialized",B("Init complete")}catch(e){throw delete window.__LX_BRIDGE_INIT_STATE,e}}}function ct(e){const t=document.createElement("div");return t.textContent=e,t.innerHTML}function dt(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">${ct(t)}</div>`),n&&(i+=`<p class="lx-error-desc" style="margin-top:12px">${ct(n)}</p>`),r.innerHTML=i,document.body.appendChild(r)}function ut(){const e=window.__LX_RUNTIME_CONFIG;return!(!e||!e.error)}function mt(){return window.__LX_RUNTIME_CONFIG?.error||null}const ft={handleEvent:()=>pt()};function pt(){if(ut()){const e=mt();e&&dt(e)}}function ht(){lt(),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",ft):pt()}const gt="lx-action-sheet-style";let vt=null;function yt(e){const t=e,n=t?.itemList??[],o=t?.cancelText??"Cancel",r=t?.itemColor??"#007AFF",i=(vt??Promise.resolve()).then(()=>wt(n,o,r),()=>wt(n,o,r));return vt=i,i}function wt(e,t,n){return new Promise(o=>{let r=!1;const i=k();!function(){if(document.getElementById(gt))return;const e=document.createElement("style");e.id=gt,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 xt=200,bt="lx-modal-style";let kt=null;function Et(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=(kt??Promise.resolve()).then(()=>It(n,o,r,i,s,a,l),()=>It(n,o,r,i,s,a,l));return kt=c,c}function It(e,t,n,o,r,i,s){return new Promise(a=>{let l=!1;!function(){if(document.getElementById(bt))return;const e=document.createElement("style");e.id=bt,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})},xt))}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 _t="lx-toast-style";let Ct=null;function Lt(e){const t=e,n=t?.title??"",o=t?.icon??"none",r=t?.duration??1500,i=t?.mask??!1,s=t?.position??"center";if(Ct&&Ct.icon===o&&Ct.position===s&&Ct.mask===i){const e=Ct;return e.titleEl.textContent=n,e.timer&&clearTimeout(e.timer),e.timer=r>0?setTimeout(e.dismiss,r):null,Promise.resolve()}Ct&&(Ct.dismiss(),Ct=null),function(){if(document.getElementById(_t))return;const e=document.createElement("style");e.id=_t,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,p.timer&&clearTimeout(p.timer),Ct===p&&(Ct=null),c.classList.remove("lx-toast-visible"),setTimeout(()=>{l.remove(),a?.remove()},200))}const p={dismiss:f,timer:null,titleEl:u,icon:o,position:s,mask:i};return r>0&&(p.timer=setTimeout(f,r)),Ct=p,Promise.resolve()}function Tt(){return Ct&&(Ct.dismiss(),Ct=null),Promise.resolve()}return Se("ui.showActionSheet",yt),Se("ui.showModal",Et),Se("ui.showToast",Lt),Se("ui.hideToast",Tt),ht(),e.LingXiaBridge=rt,e.boot=function(){lt(),pt()},e.bootWhenReady=ht,e.channel=function(e,t,n){return rt.channel(e,t,n)},e.getDisplayLanguage=function(){return g().value},e.getErrorInfo=mt,e.hasError=ut,e.initBridge=lt,e.invoke=function(e,t,n){return rt.invoke(e,t,n)},e.isNativeError=function(e,t){if(!e||"object"!=typeof e)return!1;const n=e;return"string"==typeof n.code&&""!==n.code.trim()&&("string"==typeof n.message&&(void 0===t||n.code===t))},e.notify=function(e,t,n){ot.notify(it(e),t,st(n))},e.renderErrorUI=dt,e.stream=function(e,t,n){return at(ot.stream(it(e),t,st(n)))},e.subscribeDisplayLanguage=function(e){const t=g().listeners;return t.add(e),()=>{t.delete(e)}},e}({});
|
|
@@ -1 +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 r(){this.constructor=n}e(n,t),n.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}}(),__assign=this&&this.__assign||function(){return __assign=Object.assign||function(e){for(var n,t=1,r=arguments.length;t<r;t++)for(var o in n=arguments[t])Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o]);return e},__assign.apply(this,arguments)},__awaiter=this&&this.__awaiter||function(e,n,t,r){return new(t||(t=Promise))(function(o,i){function a(e){try{l(r.next(e))}catch(e){i(e)}}function c(e){try{l(r.throw(e))}catch(e){i(e)}}function l(e){var n;e.done?o(e.value):(n=e.value,n instanceof t?n:new t(function(e){e(n)})).then(a,c)}l((r=r.apply(e,n||[])).next())})},__generator=this&&this.__generator||function(e,n){var t,r,o,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},a=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return a.next=c(0),a.throw=c(1),a.return=c(2),"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function c(c){return function(l){return function(c){if(t)throw new TypeError("Generator is already executing.");for(;a&&(a=0,c[0]&&(i=0)),i;)try{if(t=1,r&&(o=2&c[0]?r.return:c[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,c[1])).done)return o;switch(r=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return i.label++,{value:c[1],done:!1};case 5:i.label++,r=c[1],c=[0];continue;case 7:c=i.ops.pop(),i.trys.pop();continue;default:if(!(o=i.trys,(o=o.length>0&&o[o.length-1])||6!==c[0]&&2!==c[0])){i=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){i.label=c[1];break}if(6===c[0]&&i.label<o[1]){i.label=o[1],o=c;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(c);break}o[2]&&i.ops.pop(),i.trys.pop();continue}c=n.call(e,i)}catch(e){c=[6,e],r=0}finally{t=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}([c,l])}}},__spreadArray=this&&this.__spreadArray||function(e,n,t){if(t||2===arguments.length)for(var r,o=0,i=n.length;o<i;o++)!r&&o in n||(r||(r=Array.prototype.slice.call(n,0,o)),r[o]=n[o]);return e.concat(r||Array.prototype.slice.call(n))},__LX_RUNTIME_PLATFORM__="mobile",__LingXiaBridgeBundle=function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});var n="BRIDGE_TIMEOUT",t="BRIDGE_CANCELED",r="BRIDGE_HANDSHAKE_FAILED",o="BRIDGE_MALFORMED_MESSAGE",i="BRIDGE_METHOD_NOT_FOUND",a="BRIDGE_CAPABILITY_DENIED",c="BRIDGE_INTERNAL_ERROR",l="BRIDGE_OUTBOX_FULL",s="BRIDGE_STREAM_CLOSED",d=function(e){function n(n,t,r){var o=e.call(this,t)||this;return o.name="BridgeInvocationError",o.code=n,o.data=r,o}return __extends(n,e),n}(Error);function u(e){if(e instanceof d)return e;if(e&&"object"==typeof e){var n=e,t=c;("string"==typeof n.code&&""!==n.code.trim()||"number"==typeof n.code&&Number.isFinite(n.code))&&(t=n.code);var r="string"==typeof n.message&&""!==n.message.trim()?n.message:"Unknown error";return new d(t,r,"data"in n?n.data:void 0)}var o=e instanceof Error?e.message:"string"==typeof e?e:"Unknown error";return new d(c,o)}function f(e){var n=u(e);return __assign({code:String(n.code||c),message:"string"==typeof n.message&&""!==n.message.trim()?n.message:"Unknown error"},void 0===n.data?{}:{data:n.data})}function v(e){var n,t=e.os,r=e.send;if("undefined"!=typeof window&&"undefined"!=typeof document){var o="iOS"===t;if(o||"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 c={handleEvent:function(){(a.hasAnyVideo||0!==a.coveredById.size)&&u()}},l={handleEvent:function(){return u()}};window.addEventListener("scroll",c,{capture:!0,passive:!0}),window.addEventListener("resize",l),u()}}}function s(e){var n,t,r=null===(n=e.getBoundingClientRect)||void 0===n?void 0:n.call(e);if(!r)return!1;if(r.width<2||r.height<2)return!1;var o=r.left+r.width/2,i=r.top+r.height/2;if(o<0||i<0||o>=window.innerWidth||i>=window.innerHeight)return!1;var a=null===(t=document.elementFromPoint)||void 0===t?void 0:t.call(document,o,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 c=i[t];if(m=c.id){n.add(m);var l=s(c),d=a.coveredById.get(m);d!==l&&(!0===d&&(a.coveredCount-=1),!0===l&&(a.coveredCount+=1),a.coveredById.set(m,l),r({id:m,action:"component.coverage",covered:l}))}}for(var u=[],f=0,v=a.coveredById.entries();f<v.length;f++){var p=v[f],m=p[0];l=p[1];n.has(m)||(u.push(m),!0===l&&(a.coveredCount-=1))}for(var h=0,g=u;h<g.length;h++){m=g[h];a.coveredById.delete(m),r({id:m,action:"component.coverage",covered:!1})}var y=a.coveredCount>0;y!==a.anyCovered&&(a.anyCovered=y,o&&(y?function(){if(o&&!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(o&&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 p="undefined"!=typeof window&&window.__LX_BRIDGE_CFG||{};function m(){return p.os||"unknown"}function h(){return"iOS"===p.os}function g(){return"macOS"===p.os}function y(){return"Windows"===p.os}var w="__LingXiaRecvMessage",b=5e3,_="[LX.Bridge]",I="messageport",k="jsinterface",E="webmessage",x=p.appleDownstreamURL,S={data:!1,proto:!1,all:!1},T=[];function O(e){return S.all||S[e]}function M(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];console.log.apply(console,__spreadArray([_],e,!1))}function j(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];console.warn.apply(console,__spreadArray([_],e,!1))}function A(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];console.error.apply(console,__spreadArray([_],e,!1))}function C(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 L(e){try{return"function"==typeof structuredClone?structuredClone(e):JSON.parse(JSON.stringify(e))}catch(e){return{}}}var N,P,B="iOS"===p.os||"macOS"===p.os?"webkit":"Harmony"===p.os?"messageport":"Windows"===p.os?"webmessage":"Android"===p.os?(null===(P=null===(N=window.LingXiaProxy)||void 0===N?void 0:N.supportsMessagePort)||void 0===P?void 0:P.call(N))?"messageport":"jsinterface":"unknown";"undefined"!=typeof window&&"function"!=typeof window[w]&&(window[w]=function(e){T.push(e)});var R=null,D=!1,X=null,G=null,F=null,H=200,q={listenerInstalled:!1,promise:null,resolve:null,reject:null,timer:null},U={handleEvent:function(e){var n,t,r=e;if("LingXia-port-init"===r.data){var o=null===(n=r.ports)||void 0===n?void 0:n[0];o&&(Ye._connectWebMessagePort(o),null===(t=q.resolve)||void 0===t||t.call(q,o))}}};function W(){q.listenerInstalled||(q.listenerInstalled=!0,window.addEventListener("message",U))}function z(){null!==q.timer&&(window.clearTimeout(q.timer),q.timer=null),q.resolve=null,q.reject=null,q.promise=null}function J(){return"webkit"===B&&(h()||g())}function Y(){null!==F&&(clearTimeout(F),F=null)}function V(e){for(var n=0,t=Array.from(le.keys());n<t.length;n++){_e(t[n],{code:s,message:e})}for(var r=0,o=Array.from(se.keys());r<o.length;r++){Ie(o[r],{code:s,message:e})}!function(e){for(var n=0,t=Array.from(de.entries());n<t.length;n++){var r=t[n],o=r[0],i=r[1];de.delete(o),i._emitClose(s,e)}}(e)}function $(){return __awaiter(this,void 0,void 0,function(){var e,n,t,r,o,i,a,c,l;return __generator(this,function(s){switch(s.label){case 0:if(!x)throw new Error("Apple downstream URL is not configured");return e=new AbortController,G=e,[4,fetch(x,{method:"GET",cache:"no-store",headers:{Accept:"application/x-ndjson"},signal:e.signal})];case 1:if(!(n=s.sent()).ok)throw new Error("Apple downstream HTTP ".concat(n.status));if(!n.body)throw new Error("Apple downstream response body unavailable");D=!0,H=200,O("proto")&&M("Apple downstream connected"),Me(),t=n.body.getReader(),r=new TextDecoder,o="",s.label=2;case 2:s.trys.push([2,6,7,8]),s.label=3;case 3:return[4,t.read()];case 4:return i=s.sent(),a=i.value,i.done?[3,5]:(o=function(e){for(var n=e;;){var t=n.indexOf("\n");if(t<0)break;var r=n.slice(0,t).trim();if(n=n.slice(t+1),r)try{Pe(JSON.parse(r))}catch(e){j("Apple downstream parse error:",e,r)}}return n}(o+=r.decode(a,{stream:!0})),[3,3]);case 5:if(o+=r.decode(),c=o.trim())try{Pe(JSON.parse(c))}catch(e){j("Apple downstream trailing parse error:",e,c)}return[3,8];case 6:if(l=s.sent(),e.signal.aborted)return[2];throw l;case 7:try{t.releaseLock()}catch(e){}return[7];case 8:return[2]}})})}function K(){J()&&(X||(Y(),X=$().catch(function(e){(null==G?void 0:G.signal.aborted)||j("Apple downstream failed:",e)}).finally(function(){var e,n=null!==(e=null==G?void 0:G.signal.aborted)&&void 0!==e&&e;X=null,G=null;var t,r,o=D;D=!1,t="Apple downstream closed",r=o,Oe(),Z=null,ee=!1,ne=!1,te=0,r&&V(t),n||function(e){if(J()){Y();var n=H;H=Math.min(2*H,2e3);var t="Apple downstream disconnected, retrying in ".concat(n,"ms: ").concat(e);n<=200?M(t):j(t),F=setTimeout(function(){F=null,K()},n)}}("stream closed")})))}function Q(e){var n,t,r,o=e.kind;"req"!==o&&"notify"!==o||M("postToNative: ".concat(o," ").concat(e.method)),O("proto")&&console.log("→",JSON.stringify(e,null,2));try{if("webkit"===B)return void(null===(t=null===(n=window.webkit)||void 0===n?void 0:n.messageHandlers.LingXia)||void 0===t||t.postMessage(e));var i=C(e);if(B===I&&R)return void R.postMessage(i);if((B===k||B===E)&&(null===(r=window.LingXiaProxy)||void 0===r?void 0:r.postMessage))return void window.LingXiaProxy.postMessage(i);j("Transport not ready")}catch(e){A("Send error:",e)}}var Z=null,ee=!1,ne=!1,te=0,re=null,oe={},ie=0;function ae(){return{data:new Set,end:new Set,error:new Set,close:new Set}}function ce(e,n){var t,r=ae(),o=!1,i=function(){},a=function(){},c=[],l=[],s=new Promise(function(e,n){i=e,a=n});return(t={id:e,result:s,on:function(e,n){return"data"===e&&r.data.add(n),"end"===e&&r.end.add(n),"error"===e&&r.error.add(n),this}})[Symbol.asyncIterator]=function(){return{next:function(){return c.length>0?Promise.resolve({done:!1,value:c.shift()}):o?s.then(function(e){return{done:!0,value:e}},function(e){return Promise.reject(e)}):new Promise(function(e,n){l.push({resolve:e,reject:n})})}}},t.cancel=function(){o||n()},t._emitData=function(e){if(!o){l.length>0?l.shift().resolve({done:!1,value:e}):c.push(e);for(var n=0,t=r.data;n<t.length;n++){var i=t[n];try{i(e)}catch(e){j("Stream data listener failed:",e)}}}},t._resolve=function(e){if(!o){for(o=!0,i(e);l.length>0;)l.shift().resolve({done:!0,value:e});for(var n=0,t=r.end;n<t.length;n++){var a=t[n];try{a(e)}catch(e){j("Stream end listener failed:",e)}}}},t._reject=function(e){if(!o){for(o=!0,a(e);l.length>0;)l.shift().reject(e);for(var n=0,t=r.error;n<t.length;n++){var i=t[n];try{i(e)}catch(e){j("Stream error listener failed:",e)}}}},t}var le=new Map,se=new Map,de=new Map,ue=[],fe=-1,ve={},pe=new Set,me=new WeakMap,he=new Map;function ge(e){if(e.startsWith("host."))return"host";var n=e.indexOf(".");return n>0?e.slice(0,n):"page"}function ye(e){if(null!=e)return e}function we(){return B===I?!!R:J()?D:"webkit"===B||B===k||B===E}function be(){return we()&&ee}function _e(e,n){var t,r=le.get(e);if(r){le.delete(e),null!==r.timerId&&clearTimeout(r.timerId);var o=u(n);if("stream"===r.mode&&r.stream)return void r.stream._reject(o);null===(t=r.reject)||void 0===t||t.call(r,o)}}function Ie(e,n){var t=se.get(e);if(t){se.delete(e),null!==t.timerId&&clearTimeout(t.timerId);var r=u(n);t.channel._reject(r),t.reject(r)}}function ke(e,n){le.has(e)?_e(e,n):se.has(e)&&Ie(e,n)}function Ee(e){var t=le.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(){le.has(e)&&_e(e,{code:n,message:"'".concat(t.method,"' timed out")})},t.timeoutMs)))}function xe(e){le.has(e)?Ee(e):se.has(e)&&function(e){var t=se.get(e);t&&(null!==t.timerId&&clearTimeout(t.timerId),t.timerId=setTimeout(function(){Ie(e,{code:n,message:"Channel '".concat(t.topic,"' timed out")})},b))}(e)}function Se(e){for(var n,t=ue.length-1;t>=0;t--)if((null===(n=ue[t])||void 0===n?void 0:n.reqId)===e)return ue.splice(t,1),!0;return!1}function Te(e,n){var t=e.kind,r="hello"===t||"helloAck"===t||"ready"===t;if(!be()&&!r)return ue.length>=256?(A("Outbox full"),void(n&&ke(n,{code:l,message:"Bridge outbox is full"}))):void ue.push({msg:e,reqId:n});n&&xe(n),Q(e)}function Oe(){null!==re&&(clearTimeout(re),re=null)}function Me(){if(!ee&&we()){Oe();var e={v:2,kind:"hello",nonce:p.nonce||"",role:"view",protocolsSupported:[2]};ne=!0,Q(e),re=setTimeout(function(){if(!ee)if(++te<3)j("Handshake timeout (".concat(te,"/").concat(3,"), retrying...")),ne=!1,Me();else{for(A("Handshake failed"),Oe(),ne=!1,te=0;ue.length;){var e=ue.shift();(null==e?void 0:e.reqId)&&ke(e.reqId,{code:r,message:"Bridge handshake failed"})}for(var n=0,t=Array.from(se.keys());n<t.length;n++){Ie(t[n],{code:r,message:"Bridge handshake failed"})}}},1e4)}}function je(e){return e.replace(/~1/g,"/").replace(/~0/g,"~")}function Ae(e,n,t){void 0===t&&(t=!1);var r=function(e){if(""===e)return[];if(!e.startsWith("/"))throw new Error("Invalid JSON pointer: ".concat(e));return e.split("/").slice(1).map(je)}(n);if(0===r.length)return{container:{$root:e},key:"$root"};for(var o=e,i=0;i<r.length-1;i++){var a=r[i];if(Array.isArray(o))o=o[Number(a)];else{if(!o||"object"!=typeof o)throw new Error("Invalid container at ".concat(a));var c=o;if(t&&void 0===c[a]){var l=r[i+1];c[a]=l&&/^\d+$/.test(l)?[]:{}}o=c[a]}}return{container:o,key:r[r.length-1]}}function Ce(e){pe.forEach(function(n){try{if(!me.has(n))return me.set(n,!0),void n(L(ve),{rev:fe,initial:!0});n(L(ve),{rev:fe,initial:e})}catch(e){j("Subscriber error:",e)}})}function Le(e){if("function"!=typeof e)return function(){};if(pe.add(e),fe>=0){me.set(e,!0);try{e(L(ve),{rev:fe,initial:!0})}catch(e){A("Callback error:",e)}}return function(){pe.delete(e),me.delete(e)}}function Ne(e){Je.call("state.getSnapshot",{scope:e}).catch(function(){})}function Pe(e){var n,t;if(e&&"object"==typeof e){var r=e;if("event"===r.type&&"nativecomponent"===r.name&&r.payload){var o=r.payload,c=o.id||o.componentId;if("string"==typeof c){var l=Be.get(c);if(l)try{l(o)}catch(e){A("NC handler error:",e)}}return}}var s=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(s)switch(s.kind){case"helloAck":return void(Z=s.sessionId);case"ready":if(Z&&s.sessionId!==Z)return void j("sessionId mismatch");if(Oe(),ee=!0,te=0,s.hostMethods)for(var d=0,f=Object.entries(s.hostMethods);d<f.length;d++){var v=f[d],p=v[0],m=v[1];oe[p]=m}return O("proto")&&M("Handshake complete, hostMethods:",Object.keys(oe).length),void function(){if(be())for(;ue.length;){var e=ue.shift();e&&(e.reqId&&xe(e.reqId),Q(e.msg))}}();case"res":var h=le.get(s.id);if(!h)return;if(le.delete(s.id),null!==h.timerId&&clearTimeout(h.timerId),s.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||(ve=n.state,fe=n.rev,O("data")&&(console.group("[LX] snapshot(res)"),console.log("rev:",fe,"state:",L(ve)),console.groupEnd()),Ce(!0),0))}(s.result)||j("Invalid state.getSnapshot result")),"stream"===h.mode&&h.stream)return void h.stream._resolve(s.result);null===(n=h.resolve)||void 0===n||n.call(h,s.result)}else{var g=u(s.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(le.has(s.id)){var y=le.get(s.id);return void("stream"===(null==y?void 0:y.mode)&&y.stream?(Ee(s.id),y.stream._emitData(s.payload)):j("Received event for non-stream request '".concat(s.id,"'")))}return;case"state.snapshot":return ve=s.state||{},fe=s.rev,O("data")&&(console.group("[LX] snapshot"),console.log("rev:",fe,"state:",L(ve)),console.groupEnd()),void Ce(!0);case"state.patch":if(s.baseRev!==fe)return j("baseRev mismatch",{have:fe,want:s.baseRev}),void Ne(s.scope);try{!function(e,n){for(var t=0,r=n;t<r.length;t++){var o=r[t],i="add"===o.op||"replace"===o.op,a=Ae(e,o.path,i),c=a.container,l=a.key;if("$root"!==l)if(Array.isArray(c)){var s="-"===l?c.length:Number(l);if(!Number.isFinite(s)||s<0)throw new Error("Invalid index");"remove"===o.op?c.splice(s,1):"add"===o.op?c.splice(s,0,o.value):"replace"===o.op&&(c[s]=o.value)}else{if(!c||"object"!=typeof c)throw new Error("Invalid container");var d=c;"remove"===o.op?delete d[l]:d[l]=o.value}else{for(var u=0,f=Object.keys(e);u<f.length;u++)delete e[f[u]];if("remove"!==o.op){var v=o.value;v&&"object"==typeof v&&Object.assign(e,v)}}}}(ve,s.ops||[]),fe=s.rev}catch(e){return A("Patch failed:",e),void Ne(s.scope)}return O("data")&&(console.group("[LX] patch"),console.log("rev:",fe,"ops:",s.ops),console.groupEnd()),Ce(!1),void(s.ack&&Te({v:2,kind:"state.ack",scope:s.scope,rev:s.rev}));case"ch.ack":if(!(b=se.get(s.id)))return;if(se.delete(s.id),null!==b.timerId&&clearTimeout(b.timerId),s.ok)b.channel._markOpen(),de.set(s.id,b.channel),b.resolve(b.channel);else{g=u(s.error);b.channel._reject(g),b.reject(g)}return;case"ch.data":var w=de.get(s.id);if(!w)return;return void w._emitData(s.payload);case"ch.close":var b;if(b=se.get(s.id))return se.delete(s.id),void b.channel._emitClose(s.code,s.reason);var _=de.get(s.id);if(!_)return;return de.delete(s.id),void _._emitClose(s.code,s.reason);case"req":var I=s,k=ge(I.method);if(!I.cap||I.cap!==k)return void Te({v:2,kind:"res",id:I.id,ok:!1,error:{code:a,message:"Invalid cap for ".concat(I.method)}});var E=he.get(I.method);return E?void Promise.resolve().then(function(){return E(I.params)}).then(function(e){Te({v:2,kind:"res",id:I.id,ok:!0,result:e})}).catch(function(e){Te({v:2,kind:"res",id:I.id,ok:!1,error:u(e)})}):void Te({v:2,kind:"res",id:I.id,ok:!1,error:{code:i,message:"View handler not found: ".concat(I.method)}})}else j("Invalid V2 message:",e)}var Be=new Map,Re=[],De=!1;function Xe(){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 Ge(e){var n,t,r;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===(r=window.NativeComponentBridge)||void 0===r?void 0:r.postMessage)return void window.NativeComponentBridge.postMessage(C(e))}catch(e){A("NativeComponent send error:",e)}}function Fe(){if(Xe()&&0!==Re.length)for(De=!0;Re.length;){var e=Re.shift();try{Ge(e)}catch(e){break}}}function He(e){try{if(!Xe())return void Re.push(e);De||Fe(),Ge(e)}catch(e){A("NC send failed:",e)}}function qe(e){return"".concat(e,"_").concat(Date.now(),"_").concat(ie++)}function Ue(e,n,t){if(n)if(n.aborted)t();else{var r={handleEvent:function(){n.removeEventListener("abort",r),t()}};n.addEventListener("abort",r)}}var We,ze,Je={call:function(e,n,r){return new Promise(function(i,a){var c;if(e&&"string"==typeof e){ne||Me();var l=qe("c"),s=(null==r?void 0:r.cap)||ge(e),d=null!==(c=null==r?void 0:r.timeoutMs)&&void 0!==c?c:b;le.set(l,{method:e,mode:"call",resolve:i,reject:function(e){return a(e)},timeoutMs:d,timerId:null}),Te({v:2,kind:"req",id:l,method:e,params:ye(n),cap:s},l),Ue(0,null==r?void 0:r.signal,function(){var e=Se(l);_e(l,{code:t,message:"Bridge request aborted"}),!e&&ee&&Te({v:2,kind:"cancel",id:l})})}else a({code:o,message:"Method name must be a non-empty string"})})},stream:function(e,n,r){var i;if(!e||"string"!=typeof e){var a=ce("invalid",function(){});return a._reject({code:o,message:"Method name must be a non-empty string"}),a}ne||Me();var c=qe("c"),l=ce(c,function(){Se(c)?_e(c,{code:t,message:"Bridge request aborted"}):ee&&Te({v:2,kind:"cancel",id:c})}),s=(null==r?void 0:r.cap)||ge(e),d=null!==(i=null==r?void 0:r.timeoutMs)&&void 0!==i?i:b;return le.set(c,{method:e,mode:"stream",stream:l,timeoutMs:d,timerId:null}),Te({v:2,kind:"req",id:c,method:e,params:ye(n),cap:s},c),Ue(0,null==r?void 0:r.signal,function(){return l.cancel()}),l},notify:function(e,n,t){e&&"string"==typeof e&&(ne||Me(),Te({v:2,kind:"notify",method:e,params:ye(n),cap:(null==t?void 0:t.cap)||ge(e)}))},state:{subscribe:Le},channel:{open:function(e,n,t){return e&&"string"==typeof e?(ne||Me(),new Promise(function(r,o){var i=qe("ch"),a=function(e,n,t){var r,o=ae(),i=!1,a=0,c=!1,l=[],d=[],u=((r={id:e,send:function(t){i?n(t,a++):u._reject({code:s,message:"Channel '".concat(e,"' is closed")})},on:function(e,n){if("data"===e&&(o.data.add(n),l.length>0))for(var t=0,r=l.splice(0);t<r.length;t++){var i=r[t];try{n(i)}catch(e){j("Channel listener failed:",e)}}return"close"===e&&o.close.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()}):c?Promise.resolve({done:!0,value:void 0}):new Promise(function(e,n){d.push({resolve:e,reject:n})})}}},r.close=function(e,n){i&&(i=!1,c=!0,t(e,n),u._emitClose(e,n))},r._emitData=function(e){if(i){d.length>0?d.shift().resolve({done:!1,value:e}):l.push(e);for(var n=0,t=o.data;n<t.length;n++){var r=t[n];try{r(e)}catch(e){j("Channel listener failed:",e)}}}},r._emitClose=function(e,n){for(c=!0;d.length>0;)d.shift().resolve({done:!0,value:void 0});for(var t=0,r=o.close;t<r.length;t++){var i=r[t];try{i(e,n)}catch(e){j("Channel close listener failed:",e)}}},r._reject=function(e){for(c=!0;d.length>0;)d.shift().reject(e);for(var n=0,t=o.error;n<t.length;n++){var r=t[n];try{r(e)}catch(e){j("Channel error listener failed:",e)}}},r._markOpen=function(){i=!0,c=!1},r._isOpen=function(){return i},r._nextSeq=function(){return a++},r);return u}(i,function(e,n){Te({v:2,kind:"ch.data",id:i,seq:n,payload:e})},function(e,n){var t=se.get(i);t&&null!==t.timerId&&clearTimeout(t.timerId),se.delete(i),de.delete(i),Te({v:2,kind:"ch.close",id:i,code:e,reason:n})});se.set(i,{topic:e,channel:a,resolve:r,reject:o,timerId:null}),Te({v:2,kind:"ch.open",id:i,topic:e,params:ye(n),cap:(null==t?void 0:t.cap)||ge(e)},i)})):Promise.reject({code:o,message:"Topic name must be a non-empty string"})}}},Ye={invoke:function(e,n,t){return Je.call(Ve(e),n,$e(t)).then(function(e){return e}).catch(function(e){return Promise.reject(f(e))})},notify:function(e,n,t){Je.notify(Ve(e),n,$e(t))},stream:function(e,n,t){return Ke(Je.stream(Ve(e),n,$e(t)))},channel:function(e,n,t){return Je.channel.open(Ve(e),n,$e(t)).then(function(e){return function(e){var n=new Set,t=new Set;return e.on("data",function(e){for(var t=0,r=n;t<r.length;t++){(0,r[t])(e)}}),e.on("close",function(e,n){for(var r={code:e,reason:n},o=0,i=t;o<i.length;o++){(0,i[o])(r)}}),{send:function(n){e.send(n)},onMessage:function(e){return n.add(e),function(){n.delete(e)}},onClose:function(e){return t.add(e),function(){t.delete(e)}},close:function(n,t){e.close(n,t)}}}(e)}).catch(function(e){return Promise.reject(f(e))})},raw:Je,state:{subscribe:Le},_connectWebMessagePort:function(e){if(B===I){if(R&&R!==e)try{R.onmessage=null,R.close()}catch(e){}R=e,e.onmessage=function(e){var n=e.data;if("string"==typeof n)try{n=JSON.parse(n)}catch(e){return}Pe(n)};try{e.start()}catch(e){}M("Port connected"),Me()}},_receiveEvaluateMessage:function(e){try{e&&Pe(JSON.parse(e))}catch(e){A("Parse error:",e)}},debug:(We=S,ze={},Object.keys(We).forEach(function(e){Object.defineProperty(ze,e,{enumerable:!0,configurable:!1,get:function(){return We[e]},set:function(n){We[e]=!!n,console.log("[LX] ".concat(e,": ").concat(n))}})}),ze),platform:{isHarmony:function(){return"Harmony"===p.os},isIOS:h,isAndroid:function(){return"Android"===p.os},isMacOS:g,isWindows:y,isDesktop:function(){return g()||y()},getOS:m},dom:{measureById:function(e){try{if(!e)return null;var n=document.getElementById(e);if(!n)return null;var t=n.getBoundingClientRect(),r=0;try{r=parseFloat(getComputedStyle(n).borderRadius)||0}catch(e){}return[t.left+window.scrollX,t.top+window.scrollY,t.width,t.height,r]}catch(e){return null}}},nativeComponents:{send:He,hasHandler:Xe,flush:Fe,register:function(e,n){return e&&"function"==typeof n?(Be.set(e,n),function(){return Be.delete(e)}):function(){}},unregister:function(e){Be.delete(e)}},isReady:function(){return ee}};function Ve(e){return e.startsWith("host.")?e:"host.".concat(e)}function $e(e){return __assign(__assign({},e||{}),{cap:(null==e?void 0:e.cap)||"host"})}function Ke(e){var n=new Set,t=new Set;return e.on("data",function(e){for(var t=0,r=n;t<r.length;t++){(0,r[t])(e)}}),e.on("error",function(e){for(var n=f(e),r=0,o=t;r<o.length;r++){(0,o[r])(n)}}),{onEvent:function(e){return n.add(e),function(){n.delete(e)}},onError:function(e){return t.add(e),function(){t.delete(e)}},result:e.result.catch(function(e){return Promise.reject(f(e))}),cancel:function(){e.cancel()}}}function Qe(){if(window.__LX_BRIDGE_INIT_STATE)M("Bridge already ".concat(window.__LX_BRIDGE_INIT_STATE,", skipping duplicate init"));else{window.__LX_BRIDGE_INIT_STATE="initializing";try{M("Method: ".concat(B)),function(e){if("undefined"!=typeof window&&(window[w]=e,0!==T.length))for(var n=0,t=T.splice(0,T.length);n<t.length;n++){var r=t[n];try{e(r)}catch(e){j("Failed to replay queued native message:",e)}}}(Ye._receiveEvaluateMessage),J()?K():B===I?(W(),function(){var e,n;if(R)return Promise.resolve(R);if(q.promise)return q.promise;W(),q.promise=new Promise(function(e,n){q.resolve=function(n){z(),e(n)},q.reject=function(e){z(),n(e)},q.timer=window.setTimeout(function(){var e;null===(e=q.reject)||void 0===e||e.call(q,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=q.reject)||void 0===n||n.call(q,e)}return q.promise}().catch(function(e){return j("Port init failed:",e)})):"webkit"===B||B===k||B===E?Me():j("Unknown method"),window.LingXiaBridge=Ye,v({os:m(),send:He}),window.__LX_BRIDGE_INIT_STATE="initialized",M("Init complete")}catch(e){throw delete window.__LX_BRIDGE_INIT_STATE,e}}}function Ze(e){var n=document.createElement("div");return n.textContent=e,n.innerHTML}function en(e){var n=e.failedPath,t=e.reason,r=document.createElement("style");r.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(r),document.body.innerHTML="",document.body.style.cssText="";var o=document.createElement("div");o.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(Ze(n),"</div>")),t&&(i+='<p class="lx-error-desc" style="margin-top:12px">'.concat(Ze(t),"</p>")),o.innerHTML=i,document.body.appendChild(o)}function nn(){var e=window.__LX_RUNTIME_CONFIG;return!(!e||!e.error)}function tn(){var e;return(null===(e=window.__LX_RUNTIME_CONFIG)||void 0===e?void 0:e.error)||null}var rn={handleEvent:function(){return on()}};function on(){if(nn()){var e=tn();e&&en(e)}}function an(){Qe(),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",rn):on()}return an(),e.LingXiaBridge=Ye,e.boot=function(){Qe(),on()},e.bootWhenReady=an,e.channel=function(e,n,t){return Ye.channel(e,n,t)},e.getErrorInfo=tn,e.hasError=nn,e.initBridge=Qe,e.invoke=function(e,n,t){return Ye.invoke(e,n,t)},e.isNativeError=function(e,n){if(!e||"object"!=typeof e)return!1;var t=e;return"string"==typeof t.code&&""!==t.code.trim()&&("string"==typeof t.message&&(void 0===n||t.code===n))},e.notify=function(e,n,t){Je.notify(Ve(e),n,$e(t))},e.renderErrorUI=en,e.stream=function(e,n,t){return Ke(Je.stream(Ve(e),n,$e(t)))},e}({});
|
|
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 r(){this.constructor=n}e(n,t),n.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}}(),__assign=this&&this.__assign||function(){return __assign=Object.assign||function(e){for(var n,t=1,r=arguments.length;t<r;t++)for(var o in n=arguments[t])Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o]);return e},__assign.apply(this,arguments)},__awaiter=this&&this.__awaiter||function(e,n,t,r){return new(t||(t=Promise))(function(o,i){function a(e){try{l(r.next(e))}catch(e){i(e)}}function c(e){try{l(r.throw(e))}catch(e){i(e)}}function l(e){var n;e.done?o(e.value):(n=e.value,n instanceof t?n:new t(function(e){e(n)})).then(a,c)}l((r=r.apply(e,n||[])).next())})},__generator=this&&this.__generator||function(e,n){var t,r,o,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},a=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return a.next=c(0),a.throw=c(1),a.return=c(2),"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function c(c){return function(l){return function(c){if(t)throw new TypeError("Generator is already executing.");for(;a&&(a=0,c[0]&&(i=0)),i;)try{if(t=1,r&&(o=2&c[0]?r.return:c[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,c[1])).done)return o;switch(r=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return i.label++,{value:c[1],done:!1};case 5:i.label++,r=c[1],c=[0];continue;case 7:c=i.ops.pop(),i.trys.pop();continue;default:if(!(o=i.trys,(o=o.length>0&&o[o.length-1])||6!==c[0]&&2!==c[0])){i=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){i.label=c[1];break}if(6===c[0]&&i.label<o[1]){i.label=o[1],o=c;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(c);break}o[2]&&i.ops.pop(),i.trys.pop();continue}c=n.call(e,i)}catch(e){c=[6,e],r=0}finally{t=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}([c,l])}}},__spreadArray=this&&this.__spreadArray||function(e,n,t){if(t||2===arguments.length)for(var r,o=0,i=n.length;o<i;o++)!r&&o in n||(r||(r=Array.prototype.slice.call(n,0,o)),r[o]=n[o]);return e.concat(r||Array.prototype.slice.call(n))},__LX_RUNTIME_PLATFORM__="mobile",__LingXiaBridgeBundle=function(e){var n;Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});var t="BRIDGE_TIMEOUT",r="BRIDGE_CANCELED",o="BRIDGE_HANDSHAKE_FAILED",i="BRIDGE_MALFORMED_MESSAGE",a="BRIDGE_METHOD_NOT_FOUND",c="BRIDGE_CAPABILITY_DENIED",l="BRIDGE_INTERNAL_ERROR",s="BRIDGE_OUTBOX_FULL",d="BRIDGE_STREAM_CLOSED",u=function(e){function n(n,t,r){var o=e.call(this,t)||this;return o.name="BridgeInvocationError",o.code=n,o.data=r,o}return __extends(n,e),n}(Error);function f(e){if(e instanceof u)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 r="string"==typeof n.message&&""!==n.message.trim()?n.message:"Unknown error";return new u(t,r,"data"in n?n.data:void 0)}var o=e instanceof Error?e.message:"string"==typeof e?e:"Unknown error";return new u(l,o)}function v(e){var n=f(e);return __assign({code:String(n.code||l),message:"string"==typeof n.message&&""!==n.message.trim()?n.message:"Unknown error"},void 0===n.data?{}:{data:n.data})}function p(e){var n,t=e.os,r=e.send;if("undefined"!=typeof window&&"undefined"!=typeof document){var o="iOS"===t;if(o||"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 c={handleEvent:function(){(a.hasAnyVideo||0!==a.coveredById.size)&&u()}},l={handleEvent:function(){return u()}};window.addEventListener("scroll",c,{capture:!0,passive:!0}),window.addEventListener("resize",l),u()}}}function s(e){var n,t,r=null===(n=e.getBoundingClientRect)||void 0===n?void 0:n.call(e);if(!r)return!1;if(r.width<2||r.height<2)return!1;var o=r.left+r.width/2,i=r.top+r.height/2;if(o<0||i<0||o>=window.innerWidth||i>=window.innerHeight)return!1;var a=null===(t=document.elementFromPoint)||void 0===t?void 0:t.call(document,o,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 c=i[t];if(m=c.id){n.add(m);var l=s(c),d=a.coveredById.get(m);d!==l&&(!0===d&&(a.coveredCount-=1),!0===l&&(a.coveredCount+=1),a.coveredById.set(m,l),r({id:m,action:"component.coverage",covered:l}))}}for(var u=[],f=0,v=a.coveredById.entries();f<v.length;f++){var p=v[f],m=p[0];l=p[1];n.has(m)||(u.push(m),!0===l&&(a.coveredCount-=1))}for(var h=0,g=u;h<g.length;h++){m=g[h];a.coveredById.delete(m),r({id:m,action:"component.coverage",covered:!1})}var y=a.coveredCount>0;y!==a.anyCovered&&(a.anyCovered=y,o&&(y?function(){if(o&&!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(o&&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||{},h={value:(null===(n=m.displayLanguage)||void 0===n?void 0:n.trim())||"en-US",listeners:new Set};function g(){var e;return"undefined"==typeof window?h:(window.__lxDisplayLanguage||(window.__lxDisplayLanguage={value:(null===(e=m.displayLanguage)||void 0===e?void 0:e.trim())||"en-US",listeners:new Set}),window.__lxDisplayLanguage)}function y(){"undefined"!=typeof document&&document.documentElement&&(document.documentElement.lang=g().value)}function w(){return m.os||"unknown"}function b(){return"iOS"===m.os}function _(){return"macOS"===m.os}function I(){return"Windows"===m.os}y(),"undefined"==typeof window||window.__lingxiaApplyDisplayLanguage||Object.defineProperty(window,"__lingxiaApplyDisplayLanguage",{configurable:!1,enumerable:!1,value:function(e){var n="string"==typeof e?e.trim():"",t=g();if(n&&n!==t.value){t.value=n,y();for(var r=0,o=__spreadArray([],t.listeners,!0);r<o.length;r++){(0,o[r])()}}}});var k="__LingXiaRecvMessage",E=5e3,x="[LX.Bridge]",S="messageport",L="jsinterface",T="webmessage",A=m.appleDownstreamURL,O={data:!1,proto:!1,all:!1},M=[];function j(e){return O.all||O[e]}function C(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];(!0===m.dev||O.all||O.proto||O.data)&&console.log.apply(console,__spreadArray([x],e,!1))}function N(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];console.warn.apply(console,__spreadArray([x],e,!1))}function P(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];console.error.apply(console,__spreadArray([x],e,!1))}function B(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 D(e){try{return"function"==typeof structuredClone?structuredClone(e):JSON.parse(JSON.stringify(e))}catch(e){return{}}}var R=function(){var e,n;return"iOS"===m.os||"macOS"===m.os?"webkit":"Harmony"===m.os?"messageport":"Windows"===m.os?"webmessage":"Android"===m.os?(null===(n=null===(e=window.LingXiaProxy)||void 0===e?void 0:e.supportsMessagePort)||void 0===n?void 0:n.call(e))?"messageport":"jsinterface":"unknown"}();"undefined"!=typeof window&&"function"!=typeof window[k]&&(window[k]=function(e){M.push(e)});var X=null,F=!1,G=null,H=null,q=null,U=200,W=!1,z=0,J=0,Y=null,V={listenerInstalled:!1,promise:null,resolve:null,reject:null,timer:null},$={handleEvent:function(e){var n,t,r=e;if("LingXia-port-init"===r.data){var o=null===(n=r.ports)||void 0===n?void 0:n[0];o&&(an._connectWebMessagePort(o),null===(t=V.resolve)||void 0===t||t.call(V,o))}}};function K(){V.listenerInstalled||(V.listenerInstalled=!0,window.addEventListener("message",$))}function Q(){null!==V.timer&&(window.clearTimeout(V.timer),V.timer=null),V.resolve=null,V.reject=null,V.promise=null}function Z(){return"webkit"===R&&(b()||_())}function ee(){null!==q&&(clearTimeout(q),q=null)}function ne(e){Z()&&!W&&(W=!0,ee(),null!==Y&&(clearInterval(Y),Y=null),"undefined"!=typeof document&&document.removeEventListener("visibilitychange",se),ce=!1,null==H||H.abort(),F=!1,re(e,!0))}function te(e){for(var n=0,t=Array.from(be.keys());n<t.length;n++){Ce(t[n],{code:d,message:e})}for(var r=0,o=Array.from(_e.keys());r<o.length;r++){Ne(o[r],{code:d,message:e})}!function(e){for(var n=0,t=Array.from(Ie.entries());n<t.length;n++){var r=t[n],o=r[0],i=r[1];Ie.delete(o),i._emitClose(d,e)}}(e)}function re(e,n){Xe(),ue=null,fe=!1,ve=!1,pe=0,n&&te(e)}function oe(e){if(e&&"object"==typeof e){J=Date.now();var n=e;if(!0!==n.lxshutdown){if(void 0===n.lxhb){if(!0===n.lxreset)return z=0,re("Apple downstream reset",!0),void Fe();if("number"==typeof n.lxff){if(n.lxff<=z)return;return z=n.lxff,void ze(n.m)}ze(e)}}else ne("Apple downstream closed")}}function ie(){return __awaiter(this,void 0,void 0,function(){var e,n,t,r,o,i,a,c,l,s,d;return __generator(this,function(u){switch(u.label){case 0:if(!A)throw new Error("Apple downstream URL is not configured");return e=new AbortController,H=e,n=A.includes("?")?"&":"?",t="".concat(A).concat(n,"from=").concat(z),[4,fetch(t,{method:"GET",cache:"no-store",headers:{Accept:"application/x-ndjson"},signal:e.signal})];case 1:if(!(r=u.sent()).ok)throw new Error("Apple downstream HTTP ".concat(r.status));if("1"===r.headers.get("X-LingXia-Bridge-Shutdown"))return ne("Apple downstream closed"),[2];if(!r.body)throw new Error("Apple downstream response body unavailable");F=!0,U=200,J=Date.now(),j("proto")&&C("Apple downstream connected"),Fe(),o=r.body.getReader(),i=new TextDecoder,a="",u.label=2;case 2:u.trys.push([2,6,7,8]),u.label=3;case 3:return[4,o.read()];case 4:return c=u.sent(),l=c.value,c.done?[3,5]:(a=function(e){for(var n=e;;){var t=n.indexOf("\n");if(t<0)break;var r=n.slice(0,t).trim();if(n=n.slice(t+1),r)try{oe(JSON.parse(r))}catch(e){N("Apple downstream parse error:",e,r)}}return n}(a+=i.decode(l,{stream:!0})),[3,3]);case 5:if(a+=i.decode(),s=a.trim())try{oe(JSON.parse(s))}catch(e){N("Apple downstream trailing parse error:",e,s)}return[3,8];case 6:if(d=u.sent(),e.signal.aborted)return[2];throw d;case 7:try{o.releaseLock()}catch(e){}return[7];case 8:return[2]}})})}function ae(){if(Z()&&!W&&!G){ee();var e=!1;G=ie().then(function(){e=!0}).catch(function(e){(null==H?void 0:H.signal.aborted)||N("Apple downstream failed:",e)}).finally(function(){var n,t=null!==(n=null==H?void 0:H.signal.aborted)&&void 0!==n&&n;G=null,H=null,F=!1,t||W||function(e,n){if(void 0===n&&(n=!1),Z()&&!W){ee();var t=n?0:U;n||(U=Math.min(2*U,2e3));var r=n?"Apple downstream completed, reconnecting immediately: ".concat(e):"Apple downstream disconnected, retrying in ".concat(t,"ms: ").concat(e);t<=200?C(r):N(r),q=setTimeout(function(){q=null,ae()},t)}}("stream closed",e)})}}var ce=!1;function le(){if(Z()&&!W&&!ce){ce=!0;var e=G;null==H||H.abort();var n=function(){ce=!1,ae()};e?e.finally(n):n()}}function se(){"visible"===document.visibilityState&&le()}function de(e){var n,t,r,o=e.kind;"req"!==o&&"notify"!==o||C("postToNative: ".concat(o," ").concat(e.method)),j("proto")&&console.log("→",JSON.stringify(e,null,2));try{if("webkit"===R)return void(null===(t=null===(n=window.webkit)||void 0===n?void 0:n.messageHandlers.LingXia)||void 0===t||t.postMessage(e));var i=B(e);if(R===S&&X)return void X.postMessage(i);if((R===L||R===T)&&(null===(r=window.LingXiaProxy)||void 0===r?void 0:r.postMessage))return void window.LingXiaProxy.postMessage(i);N("Transport not ready")}catch(e){P("Send error:",e)}}var ue=null,fe=!1,ve=!1,pe=0,me=null,he={},ge=0;function ye(){return{data:new Set,end:new Set,error:new Set,close:new Set}}function we(e,n){var t,r=ye(),o=!1,i=!1,a=function(){},c=function(){},l=[],s=[],d=new Promise(function(e,n){a=e,c=n});return(t={id:e,result:d,on:function(e,n){return"data"===e&&r.data.add(n),"end"===e&&r.end.add(n),"error"===e&&r.error.add(n),this}})[Symbol.asyncIterator]=function(){return i=!0,{next:function(){return l.length>0?Promise.resolve({done:!1,value:l.shift()}):o?d.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(){o||n()},t._emitData=function(e){if(!o){s.length>0?s.shift().resolve({done:!1,value:e}):i&&l.push(e);for(var n=0,t=r.data;n<t.length;n++){var a=t[n];try{a(e)}catch(e){N("Stream data listener failed:",e)}}}},t._resolve=function(e){if(!o){for(o=!0,a(e);s.length>0;)s.shift().resolve({done:!0,value:e});for(var n=0,t=r.end;n<t.length;n++){var i=t[n];try{i(e)}catch(e){N("Stream end listener failed:",e)}}}},t._reject=function(e){if(!o){for(o=!0,c(e);s.length>0;)s.shift().reject(e);for(var n=0,t=r.error;n<t.length;n++){var i=t[n];try{i(e)}catch(e){N("Stream error listener failed:",e)}}}},t}var be=new Map,_e=new Map,Ie=new Map,ke=[],Ee=-1,xe={},Se=new Set,Le=new WeakMap,Te=new Map;function Ae(e){if(e.startsWith("host."))return"host";var n=e.indexOf(".");return n>0?e.slice(0,n):"page"}function Oe(e){if(null!=e)return e}function Me(){return R===S?!!X:Z()?F:"webkit"===R||R===L||R===T}function je(){return!!fe&&(!!Z()||Me())}function Ce(e,n){var t,r=be.get(e);if(r){be.delete(e),null!==r.timerId&&clearTimeout(r.timerId);var o=f(n);if("stream"===r.mode&&r.stream)return void r.stream._reject(o);null===(t=r.reject)||void 0===t||t.call(r,o)}}function Ne(e,n){var t=_e.get(e);if(t){_e.delete(e),null!==t.timerId&&clearTimeout(t.timerId);var r=f(n);t.channel._reject(r),t.reject(r)}}function Pe(e,n){be.has(e)?Ce(e,n):_e.has(e)&&Ne(e,n)}function Be(e){if(be.has(e))return n=e,void((r=be.get(n))&&(!Number.isFinite(r.timeoutMs)||r.timeoutMs<=0?null!==r.timerId&&(clearTimeout(r.timerId),r.timerId=null):(null!==r.timerId&&clearTimeout(r.timerId),r.timerId=setTimeout(function(){be.has(n)&&Ce(n,{code:t,message:"'".concat(r.method,"' timed out")})},r.timeoutMs))));var n,r;_e.has(e)&&function(e){var n=_e.get(e);n&&(null!==n.timerId&&clearTimeout(n.timerId),n.timerId=setTimeout(function(){Ne(e,{code:t,message:"Channel '".concat(n.topic,"' timed out")})},E))}(e)}function De(e){for(var n,t=ke.length-1;t>=0;t--)if((null===(n=ke[t])||void 0===n?void 0:n.reqId)===e)return ke.splice(t,1),!0;return!1}function Re(e,n){var t=e.kind,r="hello"===t||"helloAck"===t||"ready"===t;if(!je()&&!r)return ke.length>=256?(P("Outbox full"),void(n&&Pe(n,{code:s,message:"Bridge outbox is full"}))):void ke.push({msg:e,reqId:n});n&&Be(n),de(e)}function Xe(){null!==me&&(clearTimeout(me),me=null)}function Fe(){if(!fe&&Me()){Xe();var e={v:2,kind:"hello",nonce:m.nonce||"",role:"view",protocolsSupported:[2]};ve=!0,de(e),me=setTimeout(function(){if(!fe)if(++pe<3)N("Handshake timeout (".concat(pe,"/").concat(3,"), retrying...")),ve=!1,Fe();else{for(P("Handshake failed"),Xe(),ve=!1,pe=0;ke.length;){var e=ke.shift();(null==e?void 0:e.reqId)&&Pe(e.reqId,{code:o,message:"Bridge handshake failed"})}for(var n=0,t=Array.from(_e.keys());n<t.length;n++){Ne(t[n],{code:o,message:"Bridge handshake failed"})}}},1e4)}}function Ge(e){return e.replace(/~1/g,"/").replace(/~0/g,"~")}function He(e,n,t){void 0===t&&(t=!1);var r=function(e){if(""===e)return[];if(!e.startsWith("/"))throw new Error("Invalid JSON pointer: ".concat(e));return e.split("/").slice(1).map(Ge)}(n);if(0===r.length)return{container:{$root:e},key:"$root"};for(var o=e,i=0;i<r.length-1;i++){var a=r[i];if(Array.isArray(o))o=o[Number(a)];else{if(!o||"object"!=typeof o)throw new Error("Invalid container at ".concat(a));var c=o;if(t&&void 0===c[a]){var l=r[i+1];c[a]=l&&/^\d+$/.test(l)?[]:{}}o=c[a]}}return{container:o,key:r[r.length-1]}}function qe(e){Se.forEach(function(n){try{if(!Le.has(n))return Le.set(n,!0),void n(D(xe),{rev:Ee,initial:!0});n(D(xe),{rev:Ee,initial:e})}catch(e){N("Subscriber error:",e)}})}function Ue(e){if("function"!=typeof e)return function(){};if(Se.add(e),Ee>=0){Le.set(e,!0);try{e(D(xe),{rev:Ee,initial:!0})}catch(e){P("Callback error:",e)}}return function(){Se.delete(e),Le.delete(e)}}function We(e){on.call("state.getSnapshot",{scope:e}).catch(function(){})}function ze(e){var n,t,r,o;if(e&&"object"==typeof e){var i=e;if("event"===i.type&&"nativecomponent"===i.name&&i.payload){var l=i.payload,s=l.id||l.componentId;if("string"==typeof s){var u=Je.get(s);if(u)try{u(l)}catch(e){P("NC handler error:",e)}}return}}var v=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(v)switch(v.kind){case"helloAck":return void(ue=v.sessionId);case"ready":if(ue&&v.sessionId!==ue)return void N("sessionId mismatch");if(Xe(),fe=!0,pe=0,v.hostMethods)for(var p=0,m=Object.entries(v.hostMethods);p<m.length;p++){var h=m[p],g=h[0],y=h[1];he[g]=y}return j("proto")&&C("Handshake complete, hostMethods:",Object.keys(he).length),void function(){if(je())for(;ke.length;){var e=ke.shift();e&&(e.reqId&&Be(e.reqId),de(e.msg))}}();case"res":var w=be.get(v.id);if(!w)return;if(be.delete(v.id),null!==w.timerId&&clearTimeout(w.timerId),v.ok){if("state.getSnapshot"===w.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||(xe=n.state,Ee=n.rev,j("data")&&(console.group("[LX] snapshot(res)"),console.log("rev:",Ee,"state:",D(xe)),console.groupEnd()),qe(!0),0))}(v.result)||N("Invalid state.getSnapshot result")),"stream"===w.mode&&w.stream)return void w.stream._resolve(v.result);null===(n=w.resolve)||void 0===n||n.call(w,v.result)}else{var b=f(v.error);if("stream"===w.mode&&w.stream)return void w.stream._reject(b);null===(t=w.reject)||void 0===t||t.call(w,b)}return;case"event":if(be.has(v.id)){var _=be.get(v.id);return void("stream"===(null==_?void 0:_.mode)&&_.stream?(null!==_.timerId&&(clearTimeout(_.timerId),_.timerId=null),_.timeoutMs=0,_.stream._emitData(v.payload)):N("Received event for non-stream request '".concat(v.id,"'")))}return;case"state.snapshot":return xe=v.state||{},Ee=v.rev,j("data")&&(console.group("[LX] snapshot"),console.log("rev:",Ee,"state:",D(xe)),console.groupEnd()),void qe(!0);case"state.patch":if(v.baseRev!==Ee)return N("baseRev mismatch",{have:Ee,want:v.baseRev}),void We(v.scope);try{!function(e,n){for(var t=0,r=n;t<r.length;t++){var o=r[t],i="add"===o.op||"replace"===o.op,a=He(e,o.path,i),c=a.container,l=a.key;if("$root"!==l)if(Array.isArray(c)){var s="-"===l?c.length:Number(l);if(!Number.isFinite(s)||s<0)throw new Error("Invalid index");"remove"===o.op?c.splice(s,1):"add"===o.op?c.splice(s,0,o.value):"replace"===o.op&&(c[s]=o.value)}else{if(!c||"object"!=typeof c)throw new Error("Invalid container");var d=c;"remove"===o.op?delete d[l]:d[l]=o.value}else{for(var u=0,f=Object.keys(e);u<f.length;u++)delete e[f[u]];if("remove"!==o.op){var v=o.value;v&&"object"==typeof v&&Object.assign(e,v)}}}}(xe,v.ops||[]),Ee=v.rev}catch(e){return P("Patch failed:",e),void We(v.scope)}return j("data")&&(console.group("[LX] patch"),console.log("rev:",Ee,"ops:",v.ops),console.groupEnd()),qe(!1),void(v.ack&&Re({v:2,kind:"state.ack",scope:v.scope,rev:v.rev}));case"ch.ack":var I=_e.get(v.id);if(!I)return;if(_e.delete(v.id),null!==I.timerId&&clearTimeout(I.timerId),v.ok)I.channel._markOpen(),Ie.set(v.id,I.channel),I.resolve(I.channel);else{b=f(v.error);I.channel._reject(b),I.reject(b)}return;case"ch.data":var k=Ie.get(v.id);if(!k)return;return void k._emitData(v.payload);case"ch.close":if(_e.get(v.id))return void Ne(v.id,{code:null!==(r=v.code)&&void 0!==r?r:d,message:null!==(o=v.reason)&&void 0!==o?o:"Channel closed before opening"});var E=Ie.get(v.id);if(!E)return;return Ie.delete(v.id),void E._emitClose(v.code,v.reason);case"req":var x=v,S=Ae(x.method);if(!x.cap||x.cap!==S)return void Re({v:2,kind:"res",id:x.id,ok:!1,error:{code:c,message:"Invalid cap for ".concat(x.method)}});var L=Te.get(x.method);return L?void Promise.resolve().then(function(){return L(x.params)}).then(function(e){Re({v:2,kind:"res",id:x.id,ok:!0,result:e})}).catch(function(e){Re({v:2,kind:"res",id:x.id,ok:!1,error:f(e)})}):void Re({v:2,kind:"res",id:x.id,ok:!1,error:{code:a,message:"View handler not found: ".concat(x.method)}})}else N("Invalid V2 message:",e)}var Je=new Map,Ye=[],Ve=!1;function $e(){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 Ke(e){var n,t,r;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===(r=window.NativeComponentBridge)||void 0===r?void 0:r.postMessage)return void window.NativeComponentBridge.postMessage(B(e))}catch(e){P("NativeComponent send error:",e)}}function Qe(){if($e()&&0!==Ye.length)for(Ve=!0;Ye.length;){var e=Ye.shift();try{Ke(e)}catch(e){break}}}function Ze(e){try{if(!$e())return void Ye.push(e);Ve||Qe(),Ke(e)}catch(e){P("NC send failed:",e)}}function en(e){return"".concat(e,"_").concat(Date.now(),"_").concat(ge++)}function nn(e,n,t){if(n)if(n.aborted)t();else{var r={handleEvent:function(){n.removeEventListener("abort",r),t()}};n.addEventListener("abort",r)}}var tn,rn,on={call:function(e,n,t){return new Promise(function(o,a){var c;if(e&&"string"==typeof e){ve||Fe();var l=en("c"),s=(null==t?void 0:t.cap)||Ae(e),d=null!==(c=null==t?void 0:t.timeoutMs)&&void 0!==c?c:E;be.set(l,{method:e,mode:"call",resolve:o,reject:function(e){return a(e)},timeoutMs:d,timerId:null}),Re({v:2,kind:"req",id:l,method:e,params:Oe(n),cap:s},l),nn(0,null==t?void 0:t.signal,function(){var e=De(l);Ce(l,{code:r,message:"Bridge request aborted"}),!e&&fe&&Re({v:2,kind:"cancel",id:l})})}else a({code:i,message:"Method name must be a non-empty string"})})},stream:function(e,n,t){var o;if(!e||"string"!=typeof e){var a=we("invalid",function(){});return a._reject({code:i,message:"Method name must be a non-empty string"}),a}ve||Fe();var c=en("c"),l=we(c,function(){De(c)?Ce(c,{code:r,message:"Bridge request aborted"}):fe&&Re({v:2,kind:"cancel",id:c})}),s=(null==t?void 0:t.cap)||Ae(e),d=null!==(o=null==t?void 0:t.timeoutMs)&&void 0!==o?o:E;return be.set(c,{method:e,mode:"stream",stream:l,timeoutMs:d,timerId:null}),Re({v:2,kind:"req",id:c,method:e,params:Oe(n),cap:s},c),nn(0,null==t?void 0:t.signal,function(){return l.cancel()}),l},notify:function(e,n,t){e&&"string"==typeof e&&(ve||Fe(),Re({v:2,kind:"notify",method:e,params:Oe(n),cap:(null==t?void 0:t.cap)||Ae(e)}))},state:{subscribe:Ue},channel:{open:function(e,n,t){return e&&"string"==typeof e?(ve||Fe(),new Promise(function(r,o){var i=en("ch"),a=function(e,n,t){var r,o=ye(),i=!1,a=0,c=!1,l=!1,s=[],u=[],f=((r={id:e,send:function(t){i?n(t,a++):f._reject({code:d,message:"Channel '".concat(e,"' is closed")})},on:function(e,n){if("data"===e&&(o.data.add(n),s.length>0))for(var t=0,r=s.splice(0);t<r.length;t++){var i=r[t];try{n(i)}catch(e){N("Channel listener failed:",e)}}return"close"===e&&o.close.add(n),"error"===e&&o.error.add(n),this}})[Symbol.asyncIterator]=function(){return l=!0,{next:function(){return s.length>0?Promise.resolve({done:!1,value:s.shift()}):c?Promise.resolve({done:!0,value:void 0}):new Promise(function(e,n){u.push({resolve:e,reject:n})})}}},r.close=function(e,n){i&&(i=!1,c=!0,t(e,n),f._emitClose(e,n))},r._emitData=function(e){if(i){u.length>0?u.shift().resolve({done:!1,value:e}):(l||0===o.data.size)&&s.push(e);for(var n=0,t=o.data;n<t.length;n++){var r=t[n];try{r(e)}catch(e){N("Channel listener failed:",e)}}}},r._emitClose=function(e,n){for(c=!0;u.length>0;)u.shift().resolve({done:!0,value:void 0});for(var t=0,r=o.close;t<r.length;t++){var i=r[t];try{i(e,n)}catch(e){N("Channel close listener failed:",e)}}},r._reject=function(e){for(c=!0;u.length>0;)u.shift().reject(e);for(var n=0,t=o.error;n<t.length;n++){var r=t[n];try{r(e)}catch(e){N("Channel error listener failed:",e)}}},r._markOpen=function(){i=!0,c=!1},r._isOpen=function(){return i},r._nextSeq=function(){return a++},r);return f}(i,function(e,n){Re({v:2,kind:"ch.data",id:i,seq:n,payload:e})},function(e,n){var t=_e.get(i);t&&null!==t.timerId&&clearTimeout(t.timerId),_e.delete(i),Ie.delete(i),Re({v:2,kind:"ch.close",id:i,code:e,reason:n})});_e.set(i,{topic:e,channel:a,resolve:r,reject:o,timerId:null}),Re({v:2,kind:"ch.open",id:i,topic:e,params:Oe(n),cap:(null==t?void 0:t.cap)||Ae(e)},i)})):Promise.reject({code:i,message:"Topic name must be a non-empty string"})}}},an={invoke:function(e,n,t){return on.call(cn(e),n,ln(t)).then(function(e){return e}).catch(function(e){return Promise.reject(v(e))})},notify:function(e,n,t){on.notify(cn(e),n,ln(t))},stream:function(e,n,t){return sn(on.stream(cn(e),n,ln(t)))},channel:function(e,n,t){return on.channel.open(cn(e),n,ln(t)).then(function(e){return function(e){var n=new Set,t=new Set;return e.on("data",function(e){for(var t=0,r=n;t<r.length;t++){(0,r[t])(e)}}),e.on("close",function(e,n){for(var r={code:e,reason:n},o=0,i=t;o<i.length;o++){(0,i[o])(r)}}),{send:function(n){e.send(n)},onMessage:function(e){return n.add(e),function(){n.delete(e)}},onClose:function(e){return t.add(e),function(){t.delete(e)}},close:function(n,t){e.close(n,t)}}}(e)}).catch(function(e){return Promise.reject(v(e))})},raw:on,state:{subscribe:Ue},_connectWebMessagePort:function(e){if(R===S){if(X&&X!==e)try{X.onmessage=null,X.close()}catch(e){}X=e,e.onmessage=function(e){var n=e.data;if("string"==typeof n)try{n=JSON.parse(n)}catch(e){return}ze(n)};try{e.start()}catch(e){}C("Port connected"),Fe()}},_receiveEvaluateMessage:function(e){try{e&&ze(JSON.parse(e))}catch(e){P("Parse error:",e)}},debug:(tn=O,rn={},Object.keys(tn).forEach(function(e){Object.defineProperty(rn,e,{enumerable:!0,configurable:!1,get:function(){return tn[e]},set:function(n){tn[e]=!!n,console.log("[LX] ".concat(e,": ").concat(n))}})}),rn),platform:{isHarmony:function(){return"Harmony"===m.os},isIOS:b,isAndroid:function(){return"Android"===m.os},isMacOS:_,isWindows:I,isDesktop:function(){return _()||I()},isApple:function(){return b()||_()},isRunner:function(){return!0===m.runner},getOS:w},dom:{measureById:function(e){try{if(!e)return null;var n=document.getElementById(e);if(!n)return null;var t=n.getBoundingClientRect(),r=0;try{r=parseFloat(getComputedStyle(n).borderRadius)||0}catch(e){}return[t.left+window.scrollX,t.top+window.scrollY,t.width,t.height,r]}catch(e){return null}}},nativeComponents:{send:Ze,hasHandler:$e,flush:Qe,register:function(e,n){return e&&"function"==typeof n?(Je.set(e,n),function(){return Je.delete(e)}):function(){}},unregister:function(e){Je.delete(e)}},isReady:function(){return fe}};function cn(e){return e.startsWith("host.")?e:"host.".concat(e)}function ln(e){return __assign(__assign({},e||{}),{cap:(null==e?void 0:e.cap)||"host"})}function sn(e){var n=new Set,t=new Set;return e.on("data",function(e){for(var t=0,r=n;t<r.length;t++){(0,r[t])(e)}}),e.on("error",function(e){for(var n=v(e),r=0,o=t;r<o.length;r++){(0,o[r])(n)}}),{onEvent:function(e){return n.add(e),function(){n.delete(e)}},onError:function(e){return t.add(e),function(){t.delete(e)}},result:e.result.catch(function(e){return Promise.reject(v(e))}),cancel:function(){e.cancel()}}}function dn(){if(window.__LX_BRIDGE_INIT_STATE)C("Bridge already ".concat(window.__LX_BRIDGE_INIT_STATE,", skipping duplicate init"));else{window.__LX_BRIDGE_INIT_STATE="initializing";try{C("Method: ".concat(R)),function(e){if("undefined"!=typeof window&&(window[k]=e,0!==M.length))for(var n=0,t=M.splice(0,M.length);n<t.length;n++){var r=t[n];try{e(r)}catch(e){N("Failed to replay queued native message:",e)}}}(an._receiveEvaluateMessage),Z()?(ae(),Z()&&!W&&null===Y&&(Y=setInterval(function(){0!==J&&Date.now()-J>35e3&&(N("Apple downstream stale (no heartbeat), forcing reconnect"),le())},5e3)),Z()&&"undefined"!=typeof document&&document.addEventListener("visibilitychange",se)):R===S?(K(),function(){var e,n;if(X)return Promise.resolve(X);if(V.promise)return V.promise;K(),V.promise=new Promise(function(e,n){V.resolve=function(n){Q(),e(n)},V.reject=function(e){Q(),n(e)},V.timer=window.setTimeout(function(){var e;null===(e=V.reject)||void 0===e||e.call(V,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=V.reject)||void 0===n||n.call(V,e)}return V.promise}().catch(function(e){return N("Port init failed:",e)})):"webkit"===R||R===L||R===T?Fe():N("Unknown method"),window.LingXiaBridge=an,window.__lxForceDownstreamReconnect=le,p({os:w(),send:Ze}),window.__LX_BRIDGE_INIT_STATE="initialized",C("Init complete")}catch(e){throw delete window.__LX_BRIDGE_INIT_STATE,e}}}function un(e){var n=document.createElement("div");return n.textContent=e,n.innerHTML}function fn(e){var n=e.failedPath,t=e.reason,r=document.createElement("style");r.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(r),document.body.innerHTML="",document.body.style.cssText="";var o=document.createElement("div");o.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(un(n),"</div>")),t&&(i+='<p class="lx-error-desc" style="margin-top:12px">'.concat(un(t),"</p>")),o.innerHTML=i,document.body.appendChild(o)}function vn(){var e=window.__LX_RUNTIME_CONFIG;return!(!e||!e.error)}function pn(){var e;return(null===(e=window.__LX_RUNTIME_CONFIG)||void 0===e?void 0:e.error)||null}var mn={handleEvent:function(){return hn()}};function hn(){if(vn()){var e=pn();e&&fn(e)}}function gn(){dn(),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",mn):hn()}return gn(),e.LingXiaBridge=an,e.boot=function(){dn(),hn()},e.bootWhenReady=gn,e.channel=function(e,n,t){return an.channel(e,n,t)},e.getDisplayLanguage=function(){return g().value},e.getErrorInfo=pn,e.hasError=vn,e.initBridge=dn,e.invoke=function(e,n,t){return an.invoke(e,n,t)},e.isNativeError=function(e,n){if(!e||"object"!=typeof e)return!1;var t=e;return"string"==typeof t.code&&""!==t.code.trim()&&("string"==typeof t.message&&(void 0===n||t.code===n))},e.notify=function(e,n,t){on.notify(cn(e),n,ln(t))},e.renderErrorUI=fn,e.stream=function(e,n,t){return sn(on.stream(cn(e),n,ln(t)))},e.subscribeDisplayLanguage=function(e){var n=g().listeners;return n.add(e),function(){n.delete(e)}},e}({});
|