@lingxia/bridge 0.8.0 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bridge-runtime.es2020.js +1 -1
- package/dist/bridge-runtime.es5.js +1 -1
- package/dist/es2020/bridge.js +26 -5
- package/dist/es2020/runtime-env.js +6 -1
- package/dist/es5/bridge.js +70 -38
- package/dist/es5/runtime-env.js +6 -1
- package/dist/runtime-env.d.ts +2 -1
- package/dist/types.d.ts +2 -1
- package/package.json +7 -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||{};function h(){return p.os||"unknown"}function g(){return"iOS"===p.os}function v(){return"macOS"===p.os}function y(){return"Windows"===p.os}const x="__LingXiaRecvMessage",w=5e3,b="[LX.Bridge]",k="messageport",E="jsinterface",I="webmessage",C=p.appleDownstreamURL,_={data:!1,proto:!1,all:!1},T=[];function L(e){return _.all||_[e]}function S(...e){console.log(b,...e)}function M(...e){console.warn(b,...e)}function N(...e){console.error(b,...e)}function A(e){try{return JSON.stringify(e)}catch{return function(e,t){const n=new WeakSet;return JSON.stringify(e,(e,t)=>{if("object"==typeof t&&null!==t){if(n.has(t))return"[Circular]";n.add(t)}return t},t)}(e)}}function B(e){try{return"function"==typeof structuredClone?structuredClone(e):JSON.parse(JSON.stringify(e))}catch{return{}}}const O="iOS"===p.os||"macOS"===p.os?"webkit":"Harmony"===p.os?"messageport":"Windows"===p.os?"webmessage":"Android"===p.os?window.LingXiaProxy?.supportsMessagePort?.()?"messageport":"jsinterface":"unknown";"undefined"!=typeof window&&"function"!=typeof window[x]&&(window[x]=e=>{T.push(e)});let j=null,P=!1,R=null,F=null,D=null,X=200;const $={listenerInstalled:!1,promise:null,resolve:null,reject:null,timer:null},H={handleEvent:e=>{const t=e;if("LingXia-port-init"!==t.data)return;const n=t.ports?.[0];n&&(Ge._connectWebMessagePort(n),$.resolve?.(n))}};function q(){$.listenerInstalled||($.listenerInstalled=!0,window.addEventListener("message",H))}function z(){null!==$.timer&&(window.clearTimeout($.timer),$.timer=null),$.resolve=null,$.reject=null,$.promise=null}function G(){return"webkit"===O&&(g()||v())}function U(){null!==D&&(clearTimeout(D),D=null)}function W(e){for(const t of Array.from(se.keys()))we(t,{code:c,message:e});for(const t of Array.from(ae.keys()))be(t,{code:c,message:e});!function(e){for(const[t,n]of Array.from(le.entries()))le.delete(t),n._emitClose(c,e)}(e)}function J(e){let t=e;for(;;){const e=t.indexOf("\n");if(e<0)break;const n=t.slice(0,e).trim();if(t=t.slice(e+1),n)try{Oe(JSON.parse(n))}catch(e){M("Apple downstream parse error:",e,n)}}return t}function Y(){G()&&(R||(U(),R=async function(){if(!C)throw new Error("Apple downstream URL is not configured");const e=new AbortController;F=e;const t=await fetch(C,{method:"GET",cache:"no-store",headers:{Accept:"application/x-ndjson"},signal:e.signal});if(!t.ok)throw new Error(`Apple downstream HTTP ${t.status}`);if(!t.body)throw new Error("Apple downstream response body unavailable");P=!0,X=200,L("proto")&&S("Apple downstream connected"),Le();const n=t.body.getReader(),o=new TextDecoder;let r="";try{for(;;){const{value:e,done:t}=await n.read();if(t)break;r+=o.decode(e,{stream:!0}),r=J(r)}r+=o.decode();const e=r.trim();if(e)try{Oe(JSON.parse(e))}catch(t){M("Apple downstream trailing parse error:",t,e)}}catch(t){if(e.signal.aborted)return;throw t}finally{try{n.releaseLock()}catch{}}}().catch(e=>{F?.signal.aborted||M("Apple downstream failed:",e)}).finally(()=>{const e=F?.signal.aborted??!1;R=null,F=null;const t=P;var n,o;P=!1,n="Apple downstream closed",o=t,Te(),K=null,Q=!1,Z=!1,ee=0,o&&W(n),e||function(e){if(!G())return;U();const t=X;X=Math.min(2*X,2e3);const n=`Apple downstream disconnected, retrying in ${t}ms: ${e}`;t<=200?S(n):M(n),D=setTimeout(()=>{D=null,Y()},t)}("stream closed")})))}function V(e){const t=e.kind;"req"!==t&&"notify"!==t||S(`postToNative: ${t} ${e.method}`),L("proto")&&console.log("→",JSON.stringify(e,null,2));try{if("webkit"===O)return void window.webkit?.messageHandlers.LingXia?.postMessage(e);const t=A(e);if(O===k&&j)return void j.postMessage(t);if((O===E||O===I)&&window.LingXiaProxy?.postMessage)return void window.LingXiaProxy.postMessage(t);M("Transport not ready")}catch(e){N("Send error:",e)}}let K=null,Q=!1,Z=!1,ee=0,te=null;const ne={};let oe=0;function re(){return{data:new Set,end:new Set,error:new Set,close:new Set}}function ie(e,t){const n=re();let o=!1,r=()=>{},i=()=>{};const s=[],a=[],l=new Promise((e,t)=>{r=e,i=t});return{id:e,result:l,on(e,t){return"data"===e&&n.data.add(t),"end"===e&&n.end.add(t),"error"===e&&n.error.add(t),this},[Symbol.asyncIterator]:()=>({next:()=>s.length>0?Promise.resolve({done:!1,value:s.shift()}):o?l.then(e=>({done:!0,value:e}),e=>Promise.reject(e)):new Promise((e,t)=>{a.push({resolve:e,reject:t})})}),cancel(){o||t()},_emitData(e){if(!o){a.length>0?a.shift().resolve({done:!1,value:e}):s.push(e);for(const t of n.data)try{t(e)}catch(e){M("Stream data listener failed:",e)}}},_resolve(e){if(!o){for(o=!0,r(e);a.length>0;)a.shift().resolve({done:!0,value:e});for(const t of n.end)try{t(e)}catch(e){M("Stream end listener failed:",e)}}},_reject(e){if(!o){for(o=!0,i(e);a.length>0;)a.shift().reject(e);for(const t of n.error)try{t(e)}catch(e){M("Stream error listener failed:",e)}}}}}const se=new Map,ae=new Map,le=new Map,ce=[];let de=-1,ue={};const me=new Set,fe=new WeakMap,pe=new Map;function he(e,t){pe.set(e,t)}function ge(e){if(e.startsWith("host."))return"host";const t=e.indexOf(".");return t>0?e.slice(0,t):"page"}function ve(e){if(null!=e)return e}function ye(){return O===k?!!j:G()?P:"webkit"===O||O===E||O===I}function xe(){return ye()&&Q}function we(e,t){const n=se.get(e);if(n){se.delete(e),null!==n.timerId&&clearTimeout(n.timerId);const o=u(t);if("stream"===n.mode&&n.stream)return void n.stream._reject(o);n.reject?.(o)}}function be(e,t){const n=ae.get(e);if(!n)return;ae.delete(e),null!==n.timerId&&clearTimeout(n.timerId);const o=u(t);n.channel._reject(o),n.reject(o)}function ke(e,t){se.has(e)?we(e,t):ae.has(e)&&be(e,t)}function Ee(e){const n=se.get(e);n&&(!Number.isFinite(n.timeoutMs)||n.timeoutMs<=0?null!==n.timerId&&(clearTimeout(n.timerId),n.timerId=null):(null!==n.timerId&&clearTimeout(n.timerId),n.timerId=setTimeout(()=>{se.has(e)&&we(e,{code:t,message:`'${n.method}' timed out`})},n.timeoutMs)))}function Ie(e){se.has(e)?Ee(e):ae.has(e)&&function(e){const n=ae.get(e);n&&(null!==n.timerId&&clearTimeout(n.timerId),n.timerId=setTimeout(()=>{be(e,{code:t,message:`Channel '${n.topic}' timed out`})},w))}(e)}function Ce(e){for(let t=ce.length-1;t>=0;t--)if(ce[t]?.reqId===e)return ce.splice(t,1),!0;return!1}function _e(e,t){const n=e.kind,o="hello"===n||"helloAck"===n||"ready"===n;if(!xe()&&!o)return ce.length>=256?(N("Outbox full"),void(t&&ke(t,{code:l,message:"Bridge outbox is full"}))):void ce.push({msg:e,reqId:t});t&&Ie(t),V(e)}function Te(){null!==te&&(clearTimeout(te),te=null)}function Le(){if(Q)return;if(!ye())return;Te();const e={v:2,kind:"hello",nonce:p.nonce||"",role:"view",protocolsSupported:[2]};Z=!0,V(e),te=setTimeout(()=>{if(!Q)if(ee++,ee<3)M(`Handshake timeout (${ee}/3), retrying...`),Z=!1,Le();else{for(N("Handshake failed"),Te(),Z=!1,ee=0;ce.length;){const e=ce.shift();e?.reqId&&ke(e.reqId,{code:o,message:"Bridge handshake failed"})}for(const e of Array.from(ae.keys()))be(e,{code:o,message:"Bridge handshake failed"})}},1e4)}function Se(e){return e.replace(/~1/g,"/").replace(/~0/g,"~")}function Me(e,t,n=!1){const o=function(e){if(""===e)return[];if(!e.startsWith("/"))throw new Error(`Invalid JSON pointer: ${e}`);return e.split("/").slice(1).map(Se)}(t);if(0===o.length)return{container:{$root:e},key:"$root"};let r=e;for(let e=0;e<o.length-1;e++){const t=o[e];if(Array.isArray(r))r=r[Number(t)];else{if(!r||"object"!=typeof r)throw new Error(`Invalid container at ${t}`);{const i=r;if(n&&void 0===i[t]){const n=o[e+1];i[t]=n&&/^\d+$/.test(n)?[]:{}}r=i[t]}}}return{container:r,key:o[o.length-1]}}function Ne(e){me.forEach(t=>{try{if(!fe.has(t))return fe.set(t,!0),void t(B(ue),{rev:de,initial:!0});t(B(ue),{rev:de,initial:e})}catch(e){M("Subscriber error:",e)}})}function Ae(e){if("function"!=typeof e)return()=>{};if(me.add(e),de>=0){fe.set(e,!0);try{e(B(ue),{rev:de,initial:!0})}catch(e){N("Callback error:",e)}}return()=>{me.delete(e),fe.delete(e)}}function Be(e){ze.call("state.getSnapshot",{scope:e}).catch(()=>{})}function Oe(e){if(e&&"object"==typeof e){const t=e;if("event"===t.type&&"nativecomponent"===t.name&&t.payload){const e=t.payload,n=e.id||e.componentId;if("string"==typeof n){const t=je.get(n);if(t)try{t(e)}catch(e){N("NC handler error:",e)}}return}}const t=function(e){if(!e||"object"!=typeof e)return null;const t=e.v,n=e.kind;return 2!==t||"string"!=typeof n?null:e}(e);if(t)switch(t.kind){case"helloAck":return void(K=t.sessionId);case"ready":if(K&&t.sessionId!==K)return void M("sessionId mismatch");if(Te(),Q=!0,ee=0,t.hostMethods)for(const[e,n]of Object.entries(t.hostMethods))ne[e]=n;return L("proto")&&S("Handshake complete, hostMethods:",Object.keys(ne).length),void function(){if(xe())for(;ce.length;){const e=ce.shift();e&&(e.reqId&&Ie(e.reqId),V(e.msg))}}();case"res":{const e=se.get(t.id);if(!e)return;if(se.delete(t.id),null!==e.timerId&&clearTimeout(e.timerId),t.ok){if("state.getSnapshot"===e.method&&(function(e){if(!e||"object"!=typeof e)return!1;const t=e;return!("number"!=typeof t.rev||!Number.isFinite(t.rev)||!t.state||"object"!=typeof t.state||(ue=t.state,de=t.rev,L("data")&&(console.group("[LX] snapshot(res)"),console.log("rev:",de,"state:",B(ue)),console.groupEnd()),Ne(!0),0))}(t.result)||M("Invalid state.getSnapshot result")),"stream"===e.mode&&e.stream)return void e.stream._resolve(t.result);e.resolve?.(t.result)}else{const n=u(t.error);if("stream"===e.mode&&e.stream)return void e.stream._reject(n);e.reject?.(n)}return}case"event":if(se.has(t.id)){const e=se.get(t.id);return void("stream"===e?.mode&&e.stream?(Ee(t.id),e.stream._emitData(t.payload)):M(`Received event for non-stream request '${t.id}'`))}return;case"state.snapshot":return ue=t.state||{},de=t.rev,L("data")&&(console.group("[LX] snapshot"),console.log("rev:",de,"state:",B(ue)),console.groupEnd()),void Ne(!0);case"state.patch":if(t.baseRev!==de)return M("baseRev mismatch",{have:de,want:t.baseRev}),void Be(t.scope);try{!function(e,t){for(const n of t){const t="add"===n.op||"replace"===n.op,{container:o,key:r}=Me(e,n.path,t);if("$root"===r){for(const t of Object.keys(e))delete e[t];if("remove"!==n.op){const t=n.value;t&&"object"==typeof t&&Object.assign(e,t)}continue}if(Array.isArray(o)){const e="-"===r?o.length:Number(r);if(!Number.isFinite(e)||e<0)throw new Error("Invalid index");"remove"===n.op?o.splice(e,1):"add"===n.op?o.splice(e,0,n.value):"replace"===n.op&&(o[e]=n.value);continue}if(!o||"object"!=typeof o)throw new Error("Invalid container");const i=o;"remove"===n.op?delete i[r]:i[r]=n.value}}(ue,t.ops||[]),de=t.rev}catch(e){return N("Patch failed:",e),void Be(t.scope)}return L("data")&&(console.group("[LX] patch"),console.log("rev:",de,"ops:",t.ops),console.groupEnd()),Ne(!1),void(t.ack&&_e({v:2,kind:"state.ack",scope:t.scope,rev:t.rev}));case"ch.ack":{const e=ae.get(t.id);if(!e)return;if(ae.delete(t.id),null!==e.timerId&&clearTimeout(e.timerId),t.ok)e.channel._markOpen(),le.set(t.id,e.channel),e.resolve(e.channel);else{const n=u(t.error);e.channel._reject(n),e.reject(n)}return}case"ch.data":{const e=le.get(t.id);if(!e)return;return void e._emitData(t.payload)}case"ch.close":{const e=ae.get(t.id);if(e)return ae.delete(t.id),void e.channel._emitClose(t.code,t.reason);const n=le.get(t.id);if(!n)return;return le.delete(t.id),void n._emitClose(t.code,t.reason)}case"req":{const e=t,n=ge(e.method);if(!e.cap||e.cap!==n)return void _e({v:2,kind:"res",id:e.id,ok:!1,error:{code:s,message:`Invalid cap for ${e.method}`}});const o=pe.get(e.method);return o?void Promise.resolve().then(()=>o(e.params)).then(t=>{_e({v:2,kind:"res",id:e.id,ok:!0,result:t})}).catch(t=>{_e({v:2,kind:"res",id:e.id,ok:!1,error:u(t)})}):void _e({v:2,kind:"res",id:e.id,ok:!1,error:{code:i,message:`View handler not found: ${e.method}`}})}}else M("Invalid V2 message:",e)}const je=new Map,Pe=[];let Re=!1;function Fe(){return"undefined"!=typeof window&&!(!window.webkit?.messageHandlers?.NativeComponent&&!window.NativeComponentBridge?.postMessage)}function De(e){try{if(window.webkit?.messageHandlers?.NativeComponent)return void window.webkit.messageHandlers.NativeComponent.postMessage(e);if(window.NativeComponentBridge?.postMessage)return void window.NativeComponentBridge.postMessage(A(e))}catch(e){N("NativeComponent send error:",e)}}function Xe(){if(Fe()&&0!==Pe.length)for(Re=!0;Pe.length;){const e=Pe.shift();try{De(e)}catch{break}}}function $e(e){try{if(!Fe())return void Pe.push(e);Re||Xe(),De(e)}catch(e){N("NC send failed:",e)}}function He(e){return`${e}_${Date.now()}_${oe++}`}function qe(e,t,n){if(!t)return;if(t.aborted)return void n();let o={handleEvent:()=>{t.removeEventListener("abort",o),n()}};t.addEventListener("abort",o)}const ze={call:(e,t,o)=>new Promise((i,s)=>{if(!e||"string"!=typeof e)return void s({code:r,message:"Method name must be a non-empty string"});Z||Le();const a=He("c"),l=o?.cap||ge(e),c=o?.timeoutMs??w;se.set(a,{method:e,mode:"call",resolve:i,reject:e=>s(e),timeoutMs:c,timerId:null}),_e({v:2,kind:"req",id:a,method:e,params:ve(t),cap:l},a),qe(0,o?.signal,()=>{const e=Ce(a);we(a,{code:n,message:"Bridge request aborted"}),!e&&Q&&_e({v:2,kind:"cancel",id:a})})}),stream(e,t,o){if(!e||"string"!=typeof e){const e=ie("invalid",()=>{});return e._reject({code:r,message:"Method name must be a non-empty string"}),e}Z||Le();const i=He("c"),s=ie(i,()=>{Ce(i)?we(i,{code:n,message:"Bridge request aborted"}):Q&&_e({v:2,kind:"cancel",id:i})}),a=o?.cap||ge(e),l=o?.timeoutMs??w;return se.set(i,{method:e,mode:"stream",stream:s,timeoutMs:l,timerId:null}),_e({v:2,kind:"req",id:i,method:e,params:ve(t),cap:a},i),qe(0,o?.signal,()=>s.cancel()),s},notify(e,t,n){e&&"string"==typeof e&&(Z||Le(),_e({v:2,kind:"notify",method:e,params:ve(t),cap:n?.cap||ge(e)}))},state:{subscribe:Ae},channel:{open:(e,t,n)=>e&&"string"==typeof e?(Z||Le(),new Promise((o,r)=>{const i=He("ch"),s=function(e,t,n){const o=re();let r=!1,i=0,s=!1;const a=[],l=[],d={id:e,send(n){r?t(n,i++):d._reject({code:c,message:`Channel '${e}' is closed`})},on(e,t){if("data"===e&&(o.data.add(t),a.length>0)){const e=a.splice(0);for(const n of e)try{t(n)}catch(e){M("Channel listener failed:",e)}}return"close"===e&&o.close.add(t),"error"===e&&o.error.add(t),this},[Symbol.asyncIterator]:()=>({next:()=>a.length>0?Promise.resolve({done:!1,value:a.shift()}):s?Promise.resolve({done:!0,value:void 0}):new Promise((e,t)=>{l.push({resolve:e,reject:t})})}),close(e,t){r&&(r=!1,s=!0,n(e,t),d._emitClose(e,t))},_emitData(e){if(r){l.length>0?l.shift().resolve({done:!1,value:e}):a.push(e);for(const t of o.data)try{t(e)}catch(e){M("Channel listener failed:",e)}}},_emitClose(e,t){for(s=!0;l.length>0;)l.shift().resolve({done:!0,value:void 0});for(const n of o.close)try{n(e,t)}catch(e){M("Channel close listener failed:",e)}},_reject(e){for(s=!0;l.length>0;)l.shift().reject(e);for(const t of o.error)try{t(e)}catch(e){M("Channel error listener failed:",e)}},_markOpen(){r=!0,s=!1},_isOpen:()=>r,_nextSeq:()=>i++};return d}(i,(e,t)=>{_e({v:2,kind:"ch.data",id:i,seq:t,payload:e})},(e,t)=>{const n=ae.get(i);n&&null!==n.timerId&&clearTimeout(n.timerId),ae.delete(i),le.delete(i),_e({v:2,kind:"ch.close",id:i,code:e,reason:t})});ae.set(i,{topic:e,channel:s,resolve:o,reject:r,timerId:null}),_e({v:2,kind:"ch.open",id:i,topic:e,params:ve(t),cap:n?.cap||ge(e)},i)})):Promise.reject({code:r,message:"Topic name must be a non-empty string"})}},Ge={invoke:(e,t,n)=>ze.call(Ue(e),t,We(n)).then(e=>e).catch(e=>Promise.reject(m(e))),notify(e,t,n){ze.notify(Ue(e),t,We(n))},stream:(e,t,n)=>Je(ze.stream(Ue(e),t,We(n))),channel:(e,t,n)=>ze.channel.open(Ue(e),t,We(n)).then(e=>function(e){const t=new Set,n=new Set;return e.on("data",e=>{for(const n of t)n(e)}),e.on("close",(e,t)=>{const o={code:e,reason:t};for(const e of n)e(o)}),{send(t){e.send(t)},onMessage:e=>(t.add(e),()=>{t.delete(e)}),onClose:e=>(n.add(e),()=>{n.delete(e)}),close(t,n){e.close(t,n)}}}(e)).catch(e=>Promise.reject(m(e))),raw:ze,state:{subscribe:Ae},_connectWebMessagePort(e){if(O===k){if(j&&j!==e)try{j.onmessage=null,j.close()}catch{}j=e,e.onmessage=e=>{let t=e.data;if("string"==typeof t)try{t=JSON.parse(t)}catch{return}Oe(t)};try{e.start()}catch{}S("Port connected"),Le()}},_receiveEvaluateMessage(e){try{e&&Oe(JSON.parse(e))}catch(e){N("Parse error:",e)}},debug:function(e){const t={};return Object.keys(e).forEach(n=>{Object.defineProperty(t,n,{enumerable:!0,configurable:!1,get:()=>e[n],set(t){e[n]=!!t,console.log(`[LX] ${n}: ${t}`)}})}),t}(_),platform:{isHarmony:function(){return"Harmony"===p.os},isIOS:g,isAndroid:function(){return"Android"===p.os},isMacOS:v,isWindows:y,isDesktop:function(){return v()||y()},getOS:h},dom:{measureById(e){try{if(!e)return null;const t=document.getElementById(e);if(!t)return null;const n=t.getBoundingClientRect();let o=0;try{o=parseFloat(getComputedStyle(t).borderRadius)||0}catch{}return[n.left+window.scrollX,n.top+window.scrollY,n.width,n.height,o]}catch{return null}}},nativeComponents:{send:$e,hasHandler:Fe,flush:Xe,register:(e,t)=>e&&"function"==typeof t?(je.set(e,t),()=>je.delete(e)):()=>{},unregister(e){je.delete(e)}},isReady:()=>Q};function Ue(e){return e.startsWith("host.")?e:`host.${e}`}function We(e){return{...e||{},cap:e?.cap||"host"}}function Je(e){const t=new Set,n=new Set;return e.on("data",e=>{for(const n of t)n(e)}),e.on("error",e=>{const t=m(e);for(const e of n)e(t)}),{onEvent:e=>(t.add(e),()=>{t.delete(e)}),onError:e=>(n.add(e),()=>{n.delete(e)}),result:e.result.catch(e=>Promise.reject(m(e))),cancel(){e.cancel()}}}function Ye(){if(window.__LX_BRIDGE_INIT_STATE)S(`Bridge already ${window.__LX_BRIDGE_INIT_STATE}, skipping duplicate init`);else{window.__LX_BRIDGE_INIT_STATE="initializing";try{S(`Method: ${O}`),function(e){if("undefined"==typeof window)return;if(window[x]=e,0===T.length)return;const t=T.splice(0,T.length);for(const n of t)try{e(n)}catch(e){M("Failed to replay queued native message:",e)}}(Ge._receiveEvaluateMessage),G()?Y():O===k?(q(),function(){if(j)return Promise.resolve(j);if($.promise)return $.promise;q(),$.promise=new Promise((e,t)=>{$.resolve=t=>{z(),e(t)},$.reject=e=>{z(),t(e)},$.timer=window.setTimeout(()=>{$.reject?.(new Error("MessagePort init timed out after 5000ms"))},5e3)});try{window.LingXiaProxy?.getPort("LingXiaPort")}catch(e){$.reject?.(e)}return $.promise}().catch(e=>M("Port init failed:",e))):"webkit"===O||O===E||O===I?Le():M("Unknown method"),window.LingXiaBridge=Ge,f({os:h(),send:$e}),window.__LX_BRIDGE_INIT_STATE="initialized",S("Init complete")}catch(e){throw delete window.__LX_BRIDGE_INIT_STATE,e}}}function Ve(e){const t=document.createElement("div");return t.textContent=e,t.innerHTML}function Ke(e){const{failedPath:t,reason:n}=e,o=document.createElement("style");o.textContent="\n* { margin: 0; padding: 0; box-sizing: border-box; }\nbody {\n font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Text', 'Segoe UI', Roboto, sans-serif;\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 100vh;\n background: #f5f5f7;\n color: #1d1d1f;\n padding: 20px;\n -webkit-font-smoothing: antialiased;\n}\n.lx-error {\n text-align: center;\n max-width: 400px;\n}\n.lx-error-code {\n font-size: 120px;\n font-weight: 700;\n color: #d1d1d6;\n line-height: 1;\n letter-spacing: -4px;\n}\n.lx-error-title {\n font-size: 21px;\n font-weight: 600;\n margin: 16px 0 8px;\n color: #1d1d1f;\n}\n.lx-error-desc {\n font-size: 15px;\n color: #86868b;\n line-height: 1.5;\n}\n.lx-error-path {\n display: inline-block;\n margin-top: 20px;\n padding: 10px 16px;\n background: rgba(0,0,0,0.04);\n border-radius: 8px;\n font-family: 'SF Mono', ui-monospace, Menlo, Monaco, monospace;\n font-size: 13px;\n color: #1d1d1f;\n word-break: break-all;\n max-width: 100%;\n}\n@media (prefers-color-scheme: dark) {\n body { background: #000; color: #f5f5f7; }\n .lx-error-code { color: #3a3a3c; }\n .lx-error-title { color: #f5f5f7; }\n .lx-error-desc { color: #86868b; }\n .lx-error-path { background: rgba(255,255,255,0.08); color: #f5f5f7; }\n}\n",document.head.appendChild(o),document.body.innerHTML="",document.body.style.cssText="";const r=document.createElement("div");r.className="lx-error";let i='<div class="lx-error-code">404</div>';i+='<h1 class="lx-error-title">Page Not Found</h1>',i+="<p class=\"lx-error-desc\">The page you're looking for doesn't exist.</p>",t&&(i+=`<div class="lx-error-path">${Ve(t)}</div>`),n&&(i+=`<p class="lx-error-desc" style="margin-top:12px">${Ve(n)}</p>`),r.innerHTML=i,document.body.appendChild(r)}function Qe(){const e=window.__LX_RUNTIME_CONFIG;return!(!e||!e.error)}function Ze(){return window.__LX_RUNTIME_CONFIG?.error||null}const et={handleEvent:()=>tt()};function tt(){if(Qe()){const e=Ze();e&&Ke(e)}}function nt(){Ye(),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",et):tt()}const ot="lx-action-sheet-style";let rt=null;function it(e){const t=e,n=t?.itemList??[],o=t?.cancelText??"Cancel",r=t?.itemColor??"#007AFF",i=(rt??Promise.resolve()).then(()=>st(n,o,r),()=>st(n,o,r));return rt=i,i}function st(e,t,n){return new Promise(o=>{let r=!1;const i="macOS"===h();!function(){if(document.getElementById(ot))return;const e=document.createElement("style");e.id=ot,e.textContent="\n.lx-as-backdrop {\n position: fixed; inset: 0; z-index: 99999;\n background: rgba(0,0,0,0.4);\n opacity: 0; transition: opacity 300ms ease;\n}\n.lx-as-backdrop.lx-as-visible { opacity: 1; }\n\n.lx-as-sheet {\n position: fixed; left: 0; right: 0; bottom: 0; z-index: 100000;\n transform: translateY(100%);\n transition: transform 300ms ease;\n font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Text', 'Segoe UI', Roboto, sans-serif;\n -webkit-font-smoothing: antialiased;\n}\n.lx-as-sheet.lx-as-visible { transform: translateY(0); }\n.lx-as-sheet.lx-as-desktop {\n left: 50%;\n right: auto;\n bottom: auto;\n top: 50%;\n width: min(92vw, 460px);\n transform: translate(-50%, calc(-50% + 16px));\n}\n.lx-as-sheet.lx-as-desktop.lx-as-visible { transform: translate(-50%, -50%); }\n\n.lx-as-container {\n background: #fff;\n border-radius: 16px 16px 0 0;\n overflow: hidden;\n}\n.lx-as-container.lx-as-desktop {\n border-radius: 16px;\n}\n\n.lx-as-item {\n display: block; width: 100%;\n height: 56px;\n line-height: 56px;\n padding: 0;\n border: none; background: none;\n font-size: 18px; font-weight: 400;\n text-align: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n position: relative;\n}\n.lx-as-item:active { background: rgba(0,0,0,0.08); }\n.lx-as-item + .lx-as-item::before {\n content: ''; position: absolute; top: 0; left: 0; right: 0;\n height: 1px; background: #E0E0E0;\n}\n.lx-as-separator {\n height: 8px;\n background: #F2F2F2;\n}\n.lx-as-cancel-btn { font-weight: 500; color: #000; }\n",document.head.appendChild(e)}();const s=document.createElement("div");s.className="lx-as-backdrop";const a=document.createElement("div");a.className="lx-as-sheet",i&&a.classList.add("lx-as-desktop");const l=document.createElement("div");l.className="lx-as-container",i&&l.classList.add("lx-as-desktop"),e.forEach((e,t)=>{const o=document.createElement("button");o.className="lx-as-item",o.textContent=e,o.style.color=n,o.addEventListener("click",()=>u(t)),l.appendChild(o)});const c=document.createElement("div");c.className="lx-as-separator",l.appendChild(c);const d=document.createElement("button");function u(e){r||(r=!0,s.classList.remove("lx-as-visible"),a.classList.remove("lx-as-visible"),setTimeout(()=>{s.remove(),a.remove(),o({tapIndex:e})},300))}d.className="lx-as-item lx-as-cancel-btn",d.textContent=t,d.addEventListener("click",()=>u(-1)),l.appendChild(d),a.appendChild(l),document.body.appendChild(s),document.body.appendChild(a),requestAnimationFrame(()=>{s.classList.add("lx-as-visible"),a.classList.add("lx-as-visible")}),s.addEventListener("click",()=>u(-1))})}const at=200,lt="lx-modal-style";let ct=null;function dt(e){const t=e,n=t?.title??"",o=t?.content??"",r=t?.showCancel??!0,i=t?.cancelText??"Cancel",s=t?.cancelColor,a=t?.confirmText??"OK",l=t?.confirmColor??"#007AFF",c=(ct??Promise.resolve()).then(()=>ut(n,o,r,i,s,a,l),()=>ut(n,o,r,i,s,a,l));return ct=c,c}function ut(e,t,n,o,r,i,s){return new Promise(a=>{let l=!1;!function(){if(document.getElementById(lt))return;const e=document.createElement("style");e.id=lt,e.textContent="\n.lx-modal-backdrop {\n position: fixed; inset: 0; z-index: 99999;\n background: rgba(0,0,0,0.4);\n opacity: 0; transition: opacity 200ms ease;\n display: flex; align-items: center; justify-content: center;\n}\n.lx-modal-backdrop.lx-modal-visible { opacity: 1; }\n\n.lx-modal-dialog {\n width: min(92vw, 320px);\n background: #fff;\n border-radius: 14px;\n overflow: hidden;\n font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Text', 'Segoe UI', Roboto, sans-serif;\n -webkit-font-smoothing: antialiased;\n transform: scale(0.95); opacity: 0;\n transition: transform 200ms ease, opacity 200ms ease;\n}\n.lx-modal-backdrop.lx-modal-visible .lx-modal-dialog {\n transform: scale(1); opacity: 1;\n}\n\n.lx-modal-body {\n padding: 24px 20px 16px;\n text-align: center;\n}\n.lx-modal-title {\n margin: 0 0 8px;\n font-size: 17px;\n font-weight: 600;\n color: #000;\n line-height: 1.35;\n}\n.lx-modal-content {\n margin: 0;\n font-size: 14px;\n color: #666;\n line-height: 1.5;\n word-break: break-word;\n}\n.lx-modal-body:has(.lx-modal-title:empty) .lx-modal-content {\n font-size: 17px;\n font-weight: 600;\n color: #000;\n}\n\n.lx-modal-footer {\n display: flex;\n border-top: 1px solid #E0E0E0;\n}\n.lx-modal-btn {\n flex: 1;\n height: 44px;\n line-height: 44px;\n padding: 0;\n border: none;\n background: none;\n font-size: 17px;\n text-align: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n}\n.lx-modal-btn:active { background: rgba(0,0,0,0.06); }\n.lx-modal-btn + .lx-modal-btn {\n border-left: 1px solid #E0E0E0;\n}\n.lx-modal-btn-cancel {\n color: #666;\n font-weight: 400;\n}\n.lx-modal-btn-confirm {\n font-weight: 600;\n}\n\n@media (prefers-color-scheme: dark) {\n .lx-modal-dialog { background: #2c2c2e; }\n .lx-modal-title { color: #f5f5f7; }\n .lx-modal-content { color: #ababab; }\n .lx-modal-body:has(.lx-modal-title:empty) .lx-modal-content {\n color: #f5f5f7;\n }\n .lx-modal-footer { border-top-color: #3a3a3c; }\n .lx-modal-btn:active { background: rgba(255,255,255,0.08); }\n .lx-modal-btn + .lx-modal-btn { border-left-color: #3a3a3c; }\n .lx-modal-btn-cancel { color: #ababab; }\n}\n",document.head.appendChild(e)}();const c=document.createElement("div");c.className="lx-modal-backdrop";const d=document.createElement("div");d.className="lx-modal-dialog";const u=document.createElement("div");u.className="lx-modal-body";const m=document.createElement("div");if(m.className="lx-modal-title",m.textContent=e,u.appendChild(m),t){const e=document.createElement("p");e.className="lx-modal-content",e.textContent=t,u.appendChild(e)}d.appendChild(u);const f=document.createElement("div");if(f.className="lx-modal-footer",n){const e=document.createElement("button");e.className="lx-modal-btn lx-modal-btn-cancel",e.textContent=o,r&&(e.style.color=r),e.addEventListener("click",()=>h(!1)),f.appendChild(e)}const p=document.createElement("button");function h(e){l||(l=!0,c.classList.remove("lx-modal-visible"),setTimeout(()=>{c.remove(),a({confirm:e,cancel:!e})},at))}p.className="lx-modal-btn lx-modal-btn-confirm",p.textContent=i,p.style.color=s,p.addEventListener("click",()=>h(!0)),f.appendChild(p),d.appendChild(f),c.appendChild(d),document.body.appendChild(c),requestAnimationFrame(()=>{c.classList.add("lx-modal-visible")})})}const mt="lx-toast-style";let ft=null;function pt(e){const t=e,n=t?.title??"",o=t?.icon??"none",r=t?.duration??1500,i=t?.mask??!1,s=t?.position??"center";ft&&(ft.dismiss(),ft=null),function(){if(document.getElementById(mt))return;const e=document.createElement("style");e.id=mt,e.textContent="\n.lx-toast-mask {\n position: fixed; inset: 0; z-index: 99998;\n}\n.lx-toast-container {\n position: fixed; left: 0; right: 0; z-index: 99999;\n display: flex; justify-content: center;\n pointer-events: none;\n}\n.lx-toast-container.lx-toast-top { top: 0; padding-top: 80px; }\n.lx-toast-container.lx-toast-center { top: 0; bottom: 0; align-items: center; }\n.lx-toast-container.lx-toast-bottom { bottom: 0; padding-bottom: 80px; }\n\n.lx-toast-box {\n display: flex; flex-direction: column; align-items: center; gap: 10px;\n min-width: 120px; max-width: 280px;\n padding: 20px;\n background: rgba(0,0,0,0.8);\n border-radius: 12px;\n color: #fff;\n pointer-events: auto;\n transform: scale(0.8); opacity: 0;\n transition: transform 200ms ease, opacity 200ms ease;\n}\n.lx-toast-box.lx-toast-no-icon {\n min-width: auto; min-height: auto;\n padding: 12px 20px;\n}\n.lx-toast-box.lx-toast-visible {\n transform: scale(1); opacity: 1;\n}\n.lx-toast-icon {\n width: 36px; height: 36px;\n color: #fff;\n line-height: 0;\n}\n.lx-toast-title {\n font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Text', 'Segoe UI', Roboto, sans-serif;\n font-size: 16px; font-weight: 500;\n text-align: center;\n line-height: 1.4;\n word-break: break-word;\n -webkit-font-smoothing: antialiased;\n}\n",document.head.appendChild(e)}();let a=null;i&&(a=document.createElement("div"),a.className="lx-toast-mask",document.body.appendChild(a));const l=document.createElement("div");l.className="lx-toast-container","top"===s?l.classList.add("lx-toast-top"):"bottom"===s?l.classList.add("lx-toast-bottom"):l.classList.add("lx-toast-center");const c=document.createElement("div");c.className="lx-toast-box";const d="none"!==o;if(d||c.classList.add("lx-toast-no-icon"),d){const e=document.createElement("div");e.className="lx-toast-icon","success"===o?e.innerHTML='<svg width="36" height="36" viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="18" cy="18" r="17" stroke="currentColor" stroke-width="2"/><path d="M11 18l5 5 9-9" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/></svg>':"error"===o?e.innerHTML='<svg width="36" height="36" viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="18" cy="18" r="17" stroke="currentColor" stroke-width="2"/><path d="M13 13l10 10M23 13l-10 10" stroke="currentColor" stroke-width="2.5" stroke-linecap="round"/></svg>':"loading"===o&&(e.innerHTML='<svg width="36" height="36" viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M18 4a14 14 0 0 1 14 14" stroke="currentColor" stroke-width="2.5" stroke-linecap="round"><animateTransform attributeName="transform" type="rotate" from="0 18 18" to="360 18 18" dur="0.8s" repeatCount="indefinite"/></path></svg>'),c.appendChild(e)}const u=document.createElement("div");u.className="lx-toast-title",u.textContent=n,c.appendChild(u),l.appendChild(c),document.body.appendChild(l),requestAnimationFrame(()=>{c.classList.add("lx-toast-visible")});let m=!1;function f(){m||(m=!0,ft?.dismiss===f&&(ft=null),c.classList.remove("lx-toast-visible"),p&&clearTimeout(p),setTimeout(()=>{l.remove(),a?.remove()},200))}let p=null;return r>0&&(p=setTimeout(f,r)),ft={dismiss:f,timer:p},Promise.resolve()}function ht(){return ft&&(ft.dismiss(),ft=null),Promise.resolve()}return he("ui.showActionSheet",it),he("ui.showModal",dt),he("ui.showToast",pt),he("ui.hideToast",ht),nt(),e.LingXiaBridge=Ge,e.boot=function(){Ye(),tt()},e.bootWhenReady=nt,e.channel=function(e,t,n){return Ge.channel(e,t,n)},e.getErrorInfo=Ze,e.hasError=Qe,e.initBridge=Ye,e.invoke=function(e,t,n){return Ge.invoke(e,t,n)},e.isNativeError=function(e,t){if(!e||"object"!=typeof e)return!1;const n=e;return"string"==typeof n.code&&""!==n.code.trim()&&("string"==typeof n.message&&(void 0===t||n.code===t))},e.notify=function(e,t,n){ze.notify(Ue(e),t,We(n))},e.renderErrorUI=Ke,e.stream=function(e,t,n){return Je(ze.stream(Ue(e),t,We(n)))},e}({});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var __extends=this&&this.__extends||function(){var e=function(n,t){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var t in n)Object.prototype.hasOwnProperty.call(n,t)&&(e[t]=n[t])},e(n,t)};return function(n,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function o(){this.constructor=n}e(n,t),n.prototype=null===t?Object.create(t):(o.prototype=t.prototype,new o)}}(),__assign=this&&this.__assign||function(){return __assign=Object.assign||function(e){for(var n,t=1,o=arguments.length;t<o;t++)for(var r in n=arguments[t])Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r]);return e},__assign.apply(this,arguments)},__awaiter=this&&this.__awaiter||function(e,n,t,o){return new(t||(t=Promise))(function(r,i){function a(e){try{s(o.next(e))}catch(e){i(e)}}function l(e){try{s(o.throw(e))}catch(e){i(e)}}function s(e){var n;e.done?r(e.value):(n=e.value,n instanceof t?n:new t(function(e){e(n)})).then(a,l)}s((o=o.apply(e,n||[])).next())})},__generator=this&&this.__generator||function(e,n){var t,o,r,i={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]},a=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return a.next=l(0),a.throw=l(1),a.return=l(2),"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function l(l){return function(s){return function(l){if(t)throw new TypeError("Generator is already executing.");for(;a&&(a=0,l[0]&&(i=0)),i;)try{if(t=1,o&&(r=2&l[0]?o.return:l[0]?o.throw||((r=o.return)&&r.call(o),0):o.next)&&!(r=r.call(o,l[1])).done)return r;switch(o=0,r&&(l=[2&l[0],r.value]),l[0]){case 0:case 1:r=l;break;case 4:return i.label++,{value:l[1],done:!1};case 5:i.label++,o=l[1],l=[0];continue;case 7:l=i.ops.pop(),i.trys.pop();continue;default:if(!(r=i.trys,(r=r.length>0&&r[r.length-1])||6!==l[0]&&2!==l[0])){i=0;continue}if(3===l[0]&&(!r||l[1]>r[0]&&l[1]<r[3])){i.label=l[1];break}if(6===l[0]&&i.label<r[1]){i.label=r[1],r=l;break}if(r&&i.label<r[2]){i.label=r[2],i.ops.push(l);break}r[2]&&i.ops.pop(),i.trys.pop();continue}l=n.call(e,i)}catch(e){l=[6,e],o=0}finally{t=r=0}if(5&l[0])throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}([l,s])}}},__spreadArray=this&&this.__spreadArray||function(e,n,t){if(t||2===arguments.length)for(var o,r=0,i=n.length;r<i;r++)!o&&r in n||(o||(o=Array.prototype.slice.call(n,0,r)),o[r]=n[r]);return e.concat(o||Array.prototype.slice.call(n))},__LX_RUNTIME_PLATFORM__="mobile",__LingXiaBridgeBundle=function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});var n="BRIDGE_TIMEOUT",t="BRIDGE_CANCELED",o="BRIDGE_HANDSHAKE_FAILED",r="BRIDGE_MALFORMED_MESSAGE",i="BRIDGE_METHOD_NOT_FOUND",a="BRIDGE_CAPABILITY_DENIED",l="BRIDGE_INTERNAL_ERROR",s="BRIDGE_OUTBOX_FULL",c="BRIDGE_STREAM_CLOSED",d=function(e){function n(n,t,o){var r=e.call(this,t)||this;return r.name="BridgeInvocationError",r.code=n,r.data=o,r}return __extends(n,e),n}(Error);function u(e){if(e instanceof d)return e;if(e&&"object"==typeof e){var n=e,t=l;("string"==typeof n.code&&""!==n.code.trim()||"number"==typeof n.code&&Number.isFinite(n.code))&&(t=n.code);var o="string"==typeof n.message&&""!==n.message.trim()?n.message:"Unknown error";return new d(t,o,"data"in n?n.data:void 0)}var r=e instanceof Error?e.message:"string"==typeof e?e:"Unknown error";return new d(l,r)}function f(e){var n=u(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,o=e.send;if("undefined"!=typeof window&&"undefined"!=typeof document){var r="iOS"===t;if(r||"Android"===t){var i=Symbol.for("LingXia.NativeComponentCoverageMonitor");if(!(null===(n=window[i])||void 0===n?void 0:n.installed)){var a={installed:!0,coveredById:new Map,coveredCount:0,anyCovered:!1,scheduled:!1,hasAnyVideo:!1,scrollLocked:!1,scrollY:0,htmlOverflow:"",bodyOverflow:"",bodyPosition:"",bodyTop:"",bodyWidth:""};window[i]=a,new MutationObserver(u).observe(document.documentElement,{subtree:!0,childList:!0,attributes:!0});var l={handleEvent:function(){(a.hasAnyVideo||0!==a.coveredById.size)&&u()}},s={handleEvent:function(){return u()}};window.addEventListener("scroll",l,{capture:!0,passive:!0}),window.addEventListener("resize",s),u()}}}function c(e){var n,t,o=null===(n=e.getBoundingClientRect)||void 0===n?void 0:n.call(e);if(!o)return!1;if(o.width<2||o.height<2)return!1;var r=o.left+o.width/2,i=o.top+o.height/2;if(r<0||i<0||r>=window.innerWidth||i>=window.innerHeight)return!1;var a=null===(t=document.elementFromPoint)||void 0===t?void 0:t.call(document,r,i);return!!a&&(a!==document.documentElement&&a!==document.body&&!(a===e||e.contains(a)))}function d(){a.scheduled=!1;var e=document.querySelectorAll("lx-video[id]");if(a.hasAnyVideo=e.length>0,a.hasAnyVideo||0!==a.coveredById.size||a.anyCovered){for(var n=new Set,t=0,i=Array.from(e);t<i.length;t++){var l=i[t];if(p=l.id){n.add(p);var s=c(l),d=a.coveredById.get(p);d!==s&&(!0===d&&(a.coveredCount-=1),!0===s&&(a.coveredCount+=1),a.coveredById.set(p,s),o({id:p,action:"component.coverage",covered:s}))}}for(var u=[],f=0,m=a.coveredById.entries();f<m.length;f++){var v=m[f],p=v[0];s=v[1];n.has(p)||(u.push(p),!0===s&&(a.coveredCount-=1))}for(var h=0,g=u;h<g.length;h++){p=g[h];a.coveredById.delete(p),o({id:p,action:"component.coverage",covered:!1})}var y=a.coveredCount>0;y!==a.anyCovered&&(a.anyCovered=y,r&&(y?function(){if(r&&!a.scrollLocked){var e=document.documentElement,n=document.body;e&&n&&(a.scrollLocked=!0,a.scrollY=window.scrollY||e.scrollTop||0,a.htmlOverflow=e.style.overflow||"",a.bodyOverflow=n.style.overflow||"",a.bodyPosition=n.style.position||"",a.bodyTop=n.style.top||"",a.bodyWidth=n.style.width||"",e.style.overflow="hidden",n.style.overflow="hidden",n.style.position="fixed",n.style.top="".concat(-a.scrollY,"px"),n.style.width="100%")}}():function(){if(r&&a.scrollLocked){var e=document.documentElement,n=document.body;e&&n&&(a.scrollLocked=!1,e.style.overflow=a.htmlOverflow,n.style.overflow=a.bodyOverflow,n.style.position=a.bodyPosition,n.style.top=a.bodyTop,n.style.width=a.bodyWidth,window.scrollTo(0,a.scrollY))}}()))}}function u(){a.scheduled||(a.scheduled=!0,requestAnimationFrame(d))}}var v="undefined"!=typeof window&&window.__LX_BRIDGE_CFG||{};function p(){return v.os||"unknown"}function h(){return"iOS"===v.os}function g(){return"macOS"===v.os}var y="__LingXiaRecvMessage",w=5e3,x="[LX.Bridge]",b="messageport",_="jsinterface",k=v.appleDownstreamURL,E={data:!1,proto:!1,all:!1},I=[];function C(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([x],e,!1))}function L(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];console.warn.apply(console,__spreadArray([x],e,!1))}function S(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];console.error.apply(console,__spreadArray([x],e,!1))}function M(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 N(e){try{return"function"==typeof structuredClone?structuredClone(e):JSON.parse(JSON.stringify(e))}catch(e){return{}}}var O,A,j="iOS"===v.os||"macOS"===v.os?"webkit":"Harmony"===v.os?"messageport":"Android"===v.os?(null===(A=null===(O=window.LingXiaProxy)||void 0===O?void 0:O.supportsMessagePort)||void 0===A?void 0:A.call(O))?"messageport":"jsinterface":"unknown";"undefined"!=typeof window&&"function"!=typeof window[y]&&(window[y]=function(e){I.push(e)});var P=null,B=!1,R=null,F=null,D=null,X=200,H={listenerInstalled:!1,promise:null,resolve:null,reject:null,timer:null},q={handleEvent:function(e){var n,t,o=e;if("LingXia-port-init"===o.data){var r=null===(n=o.ports)||void 0===n?void 0:n[0];r&&(Je._connectWebMessagePort(r),null===(t=H.resolve)||void 0===t||t.call(H,r))}}};function z(){H.listenerInstalled||(H.listenerInstalled=!0,window.addEventListener("message",q))}function G(){null!==H.timer&&(window.clearTimeout(H.timer),H.timer=null),H.resolve=null,H.reject=null,H.promise=null}function U(){return"webkit"===j&&(h()||g())}function W(){null!==D&&(clearTimeout(D),D=null)}function J(e){for(var n=0,t=Array.from(ae.keys());n<t.length;n++){xe(t[n],{code:c,message:e})}for(var o=0,r=Array.from(le.keys());o<r.length;o++){be(r[o],{code:c,message:e})}!function(e){for(var n=0,t=Array.from(se.entries());n<t.length;n++){var o=t[n],r=o[0],i=o[1];se.delete(r),i._emitClose(c,e)}}(e)}function Y(){return __awaiter(this,void 0,void 0,function(){var e,n,t,o,r,i,a,l,s;return __generator(this,function(c){switch(c.label){case 0:if(!k)throw new Error("Apple downstream URL is not configured");return e=new AbortController,F=e,[4,fetch(k,{method:"GET",cache:"no-store",headers:{Accept:"application/x-ndjson"},signal:e.signal})];case 1:if(!(n=c.sent()).ok)throw new Error("Apple downstream HTTP ".concat(n.status));if(!n.body)throw new Error("Apple downstream response body unavailable");B=!0,X=200,C("proto")&&T("Apple downstream connected"),Le(),t=n.body.getReader(),o=new TextDecoder,r="",c.label=2;case 2:c.trys.push([2,6,7,8]),c.label=3;case 3:return[4,t.read()];case 4:return i=c.sent(),a=i.value,i.done?[3,5]:(r=function(e){for(var n=e;;){var t=n.indexOf("\n");if(t<0)break;var o=n.slice(0,t).trim();if(n=n.slice(t+1),o)try{je(JSON.parse(o))}catch(e){L("Apple downstream parse error:",e,o)}}return n}(r+=o.decode(a,{stream:!0})),[3,3]);case 5:if(r+=o.decode(),l=r.trim())try{je(JSON.parse(l))}catch(e){L("Apple downstream trailing parse error:",e,l)}return[3,8];case 6:if(s=c.sent(),e.signal.aborted)return[2];throw s;case 7:try{t.releaseLock()}catch(e){}return[7];case 8:return[2]}})})}function V(){U()&&(R||(W(),R=Y().catch(function(e){(null==F?void 0:F.signal.aborted)||L("Apple downstream failed:",e)}).finally(function(){var e,n=null!==(e=null==F?void 0:F.signal.aborted)&&void 0!==e&&e;R=null,F=null;var t,o,r=B;B=!1,t="Apple downstream closed",o=r,Te(),K=null,Q=!1,Z=!1,ee=0,o&&J(t),n||function(e){if(U()){W();var n=X;X=Math.min(2*X,2e3);var t="Apple downstream disconnected, retrying in ".concat(n,"ms: ").concat(e);n<=200?T(t):L(t),D=setTimeout(function(){D=null,V()},n)}}("stream closed")})))}function $(e){var n,t,o,r=e.kind;"req"!==r&&"notify"!==r||T("postToNative: ".concat(r," ").concat(e.method)),C("proto")&&console.log("→",JSON.stringify(e,null,2));try{if("webkit"===j)return void(null===(t=null===(n=window.webkit)||void 0===n?void 0:n.messageHandlers.LingXia)||void 0===t||t.postMessage(e));var i=M(e);if(j===b&&P)return void P.postMessage(i);if(j===_&&(null===(o=window.LingXiaProxy)||void 0===o?void 0:o.postMessage))return void window.LingXiaProxy.postMessage(i);L("Transport not ready")}catch(e){S("Send error:",e)}}var K=null,Q=!1,Z=!1,ee=0,ne=null,te={},oe=0;function re(){return{data:new Set,end:new Set,error:new Set,close:new Set}}function ie(e,n){var t,o=re(),r=!1,i=function(){},a=function(){},l=[],s=[],c=new Promise(function(e,n){i=e,a=n});return(t={id:e,result:c,on:function(e,n){return"data"===e&&o.data.add(n),"end"===e&&o.end.add(n),"error"===e&&o.error.add(n),this}})[Symbol.asyncIterator]=function(){return{next:function(){return l.length>0?Promise.resolve({done:!1,value:l.shift()}):r?c.then(function(e){return{done:!0,value:e}},function(e){return Promise.reject(e)}):new Promise(function(e,n){s.push({resolve:e,reject:n})})}}},t.cancel=function(){r||n()},t._emitData=function(e){if(!r){s.length>0?s.shift().resolve({done:!1,value:e}):l.push(e);for(var n=0,t=o.data;n<t.length;n++){var i=t[n];try{i(e)}catch(e){L("Stream data listener failed:",e)}}}},t._resolve=function(e){if(!r){for(r=!0,i(e);s.length>0;)s.shift().resolve({done:!0,value:e});for(var n=0,t=o.end;n<t.length;n++){var a=t[n];try{a(e)}catch(e){L("Stream end listener failed:",e)}}}},t._reject=function(e){if(!r){for(r=!0,a(e);s.length>0;)s.shift().reject(e);for(var n=0,t=o.error;n<t.length;n++){var i=t[n];try{i(e)}catch(e){L("Stream error listener failed:",e)}}}},t}var ae=new Map,le=new Map,se=new Map,ce=[],de=-1,ue={},fe=new Set,me=new WeakMap,ve=new Map;function pe(e,n){ve.set(e,n)}function he(e){if(e.startsWith("host."))return"host";var n=e.indexOf(".");return n>0?e.slice(0,n):"page"}function ge(e){if(null!=e)return e}function ye(){return j===b?!!P:U()?B:"webkit"===j||j===_}function we(){return ye()&&Q}function xe(e,n){var t,o=ae.get(e);if(o){ae.delete(e),null!==o.timerId&&clearTimeout(o.timerId);var r=u(n);if("stream"===o.mode&&o.stream)return void o.stream._reject(r);null===(t=o.reject)||void 0===t||t.call(o,r)}}function be(e,n){var t=le.get(e);if(t){le.delete(e),null!==t.timerId&&clearTimeout(t.timerId);var o=u(n);t.channel._reject(o),t.reject(o)}}function _e(e,n){ae.has(e)?xe(e,n):le.has(e)&&be(e,n)}function ke(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)&&xe(e,{code:n,message:"'".concat(t.method,"' timed out")})},t.timeoutMs)))}function Ee(e){ae.has(e)?ke(e):le.has(e)&&function(e){var t=le.get(e);t&&(null!==t.timerId&&clearTimeout(t.timerId),t.timerId=setTimeout(function(){be(e,{code:n,message:"Channel '".concat(t.topic,"' timed out")})},w))}(e)}function Ie(e){for(var n,t=ce.length-1;t>=0;t--)if((null===(n=ce[t])||void 0===n?void 0:n.reqId)===e)return ce.splice(t,1),!0;return!1}function Ce(e,n){var t=e.kind,o="hello"===t||"helloAck"===t||"ready"===t;if(!we()&&!o)return ce.length>=256?(S("Outbox full"),void(n&&_e(n,{code:s,message:"Bridge outbox is full"}))):void ce.push({msg:e,reqId:n});n&&Ee(n),$(e)}function Te(){null!==ne&&(clearTimeout(ne),ne=null)}function Le(){if(!Q&&ye()){Te();var e={v:2,kind:"hello",nonce:v.nonce||"",role:"view",protocolsSupported:[2]};Z=!0,$(e),ne=setTimeout(function(){if(!Q)if(++ee<3)L("Handshake timeout (".concat(ee,"/").concat(3,"), retrying...")),Z=!1,Le();else{for(S("Handshake failed"),Te(),Z=!1,ee=0;ce.length;){var e=ce.shift();(null==e?void 0:e.reqId)&&_e(e.reqId,{code:o,message:"Bridge handshake failed"})}for(var n=0,t=Array.from(le.keys());n<t.length;n++){be(t[n],{code:o,message:"Bridge handshake failed"})}}},1e4)}}function Se(e){return e.replace(/~1/g,"/").replace(/~0/g,"~")}function Me(e,n,t){void 0===t&&(t=!1);var o=function(e){if(""===e)return[];if(!e.startsWith("/"))throw new Error("Invalid JSON pointer: ".concat(e));return e.split("/").slice(1).map(Se)}(n);if(0===o.length)return{container:{$root:e},key:"$root"};for(var r=e,i=0;i<o.length-1;i++){var a=o[i];if(Array.isArray(r))r=r[Number(a)];else{if(!r||"object"!=typeof r)throw new Error("Invalid container at ".concat(a));var l=r;if(t&&void 0===l[a]){var s=o[i+1];l[a]=s&&/^\d+$/.test(s)?[]:{}}r=l[a]}}return{container:r,key:o[o.length-1]}}function Ne(e){fe.forEach(function(n){try{if(!me.has(n))return me.set(n,!0),void n(N(ue),{rev:de,initial:!0});n(N(ue),{rev:de,initial:e})}catch(e){L("Subscriber error:",e)}})}function Oe(e){if("function"!=typeof e)return function(){};if(fe.add(e),de>=0){me.set(e,!0);try{e(N(ue),{rev:de,initial:!0})}catch(e){S("Callback error:",e)}}return function(){fe.delete(e),me.delete(e)}}function Ae(e){We.call("state.getSnapshot",{scope:e}).catch(function(){})}function je(e){var n,t;if(e&&"object"==typeof e){var o=e;if("event"===o.type&&"nativecomponent"===o.name&&o.payload){var r=o.payload,l=r.id||r.componentId;if("string"==typeof l){var s=Pe.get(l);if(s)try{s(r)}catch(e){S("NC handler error:",e)}}return}}var c=function(e){if(!e||"object"!=typeof e)return null;var n=e.v,t=e.kind;return 2!==n||"string"!=typeof t?null:e}(e);if(c)switch(c.kind){case"helloAck":return void(K=c.sessionId);case"ready":if(K&&c.sessionId!==K)return void L("sessionId mismatch");if(Te(),Q=!0,ee=0,c.hostMethods)for(var d=0,f=Object.entries(c.hostMethods);d<f.length;d++){var m=f[d],v=m[0],p=m[1];te[v]=p}return C("proto")&&T("Handshake complete, hostMethods:",Object.keys(te).length),void function(){if(we())for(;ce.length;){var e=ce.shift();e&&(e.reqId&&Ee(e.reqId),$(e.msg))}}();case"res":var h=ae.get(c.id);if(!h)return;if(ae.delete(c.id),null!==h.timerId&&clearTimeout(h.timerId),c.ok){if("state.getSnapshot"===h.method&&(function(e){if(!e||"object"!=typeof e)return!1;var n=e;return!("number"!=typeof n.rev||!Number.isFinite(n.rev)||!n.state||"object"!=typeof n.state||(ue=n.state,de=n.rev,C("data")&&(console.group("[LX] snapshot(res)"),console.log("rev:",de,"state:",N(ue)),console.groupEnd()),Ne(!0),0))}(c.result)||L("Invalid state.getSnapshot result")),"stream"===h.mode&&h.stream)return void h.stream._resolve(c.result);null===(n=h.resolve)||void 0===n||n.call(h,c.result)}else{var g=u(c.error);if("stream"===h.mode&&h.stream)return void h.stream._reject(g);null===(t=h.reject)||void 0===t||t.call(h,g)}return;case"event":if(ae.has(c.id)){var y=ae.get(c.id);return void("stream"===(null==y?void 0:y.mode)&&y.stream?(ke(c.id),y.stream._emitData(c.payload)):L("Received event for non-stream request '".concat(c.id,"'")))}return;case"state.snapshot":return ue=c.state||{},de=c.rev,C("data")&&(console.group("[LX] snapshot"),console.log("rev:",de,"state:",N(ue)),console.groupEnd()),void Ne(!0);case"state.patch":if(c.baseRev!==de)return L("baseRev mismatch",{have:de,want:c.baseRev}),void Ae(c.scope);try{!function(e,n){for(var t=0,o=n;t<o.length;t++){var r=o[t],i="add"===r.op||"replace"===r.op,a=Me(e,r.path,i),l=a.container,s=a.key;if("$root"!==s)if(Array.isArray(l)){var c="-"===s?l.length:Number(s);if(!Number.isFinite(c)||c<0)throw new Error("Invalid index");"remove"===r.op?l.splice(c,1):"add"===r.op?l.splice(c,0,r.value):"replace"===r.op&&(l[c]=r.value)}else{if(!l||"object"!=typeof l)throw new Error("Invalid container");var d=l;"remove"===r.op?delete d[s]:d[s]=r.value}else{for(var u=0,f=Object.keys(e);u<f.length;u++)delete e[f[u]];if("remove"!==r.op){var m=r.value;m&&"object"==typeof m&&Object.assign(e,m)}}}}(ue,c.ops||[]),de=c.rev}catch(e){return S("Patch failed:",e),void Ae(c.scope)}return C("data")&&(console.group("[LX] patch"),console.log("rev:",de,"ops:",c.ops),console.groupEnd()),Ne(!1),void(c.ack&&Ce({v:2,kind:"state.ack",scope:c.scope,rev:c.rev}));case"ch.ack":if(!(x=le.get(c.id)))return;if(le.delete(c.id),null!==x.timerId&&clearTimeout(x.timerId),c.ok)x.channel._markOpen(),se.set(c.id,x.channel),x.resolve(x.channel);else{g=u(c.error);x.channel._reject(g),x.reject(g)}return;case"ch.data":var w=se.get(c.id);if(!w)return;return void w._emitData(c.payload);case"ch.close":var x;if(x=le.get(c.id))return le.delete(c.id),void x.channel._emitClose(c.code,c.reason);var b=se.get(c.id);if(!b)return;return se.delete(c.id),void b._emitClose(c.code,c.reason);case"req":var _=c,k=he(_.method);if(!_.cap||_.cap!==k)return void Ce({v:2,kind:"res",id:_.id,ok:!1,error:{code:a,message:"Invalid cap for ".concat(_.method)}});var E=ve.get(_.method);return E?void Promise.resolve().then(function(){return E(_.params)}).then(function(e){Ce({v:2,kind:"res",id:_.id,ok:!0,result:e})}).catch(function(e){Ce({v:2,kind:"res",id:_.id,ok:!1,error:u(e)})}):void Ce({v:2,kind:"res",id:_.id,ok:!1,error:{code:i,message:"View handler not found: ".concat(_.method)}})}else L("Invalid V2 message:",e)}var Pe=new Map,Be=[],Re=!1;function Fe(){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,o;try{if(null===(t=null===(n=window.webkit)||void 0===n?void 0:n.messageHandlers)||void 0===t?void 0:t.NativeComponent)return void window.webkit.messageHandlers.NativeComponent.postMessage(e);if(null===(o=window.NativeComponentBridge)||void 0===o?void 0:o.postMessage)return void window.NativeComponentBridge.postMessage(M(e))}catch(e){S("NativeComponent send error:",e)}}function Xe(){if(Fe()&&0!==Be.length)for(Re=!0;Be.length;){var e=Be.shift();try{De(e)}catch(e){break}}}function He(e){try{if(!Fe())return void Be.push(e);Re||Xe(),De(e)}catch(e){S("NC send failed:",e)}}function qe(e){return"".concat(e,"_").concat(Date.now(),"_").concat(oe++)}function ze(e,n,t){if(n)if(n.aborted)t();else{var o={handleEvent:function(){n.removeEventListener("abort",o),t()}};n.addEventListener("abort",o)}}var Ge,Ue,We={call:function(e,n,o){return new Promise(function(i,a){var l;if(e&&"string"==typeof e){Z||Le();var s=qe("c"),c=(null==o?void 0:o.cap)||he(e),d=null!==(l=null==o?void 0:o.timeoutMs)&&void 0!==l?l:w;ae.set(s,{method:e,mode:"call",resolve:i,reject:function(e){return a(e)},timeoutMs:d,timerId:null}),Ce({v:2,kind:"req",id:s,method:e,params:ge(n),cap:c},s),ze(0,null==o?void 0:o.signal,function(){var e=Ie(s);xe(s,{code:t,message:"Bridge request aborted"}),!e&&Q&&Ce({v:2,kind:"cancel",id:s})})}else a({code:r,message:"Method name must be a non-empty string"})})},stream:function(e,n,o){var i;if(!e||"string"!=typeof e){var a=ie("invalid",function(){});return a._reject({code:r,message:"Method name must be a non-empty string"}),a}Z||Le();var l=qe("c"),s=ie(l,function(){Ie(l)?xe(l,{code:t,message:"Bridge request aborted"}):Q&&Ce({v:2,kind:"cancel",id:l})}),c=(null==o?void 0:o.cap)||he(e),d=null!==(i=null==o?void 0:o.timeoutMs)&&void 0!==i?i:w;return ae.set(l,{method:e,mode:"stream",stream:s,timeoutMs:d,timerId:null}),Ce({v:2,kind:"req",id:l,method:e,params:ge(n),cap:c},l),ze(0,null==o?void 0:o.signal,function(){return s.cancel()}),s},notify:function(e,n,t){e&&"string"==typeof e&&(Z||Le(),Ce({v:2,kind:"notify",method:e,params:ge(n),cap:(null==t?void 0:t.cap)||he(e)}))},state:{subscribe:Oe},channel:{open:function(e,n,t){return e&&"string"==typeof e?(Z||Le(),new Promise(function(o,r){var i=qe("ch"),a=function(e,n,t){var o,r=re(),i=!1,a=0,l=!1,s=[],d=[],u=((o={id:e,send:function(t){i?n(t,a++):u._reject({code:c,message:"Channel '".concat(e,"' is closed")})},on:function(e,n){return"data"===e&&r.data.add(n),"close"===e&&r.close.add(n),"error"===e&&r.error.add(n),this}})[Symbol.asyncIterator]=function(){return{next:function(){return s.length>0?Promise.resolve({done:!1,value:s.shift()}):l?Promise.resolve({done:!0,value:void 0}):new Promise(function(e,n){d.push({resolve:e,reject:n})})}}},o.close=function(e,n){i&&(i=!1,l=!0,t(e,n),u._emitClose(e,n))},o._emitData=function(e){if(i){d.length>0?d.shift().resolve({done:!1,value:e}):s.push(e);for(var n=0,t=r.data;n<t.length;n++){var o=t[n];try{o(e)}catch(e){L("Channel listener failed:",e)}}}},o._emitClose=function(e,n){for(l=!0;d.length>0;)d.shift().resolve({done:!0,value:void 0});for(var t=0,o=r.close;t<o.length;t++){var i=o[t];try{i(e,n)}catch(e){L("Channel close listener failed:",e)}}},o._reject=function(e){for(l=!0;d.length>0;)d.shift().reject(e);for(var n=0,t=r.error;n<t.length;n++){var o=t[n];try{o(e)}catch(e){L("Channel error listener failed:",e)}}},o._markOpen=function(){i=!0,l=!1},o._isOpen=function(){return i},o._nextSeq=function(){return a++},o);return u}(i,function(e,n){Ce({v:2,kind:"ch.data",id:i,seq:n,payload:e})},function(e,n){var t=le.get(i);t&&null!==t.timerId&&clearTimeout(t.timerId),le.delete(i),se.delete(i),Ce({v:2,kind:"ch.close",id:i,code:e,reason:n})});le.set(i,{topic:e,channel:a,resolve:o,reject:r,timerId:null}),Ce({v:2,kind:"ch.open",id:i,topic:e,params:ge(n),cap:(null==t?void 0:t.cap)||he(e)},i)})):Promise.reject({code:r,message:"Topic name must be a non-empty string"})}}},Je={invoke:function(e,n,t){return We.call(Ye(e),n,Ve(t)).then(function(e){return e}).catch(function(e){return Promise.reject(f(e))})},notify:function(e,n,t){We.notify(Ye(e),n,Ve(t))},stream:function(e,n,t){return $e(We.stream(Ye(e),n,Ve(t)))},channel:function(e,n,t){return We.channel.open(Ye(e),n,Ve(t)).then(function(e){return function(e){var n=new Set,t=new Set;return e.on("data",function(e){for(var t=0,o=n;t<o.length;t++){(0,o[t])(e)}}),e.on("close",function(e,n){for(var o={code:e,reason:n},r=0,i=t;r<i.length;r++){(0,i[r])(o)}}),{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:Oe},_connectWebMessagePort:function(e){if(j===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}je(n)};try{e.start()}catch(e){}T("Port connected"),Le()}},_receiveEvaluateMessage:function(e){try{e&&je(JSON.parse(e))}catch(e){S("Parse error:",e)}},debug:(Ge=E,Ue={},Object.keys(Ge).forEach(function(e){Object.defineProperty(Ue,e,{enumerable:!0,configurable:!1,get:function(){return Ge[e]},set:function(n){Ge[e]=!!n,console.log("[LX] ".concat(e,": ").concat(n))}})}),Ue),platform:{isHarmony:function(){return"Harmony"===v.os},isIOS:h,isAndroid:function(){return"Android"===v.os},isMacOS:g,isDesktop:function(){return g()},getOS:p},dom:{measureById:function(e){try{if(!e)return null;var n=document.getElementById(e);if(!n)return null;var t=n.getBoundingClientRect(),o=0;try{o=parseFloat(getComputedStyle(n).borderRadius)||0}catch(e){}return[t.left+window.scrollX,t.top+window.scrollY,t.width,t.height,o]}catch(e){return null}}},nativeComponents:{send:He,hasHandler:Fe,flush:Xe,register:function(e,n){return e&&"function"==typeof n?(Pe.set(e,n),function(){return Pe.delete(e)}):function(){}},unregister:function(e){Pe.delete(e)}},isReady:function(){return Q}};function Ye(e){return e.startsWith("host.")?e:"host.".concat(e)}function Ve(e){return __assign(__assign({},e||{}),{cap:(null==e?void 0:e.cap)||"host"})}function $e(e){var n=new Set,t=new Set;return e.on("data",function(e){for(var t=0,o=n;t<o.length;t++){(0,o[t])(e)}}),e.on("error",function(e){for(var n=f(e),o=0,r=t;o<r.length;o++){(0,r[o])(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 Ke(){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(j)),function(e){if("undefined"!=typeof window&&(window[y]=e,0!==I.length))for(var n=0,t=I.splice(0,I.length);n<t.length;n++){var o=t[n];try{e(o)}catch(e){L("Failed to replay queued native message:",e)}}}(Je._receiveEvaluateMessage),U()?V():j===b?(z(),function(){var e,n;if(P)return Promise.resolve(P);if(H.promise)return H.promise;z(),H.promise=new Promise(function(e,n){H.resolve=function(n){G(),e(n)},H.reject=function(e){G(),n(e)},H.timer=window.setTimeout(function(){var e;null===(e=H.reject)||void 0===e||e.call(H,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=H.reject)||void 0===n||n.call(H,e)}return H.promise}().catch(function(e){return L("Port init failed:",e)})):"webkit"===j||j===_?Le():L("Unknown method"),window.LingXiaBridge=Je,m({os:p(),send:He}),window.__LX_BRIDGE_INIT_STATE="initialized",T("Init complete")}catch(e){throw delete window.__LX_BRIDGE_INIT_STATE,e}}}function Qe(e){var n=document.createElement("div");return n.textContent=e,n.innerHTML}function Ze(e){var n=e.failedPath,t=e.reason,o=document.createElement("style");o.textContent="\n* { margin: 0; padding: 0; box-sizing: border-box; }\nbody {\n font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Text', 'Segoe UI', Roboto, sans-serif;\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 100vh;\n background: #f5f5f7;\n color: #1d1d1f;\n padding: 20px;\n -webkit-font-smoothing: antialiased;\n}\n.lx-error {\n text-align: center;\n max-width: 400px;\n}\n.lx-error-code {\n font-size: 120px;\n font-weight: 700;\n color: #d1d1d6;\n line-height: 1;\n letter-spacing: -4px;\n}\n.lx-error-title {\n font-size: 21px;\n font-weight: 600;\n margin: 16px 0 8px;\n color: #1d1d1f;\n}\n.lx-error-desc {\n font-size: 15px;\n color: #86868b;\n line-height: 1.5;\n}\n.lx-error-path {\n display: inline-block;\n margin-top: 20px;\n padding: 10px 16px;\n background: rgba(0,0,0,0.04);\n border-radius: 8px;\n font-family: 'SF Mono', ui-monospace, Menlo, Monaco, monospace;\n font-size: 13px;\n color: #1d1d1f;\n word-break: break-all;\n max-width: 100%;\n}\n@media (prefers-color-scheme: dark) {\n body { background: #000; color: #f5f5f7; }\n .lx-error-code { color: #3a3a3c; }\n .lx-error-title { color: #f5f5f7; }\n .lx-error-desc { color: #86868b; }\n .lx-error-path { background: rgba(255,255,255,0.08); color: #f5f5f7; }\n}\n",document.head.appendChild(o),document.body.innerHTML="",document.body.style.cssText="";var r=document.createElement("div");r.className="lx-error";var i='<div class="lx-error-code">404</div>';i+='<h1 class="lx-error-title">Page Not Found</h1>',i+="<p class=\"lx-error-desc\">The page you're looking for doesn't exist.</p>",n&&(i+='<div class="lx-error-path">'.concat(Qe(n),"</div>")),t&&(i+='<p class="lx-error-desc" style="margin-top:12px">'.concat(Qe(t),"</p>")),r.innerHTML=i,document.body.appendChild(r)}function en(){var e=window.__LX_RUNTIME_CONFIG;return!(!e||!e.error)}function nn(){var e;return(null===(e=window.__LX_RUNTIME_CONFIG)||void 0===e?void 0:e.error)||null}var tn={handleEvent:function(){return on()}};function on(){if(en()){var e=nn();e&&Ze(e)}}function rn(){Ke(),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",tn):on()}var an="lx-action-sheet-style",ln=null;function sn(e){var n,t,o,r=e,i=null!==(n=null==r?void 0:r.itemList)&&void 0!==n?n:[],a=null!==(t=null==r?void 0:r.cancelText)&&void 0!==t?t:"Cancel",l=null!==(o=null==r?void 0:r.itemColor)&&void 0!==o?o:"#007AFF",s=(null!=ln?ln:Promise.resolve()).then(function(){return cn(i,a,l)},function(){return cn(i,a,l)});return ln=s,s}function cn(e,n,t){return new Promise(function(o){var r=!1,i="macOS"===p();!function(){if(!document.getElementById(an)){var e=document.createElement("style");e.id=an,e.textContent="\n.lx-as-backdrop {\n position: fixed; inset: 0; z-index: 99999;\n background: rgba(0,0,0,0.4);\n opacity: 0; transition: opacity ".concat(300,"ms ease;\n}\n.lx-as-backdrop.lx-as-visible { opacity: 1; }\n\n.lx-as-sheet {\n position: fixed; left: 0; right: 0; bottom: 0; z-index: 100000;\n transform: translateY(100%);\n transition: transform ").concat(300,"ms ease;\n font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Text', 'Segoe UI', Roboto, sans-serif;\n -webkit-font-smoothing: antialiased;\n}\n.lx-as-sheet.lx-as-visible { transform: translateY(0); }\n.lx-as-sheet.lx-as-desktop {\n left: 50%;\n right: auto;\n bottom: auto;\n top: 50%;\n width: min(92vw, 460px);\n transform: translate(-50%, calc(-50% + 16px));\n}\n.lx-as-sheet.lx-as-desktop.lx-as-visible { transform: translate(-50%, -50%); }\n\n.lx-as-container {\n background: #fff;\n border-radius: 16px 16px 0 0;\n overflow: hidden;\n}\n.lx-as-container.lx-as-desktop {\n border-radius: 16px;\n}\n\n.lx-as-item {\n display: block; width: 100%;\n height: 56px;\n line-height: 56px;\n padding: 0;\n border: none; background: none;\n font-size: 18px; font-weight: 400;\n text-align: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n position: relative;\n}\n.lx-as-item:active { background: rgba(0,0,0,0.08); }\n.lx-as-item + .lx-as-item::before {\n content: ''; position: absolute; top: 0; left: 0; right: 0;\n height: 1px; background: #E0E0E0;\n}\n.lx-as-separator {\n height: 8px;\n background: #F2F2F2;\n}\n.lx-as-cancel-btn { font-weight: 500; color: #000; }\n"),document.head.appendChild(e)}}();var a=document.createElement("div");a.className="lx-as-backdrop";var l=document.createElement("div");l.className="lx-as-sheet",i&&l.classList.add("lx-as-desktop");var s=document.createElement("div");s.className="lx-as-container",i&&s.classList.add("lx-as-desktop"),e.forEach(function(e,n){var o=document.createElement("button");o.className="lx-as-item",o.textContent=e,o.style.color=t,o.addEventListener("click",function(){return u(n)}),s.appendChild(o)});var c=document.createElement("div");c.className="lx-as-separator",s.appendChild(c);var d=document.createElement("button");function u(e){r||(r=!0,a.classList.remove("lx-as-visible"),l.classList.remove("lx-as-visible"),setTimeout(function(){a.remove(),l.remove(),o({tapIndex:e})},300))}d.className="lx-as-item lx-as-cancel-btn",d.textContent=n,d.addEventListener("click",function(){return u(-1)}),s.appendChild(d),l.appendChild(s),document.body.appendChild(a),document.body.appendChild(l),requestAnimationFrame(function(){a.classList.add("lx-as-visible"),l.classList.add("lx-as-visible")}),a.addEventListener("click",function(){return u(-1)})})}var dn=200,un="lx-modal-style",fn=null;function mn(e){var n,t,o,r,i,a,l=e,s=null!==(n=null==l?void 0:l.title)&&void 0!==n?n:"",c=null!==(t=null==l?void 0:l.content)&&void 0!==t?t:"",d=null===(o=null==l?void 0:l.showCancel)||void 0===o||o,u=null!==(r=null==l?void 0:l.cancelText)&&void 0!==r?r:"Cancel",f=null==l?void 0:l.cancelColor,m=null!==(i=null==l?void 0:l.confirmText)&&void 0!==i?i:"OK",v=null!==(a=null==l?void 0:l.confirmColor)&&void 0!==a?a:"#007AFF",p=(null!=fn?fn:Promise.resolve()).then(function(){return vn(s,c,d,u,f,m,v)},function(){return vn(s,c,d,u,f,m,v)});return fn=p,p}function vn(e,n,t,o,r,i,a){return new Promise(function(l){var s=!1;!function(){if(!document.getElementById(un)){var e=document.createElement("style");e.id=un,e.textContent="\n.lx-modal-backdrop {\n position: fixed; inset: 0; z-index: 99999;\n background: rgba(0,0,0,0.4);\n opacity: 0; transition: opacity ".concat(dn,"ms ease;\n display: flex; align-items: center; justify-content: center;\n}\n.lx-modal-backdrop.lx-modal-visible { opacity: 1; }\n\n.lx-modal-dialog {\n width: min(92vw, 320px);\n background: #fff;\n border-radius: 14px;\n overflow: hidden;\n font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Text', 'Segoe UI', Roboto, sans-serif;\n -webkit-font-smoothing: antialiased;\n transform: scale(0.95); opacity: 0;\n transition: transform ").concat(dn,"ms ease, opacity ").concat(dn,"ms ease;\n}\n.lx-modal-backdrop.lx-modal-visible .lx-modal-dialog {\n transform: scale(1); opacity: 1;\n}\n\n.lx-modal-body {\n padding: 24px 20px 16px;\n text-align: center;\n}\n.lx-modal-title {\n margin: 0 0 8px;\n font-size: 17px;\n font-weight: 600;\n color: #000;\n line-height: 1.35;\n}\n.lx-modal-content {\n margin: 0;\n font-size: 14px;\n color: #666;\n line-height: 1.5;\n word-break: break-word;\n}\n.lx-modal-body:has(.lx-modal-title:empty) .lx-modal-content {\n font-size: 17px;\n font-weight: 600;\n color: #000;\n}\n\n.lx-modal-footer {\n display: flex;\n border-top: 1px solid #E0E0E0;\n}\n.lx-modal-btn {\n flex: 1;\n height: 44px;\n line-height: 44px;\n padding: 0;\n border: none;\n background: none;\n font-size: 17px;\n text-align: center;\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n}\n.lx-modal-btn:active { background: rgba(0,0,0,0.06); }\n.lx-modal-btn + .lx-modal-btn {\n border-left: 1px solid #E0E0E0;\n}\n.lx-modal-btn-cancel {\n color: #666;\n font-weight: 400;\n}\n.lx-modal-btn-confirm {\n font-weight: 600;\n}\n\n@media (prefers-color-scheme: dark) {\n .lx-modal-dialog { background: #2c2c2e; }\n .lx-modal-title { color: #f5f5f7; }\n .lx-modal-content { color: #ababab; }\n .lx-modal-body:has(.lx-modal-title:empty) .lx-modal-content {\n color: #f5f5f7;\n }\n .lx-modal-footer { border-top-color: #3a3a3c; }\n .lx-modal-btn:active { background: rgba(255,255,255,0.08); }\n .lx-modal-btn + .lx-modal-btn { border-left-color: #3a3a3c; }\n .lx-modal-btn-cancel { color: #ababab; }\n}\n"),document.head.appendChild(e)}}();var c=document.createElement("div");c.className="lx-modal-backdrop";var d=document.createElement("div");d.className="lx-modal-dialog";var u=document.createElement("div");u.className="lx-modal-body";var f=document.createElement("div");if(f.className="lx-modal-title",f.textContent=e,u.appendChild(f),n){var m=document.createElement("p");m.className="lx-modal-content",m.textContent=n,u.appendChild(m)}d.appendChild(u);var v=document.createElement("div");if(v.className="lx-modal-footer",t){var p=document.createElement("button");p.className="lx-modal-btn lx-modal-btn-cancel",p.textContent=o,r&&(p.style.color=r),p.addEventListener("click",function(){return g(!1)}),v.appendChild(p)}var h=document.createElement("button");function g(e){s||(s=!0,c.classList.remove("lx-modal-visible"),setTimeout(function(){c.remove(),l({confirm:e,cancel:!e})},dn))}h.className="lx-modal-btn lx-modal-btn-confirm",h.textContent=i,h.style.color=a,h.addEventListener("click",function(){return g(!0)}),v.appendChild(h),d.appendChild(v),c.appendChild(d),document.body.appendChild(c),requestAnimationFrame(function(){c.classList.add("lx-modal-visible")})})}var pn="lx-toast-style",hn=null;function gn(e){var n,t,o,r,i,a=e,l=null!==(n=null==a?void 0:a.title)&&void 0!==n?n:"",s=null!==(t=null==a?void 0:a.icon)&&void 0!==t?t:"none",c=null!==(o=null==a?void 0:a.duration)&&void 0!==o?o:1500,d=null!==(r=null==a?void 0:a.mask)&&void 0!==r&&r,u=null!==(i=null==a?void 0:a.position)&&void 0!==i?i:"center";hn&&(hn.dismiss(),hn=null),function(){if(!document.getElementById(pn)){var e=document.createElement("style");e.id=pn,e.textContent="\n.lx-toast-mask {\n position: fixed; inset: 0; z-index: 99998;\n}\n.lx-toast-container {\n position: fixed; left: 0; right: 0; z-index: 99999;\n display: flex; justify-content: center;\n pointer-events: none;\n}\n.lx-toast-container.lx-toast-top { top: 0; padding-top: 80px; }\n.lx-toast-container.lx-toast-center { top: 0; bottom: 0; align-items: center; }\n.lx-toast-container.lx-toast-bottom { bottom: 0; padding-bottom: 80px; }\n\n.lx-toast-box {\n display: flex; flex-direction: column; align-items: center; gap: 10px;\n min-width: 120px; max-width: 280px;\n padding: 20px;\n background: rgba(0,0,0,0.8);\n border-radius: 12px;\n color: #fff;\n pointer-events: auto;\n transform: scale(0.8); opacity: 0;\n transition: transform ".concat(200,"ms ease, opacity ").concat(200,"ms ease;\n}\n.lx-toast-box.lx-toast-no-icon {\n min-width: auto; min-height: auto;\n padding: 12px 20px;\n}\n.lx-toast-box.lx-toast-visible {\n transform: scale(1); opacity: 1;\n}\n.lx-toast-icon {\n width: 36px; height: 36px;\n color: #fff;\n line-height: 0;\n}\n.lx-toast-title {\n font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Text', 'Segoe UI', Roboto, sans-serif;\n font-size: 16px; font-weight: 500;\n text-align: center;\n line-height: 1.4;\n word-break: break-word;\n -webkit-font-smoothing: antialiased;\n}\n"),document.head.appendChild(e)}}();var f=null;d&&((f=document.createElement("div")).className="lx-toast-mask",document.body.appendChild(f));var m=document.createElement("div");m.className="lx-toast-container","top"===u?m.classList.add("lx-toast-top"):"bottom"===u?m.classList.add("lx-toast-bottom"):m.classList.add("lx-toast-center");var v=document.createElement("div");v.className="lx-toast-box";var p="none"!==s;if(p||v.classList.add("lx-toast-no-icon"),p){var h=document.createElement("div");h.className="lx-toast-icon","success"===s?h.innerHTML='<svg width="36" height="36" viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="18" cy="18" r="17" stroke="currentColor" stroke-width="2"/><path d="M11 18l5 5 9-9" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/></svg>':"error"===s?h.innerHTML='<svg width="36" height="36" viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="18" cy="18" r="17" stroke="currentColor" stroke-width="2"/><path d="M13 13l10 10M23 13l-10 10" stroke="currentColor" stroke-width="2.5" stroke-linecap="round"/></svg>':"loading"===s&&(h.innerHTML='<svg width="36" height="36" viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M18 4a14 14 0 0 1 14 14" stroke="currentColor" stroke-width="2.5" stroke-linecap="round"><animateTransform attributeName="transform" type="rotate" from="0 18 18" to="360 18 18" dur="0.8s" repeatCount="indefinite"/></path></svg>'),v.appendChild(h)}var g=document.createElement("div");g.className="lx-toast-title",g.textContent=l,v.appendChild(g),m.appendChild(v),document.body.appendChild(m),requestAnimationFrame(function(){v.classList.add("lx-toast-visible")});var y=!1;function w(){y||(y=!0,(null==hn?void 0:hn.dismiss)===w&&(hn=null),v.classList.remove("lx-toast-visible"),x&&clearTimeout(x),setTimeout(function(){m.remove(),null==f||f.remove()},200))}var x=null;return c>0&&(x=setTimeout(w,c)),hn={dismiss:w,timer:x},Promise.resolve()}function yn(){return hn&&(hn.dismiss(),hn=null),Promise.resolve()}return"all"!==__LX_RUNTIME_PLATFORM__&&"desktop"!==__LX_RUNTIME_PLATFORM__||(pe("ui.showActionSheet",sn),pe("ui.showModal",mn),pe("ui.showToast",gn),pe("ui.hideToast",yn)),rn(),e.LingXiaBridge=Je,e.boot=function(){Ke(),on()},e.bootWhenReady=rn,e.channel=function(e,n,t){return Je.channel(e,n,t)},e.getErrorInfo=nn,e.hasError=en,e.initBridge=Ke,e.invoke=function(e,n,t){return Je.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(Ye(e),n,Ve(t))},e.renderErrorUI=Ze,e.stream=function(e,n,t){return $e(We.stream(Ye(e),n,Ve(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){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});var n="BRIDGE_TIMEOUT",t="BRIDGE_CANCELED",r="BRIDGE_HANDSHAKE_FAILED",o="BRIDGE_MALFORMED_MESSAGE",i="BRIDGE_METHOD_NOT_FOUND",a="BRIDGE_CAPABILITY_DENIED",c="BRIDGE_INTERNAL_ERROR",l="BRIDGE_OUTBOX_FULL",s="BRIDGE_STREAM_CLOSED",d=function(e){function n(n,t,r){var o=e.call(this,t)||this;return o.name="BridgeInvocationError",o.code=n,o.data=r,o}return __extends(n,e),n}(Error);function u(e){if(e instanceof d)return e;if(e&&"object"==typeof e){var n=e,t=c;("string"==typeof n.code&&""!==n.code.trim()||"number"==typeof n.code&&Number.isFinite(n.code))&&(t=n.code);var r="string"==typeof n.message&&""!==n.message.trim()?n.message:"Unknown error";return new d(t,r,"data"in n?n.data:void 0)}var o=e instanceof Error?e.message:"string"==typeof e?e:"Unknown error";return new d(c,o)}function f(e){var n=u(e);return __assign({code:String(n.code||c),message:"string"==typeof n.message&&""!==n.message.trim()?n.message:"Unknown error"},void 0===n.data?{}:{data:n.data})}function v(e){var n,t=e.os,r=e.send;if("undefined"!=typeof window&&"undefined"!=typeof document){var o="iOS"===t;if(o||"Android"===t){var i=Symbol.for("LingXia.NativeComponentCoverageMonitor");if(!(null===(n=window[i])||void 0===n?void 0:n.installed)){var a={installed:!0,coveredById:new Map,coveredCount:0,anyCovered:!1,scheduled:!1,hasAnyVideo:!1,scrollLocked:!1,scrollY:0,htmlOverflow:"",bodyOverflow:"",bodyPosition:"",bodyTop:"",bodyWidth:""};window[i]=a,new MutationObserver(u).observe(document.documentElement,{subtree:!0,childList:!0,attributes:!0});var c={handleEvent:function(){(a.hasAnyVideo||0!==a.coveredById.size)&&u()}},l={handleEvent:function(){return u()}};window.addEventListener("scroll",c,{capture:!0,passive:!0}),window.addEventListener("resize",l),u()}}}function s(e){var n,t,r=null===(n=e.getBoundingClientRect)||void 0===n?void 0:n.call(e);if(!r)return!1;if(r.width<2||r.height<2)return!1;var o=r.left+r.width/2,i=r.top+r.height/2;if(o<0||i<0||o>=window.innerWidth||i>=window.innerHeight)return!1;var a=null===(t=document.elementFromPoint)||void 0===t?void 0:t.call(document,o,i);return!!a&&(a!==document.documentElement&&a!==document.body&&!(a===e||e.contains(a)))}function d(){a.scheduled=!1;var e=document.querySelectorAll("lx-video[id]");if(a.hasAnyVideo=e.length>0,a.hasAnyVideo||0!==a.coveredById.size||a.anyCovered){for(var n=new Set,t=0,i=Array.from(e);t<i.length;t++){var c=i[t];if(m=c.id){n.add(m);var l=s(c),d=a.coveredById.get(m);d!==l&&(!0===d&&(a.coveredCount-=1),!0===l&&(a.coveredCount+=1),a.coveredById.set(m,l),r({id:m,action:"component.coverage",covered:l}))}}for(var u=[],f=0,v=a.coveredById.entries();f<v.length;f++){var p=v[f],m=p[0];l=p[1];n.has(m)||(u.push(m),!0===l&&(a.coveredCount-=1))}for(var h=0,g=u;h<g.length;h++){m=g[h];a.coveredById.delete(m),r({id:m,action:"component.coverage",covered:!1})}var y=a.coveredCount>0;y!==a.anyCovered&&(a.anyCovered=y,o&&(y?function(){if(o&&!a.scrollLocked){var e=document.documentElement,n=document.body;e&&n&&(a.scrollLocked=!0,a.scrollY=window.scrollY||e.scrollTop||0,a.htmlOverflow=e.style.overflow||"",a.bodyOverflow=n.style.overflow||"",a.bodyPosition=n.style.position||"",a.bodyTop=n.style.top||"",a.bodyWidth=n.style.width||"",e.style.overflow="hidden",n.style.overflow="hidden",n.style.position="fixed",n.style.top="".concat(-a.scrollY,"px"),n.style.width="100%")}}():function(){if(o&&a.scrollLocked){var e=document.documentElement,n=document.body;e&&n&&(a.scrollLocked=!1,e.style.overflow=a.htmlOverflow,n.style.overflow=a.bodyOverflow,n.style.position=a.bodyPosition,n.style.top=a.bodyTop,n.style.width=a.bodyWidth,window.scrollTo(0,a.scrollY))}}()))}}function u(){a.scheduled||(a.scheduled=!0,requestAnimationFrame(d))}}var p="undefined"!=typeof window&&window.__LX_BRIDGE_CFG||{};function m(){return p.os||"unknown"}function h(){return"iOS"===p.os}function g(){return"macOS"===p.os}function y(){return"Windows"===p.os}var w="__LingXiaRecvMessage",b=5e3,_="[LX.Bridge]",I="messageport",k="jsinterface",E="webmessage",x=p.appleDownstreamURL,S={data:!1,proto:!1,all:!1},T=[];function O(e){return S.all||S[e]}function M(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];console.log.apply(console,__spreadArray([_],e,!1))}function j(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];console.warn.apply(console,__spreadArray([_],e,!1))}function A(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];console.error.apply(console,__spreadArray([_],e,!1))}function C(e){try{return JSON.stringify(e)}catch(n){return function(e,n){var t=new WeakSet;return JSON.stringify(e,function(e,n){if("object"==typeof n&&null!==n){if(t.has(n))return"[Circular]";t.add(n)}return n},n)}(e)}}function L(e){try{return"function"==typeof structuredClone?structuredClone(e):JSON.parse(JSON.stringify(e))}catch(e){return{}}}var N,P,B="iOS"===p.os||"macOS"===p.os?"webkit":"Harmony"===p.os?"messageport":"Windows"===p.os?"webmessage":"Android"===p.os?(null===(P=null===(N=window.LingXiaProxy)||void 0===N?void 0:N.supportsMessagePort)||void 0===P?void 0:P.call(N))?"messageport":"jsinterface":"unknown";"undefined"!=typeof window&&"function"!=typeof window[w]&&(window[w]=function(e){T.push(e)});var R=null,D=!1,X=null,G=null,F=null,H=200,q={listenerInstalled:!1,promise:null,resolve:null,reject:null,timer:null},U={handleEvent:function(e){var n,t,r=e;if("LingXia-port-init"===r.data){var o=null===(n=r.ports)||void 0===n?void 0:n[0];o&&(Ye._connectWebMessagePort(o),null===(t=q.resolve)||void 0===t||t.call(q,o))}}};function W(){q.listenerInstalled||(q.listenerInstalled=!0,window.addEventListener("message",U))}function z(){null!==q.timer&&(window.clearTimeout(q.timer),q.timer=null),q.resolve=null,q.reject=null,q.promise=null}function J(){return"webkit"===B&&(h()||g())}function Y(){null!==F&&(clearTimeout(F),F=null)}function V(e){for(var n=0,t=Array.from(le.keys());n<t.length;n++){_e(t[n],{code:s,message:e})}for(var r=0,o=Array.from(se.keys());r<o.length;r++){Ie(o[r],{code:s,message:e})}!function(e){for(var n=0,t=Array.from(de.entries());n<t.length;n++){var r=t[n],o=r[0],i=r[1];de.delete(o),i._emitClose(s,e)}}(e)}function $(){return __awaiter(this,void 0,void 0,function(){var e,n,t,r,o,i,a,c,l;return __generator(this,function(s){switch(s.label){case 0:if(!x)throw new Error("Apple downstream URL is not configured");return e=new AbortController,G=e,[4,fetch(x,{method:"GET",cache:"no-store",headers:{Accept:"application/x-ndjson"},signal:e.signal})];case 1:if(!(n=s.sent()).ok)throw new Error("Apple downstream HTTP ".concat(n.status));if(!n.body)throw new Error("Apple downstream response body unavailable");D=!0,H=200,O("proto")&&M("Apple downstream connected"),Me(),t=n.body.getReader(),r=new TextDecoder,o="",s.label=2;case 2:s.trys.push([2,6,7,8]),s.label=3;case 3:return[4,t.read()];case 4:return i=s.sent(),a=i.value,i.done?[3,5]:(o=function(e){for(var n=e;;){var t=n.indexOf("\n");if(t<0)break;var r=n.slice(0,t).trim();if(n=n.slice(t+1),r)try{Pe(JSON.parse(r))}catch(e){j("Apple downstream parse error:",e,r)}}return n}(o+=r.decode(a,{stream:!0})),[3,3]);case 5:if(o+=r.decode(),c=o.trim())try{Pe(JSON.parse(c))}catch(e){j("Apple downstream trailing parse error:",e,c)}return[3,8];case 6:if(l=s.sent(),e.signal.aborted)return[2];throw l;case 7:try{t.releaseLock()}catch(e){}return[7];case 8:return[2]}})})}function K(){J()&&(X||(Y(),X=$().catch(function(e){(null==G?void 0:G.signal.aborted)||j("Apple downstream failed:",e)}).finally(function(){var e,n=null!==(e=null==G?void 0:G.signal.aborted)&&void 0!==e&&e;X=null,G=null;var t,r,o=D;D=!1,t="Apple downstream closed",r=o,Oe(),Z=null,ee=!1,ne=!1,te=0,r&&V(t),n||function(e){if(J()){Y();var n=H;H=Math.min(2*H,2e3);var t="Apple downstream disconnected, retrying in ".concat(n,"ms: ").concat(e);n<=200?M(t):j(t),F=setTimeout(function(){F=null,K()},n)}}("stream closed")})))}function Q(e){var n,t,r,o=e.kind;"req"!==o&&"notify"!==o||M("postToNative: ".concat(o," ").concat(e.method)),O("proto")&&console.log("→",JSON.stringify(e,null,2));try{if("webkit"===B)return void(null===(t=null===(n=window.webkit)||void 0===n?void 0:n.messageHandlers.LingXia)||void 0===t||t.postMessage(e));var i=C(e);if(B===I&&R)return void R.postMessage(i);if((B===k||B===E)&&(null===(r=window.LingXiaProxy)||void 0===r?void 0:r.postMessage))return void window.LingXiaProxy.postMessage(i);j("Transport not ready")}catch(e){A("Send error:",e)}}var Z=null,ee=!1,ne=!1,te=0,re=null,oe={},ie=0;function ae(){return{data:new Set,end:new Set,error:new Set,close:new Set}}function ce(e,n){var t,r=ae(),o=!1,i=function(){},a=function(){},c=[],l=[],s=new Promise(function(e,n){i=e,a=n});return(t={id:e,result:s,on:function(e,n){return"data"===e&&r.data.add(n),"end"===e&&r.end.add(n),"error"===e&&r.error.add(n),this}})[Symbol.asyncIterator]=function(){return{next:function(){return c.length>0?Promise.resolve({done:!1,value:c.shift()}):o?s.then(function(e){return{done:!0,value:e}},function(e){return Promise.reject(e)}):new Promise(function(e,n){l.push({resolve:e,reject:n})})}}},t.cancel=function(){o||n()},t._emitData=function(e){if(!o){l.length>0?l.shift().resolve({done:!1,value:e}):c.push(e);for(var n=0,t=r.data;n<t.length;n++){var i=t[n];try{i(e)}catch(e){j("Stream data listener failed:",e)}}}},t._resolve=function(e){if(!o){for(o=!0,i(e);l.length>0;)l.shift().resolve({done:!0,value:e});for(var n=0,t=r.end;n<t.length;n++){var a=t[n];try{a(e)}catch(e){j("Stream end listener failed:",e)}}}},t._reject=function(e){if(!o){for(o=!0,a(e);l.length>0;)l.shift().reject(e);for(var n=0,t=r.error;n<t.length;n++){var i=t[n];try{i(e)}catch(e){j("Stream error listener failed:",e)}}}},t}var le=new Map,se=new Map,de=new Map,ue=[],fe=-1,ve={},pe=new Set,me=new WeakMap,he=new Map;function ge(e){if(e.startsWith("host."))return"host";var n=e.indexOf(".");return n>0?e.slice(0,n):"page"}function ye(e){if(null!=e)return e}function we(){return B===I?!!R:J()?D:"webkit"===B||B===k||B===E}function be(){return we()&&ee}function _e(e,n){var t,r=le.get(e);if(r){le.delete(e),null!==r.timerId&&clearTimeout(r.timerId);var o=u(n);if("stream"===r.mode&&r.stream)return void r.stream._reject(o);null===(t=r.reject)||void 0===t||t.call(r,o)}}function Ie(e,n){var t=se.get(e);if(t){se.delete(e),null!==t.timerId&&clearTimeout(t.timerId);var r=u(n);t.channel._reject(r),t.reject(r)}}function ke(e,n){le.has(e)?_e(e,n):se.has(e)&&Ie(e,n)}function Ee(e){var t=le.get(e);t&&(!Number.isFinite(t.timeoutMs)||t.timeoutMs<=0?null!==t.timerId&&(clearTimeout(t.timerId),t.timerId=null):(null!==t.timerId&&clearTimeout(t.timerId),t.timerId=setTimeout(function(){le.has(e)&&_e(e,{code:n,message:"'".concat(t.method,"' timed out")})},t.timeoutMs)))}function xe(e){le.has(e)?Ee(e):se.has(e)&&function(e){var t=se.get(e);t&&(null!==t.timerId&&clearTimeout(t.timerId),t.timerId=setTimeout(function(){Ie(e,{code:n,message:"Channel '".concat(t.topic,"' timed out")})},b))}(e)}function Se(e){for(var n,t=ue.length-1;t>=0;t--)if((null===(n=ue[t])||void 0===n?void 0:n.reqId)===e)return ue.splice(t,1),!0;return!1}function Te(e,n){var t=e.kind,r="hello"===t||"helloAck"===t||"ready"===t;if(!be()&&!r)return ue.length>=256?(A("Outbox full"),void(n&&ke(n,{code:l,message:"Bridge outbox is full"}))):void ue.push({msg:e,reqId:n});n&&xe(n),Q(e)}function Oe(){null!==re&&(clearTimeout(re),re=null)}function Me(){if(!ee&&we()){Oe();var e={v:2,kind:"hello",nonce:p.nonce||"",role:"view",protocolsSupported:[2]};ne=!0,Q(e),re=setTimeout(function(){if(!ee)if(++te<3)j("Handshake timeout (".concat(te,"/").concat(3,"), retrying...")),ne=!1,Me();else{for(A("Handshake failed"),Oe(),ne=!1,te=0;ue.length;){var e=ue.shift();(null==e?void 0:e.reqId)&&ke(e.reqId,{code:r,message:"Bridge handshake failed"})}for(var n=0,t=Array.from(se.keys());n<t.length;n++){Ie(t[n],{code:r,message:"Bridge handshake failed"})}}},1e4)}}function je(e){return e.replace(/~1/g,"/").replace(/~0/g,"~")}function Ae(e,n,t){void 0===t&&(t=!1);var r=function(e){if(""===e)return[];if(!e.startsWith("/"))throw new Error("Invalid JSON pointer: ".concat(e));return e.split("/").slice(1).map(je)}(n);if(0===r.length)return{container:{$root:e},key:"$root"};for(var o=e,i=0;i<r.length-1;i++){var a=r[i];if(Array.isArray(o))o=o[Number(a)];else{if(!o||"object"!=typeof o)throw new Error("Invalid container at ".concat(a));var c=o;if(t&&void 0===c[a]){var l=r[i+1];c[a]=l&&/^\d+$/.test(l)?[]:{}}o=c[a]}}return{container:o,key:r[r.length-1]}}function Ce(e){pe.forEach(function(n){try{if(!me.has(n))return me.set(n,!0),void n(L(ve),{rev:fe,initial:!0});n(L(ve),{rev:fe,initial:e})}catch(e){j("Subscriber error:",e)}})}function Le(e){if("function"!=typeof e)return function(){};if(pe.add(e),fe>=0){me.set(e,!0);try{e(L(ve),{rev:fe,initial:!0})}catch(e){A("Callback error:",e)}}return function(){pe.delete(e),me.delete(e)}}function Ne(e){Je.call("state.getSnapshot",{scope:e}).catch(function(){})}function Pe(e){var n,t;if(e&&"object"==typeof e){var r=e;if("event"===r.type&&"nativecomponent"===r.name&&r.payload){var o=r.payload,c=o.id||o.componentId;if("string"==typeof c){var l=Be.get(c);if(l)try{l(o)}catch(e){A("NC handler error:",e)}}return}}var s=function(e){if(!e||"object"!=typeof e)return null;var n=e.v,t=e.kind;return 2!==n||"string"!=typeof t?null:e}(e);if(s)switch(s.kind){case"helloAck":return void(Z=s.sessionId);case"ready":if(Z&&s.sessionId!==Z)return void j("sessionId mismatch");if(Oe(),ee=!0,te=0,s.hostMethods)for(var d=0,f=Object.entries(s.hostMethods);d<f.length;d++){var v=f[d],p=v[0],m=v[1];oe[p]=m}return O("proto")&&M("Handshake complete, hostMethods:",Object.keys(oe).length),void function(){if(be())for(;ue.length;){var e=ue.shift();e&&(e.reqId&&xe(e.reqId),Q(e.msg))}}();case"res":var h=le.get(s.id);if(!h)return;if(le.delete(s.id),null!==h.timerId&&clearTimeout(h.timerId),s.ok){if("state.getSnapshot"===h.method&&(function(e){if(!e||"object"!=typeof e)return!1;var n=e;return!("number"!=typeof n.rev||!Number.isFinite(n.rev)||!n.state||"object"!=typeof n.state||(ve=n.state,fe=n.rev,O("data")&&(console.group("[LX] snapshot(res)"),console.log("rev:",fe,"state:",L(ve)),console.groupEnd()),Ce(!0),0))}(s.result)||j("Invalid state.getSnapshot result")),"stream"===h.mode&&h.stream)return void h.stream._resolve(s.result);null===(n=h.resolve)||void 0===n||n.call(h,s.result)}else{var g=u(s.error);if("stream"===h.mode&&h.stream)return void h.stream._reject(g);null===(t=h.reject)||void 0===t||t.call(h,g)}return;case"event":if(le.has(s.id)){var y=le.get(s.id);return void("stream"===(null==y?void 0:y.mode)&&y.stream?(Ee(s.id),y.stream._emitData(s.payload)):j("Received event for non-stream request '".concat(s.id,"'")))}return;case"state.snapshot":return ve=s.state||{},fe=s.rev,O("data")&&(console.group("[LX] snapshot"),console.log("rev:",fe,"state:",L(ve)),console.groupEnd()),void Ce(!0);case"state.patch":if(s.baseRev!==fe)return j("baseRev mismatch",{have:fe,want:s.baseRev}),void Ne(s.scope);try{!function(e,n){for(var t=0,r=n;t<r.length;t++){var o=r[t],i="add"===o.op||"replace"===o.op,a=Ae(e,o.path,i),c=a.container,l=a.key;if("$root"!==l)if(Array.isArray(c)){var s="-"===l?c.length:Number(l);if(!Number.isFinite(s)||s<0)throw new Error("Invalid index");"remove"===o.op?c.splice(s,1):"add"===o.op?c.splice(s,0,o.value):"replace"===o.op&&(c[s]=o.value)}else{if(!c||"object"!=typeof c)throw new Error("Invalid container");var d=c;"remove"===o.op?delete d[l]:d[l]=o.value}else{for(var u=0,f=Object.keys(e);u<f.length;u++)delete e[f[u]];if("remove"!==o.op){var v=o.value;v&&"object"==typeof v&&Object.assign(e,v)}}}}(ve,s.ops||[]),fe=s.rev}catch(e){return A("Patch failed:",e),void Ne(s.scope)}return O("data")&&(console.group("[LX] patch"),console.log("rev:",fe,"ops:",s.ops),console.groupEnd()),Ce(!1),void(s.ack&&Te({v:2,kind:"state.ack",scope:s.scope,rev:s.rev}));case"ch.ack":if(!(b=se.get(s.id)))return;if(se.delete(s.id),null!==b.timerId&&clearTimeout(b.timerId),s.ok)b.channel._markOpen(),de.set(s.id,b.channel),b.resolve(b.channel);else{g=u(s.error);b.channel._reject(g),b.reject(g)}return;case"ch.data":var w=de.get(s.id);if(!w)return;return void w._emitData(s.payload);case"ch.close":var b;if(b=se.get(s.id))return se.delete(s.id),void b.channel._emitClose(s.code,s.reason);var _=de.get(s.id);if(!_)return;return de.delete(s.id),void _._emitClose(s.code,s.reason);case"req":var I=s,k=ge(I.method);if(!I.cap||I.cap!==k)return void Te({v:2,kind:"res",id:I.id,ok:!1,error:{code:a,message:"Invalid cap for ".concat(I.method)}});var E=he.get(I.method);return E?void Promise.resolve().then(function(){return E(I.params)}).then(function(e){Te({v:2,kind:"res",id:I.id,ok:!0,result:e})}).catch(function(e){Te({v:2,kind:"res",id:I.id,ok:!1,error:u(e)})}):void Te({v:2,kind:"res",id:I.id,ok:!1,error:{code:i,message:"View handler not found: ".concat(I.method)}})}else j("Invalid V2 message:",e)}var Be=new Map,Re=[],De=!1;function Xe(){var e,n,t;return"undefined"!=typeof window&&!(!(null===(n=null===(e=window.webkit)||void 0===e?void 0:e.messageHandlers)||void 0===n?void 0:n.NativeComponent)&&!(null===(t=window.NativeComponentBridge)||void 0===t?void 0:t.postMessage))}function Ge(e){var n,t,r;try{if(null===(t=null===(n=window.webkit)||void 0===n?void 0:n.messageHandlers)||void 0===t?void 0:t.NativeComponent)return void window.webkit.messageHandlers.NativeComponent.postMessage(e);if(null===(r=window.NativeComponentBridge)||void 0===r?void 0:r.postMessage)return void window.NativeComponentBridge.postMessage(C(e))}catch(e){A("NativeComponent send error:",e)}}function Fe(){if(Xe()&&0!==Re.length)for(De=!0;Re.length;){var e=Re.shift();try{Ge(e)}catch(e){break}}}function He(e){try{if(!Xe())return void Re.push(e);De||Fe(),Ge(e)}catch(e){A("NC send failed:",e)}}function qe(e){return"".concat(e,"_").concat(Date.now(),"_").concat(ie++)}function Ue(e,n,t){if(n)if(n.aborted)t();else{var r={handleEvent:function(){n.removeEventListener("abort",r),t()}};n.addEventListener("abort",r)}}var We,ze,Je={call:function(e,n,r){return new Promise(function(i,a){var c;if(e&&"string"==typeof e){ne||Me();var l=qe("c"),s=(null==r?void 0:r.cap)||ge(e),d=null!==(c=null==r?void 0:r.timeoutMs)&&void 0!==c?c:b;le.set(l,{method:e,mode:"call",resolve:i,reject:function(e){return a(e)},timeoutMs:d,timerId:null}),Te({v:2,kind:"req",id:l,method:e,params:ye(n),cap:s},l),Ue(0,null==r?void 0:r.signal,function(){var e=Se(l);_e(l,{code:t,message:"Bridge request aborted"}),!e&&ee&&Te({v:2,kind:"cancel",id:l})})}else a({code:o,message:"Method name must be a non-empty string"})})},stream:function(e,n,r){var i;if(!e||"string"!=typeof e){var a=ce("invalid",function(){});return a._reject({code:o,message:"Method name must be a non-empty string"}),a}ne||Me();var c=qe("c"),l=ce(c,function(){Se(c)?_e(c,{code:t,message:"Bridge request aborted"}):ee&&Te({v:2,kind:"cancel",id:c})}),s=(null==r?void 0:r.cap)||ge(e),d=null!==(i=null==r?void 0:r.timeoutMs)&&void 0!==i?i:b;return le.set(c,{method:e,mode:"stream",stream:l,timeoutMs:d,timerId:null}),Te({v:2,kind:"req",id:c,method:e,params:ye(n),cap:s},c),Ue(0,null==r?void 0:r.signal,function(){return l.cancel()}),l},notify:function(e,n,t){e&&"string"==typeof e&&(ne||Me(),Te({v:2,kind:"notify",method:e,params:ye(n),cap:(null==t?void 0:t.cap)||ge(e)}))},state:{subscribe:Le},channel:{open:function(e,n,t){return e&&"string"==typeof e?(ne||Me(),new Promise(function(r,o){var i=qe("ch"),a=function(e,n,t){var r,o=ae(),i=!1,a=0,c=!1,l=[],d=[],u=((r={id:e,send:function(t){i?n(t,a++):u._reject({code:s,message:"Channel '".concat(e,"' is closed")})},on:function(e,n){if("data"===e&&(o.data.add(n),l.length>0))for(var t=0,r=l.splice(0);t<r.length;t++){var i=r[t];try{n(i)}catch(e){j("Channel listener failed:",e)}}return"close"===e&&o.close.add(n),"error"===e&&o.error.add(n),this}})[Symbol.asyncIterator]=function(){return{next:function(){return l.length>0?Promise.resolve({done:!1,value:l.shift()}):c?Promise.resolve({done:!0,value:void 0}):new Promise(function(e,n){d.push({resolve:e,reject:n})})}}},r.close=function(e,n){i&&(i=!1,c=!0,t(e,n),u._emitClose(e,n))},r._emitData=function(e){if(i){d.length>0?d.shift().resolve({done:!1,value:e}):l.push(e);for(var n=0,t=o.data;n<t.length;n++){var r=t[n];try{r(e)}catch(e){j("Channel listener failed:",e)}}}},r._emitClose=function(e,n){for(c=!0;d.length>0;)d.shift().resolve({done:!0,value:void 0});for(var t=0,r=o.close;t<r.length;t++){var i=r[t];try{i(e,n)}catch(e){j("Channel close listener failed:",e)}}},r._reject=function(e){for(c=!0;d.length>0;)d.shift().reject(e);for(var n=0,t=o.error;n<t.length;n++){var r=t[n];try{r(e)}catch(e){j("Channel error listener failed:",e)}}},r._markOpen=function(){i=!0,c=!1},r._isOpen=function(){return i},r._nextSeq=function(){return a++},r);return u}(i,function(e,n){Te({v:2,kind:"ch.data",id:i,seq:n,payload:e})},function(e,n){var t=se.get(i);t&&null!==t.timerId&&clearTimeout(t.timerId),se.delete(i),de.delete(i),Te({v:2,kind:"ch.close",id:i,code:e,reason:n})});se.set(i,{topic:e,channel:a,resolve:r,reject:o,timerId:null}),Te({v:2,kind:"ch.open",id:i,topic:e,params:ye(n),cap:(null==t?void 0:t.cap)||ge(e)},i)})):Promise.reject({code:o,message:"Topic name must be a non-empty string"})}}},Ye={invoke:function(e,n,t){return Je.call(Ve(e),n,$e(t)).then(function(e){return e}).catch(function(e){return Promise.reject(f(e))})},notify:function(e,n,t){Je.notify(Ve(e),n,$e(t))},stream:function(e,n,t){return Ke(Je.stream(Ve(e),n,$e(t)))},channel:function(e,n,t){return Je.channel.open(Ve(e),n,$e(t)).then(function(e){return function(e){var n=new Set,t=new Set;return e.on("data",function(e){for(var t=0,r=n;t<r.length;t++){(0,r[t])(e)}}),e.on("close",function(e,n){for(var r={code:e,reason:n},o=0,i=t;o<i.length;o++){(0,i[o])(r)}}),{send:function(n){e.send(n)},onMessage:function(e){return n.add(e),function(){n.delete(e)}},onClose:function(e){return t.add(e),function(){t.delete(e)}},close:function(n,t){e.close(n,t)}}}(e)}).catch(function(e){return Promise.reject(f(e))})},raw:Je,state:{subscribe:Le},_connectWebMessagePort:function(e){if(B===I){if(R&&R!==e)try{R.onmessage=null,R.close()}catch(e){}R=e,e.onmessage=function(e){var n=e.data;if("string"==typeof n)try{n=JSON.parse(n)}catch(e){return}Pe(n)};try{e.start()}catch(e){}M("Port connected"),Me()}},_receiveEvaluateMessage:function(e){try{e&&Pe(JSON.parse(e))}catch(e){A("Parse error:",e)}},debug:(We=S,ze={},Object.keys(We).forEach(function(e){Object.defineProperty(ze,e,{enumerable:!0,configurable:!1,get:function(){return We[e]},set:function(n){We[e]=!!n,console.log("[LX] ".concat(e,": ").concat(n))}})}),ze),platform:{isHarmony:function(){return"Harmony"===p.os},isIOS:h,isAndroid:function(){return"Android"===p.os},isMacOS:g,isWindows:y,isDesktop:function(){return g()||y()},getOS:m},dom:{measureById:function(e){try{if(!e)return null;var n=document.getElementById(e);if(!n)return null;var t=n.getBoundingClientRect(),r=0;try{r=parseFloat(getComputedStyle(n).borderRadius)||0}catch(e){}return[t.left+window.scrollX,t.top+window.scrollY,t.width,t.height,r]}catch(e){return null}}},nativeComponents:{send:He,hasHandler:Xe,flush:Fe,register:function(e,n){return e&&"function"==typeof n?(Be.set(e,n),function(){return Be.delete(e)}):function(){}},unregister:function(e){Be.delete(e)}},isReady:function(){return ee}};function Ve(e){return e.startsWith("host.")?e:"host.".concat(e)}function $e(e){return __assign(__assign({},e||{}),{cap:(null==e?void 0:e.cap)||"host"})}function Ke(e){var n=new Set,t=new Set;return e.on("data",function(e){for(var t=0,r=n;t<r.length;t++){(0,r[t])(e)}}),e.on("error",function(e){for(var n=f(e),r=0,o=t;r<o.length;r++){(0,o[r])(n)}}),{onEvent:function(e){return n.add(e),function(){n.delete(e)}},onError:function(e){return t.add(e),function(){t.delete(e)}},result:e.result.catch(function(e){return Promise.reject(f(e))}),cancel:function(){e.cancel()}}}function Qe(){if(window.__LX_BRIDGE_INIT_STATE)M("Bridge already ".concat(window.__LX_BRIDGE_INIT_STATE,", skipping duplicate init"));else{window.__LX_BRIDGE_INIT_STATE="initializing";try{M("Method: ".concat(B)),function(e){if("undefined"!=typeof window&&(window[w]=e,0!==T.length))for(var n=0,t=T.splice(0,T.length);n<t.length;n++){var r=t[n];try{e(r)}catch(e){j("Failed to replay queued native message:",e)}}}(Ye._receiveEvaluateMessage),J()?K():B===I?(W(),function(){var e,n;if(R)return Promise.resolve(R);if(q.promise)return q.promise;W(),q.promise=new Promise(function(e,n){q.resolve=function(n){z(),e(n)},q.reject=function(e){z(),n(e)},q.timer=window.setTimeout(function(){var e;null===(e=q.reject)||void 0===e||e.call(q,new Error("MessagePort init timed out after ".concat(5e3,"ms")))},5e3)});try{null===(e=window.LingXiaProxy)||void 0===e||e.getPort("LingXiaPort")}catch(e){null===(n=q.reject)||void 0===n||n.call(q,e)}return q.promise}().catch(function(e){return j("Port init failed:",e)})):"webkit"===B||B===k||B===E?Me():j("Unknown method"),window.LingXiaBridge=Ye,v({os:m(),send:He}),window.__LX_BRIDGE_INIT_STATE="initialized",M("Init complete")}catch(e){throw delete window.__LX_BRIDGE_INIT_STATE,e}}}function Ze(e){var n=document.createElement("div");return n.textContent=e,n.innerHTML}function en(e){var n=e.failedPath,t=e.reason,r=document.createElement("style");r.textContent="\n* { margin: 0; padding: 0; box-sizing: border-box; }\nbody {\n font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Text', 'Segoe UI', Roboto, sans-serif;\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 100vh;\n background: #f5f5f7;\n color: #1d1d1f;\n padding: 20px;\n -webkit-font-smoothing: antialiased;\n}\n.lx-error {\n text-align: center;\n max-width: 400px;\n}\n.lx-error-code {\n font-size: 120px;\n font-weight: 700;\n color: #d1d1d6;\n line-height: 1;\n letter-spacing: -4px;\n}\n.lx-error-title {\n font-size: 21px;\n font-weight: 600;\n margin: 16px 0 8px;\n color: #1d1d1f;\n}\n.lx-error-desc {\n font-size: 15px;\n color: #86868b;\n line-height: 1.5;\n}\n.lx-error-path {\n display: inline-block;\n margin-top: 20px;\n padding: 10px 16px;\n background: rgba(0,0,0,0.04);\n border-radius: 8px;\n font-family: 'SF Mono', ui-monospace, Menlo, Monaco, monospace;\n font-size: 13px;\n color: #1d1d1f;\n word-break: break-all;\n max-width: 100%;\n}\n@media (prefers-color-scheme: dark) {\n body { background: #000; color: #f5f5f7; }\n .lx-error-code { color: #3a3a3c; }\n .lx-error-title { color: #f5f5f7; }\n .lx-error-desc { color: #86868b; }\n .lx-error-path { background: rgba(255,255,255,0.08); color: #f5f5f7; }\n}\n",document.head.appendChild(r),document.body.innerHTML="",document.body.style.cssText="";var o=document.createElement("div");o.className="lx-error";var i='<div class="lx-error-code">404</div>';i+='<h1 class="lx-error-title">Page Not Found</h1>',i+="<p class=\"lx-error-desc\">The page you're looking for doesn't exist.</p>",n&&(i+='<div class="lx-error-path">'.concat(Ze(n),"</div>")),t&&(i+='<p class="lx-error-desc" style="margin-top:12px">'.concat(Ze(t),"</p>")),o.innerHTML=i,document.body.appendChild(o)}function nn(){var e=window.__LX_RUNTIME_CONFIG;return!(!e||!e.error)}function tn(){var e;return(null===(e=window.__LX_RUNTIME_CONFIG)||void 0===e?void 0:e.error)||null}var rn={handleEvent:function(){return on()}};function on(){if(nn()){var e=tn();e&&en(e)}}function an(){Qe(),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",rn):on()}return an(),e.LingXiaBridge=Ye,e.boot=function(){Qe(),on()},e.bootWhenReady=an,e.channel=function(e,n,t){return Ye.channel(e,n,t)},e.getErrorInfo=tn,e.hasError=nn,e.initBridge=Qe,e.invoke=function(e,n,t){return Ye.invoke(e,n,t)},e.isNativeError=function(e,n){if(!e||"object"!=typeof e)return!1;var t=e;return"string"==typeof t.code&&""!==t.code.trim()&&("string"==typeof t.message&&(void 0===n||t.code===n))},e.notify=function(e,n,t){Je.notify(Ve(e),n,$e(t))},e.renderErrorUI=en,e.stream=function(e,n,t){return Ke(Je.stream(Ve(e),n,$e(t)))},e}({});
|
package/dist/es2020/bridge.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { BRIDGE_ERROR } from "./types";
|
|
2
2
|
import { toBridgeError, toNativeError } from "./invocation";
|
|
3
3
|
import { installNativeComponentCoverageMonitor } from "./nativecomponents/coverage-monitor";
|
|
4
|
-
import { BRIDGE_CONFIG, getCommunicationMethod, getPlatformOS, isAndroid, isHarmony, isIOS, isMacOS, isDesktop, } from "./runtime-env";
|
|
4
|
+
import { BRIDGE_CONFIG, getCommunicationMethod, getPlatformOS, isAndroid, isHarmony, isIOS, isMacOS, isWindows, isDesktop, } from "./runtime-env";
|
|
5
5
|
const NATIVE_HANDLER_NAME = "LingXia";
|
|
6
6
|
const GLOBAL_RECEIVER_NAME = "__LingXiaRecvMessage";
|
|
7
7
|
const DEFAULT_TIMEOUT_MS = 5000;
|
|
@@ -10,6 +10,7 @@ const HANDSHAKE_MAX_RETRIES = 3;
|
|
|
10
10
|
const LOG_PREFIX = "[LX.Bridge]";
|
|
11
11
|
const MESSAGE_PORT_TYPE = "messageport";
|
|
12
12
|
const JS_INTERFACE_TYPE = "jsinterface";
|
|
13
|
+
const WEB_MESSAGE_TYPE = "webmessage";
|
|
13
14
|
const OUTBOX_LIMIT = 256;
|
|
14
15
|
const APPLE_DOWNSTREAM_URL = BRIDGE_CONFIG.appleDownstreamURL;
|
|
15
16
|
const APPLE_RECONNECT_BASE_MS = 200;
|
|
@@ -345,7 +346,8 @@ function postToNative(message) {
|
|
|
345
346
|
messagePort.postMessage(messageString);
|
|
346
347
|
return;
|
|
347
348
|
}
|
|
348
|
-
if (communicationMethod === JS_INTERFACE_TYPE
|
|
349
|
+
if ((communicationMethod === JS_INTERFACE_TYPE ||
|
|
350
|
+
communicationMethod === WEB_MESSAGE_TYPE) &&
|
|
349
351
|
window.LingXiaProxy?.postMessage) {
|
|
350
352
|
window.LingXiaProxy.postMessage(messageString);
|
|
351
353
|
return;
|
|
@@ -496,8 +498,24 @@ function createChannel(id, sendFn, closeFn) {
|
|
|
496
498
|
sendFn(payload, outboundSeq++);
|
|
497
499
|
},
|
|
498
500
|
on(event, listener) {
|
|
499
|
-
if (event === "data")
|
|
501
|
+
if (event === "data") {
|
|
500
502
|
listeners.data.add(listener);
|
|
503
|
+
// Flush data buffered before this listener attached. The host can send
|
|
504
|
+
// ch.data immediately after the open ack, before the consumer (e.g. a
|
|
505
|
+
// wrapped channel's onMessage) attaches its listener; without this those
|
|
506
|
+
// early events would sit in pendingData and never reach the listener.
|
|
507
|
+
if (pendingData.length > 0) {
|
|
508
|
+
const buffered = pendingData.splice(0);
|
|
509
|
+
for (const payload of buffered) {
|
|
510
|
+
try {
|
|
511
|
+
listener(payload);
|
|
512
|
+
}
|
|
513
|
+
catch (e) {
|
|
514
|
+
warn("Channel listener failed:", e);
|
|
515
|
+
}
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
}
|
|
501
519
|
if (event === "close")
|
|
502
520
|
listeners.close.add(listener);
|
|
503
521
|
if (event === "error")
|
|
@@ -620,7 +638,8 @@ function isTransportReady() {
|
|
|
620
638
|
if (useAppleDownstreamTransport())
|
|
621
639
|
return appleDownstreamConnected;
|
|
622
640
|
return (communicationMethod === "webkit" ||
|
|
623
|
-
communicationMethod === JS_INTERFACE_TYPE
|
|
641
|
+
communicationMethod === JS_INTERFACE_TYPE ||
|
|
642
|
+
communicationMethod === WEB_MESSAGE_TYPE);
|
|
624
643
|
}
|
|
625
644
|
function canSendAppMessages() {
|
|
626
645
|
return isTransportReady() && handshakeDone;
|
|
@@ -1437,6 +1456,7 @@ export const LingXiaBridge = {
|
|
|
1437
1456
|
isIOS,
|
|
1438
1457
|
isAndroid,
|
|
1439
1458
|
isMacOS,
|
|
1459
|
+
isWindows,
|
|
1440
1460
|
isDesktop,
|
|
1441
1461
|
getOS: getPlatformOS,
|
|
1442
1462
|
},
|
|
@@ -1584,7 +1604,8 @@ export function initBridge() {
|
|
|
1584
1604
|
getMessagePort().catch((e) => warn("Port init failed:", e));
|
|
1585
1605
|
}
|
|
1586
1606
|
else if (communicationMethod === "webkit" ||
|
|
1587
|
-
communicationMethod === JS_INTERFACE_TYPE
|
|
1607
|
+
communicationMethod === JS_INTERFACE_TYPE ||
|
|
1608
|
+
communicationMethod === WEB_MESSAGE_TYPE) {
|
|
1588
1609
|
startHandshake();
|
|
1589
1610
|
}
|
|
1590
1611
|
else {
|
|
@@ -14,14 +14,19 @@ export function isAndroid() {
|
|
|
14
14
|
export function isMacOS() {
|
|
15
15
|
return BRIDGE_CONFIG.os === 'macOS';
|
|
16
16
|
}
|
|
17
|
+
export function isWindows() {
|
|
18
|
+
return BRIDGE_CONFIG.os === 'Windows';
|
|
19
|
+
}
|
|
17
20
|
export function isDesktop() {
|
|
18
|
-
return isMacOS();
|
|
21
|
+
return isMacOS() || isWindows();
|
|
19
22
|
}
|
|
20
23
|
export function getCommunicationMethod() {
|
|
21
24
|
if (BRIDGE_CONFIG.os === 'iOS' || BRIDGE_CONFIG.os === 'macOS')
|
|
22
25
|
return 'webkit';
|
|
23
26
|
if (BRIDGE_CONFIG.os === 'Harmony')
|
|
24
27
|
return 'messageport';
|
|
28
|
+
if (BRIDGE_CONFIG.os === 'Windows')
|
|
29
|
+
return 'webmessage';
|
|
25
30
|
if (BRIDGE_CONFIG.os === 'Android') {
|
|
26
31
|
if (window.LingXiaProxy?.supportsMessagePort?.())
|
|
27
32
|
return 'messageport';
|
package/dist/es5/bridge.js
CHANGED
|
@@ -84,7 +84,7 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
84
84
|
import { BRIDGE_ERROR } from "./types";
|
|
85
85
|
import { toBridgeError, toNativeError } from "./invocation";
|
|
86
86
|
import { installNativeComponentCoverageMonitor } from "./nativecomponents/coverage-monitor";
|
|
87
|
-
import { BRIDGE_CONFIG, getCommunicationMethod, getPlatformOS, isAndroid, isHarmony, isIOS, isMacOS, isDesktop, } from "./runtime-env";
|
|
87
|
+
import { BRIDGE_CONFIG, getCommunicationMethod, getPlatformOS, isAndroid, isHarmony, isIOS, isMacOS, isWindows, isDesktop, } from "./runtime-env";
|
|
88
88
|
var NATIVE_HANDLER_NAME = "LingXia";
|
|
89
89
|
var GLOBAL_RECEIVER_NAME = "__LingXiaRecvMessage";
|
|
90
90
|
var DEFAULT_TIMEOUT_MS = 5000;
|
|
@@ -93,6 +93,7 @@ var HANDSHAKE_MAX_RETRIES = 3;
|
|
|
93
93
|
var LOG_PREFIX = "[LX.Bridge]";
|
|
94
94
|
var MESSAGE_PORT_TYPE = "messageport";
|
|
95
95
|
var JS_INTERFACE_TYPE = "jsinterface";
|
|
96
|
+
var WEB_MESSAGE_TYPE = "webmessage";
|
|
96
97
|
var OUTBOX_LIMIT = 256;
|
|
97
98
|
var APPLE_DOWNSTREAM_URL = BRIDGE_CONFIG.appleDownstreamURL;
|
|
98
99
|
var APPLE_RECONNECT_BASE_MS = 200;
|
|
@@ -506,7 +507,8 @@ function postToNative(message) {
|
|
|
506
507
|
messagePort.postMessage(messageString);
|
|
507
508
|
return;
|
|
508
509
|
}
|
|
509
|
-
if (communicationMethod === JS_INTERFACE_TYPE
|
|
510
|
+
if ((communicationMethod === JS_INTERFACE_TYPE ||
|
|
511
|
+
communicationMethod === WEB_MESSAGE_TYPE) &&
|
|
510
512
|
((_c = window.LingXiaProxy) === null || _c === void 0 ? void 0 : _c.postMessage)) {
|
|
511
513
|
window.LingXiaProxy.postMessage(messageString);
|
|
512
514
|
return;
|
|
@@ -693,8 +695,35 @@ function createChannel(id, sendFn, closeFn) {
|
|
|
693
695
|
sendFn(payload, outboundSeq++);
|
|
694
696
|
},
|
|
695
697
|
on: function (event, listener) {
|
|
696
|
-
|
|
698
|
+
var e_9, _a;
|
|
699
|
+
if (event === "data") {
|
|
697
700
|
listeners.data.add(listener);
|
|
701
|
+
// Flush data buffered before this listener attached. The host can send
|
|
702
|
+
// ch.data immediately after the open ack, before the consumer (e.g. a
|
|
703
|
+
// wrapped channel's onMessage) attaches its listener; without this those
|
|
704
|
+
// early events would sit in pendingData and never reach the listener.
|
|
705
|
+
if (pendingData.length > 0) {
|
|
706
|
+
var buffered = pendingData.splice(0);
|
|
707
|
+
try {
|
|
708
|
+
for (var buffered_1 = __values(buffered), buffered_1_1 = buffered_1.next(); !buffered_1_1.done; buffered_1_1 = buffered_1.next()) {
|
|
709
|
+
var payload = buffered_1_1.value;
|
|
710
|
+
try {
|
|
711
|
+
listener(payload);
|
|
712
|
+
}
|
|
713
|
+
catch (e) {
|
|
714
|
+
warn("Channel listener failed:", e);
|
|
715
|
+
}
|
|
716
|
+
}
|
|
717
|
+
}
|
|
718
|
+
catch (e_9_1) { e_9 = { error: e_9_1 }; }
|
|
719
|
+
finally {
|
|
720
|
+
try {
|
|
721
|
+
if (buffered_1_1 && !buffered_1_1.done && (_a = buffered_1.return)) _a.call(buffered_1);
|
|
722
|
+
}
|
|
723
|
+
finally { if (e_9) throw e_9.error; }
|
|
724
|
+
}
|
|
725
|
+
}
|
|
726
|
+
}
|
|
698
727
|
if (event === "close")
|
|
699
728
|
listeners.close.add(listener);
|
|
700
729
|
if (event === "error")
|
|
@@ -729,7 +758,7 @@ function createChannel(id, sendFn, closeFn) {
|
|
|
729
758
|
channel._emitClose(code, reason);
|
|
730
759
|
},
|
|
731
760
|
_a._emitData = function (payload) {
|
|
732
|
-
var
|
|
761
|
+
var e_10, _a;
|
|
733
762
|
if (!open)
|
|
734
763
|
return;
|
|
735
764
|
if (pendingReads.length > 0) {
|
|
@@ -749,16 +778,16 @@ function createChannel(id, sendFn, closeFn) {
|
|
|
749
778
|
}
|
|
750
779
|
}
|
|
751
780
|
}
|
|
752
|
-
catch (
|
|
781
|
+
catch (e_10_1) { e_10 = { error: e_10_1 }; }
|
|
753
782
|
finally {
|
|
754
783
|
try {
|
|
755
784
|
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
756
785
|
}
|
|
757
|
-
finally { if (
|
|
786
|
+
finally { if (e_10) throw e_10.error; }
|
|
758
787
|
}
|
|
759
788
|
},
|
|
760
789
|
_a._emitClose = function (code, reason) {
|
|
761
|
-
var
|
|
790
|
+
var e_11, _a;
|
|
762
791
|
closed = true;
|
|
763
792
|
while (pendingReads.length > 0) {
|
|
764
793
|
pendingReads.shift().resolve({ done: true, value: undefined });
|
|
@@ -774,16 +803,16 @@ function createChannel(id, sendFn, closeFn) {
|
|
|
774
803
|
}
|
|
775
804
|
}
|
|
776
805
|
}
|
|
777
|
-
catch (
|
|
806
|
+
catch (e_11_1) { e_11 = { error: e_11_1 }; }
|
|
778
807
|
finally {
|
|
779
808
|
try {
|
|
780
809
|
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
781
810
|
}
|
|
782
|
-
finally { if (
|
|
811
|
+
finally { if (e_11) throw e_11.error; }
|
|
783
812
|
}
|
|
784
813
|
},
|
|
785
814
|
_a._reject = function (err) {
|
|
786
|
-
var
|
|
815
|
+
var e_12, _a;
|
|
787
816
|
closed = true;
|
|
788
817
|
while (pendingReads.length > 0) {
|
|
789
818
|
pendingReads.shift().reject(err);
|
|
@@ -799,12 +828,12 @@ function createChannel(id, sendFn, closeFn) {
|
|
|
799
828
|
}
|
|
800
829
|
}
|
|
801
830
|
}
|
|
802
|
-
catch (
|
|
831
|
+
catch (e_12_1) { e_12 = { error: e_12_1 }; }
|
|
803
832
|
finally {
|
|
804
833
|
try {
|
|
805
834
|
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
806
835
|
}
|
|
807
|
-
finally { if (
|
|
836
|
+
finally { if (e_12) throw e_12.error; }
|
|
808
837
|
}
|
|
809
838
|
},
|
|
810
839
|
_a._markOpen = function () {
|
|
@@ -851,7 +880,8 @@ function isTransportReady() {
|
|
|
851
880
|
if (useAppleDownstreamTransport())
|
|
852
881
|
return appleDownstreamConnected;
|
|
853
882
|
return (communicationMethod === "webkit" ||
|
|
854
|
-
communicationMethod === JS_INTERFACE_TYPE
|
|
883
|
+
communicationMethod === JS_INTERFACE_TYPE ||
|
|
884
|
+
communicationMethod === WEB_MESSAGE_TYPE);
|
|
855
885
|
}
|
|
856
886
|
function canSendAppMessages() {
|
|
857
887
|
return isTransportReady() && handshakeDone;
|
|
@@ -1000,7 +1030,7 @@ function startHandshake() {
|
|
|
1000
1030
|
helloSent = true;
|
|
1001
1031
|
postToNative(hello);
|
|
1002
1032
|
handshakeTimer = setTimeout(function () {
|
|
1003
|
-
var
|
|
1033
|
+
var e_13, _a;
|
|
1004
1034
|
if (handshakeDone)
|
|
1005
1035
|
return;
|
|
1006
1036
|
handshakeRetryCount++;
|
|
@@ -1032,12 +1062,12 @@ function startHandshake() {
|
|
|
1032
1062
|
});
|
|
1033
1063
|
}
|
|
1034
1064
|
}
|
|
1035
|
-
catch (
|
|
1065
|
+
catch (e_13_1) { e_13 = { error: e_13_1 }; }
|
|
1036
1066
|
finally {
|
|
1037
1067
|
try {
|
|
1038
1068
|
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
1039
1069
|
}
|
|
1040
|
-
finally { if (
|
|
1070
|
+
finally { if (e_13) throw e_13.error; }
|
|
1041
1071
|
}
|
|
1042
1072
|
}
|
|
1043
1073
|
}, HANDSHAKE_TIMEOUT_MS);
|
|
@@ -1088,7 +1118,7 @@ function getContainerAndKey(root, pointer, autoCreate) {
|
|
|
1088
1118
|
return { container: current, key: segments[segments.length - 1] };
|
|
1089
1119
|
}
|
|
1090
1120
|
function applyJsonPatch(target, ops) {
|
|
1091
|
-
var
|
|
1121
|
+
var e_14, _a, e_15, _b;
|
|
1092
1122
|
try {
|
|
1093
1123
|
for (var ops_1 = __values(ops), ops_1_1 = ops_1.next(); !ops_1_1.done; ops_1_1 = ops_1.next()) {
|
|
1094
1124
|
var op = ops_1_1.value;
|
|
@@ -1096,17 +1126,17 @@ function applyJsonPatch(target, ops) {
|
|
|
1096
1126
|
var _c = getContainerAndKey(target, op.path, autoCreate), container = _c.container, key = _c.key;
|
|
1097
1127
|
if (key === "$root") {
|
|
1098
1128
|
try {
|
|
1099
|
-
for (var _d = (
|
|
1129
|
+
for (var _d = (e_15 = void 0, __values(Object.keys(target))), _e = _d.next(); !_e.done; _e = _d.next()) {
|
|
1100
1130
|
var k = _e.value;
|
|
1101
1131
|
delete target[k];
|
|
1102
1132
|
}
|
|
1103
1133
|
}
|
|
1104
|
-
catch (
|
|
1134
|
+
catch (e_15_1) { e_15 = { error: e_15_1 }; }
|
|
1105
1135
|
finally {
|
|
1106
1136
|
try {
|
|
1107
1137
|
if (_e && !_e.done && (_b = _d.return)) _b.call(_d);
|
|
1108
1138
|
}
|
|
1109
|
-
finally { if (
|
|
1139
|
+
finally { if (e_15) throw e_15.error; }
|
|
1110
1140
|
}
|
|
1111
1141
|
if (op.op !== "remove") {
|
|
1112
1142
|
var v = op.value;
|
|
@@ -1136,12 +1166,12 @@ function applyJsonPatch(target, ops) {
|
|
|
1136
1166
|
obj[key] = op.value;
|
|
1137
1167
|
}
|
|
1138
1168
|
}
|
|
1139
|
-
catch (
|
|
1169
|
+
catch (e_14_1) { e_14 = { error: e_14_1 }; }
|
|
1140
1170
|
finally {
|
|
1141
1171
|
try {
|
|
1142
1172
|
if (ops_1_1 && !ops_1_1.done && (_a = ops_1.return)) _a.call(ops_1);
|
|
1143
1173
|
}
|
|
1144
|
-
finally { if (
|
|
1174
|
+
finally { if (e_14) throw e_14.error; }
|
|
1145
1175
|
}
|
|
1146
1176
|
}
|
|
1147
1177
|
function notifyStateSubscribers(initial) {
|
|
@@ -1199,7 +1229,7 @@ function applySnapshotFromResult(result) {
|
|
|
1199
1229
|
return true;
|
|
1200
1230
|
}
|
|
1201
1231
|
function handleIncomingMessage(msg) {
|
|
1202
|
-
var
|
|
1232
|
+
var e_16, _a;
|
|
1203
1233
|
var _b, _c;
|
|
1204
1234
|
// Handle native component events (from Android NativeBridge.sendEventToView)
|
|
1205
1235
|
if (msg && typeof msg === "object") {
|
|
@@ -1246,12 +1276,12 @@ function handleIncomingMessage(msg) {
|
|
|
1246
1276
|
hostMethodKinds[k] = v;
|
|
1247
1277
|
}
|
|
1248
1278
|
}
|
|
1249
|
-
catch (
|
|
1279
|
+
catch (e_16_1) { e_16 = { error: e_16_1 }; }
|
|
1250
1280
|
finally {
|
|
1251
1281
|
try {
|
|
1252
1282
|
if (_e && !_e.done && (_a = _d.return)) _a.call(_d);
|
|
1253
1283
|
}
|
|
1254
|
-
finally { if (
|
|
1284
|
+
finally { if (e_16) throw e_16.error; }
|
|
1255
1285
|
}
|
|
1256
1286
|
}
|
|
1257
1287
|
if (isDebugEnabled("proto"))
|
|
@@ -1720,6 +1750,7 @@ export var LingXiaBridge = {
|
|
|
1720
1750
|
isIOS: isIOS,
|
|
1721
1751
|
isAndroid: isAndroid,
|
|
1722
1752
|
isMacOS: isMacOS,
|
|
1753
|
+
isWindows: isWindows,
|
|
1723
1754
|
isDesktop: isDesktop,
|
|
1724
1755
|
getOS: getPlatformOS,
|
|
1725
1756
|
},
|
|
@@ -1778,23 +1809,23 @@ function wrapNativeStream(handle) {
|
|
|
1778
1809
|
var eventListeners = new Set();
|
|
1779
1810
|
var errorListeners = new Set();
|
|
1780
1811
|
handle.on("data", function (event) {
|
|
1781
|
-
var
|
|
1812
|
+
var e_17, _a;
|
|
1782
1813
|
try {
|
|
1783
1814
|
for (var eventListeners_1 = __values(eventListeners), eventListeners_1_1 = eventListeners_1.next(); !eventListeners_1_1.done; eventListeners_1_1 = eventListeners_1.next()) {
|
|
1784
1815
|
var listener = eventListeners_1_1.value;
|
|
1785
1816
|
listener(event);
|
|
1786
1817
|
}
|
|
1787
1818
|
}
|
|
1788
|
-
catch (
|
|
1819
|
+
catch (e_17_1) { e_17 = { error: e_17_1 }; }
|
|
1789
1820
|
finally {
|
|
1790
1821
|
try {
|
|
1791
1822
|
if (eventListeners_1_1 && !eventListeners_1_1.done && (_a = eventListeners_1.return)) _a.call(eventListeners_1);
|
|
1792
1823
|
}
|
|
1793
|
-
finally { if (
|
|
1824
|
+
finally { if (e_17) throw e_17.error; }
|
|
1794
1825
|
}
|
|
1795
1826
|
});
|
|
1796
1827
|
handle.on("error", function (error) {
|
|
1797
|
-
var
|
|
1828
|
+
var e_18, _a;
|
|
1798
1829
|
var nativeError = toNativeError(error);
|
|
1799
1830
|
try {
|
|
1800
1831
|
for (var errorListeners_1 = __values(errorListeners), errorListeners_1_1 = errorListeners_1.next(); !errorListeners_1_1.done; errorListeners_1_1 = errorListeners_1.next()) {
|
|
@@ -1802,12 +1833,12 @@ function wrapNativeStream(handle) {
|
|
|
1802
1833
|
listener(nativeError);
|
|
1803
1834
|
}
|
|
1804
1835
|
}
|
|
1805
|
-
catch (
|
|
1836
|
+
catch (e_18_1) { e_18 = { error: e_18_1 }; }
|
|
1806
1837
|
finally {
|
|
1807
1838
|
try {
|
|
1808
1839
|
if (errorListeners_1_1 && !errorListeners_1_1.done && (_a = errorListeners_1.return)) _a.call(errorListeners_1);
|
|
1809
1840
|
}
|
|
1810
|
-
finally { if (
|
|
1841
|
+
finally { if (e_18) throw e_18.error; }
|
|
1811
1842
|
}
|
|
1812
1843
|
});
|
|
1813
1844
|
return {
|
|
@@ -1833,23 +1864,23 @@ function wrapNativeChannel(channel) {
|
|
|
1833
1864
|
var messageListeners = new Set();
|
|
1834
1865
|
var closeListeners = new Set();
|
|
1835
1866
|
channel.on("data", function (message) {
|
|
1836
|
-
var
|
|
1867
|
+
var e_19, _a;
|
|
1837
1868
|
try {
|
|
1838
1869
|
for (var messageListeners_1 = __values(messageListeners), messageListeners_1_1 = messageListeners_1.next(); !messageListeners_1_1.done; messageListeners_1_1 = messageListeners_1.next()) {
|
|
1839
1870
|
var listener = messageListeners_1_1.value;
|
|
1840
1871
|
listener(message);
|
|
1841
1872
|
}
|
|
1842
1873
|
}
|
|
1843
|
-
catch (
|
|
1874
|
+
catch (e_19_1) { e_19 = { error: e_19_1 }; }
|
|
1844
1875
|
finally {
|
|
1845
1876
|
try {
|
|
1846
1877
|
if (messageListeners_1_1 && !messageListeners_1_1.done && (_a = messageListeners_1.return)) _a.call(messageListeners_1);
|
|
1847
1878
|
}
|
|
1848
|
-
finally { if (
|
|
1879
|
+
finally { if (e_19) throw e_19.error; }
|
|
1849
1880
|
}
|
|
1850
1881
|
});
|
|
1851
1882
|
channel.on("close", function (code, reason) {
|
|
1852
|
-
var
|
|
1883
|
+
var e_20, _a;
|
|
1853
1884
|
var event = { code: code, reason: reason };
|
|
1854
1885
|
try {
|
|
1855
1886
|
for (var closeListeners_1 = __values(closeListeners), closeListeners_1_1 = closeListeners_1.next(); !closeListeners_1_1.done; closeListeners_1_1 = closeListeners_1.next()) {
|
|
@@ -1857,12 +1888,12 @@ function wrapNativeChannel(channel) {
|
|
|
1857
1888
|
listener(event);
|
|
1858
1889
|
}
|
|
1859
1890
|
}
|
|
1860
|
-
catch (
|
|
1891
|
+
catch (e_20_1) { e_20 = { error: e_20_1 }; }
|
|
1861
1892
|
finally {
|
|
1862
1893
|
try {
|
|
1863
1894
|
if (closeListeners_1_1 && !closeListeners_1_1.done && (_a = closeListeners_1.return)) _a.call(closeListeners_1);
|
|
1864
1895
|
}
|
|
1865
|
-
finally { if (
|
|
1896
|
+
finally { if (e_20) throw e_20.error; }
|
|
1866
1897
|
}
|
|
1867
1898
|
});
|
|
1868
1899
|
return {
|
|
@@ -1915,7 +1946,8 @@ export function initBridge() {
|
|
|
1915
1946
|
getMessagePort().catch(function (e) { return warn("Port init failed:", e); });
|
|
1916
1947
|
}
|
|
1917
1948
|
else if (communicationMethod === "webkit" ||
|
|
1918
|
-
communicationMethod === JS_INTERFACE_TYPE
|
|
1949
|
+
communicationMethod === JS_INTERFACE_TYPE ||
|
|
1950
|
+
communicationMethod === WEB_MESSAGE_TYPE) {
|
|
1919
1951
|
startHandshake();
|
|
1920
1952
|
}
|
|
1921
1953
|
else {
|
package/dist/es5/runtime-env.js
CHANGED
|
@@ -14,8 +14,11 @@ export function isAndroid() {
|
|
|
14
14
|
export function isMacOS() {
|
|
15
15
|
return BRIDGE_CONFIG.os === 'macOS';
|
|
16
16
|
}
|
|
17
|
+
export function isWindows() {
|
|
18
|
+
return BRIDGE_CONFIG.os === 'Windows';
|
|
19
|
+
}
|
|
17
20
|
export function isDesktop() {
|
|
18
|
-
return isMacOS();
|
|
21
|
+
return isMacOS() || isWindows();
|
|
19
22
|
}
|
|
20
23
|
export function getCommunicationMethod() {
|
|
21
24
|
var _a, _b;
|
|
@@ -23,6 +26,8 @@ export function getCommunicationMethod() {
|
|
|
23
26
|
return 'webkit';
|
|
24
27
|
if (BRIDGE_CONFIG.os === 'Harmony')
|
|
25
28
|
return 'messageport';
|
|
29
|
+
if (BRIDGE_CONFIG.os === 'Windows')
|
|
30
|
+
return 'webmessage';
|
|
26
31
|
if (BRIDGE_CONFIG.os === 'Android') {
|
|
27
32
|
if ((_b = (_a = window.LingXiaProxy) === null || _a === void 0 ? void 0 : _a.supportsMessagePort) === null || _b === void 0 ? void 0 : _b.call(_a))
|
|
28
33
|
return 'messageport';
|
package/dist/runtime-env.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { BridgeConfig } from './types';
|
|
2
|
-
export type CommunicationMethod = 'messageport' | 'jsinterface' | 'webkit' | 'unknown';
|
|
2
|
+
export type CommunicationMethod = 'messageport' | 'jsinterface' | 'webmessage' | 'webkit' | 'unknown';
|
|
3
3
|
export type PlatformOS = NonNullable<BridgeConfig['os']> | 'unknown';
|
|
4
4
|
export declare const BRIDGE_CONFIG: BridgeConfig;
|
|
5
5
|
export declare function getPlatformOS(): PlatformOS;
|
|
@@ -7,5 +7,6 @@ export declare function isHarmony(): boolean;
|
|
|
7
7
|
export declare function isIOS(): boolean;
|
|
8
8
|
export declare function isAndroid(): boolean;
|
|
9
9
|
export declare function isMacOS(): boolean;
|
|
10
|
+
export declare function isWindows(): boolean;
|
|
10
11
|
export declare function isDesktop(): boolean;
|
|
11
12
|
export declare function getCommunicationMethod(): CommunicationMethod;
|
package/dist/types.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export interface BridgeConfig {
|
|
2
|
-
os?: 'Harmony' | 'iOS' | 'Android' | 'macOS';
|
|
2
|
+
os?: 'Harmony' | 'iOS' | 'Android' | 'macOS' | 'Windows';
|
|
3
3
|
nonce?: string;
|
|
4
4
|
appleDownstreamURL?: string;
|
|
5
5
|
}
|
|
@@ -159,6 +159,7 @@ export interface LingXiaBridgeInterface {
|
|
|
159
159
|
isIOS(): boolean;
|
|
160
160
|
isAndroid(): boolean;
|
|
161
161
|
isMacOS(): boolean;
|
|
162
|
+
isWindows(): boolean;
|
|
162
163
|
isDesktop(): boolean;
|
|
163
164
|
getOS(): string;
|
|
164
165
|
};
|
package/package.json
CHANGED
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lingxia/bridge",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "LingXia Web Runtime - Bridge, boot, and error handling for WebView",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "https://github.com/LingXia-Dev/LingXia.git",
|
|
9
|
+
"directory": "packages/lingxia-bridge"
|
|
10
|
+
},
|
|
6
11
|
"type": "module",
|
|
7
12
|
"main": "dist/es2020/index.js",
|
|
8
13
|
"types": "dist/index.d.ts",
|
|
@@ -35,7 +40,7 @@
|
|
|
35
40
|
"build:modules:es5": "tsc -p tsconfig.modules.legacy.json",
|
|
36
41
|
"build:types": "tsc -p tsconfig.json --emitDeclarationOnly",
|
|
37
42
|
"dev": "rolldown -c -w",
|
|
38
|
-
"clean": "
|
|
43
|
+
"clean": "node -e \"fs.rmSync('dist',{recursive:true,force:true})\"",
|
|
39
44
|
"prepublishOnly": "npm run build"
|
|
40
45
|
},
|
|
41
46
|
"devDependencies": {
|