@lingxia/bridge 0.9.0 → 0.11.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bridge-runtime.es2020.js +1 -1
- package/dist/bridge-runtime.es5.js +1 -1
- package/dist/es2020/bridge.js +225 -24
- package/dist/es2020/index.js +1 -0
- package/dist/es2020/runtime-env.js +31 -1
- package/dist/es2020/ui/action-sheet.js +2 -2
- package/dist/es5/bridge.js +274 -62
- package/dist/es5/index.js +1 -0
- package/dist/es5/runtime-env.js +32 -1
- package/dist/es5/ui/action-sheet.js +2 -2
- package/dist/index.d.ts +1 -0
- package/dist/runtime-env.d.ts +6 -1
- package/dist/types.d.ts +8 -1
- package/package.json +2 -2
|
@@ -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}const y="__LingXiaRecvMessage",x=5e3,w="[LX.Bridge]",b="messageport",k="jsinterface",E=p.appleDownstreamURL,I={data:!1,proto:!1,all:!1},C=[];function _(e){return I.all||I[e]}function T(...e){console.log(w,...e)}function L(...e){console.warn(w,...e)}function S(...e){console.error(w,...e)}function M(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 N(e){try{return"function"==typeof structuredClone?structuredClone(e):JSON.parse(JSON.stringify(e))}catch{return{}}}const A="iOS"===p.os||"macOS"===p.os?"webkit":"Harmony"===p.os?"messageport":"Android"===p.os?window.LingXiaProxy?.supportsMessagePort?.()?"messageport":"jsinterface":"unknown";"undefined"!=typeof window&&"function"!=typeof window[y]&&(window[y]=e=>{C.push(e)});let B=null,O=!1,j=null,P=null,R=null,F=200;const D={listenerInstalled:!1,promise:null,resolve:null,reject:null,timer:null},X={handleEvent:e=>{const t=e;if("LingXia-port-init"!==t.data)return;const n=t.ports?.[0];n&&(qe._connectWebMessagePort(n),D.resolve?.(n))}};function $(){D.listenerInstalled||(D.listenerInstalled=!0,window.addEventListener("message",X))}function H(){null!==D.timer&&(window.clearTimeout(D.timer),D.timer=null),D.resolve=null,D.reject=null,D.promise=null}function q(){return"webkit"===A&&(g()||v())}function z(){null!==R&&(clearTimeout(R),R=null)}function G(e){for(const t of Array.from(re.keys()))ye(t,{code:c,message:e});for(const t of Array.from(ie.keys()))xe(t,{code:c,message:e});!function(e){for(const[t,n]of Array.from(se.entries()))se.delete(t),n._emitClose(c,e)}(e)}function U(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{Ae(JSON.parse(n))}catch(e){L("Apple downstream parse error:",e,n)}}return t}function W(){q()&&(j||(z(),j=async function(){if(!E)throw new Error("Apple downstream URL is not configured");const e=new AbortController;P=e;const t=await fetch(E,{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");O=!0,F=200,_("proto")&&T("Apple downstream connected"),_e();const n=t.body.getReader(),o=new TextDecoder;let r="";try{for(;;){const{value:e,done:t}=await n.read();if(t)break;r+=o.decode(e,{stream:!0}),r=U(r)}r+=o.decode();const e=r.trim();if(e)try{Ae(JSON.parse(e))}catch(t){L("Apple downstream trailing parse error:",t,e)}}catch(t){if(e.signal.aborted)return;throw t}finally{try{n.releaseLock()}catch{}}}().catch(e=>{P?.signal.aborted||L("Apple downstream failed:",e)}).finally(()=>{const e=P?.signal.aborted??!1;j=null,P=null;const t=O;var n,o;O=!1,n="Apple downstream closed",o=t,Ce(),Y=null,V=!1,K=!1,Q=0,o&&G(n),e||function(e){if(!q())return;z();const t=F;F=Math.min(2*F,2e3);const n=`Apple downstream disconnected, retrying in ${t}ms: ${e}`;t<=200?T(n):L(n),R=setTimeout(()=>{R=null,W()},t)}("stream closed")})))}function J(e){const t=e.kind;"req"!==t&&"notify"!==t||T(`postToNative: ${t} ${e.method}`),_("proto")&&console.log("→",JSON.stringify(e,null,2));try{if("webkit"===A)return void window.webkit?.messageHandlers.LingXia?.postMessage(e);const t=M(e);if(A===b&&B)return void B.postMessage(t);if(A===k&&window.LingXiaProxy?.postMessage)return void window.LingXiaProxy.postMessage(t);L("Transport not ready")}catch(e){S("Send error:",e)}}let Y=null,V=!1,K=!1,Q=0,Z=null;const ee={};let te=0;function ne(){return{data:new Set,end:new Set,error:new Set,close:new Set}}function oe(e,t){const n=ne();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){L("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){L("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){L("Stream error listener failed:",e)}}}}}const re=new Map,ie=new Map,se=new Map,ae=[];let le=-1,ce={};const de=new Set,ue=new WeakMap,me=new Map;function fe(e,t){me.set(e,t)}function pe(e){if(e.startsWith("host."))return"host";const t=e.indexOf(".");return t>0?e.slice(0,t):"page"}function he(e){if(null!=e)return e}function ge(){return A===b?!!B:q()?O:"webkit"===A||A===k}function ve(){return ge()&&V}function ye(e,t){const n=re.get(e);if(n){re.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 xe(e,t){const n=ie.get(e);if(!n)return;ie.delete(e),null!==n.timerId&&clearTimeout(n.timerId);const o=u(t);n.channel._reject(o),n.reject(o)}function we(e,t){re.has(e)?ye(e,t):ie.has(e)&&xe(e,t)}function be(e){const n=re.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(()=>{re.has(e)&&ye(e,{code:t,message:`'${n.method}' timed out`})},n.timeoutMs)))}function ke(e){re.has(e)?be(e):ie.has(e)&&function(e){const n=ie.get(e);n&&(null!==n.timerId&&clearTimeout(n.timerId),n.timerId=setTimeout(()=>{xe(e,{code:t,message:`Channel '${n.topic}' timed out`})},x))}(e)}function Ee(e){for(let t=ae.length-1;t>=0;t--)if(ae[t]?.reqId===e)return ae.splice(t,1),!0;return!1}function Ie(e,t){const n=e.kind,o="hello"===n||"helloAck"===n||"ready"===n;if(!ve()&&!o)return ae.length>=256?(S("Outbox full"),void(t&&we(t,{code:l,message:"Bridge outbox is full"}))):void ae.push({msg:e,reqId:t});t&&ke(t),J(e)}function Ce(){null!==Z&&(clearTimeout(Z),Z=null)}function _e(){if(V)return;if(!ge())return;Ce();const e={v:2,kind:"hello",nonce:p.nonce||"",role:"view",protocolsSupported:[2]};K=!0,J(e),Z=setTimeout(()=>{if(!V)if(Q++,Q<3)L(`Handshake timeout (${Q}/3), retrying...`),K=!1,_e();else{for(S("Handshake failed"),Ce(),K=!1,Q=0;ae.length;){const e=ae.shift();e?.reqId&&we(e.reqId,{code:o,message:"Bridge handshake failed"})}for(const e of Array.from(ie.keys()))xe(e,{code:o,message:"Bridge handshake failed"})}},1e4)}function Te(e){return e.replace(/~1/g,"/").replace(/~0/g,"~")}function Le(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(Te)}(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 Se(e){de.forEach(t=>{try{if(!ue.has(t))return ue.set(t,!0),void t(N(ce),{rev:le,initial:!0});t(N(ce),{rev:le,initial:e})}catch(e){L("Subscriber error:",e)}})}function Me(e){if("function"!=typeof e)return()=>{};if(de.add(e),le>=0){ue.set(e,!0);try{e(N(ce),{rev:le,initial:!0})}catch(e){S("Callback error:",e)}}return()=>{de.delete(e),ue.delete(e)}}function Ne(e){He.call("state.getSnapshot",{scope:e}).catch(()=>{})}function Ae(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=Be.get(n);if(t)try{t(e)}catch(e){S("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(Y=t.sessionId);case"ready":if(Y&&t.sessionId!==Y)return void L("sessionId mismatch");if(Ce(),V=!0,Q=0,t.hostMethods)for(const[e,n]of Object.entries(t.hostMethods))ee[e]=n;return _("proto")&&T("Handshake complete, hostMethods:",Object.keys(ee).length),void function(){if(ve())for(;ae.length;){const e=ae.shift();e&&(e.reqId&&ke(e.reqId),J(e.msg))}}();case"res":{const e=re.get(t.id);if(!e)return;if(re.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||(ce=t.state,le=t.rev,_("data")&&(console.group("[LX] snapshot(res)"),console.log("rev:",le,"state:",N(ce)),console.groupEnd()),Se(!0),0))}(t.result)||L("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(re.has(t.id)){const e=re.get(t.id);return void("stream"===e?.mode&&e.stream?(be(t.id),e.stream._emitData(t.payload)):L(`Received event for non-stream request '${t.id}'`))}return;case"state.snapshot":return ce=t.state||{},le=t.rev,_("data")&&(console.group("[LX] snapshot"),console.log("rev:",le,"state:",N(ce)),console.groupEnd()),void Se(!0);case"state.patch":if(t.baseRev!==le)return L("baseRev mismatch",{have:le,want:t.baseRev}),void Ne(t.scope);try{!function(e,t){for(const n of t){const t="add"===n.op||"replace"===n.op,{container:o,key:r}=Le(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}}(ce,t.ops||[]),le=t.rev}catch(e){return S("Patch failed:",e),void Ne(t.scope)}return _("data")&&(console.group("[LX] patch"),console.log("rev:",le,"ops:",t.ops),console.groupEnd()),Se(!1),void(t.ack&&Ie({v:2,kind:"state.ack",scope:t.scope,rev:t.rev}));case"ch.ack":{const e=ie.get(t.id);if(!e)return;if(ie.delete(t.id),null!==e.timerId&&clearTimeout(e.timerId),t.ok)e.channel._markOpen(),se.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=se.get(t.id);if(!e)return;return void e._emitData(t.payload)}case"ch.close":{const e=ie.get(t.id);if(e)return ie.delete(t.id),void e.channel._emitClose(t.code,t.reason);const n=se.get(t.id);if(!n)return;return se.delete(t.id),void n._emitClose(t.code,t.reason)}case"req":{const e=t,n=pe(e.method);if(!e.cap||e.cap!==n)return void Ie({v:2,kind:"res",id:e.id,ok:!1,error:{code:s,message:`Invalid cap for ${e.method}`}});const o=me.get(e.method);return o?void Promise.resolve().then(()=>o(e.params)).then(t=>{Ie({v:2,kind:"res",id:e.id,ok:!0,result:t})}).catch(t=>{Ie({v:2,kind:"res",id:e.id,ok:!1,error:u(t)})}):void Ie({v:2,kind:"res",id:e.id,ok:!1,error:{code:i,message:`View handler not found: ${e.method}`}})}}else L("Invalid V2 message:",e)}const Be=new Map,Oe=[];let je=!1;function Pe(){return"undefined"!=typeof window&&!(!window.webkit?.messageHandlers?.NativeComponent&&!window.NativeComponentBridge?.postMessage)}function Re(e){try{if(window.webkit?.messageHandlers?.NativeComponent)return void window.webkit.messageHandlers.NativeComponent.postMessage(e);if(window.NativeComponentBridge?.postMessage)return void window.NativeComponentBridge.postMessage(M(e))}catch(e){S("NativeComponent send error:",e)}}function Fe(){if(Pe()&&0!==Oe.length)for(je=!0;Oe.length;){const e=Oe.shift();try{Re(e)}catch{break}}}function De(e){try{if(!Pe())return void Oe.push(e);je||Fe(),Re(e)}catch(e){S("NC send failed:",e)}}function Xe(e){return`${e}_${Date.now()}_${te++}`}function $e(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 He={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"});K||_e();const a=Xe("c"),l=o?.cap||pe(e),c=o?.timeoutMs??x;re.set(a,{method:e,mode:"call",resolve:i,reject:e=>s(e),timeoutMs:c,timerId:null}),Ie({v:2,kind:"req",id:a,method:e,params:he(t),cap:l},a),$e(0,o?.signal,()=>{const e=Ee(a);ye(a,{code:n,message:"Bridge request aborted"}),!e&&V&&Ie({v:2,kind:"cancel",id:a})})}),stream(e,t,o){if(!e||"string"!=typeof e){const e=oe("invalid",()=>{});return e._reject({code:r,message:"Method name must be a non-empty string"}),e}K||_e();const i=Xe("c"),s=oe(i,()=>{Ee(i)?ye(i,{code:n,message:"Bridge request aborted"}):V&&Ie({v:2,kind:"cancel",id:i})}),a=o?.cap||pe(e),l=o?.timeoutMs??x;return re.set(i,{method:e,mode:"stream",stream:s,timeoutMs:l,timerId:null}),Ie({v:2,kind:"req",id:i,method:e,params:he(t),cap:a},i),$e(0,o?.signal,()=>s.cancel()),s},notify(e,t,n){e&&"string"==typeof e&&(K||_e(),Ie({v:2,kind:"notify",method:e,params:he(t),cap:n?.cap||pe(e)}))},state:{subscribe:Me},channel:{open:(e,t,n)=>e&&"string"==typeof e?(K||_e(),new Promise((o,r)=>{const i=Xe("ch"),s=function(e,t,n){const o=ne();let r=!1,i=0,s=!1;const a=[],l=[],d={id:e,send(n){r?t(n,i++):d._reject({code:c,message:`Channel '${e}' is closed`})},on(e,t){return"data"===e&&o.data.add(t),"close"===e&&o.close.add(t),"error"===e&&o.error.add(t),this},[Symbol.asyncIterator]:()=>({next:()=>a.length>0?Promise.resolve({done:!1,value:a.shift()}):s?Promise.resolve({done:!0,value:void 0}):new Promise((e,t)=>{l.push({resolve:e,reject:t})})}),close(e,t){r&&(r=!1,s=!0,n(e,t),d._emitClose(e,t))},_emitData(e){if(r){l.length>0?l.shift().resolve({done:!1,value:e}):a.push(e);for(const t of o.data)try{t(e)}catch(e){L("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){L("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){L("Channel error listener failed:",e)}},_markOpen(){r=!0,s=!1},_isOpen:()=>r,_nextSeq:()=>i++};return d}(i,(e,t)=>{Ie({v:2,kind:"ch.data",id:i,seq:t,payload:e})},(e,t)=>{const n=ie.get(i);n&&null!==n.timerId&&clearTimeout(n.timerId),ie.delete(i),se.delete(i),Ie({v:2,kind:"ch.close",id:i,code:e,reason:t})});ie.set(i,{topic:e,channel:s,resolve:o,reject:r,timerId:null}),Ie({v:2,kind:"ch.open",id:i,topic:e,params:he(t),cap:n?.cap||pe(e)},i)})):Promise.reject({code:r,message:"Topic name must be a non-empty string"})}},qe={invoke:(e,t,n)=>He.call(ze(e),t,Ge(n)).then(e=>e).catch(e=>Promise.reject(m(e))),notify(e,t,n){He.notify(ze(e),t,Ge(n))},stream:(e,t,n)=>Ue(He.stream(ze(e),t,Ge(n))),channel:(e,t,n)=>He.channel.open(ze(e),t,Ge(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:He,state:{subscribe:Me},_connectWebMessagePort(e){if(A===b){if(B&&B!==e)try{B.onmessage=null,B.close()}catch{}B=e,e.onmessage=e=>{let t=e.data;if("string"==typeof t)try{t=JSON.parse(t)}catch{return}Ae(t)};try{e.start()}catch{}T("Port connected"),_e()}},_receiveEvaluateMessage(e){try{e&&Ae(JSON.parse(e))}catch(e){S("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}(I),platform:{isHarmony:function(){return"Harmony"===p.os},isIOS:g,isAndroid:function(){return"Android"===p.os},isMacOS:v,isDesktop:function(){return v()},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:De,hasHandler:Pe,flush:Fe,register:(e,t)=>e&&"function"==typeof t?(Be.set(e,t),()=>Be.delete(e)):()=>{},unregister(e){Be.delete(e)}},isReady:()=>V};function ze(e){return e.startsWith("host.")?e:`host.${e}`}function Ge(e){return{...e||{},cap:e?.cap||"host"}}function Ue(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 We(){if(window.__LX_BRIDGE_INIT_STATE)T(`Bridge already ${window.__LX_BRIDGE_INIT_STATE}, skipping duplicate init`);else{window.__LX_BRIDGE_INIT_STATE="initializing";try{T(`Method: ${A}`),function(e){if("undefined"==typeof window)return;if(window[y]=e,0===C.length)return;const t=C.splice(0,C.length);for(const n of t)try{e(n)}catch(e){L("Failed to replay queued native message:",e)}}(qe._receiveEvaluateMessage),q()?W():A===b?($(),function(){if(B)return Promise.resolve(B);if(D.promise)return D.promise;$(),D.promise=new Promise((e,t)=>{D.resolve=t=>{H(),e(t)},D.reject=e=>{H(),t(e)},D.timer=window.setTimeout(()=>{D.reject?.(new Error("MessagePort init timed out after 5000ms"))},5e3)});try{window.LingXiaProxy?.getPort("LingXiaPort")}catch(e){D.reject?.(e)}return D.promise}().catch(e=>L("Port init failed:",e))):"webkit"===A||A===k?_e():L("Unknown method"),window.LingXiaBridge=qe,f({os:h(),send:De}),window.__LX_BRIDGE_INIT_STATE="initialized",T("Init complete")}catch(e){throw delete window.__LX_BRIDGE_INIT_STATE,e}}}function Je(e){const t=document.createElement("div");return t.textContent=e,t.innerHTML}function Ye(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">${Je(t)}</div>`),n&&(i+=`<p class="lx-error-desc" style="margin-top:12px">${Je(n)}</p>`),r.innerHTML=i,document.body.appendChild(r)}function Ve(){const e=window.__LX_RUNTIME_CONFIG;return!(!e||!e.error)}function Ke(){return window.__LX_RUNTIME_CONFIG?.error||null}const Qe={handleEvent:()=>Ze()};function Ze(){if(Ve()){const e=Ke();e&&Ye(e)}}function et(){We(),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",Qe):Ze()}const tt="lx-action-sheet-style";let nt=null;function ot(e){const t=e,n=t?.itemList??[],o=t?.cancelText??"Cancel",r=t?.itemColor??"#007AFF",i=(nt??Promise.resolve()).then(()=>rt(n,o,r),()=>rt(n,o,r));return nt=i,i}function rt(e,t,n){return new Promise(o=>{let r=!1;const i="macOS"===h();!function(){if(document.getElementById(tt))return;const e=document.createElement("style");e.id=tt,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 it=200,st="lx-modal-style";let at=null;function lt(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=(at??Promise.resolve()).then(()=>ct(n,o,r,i,s,a,l),()=>ct(n,o,r,i,s,a,l));return at=c,c}function ct(e,t,n,o,r,i,s){return new Promise(a=>{let l=!1;!function(){if(document.getElementById(st))return;const e=document.createElement("style");e.id=st,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})},it))}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 dt="lx-toast-style";let ut=null;function mt(e){const t=e,n=t?.title??"",o=t?.icon??"none",r=t?.duration??1500,i=t?.mask??!1,s=t?.position??"center";ut&&(ut.dismiss(),ut=null),function(){if(document.getElementById(dt))return;const e=document.createElement("style");e.id=dt,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,ut?.dismiss===f&&(ut=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)),ut={dismiss:f,timer:p},Promise.resolve()}function ft(){return ut&&(ut.dismiss(),ut=null),Promise.resolve()}return fe("ui.showActionSheet",ot),fe("ui.showModal",lt),fe("ui.showToast",mt),fe("ui.hideToast",ft),et(),e.LingXiaBridge=qe,e.boot=function(){We(),Ze()},e.bootWhenReady=et,e.channel=function(e,t,n){return qe.channel(e,t,n)},e.getErrorInfo=Ke,e.hasError=Ve,e.initBridge=We,e.invoke=function(e,t,n){return qe.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){He.notify(ze(e),t,Ge(n))},e.renderErrorUI=Ye,e.stream=function(e,t,n){return Ue(He.stream(ze(e),t,Ge(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=p.displayLanguage?.trim()||"en-US";function g(){return p.os||"unknown"}function v(){return"iOS"===p.os}function y(){return"macOS"===p.os}function w(){return"Windows"===p.os}function x(){return y()||w()}"undefined"!=typeof document&&document.documentElement&&(document.documentElement.lang=h);const b="__LingXiaRecvMessage",k=5e3,E="[LX.Bridge]",I="messageport",C="jsinterface",_="webmessage",L=p.appleDownstreamURL,T={data:!1,proto:!1,all:!1},S=[];function M(e){return T.all||T[e]}function N(...e){(!0===p.dev||T.all||T.proto||T.data)&&console.log(E,...e)}function A(...e){console.warn(E,...e)}function B(...e){console.error(E,...e)}function j(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 O(e){try{return"function"==typeof structuredClone?structuredClone(e):JSON.parse(JSON.stringify(e))}catch{return{}}}const P="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[b]&&(window[b]=e=>{S.push(e)});let R=null,D=!1,F=null,$=null,X=null,z=200,H=!1,q=0;let G=0,U=null;const W={listenerInstalled:!1,promise:null,resolve:null,reject:null,timer:null},J={handleEvent:e=>{const t=e;if("LingXia-port-init"!==t.data)return;const n=t.ports?.[0];n&&(nt._connectWebMessagePort(n),W.resolve?.(n))}};function Y(){W.listenerInstalled||(W.listenerInstalled=!0,window.addEventListener("message",J))}function V(){null!==W.timer&&(window.clearTimeout(W.timer),W.timer=null),W.resolve=null,W.reject=null,W.promise=null}function K(){return"webkit"===P&&(v()||y())}function Q(){null!==X&&(clearTimeout(X),X=null)}function Z(e){K()&&!H&&(H=!0,Q(),null!==U&&(clearInterval(U),U=null),"undefined"!=typeof document&&document.removeEventListener("visibilitychange",ae),ie=!1,$?.abort(),D=!1,te(e,!0))}function ee(e){for(const t of Array.from(ye.keys()))Ae(t,{code:c,message:e});for(const t of Array.from(we.keys()))Be(t,{code:c,message:e});!function(e){for(const[t,n]of Array.from(xe.entries()))xe.delete(t),n._emitClose(c,e)}(e)}function te(e,t){De(),ce=null,de=!1,ue=!1,me=0,t&&ee(e)}function ne(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){A("Apple downstream parse error:",e,n)}}return t}function oe(e){if(!e||"object"!=typeof e)return;G=Date.now();const t=e;if(!0!==t.lxshutdown){if(void 0===t.lxhb){if(!0===t.lxreset)return q=0,te("Apple downstream reset",!0),void Fe();if("number"==typeof t.lxff){if(t.lxff<=q)return;return q=t.lxff,void Ge(t.m)}Ge(e)}}else Z("Apple downstream closed")}function re(){if(!K()||H)return;if(F)return;Q();let e=!1;F=async function(){if(!L)throw new Error("Apple downstream URL is not configured");const e=new AbortController;$=e;const t=L.includes("?")?"&":"?",n=`${L}${t}from=${q}`,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 Z("Apple downstream closed");if(!o.body)throw new Error("Apple downstream response body unavailable");D=!0,z=200,G=Date.now(),M("proto")&&N("Apple downstream connected"),Fe();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=ne(s)}s+=i.decode();const e=s.trim();if(e)try{oe(JSON.parse(e))}catch(t){A("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=>{$?.signal.aborted||A("Apple downstream failed:",e)}).finally(()=>{const t=$?.signal.aborted??!1;F=null,$=null,D=!1,t||H||function(e,t=!1){if(!K()||H)return;Q();const n=t?0:z;t||(z=Math.min(2*z,2e3));const o=t?`Apple downstream completed, reconnecting immediately: ${e}`:`Apple downstream disconnected, retrying in ${n}ms: ${e}`;n<=200?N(o):A(o),X=setTimeout(()=>{X=null,re()},n)}("stream closed",e)})}let ie=!1;function se(){if(!K()||H)return;if(ie)return;ie=!0;const e=F;$?.abort();const t=()=>{ie=!1,re()};e?e.finally(t):t()}function ae(){"visible"===document.visibilityState&&se()}function le(e){const t=e.kind;"req"!==t&&"notify"!==t||N(`postToNative: ${t} ${e.method}`),M("proto")&&console.log("→",JSON.stringify(e,null,2));try{if("webkit"===P)return void window.webkit?.messageHandlers.LingXia?.postMessage(e);const t=j(e);if(P===I&&R)return void R.postMessage(t);if((P===C||P===_)&&window.LingXiaProxy?.postMessage)return void window.LingXiaProxy.postMessage(t);A("Transport not ready")}catch(e){B("Send error:",e)}}let ce=null,de=!1,ue=!1,me=0,fe=null;const pe={};let he=0;function ge(){return{data:new Set,end:new Set,error:new Set,close:new Set}}function ve(e,t){const n=ge();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){A("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){A("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){A("Stream error listener failed:",e)}}}}}const ye=new Map,we=new Map,xe=new Map,be=[];let ke=-1,Ee={};const Ie=new Set,Ce=new WeakMap,_e=new Map;function Le(e,t){_e.set(e,t)}function Te(e){if(e.startsWith("host."))return"host";const t=e.indexOf(".");return t>0?e.slice(0,t):"page"}function Se(e){if(null!=e)return e}function Me(){return P===I?!!R:K()?D:"webkit"===P||P===C||P===_}function Ne(){return!!de&&(!!K()||Me())}function Ae(e,t){const n=ye.get(e);if(n){ye.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=we.get(e);if(!n)return;we.delete(e),null!==n.timerId&&clearTimeout(n.timerId);const o=u(t);n.channel._reject(o),n.reject(o)}function je(e,t){ye.has(e)?Ae(e,t):we.has(e)&&Be(e,t)}function Oe(e){ye.has(e)?function(e){const n=ye.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(()=>{ye.has(e)&&Ae(e,{code:t,message:`'${n.method}' timed out`})},n.timeoutMs)))}(e):we.has(e)&&function(e){const n=we.get(e);n&&(null!==n.timerId&&clearTimeout(n.timerId),n.timerId=setTimeout(()=>{Be(e,{code:t,message:`Channel '${n.topic}' timed out`})},k))}(e)}function Pe(e){for(let t=be.length-1;t>=0;t--)if(be[t]?.reqId===e)return be.splice(t,1),!0;return!1}function Re(e,t){const n=e.kind,o="hello"===n||"helloAck"===n||"ready"===n;if(!Ne()&&!o)return be.length>=256?(B("Outbox full"),void(t&&je(t,{code:l,message:"Bridge outbox is full"}))):void be.push({msg:e,reqId:t});t&&Oe(t),le(e)}function De(){null!==fe&&(clearTimeout(fe),fe=null)}function Fe(){if(de)return;if(!Me())return;De();const e={v:2,kind:"hello",nonce:p.nonce||"",role:"view",protocolsSupported:[2]};ue=!0,le(e),fe=setTimeout(()=>{if(!de)if(me++,me<3)A(`Handshake timeout (${me}/3), retrying...`),ue=!1,Fe();else{for(B("Handshake failed"),De(),ue=!1,me=0;be.length;){const e=be.shift();e?.reqId&&je(e.reqId,{code:o,message:"Bridge handshake failed"})}for(const e of Array.from(we.keys()))Be(e,{code:o,message:"Bridge handshake failed"})}},1e4)}function $e(e){return e.replace(/~1/g,"/").replace(/~0/g,"~")}function Xe(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($e)}(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 ze(e){Ie.forEach(t=>{try{if(!Ce.has(t))return Ce.set(t,!0),void t(O(Ee),{rev:ke,initial:!0});t(O(Ee),{rev:ke,initial:e})}catch(e){A("Subscriber error:",e)}})}function He(e){if("function"!=typeof e)return()=>{};if(Ie.add(e),ke>=0){Ce.set(e,!0);try{e(O(Ee),{rev:ke,initial:!0})}catch(e){B("Callback error:",e)}}return()=>{Ie.delete(e),Ce.delete(e)}}function qe(e){tt.call("state.getSnapshot",{scope:e}).catch(()=>{})}function Ge(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=Ue.get(n);if(t)try{t(e)}catch(e){B("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(ce=t.sessionId);case"ready":if(ce&&t.sessionId!==ce)return void A("sessionId mismatch");if(De(),de=!0,me=0,t.hostMethods)for(const[e,n]of Object.entries(t.hostMethods))pe[e]=n;return M("proto")&&N("Handshake complete, hostMethods:",Object.keys(pe).length),void function(){if(Ne())for(;be.length;){const e=be.shift();e&&(e.reqId&&Oe(e.reqId),le(e.msg))}}();case"res":{const e=ye.get(t.id);if(!e)return;if(ye.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||(Ee=t.state,ke=t.rev,M("data")&&(console.group("[LX] snapshot(res)"),console.log("rev:",ke,"state:",O(Ee)),console.groupEnd()),ze(!0),0))}(t.result)||A("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(ye.has(t.id)){const e=ye.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)):A(`Received event for non-stream request '${t.id}'`))}return;case"state.snapshot":return Ee=t.state||{},ke=t.rev,M("data")&&(console.group("[LX] snapshot"),console.log("rev:",ke,"state:",O(Ee)),console.groupEnd()),void ze(!0);case"state.patch":if(t.baseRev!==ke)return A("baseRev mismatch",{have:ke,want:t.baseRev}),void qe(t.scope);try{!function(e,t){for(const n of t){const t="add"===n.op||"replace"===n.op,{container:o,key:r}=Xe(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}}(Ee,t.ops||[]),ke=t.rev}catch(e){return B("Patch failed:",e),void qe(t.scope)}return M("data")&&(console.group("[LX] patch"),console.log("rev:",ke,"ops:",t.ops),console.groupEnd()),ze(!1),void(t.ack&&Re({v:2,kind:"state.ack",scope:t.scope,rev:t.rev}));case"ch.ack":{const e=we.get(t.id);if(!e)return;if(we.delete(t.id),null!==e.timerId&&clearTimeout(e.timerId),t.ok)e.channel._markOpen(),xe.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=xe.get(t.id);if(!e)return;return void e._emitData(t.payload)}case"ch.close":{if(we.get(t.id))return void Be(t.id,{code:t.code??c,message:t.reason??"Channel closed before opening"});const e=xe.get(t.id);if(!e)return;return xe.delete(t.id),void e._emitClose(t.code,t.reason)}case"req":{const e=t,n=Te(e.method);if(!e.cap||e.cap!==n)return void Re({v:2,kind:"res",id:e.id,ok:!1,error:{code:s,message:`Invalid cap for ${e.method}`}});const o=_e.get(e.method);return o?void Promise.resolve().then(()=>o(e.params)).then(t=>{Re({v:2,kind:"res",id:e.id,ok:!0,result:t})}).catch(t=>{Re({v:2,kind:"res",id:e.id,ok:!1,error:u(t)})}):void Re({v:2,kind:"res",id:e.id,ok:!1,error:{code:i,message:`View handler not found: ${e.method}`}})}}else A("Invalid V2 message:",e)}const Ue=new Map,We=[];let Je=!1;function Ye(){return"undefined"!=typeof window&&!(!window.webkit?.messageHandlers?.NativeComponent&&!window.NativeComponentBridge?.postMessage)}function Ve(e){try{if(window.webkit?.messageHandlers?.NativeComponent)return void window.webkit.messageHandlers.NativeComponent.postMessage(e);if(window.NativeComponentBridge?.postMessage)return void window.NativeComponentBridge.postMessage(j(e))}catch(e){B("NativeComponent send error:",e)}}function Ke(){if(Ye()&&0!==We.length)for(Je=!0;We.length;){const e=We.shift();try{Ve(e)}catch{break}}}function Qe(e){try{if(!Ye())return void We.push(e);Je||Ke(),Ve(e)}catch(e){B("NC send failed:",e)}}function Ze(e){return`${e}_${Date.now()}_${he++}`}function et(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 tt={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"});ue||Fe();const a=Ze("c"),l=o?.cap||Te(e),c=o?.timeoutMs??k;ye.set(a,{method:e,mode:"call",resolve:i,reject:e=>s(e),timeoutMs:c,timerId:null}),Re({v:2,kind:"req",id:a,method:e,params:Se(t),cap:l},a),et(0,o?.signal,()=>{const e=Pe(a);Ae(a,{code:n,message:"Bridge request aborted"}),!e&&de&&Re({v:2,kind:"cancel",id:a})})}),stream(e,t,o){if(!e||"string"!=typeof e){const e=ve("invalid",()=>{});return e._reject({code:r,message:"Method name must be a non-empty string"}),e}ue||Fe();const i=Ze("c"),s=ve(i,()=>{Pe(i)?Ae(i,{code:n,message:"Bridge request aborted"}):de&&Re({v:2,kind:"cancel",id:i})}),a=o?.cap||Te(e),l=o?.timeoutMs??k;return ye.set(i,{method:e,mode:"stream",stream:s,timeoutMs:l,timerId:null}),Re({v:2,kind:"req",id:i,method:e,params:Se(t),cap:a},i),et(0,o?.signal,()=>s.cancel()),s},notify(e,t,n){e&&"string"==typeof e&&(ue||Fe(),Re({v:2,kind:"notify",method:e,params:Se(t),cap:n?.cap||Te(e)}))},state:{subscribe:He},channel:{open:(e,t,n)=>e&&"string"==typeof e?(ue||Fe(),new Promise((o,r)=>{const i=Ze("ch"),s=function(e,t,n){const o=ge();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){A("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){A("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){A("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){A("Channel error listener failed:",e)}},_markOpen(){r=!0,s=!1},_isOpen:()=>r,_nextSeq:()=>i++};return u}(i,(e,t)=>{Re({v:2,kind:"ch.data",id:i,seq:t,payload:e})},(e,t)=>{const n=we.get(i);n&&null!==n.timerId&&clearTimeout(n.timerId),we.delete(i),xe.delete(i),Re({v:2,kind:"ch.close",id:i,code:e,reason:t})});we.set(i,{topic:e,channel:s,resolve:o,reject:r,timerId:null}),Re({v:2,kind:"ch.open",id:i,topic:e,params:Se(t),cap:n?.cap||Te(e)},i)})):Promise.reject({code:r,message:"Topic name must be a non-empty string"})}},nt={invoke:(e,t,n)=>tt.call(ot(e),t,rt(n)).then(e=>e).catch(e=>Promise.reject(m(e))),notify(e,t,n){tt.notify(ot(e),t,rt(n))},stream:(e,t,n)=>it(tt.stream(ot(e),t,rt(n))),channel:(e,t,n)=>tt.channel.open(ot(e),t,rt(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:tt,state:{subscribe:He},_connectWebMessagePort(e){if(P===I){if(R&&R!==e)try{R.onmessage=null,R.close()}catch{}R=e,e.onmessage=e=>{let t=e.data;if("string"==typeof t)try{t=JSON.parse(t)}catch{return}Ge(t)};try{e.start()}catch{}N("Port connected"),Fe()}},_receiveEvaluateMessage(e){try{e&&Ge(JSON.parse(e))}catch(e){B("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}(T),platform:{isHarmony:function(){return"Harmony"===p.os},isIOS:v,isAndroid:function(){return"Android"===p.os},isMacOS:y,isWindows:w,isDesktop:x,isApple:function(){return v()||y()},isRunner:function(){return!0===p.runner},getOS:g},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:Qe,hasHandler:Ye,flush:Ke,register:(e,t)=>e&&"function"==typeof t?(Ue.set(e,t),()=>Ue.delete(e)):()=>{},unregister(e){Ue.delete(e)}},isReady:()=>de};function ot(e){return e.startsWith("host.")?e:`host.${e}`}function rt(e){return{...e||{},cap:e?.cap||"host"}}function it(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 st(){if(window.__LX_BRIDGE_INIT_STATE)N(`Bridge already ${window.__LX_BRIDGE_INIT_STATE}, skipping duplicate init`);else{window.__LX_BRIDGE_INIT_STATE="initializing";try{N(`Method: ${P}`),function(e){if("undefined"==typeof window)return;if(window[b]=e,0===S.length)return;const t=S.splice(0,S.length);for(const n of t)try{e(n)}catch(e){A("Failed to replay queued native message:",e)}}(nt._receiveEvaluateMessage),K()?(re(),K()&&!H&&null===U&&(U=setInterval(()=>{0!==G&&Date.now()-G>35e3&&(A("Apple downstream stale (no heartbeat), forcing reconnect"),se())},5e3)),K()&&"undefined"!=typeof document&&document.addEventListener("visibilitychange",ae)):P===I?(Y(),function(){if(R)return Promise.resolve(R);if(W.promise)return W.promise;Y(),W.promise=new Promise((e,t)=>{W.resolve=t=>{V(),e(t)},W.reject=e=>{V(),t(e)},W.timer=window.setTimeout(()=>{W.reject?.(new Error("MessagePort init timed out after 5000ms"))},5e3)});try{window.LingXiaProxy?.getPort("LingXiaPort")}catch(e){W.reject?.(e)}return W.promise}().catch(e=>A("Port init failed:",e))):"webkit"===P||P===C||P===_?Fe():A("Unknown method"),window.LingXiaBridge=nt,window.__lxForceDownstreamReconnect=se,f({os:g(),send:Qe}),window.__LX_BRIDGE_INIT_STATE="initialized",N("Init complete")}catch(e){throw delete window.__LX_BRIDGE_INIT_STATE,e}}}function at(e){const t=document.createElement("div");return t.textContent=e,t.innerHTML}function lt(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">${at(t)}</div>`),n&&(i+=`<p class="lx-error-desc" style="margin-top:12px">${at(n)}</p>`),r.innerHTML=i,document.body.appendChild(r)}function ct(){const e=window.__LX_RUNTIME_CONFIG;return!(!e||!e.error)}function dt(){return window.__LX_RUNTIME_CONFIG?.error||null}const ut={handleEvent:()=>mt()};function mt(){if(ct()){const e=dt();e&<(e)}}function ft(){st(),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",ut):mt()}const pt="lx-action-sheet-style";let ht=null;function gt(e){const t=e,n=t?.itemList??[],o=t?.cancelText??"Cancel",r=t?.itemColor??"#007AFF",i=(ht??Promise.resolve()).then(()=>vt(n,o,r),()=>vt(n,o,r));return ht=i,i}function vt(e,t,n){return new Promise(o=>{let r=!1;const i=x();!function(){if(document.getElementById(pt))return;const e=document.createElement("style");e.id=pt,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 yt=200,wt="lx-modal-style";let xt=null;function bt(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=(xt??Promise.resolve()).then(()=>kt(n,o,r,i,s,a,l),()=>kt(n,o,r,i,s,a,l));return xt=c,c}function kt(e,t,n,o,r,i,s){return new Promise(a=>{let l=!1;!function(){if(document.getElementById(wt))return;const e=document.createElement("style");e.id=wt,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})},yt))}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 Et="lx-toast-style";let It=null;function Ct(e){const t=e,n=t?.title??"",o=t?.icon??"none",r=t?.duration??1500,i=t?.mask??!1,s=t?.position??"center";It&&(It.dismiss(),It=null),function(){if(document.getElementById(Et))return;const e=document.createElement("style");e.id=Et,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,It?.dismiss===f&&(It=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)),It={dismiss:f,timer:p},Promise.resolve()}function _t(){return It&&(It.dismiss(),It=null),Promise.resolve()}return Le("ui.showActionSheet",gt),Le("ui.showModal",bt),Le("ui.showToast",Ct),Le("ui.hideToast",_t),ft(),e.LingXiaBridge=nt,e.boot=function(){st(),mt()},e.bootWhenReady=ft,e.channel=function(e,t,n){return nt.channel(e,t,n)},e.getDisplayLanguage=function(){return h},e.getErrorInfo=dt,e.hasError=ct,e.initBridge=st,e.invoke=function(e,t,n){return nt.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){tt.notify(ot(e),t,rt(n))},e.renderErrorUI=lt,e.stream=function(e,t,n){return it(tt.stream(ot(e),t,rt(n)))},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}var y="__LingXiaRecvMessage",w=5e3,_="[LX.Bridge]",b="messageport",I="jsinterface",k=p.appleDownstreamURL,E={data:!1,proto:!1,all:!1},x=[];function S(e){return E.all||E[e]}function T(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];console.log.apply(console,__spreadArray([_],e,!1))}function O(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];console.warn.apply(console,__spreadArray([_],e,!1))}function M(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];console.error.apply(console,__spreadArray([_],e,!1))}function j(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 A(e){try{return"function"==typeof structuredClone?structuredClone(e):JSON.parse(JSON.stringify(e))}catch(e){return{}}}var L,C,N="iOS"===p.os||"macOS"===p.os?"webkit":"Harmony"===p.os?"messageport":"Android"===p.os?(null===(C=null===(L=window.LingXiaProxy)||void 0===L?void 0:L.supportsMessagePort)||void 0===C?void 0:C.call(L))?"messageport":"jsinterface":"unknown";"undefined"!=typeof window&&"function"!=typeof window[y]&&(window[y]=function(e){x.push(e)});var P=null,B=!1,R=null,D=null,X=null,G=200,F={listenerInstalled:!1,promise:null,resolve:null,reject:null,timer:null},H={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&&(ze._connectWebMessagePort(o),null===(t=F.resolve)||void 0===t||t.call(F,o))}}};function q(){F.listenerInstalled||(F.listenerInstalled=!0,window.addEventListener("message",H))}function U(){null!==F.timer&&(window.clearTimeout(F.timer),F.timer=null),F.resolve=null,F.reject=null,F.promise=null}function W(){return"webkit"===N&&(h()||g())}function z(){null!==X&&(clearTimeout(X),X=null)}function J(e){for(var n=0,t=Array.from(ae.keys());n<t.length;n++){we(t[n],{code:s,message:e})}for(var r=0,o=Array.from(ce.keys());r<o.length;r++){_e(o[r],{code:s,message:e})}!function(e){for(var n=0,t=Array.from(le.entries());n<t.length;n++){var r=t[n],o=r[0],i=r[1];le.delete(o),i._emitClose(s,e)}}(e)}function Y(){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(!k)throw new Error("Apple downstream URL is not configured");return e=new AbortController,D=e,[4,fetch(k,{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");B=!0,G=200,S("proto")&&T("Apple downstream connected"),Te(),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{Ce(JSON.parse(r))}catch(e){O("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{Ce(JSON.parse(c))}catch(e){O("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 V(){W()&&(R||(z(),R=Y().catch(function(e){(null==D?void 0:D.signal.aborted)||O("Apple downstream failed:",e)}).finally(function(){var e,n=null!==(e=null==D?void 0:D.signal.aborted)&&void 0!==e&&e;R=null,D=null;var t,r,o=B;B=!1,t="Apple downstream closed",r=o,Se(),K=null,Q=!1,Z=!1,ee=0,r&&J(t),n||function(e){if(W()){z();var n=G;G=Math.min(2*G,2e3);var t="Apple downstream disconnected, retrying in ".concat(n,"ms: ").concat(e);n<=200?T(t):O(t),X=setTimeout(function(){X=null,V()},n)}}("stream closed")})))}function $(e){var n,t,r,o=e.kind;"req"!==o&&"notify"!==o||T("postToNative: ".concat(o," ").concat(e.method)),S("proto")&&console.log("→",JSON.stringify(e,null,2));try{if("webkit"===N)return void(null===(t=null===(n=window.webkit)||void 0===n?void 0:n.messageHandlers.LingXia)||void 0===t||t.postMessage(e));var i=j(e);if(N===b&&P)return void P.postMessage(i);if(N===I&&(null===(r=window.LingXiaProxy)||void 0===r?void 0:r.postMessage))return void window.LingXiaProxy.postMessage(i);O("Transport not ready")}catch(e){M("Send error:",e)}}var K=null,Q=!1,Z=!1,ee=0,ne=null,te={},re=0;function oe(){return{data:new Set,end:new Set,error:new Set,close:new Set}}function ie(e,n){var t,r=oe(),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){O("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){O("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){O("Stream error listener failed:",e)}}}},t}var ae=new Map,ce=new Map,le=new Map,se=[],de=-1,ue={},fe=new Set,ve=new WeakMap,pe=new Map;function me(e){if(e.startsWith("host."))return"host";var n=e.indexOf(".");return n>0?e.slice(0,n):"page"}function he(e){if(null!=e)return e}function ge(){return N===b?!!P:W()?B:"webkit"===N||N===I}function ye(){return ge()&&Q}function we(e,n){var t,r=ae.get(e);if(r){ae.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 _e(e,n){var t=ce.get(e);if(t){ce.delete(e),null!==t.timerId&&clearTimeout(t.timerId);var r=u(n);t.channel._reject(r),t.reject(r)}}function be(e,n){ae.has(e)?we(e,n):ce.has(e)&&_e(e,n)}function Ie(e){var t=ae.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(){ae.has(e)&&we(e,{code:n,message:"'".concat(t.method,"' timed out")})},t.timeoutMs)))}function ke(e){ae.has(e)?Ie(e):ce.has(e)&&function(e){var t=ce.get(e);t&&(null!==t.timerId&&clearTimeout(t.timerId),t.timerId=setTimeout(function(){_e(e,{code:n,message:"Channel '".concat(t.topic,"' timed out")})},w))}(e)}function Ee(e){for(var n,t=se.length-1;t>=0;t--)if((null===(n=se[t])||void 0===n?void 0:n.reqId)===e)return se.splice(t,1),!0;return!1}function xe(e,n){var t=e.kind,r="hello"===t||"helloAck"===t||"ready"===t;if(!ye()&&!r)return se.length>=256?(M("Outbox full"),void(n&&be(n,{code:l,message:"Bridge outbox is full"}))):void se.push({msg:e,reqId:n});n&&ke(n),$(e)}function Se(){null!==ne&&(clearTimeout(ne),ne=null)}function Te(){if(!Q&&ge()){Se();var e={v:2,kind:"hello",nonce:p.nonce||"",role:"view",protocolsSupported:[2]};Z=!0,$(e),ne=setTimeout(function(){if(!Q)if(++ee<3)O("Handshake timeout (".concat(ee,"/").concat(3,"), retrying...")),Z=!1,Te();else{for(M("Handshake failed"),Se(),Z=!1,ee=0;se.length;){var e=se.shift();(null==e?void 0:e.reqId)&&be(e.reqId,{code:r,message:"Bridge handshake failed"})}for(var n=0,t=Array.from(ce.keys());n<t.length;n++){_e(t[n],{code:r,message:"Bridge handshake failed"})}}},1e4)}}function Oe(e){return e.replace(/~1/g,"/").replace(/~0/g,"~")}function Me(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(Oe)}(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 je(e){fe.forEach(function(n){try{if(!ve.has(n))return ve.set(n,!0),void n(A(ue),{rev:de,initial:!0});n(A(ue),{rev:de,initial:e})}catch(e){O("Subscriber error:",e)}})}function Ae(e){if("function"!=typeof e)return function(){};if(fe.add(e),de>=0){ve.set(e,!0);try{e(A(ue),{rev:de,initial:!0})}catch(e){M("Callback error:",e)}}return function(){fe.delete(e),ve.delete(e)}}function Le(e){We.call("state.getSnapshot",{scope:e}).catch(function(){})}function Ce(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=Ne.get(c);if(l)try{l(o)}catch(e){M("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(K=s.sessionId);case"ready":if(K&&s.sessionId!==K)return void O("sessionId mismatch");if(Se(),Q=!0,ee=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];te[p]=m}return S("proto")&&T("Handshake complete, hostMethods:",Object.keys(te).length),void function(){if(ye())for(;se.length;){var e=se.shift();e&&(e.reqId&&ke(e.reqId),$(e.msg))}}();case"res":var h=ae.get(s.id);if(!h)return;if(ae.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||(ue=n.state,de=n.rev,S("data")&&(console.group("[LX] snapshot(res)"),console.log("rev:",de,"state:",A(ue)),console.groupEnd()),je(!0),0))}(s.result)||O("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(ae.has(s.id)){var y=ae.get(s.id);return void("stream"===(null==y?void 0:y.mode)&&y.stream?(Ie(s.id),y.stream._emitData(s.payload)):O("Received event for non-stream request '".concat(s.id,"'")))}return;case"state.snapshot":return ue=s.state||{},de=s.rev,S("data")&&(console.group("[LX] snapshot"),console.log("rev:",de,"state:",A(ue)),console.groupEnd()),void je(!0);case"state.patch":if(s.baseRev!==de)return O("baseRev mismatch",{have:de,want:s.baseRev}),void Le(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=Me(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)}}}}(ue,s.ops||[]),de=s.rev}catch(e){return M("Patch failed:",e),void Le(s.scope)}return S("data")&&(console.group("[LX] patch"),console.log("rev:",de,"ops:",s.ops),console.groupEnd()),je(!1),void(s.ack&&xe({v:2,kind:"state.ack",scope:s.scope,rev:s.rev}));case"ch.ack":if(!(_=ce.get(s.id)))return;if(ce.delete(s.id),null!==_.timerId&&clearTimeout(_.timerId),s.ok)_.channel._markOpen(),le.set(s.id,_.channel),_.resolve(_.channel);else{g=u(s.error);_.channel._reject(g),_.reject(g)}return;case"ch.data":var w=le.get(s.id);if(!w)return;return void w._emitData(s.payload);case"ch.close":var _;if(_=ce.get(s.id))return ce.delete(s.id),void _.channel._emitClose(s.code,s.reason);var b=le.get(s.id);if(!b)return;return le.delete(s.id),void b._emitClose(s.code,s.reason);case"req":var I=s,k=me(I.method);if(!I.cap||I.cap!==k)return void xe({v:2,kind:"res",id:I.id,ok:!1,error:{code:a,message:"Invalid cap for ".concat(I.method)}});var E=pe.get(I.method);return E?void Promise.resolve().then(function(){return E(I.params)}).then(function(e){xe({v:2,kind:"res",id:I.id,ok:!0,result:e})}).catch(function(e){xe({v:2,kind:"res",id:I.id,ok:!1,error:u(e)})}):void xe({v:2,kind:"res",id:I.id,ok:!1,error:{code:i,message:"View handler not found: ".concat(I.method)}})}else O("Invalid V2 message:",e)}var Ne=new Map,Pe=[],Be=!1;function Re(){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 De(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(j(e))}catch(e){M("NativeComponent send error:",e)}}function Xe(){if(Re()&&0!==Pe.length)for(Be=!0;Pe.length;){var e=Pe.shift();try{De(e)}catch(e){break}}}function Ge(e){try{if(!Re())return void Pe.push(e);Be||Xe(),De(e)}catch(e){M("NC send failed:",e)}}function Fe(e){return"".concat(e,"_").concat(Date.now(),"_").concat(re++)}function He(e,n,t){if(n)if(n.aborted)t();else{var r={handleEvent:function(){n.removeEventListener("abort",r),t()}};n.addEventListener("abort",r)}}var qe,Ue,We={call:function(e,n,r){return new Promise(function(i,a){var c;if(e&&"string"==typeof e){Z||Te();var l=Fe("c"),s=(null==r?void 0:r.cap)||me(e),d=null!==(c=null==r?void 0:r.timeoutMs)&&void 0!==c?c:w;ae.set(l,{method:e,mode:"call",resolve:i,reject:function(e){return a(e)},timeoutMs:d,timerId:null}),xe({v:2,kind:"req",id:l,method:e,params:he(n),cap:s},l),He(0,null==r?void 0:r.signal,function(){var e=Ee(l);we(l,{code:t,message:"Bridge request aborted"}),!e&&Q&&xe({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=ie("invalid",function(){});return a._reject({code:o,message:"Method name must be a non-empty string"}),a}Z||Te();var c=Fe("c"),l=ie(c,function(){Ee(c)?we(c,{code:t,message:"Bridge request aborted"}):Q&&xe({v:2,kind:"cancel",id:c})}),s=(null==r?void 0:r.cap)||me(e),d=null!==(i=null==r?void 0:r.timeoutMs)&&void 0!==i?i:w;return ae.set(c,{method:e,mode:"stream",stream:l,timeoutMs:d,timerId:null}),xe({v:2,kind:"req",id:c,method:e,params:he(n),cap:s},c),He(0,null==r?void 0:r.signal,function(){return l.cancel()}),l},notify:function(e,n,t){e&&"string"==typeof e&&(Z||Te(),xe({v:2,kind:"notify",method:e,params:he(n),cap:(null==t?void 0:t.cap)||me(e)}))},state:{subscribe:Ae},channel:{open:function(e,n,t){return e&&"string"==typeof e?(Z||Te(),new Promise(function(r,o){var i=Fe("ch"),a=function(e,n,t){var r,o=oe(),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){return"data"===e&&o.data.add(n),"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){O("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){O("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){O("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){xe({v:2,kind:"ch.data",id:i,seq:n,payload:e})},function(e,n){var t=ce.get(i);t&&null!==t.timerId&&clearTimeout(t.timerId),ce.delete(i),le.delete(i),xe({v:2,kind:"ch.close",id:i,code:e,reason:n})});ce.set(i,{topic:e,channel:a,resolve:r,reject:o,timerId:null}),xe({v:2,kind:"ch.open",id:i,topic:e,params:he(n),cap:(null==t?void 0:t.cap)||me(e)},i)})):Promise.reject({code:o,message:"Topic name must be a non-empty string"})}}},ze={invoke:function(e,n,t){return We.call(Je(e),n,Ye(t)).then(function(e){return e}).catch(function(e){return Promise.reject(f(e))})},notify:function(e,n,t){We.notify(Je(e),n,Ye(t))},stream:function(e,n,t){return Ve(We.stream(Je(e),n,Ye(t)))},channel:function(e,n,t){return We.channel.open(Je(e),n,Ye(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:We,state:{subscribe:Ae},_connectWebMessagePort:function(e){if(N===b){if(P&&P!==e)try{P.onmessage=null,P.close()}catch(e){}P=e,e.onmessage=function(e){var n=e.data;if("string"==typeof n)try{n=JSON.parse(n)}catch(e){return}Ce(n)};try{e.start()}catch(e){}T("Port connected"),Te()}},_receiveEvaluateMessage:function(e){try{e&&Ce(JSON.parse(e))}catch(e){M("Parse error:",e)}},debug:(qe=E,Ue={},Object.keys(qe).forEach(function(e){Object.defineProperty(Ue,e,{enumerable:!0,configurable:!1,get:function(){return qe[e]},set:function(n){qe[e]=!!n,console.log("[LX] ".concat(e,": ").concat(n))}})}),Ue),platform:{isHarmony:function(){return"Harmony"===p.os},isIOS:h,isAndroid:function(){return"Android"===p.os},isMacOS:g,isDesktop:function(){return g()},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:Ge,hasHandler:Re,flush:Xe,register:function(e,n){return e&&"function"==typeof n?(Ne.set(e,n),function(){return Ne.delete(e)}):function(){}},unregister:function(e){Ne.delete(e)}},isReady:function(){return Q}};function Je(e){return e.startsWith("host.")?e:"host.".concat(e)}function Ye(e){return __assign(__assign({},e||{}),{cap:(null==e?void 0:e.cap)||"host"})}function Ve(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 $e(){if(window.__LX_BRIDGE_INIT_STATE)T("Bridge already ".concat(window.__LX_BRIDGE_INIT_STATE,", skipping duplicate init"));else{window.__LX_BRIDGE_INIT_STATE="initializing";try{T("Method: ".concat(N)),function(e){if("undefined"!=typeof window&&(window[y]=e,0!==x.length))for(var n=0,t=x.splice(0,x.length);n<t.length;n++){var r=t[n];try{e(r)}catch(e){O("Failed to replay queued native message:",e)}}}(ze._receiveEvaluateMessage),W()?V():N===b?(q(),function(){var e,n;if(P)return Promise.resolve(P);if(F.promise)return F.promise;q(),F.promise=new Promise(function(e,n){F.resolve=function(n){U(),e(n)},F.reject=function(e){U(),n(e)},F.timer=window.setTimeout(function(){var e;null===(e=F.reject)||void 0===e||e.call(F,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=F.reject)||void 0===n||n.call(F,e)}return F.promise}().catch(function(e){return O("Port init failed:",e)})):"webkit"===N||N===I?Te():O("Unknown method"),window.LingXiaBridge=ze,v({os:m(),send:Ge}),window.__LX_BRIDGE_INIT_STATE="initialized",T("Init complete")}catch(e){throw delete window.__LX_BRIDGE_INIT_STATE,e}}}function Ke(e){var n=document.createElement("div");return n.textContent=e,n.innerHTML}function Qe(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(Ke(n),"</div>")),t&&(i+='<p class="lx-error-desc" style="margin-top:12px">'.concat(Ke(t),"</p>")),o.innerHTML=i,document.body.appendChild(o)}function Ze(){var e=window.__LX_RUNTIME_CONFIG;return!(!e||!e.error)}function en(){var e;return(null===(e=window.__LX_RUNTIME_CONFIG)||void 0===e?void 0:e.error)||null}var nn={handleEvent:function(){return tn()}};function tn(){if(Ze()){var e=en();e&&Qe(e)}}function rn(){$e(),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",nn):tn()}return rn(),e.LingXiaBridge=ze,e.boot=function(){$e(),tn()},e.bootWhenReady=rn,e.channel=function(e,n,t){return ze.channel(e,n,t)},e.getErrorInfo=en,e.hasError=Ze,e.initBridge=$e,e.invoke=function(e,n,t){return ze.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){We.notify(Je(e),n,Ye(t))},e.renderErrorUI=Qe,e.stream=function(e,n,t){return Ve(We.stream(Je(e),n,Ye(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 m(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(p=c.id){n.add(p);var l=s(c),d=a.coveredById.get(p);d!==l&&(!0===d&&(a.coveredCount-=1),!0===l&&(a.coveredCount+=1),a.coveredById.set(p,l),r({id:p,action:"component.coverage",covered:l}))}}for(var u=[],f=0,v=a.coveredById.entries();f<v.length;f++){var m=v[f],p=m[0];l=m[1];n.has(p)||(u.push(p),!0===l&&(a.coveredCount-=1))}for(var h=0,g=u;h<g.length;h++){p=g[h];a.coveredById.delete(p),r({id:p,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||{},h=(null===(n=p.displayLanguage)||void 0===n?void 0:n.trim())||"en-US";function g(){return p.os||"unknown"}function y(){return"iOS"===p.os}function w(){return"macOS"===p.os}function b(){return"Windows"===p.os}"undefined"!=typeof document&&document.documentElement&&(document.documentElement.lang=h);var _="__LingXiaRecvMessage",I=5e3,k="[LX.Bridge]",E="messageport",x="jsinterface",S="webmessage",T=p.appleDownstreamURL,A={data:!1,proto:!1,all:!1},O=[];function M(e){return A.all||A[e]}function L(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];(!0===p.dev||A.all||A.proto||A.data)&&console.log.apply(console,__spreadArray([k],e,!1))}function j(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];console.warn.apply(console,__spreadArray([k],e,!1))}function C(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];console.error.apply(console,__spreadArray([k],e,!1))}function N(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 B(e){try{return"function"==typeof structuredClone?structuredClone(e):JSON.parse(JSON.stringify(e))}catch(e){return{}}}var P=function(){var e,n;return"iOS"===p.os||"macOS"===p.os?"webkit":"Harmony"===p.os?"messageport":"Windows"===p.os?"webmessage":"Android"===p.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[_]&&(window[_]=function(e){O.push(e)});var R=null,D=!1,X=null,F=null,G=null,H=200,q=!1,U=0,W=0,z=null,J={listenerInstalled:!1,promise:null,resolve:null,reject:null,timer:null},Y={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&&(rn._connectWebMessagePort(o),null===(t=J.resolve)||void 0===t||t.call(J,o))}}};function V(){J.listenerInstalled||(J.listenerInstalled=!0,window.addEventListener("message",Y))}function $(){null!==J.timer&&(window.clearTimeout(J.timer),J.timer=null),J.resolve=null,J.reject=null,J.promise=null}function K(){return"webkit"===P&&(y()||w())}function Q(){null!==G&&(clearTimeout(G),G=null)}function Z(e){K()&&!q&&(q=!0,Q(),null!==z&&(clearInterval(z),z=null),"undefined"!=typeof document&&document.removeEventListener("visibilitychange",ce),ie=!1,null==F||F.abort(),D=!1,ne(e,!0))}function ee(e){for(var n=0,t=Array.from(ye.keys());n<t.length;n++){Le(t[n],{code:d,message:e})}for(var r=0,o=Array.from(we.keys());r<o.length;r++){je(o[r],{code:d,message:e})}!function(e){for(var n=0,t=Array.from(be.entries());n<t.length;n++){var r=t[n],o=r[0],i=r[1];be.delete(o),i._emitClose(d,e)}}(e)}function ne(e,n){Re(),se=null,de=!1,ue=!1,fe=0,n&&ee(e)}function te(e){if(e&&"object"==typeof e){W=Date.now();var n=e;if(!0!==n.lxshutdown){if(void 0===n.lxhb){if(!0===n.lxreset)return U=0,ne("Apple downstream reset",!0),void De();if("number"==typeof n.lxff){if(n.lxff<=U)return;return U=n.lxff,void Ue(n.m)}Ue(e)}}else Z("Apple downstream closed")}}function re(){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(!T)throw new Error("Apple downstream URL is not configured");return e=new AbortController,F=e,n=T.includes("?")?"&":"?",t="".concat(T).concat(n,"from=").concat(U),[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 Z("Apple downstream closed"),[2];if(!r.body)throw new Error("Apple downstream response body unavailable");D=!0,H=200,W=Date.now(),M("proto")&&L("Apple downstream connected"),De(),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{te(JSON.parse(r))}catch(e){j("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{te(JSON.parse(s))}catch(e){j("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 oe(){if(K()&&!q&&!X){Q();var e=!1;X=re().then(function(){e=!0}).catch(function(e){(null==F?void 0:F.signal.aborted)||j("Apple downstream failed:",e)}).finally(function(){var n,t=null!==(n=null==F?void 0:F.signal.aborted)&&void 0!==n&&n;X=null,F=null,D=!1,t||q||function(e,n){if(void 0===n&&(n=!1),K()&&!q){Q();var t=n?0:H;n||(H=Math.min(2*H,2e3));var r=n?"Apple downstream completed, reconnecting immediately: ".concat(e):"Apple downstream disconnected, retrying in ".concat(t,"ms: ").concat(e);t<=200?L(r):j(r),G=setTimeout(function(){G=null,oe()},t)}}("stream closed",e)})}}var ie=!1;function ae(){if(K()&&!q&&!ie){ie=!0;var e=X;null==F||F.abort();var n=function(){ie=!1,oe()};e?e.finally(n):n()}}function ce(){"visible"===document.visibilityState&&ae()}function le(e){var n,t,r,o=e.kind;"req"!==o&&"notify"!==o||L("postToNative: ".concat(o," ").concat(e.method)),M("proto")&&console.log("→",JSON.stringify(e,null,2));try{if("webkit"===P)return void(null===(t=null===(n=window.webkit)||void 0===n?void 0:n.messageHandlers.LingXia)||void 0===t||t.postMessage(e));var i=N(e);if(P===E&&R)return void R.postMessage(i);if((P===x||P===S)&&(null===(r=window.LingXiaProxy)||void 0===r?void 0:r.postMessage))return void window.LingXiaProxy.postMessage(i);j("Transport not ready")}catch(e){C("Send error:",e)}}var se=null,de=!1,ue=!1,fe=0,ve=null,me={},pe=0;function he(){return{data:new Set,end:new Set,error:new Set,close:new Set}}function ge(e,n){var t,r=he(),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){j("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){j("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){j("Stream error listener failed:",e)}}}},t}var ye=new Map,we=new Map,be=new Map,_e=[],Ie=-1,ke={},Ee=new Set,xe=new WeakMap,Se=new Map;function Te(e){if(e.startsWith("host."))return"host";var n=e.indexOf(".");return n>0?e.slice(0,n):"page"}function Ae(e){if(null!=e)return e}function Oe(){return P===E?!!R:K()?D:"webkit"===P||P===x||P===S}function Me(){return!!de&&(!!K()||Oe())}function Le(e,n){var t,r=ye.get(e);if(r){ye.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 je(e,n){var t=we.get(e);if(t){we.delete(e),null!==t.timerId&&clearTimeout(t.timerId);var r=f(n);t.channel._reject(r),t.reject(r)}}function Ce(e,n){ye.has(e)?Le(e,n):we.has(e)&&je(e,n)}function Ne(e){if(ye.has(e))return n=e,void((r=ye.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(){ye.has(n)&&Le(n,{code:t,message:"'".concat(r.method,"' timed out")})},r.timeoutMs))));var n,r;we.has(e)&&function(e){var n=we.get(e);n&&(null!==n.timerId&&clearTimeout(n.timerId),n.timerId=setTimeout(function(){je(e,{code:t,message:"Channel '".concat(n.topic,"' timed out")})},I))}(e)}function Be(e){for(var n,t=_e.length-1;t>=0;t--)if((null===(n=_e[t])||void 0===n?void 0:n.reqId)===e)return _e.splice(t,1),!0;return!1}function Pe(e,n){var t=e.kind,r="hello"===t||"helloAck"===t||"ready"===t;if(!Me()&&!r)return _e.length>=256?(C("Outbox full"),void(n&&Ce(n,{code:s,message:"Bridge outbox is full"}))):void _e.push({msg:e,reqId:n});n&&Ne(n),le(e)}function Re(){null!==ve&&(clearTimeout(ve),ve=null)}function De(){if(!de&&Oe()){Re();var e={v:2,kind:"hello",nonce:p.nonce||"",role:"view",protocolsSupported:[2]};ue=!0,le(e),ve=setTimeout(function(){if(!de)if(++fe<3)j("Handshake timeout (".concat(fe,"/").concat(3,"), retrying...")),ue=!1,De();else{for(C("Handshake failed"),Re(),ue=!1,fe=0;_e.length;){var e=_e.shift();(null==e?void 0:e.reqId)&&Ce(e.reqId,{code:o,message:"Bridge handshake failed"})}for(var n=0,t=Array.from(we.keys());n<t.length;n++){je(t[n],{code:o,message:"Bridge handshake failed"})}}},1e4)}}function Xe(e){return e.replace(/~1/g,"/").replace(/~0/g,"~")}function Fe(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(Xe)}(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 Ge(e){Ee.forEach(function(n){try{if(!xe.has(n))return xe.set(n,!0),void n(B(ke),{rev:Ie,initial:!0});n(B(ke),{rev:Ie,initial:e})}catch(e){j("Subscriber error:",e)}})}function He(e){if("function"!=typeof e)return function(){};if(Ee.add(e),Ie>=0){xe.set(e,!0);try{e(B(ke),{rev:Ie,initial:!0})}catch(e){C("Callback error:",e)}}return function(){Ee.delete(e),xe.delete(e)}}function qe(e){tn.call("state.getSnapshot",{scope:e}).catch(function(){})}function Ue(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=We.get(s);if(u)try{u(l)}catch(e){C("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(se=v.sessionId);case"ready":if(se&&v.sessionId!==se)return void j("sessionId mismatch");if(Re(),de=!0,fe=0,v.hostMethods)for(var m=0,p=Object.entries(v.hostMethods);m<p.length;m++){var h=p[m],g=h[0],y=h[1];me[g]=y}return M("proto")&&L("Handshake complete, hostMethods:",Object.keys(me).length),void function(){if(Me())for(;_e.length;){var e=_e.shift();e&&(e.reqId&&Ne(e.reqId),le(e.msg))}}();case"res":var w=ye.get(v.id);if(!w)return;if(ye.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||(ke=n.state,Ie=n.rev,M("data")&&(console.group("[LX] snapshot(res)"),console.log("rev:",Ie,"state:",B(ke)),console.groupEnd()),Ge(!0),0))}(v.result)||j("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(ye.has(v.id)){var _=ye.get(v.id);return void("stream"===(null==_?void 0:_.mode)&&_.stream?(null!==_.timerId&&(clearTimeout(_.timerId),_.timerId=null),_.timeoutMs=0,_.stream._emitData(v.payload)):j("Received event for non-stream request '".concat(v.id,"'")))}return;case"state.snapshot":return ke=v.state||{},Ie=v.rev,M("data")&&(console.group("[LX] snapshot"),console.log("rev:",Ie,"state:",B(ke)),console.groupEnd()),void Ge(!0);case"state.patch":if(v.baseRev!==Ie)return j("baseRev mismatch",{have:Ie,want:v.baseRev}),void qe(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=Fe(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)}}}}(ke,v.ops||[]),Ie=v.rev}catch(e){return C("Patch failed:",e),void qe(v.scope)}return M("data")&&(console.group("[LX] patch"),console.log("rev:",Ie,"ops:",v.ops),console.groupEnd()),Ge(!1),void(v.ack&&Pe({v:2,kind:"state.ack",scope:v.scope,rev:v.rev}));case"ch.ack":var I=we.get(v.id);if(!I)return;if(we.delete(v.id),null!==I.timerId&&clearTimeout(I.timerId),v.ok)I.channel._markOpen(),be.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=be.get(v.id);if(!k)return;return void k._emitData(v.payload);case"ch.close":if(we.get(v.id))return void je(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=be.get(v.id);if(!E)return;return be.delete(v.id),void E._emitClose(v.code,v.reason);case"req":var x=v,S=Te(x.method);if(!x.cap||x.cap!==S)return void Pe({v:2,kind:"res",id:x.id,ok:!1,error:{code:c,message:"Invalid cap for ".concat(x.method)}});var T=Se.get(x.method);return T?void Promise.resolve().then(function(){return T(x.params)}).then(function(e){Pe({v:2,kind:"res",id:x.id,ok:!0,result:e})}).catch(function(e){Pe({v:2,kind:"res",id:x.id,ok:!1,error:f(e)})}):void Pe({v:2,kind:"res",id:x.id,ok:!1,error:{code:a,message:"View handler not found: ".concat(x.method)}})}else j("Invalid V2 message:",e)}var We=new Map,ze=[],Je=!1;function Ye(){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 Ve(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(N(e))}catch(e){C("NativeComponent send error:",e)}}function $e(){if(Ye()&&0!==ze.length)for(Je=!0;ze.length;){var e=ze.shift();try{Ve(e)}catch(e){break}}}function Ke(e){try{if(!Ye())return void ze.push(e);Je||$e(),Ve(e)}catch(e){C("NC send failed:",e)}}function Qe(e){return"".concat(e,"_").concat(Date.now(),"_").concat(pe++)}function Ze(e,n,t){if(n)if(n.aborted)t();else{var r={handleEvent:function(){n.removeEventListener("abort",r),t()}};n.addEventListener("abort",r)}}var en,nn,tn={call:function(e,n,t){return new Promise(function(o,a){var c;if(e&&"string"==typeof e){ue||De();var l=Qe("c"),s=(null==t?void 0:t.cap)||Te(e),d=null!==(c=null==t?void 0:t.timeoutMs)&&void 0!==c?c:I;ye.set(l,{method:e,mode:"call",resolve:o,reject:function(e){return a(e)},timeoutMs:d,timerId:null}),Pe({v:2,kind:"req",id:l,method:e,params:Ae(n),cap:s},l),Ze(0,null==t?void 0:t.signal,function(){var e=Be(l);Le(l,{code:r,message:"Bridge request aborted"}),!e&&de&&Pe({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=ge("invalid",function(){});return a._reject({code:i,message:"Method name must be a non-empty string"}),a}ue||De();var c=Qe("c"),l=ge(c,function(){Be(c)?Le(c,{code:r,message:"Bridge request aborted"}):de&&Pe({v:2,kind:"cancel",id:c})}),s=(null==t?void 0:t.cap)||Te(e),d=null!==(o=null==t?void 0:t.timeoutMs)&&void 0!==o?o:I;return ye.set(c,{method:e,mode:"stream",stream:l,timeoutMs:d,timerId:null}),Pe({v:2,kind:"req",id:c,method:e,params:Ae(n),cap:s},c),Ze(0,null==t?void 0:t.signal,function(){return l.cancel()}),l},notify:function(e,n,t){e&&"string"==typeof e&&(ue||De(),Pe({v:2,kind:"notify",method:e,params:Ae(n),cap:(null==t?void 0:t.cap)||Te(e)}))},state:{subscribe:He},channel:{open:function(e,n,t){return e&&"string"==typeof e?(ue||De(),new Promise(function(r,o){var i=Qe("ch"),a=function(e,n,t){var r,o=he(),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){j("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){j("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){j("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){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 f}(i,function(e,n){Pe({v:2,kind:"ch.data",id:i,seq:n,payload:e})},function(e,n){var t=we.get(i);t&&null!==t.timerId&&clearTimeout(t.timerId),we.delete(i),be.delete(i),Pe({v:2,kind:"ch.close",id:i,code:e,reason:n})});we.set(i,{topic:e,channel:a,resolve:r,reject:o,timerId:null}),Pe({v:2,kind:"ch.open",id:i,topic:e,params:Ae(n),cap:(null==t?void 0:t.cap)||Te(e)},i)})):Promise.reject({code:i,message:"Topic name must be a non-empty string"})}}},rn={invoke:function(e,n,t){return tn.call(on(e),n,an(t)).then(function(e){return e}).catch(function(e){return Promise.reject(v(e))})},notify:function(e,n,t){tn.notify(on(e),n,an(t))},stream:function(e,n,t){return cn(tn.stream(on(e),n,an(t)))},channel:function(e,n,t){return tn.channel.open(on(e),n,an(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:tn,state:{subscribe:He},_connectWebMessagePort:function(e){if(P===E){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}Ue(n)};try{e.start()}catch(e){}L("Port connected"),De()}},_receiveEvaluateMessage:function(e){try{e&&Ue(JSON.parse(e))}catch(e){C("Parse error:",e)}},debug:(en=A,nn={},Object.keys(en).forEach(function(e){Object.defineProperty(nn,e,{enumerable:!0,configurable:!1,get:function(){return en[e]},set:function(n){en[e]=!!n,console.log("[LX] ".concat(e,": ").concat(n))}})}),nn),platform:{isHarmony:function(){return"Harmony"===p.os},isIOS:y,isAndroid:function(){return"Android"===p.os},isMacOS:w,isWindows:b,isDesktop:function(){return w()||b()},isApple:function(){return y()||w()},isRunner:function(){return!0===p.runner},getOS:g},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:Ke,hasHandler:Ye,flush:$e,register:function(e,n){return e&&"function"==typeof n?(We.set(e,n),function(){return We.delete(e)}):function(){}},unregister:function(e){We.delete(e)}},isReady:function(){return de}};function on(e){return e.startsWith("host.")?e:"host.".concat(e)}function an(e){return __assign(__assign({},e||{}),{cap:(null==e?void 0:e.cap)||"host"})}function cn(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 ln(){if(window.__LX_BRIDGE_INIT_STATE)L("Bridge already ".concat(window.__LX_BRIDGE_INIT_STATE,", skipping duplicate init"));else{window.__LX_BRIDGE_INIT_STATE="initializing";try{L("Method: ".concat(P)),function(e){if("undefined"!=typeof window&&(window[_]=e,0!==O.length))for(var n=0,t=O.splice(0,O.length);n<t.length;n++){var r=t[n];try{e(r)}catch(e){j("Failed to replay queued native message:",e)}}}(rn._receiveEvaluateMessage),K()?(oe(),K()&&!q&&null===z&&(z=setInterval(function(){0!==W&&Date.now()-W>35e3&&(j("Apple downstream stale (no heartbeat), forcing reconnect"),ae())},5e3)),K()&&"undefined"!=typeof document&&document.addEventListener("visibilitychange",ce)):P===E?(V(),function(){var e,n;if(R)return Promise.resolve(R);if(J.promise)return J.promise;V(),J.promise=new Promise(function(e,n){J.resolve=function(n){$(),e(n)},J.reject=function(e){$(),n(e)},J.timer=window.setTimeout(function(){var e;null===(e=J.reject)||void 0===e||e.call(J,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=J.reject)||void 0===n||n.call(J,e)}return J.promise}().catch(function(e){return j("Port init failed:",e)})):"webkit"===P||P===x||P===S?De():j("Unknown method"),window.LingXiaBridge=rn,window.__lxForceDownstreamReconnect=ae,m({os:g(),send:Ke}),window.__LX_BRIDGE_INIT_STATE="initialized",L("Init complete")}catch(e){throw delete window.__LX_BRIDGE_INIT_STATE,e}}}function sn(e){var n=document.createElement("div");return n.textContent=e,n.innerHTML}function dn(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(sn(n),"</div>")),t&&(i+='<p class="lx-error-desc" style="margin-top:12px">'.concat(sn(t),"</p>")),o.innerHTML=i,document.body.appendChild(o)}function un(){var e=window.__LX_RUNTIME_CONFIG;return!(!e||!e.error)}function fn(){var e;return(null===(e=window.__LX_RUNTIME_CONFIG)||void 0===e?void 0:e.error)||null}var vn={handleEvent:function(){return mn()}};function mn(){if(un()){var e=fn();e&&dn(e)}}function pn(){ln(),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",vn):mn()}return pn(),e.LingXiaBridge=rn,e.boot=function(){ln(),mn()},e.bootWhenReady=pn,e.channel=function(e,n,t){return rn.channel(e,n,t)},e.getDisplayLanguage=function(){return h},e.getErrorInfo=fn,e.hasError=un,e.initBridge=ln,e.invoke=function(e,n,t){return rn.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){tn.notify(on(e),n,an(t))},e.renderErrorUI=dn,e.stream=function(e,n,t){return cn(tn.stream(on(e),n,an(t)))},e}({});
|