UNPKG

@morjs/runtime-web

Version:
126 lines 4.19 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isFunction = exports.isObject = exports.wait = exports.convertBlobToBase64 = exports.appendQueryToUrl = exports.getPageAsKey = exports.pageOnReadyCallApi = exports.createCallbackManager = exports.shouldBeObject = exports.getParameterError = void 0; function upperCaseFirstLetter(str) { if (typeof str !== 'string') return str; str = str.replace(/^./, (match) => match.toUpperCase()); return str; } function getParameterError({ name = '', para, correct, wrong }) { const parameter = para ? `parameter.${para}` : 'parameter'; const errorType = upperCaseFirstLetter(wrong == null ? 'Null' : typeof wrong); return `${name}:fail parameter error: ${parameter} should be ${correct} instead of ${errorType}`; } exports.getParameterError = getParameterError; function shouldBeObject(target) { if (target && typeof target === 'object') return { res: true }; return { res: false, msg: getParameterError({ correct: 'Object', wrong: target }) }; } exports.shouldBeObject = shouldBeObject; const createCallbackManager = () => { const callbacks = []; const add = (opt) => { callbacks.push(opt); }; const remove = (opt) => { const index = callbacks.indexOf(opt); if (index < 0) return; callbacks.splice(index, 1); }; const trigger = (...args) => { callbacks.forEach((opt) => { if (typeof opt === 'function') { opt(...args); } else { const { callback, ctx } = opt; callback.call(ctx, ...args); } }); }; return { add, trigger, remove }; }; exports.createCallbackManager = createCallbackManager; const pageOnReadyCallApi = (my) => { // 有些 api 是 后续 components 中挂载的,为了能正确代理,做异步处理 setTimeout(() => { // 维护需要做pageOnReady处理的列表 const apiList = ['setNavigationBar']; apiList.forEach((api) => { const func = my[api]; my[api] = (...params) => { my.$pageOnReadyCall(() => { func.apply(my, params); }); return func.apply(my, params); }; }); }); }; exports.pageOnReadyCallApi = pageOnReadyCallApi; const getPageAsKey = () => { if (typeof getCurrentPages !== 'function') return ''; const pages = getCurrentPages(); const { length } = pages; if (length <= 0) return ''; return pages[length - 1].route; }; exports.getPageAsKey = getPageAsKey; const appendQueryToUrl = (url = '', query = {}) => { const hadQuery = url.indexOf('?') > -1; const keys = Object.keys(query); const { length: keysLength } = keys; let queryString = ''; if (keysLength > 0) { keys.map((key, index) => { queryString += `${key}=${query[key]}`; if (index !== keysLength - 1) queryString += '&'; }); } if (!hadQuery) return `${url}?${queryString}`; const hadParams = url.indexOf('=') > -1; if (!hadParams) return url + queryString; const endWithSeparator = url[url.length - 1] === '&'; if (endWithSeparator) return url + queryString; return `${url}&${queryString}`; }; exports.appendQueryToUrl = appendQueryToUrl; const convertBlobToBase64 = (blob) => new Promise((resolve, reject) => { const reader = new FileReader(); reader.onerror = reject; reader.onload = () => { resolve(reader.result); }; reader.readAsDataURL(blob); }); exports.convertBlobToBase64 = convertBlobToBase64; const wait = (millisecond = 67) => { return new Promise((resolve) => { setTimeout(resolve, millisecond); }); }; exports.wait = wait; const isObject = (param) => param && typeof param === 'object'; exports.isObject = isObject; const isFunction = (param) => typeof param === 'function'; exports.isFunction = isFunction; //# sourceMappingURL=index.js.map