@wiajs/core 0.1.12 → 0.1.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/core.min.js CHANGED
@@ -1,6 +1,6 @@
1
1
  /*!
2
- * wia core v0.1.12
3
- * (c) 2020 Sibyl Yu
2
+ * wia core v0.1.16
3
+ * (c) 2021 Sibyl Yu
4
4
  * @license MIT
5
5
  */
6
- var e,t;e=this,t=function(e){"use strict";var t=function(){function e(){}var t=e.prototype;return t.post=function(e,t){return new Promise((function(n,o){var r=$.getXhr();r.onreadystatechange=function(){4===r.readyState&&(200===r.status?n(r.responseText):o(new Error(r.statusText),r.responseText))},r.open("POST",e,!0);var i=t;"object"==typeof t&&(i=function(e){var t=[];for(var n in e)e.hasOwnProperty(n)&&t.push(n+"="+e[n]);return t.sort().join("&")}(t)),r.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),r.send(i)}))},t.postForm=function(e,t){return new Promise((function(n,o){var r=$.getXhr();r.onreadystatechange=function(){4===r.readyState&&(200===r.status?n(null,r.responseText):o(new Error(r.status),r.responseText))},r.open("POST",e,!0),r.send(t)}))},t.get=function(e,t){return $.get(e,t)},e}();function n(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function o(e,t,o){return t&&n(e.prototype,t),o&&n(e,o),e}function r(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function i(e,t){return(i=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function a(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}function s(e,t,n){return(s=a()?Reflect.construct:function(e,t,n){var o=[null];o.push.apply(o,t);var r=new(Function.bind.apply(e,o));return n&&i(r,n.prototype),r}).apply(null,arguments)}function c(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}var u=1,l={uniqueNumber:function(){return u+=1},id:function(e,t){return void 0===e&&(e="xxxxxxxxxx"),void 0===t&&(t="0123456789abcdef"),$.uid(e,t)},mdPreloaderContent:'\n <span class="preloader-inner">\n <span class="preloader-inner-gap"></span>\n <span class="preloader-inner-left">\n <span class="preloader-inner-half-circle"></span>\n </span>\n <span class="preloader-inner-right">\n <span class="preloader-inner-half-circle"></span>\n </span>\n </span>\n '.trim(),iosPreloaderContent:('\n <span class="preloader-inner">\n '+[0,1,2,3,4,5,6,7,8,9,10,11].map((function(){return'<span class="preloader-inner-line"></span>'})).join("")+"\n </span>\n ").trim(),auroraPreloaderContent:'\n <span class="preloader-inner">\n <span class="preloader-inner-circle"></span>\n </span>\n ',eventNameToColonCase:function(e){var t;return e.split("").map((function(e,n){return e.match(/[A-Z]/)&&0!==n&&!t?(t=!0,":"+e.toLowerCase()):e.toLowerCase()})).join("")},deleteProps:function(e){$.deleteProps(e)},nextTick:function(e,t){return void 0===t&&(t=0),setTimeout(e,t)},nextFrame:function(e){return $.nextFrame(e)},now:function(){return Date.now()},requestAnimationFrame:function(e){return $.requestAnimationFrame(e)},cancelAnimationFrame:function(e){return $.cancelAnimationFrame(e)},parseUrlQuery:function(e){return $.urlParam(e)},getTranslate:function(e,t){return void 0===t&&(t="x"),$.getTranslate(e,t)},serializeObject:function(e,t){if(void 0===t&&(t=[]),"string"==typeof e)return e;var n,o=[];function r(e){if(t.length>0){for(var n="",o=0;o<t.length;o+=1)n+=0===o?t[o]:"["+encodeURIComponent(t[o])+"]";return n+"["+encodeURIComponent(e)+"]"}return encodeURIComponent(e)}function i(e){return encodeURIComponent(e)}return Object.keys(e).forEach((function(a){var s;if(Array.isArray(e[a])){s=[];for(var c=0;c<e[a].length;c+=1)Array.isArray(e[a][c])||"object"!=typeof e[a][c]?s.push(r(a)+"[]="+i(e[a][c])):((n=t.slice()).push(a),n.push(String(c)),s.push(l.serializeObject(e[a][c],n)));s.length>0&&o.push(s.join("&"))}else null===e[a]||""===e[a]?o.push(r(a)+"="):"object"==typeof e[a]?((n=t.slice()).push(a),""!==(s=l.serializeObject(e[a],n))&&o.push(s)):void 0!==e[a]&&""!==e[a]?o.push(r(a)+"="+i(e[a])):""===e[a]&&o.push(r(a))})),o.join("&")},isObject:function(e){return"object"==typeof e&&null!==e&&e.constructor&&e.constructor===Object},merge:function(){var e;return(e=$).merge.apply(e,arguments)},extend:function(){for(var e,t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];var r=n[0];return n.splice(0,1),(e=$).assign.apply(e,[r].concat(n))},colorHexToRgb:function(e){var t=e.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i,(function(e,t,n,o){return t+t+n+n+o+o})),n=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return n?n.slice(1).map((function(e){return parseInt(e,16)})):null},colorRgbToHex:function(e,t,n){return"#"+[e,t,n].map((function(e){var t=e.toString(16);return 1===t.length?"0"+t:t})).join("")},colorRgbToHsl:function(e,t,n){e/=255,t/=255,n/=255;var o,r=Math.max(e,t,n),i=Math.min(e,t,n),a=r-i;0===a?o=0:r===e?o=(t-n)/a%6:r===t?o=(n-e)/a+2:r===n&&(o=(e-t)/a+4);var s=(i+r)/2;return o<0&&(o=6+o),[60*o,0===a?0:a/(1-Math.abs(2*s-1)),s]},colorHslToRgb:function(e,t,n){var o,r=(1-Math.abs(2*n-1))*t,i=e/60,a=r*(1-Math.abs(i%2-1));Number.isNaN(e)||void 0===e?o=[0,0,0]:i<=1?o=[r,a,0]:i<=2?o=[a,r,0]:i<=3?o=[0,r,a]:i<=4?o=[0,a,r]:i<=5?o=[a,0,r]:i<=6&&(o=[r,0,a]);var s=n-r/2;return o.map((function(e){return Math.max(0,Math.min(255,Math.round(255*(e+s))))}))},colorHsbToHsl:function(e,t,n){var o={h:e,s:0,l:0},r=t,i=n;return o.l=(2-r)*i/2,o.s=o.l&&o.l<1?r*i/(o.l<.5?2*o.l:2-2*o.l):o.s,[o.h,o.s,o.l]},colorHslToHsb:function(e,t,n){var o={h:e,s:0,b:0},r=n,i=t*(r<.5?r:1-r);return o.b=r+i,o.s=r>0?2*i/o.b:o.s,[o.h,o.s,o.b]},colorThemeCSSProperties:function(){for(var e,t,n=arguments.length,o=new Array(n),r=0;r<n;r++)o[r]=arguments[r];if(1===o.length?(e=o[0],t=l.colorHexToRgb(e)):3===o.length&&(t=o,e=l.colorRgbToHex.apply(l,t)),!t)return{};var i=l.colorRgbToHsl.apply(l,t),a=[i[0],i[1],Math.max(0,i[2]-.08)],s=[i[0],i[1],Math.max(0,i[2]+.08)],c=l.colorRgbToHex.apply(l,l.colorHslToRgb.apply(l,a)),u=l.colorRgbToHex.apply(l,l.colorHslToRgb.apply(l,s));return{"--f7-theme-color":e,"--f7-theme-color-rgb":t.join(", "),"--f7-theme-color-shade":c,"--f7-theme-color-tint":u}}},d=function(){function e(e,t){void 0===e&&(e={}),void 0===t&&(t=[]);var n=this;n.params=e,n.eventsParents=t,n.eventsListeners={},n.params&&n.params.on&&Object.keys(n.params.on).forEach((function(e){n.on(e,n.params.on[e])}))}var t=e.prototype;return t.on=function(e,t,n){var o=this;if("function"!=typeof t)return o;var r=n?"unshift":"push";return e.split(" ").forEach((function(e){o.eventsListeners[e]||(o.eventsListeners[e]=[]),o.eventsListeners[e][r](t)})),o},t.once=function(e,t,n){var o=this;if("function"!=typeof t)return o;function r(){o.off(e,r),r.proxy&&delete r.proxy;for(var n=arguments.length,i=new Array(n),a=0;a<n;a++)i[a]=arguments[a];t.apply(o,i)}return r.proxy=t,o.on(e,r,n)},t.off=function(e,t){var n=this;return n.eventsListeners?(e.split(" ").forEach((function(e){void 0===t?n.eventsListeners[e]=[]:n.eventsListeners[e]&&n.eventsListeners[e].forEach((function(o,r){(o===t||o.proxy&&o.proxy===t)&&n.eventsListeners[e].splice(r,1)}))})),n):n},t.emit=function(){var e,t,n,o,r=this;if(!r.eventsListeners)return r;for(var i=arguments.length,a=new Array(i),s=0;s<i;s++)a[s]=arguments[s];"string"==typeof a[0]||Array.isArray(a[0])?(e=a[0],t=a.slice(1,a.length),n=r,o=r.eventsParents):(e=a[0].events,t=a[0].data,n=a[0].context||r,o=a[0].local?[]:a[0].parents||r.eventsParents);var c=Array.isArray(e)?e:e.split(" "),u=c.map((function(e){return e.replace("local::","")})),l=c.filter((function(e){return e.indexOf("local::")<0}));return u.forEach((function(e){if(r.eventsListeners&&r.eventsListeners[e]){var o=[];r.eventsListeners[e].forEach((function(e){o.push(e)})),o.forEach((function(e){e.apply(n,t)}))}})),o&&o.length>0&&o.forEach((function(e){e.emit.apply(e,[l].concat(t))})),r},e}(),p=function(e){function t(t,n){return void 0===t&&(t={}),void 0===n&&(n=[]),e.call(this,t,n)||this}r(t,e);var n=t.prototype;return n.useModuleParams=function(e,t){if(e.params){var n={};Object.keys(e.params).forEach((function(e){void 0!==t[e]&&(n[e]=$.extend({},t[e]))})),$.extend(t,e.params),Object.keys(n).forEach((function(e){$.extend(t[e],n[e])}))}},n.useModulesParams=function(e){var t=this;t.modules&&Object.keys(t.modules).forEach((function(n){var o=t.modules[n];o.params&&$.extend(e,o.params)}))},n.useModule=function(e,t){void 0===e&&(e=""),void 0===t&&(t={});var n=this;if(n.modules){var o="string"==typeof e?n.modules[e]:e;o&&(o.instance&&Object.keys(o.instance).forEach((function(e){var t=o.instance[e];n[e]="function"==typeof t?t.bind(n):t})),o.on&&n.on&&Object.keys(o.on).forEach((function(e){n.on(e,o.on[e])})),o.vnode&&(n.vnodeHooks||(n.vnodeHooks={}),Object.keys(o.vnode).forEach((function(e){Object.keys(o.vnode[e]).forEach((function(t){var r=o.vnode[e][t];n.vnodeHooks[t]||(n.vnodeHooks[t]={}),n.vnodeHooks[t][e]||(n.vnodeHooks[t][e]=[]),n.vnodeHooks[t][e].push(r.bind(n))}))}))),o.create&&o.create.bind(n)(t))}},n.useModules=function(e){void 0===e&&(e={});var t=this;t.modules&&Object.keys(t.modules).forEach((function(n){var o=e[n]||{};t.useModule(n,o)}))},t.installModule=function(e){var t=this;t.prototype.modules||(t.prototype.modules={});var n=e.name||Object.keys(t.prototype.modules).length+"_"+$.now();if(t.prototype.modules[n]=e,e.proto&&Object.keys(e.proto).forEach((function(n){t.prototype[n]=e.proto[n]})),e.static&&Object.keys(e.static).forEach((function(n){t[n]=e.static[n]})),e.install){for(var o=arguments.length,r=new Array(o>1?o-1:0),i=1;i<o;i++)r[i-1]=arguments[i];e.install.apply(t,r)}return t},t.use=function(e){var t=this;if(Array.isArray(e))return e.forEach((function(e){return t.installModule(e)})),t;for(var n=arguments.length,o=new Array(n>1?n-1:0),r=1;r<n;r++)o[r-1]=arguments[r];return t.installModule.apply(t,[e].concat(o))},o(t,null,[{key:"components",set:function(e){this.use&&this.use(e)}}]),t}(d);function f(e){void 0===e&&(e={});var t=e,n=t.defaultSelector,o=t.constructor,r=t.domProp,i=t.app,a=t.addMethods,c={create:function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return s(o,i?[i].concat(t):t)},get:function(e){if(void 0===e&&(e=n),e instanceof o)return e;var t=$(e);return 0!==t.length?t[0][r]:void 0},destroy:function(e){var t=c.get(e);if(t&&t.destroy)return t.destroy()}};return a&&Array.isArray(a)&&a.forEach((function(e){c[e]=function(t){void 0===t&&(t=n);for(var o=c.get(t),r=arguments.length,i=new Array(r>1?r-1:0),a=1;a<r;a++)i[a-1]=arguments[a];if(o&&o[e])return o[e].apply(o,i)}})),c}function m(e){void 0===e&&(e={});var t=e,n=t.defaultSelector,o=t.constructor,r=t.app;return $.extend(f({defaultSelector:n,constructor:o,app:r,domProp:"f7Modal"}),{open:function(e,t){var n=$(e),i=n[0].f7Modal;return i||(i=new o(r,{el:n})),i.open(t)},close:function(e,t){void 0===e&&(e=n);var i=$(e);if(0!==i.length){var a=i[0].f7Modal;return a||(a=new o(r,{el:i})),a.close(t)}}})}var h=[];function v(e){var t=this;return new Promise((function(n,o){var r,i,a,s=t.instance;if(e){if("string"==typeof e){var c=e.match(/([a-z0-9-]*)/i);if(e.indexOf(".")<0&&c&&c[0].length===e.length){if(!s||s&&!s.params.lazyModulesPath)return void o(new Error('Wia: "lazyModulesPath" app parameter must be specified to fetch module by name'));r=s.params.lazyModulesPath+"/"+e+".js"}else r=e}else"function"==typeof e?a=e:i=e;if(a){var u=a(t,!1);if(!u)return void o(new Error("Wia: Can't find Wia component in specified component function"));if(t.prototype.modules&&t.prototype.modules[u.name])return void n();f(u),n()}if(i){var l=i;if(!l)return void o(new Error("Wia: Can't find Wia component in specified component"));if(t.prototype.modules&&t.prototype.modules[l.name])return void n();f(l),n()}if(r){if(h.indexOf(r)>=0)return void n();h.push(r);var d=new Promise((function(e,n){t.request.get(r,(function(o){var i="wia_component_loader_callback_"+$.id(),a=document.createElement("script");a.innerHTML="window."+i+" = function (Wia, WiaAutoInstallComponent) {return "+o.trim()+"}",$("head").append(a);var s=window[i];delete window[i],$(a).remove();var c=s(t,!1);c?(t.prototype.modules&&t.prototype.modules[c.name]||f(c),e()):n(new Error("Wia: Can't find Wia component in "+r+" file"))}),(function(e,t){n(e,t)}))})),p=new Promise((function(e){t.request.get(r.replace(".js",s.rtl?".rtl.css":".css"),(function(t){var n=document.createElement("style");n.innerHTML=t,$("head").append(n),e()}),(function(){e()}))}));Promise.all([d,p]).then((function(){n()})).catch((function(e){o(e)}))}}else o(new Error("Wia: Lazy module must be specified"));function f(e){t.use(e),s&&(s.useModuleParams(e,s.params),s.useModule(e))}}))}var y={name:"resize",instance:{getSize:function(){if(!this.root[0])return{width:0,height:0,left:0,top:0};var e=this.root.offset(),t=[this.root[0].offsetWidth,this.root[0].offsetHeight,e.left,e.top],n=t[0],o=t[1],r=t[2],i=t[3];return this.width=n,this.height=o,this.left=r,this.top=i,{width:n,height:o,left:r,top:i}}},on:{init:function(){var e=this;e.getSize(),window.addEventListener("resize",(function(){e.emit("resize")}),!1),window.addEventListener("orientationchange",(function(){e.emit("orientationchange")}))},orientationchange:function(){this.device.ipad&&(document.body.scrollLeft=0,setTimeout((function(){document.body.scrollLeft=0}),0))},resize:function(){this.getSize()}}};function g(e){var t,n,o;t=function(t){e.emit({events:"click",data:[t]})},$.support.touch?(document.addEventListener("touchstart",(function(e){n=e.changedTouches[0].clientX,o=e.changedTouches[0].clientY}),!0),document.addEventListener("touchend",(function(e){var r=Math.abs(e.changedTouches[0].clientX-n),i=Math.abs(e.changedTouches[0].clientY-o);r<=5&&i<=5&&t.call(this,e)}),!0)):document.addEventListener("click",t,!0),e.on("click",(function(t){var n=$(t.target),o=n.closest("a");o.length>0&&o.attr("href"),Object.keys(e.modules).forEach((function(o){var r=e.modules[o].clicks;r&&(t.preventF7Router||Object.keys(r).forEach((function(o){var i=n.closest(o).eq(0);i.length>0&&r[o].call(e,i,i.dataset(),t)})))}))}))}var w={name:"clicks",params:{clicks:{externalLinks:".ext"}},on:{init:function(){g(this)}}},b={registrations:[],register:function(e,t){var n=this;return"serviceWorker"in window.navigator&&n.serviceWorker.container?new Promise((function(o,r){n.serviceWorker.container.register(e,t?{scope:t}:{}).then((function(e){b.registrations.push(e),n.emit("serviceWorkerRegisterSuccess",e),o(e)})).catch((function(e){n.emit("serviceWorkerRegisterError",e),r(e)}))})):new Promise((function(e,t){t(new Error("Service worker is not supported"))}))},unregister:function(e){var t,n=this;return"serviceWorker"in window.navigator&&n.serviceWorker.container?(t=e?Array.isArray(e)?e:[e]:b.registrations,Promise.all(t.map((function(e){return new Promise((function(t,o){e.unregister().then((function(){b.registrations.indexOf(e)>=0&&b.registrations.splice(b.registrations.indexOf(e),1),n.emit("serviceWorkerUnregisterSuccess",e),t()})).catch((function(t){n.emit("serviceWorkerUnregisterError",e,t),o(t)}))}))})))):new Promise((function(e,t){t(new Error("Service worker is not supported"))}))}},k={name:"sw",params:{serviceWorker:{path:void 0,scope:void 0}},create:function(){$.extend(this,{serviceWorker:{container:"serviceWorker"in window.navigator?window.navigator.serviceWorker:void 0,registrations:b.registrations,register:b.register.bind(this),unregister:b.unregister.bind(this)}})},on:{init:function(){if("serviceWorker"in window.navigator){var e=this;if(e.serviceWorker.container){var t=e.params.serviceWorker.path,n=e.params.serviceWorker.scope;!t||Array.isArray(t)&&!t.length||(Array.isArray(t)?t:[t]).forEach((function(t){e.serviceWorker.register(t,n)}))}}}}},C=$.support,E=$.device,x=function(e){function t(n){var o;if(o=e.call(this,n)||this,t.instance)throw new Error("App is already initialized and can't be initialized more than once");var r=$.extend({},n),i=c(o);i.device=E,i.support=C,t.instance=i,$.app=i,$.App=t;var a={version:"1.0.0",id:"pub.wia.testapp",root:"body",theme:"auto",language:window.navigator.language,routes:[],name:"wia",lazyModulesPath:null,initOnDeviceReady:!0,init:!0,autoDarkTheme:!1,iosTranslucentBars:!0,iosTranslucentModals:!0,component:void 0,componentUrl:void 0};i.useModulesParams(a),i.params=$.extend(a,n);var s=$(i.params.root);$.extend(i,{id:i.params.id,name:i.params.name,version:i.params.version,routes:i.params.routes,language:i.params.language,root:s,cfg:i.params.cfg,api:i.params.api,rtl:"rtl"===s.css("direction"),theme:"auto"===i.params.theme?E.ios?"ios":E.desktop&&E.electron?"aurora":"md":i.params.theme,passedParams:r,online:window.navigator.onLine}),i.root&&i.root[0]&&(i.root[0].wia=i),E.ios&&E.webView&&window.addEventListener("touchstart",(function(){})),i.touchEvents={start:C.touch?"touchstart":C.pointerEvents?"pointerdown":"mousedown",move:C.touch?"touchmove":C.pointerEvents?"pointermove":"mousemove",end:C.touch?"touchend":C.pointerEvents?"pointerup":"mouseup"},i.useModules(),i.initData();var u="(prefers-color-scheme: dark)",l="(prefers-color-scheme: light)";function d(){E.cordova&&i.params.initOnDeviceReady?$(document).on("deviceready",(function(){i.init()})):i.init()}return i.mq={},window.matchMedia&&(i.mq.dark=window.matchMedia(u),i.mq.light=window.matchMedia(l)),i.colorSchemeListener=function(e){var t=e.matches,n=e.media;if(t){var o=document.querySelector("html");n===u?o.classList.add("theme-dark"):n===l&&o.classList.remove("theme-dark")}},i.params.component||i.params.componentUrl?i.router.componentLoader(i.params.component,i.params.componentUrl,{componentOptions:{el:i.root[0]}},(function(e){i.root=$(e),i.root[0].f7=i,i.rootComponent=e.f7Component,i.params.init&&d()})):i.params.init&&d(),i||c(o)}r(t,e);var n=t.prototype;return n.initData=function(){var e=this;e.data={},e.params.data&&"function"==typeof e.params.data?$.extend(e.data,e.params.data.bind(e)()):e.params.data&&$.extend(e.data,e.params.data),e.methods={},e.params.methods&&Object.keys(e.params.methods).forEach((function(t){"function"==typeof e.params.methods[t]?e.methods[t]=e.params.methods[t].bind(e):e.methods[t]=e.params.methods[t]}))},n.enableAutoDarkTheme=function(){if(window.matchMedia){var e=this,t=document.querySelector("html");e.mq.dark&&e.mq.light&&(e.mq.dark.addListener(e.colorSchemeListener),e.mq.light.addListener(e.colorSchemeListener)),e.mq.dark&&e.mq.dark.matches?t.classList.add("theme-dark"):e.mq.light&&e.mq.light.matches&&t.classList.remove("theme-dark")}},n.disableAutoDarkTheme=function(){window.matchMedia&&(this.mq.dark&&this.mq.dark.removeListener(this.colorSchemeListener),this.mq.light&&this.mq.light.removeListener(this.colorSchemeListener))},n.init=function(){var e,t,n,o=this;return o.initialized||(o.root.addClass("framework7-initializing"),o.rtl&&$("html").attr("dir","rtl"),o.params.autoDarkTheme&&o.enableAutoDarkTheme(),window.addEventListener("offline",(function(){o.online=!1,o.emit("offline"),o.emit("connection",!1)})),window.addEventListener("online",(function(){o.online=!0,o.emit("online"),o.emit("connection",!0)})),o.root.addClass("framework7-root"),$("html").removeClass("ios md aurora").addClass(o.theme),o.params.iosTranslucentBars&&"ios"===o.theme&&E.ios&&$("html").addClass("ios-translucent-bars"),o.params.iosTranslucentModals&&"ios"===o.theme&&E.ios&&$("html").addClass("ios-translucent-modals"),$.nextFrame((function(){o.root.removeClass("framework7-initializing")})),e=[],t=document.querySelector("html"),n=document.querySelector('meta[name="apple-mobile-web-app-status-bar-style"]'),t&&(E.standalone&&E.ios&&n&&"black-translucent"===n.content&&e.push("device-full-viewport"),e.push("device-pixel-ratio-"+Math.floor(E.pixelRatio)),E.os&&!E.desktop?e.push("device-"+E.os):E.desktop&&(e.push("device-desktop"),E.os&&e.push("device-"+E.os)),(E.cordova||E.phonegap)&&e.push("device-cordova"),e.forEach((function(e){t.classList.add(e)}))),o.initialized=!0,o.emit("init")),o},n.loadModule=function(e){t.loadModule(e),this[e.name].init&&this[e.name].init()},n.loadModules=function(){return t.loadModules.apply(t,arguments)},n.getVnodeHooks=function(e,t){return this.vnodeHooks&&this.vnodeHooks[e]&&this.vnodeHooks[e][t]||[]},o(t,[{key:"$",get:function(){return $}}],[{key:"Dom",get:function(){return $}},{key:"$",get:function(){return $}},{key:"Module",get:function(){return p}},{key:"Event",get:function(){return d}}]),t}(p);x.ModalMethods=m,x.ConstructorMethods=f,x.loadModule=v,x.loadModules=function(e){return Promise.all(e.map((function(e){return x.loadModule(e)})))},x.support=C,x.device=E,x.utils=l,x.use([y,w,k]);var M,L,A,O,T={normal:"nor",retina:"ret",srcset:"set",threshold:0},P=window.innerHeight,j=S(),H=document.body.classList.contains("srcset")||"srcset"in document.createElement("img"),R=window.devicePixelRatio||window.screen.deviceXDPI/window.screen.logicalXDPI,q=function(){function e(e){M=$.assign({},T,e)}var t=e.prototype;return t.start=function(e){return["scroll","resize"].forEach((function(t){return e.addEventListener(t,W)})),O=e,this},t.stop=function(){return["scroll","resize"].forEach((function(e){return O.removeEventListener(e,W)})),this},t.update=function(){setTimeout((function(){_(),D()}),1)},e}();function S(){return window.scrollY||window.pageYOffset}function W(){j=S(),L||(window.requestAnimationFrame((function(){return D()})),L=!0)}function z(e){var t=j,n=t+P,o=function(e){return e.getBoundingClientRect().top+j}(e),r=o+e.offsetHeight,i=M.threshold/100*P;return r>=t-i&&o<=n+i}function D(){if(A)return P=window.innerHeight,A.forEach((function(e){return z(e)&&function(e){if($.emit("lazy:src:before",e),H&&e.hasAttribute(M.srcset))e.setAttribute("srcset",e.getAttribute(M.srcset));else{var t=R>1&&e.getAttribute(M.retina)||e.getAttribute(M.normal);e.setAttribute("src",t),console.log("set src:"+t)}$.emit("lazy:src:after",e),[M.normal,M.retina,M.srcset].forEach((function(t){return e.removeAttribute(t)})),_()}(e)})),L=!1,this}function _(e){return A=e?Array.prototype.slice.call(e.querySelectorAll("["+M.normal+"]")):Array.prototype.slice.call(document.querySelectorAll("["+M.normal+"]")),this}var F=function(e){function t(t,n,o,r){var i;return(i=e.call(this,null,[t])||this).app=t,i.cfg=t.cfg,i.name=n,i.title=o,i.style=r||"./page/"+n+".css",i.path=""+n,i.view=null,i.html="",i.css="",i.js="",i.data={},i.param={},i}r(t,e);var n=t.prototype;return n.load=function(e){this.emit("local::load pageLoad",e)},n.ready=function(e,t,n){this.emit("local::ready pageReady",e,t,n),e.qus("[name$=-tp]").hide()},n.show=function(e,t){e.qus('a[href=""]').attr("href","javascript:;"),this.reset&&this.reset(),this.emit("local::show pageShow",e,t)},n.back=function(e,t){e.qus('a[href=""]').attr("href","javascript:;"),this.emit("local::back pageBack",e,t)},n.hide=function(e){this.emit("local::hide pageHide",e)},t}(d),U=[],B=[],I=function(e){function t(t,n){var o,r=c(o=e.call(this,n,[t])||this);return r.params=l.extend({},n),r.opened=!1,c(o)||c(o)}r(t,e);var n=t.prototype;return n.onOpen=function(){this.opened=!0,U.push(this),$("html").addClass("with-modal-"+this.type.toLowerCase()),this.$el.trigger("modal:open "+this.type.toLowerCase()+":open"),this.emit("local::open modalOpen "+this.type+"Open",this)},n.onOpened=function(){this.$el.trigger("modal:opened "+this.type.toLowerCase()+":opened"),this.emit("local::opened modalOpened "+this.type+"Opened",this)},n.onClose=function(){this.opened=!1,this.type&&this.$el&&(U.splice(U.indexOf(this),1),$("html").removeClass("with-modal-"+this.type.toLowerCase()),this.$el.trigger("modal:close "+this.type.toLowerCase()+":close"),this.emit("local::close modalClose "+this.type+"Close",this))},n.onClosed=function(){this.type&&this.$el&&(this.$el.removeClass("modal-out"),this.$el.hide(),this.$el.trigger("modal:closed "+this.type.toLowerCase()+":closed"),this.emit("local::closed modalClosed "+this.type+"Closed",this))},n.open=function(e){var t,n=this,o=n.app,r=n.$el,i=n.type,a=n.$backdropEl,s=n.params.moveToRoot,c=!0;if(void 0!==e?c=e:void 0!==n.params.animate&&(c=n.params.animate),!r||r.hasClass("modal-in"))return n;if("dialog"===i&&o.params.modal.queueDialogs&&($(".dialog.modal-in").length>0?t=!0:U.length>0&&U.forEach((function(e){"dialog"===e.type&&(t=!0)})),t))return B.push(n),n;var u=r.parent(),l=r.parents(document).length>0;function d(){r.hasClass("modal-out")?n.onClosed():r.hasClass("modal-in")&&n.onOpened()}return s&&o.params.modal.moveToRoot&&!u.is(o.root)&&(o.root.append(r),n.once(i+"Closed",(function(){l?u.append(r):r.remove()}))),r.show(),n._clientLeft=r[0].clientLeft,c?(a&&(a.removeClass("not-animated"),a.addClass("backdrop-in")),r.animationEnd((function(){d()})),r.transitionEnd((function(){d()})),r.removeClass("modal-out not-animated").addClass("modal-in"),n.onOpen()):(a&&a.addClass("backdrop-in not-animated"),r.removeClass("modal-out").addClass("modal-in not-animated"),n.onOpen(),n.onOpened()),n},n.close=function(e){var t=this,n=t.$el,o=t.$backdropEl,r=!0;if(void 0!==e?r=e:void 0!==t.params.animate&&(r=t.params.animate),!n||!n.hasClass("modal-in"))return B.indexOf(t)>=0&&B.splice(B.indexOf(t),1),t;if(o){var i=!0;"popup"===t.type&&t.$el.prevAll(".popup.modal-in").each((function(e,n){var o=n.f7Modal;o&&o.params.closeByBackdropClick&&o.params.backdrop&&o.backdropEl===t.backdropEl&&(i=!1)})),i&&(o[r?"removeClass":"addClass"]("not-animated"),o.removeClass("backdrop-in"))}function a(){n.hasClass("modal-out")?t.onClosed():n.hasClass("modal-in")&&t.onOpened()}return n[r?"removeClass":"addClass"]("not-animated"),r?(n.animationEnd((function(){a()})),n.transitionEnd((function(){a()})),n.removeClass("modal-in").addClass("modal-out"),t.onClose()):(n.addClass("not-animated").removeClass("modal-in").addClass("modal-out"),t.onClose(),t.onClosed()),"dialog"===t.type&&0!==B.length&&B.shift().open(),t},n.destroy=function(){this.destroyed||(this.emit("local::beforeDestroy modalBeforeDestroy "+this.type+"BeforeDestroy",this),this.$el&&(this.$el.trigger("modal:beforedestroy "+this.type.toLowerCase()+":beforedestroy"),this.$el.length&&this.$el[0].f7Modal&&delete this.$el[0].f7Modal),l.deleteProps(this),this.destroyed=!0)},t}(d),X=$.support,N=$.device;e.Ajax=t,e.App=x,e.Constructors=f,e.Device=N,e.Event=d,e.Lazy=q,e.Modal=I,e.Modals=m,e.Module=p,e.Page=F,e.Resize=y,e.SW=k,e.Support=X,e.Utils=l,e.loadModule=v,Object.defineProperty(e,"__esModule",{value:!0})},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e=e||self)["@wiajs/Core"]={});
6
+ var e,t;e=this,t=function(e){"use strict";var t=function(){function e(){}var t=e.prototype;return t.post=function(e,t){return new Promise((function(n,o){var r=$.getXhr();r.onreadystatechange=function(){4===r.readyState&&(200===r.status?n(r.responseText):o(new Error(r.statusText),r.responseText))},r.open("POST",e,!0);var a=t;"object"==typeof t&&(a=function(e){var t=[];for(var n in e)e.hasOwnProperty(n)&&t.push(n+"="+e[n]);return t.sort().join("&")}(t)),r.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),r.send(a)}))},t.postForm=function(e,t){return new Promise((function(n,o){var r=$.getXhr();r.onreadystatechange=function(){4===r.readyState&&(200===r.status?n(null,r.responseText):o(new Error(r.status),r.responseText))},r.open("POST",e,!0),r.send(t)}))},t.get=function(e,t){return $.get(e,t)},e}();function n(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function o(e,t,o){return t&&n(e.prototype,t),o&&n(e,o),e}function r(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,a(e,t)}function a(e,t){return a=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},a(e,t)}function i(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function s(e,t,n){return s=i()?Reflect.construct:function(e,t,n){var o=[null];o.push.apply(o,t);var r=new(Function.bind.apply(e,o));return n&&a(r,n.prototype),r},s.apply(null,arguments)}function c(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}var u=1,l={uniqueNumber:function(){return u+=1},id:function(e,t){return void 0===e&&(e="xxxxxxxxxx"),void 0===t&&(t="0123456789abcdef"),$.uid(e,t)},mdPreloaderContent:'\n <span class="preloader-inner">\n\t\t\t<svg viewBox="0 0 36 36">\n\t\t\t\t<circle cx="18" cy="18" r="16"></circle>\n\t\t\t</svg>\n </span>\n '.trim(),iosPreloaderContent:('\n <span class="preloader-inner">\n\t\t\t'+[0,1,2,3,4,5,6,7].map((function(){return'<span class="preloader-inner-line"></span>'})).join("")+"\n </span>\n ").trim(),auroraPreloaderContent:'\n <span class="preloader-inner">\n <span class="preloader-inner-circle"></span>\n </span>\n ',eventNameToColonCase:function(e){var t;return e.split("").map((function(e,n){return e.match(/[A-Z]/)&&0!==n&&!t?(t=!0,":"+e.toLowerCase()):e.toLowerCase()})).join("")},deleteProps:function(e){$.deleteProps(e)},nextTick:function(e,t){return void 0===t&&(t=0),setTimeout(e,t)},nextFrame:function(e){return $.nextFrame(e)},now:function(){return Date.now()},requestAnimationFrame:function(e){return $.requestAnimationFrame(e)},cancelAnimationFrame:function(e){return $.cancelAnimationFrame(e)},parseUrlQuery:function(e){return $.urlParam(e)},getTranslate:function(e,t){return void 0===t&&(t="x"),$.getTranslate(e,t)},serializeObject:function(e,t){if(void 0===t&&(t=[]),"string"==typeof e)return e;var n,o=[];function r(e){if(t.length>0){for(var n="",o=0;o<t.length;o+=1)n+=0===o?t[o]:"["+encodeURIComponent(t[o])+"]";return n+"["+encodeURIComponent(e)+"]"}return encodeURIComponent(e)}function a(e){return encodeURIComponent(e)}return Object.keys(e).forEach((function(i){var s;if(Array.isArray(e[i])){s=[];for(var c=0;c<e[i].length;c+=1)Array.isArray(e[i][c])||"object"!=typeof e[i][c]?s.push(r(i)+"[]="+a(e[i][c])):((n=t.slice()).push(i),n.push(String(c)),s.push(l.serializeObject(e[i][c],n)));s.length>0&&o.push(s.join("&"))}else null===e[i]||""===e[i]?o.push(r(i)+"="):"object"==typeof e[i]?((n=t.slice()).push(i),""!==(s=l.serializeObject(e[i],n))&&o.push(s)):void 0!==e[i]&&""!==e[i]?o.push(r(i)+"="+a(e[i])):""===e[i]&&o.push(r(i))})),o.join("&")},isObject:function(e){return"object"==typeof e&&null!==e&&e.constructor&&e.constructor===Object},merge:function(){var e;return(e=$).merge.apply(e,arguments)},extend:function(){for(var e,t=arguments.length,n=new Array(t),o=0;o<t;o++)n[o]=arguments[o];var r=n[0];return n.splice(0,1),(e=$).assign.apply(e,[r].concat(n))},bindMethods:function(e,t){var n=this;Object.keys(t).forEach((function(o){n.isObject(t[o])&&Object.keys(t[o]).forEach((function(n){"function"==typeof t[o][n]&&(t[o][n]=t[o][n].bind(e))})),e[o]=t[o]}))},colorHexToRgb:function(e){var t=e.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i,(function(e,t,n,o){return t+t+n+n+o+o})),n=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return n?n.slice(1).map((function(e){return parseInt(e,16)})):null},colorRgbToHex:function(e,t,n){return"#"+[e,t,n].map((function(e){var t=e.toString(16);return 1===t.length?"0"+t:t})).join("")},colorRgbToHsl:function(e,t,n){e/=255,t/=255,n/=255;var o,r=Math.max(e,t,n),a=Math.min(e,t,n),i=r-a;0===i?o=0:r===e?o=(t-n)/i%6:r===t?o=(n-e)/i+2:r===n&&(o=(e-t)/i+4);var s=(a+r)/2;return o<0&&(o=6+o),[60*o,0===i?0:i/(1-Math.abs(2*s-1)),s]},colorHslToRgb:function(e,t,n){var o,r=(1-Math.abs(2*n-1))*t,a=e/60,i=r*(1-Math.abs(a%2-1));Number.isNaN(e)||void 0===e?o=[0,0,0]:a<=1?o=[r,i,0]:a<=2?o=[i,r,0]:a<=3?o=[0,r,i]:a<=4?o=[0,i,r]:a<=5?o=[i,0,r]:a<=6&&(o=[r,0,i]);var s=n-r/2;return o.map((function(e){return Math.max(0,Math.min(255,Math.round(255*(e+s))))}))},colorHsbToHsl:function(e,t,n){var o={h:e,s:0,l:0},r=t,a=n;return o.l=(2-r)*a/2,o.s=o.l&&o.l<1?r*a/(o.l<.5?2*o.l:2-2*o.l):o.s,[o.h,o.s,o.l]},colorHslToHsb:function(e,t,n){var o={h:e,s:0,b:0},r=n,a=t*(r<.5?r:1-r);return o.b=r+a,o.s=r>0?2*a/o.b:o.s,[o.h,o.s,o.b]},colorThemeCSSProperties:function(){for(var e,t,n=arguments.length,o=new Array(n),r=0;r<n;r++)o[r]=arguments[r];if(1===o.length?(e=o[0],t=l.colorHexToRgb(e)):3===o.length&&(t=o,e=l.colorRgbToHex.apply(l,t)),!t)return{};var a=l.colorRgbToHsl.apply(l,t),i=[a[0],a[1],Math.max(0,a[2]-.08)],s=[a[0],a[1],Math.max(0,a[2]+.08)],c=l.colorRgbToHex.apply(l,l.colorHslToRgb.apply(l,i)),u=l.colorRgbToHex.apply(l,l.colorHslToRgb.apply(l,s));return{"--f7-theme-color":e,"--f7-theme-color-rgb":t.join(", "),"--f7-theme-color-shade":c,"--f7-theme-color-tint":u}}},d=function(){function e(e,t){void 0===e&&(e={}),void 0===t&&(t=[]);var n=this;n.params=e,n.eventsParents=t,n.eventsListeners={},n.params&&n.params.on&&Object.keys(n.params.on).forEach((function(e){n.on(e,n.params.on[e])}))}var t=e.prototype;return t.on=function(e,t,n){var o=this;if("function"!=typeof t)return o;var r=n?"unshift":"push";return e.split(" ").forEach((function(e){o.eventsListeners[e]||(o.eventsListeners[e]=[]),o.eventsListeners[e][r](t)})),o},t.once=function(e,t,n){var o=this;if("function"!=typeof t)return o;function r(){o.off(e,r),r.proxy&&delete r.proxy;for(var n=arguments.length,a=new Array(n),i=0;i<n;i++)a[i]=arguments[i];t.apply(o,a)}return r.proxy=t,o.on(e,r,n)},t.off=function(e,t){var n=this;return n.eventsListeners?(e.split(" ").forEach((function(e){void 0===t?n.eventsListeners[e]=[]:n.eventsListeners[e]&&n.eventsListeners[e].forEach((function(o,r){(o===t||o.proxy&&o.proxy===t)&&n.eventsListeners[e].splice(r,1)}))})),n):n},t.emit=function(){var e,t,n,o,r=this;if(!r.eventsListeners)return r;for(var a=arguments.length,i=new Array(a),s=0;s<a;s++)i[s]=arguments[s];"string"==typeof i[0]||Array.isArray(i[0])?(e=i[0],t=i.slice(1,i.length),n=r,o=r.eventsParents):(e=i[0].events,t=i[0].data,n=i[0].context||r,o=i[0].local?[]:i[0].parents||r.eventsParents);var c=Array.isArray(e)?e:e.split(" "),u=c.map((function(e){return e.replace("local::","")})),l=c.filter((function(e){return e.indexOf("local::")<0}));return u.forEach((function(e){if(r.eventsListeners&&r.eventsListeners[e]){var o=[];r.eventsListeners[e].forEach((function(e){o.push(e)})),o.forEach((function(e){e.apply(n,t)}))}})),o&&o.length>0&&o.forEach((function(e){e.emit.apply(e,[l].concat(t))})),r},e}(),f=function(e){function t(t,n){return void 0===t&&(t={}),void 0===n&&(n=[]),e.call(this,t,n)||this}r(t,e);var n=t.prototype;return n.useModuleParams=function(e,t){if(e.params){var n={};Object.keys(e.params).forEach((function(e){void 0!==t[e]&&(n[e]=$.extend({},t[e]))})),$.extend(t,e.params),Object.keys(n).forEach((function(e){$.extend(t[e],n[e])}))}},n.useModulesParams=function(e){var t=this;t.modules&&Object.keys(t.modules).forEach((function(n){var o=t.modules[n];o.params&&$.extend(e,o.params)}))},n.useModule=function(e,t){void 0===e&&(e=""),void 0===t&&(t={});var n=this;if(n.modules){var o="string"==typeof e?n.modules[e]:e;o&&(o.instance&&Object.keys(o.instance).forEach((function(e){var t=o.instance[e];n[e]="function"==typeof t?t.bind(n):t})),o.on&&n.on&&Object.keys(o.on).forEach((function(e){n.on(e,o.on[e])})),o.vnode&&(n.vnodeHooks||(n.vnodeHooks={}),Object.keys(o.vnode).forEach((function(e){Object.keys(o.vnode[e]).forEach((function(t){var r=o.vnode[e][t];n.vnodeHooks[t]||(n.vnodeHooks[t]={}),n.vnodeHooks[t][e]||(n.vnodeHooks[t][e]=[]),n.vnodeHooks[t][e].push(r.bind(n))}))}))),o.create&&o.create.bind(n)(t))}},n.useModules=function(e){void 0===e&&(e={});var t=this;t.modules&&Object.keys(t.modules).forEach((function(n){var o=e[n]||{};t.useModule(n,o)}))},t.installModule=function(e){var t=this;t.prototype.modules||(t.prototype.modules={});var n=e.name||Object.keys(t.prototype.modules).length+"_"+$.now();if(t.prototype.modules[n]=e,e.proto&&Object.keys(e.proto).forEach((function(n){t.prototype[n]=e.proto[n]})),e.static&&Object.keys(e.static).forEach((function(n){t[n]=e.static[n]})),e.install){for(var o=arguments.length,r=new Array(o>1?o-1:0),a=1;a<o;a++)r[a-1]=arguments[a];e.install.apply(t,r)}return t},t.use=function(e){var t=this;if(Array.isArray(e))return e.forEach((function(e){return t.installModule(e)})),t;for(var n=arguments.length,o=new Array(n>1?n-1:0),r=1;r<n;r++)o[r-1]=arguments[r];return t.installModule.apply(t,[e].concat(o))},o(t,null,[{key:"components",set:function(e){this.use&&this.use(e)}}]),t}(d);function p(e){void 0===e&&(e={});var t=e,n=t.defaultSelector,o=t.constructor,r=t.domProp,a=t.app,i=t.addMethods,c={create:function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return s(o,a?[a].concat(t):t)},get:function(e){if(void 0===e&&(e=n),e instanceof o)return e;var t=$(e);return 0!==t.length?t[0][r]:void 0},destroy:function(e){var t=c.get(e);if(t&&t.destroy)return t.destroy()}};return i&&Array.isArray(i)&&i.forEach((function(e){c[e]=function(t){void 0===t&&(t=n);for(var o=c.get(t),r=arguments.length,a=new Array(r>1?r-1:0),i=1;i<r;i++)a[i-1]=arguments[i];if(o&&o[e])return o[e].apply(o,a)}})),c}function m(e){void 0===e&&(e={});var t=e,n=t.defaultSelector,o=t.constructor,r=t.app;return $.extend(p({defaultSelector:n,constructor:o,app:r,domProp:"f7Modal"}),{open:function(e,t){var n=$(e),a=n[0].f7Modal;return a||(a=new o(r,{el:n})),a.open(t)},close:function(e,t){void 0===e&&(e=n);var a=$(e);if(0!==a.length){var i=a[0].f7Modal;return i||(i=new o(r,{el:a})),i.close(t)}}})}var h=[];function v(e){var t=this;return new Promise((function(n,o){var r,a,i,s=t.instance;if(e){if("string"==typeof e){var c=e.match(/([a-z0-9-]*)/i);if(e.indexOf(".")<0&&c&&c[0].length===e.length){if(!s||s&&!s.params.lazyModulesPath)return void o(new Error('Wia: "lazyModulesPath" app parameter must be specified to fetch module by name'));r=s.params.lazyModulesPath+"/"+e+".js"}else r=e}else"function"==typeof e?i=e:a=e;if(i){var u=i(t,!1);if(!u)return void o(new Error("Wia: Can't find Wia component in specified component function"));if(t.prototype.modules&&t.prototype.modules[u.name])return void n();p(u),n()}if(a){var l=a;if(!l)return void o(new Error("Wia: Can't find Wia component in specified component"));if(t.prototype.modules&&t.prototype.modules[l.name])return void n();p(l),n()}if(r){if(h.indexOf(r)>=0)return void n();h.push(r);var d=new Promise((function(e,n){t.request.get(r,(function(o){var a="wia_component_loader_callback_"+$.id(),i=document.createElement("script");i.innerHTML="window."+a+" = function (Wia, WiaAutoInstallComponent) {return "+o.trim()+"}",$("head").append(i);var s=window[a];delete window[a],$(i).remove();var c=s(t,!1);c?(t.prototype.modules&&t.prototype.modules[c.name]||p(c),e()):n(new Error("Wia: Can't find Wia component in "+r+" file"))}),(function(e,t){n(e,t)}))})),f=new Promise((function(e){t.request.get(r.replace(".js",s.rtl?".rtl.css":".css"),(function(t){var n=document.createElement("style");n.innerHTML=t,$("head").append(n),e()}),(function(){e()}))}));Promise.all([d,f]).then((function(){n()})).catch((function(e){o(e)}))}}else o(new Error("Wia: Lazy module must be specified"));function p(e){t.use(e),s&&(s.useModuleParams(e,s.params),s.useModule(e))}}))}var y={name:"resize",instance:{getSize:function(){var e=this;if(!e.root[0])return{width:0,height:0,left:0,top:0};var t=e.root.offset(),n=[e.root[0].offsetWidth,e.root[0].offsetHeight,t.left,t.top],o=n[0],r=n[1],a=n[2],i=n[3];return e.width=o,e.height=r,e.left=a,e.top=i,{width:o,height:r,left:a,top:i}}},on:{init:function(){var e=this;e.getSize(),window.addEventListener("resize",(function(){e.emit("resize")}),!1),window.addEventListener("orientationchange",(function(){e.emit("orientationchange")}))},orientationchange:function(){this.device.ipad&&(document.body.scrollLeft=0,setTimeout((function(){document.body.scrollLeft=0}),0))},resize:function(){this.getSize()}}};function g(e){var t,n,o;t=function(t){e.emit({events:"click",data:[t]})},$.support.touch?(document.addEventListener("touchstart",(function(e){n=e.changedTouches[0].clientX,o=e.changedTouches[0].clientY}),!0),document.addEventListener("touchend",(function(e){var r=Math.abs(e.changedTouches[0].clientX-n),a=Math.abs(e.changedTouches[0].clientY-o);r<=5&&a<=5&&t.call(this,e)}),!0)):document.addEventListener("click",t,!0),e.on("click",(function(t){var n=$(t.target),o=n.closest("a");o.length>0&&o.attr("href"),Object.keys(e.modules).forEach((function(o){var r=e.modules[o].clicks;r&&(t.preventF7Router||Object.keys(r).forEach((function(o){var a=n.closest(o).eq(0);a.length>0&&r[o].call(e,a,a.dataset(),t)})))}))}))}var w={name:"clicks",params:{clicks:{externalLinks:".ext"}},on:{init:function(){g(this)}}},b={registrations:[],register:function(e,t){var n=this;return"serviceWorker"in window.navigator&&n.serviceWorker.container?new Promise((function(o,r){n.serviceWorker.container.register(e,t?{scope:t}:{}).then((function(e){b.registrations.push(e),n.emit("serviceWorkerRegisterSuccess",e),o(e)})).catch((function(e){n.emit("serviceWorkerRegisterError",e),r(e)}))})):new Promise((function(e,t){t(new Error("Service worker is not supported"))}))},unregister:function(e){var t,n=this;return"serviceWorker"in window.navigator&&n.serviceWorker.container?(t=e?Array.isArray(e)?e:[e]:b.registrations,Promise.all(t.map((function(e){return new Promise((function(t,o){e.unregister().then((function(){b.registrations.indexOf(e)>=0&&b.registrations.splice(b.registrations.indexOf(e),1),n.emit("serviceWorkerUnregisterSuccess",e),t()})).catch((function(t){n.emit("serviceWorkerUnregisterError",e,t),o(t)}))}))})))):new Promise((function(e,t){t(new Error("Service worker is not supported"))}))}},k={name:"sw",params:{serviceWorker:{path:void 0,scope:void 0}},create:function(){var e=this;$.extend(e,{serviceWorker:{container:"serviceWorker"in window.navigator?window.navigator.serviceWorker:void 0,registrations:b.registrations,register:b.register.bind(e),unregister:b.unregister.bind(e)}})},on:{init:function(){if("serviceWorker"in window.navigator){var e=this;if(e.serviceWorker.container){var t=e.params.serviceWorker.path,n=e.params.serviceWorker.scope;!t||Array.isArray(t)&&!t.length||(Array.isArray(t)?t:[t]).forEach((function(t){e.serviceWorker.register(t,n)}))}}}}},C=$.support,x=$.device,E=function(e){function t(t){var n;n=e.call(this,t)||this;var o=$.extend({},t),r=c(n);r.device=x,r.support=C;var a={version:"0.0.1",root:"body",theme:"auto",language:window.navigator.language,routes:[],lazyModulesPath:null,initOnDeviceReady:!0,autoDarkTheme:!1,iosTranslucentBars:!0,iosTranslucentModals:!0,component:void 0,componentUrl:void 0};r.useModulesParams(a),r.params=$.extend(a,t);var i=$(r.params.root);$.extend(r,{owner:r.params.owner,name:r.params.name,id:r.params.owner+"."+r.params.name,version:r.params.version,routes:r.params.routes,language:r.params.language,root:i,$el:i,cfg:r.params.cfg,api:r.params.api,rtl:"rtl"===i.css("direction"),theme:"auto"===r.params.theme?x.ios?"ios":x.desktop?"aurora":"md":r.params.theme,passedParams:o,online:window.navigator.onLine}),r.root&&r.root[0]&&(r.root[0].wia=r),r.touchEvents={start:C.touch?"touchstart":C.pointerEvents?"pointerdown":"mousedown",move:C.touch?"touchmove":C.pointerEvents?"pointermove":"mousemove",end:C.touch?"touchend":C.pointerEvents?"pointerup":"mouseup"},r.useModules(),r.initData();var s="(prefers-color-scheme: dark)",u="(prefers-color-scheme: light)";return r.mq={},window.matchMedia&&(r.mq.dark=window.matchMedia(s),r.mq.light=window.matchMedia(u)),r.colorSchemeListener=function(e){var t=e.matches,n=e.media;if(t){var o=document.querySelector("html");n===s?o.classList.add("theme-dark"):n===u&&o.classList.remove("theme-dark")}},r.params.init&&(x.cordova&&r.params.initOnDeviceReady?$(document).on("deviceready",(function(){r.init()})):r.init()),r||c(n)}r(t,e);var n=t.prototype;return n.load=function(e){this.emit("local::load appLoad",e)},n.show=function(e,t){this.emit("local::show appShow",e,t)},n.hide=function(){this.emit("local::hide appHide")},n.unload=function(){this.emit("local::unload appUnload")},n.initData=function(){var e=this;e.data={},e.params.data&&"function"==typeof e.params.data?$.extend(e.data,e.params.data.bind(e)()):e.params.data&&$.extend(e.data,e.params.data),e.methods={},e.params.methods&&Object.keys(e.params.methods).forEach((function(t){"function"==typeof e.params.methods[t]?e.methods[t]=e.params.methods[t].bind(e):e.methods[t]=e.params.methods[t]}))},n.enableAutoDarkTheme=function(){if(window.matchMedia){var e=this,t=document.querySelector("html");e.mq.dark&&e.mq.light&&(e.mq.dark.addListener(e.colorSchemeListener),e.mq.light.addListener(e.colorSchemeListener)),e.mq.dark&&e.mq.dark.matches?t.classList.add("theme-dark"):e.mq.light&&e.mq.light.matches&&t.classList.remove("theme-dark")}},n.disableAutoDarkTheme=function(){if(window.matchMedia){var e=this;e.mq.dark&&e.mq.dark.removeListener(e.colorSchemeListener),e.mq.light&&e.mq.light.removeListener(e.colorSchemeListener)}},n.init=function(){var e,n,o,r=this;return r.initialized||($.App=t,x.ios&&x.webView&&window.addEventListener("touchstart",(function(){})),r.root.addClass("framework7-initializing"),r.rtl&&$("html").attr("dir","rtl"),r.params.autoDarkTheme&&r.enableAutoDarkTheme(),window.addEventListener("offline",(function(){r.online=!1,r.emit("offline"),r.emit("connection",!1)})),window.addEventListener("online",(function(){r.online=!0,r.emit("online"),r.emit("connection",!0)})),r.root.addClass("framework7-root"),$("html").removeClass("ios md aurora").addClass(r.theme),r.params.iosTranslucentBars&&"ios"===r.theme&&x.ios&&$("html").addClass("ios-translucent-bars"),r.params.iosTranslucentModals&&"ios"===r.theme&&x.ios&&$("html").addClass("ios-translucent-modals"),$.nextFrame((function(){r.root.removeClass("framework7-initializing")})),e=[],n=document.querySelector("html"),o=document.querySelector('meta[name="apple-mobile-web-app-status-bar-style"]'),n&&(x.standalone&&x.ios&&o&&"black-translucent"===o.content&&e.push("device-full-viewport"),e.push("device-pixel-ratio-"+Math.floor(x.pixelRatio)),x.os&&!x.desktop?e.push("device-"+x.os):x.desktop&&(e.push("device-desktop"),x.os&&e.push("device-"+x.os)),(x.cordova||x.phonegap)&&e.push("device-cordova"),e.forEach((function(e){n.classList.add(e)}))),r.initialized=!0,r.emit("init")),r},n.loadModule=function(e){t.loadModule(e),this[e.name].init&&this[e.name].init()},n.loadModules=function(){return t.loadModules.apply(t,arguments)},n.getVnodeHooks=function(e,t){var n=this;return n.vnodeHooks&&n.vnodeHooks[e]&&n.vnodeHooks[e][t]||[]},o(t,[{key:"$",get:function(){return $}}],[{key:"Dom",get:function(){return $}},{key:"$",get:function(){return $}},{key:"Module",get:function(){return f}},{key:"Event",get:function(){return d}}]),t}(f);E.apps={},E.ModalMethods=m,E.ConstructorMethods=p,E.loadModule=v,E.loadModules=function(e){return Promise.all(e.map((function(e){return E.loadModule(e)})))},E.support=C,E.device=x,E.utils=l,E.use([y,w,k]);var M,L,O,A,j={normal:"nor",retina:"ret",srcset:"set",threshold:0},T=window.innerHeight,P=S(),q=document.body.classList.contains("srcset")||"srcset"in document.createElement("img"),H=window.devicePixelRatio||window.screen.deviceXDPI/window.screen.logicalXDPI,R=function(){function e(e){M=$.assign({},j,e)}var t=e.prototype;return t.start=function(e){return["scroll","resize"].forEach((function(t){return e.addEventListener(t,W)})),A=e,this},t.stop=function(){return["scroll","resize"].forEach((function(e){return A.removeEventListener(e,W)})),this},t.update=function(){setTimeout((function(){_(),D()}),1)},e}();function S(){return window.scrollY||window.pageYOffset}function W(){P=S(),L||(window.requestAnimationFrame((function(){return D()})),L=!0)}function z(e){var t=P,n=t+T,o=function(e){return e.getBoundingClientRect().top+P}(e),r=o+e.offsetHeight,a=M.threshold/100*T;return r>=t-a&&o<=n+a}function D(){if(O)return T=window.innerHeight,O.forEach((function(e){return z(e)&&function(e){if($.emit("lazy:src:before",e),q&&e.hasAttribute(M.srcset))e.setAttribute("srcset",e.getAttribute(M.srcset));else{var t=H>1&&e.getAttribute(M.retina)||e.getAttribute(M.normal);e.setAttribute("src",t),console.log("set src:"+t)}$.emit("lazy:src:after",e),[M.normal,M.retina,M.srcset].forEach((function(t){return e.removeAttribute(t)})),_()}(e)})),L=!1,this}function _(e){return O=e?Array.prototype.slice.call(e.querySelectorAll("["+M.normal+"]")):Array.prototype.slice.call(document.querySelectorAll("["+M.normal+"]")),this}var B=function(e){function t(t,n,o,r){var a;return(a=e.call(this,null,[t])||this).app=t,a.cfg=t.cfg,a.name=n,a.title=o,a.style=r||"./page/"+n+".css",a.path=""+n,a.view=null,a.el=null,a.$el=null,a.html="",a.css="",a.js="",a.data={},a.param={},a}r(t,e);var n=t.prototype;return n.load=function(e){this.emit("local::load pageLoad",e)},n.ready=function(e,t,n){this.init(),this.emit("local::ready pageReady",e,t,n)},n.init=function(e){var t=this.view,n=(e=e?$(e):t).qus("[name]");null==n||n.forEach((function(e){var n=$(e),o=n.attr("name");t[o]&&t[o].dom===e||(t[o]=n)})),e.qus("[name$=-tp]").hide(),e.qus('a[href=""]').attr("href","javascript:;")},n.show=function(e,t){e.qus("[name$=-tp]").hide(),e.qus('a[href=""]').attr("href","javascript:;"),this.reset&&this.reset(),this.emit("local::show pageShow",e,t)},n.back=function(e,t){e.qus("[name$=-tp]").hide(),e.qus('a[href=""]').attr("href","javascript:;"),this.emit("local::back pageBack",e,t)},n.hide=function(e){this.emit("local::hide pageHide",e)},t}(d),F=[],U=[],I=function(e){function t(t,n){var o,r=c(o=e.call(this,n,[t])||this);return r.params=l.extend({},n),r.opened=!1,c(o)||c(o)}r(t,e);var n=t.prototype;return n.onOpen=function(){var e=this;e.opened=!0,F.push(e),$("html").addClass("with-modal-"+e.type.toLowerCase()),e.$el.trigger("modal:open "+e.type.toLowerCase()+":open"),e.emit("local::open modalOpen "+e.type+"Open",e)},n.onOpened=function(){var e=this;e.$el.trigger("modal:opened "+e.type.toLowerCase()+":opened"),e.emit("local::opened modalOpened "+e.type+"Opened",e)},n.onClose=function(){var e=this;e.opened=!1,e.type&&e.$el&&(F.splice(F.indexOf(e),1),$("html").removeClass("with-modal-"+e.type.toLowerCase()),e.$el.trigger("modal:close "+e.type.toLowerCase()+":close"),e.emit("local::close modalClose "+e.type+"Close",e))},n.onClosed=function(){var e=this;e.type&&e.$el&&(e.$el.removeClass("modal-out"),e.$el.hide(),e.$el.trigger("modal:closed "+e.type.toLowerCase()+":closed"),e.emit("local::closed modalClosed "+e.type+"Closed",e))},n.open=function(e){var t,n=this,o=n.app,r=n.$el,a=n.type,i=n.$backdropEl,s=n.params.moveToRoot,c=!0;if(void 0!==e?c=e:void 0!==n.params.animate&&(c=n.params.animate),!r||r.hasClass("modal-in"))return n;if("dialog"===a&&o.params.modal.queueDialogs&&($(".dialog.modal-in").length>0?t=!0:F.length>0&&F.forEach((function(e){"dialog"===e.type&&(t=!0)})),t))return U.push(n),n;var u=r.parent(),l=r.parents(document).length>0;function d(){r.hasClass("modal-out")?n.onClosed():r.hasClass("modal-in")&&n.onOpened()}return s&&o.params.modal.moveToRoot&&!u.is(o.root)&&(o.root.append(r),n.once(a+"Closed",(function(){l?u.append(r):r.remove()}))),r.show(),n._clientLeft=r[0].clientLeft,c?(i&&(i.removeClass("not-animated"),i.addClass("backdrop-in")),r.animationEnd((function(){d()})),r.transitionEnd((function(){d()})),r.removeClass("modal-out not-animated").addClass("modal-in"),n.onOpen()):(i&&i.addClass("backdrop-in not-animated"),r.removeClass("modal-out").addClass("modal-in not-animated"),n.onOpen(),n.onOpened()),n},n.close=function(e){var t=this,n=t.$el,o=t.$backdropEl,r=!0;if(void 0!==e?r=e:void 0!==t.params.animate&&(r=t.params.animate),!n||!n.hasClass("modal-in"))return U.indexOf(t)>=0&&U.splice(U.indexOf(t),1),t;if(o){var a=!0;"popup"===t.type&&t.$el.prevAll(".popup.modal-in").each((function(e,n){var o=n.f7Modal;o&&o.params.closeByBackdropClick&&o.params.backdrop&&o.backdropEl===t.backdropEl&&(a=!1)})),a&&(o[r?"removeClass":"addClass"]("not-animated"),o.removeClass("backdrop-in"))}function i(){n.hasClass("modal-out")?t.onClosed():n.hasClass("modal-in")&&t.onOpened()}return n[r?"removeClass":"addClass"]("not-animated"),r?(n.animationEnd((function(){i()})),n.transitionEnd((function(){i()})),n.removeClass("modal-in").addClass("modal-out"),t.onClose()):(n.addClass("not-animated").removeClass("modal-in").addClass("modal-out"),t.onClose(),t.onClosed()),"dialog"===t.type&&0!==U.length&&U.shift().open(),t},n.destroy=function(){var e=this;e.destroyed||(e.emit("local::beforeDestroy modalBeforeDestroy "+e.type+"BeforeDestroy",e),e.$el&&(e.$el.trigger("modal:beforedestroy "+e.type.toLowerCase()+":beforedestroy"),e.$el.length&&e.$el[0].f7Modal&&delete e.$el[0].f7Modal),l.deleteProps(e),e.destroyed=!0)},t}(d),X=$.support,N=$.device;e.Ajax=t,e.App=E,e.Constructors=p,e.Device=N,e.Event=d,e.Lazy=R,e.Modal=I,e.Modals=m,e.Module=f,e.Page=B,e.Resize=y,e.SW=k,e.Support=X,e.Utils=l,e.jsx=function(e,t){for(var n=t||{},o=arguments.length,r=new Array(o>2?o-2:0),a=2;a<o;a++)r[a-2]=arguments[a];var i=r||[],s=Object.keys(n).map((function(e){return"_"===e[0]?n[e]?e.replace("_",""):"":e+'="'+n[e]+'"'})).filter((function(e){return!!e})).join(" ");if(["path","img","circle","polygon","line","input"].indexOf(e)>=0)return("<"+e+" "+s+" />").trim();var c=i.filter((function(e){return!!e})).map((function(e){return Array.isArray(e)?e.join(""):e})).join("");return("<"+e+" "+s+">"+c+"</"+e+">").trim()},e.loadModule=v,Object.defineProperty(e,"__esModule",{value:!0})},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["@wiajs/Core"]={});
package/lib/bmap.js CHANGED
@@ -158,7 +158,7 @@ export default class Map extends Event {
158
158
  * @param {boolean} around 查询周边
159
159
  * @param {array} points 其他坐标
160
160
  */
161
- async show(center = null, around = false, points = null) {
161
+ async show(center = null, around = true, points = null) {
162
162
  const map = await this.getMap();
163
163
  this.showMap(center, around, points);
164
164
  }
@@ -171,17 +171,17 @@ export default class Map extends Event {
171
171
  * @param {Function} fail 失败执行
172
172
  * @param {Function} complete 完成后执行
173
173
  */
174
- // getLocWx(type, success, fail, complete) {
175
- // (type = type || 'gcj02'), (success = success || function () {});
176
- // fail = fail || function () {};
177
- // complete = complete || function () {};
178
- // wx.getLocation({
179
- // type: type,
180
- // success: success,
181
- // fail: fail,
182
- // complete: complete,
183
- // });
184
- // }
174
+ getLocWx(type, success, fail, complete) {
175
+ (type = type || 'gcj02'), (success = success || function () {});
176
+ fail = fail || function () {};
177
+ complete = complete || function () {};
178
+ wx.getLocation({
179
+ type: type,
180
+ success: success,
181
+ fail: fail,
182
+ complete: complete,
183
+ });
184
+ }
185
185
 
186
186
  /**
187
187
  * 获取当前位置经纬度数组,百度坐标格式
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wiajs/core",
3
- "version": "0.1.12",
3
+ "version": "0.1.16",
4
4
  "description": "wia app core package. Part of the code is borrowed Framework7.",
5
5
  "main": "index.js",
6
6
  "types": "dist/core.d.ts",
@@ -48,6 +48,5 @@
48
48
  "terser": "^4.4.0"
49
49
  },
50
50
  "dependencies": {
51
- "@wiajs/dom": "^0.1.0"
52
51
  }
53
52
  }
package/util/tool.js CHANGED
@@ -72,7 +72,6 @@ function trimEnd(s, c) {
72
72
  return String(s).replace(rx, '');
73
73
  }
74
74
 
75
-
76
75
  function addDay(n, d) {
77
76
  if (!d) d = new Date();
78
77
  else if (typeof d === 'string') {
@@ -129,6 +128,44 @@ function newFileName(len) {
129
128
  return R.join('');
130
129
  }
131
130
 
131
+ /**
132
+ * 比较方法,用于对象数组排序,常用于数据表排序
133
+ * @param {*} k 对象属性key
134
+ * @param {*} asc 升序、降序,默认升序
135
+ * @param {*} type 类型auto, number、datetime、string,缺省 auto
136
+ */
137
+ function compareObj(k, desc, type) {
138
+ return function (o1, o2) {
139
+ let R = 0;
140
+ let v1 = o1[k];
141
+ let v2 = o2[k];
142
+ // 数字、日期字符串,按数字、日期排序
143
+ if ($.isStr(v1) || $.isStr(v2)) {
144
+ // 金额可能有千字分隔符,需替换
145
+ if (type.toLowerCase() === 'number') {
146
+ v1 = v1.replace(',', '');
147
+ v2 = v2.replace(',', '');
148
+ }
149
+
150
+ if ($.isDateStr(v1) && $.isDateStr(v2)) {
151
+ v1 = Date.parse(v1);
152
+ v2 = Date.parse(v2);
153
+ } else if ($.isNumStr(v1) && $.isNumStr(v2)) {
154
+ v1 = Number(v1);
155
+ v2 = Number(v2);
156
+ }
157
+ }
158
+
159
+ if (v1 < v2) {
160
+ R = desc ? 1 : -1;
161
+ } else if (v1 > v2) {
162
+ R = desc ? -1 : 1;
163
+ }
164
+
165
+ return R;
166
+ };
167
+ }
168
+
132
169
  /**
133
170
  * 对象按名称排序,签名时需要
134
171
  * @param {*} obj
@@ -156,4 +193,15 @@ function serObj(obj) {
156
193
  .join('&');
157
194
  }
158
195
 
159
- export {StringBuf, format, trimStart, trimEnd, addDay, newFileName, sortObj, serObj, setTitle};
196
+ export {
197
+ StringBuf,
198
+ format,
199
+ trimStart,
200
+ trimEnd,
201
+ addDay,
202
+ newFileName,
203
+ compareObj,
204
+ sortObj,
205
+ serObj,
206
+ setTitle,
207
+ };
package/util/wiafile.js CHANGED
@@ -1,6 +1,10 @@
1
1
  /* eslint-disable import/no-extraneous-dependencies */
2
2
  /**
3
3
  * 自动根据src、dist目录文件生成 wiafile.yml 文件映射
4
+ * build时,比较当前文件hash与上次build时的hash值,
5
+ * 变化则放入 update中,再针对 update部分文件进行build,
6
+ *
7
+ *
4
8
  */
5
9
  const _ = require('lodash');
6
10
  const path = require('path');
@@ -23,35 +27,42 @@ function promisify(f) {
23
27
  }
24
28
 
25
29
  /**
26
- * 获取wia文件,保存到 wiafile.yml 文件,返回 update,便于编译或者发布。
30
+ * 获取wia文件,保存到 wiafile.yml 文件,返回更新的文件集到 update
31
+ * 便于编译或者发布。
27
32
  * @param {*} dir 文件map路径
28
33
  * @param {*} act build or pub,build 时,读取src,pub时,读取 dist
29
34
  */
30
- async function make(dir, act = 'build') {
35
+ async function make(dir, cfg, act = 'build', all = false) {
31
36
  let R = {};
32
37
 
33
38
  try {
34
39
  dir = dir || process.cwd(); // 默认指向运行目录
35
40
  _src = act === 'pub' ? path.join(dir, './dist') : path.join(dir, './src');
36
- _cfg = require(path.join(dir, './wiaconfig.js')); // eslint-disable-line
41
+ _cfg = cfg;
42
+ // require(path.join(dir, './wiaconfig.js')); // eslint-disable-line
37
43
 
38
44
  const {ver} = _cfg;
39
45
  // const rs = await getFiles(dir, ver); // 获得该项目所有文件,变化的文件放入f.R 中
40
46
  // 获取上次自动上传文件清单
41
- const f = path.resolve(dir, './wiafile.yml');
42
47
  let rs = {};
43
48
  let r = {};
44
- if (fs.existsSync(f)) r = yaml.safeLoad(fs.readFileSync(f, 'utf8')); // eslint-disable-line
45
- // r = yaml.safeLoad(fs.readFileSync(file, 'utf8'));
49
+ const f = path.resolve(dir, './wiafile.yml');
50
+ if (!all && fs.existsSync(f)) r = yaml.load(fs.readFileSync(f, 'utf8')); // eslint-disable-line
51
+
52
+ // r = yaml.load(fs.readFileSync(file, 'utf8'));
46
53
  // if (checkVer(r, ver))
47
54
  // rs = {};
55
+ // 正在编译、发布的,直接返回正在编译、发布文件,不重新扫描
56
+ // 调用者需决定,是重新编译还是等待,发起编译、发布者,需处理编译完成或失败。
48
57
  let skip = false;
49
58
  if (r) {
50
59
  if (r.pub && r.pub.pubing && act === 'pub') {
51
- R = r.pub.update || {};
52
- skip = true;
53
- } else if (r.local && r.local.building && act === 'build')
60
+ R = {pubing: r.wia.pubing, update: r.wia.update};
54
61
  skip = true;
62
+ } else if (r.local && r.local.building && act === 'build') {
63
+ R = {building: r.local.building, update: r.local.update};
64
+ skip = true; // 正在编译,跳过
65
+ }
55
66
 
56
67
  // 重新扫描文件,去掉之前的 update
57
68
  if (!skip) {
@@ -75,7 +86,7 @@ async function make(dir, act = 'build') {
75
86
  console.log('wiafile make getFile', {dir, rs, act});
76
87
 
77
88
  if (!_.isEmpty(rs)) {
78
- R = rs.update || {};
89
+ R = rs; // .update || {};
79
90
  if (act === 'build') rs = {local: rs, wia: r && r.pub ? r.pub : {}};
80
91
  else rs = {pub: rs, local: r && r.local ? r.local : {}};
81
92
  console.log('wiafile', {dir, rs, act});
@@ -292,19 +303,20 @@ ${n.join('\n')}
292
303
  * 通过比较当前项目文件和文件记录中的文件MD5值,
293
304
  * 将变化的文件放入update,用于build or publish
294
305
  * @param {*} dir 文件路径
295
- * @param {*} rs 上次更新的hash文件对象
306
+ * @param {*} rs 保存所有文件对象
296
307
  * @param {*} act build or pub操作,最新的文件列表写入building or pubing
297
308
  */
298
309
  async function getFile(dir, rs, act) {
299
- const tree = {};
300
310
  try {
301
311
  // 获得当前文件夹下的所有的文件夹和文件,赋值给目录和文件数组变量
302
- const [dirs, files] = _(fs.readdirSync(dir)).partition(p =>
312
+ const [dirs, files] = _.partition(fs.readdirSync(dir), p =>
303
313
  fs.statSync(path.join(dir, p)).isDirectory()
304
314
  );
305
315
 
306
316
  // 对子文件夹进行递归,使用了await,串行同步执行
307
317
  let pms = [];
318
+ let r;
319
+ if (dirs) {
308
320
  for (let i = 0, ilen = dirs.length; i < ilen; i++) {
309
321
  const d = dirs[i];
310
322
  // eslint-disable-line
@@ -329,10 +341,13 @@ async function getFile(dir, rs, act) {
329
341
  pms.push(getFile(path.join(dir, d), rs, act));
330
342
  }
331
343
  }
332
- let r = await Promise.all(pms);
344
+
345
+ if (!_.isEmpty(pms)) r = await Promise.all(pms);
346
+ }
333
347
 
334
348
  pms = [];
335
349
  // 当前目录下所有文件名进行同步hash计算
350
+ if (files) {
336
351
  // eslint-disable-next-line no-restricted-syntax
337
352
  for (const f of files) {
338
353
  // (pf.includes('.js') && v === pf)
@@ -355,12 +370,11 @@ async function getFile(dir, rs, act) {
355
370
  }
356
371
  if (pk) pms.push(hashFile(path.join(dir, f), rs, act));
357
372
  }
358
- r = await Promise.all(pms);
373
+ if (!_.isEmpty(pms)) r = await Promise.all(pms);
374
+ }
359
375
  } catch (e) {
360
376
  console.log(`getFile exp:${e.message}`);
361
377
  }
362
-
363
- return tree;
364
378
  }
365
379
 
366
380
  /**
@@ -419,8 +433,8 @@ function setUpdate(rs, f) {
419
433
  }
420
434
 
421
435
  /**
422
- * 生成指定文件的 MD5值,写入rs.cur对象,用于判断文件是否变化
423
- * 变化文件,写入 rs.update
436
+ * 生成指定文件的 MD5值,写入building 或 pubing对象
437
+ * 通过 MD5判断文件是否变化,变化文件写入 update,用于重新编译或发布
424
438
  * @param {*} f 文件
425
439
  * @param {*} rs 写入的数据集
426
440
  */
@@ -487,7 +501,7 @@ function hashFile(f, rs, act = 'build') {
487
501
  * @param {string} f
488
502
  */
489
503
  function save(rs, f) {
490
- const yml = yaml.safeDump(rs);
504
+ const yml = yaml.dump(rs);
491
505
  fs.writeFileSync(f, yml, err => {
492
506
  if (err) console.log(`save exp:${err.message}`);
493
507
  });
@@ -497,6 +511,7 @@ function save(rs, f) {
497
511
  * 编译完成,building文件列表变为build或删除
498
512
  * 之前的build清除
499
513
  * @param {*} dir
514
+ * @param {*} succ 编译成功还是失败
500
515
  */
501
516
  function builded(dir, succ = true) {
502
517
  let R = {};
@@ -504,7 +519,7 @@ function builded(dir, succ = true) {
504
519
  dir = dir || process.cwd(); // 默认指向运行目录
505
520
  const f = path.resolve(dir, './wiafile.yml');
506
521
  let r = {};
507
- if (fs.existsSync(f)) r = yaml.safeLoad(fs.readFileSync(f, 'utf8')); // require(file); // eslint-disable-line
522
+ if (fs.existsSync(f)) r = yaml.load(fs.readFileSync(f, 'utf8')); // require(file); // eslint-disable-line
508
523
  if (r && r.local && r.local.building) {
509
524
  const rs = {local: {}, wia: r.wia ? r.wia : {}};
510
525
  if (succ) {
@@ -537,7 +552,7 @@ function pubed(dir, succ = true) {
537
552
  dir = dir || process.cwd(); // 默认指向运行目录
538
553
  const f = path.resolve(dir, './wiafile.yml');
539
554
  let r = {};
540
- if (fs.existsSync(f)) r = yaml.safeLoad(fs.readFileSync(f, 'utf8')); // require(file); // eslint-disable-line
555
+ if (fs.existsSync(f)) r = yaml.load(fs.readFileSync(f, 'utf8')); // require(file); // eslint-disable-line
541
556
  if (r && r.wia && r.wia.pubing) {
542
557
  const rs = {wia: {}, local: r.local ? r.local : {}};
543
558
  if (succ) {
@@ -561,12 +576,12 @@ function pubed(dir, succ = true) {
561
576
  }
562
577
 
563
578
  // make(); // 单独调试用
564
- async function build(dir) {
565
- return make(dir, 'build');
579
+ async function build(dir, cfg, all) {
580
+ return make(dir, cfg, 'build', all);
566
581
  }
567
582
 
568
- async function pub(dir) {
569
- return make(dir, 'pub');
583
+ async function pub(dir, cfg) {
584
+ return make(dir, cfg, 'pub');
570
585
  }
571
586
 
572
587
  module.exports = {build, builded, pub, pubed};
package/util/wiapage.js CHANGED
@@ -9,7 +9,6 @@ const utils = require('utility');
9
9
  const fs = require('fs');
10
10
 
11
11
  let _cfg = {};
12
- let _src = '';
13
12
 
14
13
  /**
15
14
  * 检查指定项目文件是否更新,如更新则重新打包,并自动部署到腾讯云CDN
@@ -42,7 +41,7 @@ async function pages(dir) {
42
41
  });
43
42
 
44
43
  // page下的文件写入pages.js文件
45
- if (!_.isEmpty(pf)) R = pagefile(pf);
44
+ if (!_.isEmpty(pf)) R = makeFile(pf, 'pages', dir);
46
45
  } catch (err) {
47
46
  console.log(`pages exp:${err.message}`);
48
47
  }
@@ -81,11 +80,11 @@ async function getPage(dir) {
81
80
 
82
81
  try {
83
82
  dir = dir || process.cwd();
84
- _src = path.join(dir, './src');
85
- _cfg = require(path.join(_src, './config/app.js'));
83
+ const src = path.join(dir, './src');
84
+ _cfg = require(path.join(src, './config/app.js'));
86
85
  const rs = [];
87
86
  // 获取目标项目目录、子目录下的文件MD5对象
88
- await getFile(path.join(_src, './page'), rs);
87
+ await getFile(path.join(src, './page'), rs, src);
89
88
 
90
89
  // 有js文件变化,html、less 暂未处理
91
90
  if (!_.isEmpty(rs)) {
@@ -98,6 +97,7 @@ async function getPage(dir) {
98
97
 
99
98
  // eslint-disable-next-line
100
99
  for (let pf of _cfg.file) {
100
+ // console.log({v, pf});
101
101
  // eslint-disable-line
102
102
  if (
103
103
  (pf.includes('.js') && v === pf) ||
@@ -121,7 +121,7 @@ async function getPage(dir) {
121
121
  }
122
122
  }
123
123
  }
124
- console.log('getPage', {pk, v});
124
+ // console.log('getPage', {pk, v});
125
125
  // 需编译文件
126
126
  if (pk) {
127
127
  R.push(v);
@@ -149,27 +149,32 @@ function hash(tx) {
149
149
 
150
150
  /**
151
151
  * 将page中的js文件创建到pages.js中,方便调试
152
+ * 也用来创建编译入口文件(entry.js),webpack最新5.xx版本自动将入口文件改为直接运行代码!
153
+ * wia需要模块化,创建入口文件来解决该问题。
152
154
  * @param {*} pf
153
155
  */
154
- function pagefile(pf) {
156
+ function makeFile(pf, name, dir) {
155
157
  if (_.isEmpty(pf)) return '';
156
158
 
159
+ dir = dir || process.cwd();
160
+ const src = path.join(dir, './src');
161
+
157
162
  const p = [];
158
163
  Object.keys(pf).forEach(k => {
159
164
  const f = pf[k].replace(/.js$/, '');
160
165
  p.push(`import ${k} from '${f}';`);
161
166
  });
162
167
 
163
- const n = [];
168
+ const ns = [];
164
169
  Object.keys(pf).forEach(k => {
165
- const name = k[0].toLowerCase() + k.slice(1);
166
- n.push(` const ${name} = new ${k}();`);
170
+ const n = k[0].toLowerCase() + k.slice(1);
171
+ ns.push(` const ${n} = new ${k}();`);
167
172
  });
168
173
 
169
174
  p.push(`
170
- export default class Pages {
175
+ export default class ${name[0].toUpperCase() + name.slice(1)} {
171
176
  init() {
172
- ${n.join('\n')}
177
+ ${ns.join('\n')}
173
178
  }
174
179
  }
175
180
  `);
@@ -177,7 +182,7 @@ ${n.join('\n')}
177
182
  // 将内容写入page.js 文件
178
183
  const ps = p.join('\n');
179
184
  if (!_.isEmpty(ps)) {
180
- const f = path.join(_src, './pages.js');
185
+ const f = path.join(src, `./${name}.js`);
181
186
  // 获取当前页面共用模块
182
187
  let lastH = '';
183
188
  if (fs.existsSync(f)) {
@@ -185,13 +190,15 @@ ${n.join('\n')}
185
190
  lastH = hash(tx);
186
191
  }
187
192
  // 有变化,则更新pages文件
188
- if (hash(ps) !== lastH)
193
+ if (hash(ps) !== lastH) {
194
+ // console.log({f, ps});
189
195
  fs.writeFileSync(
190
196
  f,
191
197
  ps,
192
198
  e => e && console.log(`save ${f} exp:${e.message}`)
193
199
  );
194
200
  }
201
+ }
195
202
 
196
203
  return ps;
197
204
  }
@@ -203,7 +210,7 @@ ${n.join('\n')}
203
210
  * @param {*} dir 文件路径
204
211
  * @param {*} rs 上次更新的hash文件对象
205
212
  */
206
- async function getFile(dir, rs) {
213
+ async function getFile(dir, rs, src) {
207
214
  const tree = {};
208
215
  try {
209
216
  // 获得当前文件夹下的所有的文件夹和文件,赋值给目录和文件数组变量
@@ -213,7 +220,7 @@ async function getFile(dir, rs) {
213
220
 
214
221
  // 对子文件夹进行递归,使用了Promise.all,并发执行
215
222
  const pms = [];
216
- dirs.forEach(v => pms.push(getFile(path.join(dir, v), rs)));
223
+ dirs.forEach(v => pms.push(getFile(path.join(dir, v), rs, src)));
217
224
  await Promise.all(pms);
218
225
 
219
226
  // 当前目录下所有文件名进行同步hash计算
@@ -222,7 +229,7 @@ async function getFile(dir, rs) {
222
229
  if (f.includes('.js') && rs) {
223
230
  let file = path.join(dir, f);
224
231
  // 去掉项目根路径
225
- file = file.replace(_src, '');
232
+ file = file.replace(src, '');
226
233
  if (file.startsWith(path.sep)) file = file.substr(1);
227
234
 
228
235
  if (path.sep !== '/') file = file.replace(/\\/gim, '/'); // 统一路径为/,方便处理
@@ -240,13 +247,13 @@ async function getFile(dir, rs) {
240
247
  function clear(dir) {
241
248
  try {
242
249
  dir = dir || process.cwd();
243
- _src = path.join(dir, './src');
250
+ const src = path.join(dir, './src');
244
251
  const ps = `
245
252
  export default class Pages {
246
253
  }
247
254
  `;
248
255
  let lastH = '';
249
- const f = path.join(_src, './pages.js');
256
+ const f = path.join(src, './pages.js');
250
257
  if (fs.existsSync(f)) {
251
258
  const tx = fs.readFileSync(f, 'utf8');
252
259
  lastH = hash(tx);
@@ -268,4 +275,4 @@ export default class Pages {
268
275
 
269
276
  // pages(); // 单独调试用
270
277
 
271
- module.exports = {pages, pack, clear};
278
+ module.exports = {pages, pack, clear, makeFile};