@neuxnet/neux-cli 0.2.3

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.
Files changed (73) hide show
  1. package/README.md +438 -0
  2. package/README.zh-CN.md +554 -0
  3. package/assets/container/assets/index.css +1 -0
  4. package/assets/container/assets/index.js +137 -0
  5. package/assets/container/assets/pageFrame.css +1 -0
  6. package/assets/container/assets/pageFrame.js +56 -0
  7. package/assets/container/assets/service.js +6 -0
  8. package/assets/container/assets/vconsole.js +931 -0
  9. package/assets/container/favicon.ico +0 -0
  10. package/assets/container/images/icon-arrow.png +0 -0
  11. package/assets/container/images/mini-action-white.png +0 -0
  12. package/assets/container/images/mini-action.png +0 -0
  13. package/assets/container/images/mini-arrow-left-white.png +0 -0
  14. package/assets/container/images/mini-arrow-left.jpg +0 -0
  15. package/assets/container/images/mini-arrow-left.png +0 -0
  16. package/assets/container/images/mini-close-white.png +0 -0
  17. package/assets/container/images/mini-close.png +0 -0
  18. package/assets/container/images/more.png +0 -0
  19. package/assets/container/images/search.jpg +0 -0
  20. package/assets/container/index.html +1 -0
  21. package/assets/container/pageFrame.html +1 -0
  22. package/assets/init/tabbar/home-active.png +0 -0
  23. package/assets/init/tabbar/home.png +0 -0
  24. package/assets/init/tabbar/list-active.png +0 -0
  25. package/assets/init/tabbar/list.png +0 -0
  26. package/assets/init/types/neux-api.d.ts +1402 -0
  27. package/package.json +68 -0
  28. package/scripts/generate-init-types.js +210 -0
  29. package/scripts/sync-compiler.js +22 -0
  30. package/scripts/sync-web-container.js +34 -0
  31. package/src/bin/cli.js +646 -0
  32. package/src/core/brand.js +11 -0
  33. package/src/core/compiler.js +305 -0
  34. package/src/core/defaults.js +12 -0
  35. package/src/core/dev.js +15 -0
  36. package/src/core/errors.js +17 -0
  37. package/src/core/fs.js +66 -0
  38. package/src/core/i18n.js +37 -0
  39. package/src/core/init.js +866 -0
  40. package/src/core/lifecycle.js +32 -0
  41. package/src/core/manifest.js +72 -0
  42. package/src/core/pack.js +156 -0
  43. package/src/core/package-info.js +27 -0
  44. package/src/core/preview-server.js +123 -0
  45. package/src/core/project.js +101 -0
  46. package/src/core/prompts.js +71 -0
  47. package/src/core/proxy-security.js +141 -0
  48. package/src/core/proxy.js +156 -0
  49. package/src/core/qr.js +41 -0
  50. package/src/core/terminal-qr.js +72 -0
  51. package/src/core/update.js +278 -0
  52. package/src/core/watch.js +113 -0
  53. package/src/core/web.js +649 -0
  54. package/src/core/zip.js +120 -0
  55. package/src/index.js +20 -0
  56. package/src/providers/service-client.js +149 -0
  57. package/src/providers/service-config.js +264 -0
  58. package/src/providers/service.js +146 -0
  59. package/src/providers/upload.js +112 -0
  60. package/vendor/dimina-compiler/bin/index.cjs +265 -0
  61. package/vendor/dimina-compiler/bin/index.js +263 -0
  62. package/vendor/dimina-compiler/compatibility-B-DoZtUX.cjs +395 -0
  63. package/vendor/dimina-compiler/compatibility-Cl3-DO6V.js +366 -0
  64. package/vendor/dimina-compiler/core/logic-compiler.cjs +378 -0
  65. package/vendor/dimina-compiler/core/logic-compiler.js +374 -0
  66. package/vendor/dimina-compiler/core/style-compiler.cjs +392 -0
  67. package/vendor/dimina-compiler/core/style-compiler.js +377 -0
  68. package/vendor/dimina-compiler/core/view-compiler.cjs +1601 -0
  69. package/vendor/dimina-compiler/core/view-compiler.js +1582 -0
  70. package/vendor/dimina-compiler/index.cjs +762 -0
  71. package/vendor/dimina-compiler/index.js +751 -0
  72. package/vendor/dimina-compiler/sourcemap-BgtIgqkC.cjs +1377 -0
  73. package/vendor/dimina-compiler/sourcemap-CKjhV9h7.js +1135 -0
@@ -0,0 +1,137 @@
1
+ var e=(e=0)=>t=>`\u001B[${t+e}m`,t=(e=0)=>t=>`\u001B[${38+e};5;${t}m`,n=(e=0)=>(t,n,r)=>`\u001B[${38+e};2;${t};${n};${r}m`,r={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};Object.keys(r.modifier);var i=Object.keys(r.color),a=Object.keys(r.bgColor);[...i,...a];function o(){let i=new Map;for(let[e,t]of Object.entries(r)){for(let[e,n]of Object.entries(t))r[e]={open:`\u001B[${n[0]}m`,close:`\u001B[${n[1]}m`},t[e]=r[e],i.set(n[0],n[1]);Object.defineProperty(r,e,{value:t,enumerable:!1})}return Object.defineProperty(r,"codes",{value:i,enumerable:!1}),r.color.close=`\x1B[39m`,r.bgColor.close=`\x1B[49m`,r.color.ansi=e(),r.color.ansi256=t(),r.color.ansi16m=n(),r.bgColor.ansi=e(10),r.bgColor.ansi256=t(10),r.bgColor.ansi16m=n(10),Object.defineProperties(r,{rgbToAnsi256:{value(e,t,n){return e===t&&t===n?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(t/255*5)+Math.round(n/255*5)},enumerable:!1},hexToRgb:{value(e){let t=/[a-f\d]{6}|[a-f\d]{3}/i.exec(e.toString(16));if(!t)return[0,0,0];let[n]=t;n.length===3&&(n=[...n].map(e=>e+e).join(``));let r=Number.parseInt(n,16);return[r>>16&255,r>>8&255,r&255]},enumerable:!1},hexToAnsi256:{value:e=>r.rgbToAnsi256(...r.hexToRgb(e)),enumerable:!1},ansi256ToAnsi:{value(e){if(e<8)return 30+e;if(e<16)return 90+(e-8);let t,n,r;if(e>=232)t=((e-232)*10+8)/255,n=t,r=t;else{e-=16;let i=e%36;t=Math.floor(e/36)/5,n=Math.floor(i/6)/5,r=i%6/5}let i=Math.max(t,n,r)*2;if(i===0)return 30;let a=30+(Math.round(r)<<2|Math.round(n)<<1|Math.round(t));return i===2&&(a+=60),a},enumerable:!1},rgbToAnsi:{value:(e,t,n)=>r.ansi256ToAnsi(r.rgbToAnsi256(e,t,n)),enumerable:!1},hexToAnsi:{value:e=>r.ansi256ToAnsi(r.hexToAnsi256(e)),enumerable:!1}}),r}var s=o(),c=(()=>{if(!(`navigator`in globalThis))return 0;if(globalThis.navigator.userAgentData){let e=navigator.userAgentData.brands.find(({brand:e})=>e===`Chromium`);if(e&&e.version>93)return 3}return+!!/\b(Chrome|Chromium)\//.test(globalThis.navigator.userAgent)})(),l=c!==0&&{level:c,hasBasic:!0,has256:c>=2,has16m:c>=3},u={stdout:l,stderr:l};function d(e,t,n){let r=e.indexOf(t);if(r===-1)return e;let i=t.length,a=0,o=``;do o+=e.slice(a,r)+t+n,a=r+i,r=e.indexOf(t,a);while(r!==-1);return o+=e.slice(a),o}function f(e,t,n,r){let i=0,a=``;do{let o=e[r-1]===`\r`;a+=e.slice(i,o?r-1:r)+t+(o?`\r
2
+ `:`
3
+ `)+n,i=r+1,r=e.indexOf(`
4
+ `,i)}while(r!==-1);return a+=e.slice(i),a}var{stdout:p,stderr:m}=u,h=Symbol(`GENERATOR`),g=Symbol(`STYLER`),_=Symbol(`IS_EMPTY`),v=[`ansi`,`ansi`,`ansi256`,`ansi16m`],y=Object.create(null),b=(e,t={})=>{if(t.level&&!(Number.isInteger(t.level)&&t.level>=0&&t.level<=3))throw Error("The `level` option should be an integer from 0 to 3");let n=p?p.level:0;e.level=t.level===void 0?n:t.level},x=e=>{let t=(...e)=>e.join(` `);return b(t,e),Object.setPrototypeOf(t,S.prototype),t};function S(e){return x(e)}Object.setPrototypeOf(S.prototype,Function.prototype);for(let[e,t]of Object.entries(s))y[e]={get(){let n=T(this,w(t.open,t.close,this[g]),this[_]);return Object.defineProperty(this,e,{value:n}),n}};y.visible={get(){let e=T(this,this[g],!0);return Object.defineProperty(this,"visible",{value:e}),e}};var C=(e,t,n,...r)=>e===`rgb`?t===`ansi16m`?s[n].ansi16m(...r):t===`ansi256`?s[n].ansi256(s.rgbToAnsi256(...r)):s[n].ansi(s.rgbToAnsi(...r)):e===`hex`?C(`rgb`,t,n,...s.hexToRgb(...r)):s[n][e](...r);for(let e of[`rgb`,`hex`,`ansi256`]){y[e]={get(){let{level:t}=this;return function(...n){let r=w(C(e,v[t],`color`,...n),s.color.close,this[g]);return T(this,r,this[_])}}};let t=`bg`+e[0].toUpperCase()+e.slice(1);y[t]={get(){let{level:t}=this;return function(...n){let r=w(C(e,v[t],`bgColor`,...n),s.bgColor.close,this[g]);return T(this,r,this[_])}}}}var ee=Object.defineProperties(()=>{},{...y,level:{enumerable:!0,get(){return this[h].level},set(e){this[h].level=e}}}),w=(e,t,n)=>{let r,i;return n===void 0?(r=e,i=t):(r=n.openAll+e,i=t+n.closeAll),{open:e,close:t,openAll:r,closeAll:i,parent:n}},T=(e,t,n)=>{let r=(...e)=>E(r,e.length===1?``+e[0]:e.join(` `));return Object.setPrototypeOf(r,ee),r[h]=e,r[g]=t,r[_]=n,r},E=(e,t)=>{if(e.level<=0||!t)return e[_]?``:t;let n=e[g];if(n===void 0)return t;let{openAll:r,closeAll:i}=n;if(t.includes(`\x1B`))for(;n!==void 0;)t=d(t,n.close,n.open),n=n.parent;let a=t.indexOf(`
5
+ `);return a!==-1&&(t=f(t,i,r,a)),r+t+i};Object.defineProperties(S.prototype,y);var te=S();S({level:m?m.level:0});function D(e){return{all:e||=new Map,on:function(t,n){var r=e.get(t);r?r.push(n):e.set(t,[n])},off:function(t,n){var r=e.get(t);r&&(n?r.splice(r.indexOf(n)>>>0,1):e.set(t,[]))},emit:function(t,n){var r=e.get(t);r&&r.slice().map(function(e){e(n)}),(r=e.get(`*`))&&r.slice().map(function(e){e(t,n)})}}}function O(){return Math.random().toString(36).slice(2,7)}function k(e){return new Promise(t=>{setTimeout(()=>{t()},e)})}function A(e){let t=e.split(`?`),n=t[0].replace(/^\/+/,``),r=t[1],i={query:{},pagePath:n};return r&&r.split(`&`).forEach(e=>{let t=e.split(`=`)[0],n=e.split(`=`)[1];i.query[t]=n}),i}function j(e,t){let n=e;for(;n?.classList&&!n.classList.contains(t);)n=n.parentNode;return n===document?null:n}function M(e){return new Promise((t,n)=>{fetch(`${e}`).then(e=>e.text()).then(e=>{t(e)}).catch(()=>{t(null)})})}function N(e,t){let n={},r=e.window||{},i=t||{};return n.navigationBarTitleText=i.navigationBarTitleText||r.navigationBarTitleText||``,n.navigationBarBackgroundColor=i.navigationBarBackgroundColor||r.navigationBarBackgroundColor||`#000`,n.navigationBarTextStyle=i.navigationBarTextStyle||r.navigationBarTextStyle||`white`,n.backgroundColor=i.backgroundColor||r.backgroundColor||`#fff`,n.navigationStyle=i.navigationStyle||r.navigationStyle||`default`,n.homeButton=i.homeButton??r.homeButton??!1,n.usingComponents=i.usingComponents||{},n.enablePullDownRefresh=i.enablePullDownRefresh??r.enablePullDownRefresh??!1,n.onReachBottomDistance=i.onReachBottomDistance??r.onReachBottomDistance??50,n}var ne=`<div class="dimina-native-webview">
6
+ <!-- 导航区域 -->
7
+ <div class="dimina-native-webview__navigation">
8
+ <div class="dimina-native-webview__navigation-content">
9
+ <div class="dimina-native-webview__navigation-left-btn"></div>
10
+ <div class="dimina-native-webview__navigation-home-btn"></div>
11
+ <h2 class="dimina-native-webview__navigation-title"></h2>
12
+ <div class="dimina-native-webview__navigation-loading" hidden></div>
13
+ </div>
14
+ </div>
15
+
16
+ <!-- iframe -->
17
+ <div class="dimina-native-webview__body">
18
+ <div class="dimina-native-webview__root">
19
+ <iframe class="dimina-native-webview__window" title="pageFrame"></iframe>
20
+ </div>
21
+ </div>
22
+ </div>
23
+ `,re=class{constructor(e){this.opts=e,this.id=`webview_${O()}`,this.el=document.createElement(`div`),this.el.classList.add(`dimina-native-view`),this.el.innerHTML=ne,this.setInitialStyle(),this.iframe=this.el.querySelector(`.dimina-native-webview__window`);let t=new URLSearchParams;e.enableDebug&&t.set(`vconsole`,`1`),e.debugSessionId&&t.set(`debugSessionId`,e.debugSessionId);let n=t.toString()?`?${t.toString()}`:``;this.iframe.src=`/pageFrame.html${n}`,this.iframe.name=this.id,this.event=D(),this.bindBackEvent(),this.bindHomeEvent()}async init(e){await this.frameLoaded();let t=window.frames[this.iframe.name];this.applyResourceBaseUrl(t.document),t.DiminaRenderBridge.invoke=e=>{this.event.emit(`invoke`,e)},t.DiminaRenderBridge.publish=e=>{this.event.emit(`publish`,e)},e?.()}applyResourceBaseUrl(e){if(!this.opts.resourceBaseUrl)return;let t=e.createElement(`base`);t.href=this.opts.resourceBaseUrl,e.head.prepend(t)}invoke(e){this.event.on(`invoke`,e)}publish(e){this.event.on(`publish`,e)}postMessage(e){window.frames[this.iframe.name].DiminaRenderBridge.onMessage(e)}bindBackEvent(){let e=this.el.querySelector(`.dimina-native-webview__navigation-left-btn`);e.onclick=()=>{this.parent.parent.navigateBack()}}bindHomeEvent(){let e=this.el.querySelector(`.dimina-native-webview__navigation-home-btn`);e.onclick=()=>{this.parent.parent.navigateHome()}}setHomeButtonVisible(e){let t=this.el.querySelector(`.dimina-native-webview__navigation-home-btn`);t.style.display=e?`block`:`none`}frameLoaded(){return new Promise(e=>{this.iframe.onload=()=>{e()}})}setInitialStyle(){this.applyPageStyle(this.opts.configInfo,{isRoot:this.opts.isRoot,showHomeButton:this.opts.showHomeButton===!0})}applyPageStyle(e,{isRoot:t,showHomeButton:n}){let r=this.el.querySelector(`.dimina-native-webview`),i=this.el.querySelector(`.dimina-native-webview__navigation-title`),a=this.el.querySelector(`.dimina-native-webview__navigation`),o=this.el.querySelector(`.dimina-native-webview__navigation-left-btn`),s=this.el.querySelector(`.dimina-native-webview__root`);o.style.display=t?`none`:`block`,this.setHomeButtonVisible(n===!0),this.el.querySelector(`.dimina-native-webview__navigation-home-btn`).classList.toggle(`dimina-native-webview__navigation-home-btn--after-back`,!t&&n===!0),a.classList.remove(`dimina-native-webview__navigation--white`,`dimina-native-webview__navigation--black`),a.classList.add(e.navigationBarTextStyle===`white`?`dimina-native-webview__navigation--white`:`dimina-native-webview__navigation--black`),r.classList.toggle(`dimina-native-webview--custom-nav`,e.navigationStyle===`custom`),s.style.backgroundColor=e.backgroundColor,a.style.backgroundColor=e.navigationBarBackgroundColor,i.textContent=e.navigationBarTitleText}},ie=class{constructor(e){this.id=`bridge_${O()}`,this.opts=e,this.webview=null,this.jscore=e.jscore,this.parent=null,this.resetStatus()}async init(){this.jscore.invoke(e=>this.messageInvoke(`service`,e)),this.jscore.publish(e=>this.messagePublish(e)),this.webview=await this.createWebview(),this.webview.invoke(e=>this.messageInvoke(`render`,e)),this.webview.publish(e=>this.messagePublish(e))}messagePublish(e){if(this.destroyed)return;typeof e==`string`&&(e=JSON.parse(e));let{body:t,target:n}=e;t.bridgeId&&t.bridgeId!==this.id||(e.type===`firstRender`&&t.pageId&&(this.pageId=t.pageId),n===`render`&&e.type===`print`&&this.parent?.recordDebugPrint?.(t.detail),n===`service`?this.jscore.postMessage(e):n===`render`&&this.webview.postMessage(e))}messageInvoke(e,t){if(this.destroyed)return;typeof t==`string`&&(t=JSON.parse(t));let{type:n,body:r,target:i}=t;if(r.bridgeId&&r.bridgeId!==this.id||r.resourceLoadId&&r.resourceLoadId!==this.resourceLoadId)return;console.log(te.green(`[container] receive msg from ${e}: `),t);let a={type:n,body:{bridgeId:this.id,pagePath:this.opts.pagePath,scene:this.opts.scene,query:this.opts.query,...r}};if(i===`service`){if(n===`serviceResourceLoaded`){if(this.serviceResource=!0,this.isResourceLoaded()&&!this.resourceLoadedForwarded)this.resourceLoadedForwarded=!0,a.type=`resourceLoaded`;else return}else if(n===`renderResourceLoaded`){if(this.renderResource=!0,this.isResourceLoaded()&&!this.resourceLoadedForwarded)this.resourceLoadedForwarded=!0,a.type=`resourceLoaded`;else return}else n===`renderResourceLoadFailed`&&(this.renderResource=!1,this.resourceLoadedForwarded=!1,a.type=`resourceLoadFailed`);this.jscore.postMessage(a),a.type===`resourceLoaded`&&this.#e()}else if(i===`container`&&n===`invokeAPI`){let{name:e,params:t}=r;this.parent.invokeApi(e,t,this)}}start(e={}){this.resourceLoadId=O(),Object.prototype.hasOwnProperty.call(e,`visible`)?this.desiredPageVisible=e.visible:this.desiredPageVisible===null&&(this.desiredPageVisible=!0),this.webview.postMessage({type:`loadResource`,body:{bridgeId:this.id,resourceLoadId:this.resourceLoadId,appId:this.opts.appId,debugSessionId:this.parent.debugSessionId,pagePath:this.opts.pagePath,root:this.opts.root,baseUrl:this.opts.baseUrl||`/`,hostEnv:this.parent.getHostEnvSnapshot()}}),this.jscore.postMessage({type:`loadResource`,body:{bridgeId:this.id,resourceLoadId:this.resourceLoadId,appId:this.opts.appId,pagePath:this.opts.pagePath,scene:this.opts.scene,query:this.opts.query,root:this.opts.root,baseUrl:this.opts.baseUrl||`/`,hostEnv:this.parent.getHostEnvSnapshot()}}),this.opts.isRoot&&this.jscore.postMessage({type:`onUpdateStatusChange`,body:{bridgeId:this.id,event:`noupdate`}})}resetStatus(){this.destroyed=!1,this.serviceResource=!1,this.renderResource=!1,this.resourceLoadedForwarded=!1,this.resourceLoadId=null,this.desiredPageVisible=null,this.sentPageVisible=null}createWebview(){return new Promise(e=>{let t=new re({configInfo:this.opts.configInfo,isRoot:this.opts.isRoot,resourceBaseUrl:this.opts.baseUrl,enableDebug:this.opts.enableDebug,debugSessionId:this.parent.debugSessionId,showHomeButton:this.parent.shouldShowHomeButton({pagePath:this.opts.pagePath,configInfo:this.opts.configInfo,isRoot:this.opts.isRoot})});t.parent=this,t.init(()=>{e(t)}),this.opts.isRoot||t.el.classList.add(`dimina-native-view--before-enter`),this.parent.webviewsContainer.appendChild(t.el)})}isResourceLoaded(){return this.serviceResource&&this.renderResource}appShow(){this.isResourceLoaded()&&this.jscore.postMessage({type:`appShow`,body:{}})}appHide(){this.isResourceLoaded()&&this.jscore.postMessage({type:`appHide`,body:{}})}pageShow(){if(this.isResourceLoaded()){let e={type:`hostEnvChanged`,body:{bridgeId:this.id,hostEnv:this.parent?.getHostEnvSnapshot?.()||{}}};this.jscore.postMessage(e),this.webview.postMessage(e)}this.desiredPageVisible=!0,this.#e()}pageHide(){this.desiredPageVisible=!1,this.#e()}#e(){!this.isResourceLoaded()||this.desiredPageVisible===null||this.sentPageVisible===this.desiredPageVisible||(this.jscore.postMessage({type:this.desiredPageVisible?`pageShow`:`pageHide`,body:{bridgeId:this.id}}),this.sentPageVisible=this.desiredPageVisible)}destroy(){let e=this.isResourceLoaded();this.destroyed=!0,this.serviceResource=!1,this.renderResource=!1,this.resourceLoadedForwarded=!1,this.resourceLoadId=null,this.desiredPageVisible=null,this.sentPageVisible=null,e&&this.jscore.postMessage({type:`pageUnload`,body:{bridgeId:this.id}})}async hotUpdateView(){return this.pageId?(this.webview.postMessage({type:`hotUpdateView`,body:{bridgeId:this.id,pageId:this.pageId,pagePath:this.opts.pagePath,root:this.opts.root,appId:this.opts.appId,baseUrl:`/`}}),!0):!1}hotUpdateLogic(e={}){return this.pageId?(this.jscore.postMessage({type:`hotUpdateLogic`,body:{bridgeId:this.id,pageId:this.pageId,pagePath:this.opts.pagePath,root:this.opts.root,appId:this.opts.appId,baseUrl:`/`,updatedPages:e.updatedPages}}),!0):!1}},ae=`/assets/service.js`,oe=class{constructor(e){this.parent=e,this.worker=null,this.event=D()}async init(){let e=this.parent.getApiNamespaces?.()||[],t=Object.keys(this.parent.apiRegistry??{}),n=JSON.stringify({apiNamespaces:e,registeredApis:t});this.worker=new Worker(ae,{type:`classic`,name:n}),this.worker.onmessage=e=>{let t=e.data;this.event.emit(t.method,t)}}invoke(e){this.event.on(`invoke`,e)}publish(e){this.event.on(`publish`,e)}postMessage(e){this.worker.postMessage(e)}destroy(){this.worker.terminate()}},se=`__dimina_enable_debug__`;function P(e){return`${se}${e||``}`}var F={isEnabled(e){return localStorage.getItem(P(e))===`1`},setEnabled(e,t){let n=this.isEnabled(e);return localStorage.setItem(P(e),t?`1`:`0`),n!==t},clear(e){localStorage.removeItem(P(e))}},ce=class{constructor({appId:e,restart:t}){this.appId=e,this.restart=t,this.restartPending=!1,this.restartInFlight=null,this.lastRestartError=null,this.stateRevision=0}isEnabled(){return F.isEnabled(this.appId)}setEnabled(e){let t=this.isEnabled();F.setEnabled(this.appId,e);let n=t!==e;return n&&(this.stateRevision+=1,this.restartPending=!0,this.drainRestart()),n}cancel(){this.restartPending=!1}drainRestart(){if(!this.restartPending||this.restartInFlight)return this.restartInFlight;this.restartPending=!1,this.lastRestartError=null;let e=!0,t=this.stateRevision;return this.restartInFlight=Promise.resolve().then(()=>(t=this.stateRevision,this.restart?.())).then(t=>(t===!1&&(e=!1,this.restartPending=!0),t)).catch(t=>(e=!1,this.lastRestartError=t,this.restartPending=!0,!1)).finally(()=>{this.restartInFlight=null;let n=t!==this.stateRevision;e&&!n?this.restartPending=!1:e&&n&&(this.restartPending=!0,queueMicrotask(()=>this.drainRestart()))}),this.restartInFlight}},I=1e3,L=1e3,R=class{constructor({appId:e=``,runtimeSessionId:t=``}={}){this.appId=e,this.runtimeSessionId=t,this.revision=0,this.logs=[],this.network=[]}resetRuntime(e=``){this.runtimeSessionId=e,this.logs=[],this.network=[],this.revision+=1}appendLog(e){return!e||typeof e.type!=`string`?!1:(this.logs.push(z(e)),this.logs.length>I&&this.logs.splice(0,this.logs.length-I),this.revision+=1,!0)}upsertNetwork({action:e=`add`,id:t,value:n}={}){if(!n||typeof n!=`object`)return!1;let r=z(n),i=t||r.id,a=i?this.network.findIndex(e=>e.id===i):-1;return a>=0?this.network[a]={...this.network[a],...r}:e!==`update`&&(this.network.push(r),this.network.length>L&&this.network.splice(0,this.network.length-L)),this.revision+=1,!0}clearLogs(){return this.logs=[],this.revision+=1,!0}clearNetwork(){return this.network=[],this.revision+=1,!0}getSnapshot(e={}){return{runtimeSessionId:this.runtimeSessionId,revision:this.revision,logs:z(this.logs),network:z(this.network),storageSnapshot:z(e||{})}}};function z(e){try{return JSON.parse(JSON.stringify(e))}catch{return e}}var B={en:{unnamedMiniApp:`Unnamed mini app`,appId:`App ID`,currentPage:`Current page`,copyLink:`Copy link`,linkCopied:`Link copied`,copyFailed:`Copy failed`,reopen:`Reopen`,enableDebug:`Enable debug`,disableDebug:`Disable debug`,closeMiniApp:`Close mini app`,cancel:`Cancel`,debugEnabledTitle:`Debug mode enabled`,debugDisabledTitle:`Disable debug mode`,showVConsole:`Restart the mini program now to show vConsole.`,hideVConsole:`Restart the mini program now to hide vConsole.`,later:`Later`,restartNow:`Restart now`,loading:`Loading...`,loadFailed:`Failed to load the app list`,noApps:`No apps`,noMatchingApps:`No matching apps`,searchApps:`Search mini apps`,miniApps:`Mini Apps`},"zh-CN":{unnamedMiniApp:`未命名小程序`,appId:`AppID`,currentPage:`当前页面`,copyLink:`复制链接`,linkCopied:`链接已复制`,copyFailed:`复制失败`,reopen:`重新进入`,enableDebug:`开启调试`,disableDebug:`关闭调试`,closeMiniApp:`关闭小程序`,cancel:`取消`,debugEnabledTitle:`已开启调试模式`,debugDisabledTitle:`关闭调试模式`,showVConsole:`现在重启小程序以显示 vConsole。`,hideVConsole:`现在重启小程序以隐藏 vConsole。`,later:`稍后`,restartNow:`现在重启`,loading:`加载中...`,loadFailed:`应用列表加载失败`,noApps:`暂无应用`,noMatchingApps:`未找到匹配的小程序`,searchApps:`搜索小程序`,miniApps:`小程序`}};function V(e){return String(e||``).toLowerCase().startsWith(`zh`)?`zh-CN`:`en`}function H(e){let t=B[V(e||new URLSearchParams(window.location.search).get(`lang`)||`en`)]||B.en;return e=>t[e]||B.en[e]||e}var U=class{static ROUTE_QUERY_KEYS=[`appId`,`entry`,`page`];static _encodePage(e,t){return t&&Object.keys(t).length>0?`${e}?${Object.entries(t).map(([e,t])=>`${encodeURIComponent(e)}=${encodeURIComponent(t)}`).join(`&`)}`:e}static _decodePage(e){let t=e.indexOf(`?`);if(t===-1)return{pagePath:e,query:{}};let n=e.slice(0,t),r={};return new URLSearchParams(e.slice(t+1)).forEach((e,t)=>{r[t]=e}),{pagePath:n,query:r}}static _encodeSearchValue(e){return encodeURIComponent(e).replace(/%2F/g,`/`)}static _normalizeSearch(e){return e?e.startsWith(`?`)?e.slice(1):e:``}static _stringifySearchParams(e){return Array.from(e.entries()).map(([e,t])=>`${encodeURIComponent(e)}=${this._encodeSearchValue(t)}`).join(`&`)}static buildRouteSearch(e,t,n=typeof window<`u`?window.location.search:``){let r=new URLSearchParams(this._normalizeSearch(n));if(this.ROUTE_QUERY_KEYS.forEach(e=>r.delete(e)),!e||!t?.length)return this._stringifySearchParams(r);let i=t[0],a=t[t.length-1];return r.set(`appId`,e),r.set(`entry`,this._encodePage(i.pagePath,i.query||{})),r.set(`page`,this._encodePage(a.pagePath,a.query||{})),this._stringifySearchParams(r)}static buildRouteURL(e,t,n=typeof window<`u`?`${window.location.origin}${window.location.pathname}`:``){let r=this.buildRouteSearch(e,t);return`${n}${r?`?${r}`:``}`}static syncStack(e,t){let n=this.buildRouteSearch(e,t);history.replaceState(null,``,`${window.location.pathname}${n?`?${n}`:``}`)}static clear(){let e=new URLSearchParams(this._normalizeSearch(window.location.search));this.ROUTE_QUERY_KEYS.forEach(t=>e.delete(t));let t=this._stringifySearchParams(e);history.replaceState(null,``,`${window.location.pathname}${t?`?${t}`:``}`)}static parseSearch(e){let t=new URLSearchParams(this._normalizeSearch(e)),n=t.get(`appId`),r=t.get(`entry`),i=t.get(`page`)||r;if(!n||!r)return null;let a=this._decodePage(r);if(!a.pagePath)return null;let o=[a];if(i&&i!==r){let e=this._decodePage(i);e.pagePath&&o.push(e)}return{appId:n,stack:o}}static parseHash(e){if(!e||e.length<=1)return null;let t=e.slice(1).split(`|`);if(t.length<2)return null;let n=t[0],r=t.slice(1).map(e=>this._decodePage(e));return!n||r.length===0?null:{appId:n,stack:r}}static parse(e,t=typeof window<`u`?window.location.search:``){return this.parseSearch(t)||this.parseHash(e)}},W=`<div class="dimina-mini-app">
24
+ <!-- 右上方药丸按钮 -->
25
+ <ul class="dimina-mini-app-navigation__actions">
26
+ <li class="dimina-mini-app-navigation__actions-variable"></li>
27
+ <li class="dimina-mini-app-navigation__actions-close"></li>
28
+ </ul>
29
+
30
+ <!-- webview挂载节点 -->
31
+ <div class="dimina-mini-app__webviews"></div>
32
+
33
+ <!-- TabBar 底部导航栏 -->
34
+ <div class="dimina-mini-app__tabbar" style="display: none;"></div>
35
+
36
+ <!-- 启动loading页面 -->
37
+ <div class="dimina-mini-app__launch-screen">
38
+ <div class="dimina-mini-app__launch-screen-content">
39
+ <div class="dimina-mini-app__logo">
40
+ <div class="dimina-mini-app__logo-img">
41
+ <img class="dimina-mini-app__logo-img-url" alt="logo" />
42
+ </div>
43
+ <div class="dimina-mini-app__logo-circle"></div>
44
+ <span class="dimina-mini-app__green-point"></span>
45
+ </div>
46
+ <h1 class="dimina-mini-app__name"></h1>
47
+ </div>
48
+ </div>
49
+
50
+ <div class="dimina-mini-app-menu__mask"></div>
51
+ <div class="dimina-mini-app-menu">
52
+ <div class="dimina-mini-app-menu__handle"></div>
53
+ <div class="dimina-mini-app-menu__app">
54
+ <div class="dimina-mini-app-menu__app-logo">
55
+ <img class="dimina-mini-app-menu__app-logo-img" alt="logo" />
56
+ </div>
57
+ <div class="dimina-mini-app-menu__app-meta">
58
+ <h2 class="dimina-mini-app-menu__app-name"></h2>
59
+ <p class="dimina-mini-app-menu__app-id"></p>
60
+ <p class="dimina-mini-app-menu__app-desc"></p>
61
+ </div>
62
+ </div>
63
+ <div class="dimina-mini-app-menu__quick-actions"></div>
64
+ <div class="dimina-mini-app-menu__footer">
65
+ <button type="button" class="dimina-mini-app-menu__footer-btn dimina-mini-app-menu__footer-btn--cancel">取消</button>
66
+ </div>
67
+ </div>
68
+ </div>
69
+ `,G=(e,t,n=560)=>new Promise(r=>{let i=setTimeout(r,n),a=n=>{(!t||n.propertyName===t)&&(clearTimeout(i),e.removeEventListener(`transitionend`,a),r())};e.addEventListener(`transitionend`,a)});function K(e){e.cancelable&&e.preventDefault()}function q(e){K(e),e.stopImmediatePropagation?.()}var le=class{constructor(e){this.appInfo=e,this.t=H(),this.id=`mini_app_${O()}`,this.parent=null,this.appId=e.appId,this.debugSessionId=O(),this.debugHistoryStore=new R({appId:this.appId,runtimeSessionId:this.debugSessionId}),this.appConfig=null,this.bridgeList=[],this.jscore=new oe(this),this.webviewsContainer=null,this.webviewAnimaEnd=!0,this.el=document.createElement(`div`),this.el.classList.add(`dimina-native-view`),this.toastInfo={dom:null,timer:null},this.color=null,this.apiRegistry={},this._extSubscriptions=new Map,this.tabBarConfig=null,this.tabBarPaths=[],this.tabBarBridges=new Map,this.currentTabPath=null,this.tabBarEl=null,this.tabBarHeight=0,this.tabBarBadges=[],this.tabBarRedDots=[],this.tabBarApiVisible=!0,this._modalStack=[],this._modalPendingTimers=new Set,this._modalPageTouchTarget=null,this._destroyed=!1,this._tempFileStore=new Map,this._savedFileStore=new Map,this._networkTasks=new Map,this._backgroundAudio=null,this._backgroundAudioRequestId=0,this._ideHotReloading=!1,this._themeMediaQueryList=null,this._themeMediaQueryHandler=null,this.debugController=new ce({appId:this.appId,restart:()=>this.applyUpdate()}),this._registerFileApis()}getApiNamespaces(){return Array.isArray(this.appInfo.apiNamespaces)?this.appInfo.apiNamespaces:[`nx`]}_createTempFilePath(e=`tmp`){let t=String(e||`tmp`).replace(/^\.+/,``)||`tmp`;return`difile://tmp/${this.appId}/${Date.now()}_${O()}.${t}`}_storeTempFile(e,t){!e||!t||this._tempFileStore.set(e,t)}_getTempFile(e){return this._tempFileStore.get(e)||null}_createSavedFilePath(e=`tmp`){let t=String(e||`tmp`).replace(/^\.+/,``)||`tmp`;return`difile://saved/${this.appId}/${Date.now()}_${O()}.${t}`}_getExtFromPath(e=``){return String(e||``).match(/\.([a-zA-Z0-9]+)(?:$|\?)/)?.[1]||`tmp`}_getFileInfoFromStore(e){let t=this._getTempFile(e),n=this._savedFileStore.get(e);return!t&&!n?null:{size:t?.size||n?.size||0,createTime:n?.createTime||Date.now(),file:t}}_guessExtension(e=``,t=``){let n=String(t||``).split(`;`)[0].trim().toLowerCase(),r={"image/jpeg":`jpg`,"image/png":`png`,"image/gif":`gif`,"image/webp":`webp`,"text/plain":`txt`,"application/json":`json`,"application/pdf":`pdf`};if(r[n])return r[n];try{let t=(new URL(e,window.location.href).pathname||``).match(/\.([a-zA-Z0-9]+)$/);if(t?.[1])return t[1]}catch{}return`tmp`}_registerFileApis(){Object.entries({"FileSystemManager.saveFile":(e={})=>this.saveFile(e),"FileSystemManager.getSavedFileList":(e={})=>this.getSavedFileList(e),"FileSystemManager.getSavedFileInfo":(e={})=>this.getSavedFileInfo(e),"FileSystemManager.removeSavedFile":(e={})=>this.removeSavedFile(e),"FileSystemManager.getFileInfo":(e={})=>this.getFileInfo(e)}).forEach(([e,t])=>this.registerApi(e,t))}_normalizePagePath(e){return e?e.startsWith(`/`)?e.slice(1):e:``}_isTabBarPage(e){return this.tabBarPaths.includes(this._normalizePagePath(e))}getCurrentPagePath(){return this.bridgeList[this.bridgeList.length-1]?.opts?.pagePath||this.appInfo.pagePath||this.appConfig?.app?.entryPagePath||``}getCurrentPageQuery(){return this.bridgeList[this.bridgeList.length-1]?.opts?.query||this.appInfo.query||{}}getEntryPagePath(){return this.appInfo.pagePath||this.appConfig?.app?.entryPagePath||``}getHomePagePath(){return this._normalizePagePath(this.appConfig?.app?.entryPagePath||this.appConfig?.app?.pages?.[0]||``)}shouldShowHomeButton({pagePath:e,configInfo:t,isRoot:n}){if(t?.navigationStyle===`custom`)return!1;let r=this.getHomePagePath();if(!r)return!1;let i=this._normalizePagePath(e);return this._isTabBarPage(i)||i===r?!1:n||t?.homeButton===!0}navigateHome(){let e=this.getHomePagePath();e&&(this._isTabBarPage(e)?this.switchTab({url:`/${e}`}):this.bridgeList.length<=1?this.redirectTo({url:`/${e}`}):this.reLaunch({url:`/${e}`}))}hideHomeButton(e={},t){let{onSuccess:n,onComplete:r}=this._createApiCallbacks(e);(t||this.bridgeList[this.bridgeList.length-1])?.webview?.setHomeButtonVisible(!1),n?.({errMsg:`hideHomeButton:ok`}),r?.()}async copyText(e,t){try{if(navigator.clipboard?.writeText)await navigator.clipboard.writeText(e);else{let t=document.createElement(`textarea`);t.value=e,t.setAttribute(`readonly`,`readonly`),t.style.position=`fixed`,t.style.opacity=`0`,document.body.appendChild(t),t.select(),document.execCommand(`copy`),document.body.removeChild(t)}this.showToast({title:t,icon:`success`})}catch{this.showToast({title:this.t(`copyFailed`),icon:`none`})}}closeMiniProgram(){U.clear(),this.closeMiniAppMenu(),X.closeApp(this)}renderMiniAppMenu(){let e=this.el.querySelector(`.dimina-mini-app-menu__app-name`),t=this.el.querySelector(`.dimina-mini-app-menu__app-id`),n=this.el.querySelector(`.dimina-mini-app-menu__app-desc`),r=this.el.querySelector(`.dimina-mini-app-menu__app-logo-img`),i=this.el.querySelector(`.dimina-mini-app-menu__quick-actions`),a=this.getCurrentPagePath(),o=this.getEntryPagePath(),s=this.getCurrentPageQuery(),c=a||o||``,l=U.buildRouteURL(this.appId,[{pagePath:o,query:this.appInfo.query||{}},{pagePath:c,query:s}]),u=this.isMiniAppDebugEnabled(),d=this.el.querySelector(`.dimina-mini-app-menu__footer-btn--cancel`);e.textContent=this.appInfo.name||this.t(`unnamedMiniApp`),t.textContent=`${this.t(`appId`)}: ${this.appId||`--`}`,n.textContent=`${this.t(`currentPage`)}: ${c||`--`}`,d.textContent=this.t(`cancel`),r.src=this.appInfo.logo||``;let f=[{label:this.t(`copyLink`),icon:`↗`,handler:()=>this.copyText(l,this.t(`linkCopied`))},{label:this.t(`reopen`),icon:`↻`,handler:()=>{this.closeMiniAppMenu(),this.applyUpdate()}},{label:u?this.t(`disableDebug`):this.t(`enableDebug`),icon:u?`D-`:`D+`,handler:()=>this.toggleDebugFromMenu(u)},{label:this.t(`closeMiniApp`),icon:`×`,danger:!0,handler:()=>this.closeMiniProgram()}];i.innerHTML=f.map((e,t)=>`
70
+ <button type="button" class="dimina-mini-app-menu__quick-action${e.danger?` is-danger`:``}" data-quick-index="${t}">
71
+ <span class="dimina-mini-app-menu__quick-action-icon">${e.icon}</span>
72
+ <span class="dimina-mini-app-menu__quick-action-label">${e.label}</span>
73
+ </button>
74
+ `).join(``),i.querySelectorAll(`[data-quick-index]`).forEach((e,t)=>{e.onclick=()=>f[t].handler()})}toggleDebugFromMenu(e){this.closeMiniAppMenu(),this.setMiniAppDebugEnabled(!e)}openMiniAppMenu(){let e=this.el.querySelector(`.dimina-mini-app-menu__mask`),t=this.el.querySelector(`.dimina-mini-app-menu`);this.renderMiniAppMenu(),e.style.display=`block`,requestAnimationFrame(()=>{e.classList.add(`show`),t.classList.add(`show`)})}closeMiniAppMenu(){let e=this.el.querySelector(`.dimina-mini-app-menu__mask`),t=this.el.querySelector(`.dimina-mini-app-menu`);e.classList.remove(`show`),t.classList.remove(`show`)}registerApi(e,t){this.apiRegistry[e]=t}getAuthCode(e={}){let{success:t,fail:n,complete:r}=e,i=this.createCallbackFunction(t),a=this.createCallbackFunction(n),o=this.createCallbackFunction(r),s=X.getExtModule(`DefaultModule`);if(!s){a?.({errMsg:`getAuthCode:fail api is not supported`}),o?.();return}let c=!1,l=()=>{c||(c=!0,o?.())};try{s({event:`getAuthCode`,data:e,success:e=>{i?.(e),l()},fail:e=>{a?.(e),l()}})}catch(e){a?.({errMsg:`getAuthCode:fail ${e.message}`}),l()}}invokeApi(e,t,n){if(e===`debugHistoryEvent`){this.handleDebugHistoryEvent(t);return}let r=this.apiRegistry[e];r?r.call(this,t,n):typeof this[e]==`function`?this[e](t,n):this._handleExtCall(e,t)}saveFile(e={}){let{tempFilePath:t,filePath:n,success:r,fail:i,complete:a}=e,o=this.createCallbackFunction(r),s=this.createCallbackFunction(i),c=this.createCallbackFunction(a),l=this._getTempFile(t);if(!t||!l){s?.({errMsg:`saveFile:fail temp file not found`}),c?.();return}let u=n||this._createSavedFilePath(this._getExtFromPath(t)),d=new File([l],l.name,{type:l.type||`application/octet-stream`});this._storeTempFile(u,d),this._savedFileStore.set(u,{createTime:Date.now(),size:d.size}),o?.({savedFilePath:u,errMsg:`saveFile:ok`}),c?.()}getSavedFileList(e={}){let{success:t,fail:n,complete:r}=e,i=this.createCallbackFunction(t),a=this.createCallbackFunction(n),o=this.createCallbackFunction(r);try{let e=Array.from(this._savedFileStore.entries()).map(([e,t])=>({filePath:e,createTime:t.createTime,size:t.size||0}));i?.({fileList:e,errMsg:`getSavedFileList:ok`})}catch(e){a?.({errMsg:`getSavedFileList:fail ${e.message}`})}o?.()}getSavedFileInfo(e={}){let{filePath:t,success:n,fail:r,complete:i}=e,a=this.createCallbackFunction(n),o=this.createCallbackFunction(r),s=this.createCallbackFunction(i),c=this._getFileInfoFromStore(t);if(!t||!c){o?.({errMsg:`getSavedFileInfo:fail file not found`}),s?.();return}a?.({createTime:c.createTime,size:c.size,errMsg:`getSavedFileInfo:ok`}),s?.()}removeSavedFile(e={}){let{filePath:t,success:n,fail:r,complete:i}=e,a=this.createCallbackFunction(n),o=this.createCallbackFunction(r),s=this.createCallbackFunction(i);if(!t||!this._savedFileStore.has(t)){o?.({errMsg:`removeSavedFile:fail file not found`}),s?.();return}this._savedFileStore.delete(t),this._tempFileStore.delete(t),a?.({errMsg:`removeSavedFile:ok`}),s?.()}getFileInfo(e={}){let{filePath:t,success:n,fail:r,complete:i}=e,a=this.createCallbackFunction(n),o=this.createCallbackFunction(r),s=this.createCallbackFunction(i),c=this._getFileInfoFromStore(t);if(!t||!c){o?.({errMsg:`getFileInfo:fail file not found`}),s?.();return}a?.({size:c.size,errMsg:`getFileInfo:ok`}),s?.()}openDocument(e={}){let{filePath:t,success:n,fail:r,complete:i}=e,a=this.createCallbackFunction(n),o=this.createCallbackFunction(r),s=this.createCallbackFunction(i),c=this._getFileInfoFromStore(t);if(!t||!c?.file){o?.({errMsg:`openDocument:fail file not found`}),s?.();return}try{let e=URL.createObjectURL(c.file);window.open(e,`_blank`,`noopener`),setTimeout(()=>URL.revokeObjectURL(e),3e4),a?.({errMsg:`openDocument:ok`})}catch(e){o?.({errMsg:`openDocument:fail ${e.message}`})}s?.()}setEnableDebug(e={}){let{enableDebug:t,success:n,fail:r,complete:i}=e||{},a=this.createCallbackFunction(n),o=this.createCallbackFunction(r),s=this.createCallbackFunction(i);if(typeof t!=`boolean`){let e={errMsg:`setEnableDebug:fail parameter enableDebug should be Boolean`};o?.(e),s?.(e);return}let c={errMsg:`setEnableDebug:ok`,enableDebug:t,restartRequired:this.setMiniAppDebugEnabled(t)};a?.(c),s?.(c)}setMiniAppDebugEnabled(e){return this.debugController.setEnabled(e)}isMiniAppDebugEnabled(){return this.debugController?.isEnabled?.()??F.isEnabled(this.appId)}viewDidLoad(){this.initPageFrame(),this.webviewsContainer=this.el.querySelector(`.dimina-mini-app__webviews`),this.showLaunchScreen(),this.bindMoreEvent(),this.bindCloseEvent(),this.bindHostThemeChange(),this.initApp()}async initApp(){await this.jscore.init();let e=`main`,t=`${this.appInfo.appId}/${e}/app-config.json`,[n]=await Promise.all([M(`/${t}`),k(560)]);if(!n)return;this.appConfig=JSON.parse(n),this._initTabBar();let r=this.appInfo.pagePath||this.appConfig.app.entryPagePath,i=this.appConfig.modules[r],a=N(this.appConfig.app,i);this.updateTargetPageColorStyle(a);let o=await this.createBridge({pagePath:r,query:this.appInfo.query,scene:this.appInfo.scene,jscore:this.jscore,isRoot:!0,root:e,appId:this.appInfo.appId,pages:this.appConfig.app.pages,configInfo:a});if(this.bridgeList.push(o),this._isTabBarPage(r)){let e=this._normalizePagePath(r);this.tabBarBridges.set(e,o),this.currentTabPath=e,this._setTabBarVisible(!0),this._updateTabBarSelection(e)}o.start(),window.__diminaCurrentMiniApp=this,window.__diminaHotUpdateView=e=>window.__diminaCurrentMiniApp?.hotUpdateView(e),window.__diminaHotUpdateLogic=e=>window.__diminaCurrentMiniApp?.hotUpdateLogic(e),this.appInfo.restoreStack&&this.appInfo.restoreStack.length>1&&await this.restorePageStack(this.appInfo.restoreStack.slice(1)),this._syncHash(),this.hideLaunchScreen()}async restorePageStack(e){for(let t=0;t<e.length;t++){let{pagePath:n,query:r}=e[t],i=t===e.length-1,a=n.startsWith(`/`)?n.slice(1):n,o=this.appConfig.modules[a],s=N(this.appConfig.app,o),c=await this.createBridge({pagePath:a,query:r,scene:this.appInfo.scene,jscore:this.jscore,isRoot:!1,root:o?.root||`main`,appId:this.appInfo.appId,pages:this.appConfig.app.pages,configInfo:s}),l=this.bridgeList[this.bridgeList.length-1];l.webview.el.classList.remove(`dimina-native-view--instage`),l.webview.el.classList.add(`dimina-native-view--slide-out`),this.bridgeList.push(c),c.webview.el.style.zIndex=this.bridgeList.length+1,c.webview.el.classList.remove(`dimina-native-view--before-enter`),i||c.webview.el.classList.add(`dimina-native-view--slide-out`),c.start()}if(e.length>0){let e=this.bridgeList[this.bridgeList.length-1],t=this.appConfig.modules[e.opts.pagePath],n=N(this.appConfig.app,t);this.updateTargetPageColorStyle(n),this._isTabBarPage(e.opts.pagePath)||this._setTabBarVisible(!1)}}_syncHash(){let e=this.bridgeList.map(e=>({pagePath:e.opts.pagePath.startsWith(`/`)?e.opts.pagePath.slice(1):e.opts.pagePath,query:e.opts.query||{}}));U.syncStack(this.appId,e)}async hotUpdateView(e={}){let t=Array.isArray(e.updatedPages)?e.updatedPages:[],n=new Set(t.map(e=>this._normalizePagePath(e.pagePath))),r=!1,i=new Set([...this.bridgeList,...this.tabBarBridges.values()]);for(let e of i){let t=this._normalizePagePath(e.opts.pagePath);n.size&&!n.has(t)||(r=await e.hotUpdateView()||r)}return r}hotUpdateLogic(e={}){let t=Array.isArray(e.updatedPages)?e.updatedPages:[],n=new Set(t.map(e=>this._normalizePagePath(e.pagePath))),r=!1,i=new Set([...this.bridgeList,...this.tabBarBridges.values()]);for(let t of i){let i=this._normalizePagePath(t.opts.pagePath);n.size&&!n.has(i)||(r=t.hotUpdateLogic(e)||r)}return r}async createBridge(e){let{jscore:t,configInfo:n,isRoot:r,appId:i,pagePath:a,query:o,scene:s,pages:c,root:l}=e,u=new ie({jscore:t,configInfo:n,isRoot:r,appId:i,pagePath:a,query:o,scene:s,pages:c,root:l,enableDebug:this.isMiniAppDebugEnabled()});return u.parent=this,await u.init(),u}onPresentIn(){let e=this.bridgeList[this.bridgeList.length-1];e?.appShow(),e?.pageShow()}onPresentOut(){let e=this.bridgeList[this.bridgeList.length-1];e?.appHide(),e?.pageHide()}initPageFrame(){this.el.innerHTML=W}updateTargetPageColorStyle(e){let{navigationBarTextStyle:t}=e;this.updateActionColorStyle(t)}showLaunchScreen(){let e=this.el.querySelector(`.dimina-mini-app__launch-screen`),t=this.el.querySelector(`.dimina-mini-app__name`),n=this.el.querySelector(`.dimina-mini-app__logo-img-url`);this.updateActionColorStyle(`black`),t.innerHTML=this.appInfo.name,n.src=this.appInfo.logo,e.style.display=`block`}hideLaunchScreen(){let e=this.el.querySelector(`.dimina-mini-app__launch-screen`);e.style.display=`none`}updateActionColorStyle(e){this.color=e;let t=this.el.querySelector(`.dimina-mini-app-navigation__actions`);e===`white`?(t.classList.remove(`dimina-mini-app-navigation__actions--black`),t.classList.add(`dimina-mini-app-navigation__actions--white`)):e===`black`&&(t.classList.remove(`dimina-mini-app-navigation__actions--white`),t.classList.add(`dimina-mini-app-navigation__actions--black`)),this.parent.updateStatusBarColor(e)}restoreColorStyle(){this.updateActionColorStyle(this.color)}createCallbackFunction(e){if(typeof e==`function`)return e;if(e)return t=>{this.jscore.postMessage({type:`triggerCallback`,body:{id:e,args:t}})}}_networkTask(e){return e?(this._networkTasks.has(e)||this._networkTasks.set(e,{progressCallbacks:new Set,headerCallbacks:new Set,controller:null}),this._networkTasks.get(e)):null}_getNetworkTask(e){return e?this._networkTasks.get(e):null}_addNetworkTaskCallback(e,t,n){let r=this._networkTask(e);!r||!n||r[t===`header`?`headerCallbacks`:`progressCallbacks`].add(n)}_removeNetworkTaskCallback(e,t,n){let r=this._getNetworkTask(e);if(!r)return;let i=t===`header`?`headerCallbacks`:`progressCallbacks`;n?r[i].delete(n):r[i].clear()}_emitNetworkTaskCallbacks(e,t,n){let r=this._getNetworkTask(e);r&&r[t===`header`?`headerCallbacks`:`progressCallbacks`].forEach(e=>this.createCallbackFunction(e)?.(n))}_abortNetworkTask({taskId:e}){this._getNetworkTask(e)?.controller?.abort()}uploadFileAbort(e){this._abortNetworkTask(e)}downloadFileAbort(e){this._abortNetworkTask(e)}uploadFileOnProgressUpdate({taskId:e,callback:t}){this._addNetworkTaskCallback(e,`progress`,t)}downloadFileOnProgressUpdate({taskId:e,callback:t}){this._addNetworkTaskCallback(e,`progress`,t)}uploadFileOffProgressUpdate({taskId:e,callback:t}){this._removeNetworkTaskCallback(e,`progress`,t)}downloadFileOffProgressUpdate({taskId:e,callback:t}){this._removeNetworkTaskCallback(e,`progress`,t)}uploadFileOnHeadersReceived({taskId:e,callback:t}){this._addNetworkTaskCallback(e,`header`,t)}downloadFileOnHeadersReceived({taskId:e,callback:t}){this._addNetworkTaskCallback(e,`header`,t)}uploadFileOffHeadersReceived({taskId:e,callback:t}){this._removeNetworkTaskCallback(e,`header`,t)}downloadFileOffHeadersReceived({taskId:e,callback:t}){this._removeNetworkTaskCallback(e,`header`,t)}_createApiCallbacks({success:e,fail:t,complete:n}={}){return{onSuccess:this.createCallbackFunction(e),onFail:this.createCallbackFunction(t),onComplete:this.createCallbackFunction(n)}}async navigateTo(e){let{url:t,success:n,fail:r,complete:i}=e,{query:a,pagePath:o}=A(t),s=this.createCallbackFunction(n),c=this.createCallbackFunction(r),l=this.createCallbackFunction(i);if(this._isTabBarPage(o)){c?.({errMsg:`navigateTo:fail can not navigateTo a tabbar page`}),l?.();return}if(!this.webviewAnimaEnd)return;this.webviewAnimaEnd=!1;let u=this.appConfig.modules[o],d=N(this.appConfig.app,u);this.updateTargetPageColorStyle(d);let f=await this.createBridge({pagePath:o,query:a,scene:this.appInfo.scene,jscore:this.jscore,isRoot:!1,root:u?.root||`main`,appId:this.appInfo.appId,pages:this.appConfig.app.pages,configInfo:d}),p=this.bridgeList[this.bridgeList.length-1],m=p.webview;this.bridgeList.push(f),f.start(),this._syncHash(),m.el.classList.remove(`dimina-native-view--instage`),m.el.classList.add(`dimina-native-view--slide-out`),m.el.classList.add(`dimina-native-view--linear-anima`),p?.pageHide(),this._setTabBarVisible(!1),f.webview.el.style.zIndex=this.bridgeList.length+1,f.webview.el.classList.add(`dimina-native-view--enter-anima`),f.webview.el.classList.add(`dimina-native-view--instage`),await G(f.webview.el,`transform`),this.webviewAnimaEnd=!0,m.el.classList.remove(`dimina-native-view--linear-anima`),f.webview.el.classList.remove(`dimina-native-view--before-enter`),f.webview.el.classList.remove(`dimina-native-view--enter-anima`),f.webview.el.classList.remove(`dimina-native-view--instage`),s?.({errMsg:`navigateTo:ok`}),l?.()}reLaunch(e){if(!this.webviewAnimaEnd)return!1;this.webviewAnimaEnd=!1;let{url:t,success:n,fail:r,complete:i,resetDebugHistory:a=!1}=e,{query:o,pagePath:s}=A(t),c=this.createCallbackFunction(n),l=this.createCallbackFunction(r),u=this.createCallbackFunction(i);try{let e=this.appConfig.modules[s],t=N(this.appConfig.app,e);a&&this.resetDebugRuntime(),this.updateTargetPageColorStyle(t);let n=new Set([...this.bridgeList,...this.tabBarBridges.values()]);for(let e of n)e.destroy(),e.webview?.el?.remove();return this.bridgeList.length=0,this.tabBarBridges.clear(),this.currentTabPath=null,this.webviewsContainer&&(this.webviewsContainer.innerHTML=``),this.createBridge({pagePath:s,query:o,scene:this.appInfo.scene,jscore:this.jscore,isRoot:!0,root:e?.root||`main`,appId:this.appInfo.appId,pages:this.appConfig.app.pages,configInfo:t}).then(e=>{if(this.bridgeList.push(e),this._isTabBarPage(s)){let t=this._normalizePagePath(s);this.tabBarBridges.set(t,e),this.currentTabPath=t,this._setTabBarVisible(!0),this._updateTabBarSelection(t)}else this._setTabBarVisible(!1);e.start(),this._syncHash(),e.webview.el.style.zIndex=1,this._setNavigationIdle(),c?.({errMsg:`reLaunch:ok`}),u?.()}).catch(e=>{l?.({errMsg:`reLaunch:fail ${e.message}`}),u?.(),this._setNavigationIdle()}),!0}catch(e){return l?.({errMsg:`reLaunch:fail ${e.message}`}),u?.(),this._setNavigationIdle(),!1}}applyUpdate(){return this._destroyed?Promise.resolve(!1):new Promise(e=>{this.reLaunch({url:this.getEntryPagePath(),resetDebugHistory:!0,success:()=>e(!0),fail:()=>e(!1)})===!1&&e(!1)})}resetDebugRuntime(){this.debugSessionId=O(),this.debugHistoryStore.resetRuntime(this.debugSessionId)}_setNavigationIdle(){this.webviewAnimaEnd=!0,this.debugController?.drainRestart()}redirectTo(e){let{url:t,success:n,fail:r,complete:i}=e,{query:a,pagePath:o}=A(t),s=this.createCallbackFunction(n),c=this.createCallbackFunction(r),l=this.createCallbackFunction(i);if(this._isTabBarPage(o)){c?.({errMsg:`redirectTo:fail can not redirectTo a tabbar page`}),l?.();return}if(!this.webviewAnimaEnd)return;this.webviewAnimaEnd=!1;let u=this.bridgeList[this.bridgeList.length-1],d=this._normalizePagePath(u.opts.pagePath),f=this.appConfig.modules[o],p=N(this.appConfig.app,f);this.updateTargetPageColorStyle(p),u.destroy(),u.opts={...u.opts,pagePath:o,query:a,configInfo:p},u.webview.applyPageStyle(p,{isRoot:u.opts.isRoot,showHomeButton:this.shouldShowHomeButton({pagePath:o,configInfo:p,isRoot:u.opts.isRoot})}),u.resetStatus(),u.start(),this._syncHash(),this.tabBarBridges.get(d)===u&&(this.tabBarBridges.delete(d),this.currentTabPath===d&&(this.currentTabPath=null)),this._setBridgeTabBarInset(u,!1),this._setTabBarVisible(!1),this.webviewAnimaEnd=!0,s?.({errMsg:`redirectTo:ok`}),l?.()}async navigateBack(){if(this.bridgeList.length<2){this.closeMiniProgram();return}if(!this.webviewAnimaEnd)return;this.webviewAnimaEnd=!1;let e=this.bridgeList.pop(),t=this.bridgeList[this.bridgeList.length-1],n=this.appConfig.modules[t.opts.pagePath],r=N(this.appConfig.app,n);if(this.updateTargetPageColorStyle(r),e.webview.el.classList.add(`dimina-native-view--before-enter`),e.webview.el.classList.add(`dimina-native-view--enter-anima`),e?.destroy(),t.webview.el.classList.remove(`dimina-native-view--slide-out`),t.webview.el.classList.add(`dimina-native-view--instage`),t.webview.el.classList.add(`dimina-native-view--enter-anima`),t?.pageShow(),this._syncHash(),this._isTabBarPage(t.opts.pagePath)){let e=this._normalizePagePath(t.opts.pagePath);this.currentTabPath=e,this._setTabBarVisible(!0),this._updateTabBarSelection(e)}await G(t.webview.el,`transform`),this.webviewAnimaEnd=!0,t.webview.el.classList.remove(`dimina-native-view--enter-anima`),e.webview.el.parentNode.removeChild(e.webview.el)}async switchTab(e){let{url:t,success:n,fail:r,complete:i}=e,{query:a,pagePath:o}=A(t),s=this._normalizePagePath(o),c=this.createCallbackFunction(n),l=this.createCallbackFunction(r),u=this.createCallbackFunction(i);if(!this._isTabBarPage(s)){l?.({errMsg:`switchTab:fail not a tabBar page: ${s}`}),u?.();return}if(!this.webviewAnimaEnd){l?.({errMsg:`switchTab:fail busy`}),u?.();return}if(this.currentTabPath===s&&this.bridgeList.length===1){this._setTabBarVisible(!0),this._updateTabBarSelection(s),c?.({errMsg:`switchTab:ok`}),u?.();return}this.webviewAnimaEnd=!1;try{let e=this.currentTabPath,t=e?this.tabBarBridges.get(e):null,n=!!t&&this.bridgeList.length===1&&this.bridgeList[0]===t;for(;this.bridgeList.length>0;){let e=this.bridgeList[this.bridgeList.length-1];if(this._isTabBarPage(e.opts.pagePath))break;e.pageHide(),e.destroy(),e.webview?.el?.remove(),this.bridgeList.pop()}if(t&&t!==this.tabBarBridges.get(s)){n&&t.pageHide(),t.webview?.el&&(t.webview.el.style.display=`none`);let e=this.bridgeList.indexOf(t);e>=0&&this.bridgeList.splice(e,1)}let r=this.tabBarBridges.get(s),i=this.appConfig.modules[s],o=N(this.appConfig.app,i);this.updateTargetPageColorStyle(o),r||(r=await this.createBridge({pagePath:s,query:a,scene:this.appInfo.scene,jscore:this.jscore,isRoot:!0,root:i?.root||`main`,appId:this.appInfo.appId,pages:this.appConfig.app.pages,configInfo:o}),this.tabBarBridges.set(s,r),r.start());let l=r.webview.el;this._setBridgeTabBarInset(r,!0),l.classList.remove(`dimina-native-view--before-enter`,`dimina-native-view--slide-out`,`dimina-native-view--enter-anima`,`dimina-native-view--linear-anima`,`dimina-native-view--instage`),l.style.display=``,l.style.zIndex=1,this.bridgeList.includes(r)||this.bridgeList.push(r),this.currentTabPath=s,r.pageShow(),this._setTabBarVisible(!0),this._updateTabBarSelection(s),this._syncHash(),c?.({errMsg:`switchTab:ok`})}catch(e){l?.({errMsg:`switchTab:fail ${e.message}`})}finally{this.webviewAnimaEnd=!0,u?.()}}_initTabBar(){let e=this.appConfig?.app?.tabBar;!e||!Array.isArray(e.list)||e.list.length===0||(this.tabBarConfig=e,this.tabBarPaths=e.list.map(e=>this._normalizePagePath(e.pagePath)),this.tabBarBadges=e.list.map(()=>``),this.tabBarRedDots=e.list.map(()=>!1),this.tabBarApiVisible=!0,this._renderTabBar())}_renderTabBar(){if(this.tabBarEl=this.el.querySelector(`.dimina-mini-app__tabbar`),!this.tabBarEl)return;let{color:e,backgroundColor:t,borderStyle:n,list:r}=this.tabBarConfig,i=this._sanitizeCssColor(e)||`#999999`,a=this._sanitizeCssColor(t)||`#ffffff`;this.tabBarEl.textContent=``;let o=document.createElement(`div`);o.className=`dimina-tabbar`,o.style.backgroundColor=a,o.style.borderTopColor=this._getTabBarBorderColor(n),r.forEach((e,t)=>{let n=this._normalizePagePath(e.pagePath),r=document.createElement(`div`);r.className=`dimina-tabbar-item`,r.dataset.path=n,r.dataset.index=String(t),r.dataset.text=e.text||``;let a=this._resolveTabBarIcon(e.iconPath);a&&r.appendChild(this._createTabBarIcon(a,`dimina-tabbar-icon-default`));let s=this._resolveTabBarIcon(e.selectedIconPath);s&&r.appendChild(this._createTabBarIcon(s,`dimina-tabbar-icon-selected`));let c=document.createElement(`span`);c.className=`dimina-tabbar-text`,c.style.color=i,c.textContent=e.text||``,r.appendChild(c);let l=document.createElement(`span`);l.className=`dimina-tabbar-badge`,l.hidden=!0,r.appendChild(l);let u=document.createElement(`span`);u.className=`dimina-tabbar-red-dot`,u.hidden=!0,r.appendChild(u),o.appendChild(r)}),this.tabBarEl.appendChild(o),this.tabBarEl.addEventListener(`click`,e=>{let t=e.target.closest(`.dimina-tabbar-item`);if(!t)return;let n=t.dataset.path;n&&n!==this.currentTabPath&&this.switchTab({url:`/${n}`})}),typeof ResizeObserver<`u`&&(this._tabBarResizeObserver?.disconnect(),this._tabBarResizeObserver=new ResizeObserver(()=>this._syncTabBarHeightVar()),this._tabBarResizeObserver.observe(this.tabBarEl))}_createTabBarIcon(e,t){let n=document.createElement(`img`);return n.className=`dimina-tabbar-icon ${t}`,n.src=e,n.alt=``,n.addEventListener(`error`,()=>{n.style.display=`none`}),n}_sanitizeCssColor(e){if(!e||typeof e!=`string`)return``;let t=e.trim();return t.length===0||t.length>64?``:/[<>"';{}()\\]/.test(t)?/^(?:rgb|rgba|hsl|hsla)\(\s*[\d.,%\s/-]+\)$/i.test(t)?t:``:t}_getTabBarBorderColor(e){return e===`white`?`#ffffff`:`#e0e0e0`}_getTabBarHeight(){if(!this.tabBarEl)return this.tabBarHeight;let e=this.tabBarEl.getBoundingClientRect().height;if(!e&&this.tabBarEl.style.display===`none`){let t=this.tabBarEl.style.display,n=this.tabBarEl.style.visibility;this.tabBarEl.style.visibility=`hidden`,this.tabBarEl.style.display=`block`,e=this.tabBarEl.getBoundingClientRect().height,this.tabBarEl.style.display=t,this.tabBarEl.style.visibility=n}return e>0&&(this.tabBarHeight=e),this.tabBarHeight}_syncTabBarHeightVar(){let e=this._getTabBarHeight();this.el.style.setProperty(`--dimina-tabbar-height`,`${e}px`),this._syncTabBarBridgeInsets()}_setBridgeTabBarInset(e,t){let n=e?.webview?.el;if(n){if(!t){n.style.removeProperty(`bottom`);return}n.style.bottom=`${this._getTabBarHeight()}px`}}_syncTabBarBridgeInsets(){for(let e of this.tabBarBridges.values())this._setBridgeTabBarInset(e,!0)}_joinBaseUrl(...e){return`${`/`.endsWith(`/`)?`/`:`//`}${e.map(e=>String(e).trim().replace(/^\/+|\/+$/g,``)).filter(Boolean).join(`/`)}`}_resolveTabBarIcon(e){if(!e||typeof e!=`string`)return null;let t=e.trim();if(!t)return null;if(/^(?:data:|blob:|https?:|\/\/)/i.test(t))return t;let n=t.replace(/^\/+/,``).replace(/^\.\//,``),r=`${this.appId}/`;return n.startsWith(r)?this._joinBaseUrl(n):this._joinBaseUrl(this.appId,`main`,n)}_resolveBackgroundAudioUrl(e){if(!e||typeof e!=`string`)return``;let t=e.trim();if(!t)return``;if(/^(?:[a-z][a-z\d+.-]*:|\/\/)/i.test(t))return t;let n=t.replace(/^\/+/,``).replace(/^\.\//,``);return n.startsWith(`${this.appId}/`)?this._joinBaseUrl(n):this._joinBaseUrl(this.appId,`main`,n)}_setTabBarVisible(e){if(!this.tabBarEl)return;let t=this.bridgeList[this.bridgeList.length-1],n=this._normalizePagePath(t?.opts?.pagePath),r=!!n&&n===this.currentTabPath&&this._isTabBarPage(n),i=e&&this.tabBarApiVisible&&r;this.tabBarEl.style.display=i?`block`:`none`,this._syncTabBarHeightVar()}_updateTabBarSelection(e){if(!this.tabBarEl||!this.tabBarConfig)return;let t=this.tabBarConfig.color||`#999999`,n=this.tabBarConfig.selectedColor||`#1890ff`;this.tabBarEl.querySelectorAll(`.dimina-tabbar-item`).forEach(r=>{let i=r.getAttribute(`data-path`)===e,a=r.querySelector(`.dimina-tabbar-text`),o=r.querySelector(`.dimina-tabbar-icon-default`),s=r.querySelector(`.dimina-tabbar-icon-selected`);a&&(a.style.color=i?n:t),o&&(o.style.display=i?`none`:`block`),s&&(s.style.display=i?`block`:`none`),r.classList.toggle(`dimina-tabbar-item--selected`,i)})}_getTabBarItemEl(e){return this.tabBarEl?.querySelector(`.dimina-tabbar-item[data-index="${e}"]`)||null}_validateTabBarIndex(e,t,n,r){let i=this.tabBarConfig?.list?.length||0;if(!i||!this.tabBarEl)return n?.({errMsg:`${e}:fail tabBar not configured`}),r?.(),!1;let a=Number(t);return t==null||!Number.isInteger(a)||a<0||a>=i?(n?.({errMsg:`${e}:fail invalid index ${t}`}),r?.(),!1):!0}_replaceTabBarItemIcons(e,t){let n=e.querySelector(`.dimina-tabbar-text`);e.querySelectorAll(`.dimina-tabbar-icon-default, .dimina-tabbar-icon-selected`).forEach(e=>e.remove());let r=this._resolveTabBarIcon(t.iconPath);r&&e.insertBefore(this._createTabBarIcon(r,`dimina-tabbar-icon-default`),n);let i=this._resolveTabBarIcon(t.selectedIconPath);i&&e.insertBefore(this._createTabBarIcon(i,`dimina-tabbar-icon-selected`),n)}setTabBarStyle(e={}){let{color:t,selectedColor:n,backgroundColor:r,borderStyle:i,success:a,fail:o,complete:s}=e,c=this.createCallbackFunction(a),l=this.createCallbackFunction(o),u=this.createCallbackFunction(s);if(!this.tabBarConfig||!this.tabBarEl){l?.({errMsg:`setTabBarStyle:fail tabBar not configured`}),u?.();return}let d=i===`black`||i===`white`?i:null,f=t===void 0?null:this._sanitizeCssColor(t),p=n===void 0?null:this._sanitizeCssColor(n),m=r===void 0?null:this._sanitizeCssColor(r);f&&(this.tabBarConfig.color=f),p&&(this.tabBarConfig.selectedColor=p),m&&(this.tabBarConfig.backgroundColor=m),d&&(this.tabBarConfig.borderStyle=d);let h=this.tabBarEl.querySelector(`.dimina-tabbar`);h&&(m&&(h.style.backgroundColor=m),d&&(h.style.borderTopColor=this._getTabBarBorderColor(d))),this._updateTabBarSelection(this.currentTabPath),c?.({errMsg:`setTabBarStyle:ok`}),u?.()}setTabBarItem(e={}){let{index:t,text:n,iconPath:r,selectedIconPath:i}=e,{onSuccess:a,onFail:o,onComplete:s}=this._createApiCallbacks(e);if(!this._validateTabBarIndex(`setTabBarItem`,t,o,s))return;let c=Number(t),l=this.tabBarConfig.list[c],u={...l,text:n===void 0?l.text:n,iconPath:r===void 0?l.iconPath:r,selectedIconPath:i===void 0?l.selectedIconPath:i};this.tabBarConfig.list[c]=u;let d=this._getTabBarItemEl(c);if(d){let e=d.querySelector(`.dimina-tabbar-text`);e&&(e.textContent=u.text||``),(r!==void 0||i!==void 0)&&this._replaceTabBarItemIcons(d,u),this._updateTabBarSelection(this.currentTabPath)}a?.({errMsg:`setTabBarItem:ok`}),s?.()}showTabBar(e={}){let{onSuccess:t,onComplete:n}=this._createApiCallbacks(e);this.tabBarApiVisible=!0,this._setTabBarVisible(!0),t?.({errMsg:`showTabBar:ok`}),n?.()}hideTabBar(e={}){let{onSuccess:t,onComplete:n}=this._createApiCallbacks(e);this.tabBarApiVisible=!1,this._setTabBarVisible(!1),t?.({errMsg:`hideTabBar:ok`}),n?.()}setTabBarBadge(e={}){let{index:t,text:n=``}=e,{onSuccess:r,onFail:i,onComplete:a}=this._createApiCallbacks(e);if(!this._validateTabBarIndex(`setTabBarBadge`,t,i,a))return;let o=Number(t);this.tabBarBadges[o]=String(n),this.tabBarRedDots[o]=!1;let s=this._getTabBarItemEl(o),c=s?.querySelector(`.dimina-tabbar-badge`),l=s?.querySelector(`.dimina-tabbar-red-dot`);c&&(c.textContent=this.tabBarBadges[o],c.hidden=this.tabBarBadges[o].length===0,c.style.display=this.tabBarBadges[o].length===0?`none`:`flex`),l&&(l.hidden=!0),r?.({errMsg:`setTabBarBadge:ok`}),a?.()}removeTabBarBadge(e={}){let{index:t}=e,{onSuccess:n,onFail:r,onComplete:i}=this._createApiCallbacks(e);if(!this._validateTabBarIndex(`removeTabBarBadge`,t,r,i))return;let a=Number(t);this.tabBarBadges[a]=``;let o=this._getTabBarItemEl(a)?.querySelector(`.dimina-tabbar-badge`);o&&(o.textContent=``,o.hidden=!0,o.style.display=`none`),n?.({errMsg:`removeTabBarBadge:ok`}),i?.()}showTabBarRedDot(e={}){let{index:t}=e,{onSuccess:n,onFail:r,onComplete:i}=this._createApiCallbacks(e);if(!this._validateTabBarIndex(`showTabBarRedDot`,t,r,i))return;let a=Number(t);this.tabBarRedDots[a]=!0,this.tabBarBadges[a]=``;let o=this._getTabBarItemEl(a),s=o?.querySelector(`.dimina-tabbar-badge`),c=o?.querySelector(`.dimina-tabbar-red-dot`);s&&(s.textContent=``,s.hidden=!0,s.style.display=`none`),c&&(c.hidden=!1),n?.({errMsg:`showTabBarRedDot:ok`}),i?.()}hideTabBarRedDot(e={}){let{index:t}=e,{onSuccess:n,onFail:r,onComplete:i}=this._createApiCallbacks(e);if(!this._validateTabBarIndex(`hideTabBarRedDot`,t,r,i))return;let a=Number(t);this.tabBarRedDots[a]=!1;let o=this._getTabBarItemEl(a)?.querySelector(`.dimina-tabbar-red-dot`);o&&(o.hidden=!0),n?.({errMsg:`hideTabBarRedDot:ok`}),i?.()}_createBackgroundAudio(e=``){let t=globalThis.Audio;if(typeof t!=`function`)return null;let n=new t;n.preload=`auto`;let r={audio:n,dataUrl:e,title:``,coverImgUrl:``,status:2};return n.addEventListener?.(`play`,()=>{r.status=1}),n.addEventListener?.(`pause`,()=>{r.status!==2&&(r.status=0)}),n.addEventListener?.(`ended`,()=>{r.status=2}),n.addEventListener?.(`error`,()=>{r.status=2}),this._backgroundAudio=r,r}_releaseBackgroundAudio(){this._backgroundAudioRequestId++;let e=this._backgroundAudio;if(!e?.audio){this._backgroundAudio=null;return}e.status=2;try{e.audio.pause?.(),e.audio.removeAttribute?.(`src`),e.audio.load?.()}catch{}this._backgroundAudio=null}_getBackgroundAudioDownloadPercent(e){let t=Number.isFinite(e?.duration)?e.duration:0,n=e?.buffered;if(!t||!n?.length)return 0;let r=0;for(let e=0;e<n.length;e++)r=Math.max(r,n.end(e));return Math.max(0,Math.min(100,Math.round(r/t*100)))}_getBackgroundAudioState(){let e=this._backgroundAudio,t=e?.audio;if(!t)return{status:2,duration:0,currentPosition:0,downloadPercent:0,dataUrl:``};let n=Number.isFinite(t.duration)?t.duration:0,r=Number.isFinite(t.currentTime)?t.currentTime:0;return{status:e.status,duration:Math.floor(n),currentPosition:Math.floor(r),downloadPercent:this._getBackgroundAudioDownloadPercent(t),dataUrl:e.dataUrl||t.currentSrc||t.src||``}}playBackgroundAudio(e={}){let{dataUrl:t,title:n=``,coverImgUrl:r=``}=e,{onSuccess:i,onFail:a,onComplete:o}=this._createApiCallbacks(e);if(!t){let e={errMsg:`playBackgroundAudio:fail dataUrl is required`};a?.(e),o?.(e);return}let s=this._backgroundAudio,c=!s?.audio||s.dataUrl!==t;if(c&&(this._releaseBackgroundAudio(),s=this._createBackgroundAudio(t)),!s?.audio){let e={errMsg:`playBackgroundAudio:fail audio is not supported`};a?.(e),o?.(e);return}s.dataUrl=t,s.title=n,s.coverImgUrl=r;let l=++this._backgroundAudioRequestId;c&&(s.audio.src=this._resolveBackgroundAudioUrl(t)),Promise.resolve(s.audio.play?.()).then(()=>{if(l!==this._backgroundAudioRequestId||s!==this._backgroundAudio){if(this._destroyed)return;let e={errMsg:`playBackgroundAudio:fail playback interrupted`};a?.(e),o?.(e);return}s.status=1;let e={errMsg:`playBackgroundAudio:ok`};i?.(e),o?.(e)}).catch(e=>{if(l!==this._backgroundAudioRequestId||s!==this._backgroundAudio){if(this._destroyed)return;let e={errMsg:`playBackgroundAudio:fail playback interrupted`};a?.(e),o?.(e);return}s.status=2;let t={errMsg:`playBackgroundAudio:fail ${e?.message||`audio play failed`}`};a?.(t),o?.(t)})}pauseBackgroundAudio(e={}){let{onSuccess:t,onFail:n,onComplete:r}=this._createApiCallbacks(e),i=this._backgroundAudio;if(!i?.audio){let e={errMsg:`pauseBackgroundAudio:fail no background audio`};n?.(e),r?.(e);return}i.status=0,i.audio.pause?.();let a={errMsg:`pauseBackgroundAudio:ok`};t?.(a),r?.(a)}stopBackgroundAudio(e={}){let{onSuccess:t,onComplete:n}=this._createApiCallbacks(e);this._releaseBackgroundAudio();let r={errMsg:`stopBackgroundAudio:ok`};t?.(r),n?.(r)}seekBackgroundAudio(e={}){let{position:t=0}=e,{onSuccess:n,onFail:r,onComplete:i}=this._createApiCallbacks(e),a=this._backgroundAudio;if(!a?.audio){let e={errMsg:`seekBackgroundAudio:fail no background audio`};r?.(e),i?.(e);return}try{a.audio.currentTime=Math.max(0,Number(t)||0);let e={errMsg:`seekBackgroundAudio:ok`};n?.(e),i?.(e)}catch(e){let t={errMsg:`seekBackgroundAudio:fail ${e?.message||`seek failed`}`};r?.(t),i?.(t)}}getBackgroundAudioPlayerState(e={}){let{onSuccess:t,onComplete:n}=this._createApiCallbacks(e),r={...this._getBackgroundAudioState(),errMsg:`getBackgroundAudioPlayerState:ok`};t?.(r),n?.(r)}navigateToMiniProgram(e){let{appId:t,path:n}=e;X.openApp({appId:t,path:n,scene:1037},this.parent)}exitMiniProgram(e={}){let{onSuccess:t,onComplete:n}=this._createApiCallbacks(e),r={errMsg:`exitMiniProgram:ok`};t?.(r),n?.(r),this.closeMiniProgram()}bindMoreEvent(){let e=this.el.querySelector(`.dimina-mini-app-navigation__actions-variable`),t=this.el.querySelector(`.dimina-mini-app-menu__mask`),n=this.el.querySelector(`.dimina-mini-app-menu`),r=this.el.querySelector(`.dimina-mini-app-menu__footer-btn--cancel`);t.addEventListener(`transitionend`,()=>{t.classList.contains(`show`)||(t.style.display=`none`)}),e.onclick=()=>this.openMiniAppMenu(),t.onclick=()=>this.closeMiniAppMenu(),r.onclick=()=>this.closeMiniAppMenu(),n.onclick=e=>e.stopPropagation()}bindCloseEvent(){let e=this.el.querySelector(`.dimina-mini-app-navigation__actions-close`);e.onclick=()=>{this.closeMiniProgram()}}destroy(){this._destroyed=!0,this.debugController?.cancel?.(),this.unbindHostThemeChange();for(let e of this._extSubscriptions.values())e?.();this._extSubscriptions.clear(),this._tabBarResizeObserver?.disconnect(),this._tabBarResizeObserver=null;for(let e of this._modalPendingTimers)clearTimeout(e);this._modalPendingTimers.clear();for(let e of this._modalStack)e.mask?.remove(),e.dialog?.remove();this._modalStack.length=0,this._unlockModalPageTouch(),this.hideToast({}),this._releaseBackgroundAudio(),X.popView(),this.jscore.destroy()}getNetworkType(e){let{success:t}=e;this.createCallbackFunction(t)?.({networkType:`wifi`})}login(e={}){let{timeout:t=0,success:n,fail:r,complete:i}=e,a=this.createCallbackFunction(n),o=this.createCallbackFunction(r),s=this.createCallbackFunction(i);if(t<0){o?.({errMsg:`login:fail invalid timeout`,code:-1}),s?.();return}a?.({data:{code:this._createLoginCode(),status:200,isLogin:1},code:200,errMsg:`login:ok`}),s?.()}request({url:e,data:t,header:n={},timeout:r=0,method:i=`GET`,dataType:a=`json`,responseType:o=`text`,success:s,fail:c,complete:l}){let u={method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({url:e,data:t,header:n,timeout:r,method:i,dataType:a,responseType:o})},d=this.createCallbackFunction(s),f=this.createCallbackFunction(c),p=this.createCallbackFunction(l),m=new URL(`/proxy`,window.location.href).toString();fetch(m,u).then(e=>{if(!e.ok){let t=Error(e.statusText);throw t.code=e.status,t}let t={};switch(e.headers.forEach((e,n)=>{t[n]=e}),a){case`json`:return e.json().then(n=>({data:n,header:t,statusCode:e.status}));case`arraybuffer`:return e.arrayBuffer().then(n=>({data:n,header:t,statusCode:e.status}));default:return e.text().then(n=>({data:n,header:t,statusCode:e.status}))}}).then(e=>{d?.(e)}).catch(e=>{f?.({errMsg:e.message,errno:e.code})}).finally(()=>{p?.()})}_createLoginCode(){return typeof crypto<`u`&&crypto.randomUUID?`dimina_${crypto.randomUUID().replace(/-/g,``)}`:`dimina_${Date.now().toString(36)}${Math.random().toString(36).slice(2,10)}`}downloadFile({taskId:e,url:t,header:n={},filePath:r,success:i,fail:a,complete:o}){let s=this.createCallbackFunction(i),c=this.createCallbackFunction(a),l=this.createCallbackFunction(o),u=this._networkTask(e),d=new AbortController;if(u&&(u.controller=d),!t){c?.({errMsg:`downloadFile:fail invalid url`}),l?.();return}fetch(t,{headers:n,signal:d.signal}).then(async n=>{let i={};if(n.headers.forEach((e,t)=>{i[t]=e}),this._emitNetworkTaskCallbacks(e,`header`,{header:i}),!n.ok){let e=Error(`HTTP ${n.status}`);throw e.code=n.status,e}let a=Number(n.headers.get(`content-length`))||0,o=0,c;if(n.body?.getReader){let t=n.body.getReader(),r=[];for(;;){let{done:n,value:i}=await t.read();if(n)break;r.push(i),o+=i.length,this._emitNetworkTaskCallbacks(e,`progress`,{progress:a?Math.round(o/a*100):0,totalBytesWritten:o,totalBytesExpectedToWrite:a})}c=new Blob(r,{type:n.headers.get(`content-type`)||`application/octet-stream`})}else c=await n.blob(),o=c.size,this._emitNetworkTaskCallbacks(e,`progress`,{progress:100,totalBytesWritten:o,totalBytesExpectedToWrite:a||o});let l=this._guessExtension(t,n.headers.get(`content-type`)),u=r||this._createTempFilePath(l),d=u.split(`/`).pop()||`download.${l}`,f=new File([c],d,{type:c.type||`application/octet-stream`});this._storeTempFile(u,f);let p={statusCode:n.status};r?p.filePath=u:p.tempFilePath=u,s?.(p)}).catch(e=>{if(e.name===`AbortError`){c?.({errMsg:`downloadFile:fail abort`});return}c?.({errMsg:`downloadFile:fail ${e.message}`,errno:e.code})}).finally(()=>{l?.(),this._networkTasks.delete(e)})}uploadFile({taskId:e,url:t,filePath:n,name:r,header:i={},formData:a={},success:o,fail:s,complete:c}){let l=this.createCallbackFunction(o),u=this.createCallbackFunction(s),d=this.createCallbackFunction(c),f=this._networkTask(e),p=new AbortController;if(f&&(f.controller=p),!t||!n||!r){u?.({errMsg:`uploadFile:fail missing required parameters`}),d?.();return}let m=this._getTempFile(n);if(!m){u?.({errMsg:`uploadFile:fail file does not exist`}),d?.();return}let h=new FormData;h.append(r,m,m.name),Object.entries(a||{}).forEach(([e,t])=>{t!=null&&h.append(e,String(t))}),fetch(t,{method:`POST`,headers:i,body:h,signal:p.signal}).then(async t=>{let n={};t.headers.forEach((e,t)=>{n[t]=e}),this._emitNetworkTaskCallbacks(e,`header`,{header:n}),this._emitNetworkTaskCallbacks(e,`progress`,{progress:100,totalBytesSent:m.size,totalBytesExpectedToSend:m.size});let r=await t.text();if(!t.ok){let e=Error(`HTTP ${t.status}`);throw e.code=t.status,e}l?.({data:r,statusCode:t.status})}).catch(e=>{if(e.name===`AbortError`){u?.({errMsg:`uploadFile:fail abort`});return}u?.({errMsg:`uploadFile:fail ${e.message}`,errno:e.code})}).finally(()=>{d?.(),this._networkTasks.delete(e)})}getSystemInfoAsync(e){let t=this.parent.parent.root.querySelector(`.iphone__status-bar`).getBoundingClientRect(),n=this.parent.el.querySelector(`.dimina-native-webview__root`).getBoundingClientRect(),{success:r,complete:i}=e,a=this.createCallbackFunction(r),o=this.createCallbackFunction(i);a?.({statusBarHeight:t.height,brand:`devtools`,mode:`default`,model:`web`,platform:`devtools`,system:`web`,deviceOrientation:`portrait`,SDKVersion:`3.0.0`,language:`zh_CN`,wifiEnabled:!0,safeArea:{width:n.width,height:n.height,top:n.top,bottom:n.bottom,left:n.left,right:n.right}}),o?.()}getMenuButtonBoundingClientRect(){let e=this.el.querySelector(`.dimina-mini-app-navigation__actions`).getBoundingClientRect(),t=(this.parent.parent.root.querySelector(`.iphone__status-bar`)?.getBoundingClientRect().height||20)+4,n=t+e.height;return{top:t,right:e.right,bottom:n,left:e.left,width:e.width,height:e.height,x:e.x,y:t}}getHostEnvSnapshot(){let e=typeof this.getDebugStorageSnapshot==`function`?this.getDebugStorageSnapshot():this.getStorageSnapshotSync?.()||{},t={menuRect:this.getMenuButtonBoundingClientRect(),systemInfo:this.getSystemInfoSync(),analyticsBaseContext:this.appInfo?.analyticsBaseContext,vConsoleEnabled:this.debugController?.isEnabled?.()??F.isEnabled(this.appId),storageSnapshot:e};return this.debugHistoryStore&&(t.debugStorageSnapshot=e,t.debugSessionId=this.debugSessionId,t.debugHistorySnapshot=this.debugHistoryStore.getSnapshot(e)),t}recordDebugPrint(e={}){!this.debugController?.isEnabled?.()&&!F.isEnabled(this.appId)||(e.kind===`console`&&typeof e.method==`string`?this.debugHistoryStore.appendLog({type:e.method,args:e.args||[]}):e.group===`network`&&this.debugHistoryStore.upsertNetwork({action:e.action,id:e.id,value:e.value}))}handleDebugHistoryEvent(e={}){if(!e||typeof e!=`object`)return;let t=!1;switch(e.type){case`clearLogs`:t=this.debugHistoryStore.clearLogs();break;case`clearNetwork`:t=this.debugHistoryStore.clearNetwork();break;default:return}t&&this.publishDebugHistoryChanged()}publishDebugHistoryChanged(){this.publishHostEnvChanged({debugSessionId:this.debugSessionId,debugHistorySnapshot:this.debugHistoryStore.getSnapshot(this.getDebugStorageSnapshot())})}getDebugStorageSnapshot(){let e={},t=`${this.appId}_`;try{for(let n=0;n<localStorage.length;n+=1){let r=localStorage.key(n);typeof r==`string`&&r.startsWith(t)&&(e[r.slice(t.length)]=localStorage.getItem(r))}}catch{}return e}bindHostThemeChange(){let e=globalThis.matchMedia?.(`(prefers-color-scheme: dark)`);e&&(this._themeMediaQueryList=e,this._themeMediaQueryHandler=()=>{this.publishHostEnvChanged({systemInfo:this.getSystemInfoSync()})},typeof e.addEventListener==`function`?e.addEventListener(`change`,this._themeMediaQueryHandler):e.addListener?.(this._themeMediaQueryHandler))}unbindHostThemeChange(){!this._themeMediaQueryList||!this._themeMediaQueryHandler||(typeof this._themeMediaQueryList.removeEventListener==`function`?this._themeMediaQueryList.removeEventListener(`change`,this._themeMediaQueryHandler):this._themeMediaQueryList.removeListener?.(this._themeMediaQueryHandler),this._themeMediaQueryList=null,this._themeMediaQueryHandler=null)}publishHostEnvChanged(e){let t=new Set([...this.bridgeList,...this.tabBarBridges.values()]);for(let n of t){if(!n?.isResourceLoaded?.())continue;let t={type:`hostEnvChanged`,body:{bridgeId:n.id,hostEnv:e}};n.jscore.postMessage(t),n.webview.postMessage(t)}}getSystemInfoSync(){let e=this.parent.parent.root.querySelector(`.iphone__status-bar`),t=this.parent.el.querySelector(`.dimina-native-webview__root`)?.getBoundingClientRect(),n=t?.width||this.el.clientWidth||375,r=t?.height||this.el.clientHeight||667,i=e?.getBoundingClientRect().height||20;return{brand:`devtools`,model:`web`,platform:`devtools`,system:`web`,SDKVersion:`3.0.0`,pixelRatio:globalThis.devicePixelRatio||1,screenWidth:n,screenHeight:r,windowWidth:n,windowHeight:r,statusBarHeight:i,safeArea:{left:0,right:n,top:i,bottom:r,width:n,height:Math.max(r-i,0)},enableDebug:this.debugController?.isEnabled?.()??F.isEnabled(this.appId),host:{appId:``},language:navigator.language||`zh_CN`,version:``,theme:globalThis.matchMedia?.(`(prefers-color-scheme: dark)`)?.matches?`dark`:`light`,fontSizeScaleFactor:1,fontSizeSetting:16}}showToast(e={}){let{title:t=``,duration:n=1500,icon:r=`success`,mask:i=!1,success:a,complete:o}=e;if(!t)return;this.hideToast({});let s=this.createCallbackFunction(a),c=this.createCallbackFunction(o),l=null;i&&(l=document.createElement(`div`),l.className=`dimina-toast-mask`,this.el.appendChild(l));let u=document.createElement(`div`);u.className=`dimina-toast dimina-toast--${r}`,r===`none`&&u.classList.add(`dimina-toast--text-only`);let d=document.createElement(`p`);d.textContent=String(t),u.appendChild(d),this.el.appendChild(u),this.toastInfo.dom=u,this.toastInfo.maskEl=l,this.toastInfo.timer=setTimeout(()=>{u.remove(),l?.remove(),this.toastInfo.dom===u&&(this.toastInfo.dom=null,this.toastInfo.maskEl=null,this.toastInfo.timer=null)},n),s?.(),c?.()}hideToast(e={}){let{success:t,complete:n}=e,r=this.createCallbackFunction(t),i=this.createCallbackFunction(n);this.toastInfo.dom&&(this.toastInfo.dom.remove(),this.toastInfo.dom=null),this.toastInfo.maskEl&&(this.toastInfo.maskEl.remove(),this.toastInfo.maskEl=null),this.toastInfo.timer&&(clearTimeout(this.toastInfo.timer),this.toastInfo.timer=null),r?.(),i?.()}showLoading(e={}){this.showToast({...e,icon:`loading`})}hideLoading(e={}){this.hideToast(e)}_lockModalPageTouch(){if(this._modalPageTouchTarget)return;let e=(this.bridgeList?.[this.bridgeList.length-1])?.webview?.iframe?.contentWindow;e?.addEventListener&&(e.addEventListener(`touchmove`,q,{capture:!0,passive:!1}),this._modalPageTouchTarget=e)}_unlockModalPageTouch(){this._modalPageTouchTarget&&=(this._modalPageTouchTarget.removeEventListener(`touchmove`,q,!0),null)}showModal(e){if(this._destroyed)return;this._modalStack.length===0&&this._lockModalPageTouch();let t=this._mountModal(e||{});this._modalStack.push(t),this._updateModalView(),t.mask.classList.add(`show`);let n=setTimeout(()=>{this._modalPendingTimers.delete(n),!this._destroyed&&this._modalStack.includes(t)&&t.dialog.classList.add(`show`)},100);this._modalPendingTimers.add(n)}_updateModalView(){let e=this._modalStack.length-1;for(let t=0;t<this._modalStack.length;t++){let n=this._modalStack[t];t===e?(n.mask.classList.remove(`dimina-modal--occluded`),n.dialog.classList.remove(`dimina-modal--occluded`)):(n.mask.classList.add(`dimina-modal--occluded`),n.dialog.classList.add(`dimina-modal--occluded`))}}_mountModal(e){let{title:t=``,content:n=``,showCancel:r=!0,cancelText:i=`取消`,cancelColor:a=`#000`,confirmText:o=`确定`,confirmColor:s=`#576b95`,success:c,complete:l}=e,u=this.createCallbackFunction(c),d=this.createCallbackFunction(l),f=document.createElement(`div`);f.className=`dimina-dialog-mask`,f.addEventListener(`touchmove`,K,{passive:!1});let p=document.createElement(`div`);p.className=`dimina-dialog`;let m=this._modalStack.length;if(f.style.zIndex=String(1100+m*20),p.style.zIndex=String(1110+m*20),t){let e=document.createElement(`h2`);e.className=`dimina-dialog__title`,e.textContent=String(t),p.appendChild(e)}if(n){let e=document.createElement(`p`);e.className=`dimina-dialog__content`,e.textContent=String(n),p.appendChild(e)}let h=document.createElement(`div`);h.className=`dimina-dialog__buttons`;let g=!1,_={mask:f,dialog:p,close:null},v=e=>{if(g)return;g=!0;let t=this._modalStack.indexOf(_);t>=0&&this._modalStack.splice(t,1),this._modalStack.length===0?(f.classList.remove(`show`),p.classList.remove(`show`),setTimeout(()=>{f.remove(),p.remove()},200)):(f.remove(),p.remove()),this._updateModalView(),this._modalStack.length===0&&this._unlockModalPageTouch(),u?.(e),d?.()};if(_.close=v,r){let e=document.createElement(`button`);e.type=`button`,e.className=`dimina-dialog__button`,e.style.color=a,e.textContent=String(i),e.addEventListener(`click`,()=>{v({cancel:!0,confirm:!1,errMsg:`showModal:ok`})}),h.appendChild(e)}let y=document.createElement(`button`);return y.type=`button`,y.className=`dimina-dialog__button`,y.style.color=s,y.textContent=String(o),y.addEventListener(`click`,()=>{v({cancel:!1,confirm:!0,errMsg:`showModal:ok`})}),h.appendChild(y),p.appendChild(h),this.el.appendChild(f),this.el.appendChild(p),_}showActionSheet(e){let{itemList:t=[],itemColor:n=`#000`,success:r,fail:i,complete:a}=e||{};if(!Array.isArray(t)||t.length===0){i&&this.createCallbackFunction(i)({errMsg:`showActionSheet:fail`}),a&&this.createCallbackFunction(a)();return}let o=document.createElement(`div`);o.className=`dimina-action-sheet-mask`;let s=document.createElement(`div`);s.className=`dimina-action-sheet`;let c=()=>{o.remove(),s.remove()};t.forEach((e,t)=>{let i=document.createElement(`div`);i.className=`dimina-action-sheet-item`,i.style.color=n,i.textContent=e,i.onclick=()=>{c(),r&&this.createCallbackFunction(r)({tapIndex:t}),a&&this.createCallbackFunction(a)()},s.appendChild(i)});let l=document.createElement(`div`);l.className=`dimina-action-sheet-cancel`,l.textContent=`取消`,l.onclick=()=>{c(),i&&this.createCallbackFunction(i)({errMsg:`showActionSheet:fail cancel`}),a&&this.createCallbackFunction(a)()},s.appendChild(l),o.onclick=c,this.el.appendChild(o),this.el.appendChild(s),requestAnimationFrame(()=>requestAnimationFrame(()=>{s.classList.add(`show`),o.classList.add(`show`)}))}setNavigationBarTitle(e){let{title:t,success:n,fail:r,complete:i}=e,a=this.createCallbackFunction(n),o=this.createCallbackFunction(r),s=this.createCallbackFunction(i);try{let e=this.bridgeList[this.bridgeList.length-1].webview.el.querySelector(`.dimina-native-webview__navigation-title`);e?(e.textContent=t||``,a?.({errMsg:`setNavigationBarTitle:ok`})):o?.({errMsg:`setNavigationBarTitle:fail Navigation title element not found`})}catch(e){o?.({errMsg:`setNavigationBarTitle:fail ${e.message}`})}finally{s?.()}}setNavigationBarColor(e){let{frontColor:t,backgroundColor:n,success:r,fail:i,complete:a}=e,o=this.createCallbackFunction(r),s=this.createCallbackFunction(i),c=this.createCallbackFunction(a);try{let e=this.bridgeList[this.bridgeList.length-1].webview.el.querySelector(`.dimina-native-webview__navigation`);e?(t&&(e.querySelector(`.dimina-native-webview__navigation-title`).style.color=t),n&&(e.style.backgroundColor=n),o?.({errMsg:`setNavigationBarColor:ok`})):s?.({errMsg:`setNavigationBarColor:fail Navigation element not found`})}catch(e){s?.({errMsg:`setNavigationBarColor:fail ${e.message}`})}finally{c?.()}}showNavigationBarLoading(e){let{success:t,fail:n,complete:r}=e,i=this.createCallbackFunction(t),a=this.createCallbackFunction(n),o=this.createCallbackFunction(r);try{let e=this.bridgeList[this.bridgeList.length-1].webview.el.querySelector(`.dimina-native-webview__navigation-loading`);e?(e.hidden=!1,i?.({errMsg:`showNavigationBarLoading:ok`})):a?.({errMsg:`showNavigationBarLoading:fail Navigation loading element not found`})}catch(e){a?.({errMsg:`showNavigationBarLoading:fail ${e.message}`})}finally{o?.()}}hideNavigationBarLoading(e){let{success:t,fail:n,complete:r}=e,i=this.createCallbackFunction(t),a=this.createCallbackFunction(n),o=this.createCallbackFunction(r);try{let e=this.bridgeList[this.bridgeList.length-1].webview.el.querySelector(`.dimina-native-webview__navigation-loading`);e?(e.hidden=!0,i?.({errMsg:`hideNavigationBarLoading:ok`})):a?.({errMsg:`hideNavigationBarLoading:fail Navigation loading element not found`})}catch(e){a?.({errMsg:`hideNavigationBarLoading:fail ${e.message}`})}finally{o?.()}}setBackgroundTextStyle(e){let{textStyle:t,success:n,fail:r,complete:i}=e,a=this.createCallbackFunction(n),o=this.createCallbackFunction(r),s=this.createCallbackFunction(i);try{let e=this.bridgeList[this.bridgeList.length-1].webview.el.querySelector(`.dimina-native-webview__root`);e?(t?e.dataset.backgroundTextStyle=t:delete e.dataset.backgroundTextStyle,a?.({errMsg:`setBackgroundTextStyle:ok`})):o?.({errMsg:`setBackgroundTextStyle:fail Webview root element not found`})}catch(e){o?.({errMsg:`setBackgroundTextStyle:fail ${e.message}`})}finally{s?.()}}setBackgroundColor(e){let{backgroundColor:t,backgroundColorTop:n,backgroundColorBottom:r,success:i,fail:a,complete:o}=e,s=this.createCallbackFunction(i),c=this.createCallbackFunction(a),l=this.createCallbackFunction(o);try{let e=this.bridgeList[this.bridgeList.length-1],i=e.webview.el.querySelector(`.dimina-native-webview__root`),a=e.webview.el.querySelector(`.dimina-native-webview__navigation`);i?((t||n)&&(i.style.backgroundColor=n||t),a&&n&&(a.style.backgroundColor=n),r?(i.style.borderBottomColor=r,i.style.borderBottomStyle=`solid`,i.style.borderBottomWidth=`1px`):(i.style.removeProperty(`border-bottom-color`),i.style.removeProperty(`border-bottom-style`),i.style.removeProperty(`border-bottom-width`)),s?.({errMsg:`setBackgroundColor:ok`})):c?.({errMsg:`setBackgroundColor:fail Webview root element not found`})}catch(e){c?.({errMsg:`setBackgroundColor:fail ${e.message}`})}finally{l?.()}}pageScrollTo(e){let{scrollTop:t,duration:n=300,success:r,fail:i,complete:a}=e,o=this.createCallbackFunction(r),s=this.createCallbackFunction(i),c=this.createCallbackFunction(a);try{let e=this.bridgeList[this.bridgeList.length-1].webview.iframe.contentWindow.document,r=e.scrollingElement||e.documentElement||e.body;r?.scrollTo?(r.scrollTo({top:t,behavior:n>0?`smooth`:`auto`}),setTimeout(()=>{o?.({errMsg:`pageScrollTo:ok`}),c?.()},n)):(s?.({errMsg:`pageScrollTo:fail Webview root element not found`}),c?.())}catch(e){s?.({errMsg:`pageScrollTo:fail ${e.message}`}),c?.()}}startPullDownRefresh(e={}){let{success:t,fail:n,complete:r}=e,i=this.createCallbackFunction(t),a=this.createCallbackFunction(n),o=this.createCallbackFunction(r);try{let e=this.bridgeList[this.bridgeList.length-1];if(!e?.webview){let e={errMsg:`startPullDownRefresh:fail page not found`};a?.(e),o?.(e);return}e.webview.postMessage({type:`invokeAPI`,body:{bridgeId:e.id,moduleId:e.pageId,name:`startPullDownRefresh`}});let t={errMsg:`startPullDownRefresh:ok`};i?.(t),o?.(t)}catch(e){let t={errMsg:`startPullDownRefresh:fail ${e.message}`};a?.(t),o?.(t)}}stopPullDownRefresh(e={}){let{success:t,fail:n,complete:r}=e,i=this.createCallbackFunction(t),a=this.createCallbackFunction(n),o=this.createCallbackFunction(r);try{let e=this.bridgeList[this.bridgeList.length-1];if(!e?.webview){let e={errMsg:`stopPullDownRefresh:fail page not found`};a?.(e),o?.(e);return}e.webview.postMessage({type:`invokeAPI`,body:{bridgeId:e.id,name:`stopPullDownRefresh`}});let t={errMsg:`stopPullDownRefresh:ok`};i?.(t),o?.(t)}catch(e){let t={errMsg:`stopPullDownRefresh:fail ${e.message}`};a?.(t),o?.(t)}}setClipboardData(e){let{data:t,success:n,fail:r,complete:i}=e,a=this.createCallbackFunction(n),o=this.createCallbackFunction(r),s=this.createCallbackFunction(i);try{navigator.clipboard.writeText(t).then(()=>{a?.({errMsg:`setClipboardData:ok`}),s?.()}).catch(e=>{o?.({errMsg:`setClipboardData:fail ${e.message}`}),s?.()})}catch(e){o?.({errMsg:`setClipboardData:fail ${e.message}`}),s?.()}}getClipboardData(e){let{success:t,fail:n,complete:r}=e,i=this.createCallbackFunction(t),a=this.createCallbackFunction(n),o=this.createCallbackFunction(r);try{navigator.clipboard.readText().then(e=>{i?.({data:e,errMsg:`getClipboardData:ok`}),o?.()}).catch(e=>{a?.({errMsg:`getClipboardData:fail ${e.message}`}),o?.()})}catch(e){a?.({errMsg:`getClipboardData:fail ${e.message}`}),o?.()}}setStorage(e){let{key:t,data:n,success:r,fail:i,complete:a}=e,o=this.createCallbackFunction(r),s=this.createCallbackFunction(i),c=this.createCallbackFunction(a);try{let e=`${this.appId}_${t}`,r=typeof n==`object`?JSON.stringify(n):String(n);localStorage.setItem(e,r),o?.({errMsg:`setStorage:ok`})}catch(e){s?.({errMsg:`setStorage:fail ${e.message}`})}finally{c?.()}}setStorageSync(e,t){Array.isArray(e)&&([e,t]=e);let n=`${this.appId}_${e}`,r=typeof t==`object`?JSON.stringify(t):String(t);localStorage.setItem(n,r)}getStorage(e){let{key:t,success:n,fail:r,complete:i}=e,a=this.createCallbackFunction(n),o=this.createCallbackFunction(r),s=this.createCallbackFunction(i);try{let e=`${this.appId}_${t}`,n=localStorage.getItem(e);if(n!==null){let e=n;try{e=JSON.parse(n)}catch{}a?.({data:e,errMsg:`getStorage:ok`})}else o?.({errMsg:`getStorage:fail data not found`})}catch(e){o?.({errMsg:`getStorage:fail ${e.message}`})}finally{s?.()}}getStorageSync(e){let t=`${this.appId}_${e}`,n=localStorage.getItem(t);if(n===null)return``;try{return JSON.parse(n)}catch{return n}}removeStorage(e){let{key:t,success:n,fail:r,complete:i}=e,a=this.createCallbackFunction(n),o=this.createCallbackFunction(r),s=this.createCallbackFunction(i);try{let e=`${this.appId}_${t}`;localStorage.getItem(e)===null||localStorage.removeItem(e),a?.({errMsg:`removeStorage:ok`})}catch(e){o?.({errMsg:`removeStorage:fail ${e.message}`})}finally{s?.()}}removeStorageSync(e){let t=`${this.appId}_${e}`;localStorage.removeItem(t)}clearStorage(e){let{success:t,fail:n,complete:r}=e||{},i=this.createCallbackFunction(t),a=this.createCallbackFunction(n),o=this.createCallbackFunction(r);try{let e=`${this.appId}_`,t=[];for(let n=0;n<localStorage.length;n++){let r=localStorage.key(n);r.startsWith(e)&&t.push(r)}t.forEach(e=>localStorage.removeItem(e)),i?.({errMsg:`clearStorage:ok`})}catch(e){a?.({errMsg:`clearStorage:fail ${e.message}`})}finally{o?.()}}clearStorageSync(){let e=`${this.appId}_`,t=[];for(let n=0;n<localStorage.length;n++){let r=localStorage.key(n);r.startsWith(e)&&t.push(r)}t.forEach(e=>localStorage.removeItem(e))}getStorageInfo(e){let{success:t,fail:n,complete:r}=e||{},i=this.createCallbackFunction(t),a=this.createCallbackFunction(n),o=this.createCallbackFunction(r);try{let e=[],t=0,n=`${this.appId}_`;for(let r=0;r<localStorage.length;r++){let i=localStorage.key(r);if(i.startsWith(n)){let r=i.substring(n.length);e.push(r);let a=localStorage.getItem(i);t+=a?a.length*2:0}}i?.({keys:e,currentSize:t,limitSize:10485760,errMsg:`getStorageInfo:ok`})}catch(e){a?.({errMsg:`getStorageInfo:fail ${e.message}`})}finally{o?.()}}getStorageInfoSync(){let e=[],t=0,n=`${this.appId}_`;for(let r=0;r<localStorage.length;r++){let i=localStorage.key(r);if(i.startsWith(n)){let r=i.substring(n.length);e.push(r);let a=localStorage.getItem(i);t+=a?a.length*2:0}}return{keys:e,currentSize:t,limitSize:10485760}}_parseExtEventKey(e){let t=X.getExtModules();for(let n of Object.keys(t)){let t=`${n}_`;if(e.startsWith(t))return{module:n,event:e.slice(t.length)}}return{module:null,event:null}}_handleExtCall(e,t={}){t.module===void 0?t.success?this._extOnBridgeCall(e,t):this._extOffBridgeCall(e):this._extBridgeCall(e,t)}_extBridgeCall(e,t){let{module:n,data:r={},success:i,fail:a,complete:o}=t,s=this.createCallbackFunction(i),c=this.createCallbackFunction(a),l=this.createCallbackFunction(o),u=X.getExtModule(n);if(!u){let e=`extBridge:fail module "${n}" not registered`;console.error(`[container] ${e}`),c?.({errMsg:e}),l?.();return}try{u({event:e,data:r,success:e=>{s?.(e),l?.()},fail:e=>{c?.(e),l?.()}})}catch(e){c?.({errMsg:`extBridge:fail ${e.message}`}),l?.()}}_extOnBridgeCall(e,t){let{success:n}=t,r=this.createCallbackFunction(n),{module:i,event:a}=this._parseExtEventKey(e);if(!i){console.error(`[container] extOnBridge:fail no registered module matched for key "${e}"`);return}let o=X.getExtModule(i);this._extSubscriptions.get(e)?.();try{let t=o({event:a,data:{isSustain:!0},success:e=>r?.(e),fail:t=>console.error(`[container] extOnBridge error (${e}):`,t)});this._extSubscriptions.set(e,t??null)}catch(e){console.error(`[container] extOnBridge:fail ${e.message}`)}}_extOffBridgeCall(e){let t=this._extSubscriptions.get(e);t&&(t(),this._extSubscriptions.delete(e))}};function ue(e){let t=new Map;return function(...n){let r=n.length===1?n[0]:JSON.stringify(n);if(t.has(r))return t.get(r);let i=e.apply(this,n);return t.set(r,i),i}}var J=ue(async()=>{let e=await fetch(`/appList.json`).then(e=>e.json());return e.forEach(e=>{let t=JSON.stringify(e),n=sessionStorage.getItem(t);if(n)e.logo=n;else{let n=ge(e);sessionStorage.setItem(t,n),e.logo=n}}),e});async function Y(e){let t=await J();for(let n of t)if(n.appId===e)return n}function de(e){return e.endsWith(`/`)?e:`${e}/`}async function fe(e){let t=new URL(e,window.location.href),n=await fetch(t);if(!n.ok)throw Error(`manifest request failed: HTTP ${n.status}`);let r=await n.json(),i=r?.data??r;if(!i||typeof i!=`object`)throw Error(`manifest is not an object`);if(!i.appId)throw Error(`manifest missing appId`);if(!i.path)throw Error(`manifest missing path`);let a=i.webBaseUrl||i.baseUrl,o=a?new URL(a,t):new URL(`./`,t);return{...i,manifestUrl:t.href,resourceBaseUrl:de(o.href)}}function pe(e){if(!e||e.length===0)return`#2196F3`;let t=0;for(let n=0;n<e.length;n++)t=(t<<5)-t+e.charCodeAt(n),t|=0;let n=me(Math.abs(t%360),.7+Math.abs(t%3e3)/1e4,.8+Math.abs(t%2e3)/1e4);return he(n[0],n[1],n[2])}function me(e,t,n){let r,i,a,o=Math.floor(e/60),s=e/60-o,c=n*(1-t),l=n*(1-s*t),u=n*(1-(1-s)*t);switch(o%6){case 0:r=n,i=u,a=c;break;case 1:r=l,i=n,a=c;break;case 2:r=c,i=n,a=u;break;case 3:r=c,i=l,a=n;break;case 4:r=u,i=c,a=n;break;case 5:r=n,i=c,a=l}return[Math.round(r*255),Math.round(i*255),Math.round(a*255)]}function he(e,t,n){return`#${((1<<24)+(e<<16)+(t<<8)+n).toString(16).slice(1)}`}function ge(e){let t=[60,60],n=window.devicePixelRatio||1,r=document.createElement(`canvas`);r.style.width=t[0]+`px`,r.style.height=t[1]+`px`,r.width=t[0]*n,r.height=t[1]*n;let i=r.getContext(`2d`);i.scale(n,n),i.imageSmoothingEnabled=!0,i.imageSmoothingQuality=`high`,i.textRenderingOptimization=`optimizeQuality`,i.fillStyle=pe(e.name),i.fillRect(0,0,t[0],t[1]),i.fillStyle=`rgb(255,255,255)`,i.font=`${t[0]*.6}px Arial`;let a=e.name.charAt(0),o=i.measureText(a),s=t[0]/2,c=t[1]/2+(o.actualBoundingBoxAscent-o.actualBoundingBoxDescent)/2;return i.textAlign=`center`,i.fillText(a,s,c),r.toDataURL(`image/png`,1)}var X=class{static appStack=[];static _extModules={};static registerExtModule(e,t){this._extModules[e]=t}static getExtModule(e){return this._extModules[e]}static getExtModules(){return this._extModules}static buildAnalyticsHostContext({appId:e,path:t,scene:n}){return{miniappId:e,entryPath:t,scene:n,hostAppVersion:`web-dev`,platform:`web`,containerVersion:`dimina-web`}}static async openApp(e,t){let{scene:n,destroy:r,restoreStack:i}=e,a=e.appId?sessionStorage.getItem(`dimina:manifest:${e.appId}`):null,o=e.manifestUrl||a,s=o?await fe(o):null,c=e.appId||s?.appId;if(!c)throw Error(`openApp requires appId or manifestUrl`);if(s&&s.appId!==c)throw Error(`manifest appId ${s.appId} does not match ${c}`);let l=e.path||s?.path;if(!l)throw Error(`mini program ${c} has no launch path`);let{pagePath:u,query:d}=A(l),f=s?null:await Y(c),p=s?.name||f?.name||``,m=s?.logo||f?.logo||``,h=s?.apiNamespaces||f?.apiNamespaces;if(s&&sessionStorage.setItem(`dimina:manifest:${c}`,s.manifestUrl),r)for(let e of this.appStack)e.appId!==c&&(e.bridgeList.pop()?.destroy(),t.destroyRootView(e));let g=this.getAppById(c);if(g)t.presentView(g,!0);else{let e=new le({appId:c,scene:n,name:p,logo:m,apiNamespaces:h,pagePath:u,query:d,analyticsBaseContext:this.buildAnalyticsHostContext({appId:c,path:u,scene:n}),restoreStack:i,manifestUrl:s?.manifestUrl,resourceBaseUrl:s?.resourceBaseUrl});this.appStack.push(e),t.presentView(e,!1)}}static getAppById(e){for(let t of this.appStack)if(t.appId===e)return t;return null}static popView(){this.appStack.pop()}static closeApp(e){e.parent.dismissView({destroy:!1})}},Z=()=>new Promise(e=>requestAnimationFrame(()=>requestAnimationFrame(e))),Q=(e,t,n=560)=>new Promise(r=>{let i=setTimeout(r,n),a=n=>{(!t||n.propertyName===t)&&(clearTimeout(i),e.removeEventListener(`transitionend`,a),r())};e.addEventListener(`transitionend`,a)}),$=class{constructor(){this.el=null,this.window=null,this.root=null,this.views=[],this.rootView=null,this.parent=null,this.done=!0,this.isSleeping=!1,this._queue=Promise.resolve(),this.init()}_enqueue(e){return this._queue=this._queue.then(()=>e()),this._queue}init(){this.el=document.createElement(`div`),this.el.classList.add(`dimina-application`),this.window=document.createElement(`div`),this.window.classList.add(`dimina-native-window`),this.el.appendChild(this.window)}initRootView(e){this.rootView=e,e.parent=this,e.el.classList.add(`dimina-native-view--instage`),e.el.style.zIndex=1,this.root=e,this.window.appendChild(e.el),e.viewDidLoad()}async pushView(e){if(!this.done)return;this.done=!1;let t=this.views[this.views.length-1];e.parent=this,this.views.push(e),e.el.style.zIndex=this.views.length,e.el.classList.add(`dimina-native-view--before-enter`),this.window.appendChild(e.el),e?.viewDidLoad(),await Z(),t.el.classList.remove(`dimina-native-view--instage`),t.el.classList.add(`dimina-native-view--slide-out`),t.el.classList.add(`dimina-native-view--linear-anima`),e.el.classList.add(`dimina-native-view--enter-anima`),e.el.classList.add(`dimina-native-view--instage`),await Q(e.el,`transform`),t.el.classList.remove(`dimina-native-view--linear-anima`),e.el.classList.remove(`dimina-native-view--before-enter`),e.el.classList.remove(`dimina-native-view--enter-anima`),e.el.classList.remove(`dimina-native-view--instage`),this.done=!0}async popView(){if(this.views.length<2||!this.done)return;this.done=!1;let e=this.views[this.views.length-2],t=this.views[this.views.length-1];e.el.classList.remove(`dimina-native-view--slide-out`),e.el.classList.add(`dimina-native-view--instage`),e.el.classList.add(`dimina-native-view--enter-anima`),t.el.classList.remove(`dimina-native-view--instage`),t.el.classList.add(`dimina-native-view--before-enter`),t.el.classList.add(`dimina-native-view--enter-anima`),await Q(t.el,`transform`),this.views.pop(),this.window.removeChild(t.el),e.el.classList.remove(`dimina-native-view--enter-anima`),this.done=!0}presentView(e,t){return this._enqueue(()=>this._presentView(e,t))}async _presentView(e,t){if(!this.done)return;this.done=!1;let n=this.views[this.views.length-1];e.parent=this,e.el.style.zIndex=this.views.length+1,e.el.classList.add(`dimina-native-view--before-present`),e.el.classList.add(`dimina-native-view--enter-anima`),n?.el.classList.add(`dimina-native-view--before-presenting`),n?.el.classList.remove(`dimina-native-view--instage`),n?.el.classList.add(`dimina-native-view--enter-anima`),n?.onPresentOut(),e.onPresentIn(),!t&&this.el.appendChild(e.el),this.views.push(e),!t&&e.viewDidLoad&&e.viewDidLoad(),t&&e.restoreColorStyle(),await Z(),n?.el.classList.add(`dimina-native-view--presenting`),e.el.classList.add(`dimina-native-view--instage`),await Q(e.el,`transform`),e.el.classList.remove(`dimina-native-view--before-present`),e.el.classList.remove(`dimina-native-view--enter-anima`),n?.el.classList.remove(`dimina-native-view--enter-anima`),n?.el.classList.remove(`dimina-native-view--before-presenting`),this.done=!0}dismissView(e={}){return this._enqueue(()=>this._dismissView(e))}async _dismissView(e={}){if(!this.done)return;this.done=!1;let t=this.views[this.views.length-2],n=this.views[this.views.length-1],{destroy:r=!0}=e;n.el.classList.add(`dimina-native-view--enter-anima`),t?.el.classList.add(`dimina-native-view--enter-anima`),t?.el.classList.add(`dimina-native-view--before-presenting`),await Z(),n.el.classList.add(`dimina-native-view--before-present`),n.el.classList.remove(`dimina-native-view--instage`),t?.el.classList.remove(`dimina-native-view--presenting`),t?.onPresentIn(),n?.onPresentOut(),await Q(n.el,`transform`),r&&(n.destroy(),this.el.removeChild(n.el)),this.views.pop(),t?.el.classList.remove(`dimina-native-view--enter-anima`),t?.el.classList.remove(`dimina-native-view--before-presenting`),this.done=!0}async destroyRootView(e){e.destroy(),this.el.removeChild(e.el)}getActiveView(){return this.views[this.views.length-1]||this.rootView}sleepActiveView(){this.isSleeping||(this.isSleeping=!0,this.getActiveView()?.onPresentOut?.())}wakeActiveView(){if(!this.isSleeping)return;this.isSleeping=!1;let e=this.getActiveView();e?.restoreColorStyle?.(),e?.onPresentIn?.()}updateStatusBarColor(e){this.parent?.updateDeviceBarColor(e)}},_e=`<div class="dimina-app__page-view dimina-app__mini">
75
+ <div class="dimina-app-navigation">
76
+ <div class="dimina-app-navigation__content">
77
+ <div class="dimina-app-navigation__left-btn"></div>
78
+ <h2 class="dimina-app-navigation__title">Neux MiniApp</h2>
79
+ <div class="dimina-app-navigation__blank"></div>
80
+ </div>
81
+ </div>
82
+ <div class="dimina-app__mini-content">
83
+ <div class="dimina-app__mini-search">
84
+ <div class="dimina-app__mini-search-input">
85
+ <input class="dimina-app__mini-search-input-placeholder" type="search" autocomplete="off" aria-label="搜索小程序" placeholder="搜索小程序" />
86
+ </div>
87
+ </div>
88
+ <div class="dimina-app__mini-used">
89
+ <h2 class="dimina-app__mini-used-title">Mini Apps</h2>
90
+ <ul class="dimina-app__mini-used-list"></ul>
91
+ <p class="dimina-app__mini-used-state">Loading...</p>
92
+ </div>
93
+ </div>
94
+ </div>
95
+ `,ve=class{constructor(){this.parent=null,this.el=document.createElement(`div`),this.el.classList.add(`dimina-native-view`),this.appList=[],this.filteredAppList=[],this.searchKeyword=``,this.t=H()}viewDidLoad(){this.el.innerHTML=_e,this.el.querySelector(`.dimina-app__mini-search-input-placeholder`).placeholder=this.t(`searchApps`),this.el.querySelector(`.dimina-app__mini-search-input-placeholder`).setAttribute(`aria-label`,this.t(`searchApps`)),this.el.querySelector(`.dimina-app__mini-used-title`).textContent=this.t(`miniApps`),this.createAppList(),this.bindSearchEvent(),this.bindOpenMiniApp()}createAppList(){this.setListState(this.t(`loading`)),J().then(e=>{this.appList=e,this.renderFilteredAppList()}).catch(()=>{this.appList=[],this.renderAppList([]),this.setListState(this.t(`loadFailed`))})}bindSearchEvent(){this.el.querySelector(`.dimina-app__mini-search-input-placeholder`).addEventListener(`input`,e=>{this.searchKeyword=e.target.value.trim().toLocaleLowerCase(),this.renderFilteredAppList()})}bindOpenMiniApp(){let e=this.el.querySelector(`.dimina-app__mini-used-list`);e.onclick=async e=>{let t=j(e.target,`dimina-app__mini-used-list-item`);if(!t)return;let n=t.getAttribute(`data-appid`),r=await Y(n);r&&X.openApp({appId:n,path:r.path,scene:1001,destroy:!0},this.parent)}}onPresentOut(){}onPresentIn(){this.parent.updateStatusBarColor(`black`)}renderFilteredAppList(){let e=this.searchKeyword;this.filteredAppList=e?this.appList.filter(t=>{let n=t.name?.toLocaleLowerCase()??``,r=t.appId?.toLocaleLowerCase()??``;return n.includes(e)||r.includes(e)}):this.appList,this.renderAppList(this.filteredAppList),this.appList.length?this.filteredAppList.length?this.setListState(``):this.setListState(this.t(`noMatchingApps`)):this.setListState(this.t(`noApps`))}renderAppList(e){let t=this.el.querySelector(`.dimina-app__mini-used-list`),n=document.createDocumentFragment();e.forEach(e=>{let t=document.createElement(`li`);t.className=`dimina-app__mini-used-list-item`,t.dataset.appid=e.appId;let r=document.createElement(`div`);r.className=`dimina-app__mini-used-logo`;let i=document.createElement(`img`);i.src=e.logo,i.alt=`${e.name} logo`,i.loading=`lazy`,i.draggable=!1,r.appendChild(i);let a=document.createElement(`p`);a.className=`dimina-app__mini-used-name`,a.textContent=e.name,t.append(r,a),n.appendChild(t)}),t.replaceChildren(n)}setListState(e){let t=this.el.querySelector(`.dimina-app__mini-used-state`);t.textContent=e,t.hidden=!e}},ye=`<!-- 手机本体 -->
96
+ <div id="iphone">
97
+ <!-- 手机屏幕 -->
98
+ <div class="iphone__screen">
99
+ <div class="iphone__screen-sleep-mask"></div>
100
+ <div class="iphone__status-bar">
101
+ <div class="status-bar__left">
102
+ <span class="status-bar__time"></span>
103
+ </div>
104
+ <div class="status-bar__right">
105
+ <!-- 信号强度 -->
106
+ <svg class="status-bar__signal" viewBox="0 0 20 12" aria-hidden="true">
107
+ <rect x="1" y="7" width="3" height="4" rx="1" fill="currentColor" />
108
+ <rect x="6" y="5" width="3" height="6" rx="1" fill="currentColor" />
109
+ <rect x="11" y="3" width="3" height="8" rx="1" fill="currentColor" />
110
+ <rect x="16" y="1" width="3" height="10" rx="1" fill="currentColor" />
111
+ </svg>
112
+ <!-- WiFi -->
113
+ <svg class="status-bar__wifi" viewBox="0 0 19 14" aria-hidden="true">
114
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M9.5 2.18c2.86 0 5.54.9 7.7 2.52.36.27.42.78.13 1.12l-.42.5c-.27.31-.73.36-1.06.11A10.12 10.12 0 0 0 9.5 4.35a10.12 10.12 0 0 0-6.35 2.08c-.33.25-.79.2-1.06-.11l-.42-.5a.77.77 0 0 1 .13-1.12A12.79 12.79 0 0 1 9.5 2.18zm0 1.05a11.62 11.62 0 0 0-6.53 1.94l.1.13A11.13 11.13 0 0 1 9.5 3.44a11.13 11.13 0 0 1 6.43 1.86l.1-.13A11.62 11.62 0 0 0 9.5 3.23z" fill="currentColor" />
115
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M9.5 6.1c1.76 0 3.42.54 4.77 1.52.37.27.43.79.13 1.13l-.42.49c-.27.31-.74.36-1.07.12A5.82 5.82 0 0 0 9.5 8.28a5.82 5.82 0 0 0-3.41 1.08c-.33.24-.8.19-1.07-.12l-.42-.49a.77.77 0 0 1 .13-1.13A8.11 8.11 0 0 1 9.5 6.1zm0 1.04a7 7 0 0 0-3.75 1.02l.1.12A6.59 6.59 0 0 1 9.5 7.28c1.32 0 2.58.34 3.65 1l.1-.12A7 7 0 0 0 9.5 7.14z" fill="currentColor" />
116
+ <circle cx="9.5" cy="11.08" r="1.08" fill="currentColor" />
117
+ </svg>
118
+ <!-- 电池 -->
119
+ <svg class="status-bar__battery" width="25" height="13" viewBox="0 0 25 13" fill="none">
120
+ <rect x="0.75" y="0.75" width="20" height="11.5" rx="2.2" stroke="currentColor" stroke-width="1" />
121
+ <rect x="2.5" y="2.5" width="16.5" height="8" rx="1.3" fill="currentColor" />
122
+ <rect x="22" y="4.25" width="2" height="4.5" rx="1" fill="currentColor" />
123
+ </svg>
124
+ </div>
125
+ </div>
126
+ <div class="iphone__screen_dynamic-island">
127
+ <span>
128
+ Neux MiniApp
129
+ </span>
130
+ </div>
131
+ <div class="iphone__apps"></div>
132
+ </div>
133
+
134
+ <!-- 电源键 -->
135
+ <button class="power-btn" type="button" aria-label="电源键" aria-pressed="false"></button>
136
+ </div>
137
+ `,be=class{constructor(e={}){this.appContainer=null,this.application=null,this.isScreenSleeping=!1,this.serverUrl=e.serverUrl||``,this.root=document.querySelector(`#root`),this.init()}init(){this.root.innerHTML=ye,this.appContainer=this.root.querySelector(`.iphone__apps`),this.updateDeviceBarColor(`black`),this.updateStatusBarTime(),this.outerGlow(),this.bindPowerButton()}updateStatusBarTime(){let e=this.root.querySelector(`.status-bar__time`),t=()=>{let t=new Date,n=t.getHours().toString().padStart(2,`0`),r=t.getMinutes().toString().padStart(2,`0`);e.textContent=`${n}:${r}`};t(),setInterval(t,6e4)}outerGlow(){let e=this.root.querySelector(`.iphone__screen_dynamic-island`);if(!this.serverUrl)return;e.addEventListener(`click`,()=>{let e=new URL(`/miniappdoc/en`,`${this.serverUrl.replace(/\/+$/,``)}/`);window.open(e.href,`_blank`)}),e.addEventListener(`mouseenter`,()=>{e.classList.add(`island-hover`)}),e.addEventListener(`mouseleave`,()=>{e.classList.remove(`island-hover`)});let t=null,n=0;document.body.addEventListener(`pointermove`,({x:e,y:r})=>{t={pointerX:e,pointerY:r},!n&&(n=requestAnimationFrame(()=>{let{pointerX:e,pointerY:r}=t,i=e.toFixed(2),a=r.toFixed(2),o=(e/window.innerWidth).toFixed(2),s=(r/window.innerHeight).toFixed(2);document.documentElement.style.setProperty(`--x`,i),document.documentElement.style.setProperty(`--xp`,o),document.documentElement.style.setProperty(`--y`,a),document.documentElement.style.setProperty(`--yp`,s),n=0}))})}bindPowerButton(){let e=this.root.querySelector(`.power-btn`);e?.addEventListener(`pointerdown`,e=>{e.preventDefault(),this.toggleScreen()}),e?.addEventListener(`keydown`,e=>{e.repeat||e.key!==`Enter`&&e.key!==` `||(e.preventDefault(),this.toggleScreen())})}toggleScreen(){this.isScreenSleeping?this.wakeScreen():this.sleepScreen()}sleepScreen(){this.isScreenSleeping||(this.isScreenSleeping=!0,this.root.querySelector(`.iphone__screen`)?.classList.add(`iphone__screen--sleeping`),this.root.querySelector(`.power-btn`)?.setAttribute(`aria-pressed`,`true`),this.application?.sleepActiveView?.())}wakeScreen(){this.isScreenSleeping&&(this.isScreenSleeping=!1,this.root.querySelector(`.iphone__screen`)?.classList.remove(`iphone__screen--sleeping`),this.root.querySelector(`.power-btn`)?.setAttribute(`aria-pressed`,`false`),this.application?.wakeActiveView?.())}updateDeviceBarColor(e){let t=this.root.querySelector(`.iphone__status-bar`);e===`black`?(t.classList.remove(`iphone__status-bar--white`),t.classList.add(`iphone__status-bar--black`)):e===`white`&&(t.classList.add(`iphone__status-bar--white`),t.classList.remove(`iphone__status-bar--black`))}open(e){this.application=e,e.parent=this,this.appContainer.appendChild(e.el)}};X.registerExtModule(`DemoNativeModule`,({event:e,data:t,success:n,fail:r})=>{if(e===`getUserInfo`){setTimeout(()=>{n?.({uid:t?.uid??`unknown`,name:`Mock User`,level:3})},300);return}if(e===`onTickEvent`){let e=0,t=setInterval(()=>{e++,n?.({tick:e,timestamp:Date.now()})},1e3);return()=>clearInterval(t)}r?.({errMsg:`DemoNativeModule: unknown event "${e}"`})}),window.onload=function(){let e=new URLSearchParams(window.location.search),t=new be({serverUrl:e.get(`neuxCliServerUrl`)||``}),n=new $,r=new ve;n.initRootView(r),t.open(n);let i=e.get(`manifestUrl`);if(i){X.openApp({manifestUrl:i,path:e.get(`entry`)||void 0,scene:1001,destroy:!0},n);return}let a=U.parse(window.location.hash,window.location.search);if(a){let e=a.stack[0],t=e.query&&Object.keys(e.query).length>0?`${e.pagePath}?${Object.entries(e.query).map(([e,t])=>`${e}=${encodeURIComponent(t)}`).join(`&`)}`:e.pagePath;X.openApp({appId:a.appId,path:t,scene:1001,destroy:!0,restoreStack:a.stack},n)}};
@@ -0,0 +1 @@
1
+ :root{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;font-size:clamp(.4px,.13333vw,2px)}*{-webkit-tap-highlight-color:transparent;vertical-align:baseline;scrollbar-width:none;outline:none;margin:0;padding:0}::-webkit-scrollbar{width:0;height:0;display:none}img{vertical-align:top;border:none}em,i{font-style:normal}ol,ul{list-style:none}button,h1,h2,h3,h4,h5,h6,input,select{font-family:inherit;font-size:100%}table{border-collapse:collapse;border-spacing:0}a,a:visited{text-decoration:none}body{-webkit-user-select:none;user-select:none;-webkit-overflow-scrolling:touch;font-family:HarmonyOSHans-Light,Roboto,Helvetica Neue,Arial,sans-serif;font-size:16px;line-height:normal;overflow:hidden auto}html,body,#app,.dd-page{width:100%;height:100%;min-height:100%}.dd-page{box-sizing:border-box;min-height:100vh}@font-face{font-weight:400;font-style:normal;font-family:weui;src:url(data:application/octet-stream;base64,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)format("truetype")}.dd-audio{z-index:0;width:300px;height:54px;display:inline-block;position:relative;overflow:hidden}.dd-audio[hidden]{display:none}.dd-audio .dd-audio-container{-webkit-overflow-scrolling:touch;width:100%;height:100%;overflow:scroll}.dd-audio[data-dimina-native-type=native\/audio]{opacity:0;background:0 0!important}.dd-audio-placeholder{color:#fff;background-color:gray;justify-content:center;align-items:center;display:flex}.dd-button{box-sizing:border-box;text-align:center;-webkit-tap-highlight-color:transparent;color:#000;background-color:#f8f8f8;border-radius:5px;margin-left:auto;margin-right:auto;padding-left:14px;padding-right:14px;font-size:18px;line-height:2.55556;text-decoration:none;display:block;position:relative;overflow:hidden}.dd-button[hidden]{display:none}.dd-button:after{content:" ";transform-origin:0 0;box-sizing:border-box;border:1px solid #0003;border-radius:10px;width:200%;height:200%;position:absolute;top:0;left:0;transform:scale(.5)}.dd-button[native]{padding-left:0;padding-right:0}.dd-button[native] .dd-button-cover-view-wrapper{border:inherit;border-color:inherit;border-radius:inherit;background-color:inherit}.dd-button[native] .dd-button-cover-view-inner{padding-left:14px;padding-right:14px}.dd-button .dd-cover-view{line-height:inherit;white-space:inherit}.dd-button--default{color:#000;background-color:#f8f8f8}.dd-button--primary{color:#fff;background-color:#1aad19}.dd-button--warn{color:#fff;background-color:#e64340}.dd-button--disabled{color:#fff9}.dd-button--disabled.dd-button--default{color:#0000004d;background-color:#f7f7f7}.dd-button--disabled.dd-button--primary{background-color:#9ed99d}.dd-button--disabled.dd-button--warn{background-color:#ec8b89}.dd-button--primary.dd-button--plain{color:#1aad19;background-color:#0000;border:1px solid #1aad19}.dd-button--primary.dd-button--plain.dd-button--disabled{color:#0003;border-color:#0003}.dd-button--primary.dd-button--plain:after{border-width:0}.dd-button--default.dd-button--plain{color:#353535;background-color:#0000;border:1px solid #353535}.dd-button--default.dd-button--plain.dd-button--disabled{color:#0003;border-color:#0003}.dd-button--default.dd-button--plain:after{border-width:0}.dd-button--plain{color:#353535;background-color:#0000;border:1px solid #353535}.dd-button--plain.dd-button--disabled{color:#0003;border-color:#0003}.dd-button--plain:after{border-width:0}.dd-button--plain[native] .dd-button-cover-view-inner{padding:0}.dd-button--warn.dd-button--plain{color:#e64340;background-color:#0000;border:1px solid #e64340}.dd-button--warn.dd-button--plain.dd-button--disabled{color:#0003;border-color:#0003}.dd-button--warn.dd-button--plain:after{border-width:0}.dd-button--mini{padding:0 1.34em;font-size:13px;line-height:2.3;display:inline-block}.dd-button--mini[native]{padding:0}.dd-button--mini[native] .dd-button-cover-view-inner{padding:0 1.34em}.dd-button--loading:before{content:" ";vertical-align:middle;background:url(data:image/svg+xml;base64,PHN2ZyBjbGFzcz0iciIgd2lkdGg9JzEyMHB4JyBoZWlnaHQ9JzEyMHB4JyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIj4KICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIiBmaWxsPSJub25lIiBjbGFzcz0iYmsiPjwvcmVjdD4KICAgIDxyZWN0IHg9JzQ2LjUnIHk9JzQwJyB3aWR0aD0nNycgaGVpZ2h0PScyMCcgcng9JzUnIHJ5PSc1JyBmaWxsPScjRTlFOUU5JwogICAgICAgICAgdHJhbnNmb3JtPSdyb3RhdGUoMCA1MCA1MCkgdHJhbnNsYXRlKDAgLTMwKSc+CiAgICA8L3JlY3Q+CiAgICA8cmVjdCB4PSc0Ni41JyB5PSc0MCcgd2lkdGg9JzcnIGhlaWdodD0nMjAnIHJ4PSc1JyByeT0nNScgZmlsbD0nIzk4OTY5NycKICAgICAgICAgIHRyYW5zZm9ybT0ncm90YXRlKDMwIDUwIDUwKSB0cmFuc2xhdGUoMCAtMzApJz4KICAgICAgICAgICAgICAgICByZXBlYXRDb3VudD0naW5kZWZpbml0ZScvPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0nNDYuNScgeT0nNDAnIHdpZHRoPSc3JyBoZWlnaHQ9JzIwJyByeD0nNScgcnk9JzUnIGZpbGw9JyM5Qjk5OUEnCiAgICAgICAgICB0cmFuc2Zvcm09J3JvdGF0ZSg2MCA1MCA1MCkgdHJhbnNsYXRlKDAgLTMwKSc+CiAgICAgICAgICAgICAgICAgcmVwZWF0Q291bnQ9J2luZGVmaW5pdGUnLz4KICAgIDwvcmVjdD4KICAgIDxyZWN0IHg9JzQ2LjUnIHk9JzQwJyB3aWR0aD0nNycgaGVpZ2h0PScyMCcgcng9JzUnIHJ5PSc1JyBmaWxsPScjQTNBMUEyJwogICAgICAgICAgdHJhbnNmb3JtPSdyb3RhdGUoOTAgNTAgNTApIHRyYW5zbGF0ZSgwIC0zMCknPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0nNDYuNScgeT0nNDAnIHdpZHRoPSc3JyBoZWlnaHQ9JzIwJyByeD0nNScgcnk9JzUnIGZpbGw9JyNBQkE5QUEnCiAgICAgICAgICB0cmFuc2Zvcm09J3JvdGF0ZSgxMjAgNTAgNTApIHRyYW5zbGF0ZSgwIC0zMCknPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0nNDYuNScgeT0nNDAnIHdpZHRoPSc3JyBoZWlnaHQ9JzIwJyByeD0nNScgcnk9JzUnIGZpbGw9JyNCMkIyQjInCiAgICAgICAgICB0cmFuc2Zvcm09J3JvdGF0ZSgxNTAgNTAgNTApIHRyYW5zbGF0ZSgwIC0zMCknPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0nNDYuNScgeT0nNDAnIHdpZHRoPSc3JyBoZWlnaHQ9JzIwJyByeD0nNScgcnk9JzUnIGZpbGw9JyNCQUI4QjknCiAgICAgICAgICB0cmFuc2Zvcm09J3JvdGF0ZSgxODAgNTAgNTApIHRyYW5zbGF0ZSgwIC0zMCknPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0nNDYuNScgeT0nNDAnIHdpZHRoPSc3JyBoZWlnaHQ9JzIwJyByeD0nNScgcnk9JzUnIGZpbGw9JyNDMkMwQzEnCiAgICAgICAgICB0cmFuc2Zvcm09J3JvdGF0ZSgyMTAgNTAgNTApIHRyYW5zbGF0ZSgwIC0zMCknPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0nNDYuNScgeT0nNDAnIHdpZHRoPSc3JyBoZWlnaHQ9JzIwJyByeD0nNScgcnk9JzUnIGZpbGw9JyNDQkNCQ0InCiAgICAgICAgICB0cmFuc2Zvcm09J3JvdGF0ZSgyNDAgNTAgNTApIHRyYW5zbGF0ZSgwIC0zMCknPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0nNDYuNScgeT0nNDAnIHdpZHRoPSc3JyBoZWlnaHQ9JzIwJyByeD0nNScgcnk9JzUnIGZpbGw9JyNEMkQyRDInCiAgICAgICAgICB0cmFuc2Zvcm09J3JvdGF0ZSgyNzAgNTAgNTApIHRyYW5zbGF0ZSgwIC0zMCknPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0nNDYuNScgeT0nNDAnIHdpZHRoPSc3JyBoZWlnaHQ9JzIwJyByeD0nNScgcnk9JzUnIGZpbGw9JyNEQURBREEnCiAgICAgICAgICB0cmFuc2Zvcm09J3JvdGF0ZSgzMDAgNTAgNTApIHRyYW5zbGF0ZSgwIC0zMCknPgogICAgPC9yZWN0PgogICAgPHJlY3QgeD0nNDYuNScgeT0nNDAnIHdpZHRoPSc3JyBoZWlnaHQ9JzIwJyByeD0nNScgcnk9JzUnIGZpbGw9JyNFMkUyRTInCiAgICAgICAgICB0cmFuc2Zvcm09J3JvdGF0ZSgzMzAgNTAgNTApIHRyYW5zbGF0ZSgwIC0zMCknPgogICAgPC9yZWN0Pgo8L3N2Zz4=) 0 0/100% no-repeat;width:18px;height:18px;animation:1s steps(12,end) infinite dd-button-loading-animate;display:inline-block}.dd-button--loading.dd-button--primary{color:#fff9;background-color:#179b16}.dd-button--loading.dd-button--primary.dd-button--plain{color:#1aad19;background-color:#0000}.dd-button--loading.dd-button--default{color:#0009;background-color:#dedede}.dd-button--loading.dd-button--default.dd-button--plain{color:#353535;background-color:#0000}.dd-button--loading.dd-button--warn{color:#fff9;background-color:#ce3c39}.dd-button--loading.dd-button--warn.dd-button--plain{color:#e64340;background-color:#0000}.dd-button--loading[native]:before{content:none}@keyframes dd-button-loading-animate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.button-hover{color:#0009;background-color:#dedede}.button-hover.dd-button--plain{color:#35353599;background-color:#0000;border-color:#35353599}.button-hover.dd-button--primary{color:#fff9;background-color:#179b16}.button-hover.dd-button--primary.dd-button--plain{color:#1aad1999;background-color:#0000;border-color:#1aad1999}.button-hover.dd-button--default{color:#0009;background-color:#dedede}.button-hover.dd-button--default.dd-button--plain{color:#35353599;background-color:#0000;border-color:#35353599}.button-hover.dd-button--warn{color:#fff9;background-color:#ce3c39}.button-hover.dd-button--warn.dd-button--plain{color:#e6434099;background-color:#0000;border-color:#e6434099}.dd-camera{width:100%;display:block;position:relative;overflow:hidden}.dd-camera[hidden]{display:none}.dd-camera-native,.dd-camera-unavailable,.dd-camera-slot{width:100%;height:100%;position:absolute;inset:0}.dd-camera-container{-webkit-overflow-scrolling:touch;overflow:scroll}.dd-camera-container>div{width:101%;height:101%}.dd-camera-unavailable{color:#fff;background-color:gray;justify-content:center;align-items:center;display:flex}.dd-camera-slot{pointer-events:none}.dd-camera-slot *{pointer-events:auto}.dd-camera-native[data-dimina-native-type=native\/camera]{opacity:0;background:0 0!important}.dd-canvas{width:300px;height:150px;display:block;position:relative}.dd-canvas>canvas{width:100%;height:100%;position:absolute;top:0;left:0}.dd-canvas[hidden]{display:none}.dd-canvas-slot{pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0;overflow:hidden}.dd-canvas-slot *{pointer-events:auto}.dd-checkbox{display:inline-block}.dd-checkbox[hidden]{display:none}.dd-checkbox-wrapper{vertical-align:middle;align-items:center;display:inline-flex}.dd-checkbox-input{appearance:none;text-indent:0;background-color:#fff;border:1px solid #d1d1d1;border-radius:3px;outline:0;width:22px;height:22px;margin-right:5px;position:relative}.dd-checkbox-input-checked{color:#09bb07}.dd-checkbox-input-checked:before{content:"";font:22px/1 weui;position:absolute;top:50%;left:50%;transform:translate(-50%,-48%)scale(.73)}.dd-checkbox-group{display:block}.dd-checkbox-group[hidden]{display:none}.dd-image{background-repeat:no-repeat;width:320px;height:240px;display:inline-block;overflow:hidden}.dd-image img{width:inherit;height:inherit;pointer-events:none}.dd-image img[src=""],.dd-image img:not([src]){opacity:0}.dd-image[hidden]{display:none}.dd-image-preloader{opacity:0}.dd-image-scale{object-fit:fill;width:100%;height:100%}.dd-image-aspect{object-fit:contain;width:100%;height:100%}.dd-image-fill{object-fit:cover;width:100%;height:100%}.dd-image-width{width:100%;height:auto}.dd-image-height{width:auto;height:100%}.dd-image-top{object-fit:none;object-position:top;width:100%;height:100%}.dd-image-bottom{object-fit:none;object-position:bottom;width:100%;height:100%}.dd-image-center{object-fit:none;object-position:center;width:100%;height:100%}.dd-image-left{object-fit:none;object-position:left;width:100%;height:100%}.dd-image-right{object-fit:none;object-position:right;width:100%;height:100%}.dd-image-top-left{object-fit:none;object-position:top left;width:100%;height:100%}.dd-image-top-right{object-fit:none;object-position:top right;width:100%;height:100%}.dd-image-bottom-left{object-fit:none;object-position:bottom left;width:100%;height:100%}.dd-image-bottom-right{object-fit:none;object-position:bottom right;width:100%;height:100%}.dd-view{display:block}.dd-view[hidden]{display:none}.dd-icon{font:14px/1 weui;font-size:var(--c819827a);color:var(--v3cd4ae3e) .dd-icon [hidden];color-display:none;display:inline-block}[class^=dd-icon-]:before,[class*=dd-icon-]:before{margin:0}.dd-icon-success{color:#09bb07}.dd-icon-success:before{content:""}.dd-icon-info{color:#10aeff}.dd-icon-info:before{content:""}.dd-icon-warn{color:#f76260}.dd-icon-warn:before{content:""}.dd-icon-waiting{color:#10aeff}.dd-icon-waiting:before{content:""}.dd-icon-safe_success{color:#09bb07}.dd-icon-safe_success:before{content:""}.dd-icon-safe_warn{color:#ffbe00}.dd-icon-safe_warn:before{content:""}.dd-icon-success_circle{color:#09bb07}.dd-icon-success_circle:before{content:""}.dd-icon-success_no_circle{color:#09bb07}.dd-icon-success_no_circle:before{content:""}.dd-icon-waiting_circle{color:#10aeff}.dd-icon-waiting_circle:before{content:""}.dd-icon-circle{color:#c9c9c9}.dd-icon-circle:before{content:""}.dd-icon-download{color:#09bb07}.dd-icon-download:before{content:""}.dd-icon-info_circle{color:#09bb07}.dd-icon-info_circle:before{content:""}.dd-icon-cancel{color:#f43530}.dd-icon-cancel:before{content:""}.dd-icon-search{color:#b2b2b2}.dd-icon-search:before{content:""}.dd-icon-clear{color:#b2b2b2}.dd-icon-clear:before{content:""}[class^=dd-icon-]:before,[class*=dd-icon-]:before{box-sizing:border-box}.dd-input-wrapper{width:100%;height:100%;position:relative}.dd-input{appearance:none;width:100%;font-family:inherit;font-size:inherit;color:inherit;height:inherit;text-align:inherit;overflow:inherit;white-space:inherit;text-overflow:inherit;background-color:#0000;border:none;outline:0;margin:0;padding:0;display:block}.dd-input::-webkit-outer-spin-button{appearance:none;margin:0}.dd-input::-webkit-inner-spin-button{appearance:none;margin:0}.dd-input-placeholder{pointer-events:none;align-items:center;width:100%;height:100%;display:flex;position:absolute;top:0}.dd-input-placeholder.input-placeholder{color:#0000004d}.dd-input-disabled{opacity:.5}.dd-keyboard-accessory{overflow:auto}.dd-map{isolation:isolate;width:300px;height:150px;display:block;position:relative;overflow:hidden}.dd-map[hidden]{display:none}.dd-map-surface,.dd-map-error,.dd-map-placeholder{width:100%;height:100%}.dd-map-surface{z-index:0;position:absolute;inset:0}.dd-map-error,.dd-map-placeholder{box-sizing:border-box;text-align:center;justify-content:center;align-items:center;padding:16px;display:flex}.dd-map-error{color:#8a1c1c;background:#ffebebe6}.dd-map-placeholder{color:#145799;font-weight:600}.dd-map-debug{word-break:break-word;margin-top:8px;font-size:12px;font-weight:400;line-height:1.4}.dd-map-slot{z-index:1;pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.dd-map-slot *{pointer-events:auto}.dd-movable-area{width:10px;height:10px;display:block;position:relative}.dd-movable-area[hidden]{display:none}.dd-movable-view{visibility:hidden;cursor:grab;width:10px;height:10px;display:inline-block;position:absolute;top:0;left:0}.dd-movable-view.direction-horizontal{touch-action:pan-y}.dd-movable-view.direction-vertical{touch-action:pan-x}.dd-movable-view.direction-all{touch-action:none}.dd-movable-view.direction-none{touch-action:auto}.dd-movable-view .dd-movable-view-content{all:inherit;visibility:visible;-webkit-overflow-scrolling:touch;transition-property:transform;transition-duration:var(--duration);transform-origin:50%;will-change:transform;backface-visibility:hidden;transition-timing-function:ease-out;top:0;left:0}.dd-movable-view[hidden]{display:none}.dd-navigator{width:auto;height:auto;display:block}.dd-navigator.navigator-hover{opacity:.7;background-color:#0000001a}.dd-navigator[hidden],.dd-open-data[hidden]{display:none}.dd-open-data-avatar{width:100%;height:100%;display:block}.dd-page-container{position:fixed;inset:0}.dd-page-container__overlay{background:#00000073;transition-property:opacity;position:absolute;inset:0}.dd-page-container__content{opacity:0;will-change:transform, opacity;background:#fff;max-width:100%;max-height:100%;transition-property:transform,opacity;position:absolute;overflow:hidden}.dd-page-container__content.is-visible{opacity:1}.dd-page-container__content--bottom{bottom:0;left:0;right:0}.dd-page-container__content--top{top:0;left:0;right:0}.dd-page-container__content--left{top:0;bottom:0;left:0}.dd-page-container__content--right{top:0;bottom:0;right:0}.dd-page-container__content--center{width:88vw;max-width:686px;max-height:80vh;top:50%;left:50%}.dd-picker-column[data-v-61501610]{flex:1;height:220px;position:relative;overflow:hidden}.dd-picker-column .dd-picker-column-mask[data-v-61501610]{pointer-events:none;z-index:2;background:linear-gradient(#ffffffe6 0%,#fff6 40%,#fff0 50%,#fff6 60%,#ffffffe6 100%);position:absolute;inset:0}.dd-picker-column .dd-picker-column-indicator[data-v-61501610]{pointer-events:none;z-index:1;border-top:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;height:44px;margin-top:-22px;position:absolute;top:50%;left:0;right:0}.dd-picker-column .dd-picker-column-content[data-v-61501610]{cursor:grab;padding-top:88px;padding-bottom:88px;position:relative}.dd-picker-column .dd-picker-column-content[data-v-61501610]:active{cursor:grabbing}.dd-picker-column .dd-picker-column-item[data-v-61501610]{text-align:center;color:#333;height:44px;font-size:16px;line-height:44px;transition:color .3s}.dd-picker-column .dd-picker-column-item.dd-picker-column-item-selected[data-v-61501610]{color:#000;font-weight:500}.dd-picker{cursor:pointer;display:block}.dd-picker[hidden]{display:none}.dd-picker-overlay{z-index:1000;background-color:#0009;align-items:flex-end;animation:.3s fadeIn;display:flex;position:fixed;inset:0}.dd-picker-container{background-color:#fff;border-radius:12px 12px 0 0;width:100%;max-height:80vh;animation:.3s slideUp}.dd-picker-header{background-color:#fafafa;border-bottom:1px solid #e5e5e5;border-radius:12px 12px 0 0;justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.dd-picker-action{cursor:pointer;border-radius:4px;padding:4px 8px;font-size:16px;transition:background-color .2s}.dd-picker-action:hover{background-color:#0000000d}.dd-picker-cancel{color:#999}.dd-picker-confirm{color:#09bb07;font-weight:500}.dd-picker-title{color:#333;font-size:16px;font-weight:500}.dd-picker-body{background-color:#fff;padding:20px 0}.dd-picker-columns{align-items:center;gap:0;display:flex}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.dd-picker-view{display:flex;position:relative;overflow:hidden}.dd-picker-view[hidden]{display:none}.dd-picker-view-column{z-index:0;flex:1;height:100%;position:relative;overflow:hidden}.dd-picker-view-column .dd-picker__mask{transform:translateZ(0)}.dd-picker-view-column .dd-picker__indicator,.dd-picker-view-column .dd-picker__mask{z-index:3;width:100%;position:absolute;left:0}.dd-picker-view-column .dd-picker__mask{background-color:#0000;background-image:linear-gradient(#fffffff2,#fff9),linear-gradient(#fff9,#fffffff2);background-position:top,bottom;background-repeat:no-repeat;background-size:100% 102px;background-attachment:scroll,scroll;background-origin:padding-box,padding-box;background-clip:border-box,border-box;height:100%;margin:0 auto;top:0}.dd-picker-view-column .dd-picker__indicator{top:102px}.dd-picker-view-column .dd-picker__indicator,.dd-picker-view-column .dd-picker__mask{z-index:3;pointer-events:none;width:100%;position:absolute;left:0}.dd-picker-view-column .dd-picker__content{width:100%;transition:transform var(--duration) ease-out 0s;cursor:grab;position:absolute;top:0;left:0}.dd-picker-view-column .dd-picker__indicator:before{transform-origin:0 0;border-top:1px solid #e5e5e5;top:0;transform:scaleY(.5)}.dd-picker-view-column .dd-picker__indicator:after{transform-origin:0 100%;border-bottom:1px solid #e5e5e5;bottom:0;transform:scaleY(.5)}.dd-picker-view-column .dd-picker__indicator:after,.dd-picker-view-column .dd-picker__indicator:before{content:" ";color:#e5e5e5;height:1px;position:absolute;left:0;right:0}.dd-progress{align-items:center;display:flex}.dd-progress[hidden]{display:none}.dd-progress .dd-progress-bar{flex:1;overflow:hidden}.dd-progress .dd-progress-inner-bar{width:0;height:100%}.dd-progress .dd-progress-info{min-width:2em;margin-top:0;margin-bottom:0;margin-left:15px;font-size:16px}.dd-radio{display:inline-block}.dd-radio[hidden]{display:none}.dd-radio-wrapper{vertical-align:middle;align-items:center;display:inline-flex}.dd-radio-input{appearance:none;background-color:#fff;border:1px solid #d1d1d1;border-radius:50%;outline:0;width:22px;height:22px;margin-right:5px;position:relative}.dd-radio-input-checked{background-color:#09bb07;border-color:#09bb07}.dd-radio-input-checked:before{content:"";color:#fff;font:18px/1 weui;position:absolute;top:50%;left:50%;transform:translate(-50%,-48%)scale(.73)}.dd-radio-input-disabled{background-color:#e1e1e1;border-color:#d1d1d1}.dd-radio-input-disabled:before{color:#adadad}.dd-radio-group{display:block}.dd-radio-group[hidden]{display:none}.dd-rich-text{-webkit-user-select:text;user-select:text}.dd-rich-text[hidden],.dd-root-portal-host,.dd-root-portal-content[hidden]{display:none}.dd-scroll-view{width:100%;height:inherit;-webkit-overflow-scrolling:touch;max-height:inherit;position:relative;overflow:auto}.dd-scroll-view[hidden]{display:none}.dd-scroll-view.scroll-x{overflow:auto hidden!important}.dd-scroll-view.scroll-y{overflow:hidden auto!important}.dd-scroll-view.scroll-x.scroll-y{overflow:auto}.dd-scroll-view.scroll-disabled{overflow:hidden!important}.dd-scroll-view.hide-scrollbar{scroll-behavior:smooth;position:relative}.dd-scroll-view.hide-scrollbar::-webkit-scrollbar{width:0;height:0}.dd-slider{margin:10px 18px;padding:0;display:block}.dd-slider[hidden]{display:none}.dd-slider-wrapper{align-items:center;min-height:16px;display:flex}.dd-slider-tap-area{flex:1;padding:8px 0}.dd-slider-handle-wrapper{z-index:0;cursor:pointer;-webkit-tap-highlight-color:transparent;background-color:#e9e9e9;border-radius:5px;height:2px;transition:background-color .3s;position:relative}.dd-slider-track{background-color:#1aad19;border-radius:6px;height:100%;transition:background-color .3s}.dd-slider-handle,.dd-slider-thumb{cursor:grab;border-radius:50%;transition:border-color .3s;position:absolute;top:50%;left:0%}.dd-slider-handle{z-index:3;background-color:#0000;width:28px;height:28px;margin-top:-14px;margin-left:-14px}.dd-slider-thumb{z-index:2;background-color:#fff;width:28px;height:28px;margin-top:-14px;margin-left:-14px;box-shadow:0 0 4px #0003}.dd-slider-step{z-index:1;background:0 0;width:100%;height:2px;position:absolute}.dd-slider-value{color:#888;text-align:center;margin-left:1em;font-size:14px}.dd-slider-disabled .dd-slider-track{background-color:#ccc}.dd-slider-disabled .dd-slider-thumb{background-color:#fff;border-color:#ccc}.dd-swiper{height:150px;display:block}.dd-swiper[hidden]{display:none}.dd-swiper .dd-swiper-wrapper{cursor:grab;width:100%;height:100%;position:relative;overflow:hidden}.dd-swiper .dd-swiper-slides{position:absolute;inset:0}.dd-swiper .dd-swiper-slide-frame{will-change:transform;width:100%;height:100%;display:flex;position:absolute;top:0;left:0}.dd-swiper.dd-swiper-skip-hidden .dd-swiper-item{content-visibility:auto;contain-intrinsic-size:100% 100%}.dd-swiper .dd-swiper-dots{font-size:0;position:absolute}.dd-swiper .dd-swiper-dots-horizontal{text-align:center;white-space:nowrap;bottom:10px;left:50%;transform:translate(-50%)}.dd-swiper .dd-swiper-dots-horizontal .dd-swiper-dot{margin-right:8px}.dd-swiper .dd-swiper-dots-horizontal .dd-swiper-dot:last-child{margin-right:0}.dd-swiper .dd-swiper-dots-vertical{text-align:right;top:50%;right:10px;transform:translateY(-50%)}.dd-swiper .dd-swiper-dots-vertical .dd-swiper-dot{margin-bottom:9px;display:block}.dd-swiper .dd-swiper-dots-vertical .dd-swiper-dot:last-child{margin-bottom:0}.dd-swiper .dd-swiper-dot{background:#0000004d;border-radius:50%;width:8px;height:8px;transition-property:background-color;transition-timing-function:ease;display:inline-block}.dd-swiper .dd-swiper-dot-active{background-color:#000}.dd-swiper-item{will-change:transform;flex:0 0 100%;width:100%;display:block}.dd-swiper-item[hidden]{display:none}.dd-switch-input{appearance:none;box-sizing:border-box;background-color:#dfdfdf;border:1px solid #dfdfdf;border-radius:16px;outline:0;width:52px;height:32px;margin-right:5px;transition:background-color .1s,border .1s;display:inline-block;position:relative}.dd-switch-input:before{content:" ";background-color:#fdfdfd;border-radius:15px;width:50px;height:30px;transition:transform .3s;position:absolute;top:0;left:0}.dd-switch-input:after{content:" ";background-color:#fff;border-radius:15px;width:30px;height:30px;transition:transform .3s;position:absolute;top:0;left:0;box-shadow:0 1px 3px #0006}.dd-switch-input-inner{border-radius:inherit;position:absolute;inset:0}.dd-switch-input-checked:before{transform:scale(0)}.dd-switch-input-checked:after{transform:translate(20px)}.dd-switch-input-disabled{opacity:.3}.dd-checkbox-input{appearance:none;background-color:#fff;border:1px solid #d1d1d1;border-radius:3px;outline:0;width:22px;height:22px;margin-right:5px;display:inline-block;position:relative}.dd-checkbox-input-inner{border-radius:inherit;position:absolute;inset:0}.dd-checkbox-input-checked .dd-checkbox-input-inner:before{content:"";color:inherit;font:22px/1 weui;position:absolute;top:50%;left:50%;transform:translate(-50%,-48%)scale(.73)}.dd-checkbox-input-disabled{background-color:#e1e1e1}.dd-checkbox-input-disabled:before{color:#adadad}.dd-text{-webkit-user-select:none;user-select:none;display:inline}.dd-text[hidden]{display:none}.dd-text-selectable{cursor:auto;-webkit-user-select:text;user-select:text;display:inline-block}.dd-textarea-wrapper{width:100%;height:100%;position:relative}.dd-textarea{resize:none;width:100%;height:100%;font-family:inherit;line-height:1.2;font-size:inherit;color:inherit;background-color:#0000;border:none;outline:none;padding:0;display:block;position:relative}.dd-textarea::-webkit-scrollbar{display:none}.dd-textarea[hidden]{display:none}.dd-textarea-placeholder{padding:inherit;pointer-events:none;position:absolute;top:0;left:0}.dd-textarea-placeholder.textarea-placeholder{color:#0000004d}.dd-textarea-disabled{opacity:.5}.dd-video{z-index:0;width:300px;height:225px;line-height:0;display:inline-block;position:relative;overflow:hidden}.dd-video[hidden]{display:none}.dd-video .dd-video-container{-webkit-overflow-scrolling:touch;width:100%;height:100%;overflow:scroll}.dd-video[data-dimina-native-type=native\/video]{opacity:0;background:0 0!important}.dd-video-placeholder{color:#fff;background-color:gray;justify-content:center;align-items:center;display:flex}.dd-web-view{width:100vw;height:100vh;display:block}.dd-web-view[hidden]{display:none}.dd-web-view-pc{border:0;width:100%;height:100%;position:absolute;top:0;left:0}.dd-web-view__progress{z-index:1;pointer-events:none;transform-origin:0;width:35%;height:3px;animation:1.2s ease-in-out infinite dd-web-view-progress;position:absolute;top:0;left:0}@keyframes dd-web-view-progress{0%{transform:translate(-100%)scaleX(.4)}50%{transform:translate(120%)scaleX(1)}to{transform:translate(300%)scaleX(.4)}}