UNPKG

@molejs/mole-jssdk

Version:

mole app jssdk

1,919 lines (1,702 loc) 89.7 kB
function dingTalkPolyfill () { return { openNewPage: function openNewPage(_ref) { var url = _ref.url; window.dd.biz.util.openLink({ url: url }); }, get version() { return window.dd.version; } }; } var ua = window.navigator.userAgent; function dynamicLoadJs(url, callback) { var head = document.getElementsByTagName('head')[0]; var script = document.createElement('script'); script.type = 'text/javascript'; script.src = url; if (typeof callback == 'function') { script.onload = script.onreadystatechange = function () { if (!this.readyState || this.readyState === "loaded" || this.readyState === "complete") { callback(); script.onload = script.onreadystatechange = null; } }; } head.appendChild(script); } var platform = { get iPhoneX() { return (/iphone/gi.test(ua) && screen.height == 812 && screen.width == 375 ); }, get iPhoneXR() { return (/iphone/gi.test(window.navigator.userAgent) && window.devicePixelRatio && window.devicePixelRatio === 2 && window.screen.width === 414 && window.screen.height === 896 ); }, get iPhoneXSMax() { return (/iphone/gi.test(window.navigator.userAgent) && window.devicePixelRatio && window.devicePixelRatio === 3 && window.screen.width === 414 && window.screen.height === 896 ); }, get os() { if (ua.match(/(Android);?[\s\/]+([\d.]+)?/)) { return 'android'; } var ipad = ua.match(/(iPad).*OS\s([\d_]+)/); var ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); var iphone = !ipad && ua.match(/(iPhone\sOS)\s([\d_]+)/); if (ipad || iphone || ipod) return 'ios'; return ''; }, get container() { if (ua.toLowerCase().match(/upaasapp/i)) return 'italent'; if (ua.toLowerCase().match(/tita/i)) return 'tita'; if (ua.match(/DingTalk/i)) return 'dingTalk'; if (ua.match(/MicroMessenger/i)) return 'wechart'; if (ua.match(/wxwork/i)) return 'wxwork'; return 'browser'; }, get OS() { if (ua.match(/(Android);?[\s\/]+([\d.]+)?/)) { return 'android'; } var ipad = ua.match(/(iPad).*OS\s([\d_]+)/); var ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); var iphone = !ipad && ua.match(/(iPhone\sOS)\s([\d_]+)/); if (ipad || iphone || ipod) return 'ios'; return ''; }, get ShellName() { if (ua.toLowerCase().match(/upaasapp/i)) return 'italent'; if (ua.toLowerCase().match(/tita/i)) return 'tita'; if (ua.match(/DingTalk/i)) return 'dingTalk'; if (ua.match(/MicroMessenger/i)) return 'wechart'; if (ua.match(/wxwork/i)) return 'wxwork'; return 'browser'; }, get web() { if (/mobile|android|iphone|ipad|phone/i.test(ua) && !platform.bsAppAndroid && !platform.bsAppIOS) { return true; } return false; }, get ios() { return platform.os === 'ios'; }, get android() { return platform.os === 'android'; }, get weixin() { return !!ua.match(/MicroMessenger/i); }, get weixinWork() { return !!ua.match(/wxwork/i); }, get bsAppIOS() { return !!ua.toLowerCase().match(/beisen/i) && platform.ios && platform.apiCloud; }, get beisenApp() { return platform.bsAppIOS || platform.bsAppAndroid; }, get bsAppAndroid() { return !!ua.toLowerCase().match(/beisen/i) && platform.android; }, get apiCloud() { return !!ua.toLowerCase().match(/apicloud/i); }, get titaApp() { return !!ua.toLowerCase().match(/tita/i); }, get titav2App() { return !!ua.match(/Titav2/i); }, get upaasApp() { return !!ua.toLowerCase().match(/upaasapp/i); }, get dingTalk() { return !!ua.match(/DingTalk/i); }, get bayer() { return !!ua.match(/Bayer/i); }, get iTalentIOS() { return platform.ios && platform.apiCloud && platform.upaasApp; }, get iTalentAndroid() { return platform.android && platform.upaasApp; }, get iTalentWeb() { return false; }, get api() { return platform.bsAppIOS ? window.api || window.top.api || {} : window.BSJSBridge; }, waitApi: function waitApi() { var t = void 0; return new Promise(function (reslove, reject) { if (!!ua.match(/DingTalk/i)) { return dynamicLoadJs('//g.alicdn.com/dingding/dingtalk-jsapi/2.3.0/dingtalk.open.js', function () { window.api = dingTalkPolyfill(window.dd); return reslove({}); }); } if (platform.bsAppAndroid) { if (window.BSJSBridge || window.parent.BSJSBridge) { return reslove({ api: window.BSJSBridge || window.parent.BSJSBridge }); } t = setInterval(function () { if (window.BSJSBridge || window.parent.BSJSBridge) { clearInterval(t); return reslove({ api: window.BSJSBridge || window.parent.BSJSBridge }); } }, 16); } else if (platform.bsAppIOS) { if (window.api || window.parent.api) { return reslove({ api: window.api || window.parent.api }); } t = setInterval(function () { if (window.api || window.parent.api) { clearInterval(t); return reslove({ api: window.api || window.parent.api }); } }, 16); } else { return reslove({}); } }); }, waitApiV2: function waitApiV2() { var t = void 0; return new Promise(function (reslove, reject) { if (platform.dingTalk) { return dynamicLoadJs('//g.alicdn.com/dingding/dingtalk-jsapi/2.3.0/dingtalk.open.js', function () { window.api = dingTalkPolyfill(window.dd); return reslove({}); }); } if (platform.bsAppAndroid) { if (window.bsapi || window.parent.bsapi) { return reslove({ api: window.bsapi || window.parent.bsapi }); } t = setInterval(function () { if (window.bsapi || window.parent.bsapi) { clearInterval(t); return reslove({ api: window.bsapi || window.parent.bsapi }); } }, 16); } else if (platform.bsAppIOS) { if (window.api || window.parent.api) { return reslove({ api: window.api || window.parent.api }); } t = setInterval(function () { if (window.api || window.parent.api) { clearInterval(t); return reslove({ api: window.api || window.parent.api }); } }, 16); } }); }, select: function select() { var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var mobile = params.mobile, androidApp = params.androidApp, iosApp = params.iosApp, beisenApp = params.beisenApp, weixin = params.weixin, weixinWork = params.weixinWork, dingTalk = params.dingTalk; var cb = void 0; if (platform.bsAppIOS && iosApp) { cb = iosApp; } else if (platform.bsAppAndroid && androidApp) { cb = androidApp; } else if (platform.dingTalk && dingTalk) { cb = dingTalk; } else if (platform.weixin && weixin) { cb = weixin; } else if (platform.weixinWork && weixinWork) { cb = weixinWork; } else { cb = mobile; } if (platform.beisenApp && beisenApp) { cb = beisenApp; } if (typeof cb === 'function') { return cb(); } } }; function getApi() { return platform.select({ iosApp: function iosApp() { return window.api || window.parent.api; }, androidApp: function androidApp() { return window.BSJSBridge || window.parent.BSJSBridge; } }); } function notify() { var param = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var cb = arguments[1]; getApi().callHandler('bs-droid-event', { param: param }, function (ret, err) { return cb && cb(window.JSON.parse(ret), err); }); } function call() { var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var number = params.number, _params$type = params.type, type = _params$type === undefined ? 'tel' : _params$type; return platform.select({ iosApp: function iosApp() { return window.api.call({ number: number, type: type }); }, androidApp: function androidApp() { notify({ action: 8, number: number }); } }); } function promiseToCallback(prom, callback) { return prom.then(function (arg) { callback && callback(null, arg); return arg; }).catch(function (err) { callback && callback(err); return Promise.reject(err); }); } function getApi$1() { return new Promise(function (resolve, reject) { if (platform.ios) { var BSApi = window.api.require('BSApi'); resolve(BSApi); } else { resolve(window.bsapi); } }); } var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; var classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }; var createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; var get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; var inherits = function (subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }; var objectWithoutProperties = function (obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }; var possibleConstructorReturn = function (self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }; var MoleError = function (_Error) { inherits(MoleError, _Error); function MoleError(msg) { classCallCheck(this, MoleError); return possibleConstructorReturn(this, (MoleError.__proto__ || Object.getPrototypeOf(MoleError)).call(this, msg)); } createClass(MoleError, [{ key: "toString", value: function toString() { return "[MoleError] " + get(MoleError.prototype.__proto__ || Object.getPrototypeOf(MoleError.prototype), "toString", this).call(this); } }]); return MoleError; }(Error); var ChooseImageError = function (_MoleError) { inherits(ChooseImageError, _MoleError); function ChooseImageError(msg) { classCallCheck(this, ChooseImageError); var _this = possibleConstructorReturn(this, (ChooseImageError.__proto__ || Object.getPrototypeOf(ChooseImageError)).call(this, msg)); _this.isUserCancelled = false; _this.isEmptyResult = false; return _this; } return ChooseImageError; }(MoleError); function chooseImage(params, cb) { var prom = getApi$1().then(function (api) { return new Promise(function (resolve, reject) { api.initBSImageSelector(params, function (ret, err) { if (!ret) { reject(new ChooseImageError(err || '')); return; } if (ret.code !== 1) { var _err = new ChooseImageError(ret.msg || ''); _err.isUserCancelled = ret.code === -1; reject(_err); return; } var r = []; if (Array.isArray(ret.selectImageArray)) { r = ret.selectImageArray; } if (r.length === 0) { var _err2 = new ChooseImageError(); _err2.isEmptyResult = true; reject(_err2); return; } resolve(r); }); }); }); return promiseToCallback(prom, cb); } function closeAll() { var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var _params$isWin = params.isWin, _params$isFrame = params.isFrame, restParam = objectWithoutProperties(params, ['isWin', 'isFrame']); if (platform.bayer) { var jsfun = 'window.openHome && openHome()'; return window.api.execScript({ name: 'root', script: jsfun }); } platform.select({ mobile: function mobile() {}, iosApp: function iosApp() { var tag = params.tag, restParam = objectWithoutProperties(params, ['tag']); __closeToTargetPage(_extends({ name: tag || window.api.pageParam.closeToWinName }, restParam)); }, androidApp: function androidApp() { notify(_extends({}, params, { action: 13 })); } }); } function __closeToTargetPage() { var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var name = params.name, isFrame = params.isFrame, animation = params.animation, restParam = objectWithoutProperties(params, ['name', 'isFrame', 'animation']); if (window.BSAppTransfer) { return window.BSAppTransfer.toNative && window.BSAppTransfer.toNative(window.JSON.stringify({ 'target': '' })); } if (isFrame) { if (animation) { window.api.animation(_extends({ name: name || window.api.frameName }, animation), function () { window.api.closeFrame(_extends({ name: name || window.api.frameName }, restParam)); }); } return; } window.api.closeToWin(_extends({ name: name }, restParam)); } function closeToWin(params) { platform.select({ iosApp: function iosApp() { window.api.closeToWin(params); }, androidApp: function androidApp() { notify(_extends({}, params, { action: 13 })); } }); } /* object-assign (c) Sindre Sorhus @license MIT */ /* eslint-disable no-unused-vars */ var getOwnPropertySymbols = Object.getOwnPropertySymbols; var hasOwnProperty = Object.prototype.hasOwnProperty; var propIsEnumerable = Object.prototype.propertyIsEnumerable; function toObject(val) { if (val === null || val === undefined) { throw new TypeError('Object.assign cannot be called with null or undefined'); } return Object(val); } function shouldUseNative() { try { if (!Object.assign) { return false; } // Detect buggy property enumeration order in older V8 versions. // https://bugs.chromium.org/p/v8/issues/detail?id=4118 var test1 = new String('abc'); // eslint-disable-line no-new-wrappers test1[5] = 'de'; if (Object.getOwnPropertyNames(test1)[0] === '5') { return false; } // https://bugs.chromium.org/p/v8/issues/detail?id=3056 var test2 = {}; for (var i = 0; i < 10; i++) { test2['_' + String.fromCharCode(i)] = i; } var order2 = Object.getOwnPropertyNames(test2).map(function (n) { return test2[n]; }); if (order2.join('') !== '0123456789') { return false; } // https://bugs.chromium.org/p/v8/issues/detail?id=3056 var test3 = {}; 'abcdefghijklmnopqrst'.split('').forEach(function (letter) { test3[letter] = letter; }); if (Object.keys(Object.assign({}, test3)).join('') !== 'abcdefghijklmnopqrst') { return false; } return true; } catch (err) { // We don't expect any of the above to throw, but better to be safe. return false; } } var objectAssign = shouldUseNative() ? Object.assign : function (target, source) { var from; var to = toObject(target); var symbols; for (var s = 1; s < arguments.length; s++) { from = Object(arguments[s]); for (var key in from) { if (hasOwnProperty.call(from, key)) { to[key] = from[key]; } } if (getOwnPropertySymbols) { symbols = getOwnPropertySymbols(from); for (var i = 0; i < symbols.length; i++) { if (propIsEnumerable.call(from, symbols[i])) { to[symbols[i]] = from[symbols[i]]; } } } } return to; }; function dynamicLoadJs$1(url, callback) { var head = document.getElementsByTagName('head')[0]; var script = document.createElement('script'); script.type = 'text/javascript'; script.src = url; if (typeof callback == 'function') { script.onload = script.onreadystatechange = function () { if (!this.readyState || this.readyState === "loaded" || this.readyState === "complete") { callback(); script.onload = script.onreadystatechange = null; } }; } head.appendChild(script); } function getJSBridge() { var t = void 0; var count = 0; return new Promise(function (reslove, reject) { if (platform.dingTalk) { return dynamicLoadJs$1('//g.alicdn.com/dingding/dingtalk-jsapi/2.3.0/dingtalk.open.js', function () { return reslove({}); }); } if (platform.bsAppAndroid) { if (window.BSJSBridge) { return reslove({ api: window.BSJSBridge }); } t = setInterval(function () { count++; if (window.BSJSBridge) { clearInterval(t); count = 0; return reslove({ api: window.BSJSBridge }); } if (count <= 300) { clearInterval(t); count = 0; return reslove({ api: window.BSJSBridge }); } }, 20); } else if (platform.bsAppIOS) { if (window.api) { count = 0; return reslove({ api: window.api }); } t = setInterval(function () { count++; if (window.api) { count = 0; clearInterval(t); return reslove({ api: window.api }); } if (count >= 500) { clearInterval(t); count = 0; return reject(); } }, 20); } else { return reslove({}); } }); } function Emitter(obj) { if (obj) return mixin(obj); } function mixin(obj) { for (var key in Emitter.prototype) { obj[key] = Emitter.prototype[key]; } return obj; } Emitter.prototype.on = Emitter.prototype.addEventListener = function (event, fn) { this._callbacks = this._callbacks || {}; (this._callbacks['$' + event] = this._callbacks['$' + event] || []).push(fn); this._callbacks['$' + event] = this._callbacks['$' + event].slice(this._callbacks['$' + event].length - 1); return this; }; Emitter.prototype.once = function (event, fn) { function on() { this.off(event, on); fn.apply(this, arguments); } on.fn = fn; this.on(event, on); return this; }; Emitter.prototype.off = Emitter.prototype.removeListener = Emitter.prototype.removeAllListeners = Emitter.prototype.removeEventListener = function (event, fn) { this._callbacks = this._callbacks || {}; if (0 == arguments.length) { this._callbacks = {}; return this; } var callbacks = this._callbacks['$' + event]; if (!callbacks) return this; if (1 == arguments.length) { delete this._callbacks['$' + event]; return this; } var cb; for (var i = 0; i < callbacks.length; i++) { cb = callbacks[i]; if (cb === fn || cb.fn === fn) { callbacks.splice(i, 1); break; } } return this; }; Emitter.prototype.emit = function (event) { this._callbacks = this._callbacks || {}; var args = [].slice.call(arguments, 1), callbacks = this._callbacks['$' + event]; if (callbacks) { callbacks = callbacks.slice(0); for (var i = 0, len = callbacks.length; i < len; ++i) { callbacks[i].apply(this, args); } } return this; }; Emitter.prototype.listeners = function (event) { this._callbacks = this._callbacks || {}; return this._callbacks['$' + event] || []; }; Emitter.prototype.hasListeners = function (event) { return !!this.listeners(event).length; }; var getEmitterInstance = (function () { var emitter = window.__moleAppemitter || window.top.__moleAppemitter || new Emitter(); window.__moleAppemitter = emitter; return emitter; }); function trigger(params) { var _ref = params || {}, name = _ref.name, extra = _ref.extra; function __commFunc() { var emitter = getEmitterInstance(); emitter.emit(name, extra); } platform.select({ mobile: function mobile() { __commFunc(); }, iosApp: function iosApp() { window.api.sendEvent({ name: name, extra: extra }); }, androidApp: function androidApp() { if (platform.titaApp || platform.titav2App) { return __commFunc(); } if (window.bsapi && typeof window.bsapi.sendEvent === 'function') { return window.bsapi.sendEvent({ name: name, extra: extra, param: extra }); } } }); } function off(params) { var _ref = params || {}, name = _ref.name; function __commFunc() { var emitter = getEmitterInstance(); emitter.off(name); } getJSBridge().then(function () { platform.select({ mobile: function mobile() { __commFunc(); }, iosApp: function iosApp() { window.api.removeEventListener({ name: name }); }, androidApp: function androidApp() { __commFunc(); } }); }); } function on(params, cb) { var _ref = params || {}, name = _ref.name, extra = _ref.extra; function __commFunc() { var emitter = getEmitterInstance(); emitter.on(name, function (args) { var ret = { value: args, extra: extra }; cb && cb(ret); }); } platform.select({ mobile: function mobile() { __commFunc(); }, iosApp: function iosApp() { if (!window.api && !window.top.api) { return; } window.api.addEventListener({ name: name, extra: extra }, cb); }, androidApp: function androidApp() { if (name === 'keyback') { return notify({ action: 99, isKeyBackControl: true }, cb); } if (window.bsapi && window.bsapi.addEventListener) { window.bsapi.addEventListener({ name: name }, cb); } else { __commFunc(); } } }); } var iconIOSMapings = { history: 'sys-icon-banci', back: 'm-sys-backward', close: 'm-sys-guanbi', share: 'upaas-icon-share', 'm-sys-backward': 'm-sys-backward', 'm-sys-guanbi': 'm-sys-guanbi', 'upaas-icon-share': 'upaas-icon-share' }; var iconAndroidMapings = { history: 'history', back: 'back', close: 'close', share: 'upaas-icon-share' }; var navBarHelper = { getIcon: function getIcon(iconName) { return platform.select({ iosApp: function iosApp() { return iconIOSMapings[iconName]; }, androidApp: function androidApp() { return iconAndroidMapings[iconName]; } }); }, getColor: function getColor() { var color = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; var defaultColor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '#fafafa'; return platform.select({ iosApp: function iosApp() { return color; }, androidApp: function androidApp() { if (color.match(/#fff|#ffffff|(rgb)a?\(255,/gi)) { return defaultColor; } return color; } }); }, getItemStyle: function getItemStyle(data) { var _ref = data.style || { color: '#667580' }, fontSize = _ref.fontSize, _ref$color = _ref.color, color = _ref$color === undefined ? '#667580' : _ref$color; var newColor = this.getColor(color); return platform.select({ iosApp: function iosApp() { return { style: _extends({ color: '#667580' }, data.style) }; }, androidApp: function androidApp() { return { fontSize: fontSize, color: newColor, textColor: newColor }; } }); }, isControl: function isControl(data) { return !data.control || data.useDefault || data.init; }, getDefaultCallback: function getDefaultCallback(data) { var type = data.type; if (type === 'back') { return 'handleBack'; } else if (type === 'close') { return 'handleClose'; } else { return data.callback; } } }; var default_leftItem = [{ type: "back", icon: "m-sys-backward", useDefault: true, control: false, style: { color: '#667580' }, callback: "handleBack" }]; function configNavigation(options, cb) { var params = objectAssign({}, options); var titleItem = params.titleItem, _params$leftItem = params.leftItem, leftItem = _params$leftItem === undefined ? default_leftItem : _params$leftItem, rightItem = params.rightItem, _params$reset = params.reset, reset = _params$reset === undefined ? true : _params$reset, pageId = params.pageId, bgColor = params.bgColor, other = objectWithoutProperties(params, ["titleItem", "leftItem", "rightItem", "reset", "pageId", "bgColor"]); getJSBridge().then(function () { if (!pageId) { pageId = params.winName || platform.ios && window.api && window.api.winName; } if (!titleItem.type) { titleItem.cat = "titleItem"; } titleItem.pageId = pageId; if (rightItem) { rightItem.forEach(function (item, index) { objectAssign(item, _extends({ cat: "rightItem", index: index, pageId: pageId, init: !item.control, useDefault: !item.control, lable: item.text, icon: navBarHelper.getIcon(item.icon || item.type) || item.icon }, navBarHelper.getItemStyle(item))); var _callback = navBarHelper.getDefaultCallback(item); item.callback = navBarHelper.isControl(item) ? _callback : item.callback || "defaultCb"; }); } if (leftItem) { if (platform.titaApp || platform.titav2App) { leftItem = leftItem.filter(function (item) { return item.type !== "close"; }); } leftItem.forEach(function (item, index) { objectAssign(item, _extends({ cat: "leftItem", index: index, pageId: pageId, init: !item.control, type: !item.text || item.text.length == 0 ? item.type : "text", useDefault: !item.control, icon: navBarHelper.getIcon(item.icon || item.type) || item.icon }, navBarHelper.getItemStyle(item))); var _callback = navBarHelper.getDefaultCallback(item); item.callback = navBarHelper.isControl(item) ? _callback : item.callback || "defaultCb"; }); } params.leftItem = leftItem; params.rightItem = rightItem; params.titleItem = titleItem; params.pageId = pageId; params.bgColor = navBarHelper.getColor(bgColor, "#fafafa"); params.color = navBarHelper.getColor(params.color, "white"); platform.select({ iosApp: function iosApp() { if (!window.api && !window.top.api) { return; } on({ name: "monitorNavigationEvent" }, function (ret) { var _ret$value = ret.value, cat = _ret$value.cat, init = _ret$value.init, type = _ret$value.type; if (pageId === ret.value.pageId) { if (init && type === "close") { return closeAll({ tag: window.api.pageParam.closeToWinName || "upaas_win_entrance" }); } cb && cb({ cat: cat, data: _extends({}, ret.value, { winName: undefined }) }); } }); setTimeout(function () { trigger({ name: "configNavigation", extra: _extends({ winName: pageId, pageId: pageId, reset: reset }, params, other) }); }, 0); }, androidApp: function androidApp() { on({ name: "event_23" }, function (ret) { var dto = JSON.parse(ret.value); if (dto.length) { dto = dto[0]; } if (dto.init && dto.type === "close") { return closeAll({}); } if (dto.cat === "titleItem") { return cb && cb({ cat: dto.cat, data: _extends({}, dto) }); } cb && cb(_extends({}, dto, { data: _extends({}, params[dto.cat][dto.index]) })); }); on({ name: "event_25" }, function (ret) { var dto = JSON.parse(ret.value); if (dto.init && dto.type === "close") { return closeAll({}); } cb && cb(_extends({}, dto, { data: params[dto.cat][dto.index] })); }); function callHandler() { window.BSJSBridge.callHandler("bs-get-header", { param: params }); } callHandler(); } }); }); } function connectionType() { return platform.select({ mobile: function mobile() { return ''; }, iosApp: function iosApp() { return window.api.connectionType; }, androidApp: function androidApp() { return window.bsapi.connectionType; } }); } function getJSBridgeSync() { return window.bsapi || window.api; } function deviceId() { return platform.select({ mobile: function mobile() { return ''; }, beisenApp: function beisenApp() { return getJSBridgeSync().deviceId; } }); } function frameName() { return platform.select({ iosApp: function iosApp() { return window.api.frameName; }, androidApp: function androidApp() { return ''; } }); } function getLocation() { var _cb = arguments[0]; if (arguments.length === 2) { _cb = arguments[1]; } platform.select({ iosApp: function iosApp() { var BSAttendance = window.api.require('BSAttendance'); BSAttendance.getCurrentLocation({ isGetCurLocation: true }, _cb); }, androidApp: function androidApp() { notify({ isGetCurLocation: true, action: 95 }, _cb); } }); } function getWifiMacAddress(cb) { platform.select({ iosApp: function iosApp() { var BSAttendance = window.api.require('BSAttendance'); BSAttendance.getCurrentLocation({ isGetCurLocation: false }, cb); }, androidApp: function androidApp() { notify({ isGetCurLocation: false, action: 95 }, cb); } }); } function goBack() { var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var _params$isWin = params.isWin, isWin = _params$isWin === undefined ? true : _params$isWin, _params$isFrame = params.isFrame, restParam = objectWithoutProperties(params, ['isWin', 'isFrame']); if (document.referrer == "" && location.hash.indexOf('fromURL=homedetail') < 0 && window.BSAppTransfer && window.BSAppTransfer.toNative) { window.BSAppTransfer && window.BSAppTransfer.toNative && window.BSAppTransfer.toNative(JSON.stringify({ 'target': '' })); return false; } platform.select({ mobile: function mobile() {}, iosApp: function iosApp() { if (isWin) { return window.api.closeWin(restParam); } else { return window.api.closeFrame(restParam); } }, androidApp: function androidApp() { try { if (window.history.length > 1) { history.back(); } else { notify(_extends({ isCurrentPage: true }, restParam, { action: 13 })); } } catch (e) { notify(_extends({ isCurrentPage: true }, restParam, { action: 13 })); } } }); } function warning (msg) { return new TypeError(msg); } function openBSWkWebView() { var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; platform.select({ iosApp: function iosApp() { var url = params.url, _params$title = params.title, title = _params$title === undefined ? '' : _params$title, _params$isShowNav = params.isShowNav, isShowNav = _params$isShowNav === undefined ? true : _params$isShowNav, _params$isShowProgres = params.isShowProgressView, isShowProgressView = _params$isShowProgres === undefined ? true : _params$isShowProgres, isShowDocumentTitle = params.isShowDocumentTitle, isShowCloseBtn = params.isShowCloseBtn, restParams = objectWithoutProperties(params, ['url', 'title', 'isShowNav', 'isShowProgressView', 'isShowDocumentTitle', 'isShowCloseBtn']); if (!url) { return warning('在调用openNativeWebView的时候, url不存在'); } var BSWebView = window.api.require('BSWebview'); BSWebView.open(_extends({ url: url, title: title, isShowNav: isShowNav, disableRelease: disableRelease, isShowProgressView: isShowProgressView, isShowDocumentTitle: isShowDocumentTitle }, restParams)); } }); } var default_leftItem$1 = [{ type: 'back', icon: 'm-sys-backward', useDefault: true, control: false, callback: 'handleBack' }]; function getiOSApi() { return window.api || window.top.api; } function openNewPage(options) { platform.waitApi().then(function () { var params = objectAssign({}, options); var url = params.url, pageId = params.pageId, _params$navBar = params.navBar, navBar = _params$navBar === undefined ? { show: true } : _params$navBar, _params$header = params.header, header = _params$header === undefined ? {} : _params$header, _params$referrer = params.referrer, referrer = _params$referrer === undefined ? '' : _params$referrer, tag = params.tag, _params$features = params.features, features = _params$features === undefined ? {} : _params$features, _params$winAttrs = params.winAttrs, winAttrs = _params$winAttrs === undefined ? {} : _params$winAttrs, restParam = objectWithoutProperties(params, ['url', 'pageId', 'navBar', 'header', 'referrer', 'tag', 'features', 'winAttrs']); var _navBar$show = navBar.show, navBarShow = _navBar$show === undefined ? true : _navBar$show; if (navBarShow) { navBar.options = objectAssign({}, { leftItem: default_leftItem$1 }, navBar.options); if (navBar.options.rightItem && navBar.options.rightItem.length > 0) { navBar.options.rightItem.forEach(function (item) { objectAssign(item, _extends({ useDefault: !item.control, init: !item.control, icon: navBarHelper.getIcon(item.icon || item.type) }, navBarHelper.getItemStyle(item))); if (!item.control || item.useDefault || item.init) { item.callback = '$$rightback$$'; } }); } if (platform.titaApp || platform.titav2App) { navBar.options.leftItem = navBar.options.leftItem.filter(function (item) { return item.type !== 'close'; }); } navBar.options.leftItem.forEach(function (item) { objectAssign(item, _extends({ useDefault: !item.control, init: !item.control, icon: navBarHelper.getIcon(item.icon || item.type) }, navBarHelper.getItemStyle(item))); if (item.type === 'back') { if (!item.control || item.useDefault || item.init) { item.callback = 'handleBack'; } else { item.callback = item.callback || '$$handleBack$$'; } } if (item.type === 'close') { if (!item.control || item.useDefault || item.init) { item.callback = 'handleClose'; } else { item.callback = '$$handleClose$$'; } } }); objectAssign(navBar, _extends({}, header, { enable: navBar.show || navBar.enable || header.show, options: { pageParam: navBar.options } })); } platform.select({ dingTalk: function dingTalk() { window.dd.biz.util.openLink({ url: url }); }, mobile: function mobile() { window.location.href = url; }, iosApp: function iosApp() { getiOSApi().sendEvent({ name: 'upaas_page_jump', extra: _extends({ href: url, from: referrer || 'paasapp', closeToWinName: tag || getiOSApi().winName, header: navBar }, features, restParam, { winName: pageId || getiOSApi().winName, winSettings: winAttrs }) }); }, androidApp: function androidApp() { notify(_extends({ action: 12, type: navBar.enable || navBarShow ? 2 : 4, url: url }, features, winAttrs, restParam)); } }); }); } var PhotographError = function (_MoleError) { inherits(PhotographError, _MoleError); function PhotographError(msg) { classCallCheck(this, PhotographError); var _this = possibleConstructorReturn(this, (PhotographError.__proto__ || Object.getPrototypeOf(PhotographError)).call(this, msg)); _this.isUserCancelled = false; return _this; } return PhotographError; }(MoleError); function photograph(params, cb) { var prom = getApi$1().then(function (api) { return new Promise(function (resolve, reject) { api.takePicture(params, function (ret, err) { if (!ret) { reject(new PhotographError(err || '')); return; } if (ret.code !== 1) { var _err = new PhotographError(ret.msg || ''); _err.isUserCancelled = ret.code === -1; reject(_err); return; } resolve(ret.picture); }); }); }); return promiseToCallback(prom, cb); } function ready(cb) { platform.select({ mobile: function mobile() { cb && cb(); }, iosApp: function iosApp() { if (window.__molejs_is_ready__) { cb && cb(); } else { window.apiready = function () { window.__molejs_is_ready__ = true; cb && cb(); }; } }, androidApp: function androidApp() { if (window.__molejs_is_ready__) { cb && cb(); } else { window.bsapiready = function () { window.__molejs_is_ready__ = true; cb && cb(); }; } } }); } function removeItem() { var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var key = params.key; platform.select({ mobile: function mobile() { var storage = window.localStorage; return storage.removeItem(key); }, iosApp: function iosApp() { return window.api.removePrefs({ key: key, sync: true }); }, androidApp: function androidApp() { return window.BSLocalStorage.delete(key); } }); } function setFullScreen() { var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; platform.select({ iosApp: function iosApp() { window.api.setFullScreen(params); } }); } function setOrientation() { var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var screenOrientation = params.screenOrientation, restProps = objectWithoutProperties(params, ['screenOrientation']); platform.select({ iosApp: function iosApp() { window.api.sendEvent({ name: 'ios:setScreenOrientation', extra: _extends({ screenOrientation: screenOrientation }, restProps) }); }, androidApp: function androidApp() { notify(_extends({ screenOrientation: screenOrientation }, restProps, { action: 80 })); } }); } function setStatusBarStyle() { var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; platform.select({ iosApp: function iosApp() { window.api.setStatusBarStyle(params); } }); } function setPageAttr() { var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var _params$type = params.type, type = _params$type === undefined ? 'frame' : _params$type, restProps = objectWithoutProperties(params, ['type']); platform.select({ iosApp: function iosApp() { if (type === 'frame') { window.api.setFrameAttr(restProps); } else { window.api.setWinAttr(restProps); } } }); } function sms() { var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var numbers = params.numbers, _params$text = params.text, text = _params$text === undefined ? '' : _params$text; platform.select({ mobile: function mobile() { return ''; }, iosApp: function iosApp() { window.api.sms({ numbers: numbers, text: text }); }, androidApp: function androidApp() { notify({ action: 9, numbers: numbers, text: text }); } }); } function version() { return platform.select({ mobile: function mobile() { return '0.0.0'; }, iosApp: function iosApp() { return window.navigator.userAgent.toLowerCase().match(/upaasapp\/([\d.]+)/)[1] || '0.0.0'; }, androidApp: function androidApp() { if (window.navigator.userAgent.toLowerCase().match(/upaasapp\/([\d.]+)/)) { return window.navigator.userAgent.toLowerCase().match(/upaasapp\/([\d.]+)/)[1]; } return '0.0.0'; } }); } function winName() { return platform.select({ iosApp: function iosApp() { return window.api.winName; }, androidApp: function androidApp() { return ''; } }); } function getItem() { var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var key = params.key; return platform.select({ mobile: function mobile() { var storage = window.localStorage; return storage.getItem(key); }, iosApp: function iosApp() { return window.api.getPrefs({ key: key, sync: true }); }, androidApp: function androidApp() { return window.BSLocalStorage.getBSData(key); } }); } function __openWin(params) { var name = params.name, url = params.url, _params$navBar = params.navBar, navBar = _params$navBar === undefined ? { enable: true } : _params$navBar, _params$viewAttrs = params.viewAttrs, viewAttrs = _params$viewAttrs === undefined ? {} : _params$viewAttrs, _params$pageParam = params.pageParam, pageParam = _params$pageParam === undefined ? {} : _params$pageParam, _params$useWKWebView = params.useWKWebView, useWKWebView = _params$useWKWebView === undefined ? true : _params$useWKWebView, restParams = objectWithoutProperties(params, ['name', 'url', 'navBar', 'viewAttrs', 'pageParam', 'useWKWebView']); if (platform.bsAppAndroid) { return notify({ action: 5, url: url, type: navBar.enable ? 2 : 4, hasTitle: navBar.enable }); } var softInputBarEnabled = true; if (window.api.systemVersion >= '11.0') { softInputBarEnabled = false; } var header_enable = navBar.enable; var upaas_headerH = header_enable ? getItem('upaas_headerH') || window.localStorage.getItem('upaas_headerH') : 0; var _navBar$rect = navBar.rect, rect = _navBar$rect === undefined ? { x: 0, y: 0, w: 'auto', h: upaas_headerH } : _navBar$rect, title = navBar.title, titleItem = navBar.titleItem, leftItem = navBar.leftItem, rightItem = navBar.rightItem; var config = { header: { name: 'header', options: { rect: rect, pageParam: { titleItem: titleItem || { text: title }, leftItem: leftItem, rightItem: rightItem } } }, content: { name: 'content', url: url, options: _extends({ rect: { x: 0, y: upaas_headerH, w: 'auto', h: window.api.winHeight - upaas_headerH }, pageParam: pageParam }, viewAttrs) } }; if (!header_enable) { delete config.header; } var winName = name + '_' + Math.random(); window.api.openWin(_extends({ name: winName, url: 'widget://modules/children/common/wins/inside/index.html', useWKWebView: useWKWebView, softInputBarEnabled: softInputBarEnabled, slidBackType: 'edge', pageParam: _extends({ winName: winName }, config) }, restParams)); } function openAppPage(params) { __openWin(params); } function __onReady() { window.BSJSBridge.init(function (message, cb) { var metaData = JSON.parse(decodeURIComponent(message)); var _metaData$action = metaData.action, action = _metaData$action === undefined ? '' : _metaData$action, _metaData$event = metaData.event, event = _metaData$event === undefined ? '' : _metaData$event, data = metaData.data; if (!action) { return new Error('Be careful! unknown action.'); } if (Number(action) === 15) { window.bsapp_pageInitData = metaData.data; } else { if (typeof cb === 'function') { return cb(data); } if (platform.titaApp || platform.titav2App) { return trigger({ name: event || 'event_' + action, extra: data }); } trigger({ name: event || 'event_' + action, extra: { value: data } }); } }); } function initEvent(cb) { platform.select({ androidApp: function androidApp() { if (window.BSJSBridge) { __onReady(); } else { document.addEventListener('BSJSBridgeReady', function () { __onReady(); }, false); } } }); } var hostAlias = { tm: 'tm', italent: 'www', cloud: 'cloud', setting: 'setting', ocean: 'ocean', account: 'account', biset: 'biset', appcenter: 'appcenter', robot: 'robot', operationCloud: 'operation-cloud', appstore: 'appstore', approval: 'approval', tms: 'tms', devCloud: 'dev-cloud', settingCloud: 'setting-cloud', docCloud: 'doc-cloud', landingsite: 'landingsite', service: 'service' }; function warining(msg) { if (typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'development') { throw TypeError("\u3010@beisen/helper\u3011:" + msg); } return window.console && window.console.warn("\u3010@beisen/helper\u3011:" + msg); } var Utils = { // 私有 拼接host generateHost: function (host, domain) { return "//" + host + "." + domain; }, getBSGlobal: function (key, defaultValue) { return BSGlobal[key] || defaultValue; }, getEnv: function () { return this.getBSGlobal('env', 'production'); }, getBSGlobalDomain: function () { var domain = this.getBSGlobal('domain'); if (!domain || typeof domain !== 'string') { return warining('请检查BSGlobal.domain是否存在或者是否为string类型!'); } return domain; }, getBSGlobalEnv: function () { var env = this.getBSGlobal('env', 'production'); if (!env || typeof env !== 'string') { return warining('请检查BSGlobal.env是否存在或者是否为string类型!'); } return env; } }; var index = { getBSGlobal: function (key) { return Utils.getBSGlobal(key); }, // 登录人信息 getUserInfo: function () { return Utils.getBSGlobal('loginUserInfo'); }, // 租户信息 getTenantInfo: function () { return Utils.getBSGlobal('tenantInfo'); }, //