@zeppos/zml
Version:
A Mini Library of ZeppOS MiniApp
2 lines (1 loc) • 4.91 kB
JavaScript
const e=Object.prototype.hasOwnProperty,t={init(){this.plugins=[],this.settings={},this.mixins=[]},set(e,t){if(1===arguments.length)return this.settings[e];this.settings[e]=t},use(e,...t){return"function"==typeof e?this.plugins.push({handler:e,args:t}):"object"==typeof e&&this.mixins.push({handler:e,args:[]}),this},handle(e){this.plugins.forEach((t=>{if(t&&"function"==typeof t.handler)try{const n=t.handler.call(this,e,...t.args);"object"==typeof n&&this.mixins.push({handler:n,args:[]})}catch(e){}})),this.mixins.forEach((({handler:{onInit:t,onPause:n,build:s,onResume:o,onDestroy:i,onCreate:r,...l},args:a})=>{Object.assign(e,l)}))}};function n(){return r()&&o()}function s(){return r()&&i()}function o(){return"undefined"!=typeof hmApp}function i(){return"undefined"!=typeof __$$R$$__}function r(){return o()||i()}let l=null;l="undefined"!=typeof __$$R$$__?__$$R$$__:()=>({});let a=null;function h({state:e={},onInit:t,onResume:n,onPause:s,build:o,onDestroy:i,...r}={}){const l={state:e,...r,globalData:getApp()._options.globalData,onInit(...e){for(let t=0;t<=h.mixins.length-1;t++){const n=h.mixins[t];n&&n.handler.onInit?.apply(this,e)}t?.apply(this,e)},onResume(...e){for(let t=0;t<=h.mixins.length-1;t++){const n=h.mixins[t];n&&n.handler.onResume?.apply(this,e)}n?.apply(this,e)},onPause(...e){s?.apply(this,e);for(let t=h.mixins.length-1;t>=0;t--){const n=h.mixins[t];n&&n.handler.onPause?.apply(this,e)}},build(...e){for(let t=0;t<=h.mixins.length-1;t++){const n=h.mixins[t];n&&n.handler.build?.apply(this,e)}o?.apply(this,e)},onDestroy(...e){i?.apply(this,e);for(let t=h.mixins.length-1;t>=0;t--){const n=h.mixins[t];n&&n.handler.onDestroy?.apply(this,e)}}};return h.handle(l),l}var g,u;n()?a=DeviceRuntimeCore.HmLogger:s()?a=l("@zos/utils").log:"undefined"!=typeof messaging&&"undefined"!=typeof Logger&&(a=Logger),g=h,u=t,Object.getOwnPropertyNames(u).forEach((function(t){if(!e.call(g,t)){var n=Object.getOwnPropertyDescriptor(u,t);Object.defineProperty(g,t,n)}})),h.init(),h.use((function(){return{onInit(){this.logger=a.getLogger(this.name||"Page"),this.log=(...e)=>{this.logger.log(...e)},this.error=(...e)=>{e[0]instanceof Error?this.logger.error(...e):this.logger.error({},...e)},this.debug=(...e)=>{this.logger.debug(...e)}},onCreate(){this.logger=a.getLogger(this.name||"app.js"),this.log=(...e)=>{this.logger.log(...e)},this.error=(...e)=>{e[0]instanceof Error?this.logger.error(...e):this.logger.error({},...e)},this.debug=(...e)=>{this.logger.debug(...e)}}}}));class c{constructor(e){this.global=e}getValue(e){return this.global[e]}setValue(e,t){return this.global[e]=t}deleteKey(e){delete this.global[e]}}class p extends c{constructor(){super(__$$app$$__.__globals__.__scopedGlobals__)}}function f(e,t={}){return this.request({method:"http.request",params:e},t)}n()?hmApp.getPackageInfo:s()&&l("@zos/app").getPackageInfo,n()?hmUI:s()&&l("@zos/ui"),n()?hmSetting:s()&&l("@zos/settings"),n()?px:l("@zos/utils").px,n()?hmSetting.getDeviceInfo:s()&&l("@zos/device").getDeviceInfo,n()?"undefined"!=typeof __$$app$$__&&__$$app$$__:s()&&l("@zos/i18n").getText,n()?hmApp.gotoPage:s()&&l("@zos/router").push;let d=null;n()?d=hmApp:s()&&(d=l("@zos/app")),l("@zos/timer").setTimeout,l("@zos/timer").clearTimeout;const _=globalThis.Promise;h.use((function(){(new p).getValue("_$mgr$_")[__$$module$$__.id]={}})).use((function(e){const t=function(){const{messaging:e}=getApp()._options.globalData;return e}();return{onInit(){this.messaging=this.state.messaging=t,this._onCall=this.onCall?.bind(this),this._onRequest=this.onRequest?.bind(this),this._onBleChanged=this.onBleChanged?.bind(this),this.messaging.onCall(this._onCall).onRequest(this._onRequest).onBleChanged(this._onBleChanged)},onDestroy(){this._onCall&&this.messaging.offOnCall(this._onCall),this._onRequest&&this.messaging.offOnRequest(this._onRequest),this._onBleChanged&&this.messaging.offOnBleChanged(this._onBleChanged)},request(e,t={}){const n=function(){const e={canceled:!1};return e.promise=new _((function(t,n){e.resolve=t,e.reject=n})),e.cancel=()=>{e.canceled=!0,e.reject(new Error("Task canceled"))},e}(),s=function(){let e="";for(let t=0;t<12;t++)e+=0===t?Math.floor(9*Math.random())+1:Math.floor(10*Math.random());return e}(),o="response:result:"+s,i="response:error:"+s;return d.onMessage(o,(function(e,...t){n.resolve(...t)})),d.onMessage(i,(function(e,...t){n.reject(...t)})),this.messaging.request(e,t).then((e=>{d.postMessage(o,e)})).catch((e=>{d.postMessage(i,e)})).finally((()=>{d.offMessage(o),d.offMessage(i)})),n.promise},call(e){return this.messaging.call(e)},httpRequest:f}})).use((function(e){const t=function(){const{fileTransferLib:e}=getApp()._options.globalData;return e}();return{onInit(){this._onReceivedFile=this.onReceivedFile?.bind(this),t.onFile(this._onReceivedFile)},onDestroy(){this._onReceivedFile&&t.offFile(this._onReceivedFile)},sendFile:(e,n)=>t.sendFile(e,n)}}));export{h as BasePage};