{"version":3,"file":"@ks.9ae60c7c.js","sources":["../../node_modules/@ks/yoda-js-sdk/dist/yoda.esm.js","../../node_modules/@ks/ks-bridge/ks-bridge.2.0.3.js","../../node_modules/@ks/ks-bridge/index.js","../../node_modules/@ks/yoda-kuaishou-plugin/dist/yoda-kuaishou-plugin.common.js","../../plugin-vue:export-helper","../../node_modules/@ks/kw/icon/output/Icon.vue","../../node_modules/@ks/kw/icon/output/IconLight.vue","../../node_modules/@ks/kw/icon/output/common/baseflat/common_baseflat_gift_24/index.js","../../node_modules/@ks/kw/icon/output/common/base/common_base_next_24/index.js","../../node_modules/@ks/kw/icon/output/common/emptystate/common_emptystate_nogift/index.js","../../node_modules/@ks/kw/icon/output/gamecenter/gameofficial/gamecenter_gameofficial_signin/index.js","../../node_modules/@ks/hydrationui/node_modules/vue-demi/lib/index.cjs.js","../../node_modules/@ks/hydrationui/lib/icon.js","../../node_modules/@ks/hydrationui/lib/button.js","../../node_modules/@ks/hydrationui/lib/loading.js","../../node_modules/@ks/hydrationui/lib/popup.js","../../node_modules/@ks/hydrationui/lib/dialog.js","../../node_modules/@ks/hydrationui/lib/index.js"],"sourcesContent":["/*!\n * Yoda.js v0.3.5\n * (c) 2019-present By Kuaishou\n * Released under the ISC License.\n */\nvar _readyResolve;\n\nvar _readyPromise = new Promise(function (resolve) {\n _readyResolve = resolve;\n});\n\nfunction ready(callback) {\n if (callback) {\n _readyPromise.then(callback);\n }\n\n return _readyPromise;\n}\n\n/**\n * 注册 api\n * @param {object} obj\n * namespace 命名空间\n * name api名\n * before format 请求参数\n * after format 返回值\n */\nfunction register(config) {\n var _this = this;\n\n if (!(config && config.namespace && config.name)) {\n throw new Error('register 参数: {namespace, name}');\n }\n\n var namespace = this[config.namespace];\n\n if (!namespace) {\n namespace = this[config.namespace] = {};\n } // 可能是以下几种情况: (), (params), (params, option), (params, callback), (params, option, callback)\n\n\n namespace[config.name] = function (params, option, callback) {\n params = params || {};\n\n if (!callback && typeof option === 'function') {\n callback = option;\n option = null;\n }\n\n option = option || {};\n\n callback = callback || function () {};\n\n if (config.before) {\n // before可能会报错 直接抛出异常\n params = config.before(params);\n }\n\n var callbackId = _this.genCallbackId();\n\n var returnPromise;\n var invokeCallback;\n\n if (config.multiCallback || option.multiCallback) {\n invokeCallback = callback;\n } else {\n returnPromise = new Promise(function (resolve) {\n return invokeCallback = resolve;\n });\n returnPromise.then(function () {\n delete _this._callbacks[callbackId];\n });\n returnPromise.then(callback);\n }\n\n if (config.after) {\n var originInvokeCallback = invokeCallback;\n\n invokeCallback = function invokeCallback(ret) {\n return originInvokeCallback(config.after(ret));\n };\n }\n\n _this._callbacks[callbackId] = invokeCallback;\n\n try {\n _this.invoke({\n namespace: config.namespace,\n name: config.name,\n params: params,\n callbackId: callbackId\n });\n } catch (e) {\n invokeCallback({\n // 桥调用异常\n result: 125014,\n message: e.message\n });\n }\n\n return returnPromise;\n };\n}\n\n/**\n *\n * @param {string} namespace\n * @param {string} name 接口名\n * @param {object} params 参数\n * @param {function} callback 回调函数\n */\nfunction invoke(_ref) {\n var namespace = _ref.namespace,\n name = _ref.name,\n params = _ref.params,\n callbackId = _ref.callbackId;\n\n // callbackId 约定为string\n window.__yodaBridge__.invoke(namespace, name, JSON.stringify(params), '' + callbackId);\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nvar baseApis = [{\n namespace: 'system',\n name: 'getDeviceInfo'\n}, {\n namespace: 'system',\n name: 'getAppInfo'\n}, {\n namespace: 'system',\n name: 'getNetworkType'\n}, {\n namespace: 'webview',\n name: 'open'\n}, {\n namespace: 'webview',\n name: 'getLaunchParams'\n}, {\n namespace: 'webview',\n name: 'close'\n}, {\n namespace: 'webview',\n name: 'backOrClose'\n}, {\n namespace: 'tool',\n name: 'canIUse'\n}, {\n namespace: 'tool',\n name: 'checkAppInstalled'\n}, {\n namespace: 'tool',\n name: 'launchApp'\n}, {\n namespace: 'ui',\n name: 'setTopBarStyle'\n}, {\n namespace: 'ui',\n name: 'setTitle'\n}, {\n namespace: 'ui',\n name: 'setTopBarButton'\n}, {\n namespace: 'ui',\n name: 'removeTopBarButton'\n}, {\n namespace: 'ui',\n name: 'setSlideBackBehavior'\n}, {\n namespace: 'ui',\n name: 'setPhysicalBackButtonBehavior'\n}, {\n namespace: 'ui',\n name: 'showLoading'\n}, {\n namespace: 'ui',\n name: 'hideLoading'\n}, {\n namespace: 'ui',\n name: 'showToast'\n}, {\n namespace: 'ui',\n name: 'showDialog'\n}, {\n namespace: 'event',\n name: 'addEventListener'\n}, {\n namespace: 'event',\n name: 'removeEventListener'\n}, {\n namespace: 'event',\n name: 'dispatchEvent'\n}];\nvar isAndroid = navigator.userAgent.indexOf(' Android ') > -1;\nvar overWriteApis = {\n 'tool.checkAppInstalled': {\n before: function before(params) {\n return {\n identifier: params[isAndroid ? 'android' : 'ios']\n };\n }\n }\n};\n\nfunction addEventListener(type, listener, callback) {\n if (listener.__yodaCallbackId__) {\n throw new Error('addEventListener 的 listener 已经被绑定过了');\n }\n\n var callbackId = this.genCallbackId();\n this._callbacks[callbackId] = listener;\n var eventSet = this._eventListeners[type];\n\n if (!eventSet) {\n eventSet = this._eventListeners[type] = {};\n }\n\n eventSet[callbackId] = true;\n listener.__yodaCallbackId__ = callbackId;\n return this.event._addEventListener({\n type: type,\n listener: callbackId\n }, callback);\n} // 不传 listener 时,需要移除该 type 下的所有 listener\n\n\nfunction removeEventListener(type, listener, callback) {\n var _this = this;\n\n var listenerId;\n var eventSet = this._eventListeners[type];\n\n if (listener) {\n listenerId = listener.__yodaCallbackId__;\n\n if (!(listenerId && eventSet && eventSet[listenerId])) {\n // 已经被删除(可能是批量删除) 不需要调用客户端 直接返回成功\n var resPromise = Promise.resolve({\n result: 1\n });\n callback && resPromise.then(callback);\n return resPromise;\n }\n }\n\n var promise = this.event._removeEventListener({\n type: type,\n listener: listenerId\n }, callback); // bridge 成功时清除回调\n\n\n promise.then(function (ret) {\n // 约定 客户端没有找到对应的 listenerId 也返回 result: 1\n // 约定 result 不为1的时候不删\n if (ret.result === 1) {\n if (listener) {\n delete eventSet[listenerId];\n delete listener.__yodaCallbackId__;\n delete _this._callbacks[listenerId];\n } else {\n // 不传 listener 时,需要移除该 name 下的所有 listener\n if (eventSet) {\n delete _this._eventListeners[name];\n\n for (var key in eventSet) {\n delete _this._callbacks[key].__yodaCallbackId__;\n delete _this._callbacks[key];\n }\n }\n }\n }\n });\n return promise;\n}\n\nfunction initEvent(yoda) {\n var eventNamespace = yoda.event;\n\n if (eventNamespace && eventNamespace.addEventListener) {\n eventNamespace._addEventListener = eventNamespace.addEventListener;\n eventNamespace.addEventListener = addEventListener.bind(yoda);\n }\n\n if (eventNamespace && eventNamespace.removeEventListener) {\n eventNamespace._removeEventListener = eventNamespace.removeEventListener;\n eventNamespace.removeEventListener = removeEventListener.bind(yoda);\n }\n}\n\nfunction init() {\n var yoda = this;\n\n var already = function already() {\n yoda.register({\n namespace: 'tool',\n name: 'getApiList'\n });\n yoda.tool.getApiList({}, function (_ref) {\n var result = _ref.result,\n apiList = _ref.apiList;\n\n // 方法不存在时使用兜底api\n if (result !== 1) {\n apiList = baseApis;\n }\n\n for (var l = apiList.length; l--;) {\n var api = apiList[l]; // 某些方法需要添加 before 或者 after 等\n\n var overWriteApi = overWriteApis[api.namespace + '.' + api.name];\n\n if (overWriteApi) {\n api = _extends({}, api, {}, overWriteApi);\n }\n\n yoda.register(api);\n }\n\n initEvent(yoda); // 触发 yoda.ready\n\n yoda._readyResolve();\n });\n }; // 对已经注入bridge的 直接ready\n\n\n if (window.__yodaBridge__) {\n already();\n } else {\n window.__yodaBridgeReady__ = already;\n }\n}\n\nfunction callbackHandler (_ref) {\n var id = _ref.id,\n params = _ref.params;\n var callback = this._callbacks[id];\n\n if (callback) {\n callback(params);\n } // TODO 回调不存在 上报\n // TODO result 不为1 上报\n\n}\n\n// 准备aop插件系统\nfunction setupPlugin(yoda, config) {\n yoda._plugins = [];\n\n var _loop = function _loop(name) {\n var realFn = config[name];\n var surfix = name[0].toUpperCase() + name.slice(1);\n var beforeName = 'before' + surfix;\n var afterName = 'after' + surfix;\n\n yoda[name] = function (params) {\n var plugins = yoda._plugins;\n var length = plugins.length;\n var index = -1;\n\n var next = function next() {\n while (++index < length) {\n var fn = plugins[index][beforeName];\n\n if (typeof fn === 'function') {\n var _ret = function () {\n var called = false;\n fn.call(yoda, params, function () {\n if (!called) {\n called = true;\n next();\n }\n });\n return {\n v: void 0\n };\n }();\n\n if (typeof _ret === \"object\") return _ret.v;\n }\n }\n\n realFn.call(yoda, params);\n\n for (var i = 0; i < length; i++) {\n var _fn = plugins[i][afterName];\n\n if (typeof _fn === 'function') {\n _fn.call(yoda, params);\n }\n }\n };\n\n next();\n };\n };\n\n for (var name in config) {\n _loop(name);\n }\n\n return function plugin(config) {\n // config 可以是 class 或者 对象\n if (typeof config === 'function') {\n config = new config(yoda);\n }\n\n yoda._plugins.push(config);\n };\n}\n\nvar version = \"0.3.4\";\n\n// 与客户端约定的接口描述\nvar SafeInteger = Number.MAX_SAFE_INTEGER || 9007199254740991;\n\nvar Yoda =\n/*#__PURE__*/\nfunction () {\n function Yoda() {\n this.isInYoda = !!window.__yodaBridge__;\n this._instanceId = this.genInstanceId();\n this._callbackId = 1;\n this._callbacks = {};\n this._eventListeners = {};\n this._readyPromise = _readyPromise;\n this._readyResolve = _readyResolve;\n this.ready = ready;\n this._plugins = [];\n this.version = version;\n this.overflow = false; // 准备插件系统\n\n this.plugin = setupPlugin(this, {\n register: register,\n invoke: invoke,\n callbackHandler: callbackHandler,\n init: init\n });\n }\n\n var _proto = Yoda.prototype;\n\n _proto.genCallbackId = function genCallbackId() {\n var id = this.genNextId(); // 如果生成的 id 溢出了,从头开始\n // 页面中应该不会有这么多的回调\n\n if (id >= SafeInteger) {\n this.overflow = true;\n this._callbackId = 1;\n return this.genCallbackId();\n }\n\n return \"\" + id;\n };\n\n _proto.genNextId = function genNextId() {\n var id = this._callbackId++;\n var callbackId = this._instanceId + id; // 溢出后需要判断是否已经存在对应的 id \n\n if (this.overflow && this._callbacks[callbackId]) {\n return this.genNextId();\n }\n\n return callbackId;\n }\n /**\n * ios 客户端目前会将 callbackId 处理为 number\n * 需要尽可能的保证生成的 _instanceId 与其他页面不会重复 & 不会超出 Number.MAX_SAFE_INTEGER\n * 3位随机数 + 9位时间戳 + 4位自增 id\n */\n ;\n\n _proto.genInstanceId = function genInstanceId() {\n var safeIntegerStr = \"\" + SafeInteger; // 取 3 位随机数避免同一时刻出现重复 & 避免数字溢出\n\n var maxRandom = Number(safeIntegerStr.slice(0, 3));\n var random = Math.floor(Math.random() * (maxRandom + 1)); // 取 9 位时间戳,保证1周内不会重复\n\n var date = \"\" + Date.now();\n var dateStr = date.slice(date.length - 9); // 剩下的都作为自增 id \n\n var zero = new Array(safeIntegerStr.length - 12).fill(0).join('');\n return Number(\"\" + random + dateStr + zero);\n };\n\n return Yoda;\n}();\n\nvar yoda = new Yoda(); // 用于接收客户端回调\n\nwindow.__yodaBridgeCallback__ = function (id, params) {\n yoda.callbackHandler({\n id: id,\n params: params\n });\n}; // 下一个 event loop 再初始化, 为了可以改写 init 方法\n\n\nsetTimeout(function () {\n return yoda.init();\n});\n\nexport default yoda;\n","/**\n * ===============================================================\n * Ks-Bridge - Javascript Library\n *\n * Copyright (c) 2018\n * JasonFang and other contributors in KuaiShou.\n *\n * ks-bridge.2.0.3.js 2.0.3 build at Thu Mar 04 2021 20:56:36 GMT+0800 (GMT+08:00) .\n *\n * ===============================================================\n */\n\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ksBridge\"] = factory();\n\telse\n\t\troot[\"ksBridge\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 9);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"j\"] = isFunction;\n/* harmony export (immutable) */ __webpack_exports__[\"g\"] = isArray;\n/* harmony export (immutable) */ __webpack_exports__[\"k\"] = isObject;\n/* harmony export (immutable) */ __webpack_exports__[\"i\"] = isFile;\n/* harmony export (immutable) */ __webpack_exports__[\"h\"] = isBlob;\n/* harmony export (immutable) */ __webpack_exports__[\"l\"] = isUndefined;\n/* harmony export (immutable) */ __webpack_exports__[\"f\"] = isAbsoluteUrl;\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = assignOptions;\n/* harmony export (immutable) */ __webpack_exports__[\"d\"] = generateUUCallbackFunction;\n/* harmony export (immutable) */ __webpack_exports__[\"c\"] = generateHandlerFunction;\n/* harmony export (immutable) */ __webpack_exports__[\"m\"] = transformFuncToURL;\n/* harmony export (immutable) */ __webpack_exports__[\"e\"] = getUrlParam;\n/* harmony export (immutable) */ __webpack_exports__[\"b\"] = compareVersion;\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nvar toStr = Object.prototype.toString;\n\nvar origin = function origin(o) {\n return o;\n};\n\nfunction isFunction(fn) {\n return typeof fn === 'function';\n}\nfunction isArray(arr) {\n if (typeof Array.isArray === 'function') {\n return Array.isArray(arr);\n }\n\n return toStr.call(arr) === '[object Array]';\n}\nfunction isObject(val) {\n return val !== null && _typeof(val) === 'object';\n}\nfunction isFile(val) {\n return toStr.call(val) === '[object File]';\n}\nfunction isBlob(val) {\n return toStr.call(val) === '[object Blob]';\n}\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\nfunction isAbsoluteUrl(url) {\n return /^(https?)/.test(url);\n}\nfunction assignOptions() {\n var target = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var extra = arguments.length > 1 ? arguments[1] : undefined;\n Object.keys(extra).forEach(function (key) {\n // 因为有的桥传的值就是 false,所以单独检查下,过滤掉值是 undefined,空字符串等\n if (extra[key] || extra[key] === false) {\n target[key] = extra[key];\n }\n });\n return target;\n}\n/**\n *\n * 生成唯一的id\n * @export\n * @returns\n */\n\nfunction generateUUID() {\n var rc = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n // https://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript/2117523#2117523\n var d = new Date().getTime();\n\n if (typeof performance !== 'undefined' && typeof performance.now === 'function') {\n d += performance.now(); // use high-precision timer if available\n }\n\n var pattern = rc ? 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx' : 'xxxxxxxx_xxxx_4xxx_yxxx_xxxxxxxxxxxx';\n return pattern.replace(/[xy]/g, function (c) {\n var r = (d + Math.random() * 16) % 16 | 0;\n d = Math.floor(d / 16);\n return (c === 'x' ? r : r & 0x3 | 0x8).toString(16);\n });\n}\n/**\n *\n * 生成临时唯一的方法挂接到window上,给客户端回调用\n * @name generateUUCallbackFunction\n * @private\n * @param {function} callback 回调函数,客户端方法执行完后会执行该方法\n * @param {boolean} notDelete 是否删除当前回调,留在当前页面的内存中\n * @param {function} 返回参数处理函数 对 native 返回的参数进行预处理\n * @returns\n */\n\n\nfunction generateUUCallbackFunction(bridgeName, callback, notDelete) {\n var resHandle = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : origin;\n var name = \"kwai_\".concat(bridgeName, \"_bridge_callback_\") + generateUUID(false);\n\n window[name] = function (data) {\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (e) {\n console.warn(e); // eslint-disable-line\n }\n }\n\n callback && callback.call(window, resHandle(data));\n\n if (!notDelete) {\n delete window[name];\n }\n };\n\n return name;\n} // 处理事件相关的 api 的 handler 回调\n\nvar handlerCbMap = {};\nfunction generateHandlerFunction(bridgeName, callback) {\n var handlerName = '';\n var cb = null;\n Object.keys(handlerCbMap).some(function (cbName) {\n var handlerCb = handlerCbMap[cbName];\n\n if (handlerCb === callback) {\n cb = handlerCb;\n handlerName = cbName;\n return true;\n }\n }); // 当传递的 handler 回调之前已经挂载过,就不再重新挂载,重新生成 handler 回调名\n\n if (cb !== callback && callback) {\n var name = generateUUCallbackFunction(bridgeName, callback, true);\n handlerCbMap[name] = callback;\n handlerName = name;\n }\n\n return handlerName;\n} // 用于 showDialog 相关 api 中,将回调转化成接口需要的 URL\n\nfunction transformFuncToURL(bridgeName, btn) {\n var tmpBtn = btn;\n\n if (btn && isArray(btn.actions)) {\n tmpBtn.actions = btn.actions.map(function (action) {\n if (action && action.url && isFunction(action.url)) {\n action.url = generateUUCallbackFunction(bridgeName, action.url, true);\n }\n\n return action;\n });\n }\n\n return tmpBtn;\n}\n/**\n * 根据字符串的特点获取字符串中某个字段值,可以用于获取url的参数,cookie的参数\n * @name getValueByNameAccordToSplit\n * @private\n * @param {any} str 目标字符串\n * @param {any} name 获得的字符串名字\n * @param {string} [spliter='&'] 分隔符\n * @returns\n */\n\nfunction getValueByNameAccordToSpliter(str, name) {\n var spliter = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '&';\n var arr = str.substr(1).split(spliter);\n\n if (!arr.length) {\n return null;\n }\n\n for (var i = 0; i < arr.length; i++) {\n var indexOfEqual = arr[i].indexOf('=');\n\n if (indexOfEqual === -1 && arr[i] === name) {\n return null;\n }\n\n if (arr[i].substr(0, indexOfEqual) === name) {\n return arr[i].substr(indexOfEqual + 1, arr[i].length);\n }\n }\n\n return null;\n}\n/**\n * 从url的search区域获取某个参数的值\n * @name getUrlParam\n * @private\n * @param {any} name\n * @returns\n */\n\n\nfunction getUrlParam(name) {\n // array split is more faster then regexp even the code length is much more then the latter;\n // https://jsperf.com/regexp-vs-array-to-get-url-param1\n return decodeURIComponent(getValueByNameAccordToSpliter(window.location.search.substr(1), name, '&'));\n}\n/**\n * 比较版本号\n * @param {string} source 比较源\n * @param {string} target 比较目标\n * @return {inter} 前者大返回>0, 相等返回0, 前者小返回<0\n */\n\nfunction compareVersion() {\n var source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var sourceArr = source.split('.');\n var targetArr = target.split('.');\n\n for (var i = 0; i < targetArr.length; i++) {\n if (sourceArr[i] !== targetArr[i]) {\n sourceArr[i] = isNaN(sourceArr[i]) ? 0 : sourceArr[i];\n targetArr[i] = isNaN(targetArr[i]) ? 0 : targetArr[i];\n return sourceArr[i] - targetArr[i];\n }\n }\n\n return 0;\n}\n\n/***/ }),\n/* 1 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = extend;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__index__ = __webpack_require__(0);\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\n\nvar isPlainObject = function isPlainObject(obj) {\n if (!obj || toStr.call(obj) !== '[object Object]') {\n return false;\n }\n\n var hasOwnConstructor = hasOwn.call(obj, 'constructor'),\n hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\n if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n return false;\n }\n\n return true;\n};\n/**\n *\n * @private\n * @param {Object | Boolean} target\n * @param {Object} source1\n * @param {Object} source2\n * ...\n */\n\n\nfunction extend() {\n var options,\n name,\n src,\n copy,\n copyIsArray,\n clone,\n target = arguments[0],\n i = 1,\n length = arguments.length,\n deep = false;\n\n if (typeof target === 'boolean') {\n deep = target;\n target = arguments[1] || {};\n i = 2;\n } else if (_typeof(target) !== 'object' && typeof target !== 'function' || target == null) {\n target = {};\n }\n\n for (; i < length; ++i) {\n options = arguments[i];\n\n if (options != null) {\n for (name in options) {\n if (options.hasOwnProperty(name)) {\n src = target[name];\n copy = options[name];\n\n if (target !== copy) {\n if (deep && copy && (isPlainObject(copy) || (copyIsArray = Object(__WEBPACK_IMPORTED_MODULE_0__index__[\"g\" /* isArray */])(copy)))) {\n if (copyIsArray) {\n copyIsArray = false;\n clone = src && Object(__WEBPACK_IMPORTED_MODULE_0__index__[\"g\" /* isArray */])(src) ? src : [];\n } else {\n clone = src && isPlainObject(src) ? src : {};\n }\n\n target[name] = extend(deep, clone, copy);\n } else if (typeof copy !== 'undefined') {\n target[name] = copy;\n }\n }\n }\n }\n }\n }\n\n return target;\n}\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\nmodule.exports = require(\"@ks/yoda-js-sdk\");\n\n/***/ }),\n/* 3 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__ks_yoda_js_sdk__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__ks_yoda_js_sdk___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__ks_yoda_js_sdk__);\n// 环境设备判断等\n\n/**\n * sniff
\n * 使用场景:查看运行环境,设备,系统等信息\n * @property ksBridge.sniff\n * @category Base\n *\n * @description\n * | 字段 | 类型 | 说明 |\n * | :--: | :--: | :--: |\n * | browserDesc | String | 浏览器类型,例如 \"uc\" |\n * | deviceHeightAndWidth | Object | 例如 { dph: 1334, dpw: 750 } |\n * | iOSVersion | Number | iOS 系统版本,例如 11 |\n * | isAndroid | Bool | |\n * | isIOS | Bool | |\n * | isInApp | Bool | 快手主 APP,概念版,极速版,直播伴侣等 |\n * | isInAcFun | Bool | AcFun 客户端,ks-bridge 1.0.14 版本新增 |\n * | isInBaidu | Bool | 百度手机客户端 |\n * | isInWeChat | Bool | 微信 |\n * | isInEnterpriseWeChat | Bool | 企业微信 |\n * | isInQQ | Bool | QQ |\n * | isInQQWebBrowser | Bool | QQ浏览器 |\n * | isInQzone | Bool | QQ空间 |\n * | isInTBS | Bool | 腾讯浏览服务(Tencent Browser Service) 简称TBS |\n * | isInUC | Bool | UC浏览器 |\n * | isInWeibo | Bool | 微博 |\n * | isInXiaomi | Bool | 小米 |\n * | isInKakaoTalk | Bool | KaKaoTalk |\n * | isInPinterest | Bool | Pinterest |\n * | isInZalo | Bool | Zalo |\n * | supportUniversalLink | Bool | |\n *\n*/\n\nvar sniff = {};\nvar ua = navigator && navigator.userAgent;\nsniff.isIOS = !!ua.match(/\\(i[^;]+;( U;)? CPU.+Mac OS X/);\nsniff.isAndroid = ua.indexOf('Android') > -1 || ua.indexOf('Adr') > -1;\n\nfunction getIOSVersion() {\n if (!sniff.isIOS) {\n return false;\n }\n\n var match = ua.match(/OS (\\d+)_(\\d+)_?(\\d+)?/);\n\n if (!match || match.length < 3) {\n return false;\n }\n\n var version = parseFloat(parseInt(match[1], 10) + 0.1 * match[2]);\n\n if (version > 0) {\n return version;\n }\n\n return false;\n}\n\nsniff.iOSVersion = getIOSVersion();\n\nfunction getCookie(objName) {\n // 获取指定名称的cookie的值\n var arrStr = document.cookie.split('; ');\n var temp;\n\n for (var i = 0; i < arrStr.length; i++) {\n temp = arrStr[i].split('=');\n\n if (temp[0] == objName) {\n return unescape(temp[1] || '');\n }\n }\n\n return '';\n}\n\nsniff.isInYoda = __WEBPACK_IMPORTED_MODULE_0__ks_yoda_js_sdk___default.a.isInYoda;\nsniff.isInKwai = / (Kwai|Kwai_Lite|Kwai_Pro|ksthanos|ksNebula|livemate|kswv)\\//i.test(ua) || getCookie('appver').length > 0; // isInApp 代替 isInKwai,后者表义不再合适,需要逐渐被废弃\n\nsniff.isInApp = sniff.isInKwai;\nsniff.isInKuaishou = / Kwai\\//i.test(ua);\nsniff.isInNebula = / ksNebula\\//i.test(ua);\nsniff.isInThanos = / ksthanos\\//i.test(ua);\nsniff.isInAcFun = /ACVideoCore/i.test(ua);\nsniff.isInWeChat = /MicroMessenger/i.test(ua);\nsniff.isInEnterpriseWeChat = / wxwork\\//i.test(ua);\nsniff.isInWeibo = /Weibo/i.test(ua);\nsniff.isInQQ = / QQ\\//i.test(ua);\nsniff.isInQzone = /Qzone\\//i.test(ua); // 腾讯浏览服务(Tencent Browser Service) 简称TBS\n\nsniff.isInTBS = / TBS\\//i.test(ua);\nsniff.isInQQWebBrowser = /MQQBrowser/i.test(ua) && !sniff.isInWeChat && !sniff.isInQQ && !sniff.isInQzone && !sniff.isInTBS; // 百度手机客户端\n\nsniff.isInBaidu = / baiduboxapp\\//i.test(ua); // UC浏览器\n\nsniff.isInUC = / UCBrowser\\//i.test(ua);\nsniff.isInXiaomi = / XiaoMi\\//i.test(ua); // KaKaoTalk\n\nsniff.isInKakaoTalk = /KAKAOTALK/i.test(ua); // Pinterest\n\nsniff.isInPinterest = /Pinterest\\//i.test(ua); // Zalo\n\nsniff.isInZalo = /Zalo/i.test(ua);\nsniff.supportUniversalLink = sniff.iOSVersion >= 9;\n\nfunction getBrowserDesc() {\n if (sniff.isInQQ) {\n return 'qq';\n }\n\n if (sniff.isInWeChat) {\n return 'wechat';\n }\n\n if (sniff.isInQzone) {\n return 'qzone';\n }\n\n if (sniff.isInWeibo) {\n return 'weibo';\n }\n\n if (sniff.isInBaidu) {\n return 'baidu';\n }\n\n if (sniff.isInUC) {\n return 'uc';\n }\n\n if (sniff.isIOS) {\n return 'ios';\n }\n\n if (sniff.isAndroid) {\n return 'android';\n }\n\n return '';\n}\n\nsniff.browserDesc = getBrowserDesc();\n\nfunction getDeviceHeightAndWidth() {\n var result = {\n dph: window && window.screen && window.screen.availHeight || 1,\n dpw: window && window.screen && window.screen.availWidth || 1\n };\n\n if (window.devicePixelRatio !== undefined) {\n result.dph *= window.devicePixelRatio;\n result.dpw *= window.devicePixelRatio;\n }\n\n return result;\n}\n\nsniff.deviceHeightAndWidth = getDeviceHeightAndWidth();\n/* harmony default export */ __webpack_exports__[\"a\"] = (sniff);\n\n/***/ }),\n/* 4 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"b\"] = setUpFunction;\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = register;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__bridge__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils__ = __webpack_require__(0);\n// 普通 api 挂载逻辑\n\n\nvar fns = {};\n\nvar NOOP = function NOOP() {};\n\nvar origin = function origin(o) {\n return o;\n}; // 在内存中构建一个 map,key 对应前端定义的 api,val 对应一个函数(函数主体是对客户端挂载的桥的封装)\n\n\nfunction setUpFunction(key, api, nameSpace) {\n var _this = this;\n\n var conf = this.conf;\n var supportPromise = conf.supportPromise;\n var bridgeName = api.key || key;\n fns[key] = nameSpace ? fns[key] || {} : null;\n var optHandle = api.optHandle || origin;\n\n var func = function func(options) {\n var promiseChain = null;\n var opt = optHandle(options);\n var success = opt.success,\n fail = opt.fail,\n complete = opt.complete;\n\n if (supportPromise && opt && !opt.notPromise && !Object(__WEBPACK_IMPORTED_MODULE_1__utils__[\"j\" /* isFunction */])(success) && !Object(__WEBPACK_IMPORTED_MODULE_1__utils__[\"j\" /* isFunction */])(fail) && !Object(__WEBPACK_IMPORTED_MODULE_1__utils__[\"j\" /* isFunction */])(complete)) {\n promiseChain = new Promise(function (resolve, reject) {\n opt.success = function (ret) {\n Object(__WEBPACK_IMPORTED_MODULE_1__utils__[\"j\" /* isFunction */])(success) && success(ret);\n Object(__WEBPACK_IMPORTED_MODULE_1__utils__[\"j\" /* isFunction */])(resolve) && resolve(ret);\n };\n\n opt.fail = function (err) {\n Object(__WEBPACK_IMPORTED_MODULE_1__utils__[\"j\" /* isFunction */])(fail) && fail(err);\n Object(__WEBPACK_IMPORTED_MODULE_1__utils__[\"j\" /* isFunction */])(reject) && reject(err);\n };\n });\n } else {\n opt.success = opt.success || NOOP;\n opt.fail = opt.fail || NOOP;\n }\n\n __WEBPACK_IMPORTED_MODULE_0__bridge__[\"b\" /* invoke */].call(_this, bridgeName, api, opt);\n conf.debug && alert(\"[Ks-Bridge] Key => \".concat(key, \", BridgeName => \").concat(bridgeName, \", options => \").concat(JSON.stringify(opt)));\n return promiseChain;\n };\n\n if (nameSpace) {\n fns[key][nameSpace] = func;\n } else {\n fns[key] = func;\n }\n} // 在前端全局生成 ksBridge 对象,key 对应定义的 api,val 是一个函数(主体是对 setUpFunction 函数生成的 map 中的函数的一次封装调用)\n\nfunction register(key, nameSpace) {\n var _this2 = this;\n\n var process = function process(opt) {\n var fn = nameSpace ? fns[key][nameSpace] : fns[key];\n\n if (fn) {\n try {\n return fn.call(_this2, opt);\n } catch (e) {\n setTimeout(function () {\n throw e;\n });\n }\n } else {\n // TODO: 处理 api 不存在的情况\n opt && opt.callback && opt.callback(JSON.stringify({\n result: _this2.conf.notSupportErrorCode,\n error_msg: \"\".concat(key, \" not support\")\n }));\n _this2.conf.debug && alert(\"[Ks-Bridge] \\\"\".concat(key, \"\\\" not support!\"));\n }\n };\n\n return function () {\n var option = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return process(option);\n };\n}\n\n/***/ }),\n/* 5 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = getCallback;\n/* harmony export (immutable) */ __webpack_exports__[\"b\"] = invoke;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__ks_yoda_js_sdk__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__ks_yoda_js_sdk___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__ks_yoda_js_sdk__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__ready__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__utils_extend__ = __webpack_require__(1);\n// jsbridge\n\n\n\n\n\nvar NOOP = function NOOP() {};\n\nvar origin = function origin(o) {\n return o;\n};\n\nvar SKIP_PARAM_OPTION_SELF = '__self__';\nfunction getCallback() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var successCb = options.success;\n var failCb = options.fail;\n var completeCb = options.complete;\n delete options.success;\n delete options.fail;\n delete options.complete;\n return function (data) {\n if (!data || data && typeof data === 'boolean') {\n Object(__WEBPACK_IMPORTED_MODULE_1__utils__[\"j\" /* isFunction */])(successCb) && successCb();\n } else if (+data.result === 1) {\n Object(__WEBPACK_IMPORTED_MODULE_1__utils__[\"j\" /* isFunction */])(successCb) && successCb(data);\n } else {\n Object(__WEBPACK_IMPORTED_MODULE_1__utils__[\"j\" /* isFunction */])(failCb) && failCb(data);\n }\n\n Object(__WEBPACK_IMPORTED_MODULE_1__utils__[\"j\" /* isFunction */])(completeCb) && completeCb(data);\n };\n} // 调用 native api\n\nfunction invoke(bridgeName, api, options) {\n var _this = this;\n\n __WEBPACK_IMPORTED_MODULE_2__ready__[\"b\" /* ready */].call(this, function () {\n invokeBridge.call(_this, bridgeName, api, options);\n });\n}\n\nfunction invokeBridge(bridgeName, api, options) {\n var yodaBridge = api.yodaBridge,\n _api$resHandle = api.resHandle,\n resHandle = _api$resHandle === void 0 ? origin : _api$resHandle;\n bridgeName = __WEBPACK_IMPORTED_MODULE_0__ks_yoda_js_sdk___default.a.isInYoda && yodaBridge && yodaBridge.bridge || bridgeName;\n var namespace = this.conf.name || 'Kwai';\n var notDelete = !!options.notDelete;\n var _this$conf = this.conf,\n skipOptionsParam = _this$conf.skipOptionsParam,\n notSupportErrorCode = _this$conf.notSupportErrorCode;\n var opts = {};\n opts = Object(__WEBPACK_IMPORTED_MODULE_3__utils_extend__[\"a\" /* default */])(true, opts, options);\n var skipParamSelf = opts[SKIP_PARAM_OPTION_SELF];\n skipOptionsParam.forEach(function (param) {\n if (opts.hasOwnProperty(param)) {\n delete opts[param];\n }\n });\n var cb = getCallback.call(this, opts);\n\n if (cb) {\n var cbName = Object(__WEBPACK_IMPORTED_MODULE_1__utils__[\"d\" /* generateUUCallbackFunction */])(bridgeName, cb, notDelete, resHandle);\n opts.callback = cbName;\n }\n\n if (!__WEBPACK_IMPORTED_MODULE_0__ks_yoda_js_sdk___default.a.isInYoda && (!window[namespace] || !window[namespace][bridgeName])) {\n // 当该方法不存在时, 直接回调\n handleError();\n return false;\n }\n\n try {\n if (skipParamSelf === false) {\n callNative.call(this, bridgeName, null);\n } else if (__WEBPACK_IMPORTED_MODULE_0__ks_yoda_js_sdk___default.a.isInYoda && yodaBridge) {\n // 针对一些特殊 bridge 需要调 yoda 公共的桥\n callYodaBridge.call(this, yodaBridge, opts);\n } else {\n callNative.call(this, bridgeName, opts);\n }\n } catch (e) {\n // 发生异常, 直接回调\n handleError();\n setTimeout(function () {\n e.message += \" (from window.\".concat(namespace, \".\").concat(bridgeName, \")\"); // 异步上报错误 不阻断当前代码\n\n throw e;\n });\n return false;\n }\n\n function callYodaBridge(yodaBridge, opts) {\n var namespace = yodaBridge.namespace,\n bridge = yodaBridge.bridge;\n var type = opts.type,\n handler = opts.handler,\n callback = opts.callback;\n var handlerFn = window[handler] || NOOP;\n var callbackFn = window[callback] || NOOP;\n var bridgeFn = __WEBPACK_IMPORTED_MODULE_0__ks_yoda_js_sdk___default.a[namespace] && __WEBPACK_IMPORTED_MODULE_0__ks_yoda_js_sdk___default.a[namespace][bridge];\n\n if (Object(__WEBPACK_IMPORTED_MODULE_1__utils__[\"j\" /* isFunction */])(bridgeFn)) {\n // 为方便接入H5秒开方案\n // 在 yoda webview 下对 addEventListener、removeEventListener 进行特殊适配\n if (bridge === 'addEventListener' || bridge === 'removeEventListener') {\n bridgeFn(type, handlerFn, callbackFn);\n } else {\n bridgeFn(opts, callbackFn);\n }\n }\n }\n\n function callNative(bridgeName, params) {\n var _this$conf2 = this.conf,\n name = _this$conf2.name,\n debug = _this$conf2.debug;\n var namespace = name || 'Kwai';\n\n if (__WEBPACK_IMPORTED_MODULE_0__ks_yoda_js_sdk___default.a.isInYoda) {\n var _yodaBridge = __WEBPACK_IMPORTED_MODULE_0__ks_yoda_js_sdk___default.a[namespace] && __WEBPACK_IMPORTED_MODULE_0__ks_yoda_js_sdk___default.a[namespace][bridgeName];\n\n if (Object(__WEBPACK_IMPORTED_MODULE_1__utils__[\"j\" /* isFunction */])(_yodaBridge)) {\n __WEBPACK_IMPORTED_MODULE_0__ks_yoda_js_sdk___default.a[namespace][bridgeName](params, function () {});\n debug && alert(\"[Ks-Bridge] namespace => \".concat(namespace, \" BridgeName => \").concat(bridgeName, \" params => \").concat(params));\n } else {\n // 当该方法不存在时, 直接回调\n handleError();\n debug && alert(\"[Ks-Bridge] yoda.\".concat(namespace, \".\").concat(bridgeName, \" \\u4E0D\\u5B58\\u5728\"));\n }\n } else {\n var strParam;\n\n try {\n strParam = JSON.stringify(params);\n } catch (e) {\n e.message += ' in JSON.stringify';\n throw e;\n }\n\n if (params && strParam) {\n window[namespace][bridgeName](strParam);\n } else {\n window[namespace][bridgeName]();\n }\n }\n }\n\n function handleError() {\n var language = window.navigator && (window.navigator.languages || window.navigator.language) || [];\n var errorMsg = language.length && language.indexOf('zh') === -1 && language.indexOf('zh-CN') === -1 ? 'Error occurred, please upgrade your app' : '出错啦, 请升级客户端至最新版本';\n opts.callback && window[opts.callback] && window[opts.callback](JSON.stringify({\n result: notSupportErrorCode,\n error_msg: errorMsg\n }));\n }\n\n return true;\n}\n\n/***/ }),\n/* 6 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"b\"] = ready;\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = bridgeReadyCheck;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__ks_yoda_js_sdk__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__ks_yoda_js_sdk___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1__ks_yoda_js_sdk__);\n// 桥 ready 检测\n\n // ready之前的缓冲队列\n\nvar queue = [];\nvar times = 0;\nvar self = null;\nvar timeId = null;\nvar interval = 100;\nfunction ready(listener) {\n if (Object(__WEBPACK_IMPORTED_MODULE_0__utils__[\"j\" /* isFunction */])(listener)) {\n if (__WEBPACK_IMPORTED_MODULE_1__ks_yoda_js_sdk___default.a.isInYoda) {\n __WEBPACK_IMPORTED_MODULE_1__ks_yoda_js_sdk___default.a.ready(function () {\n listener();\n });\n } else {\n if (this.isReady) {\n listener();\n } else {\n queue.push(listener);\n }\n }\n }\n} // 1 探测\n\nfunction bridgeReadyCheck() {\n if (!__WEBPACK_IMPORTED_MODULE_1__ks_yoda_js_sdk___default.a.isInYoda) {\n self = this;\n var nameSpace = self.conf.name;\n var checkReadyBridge = self.conf.checkReadyBridge;\n var cbName = Object(__WEBPACK_IMPORTED_MODULE_0__utils__[\"d\" /* generateUUCallbackFunction */])(checkReadyBridge, bridgeReadyCb, false);\n\n try {\n window[nameSpace][checkReadyBridge](\"{\\\"callback\\\":\\\"\".concat(cbName, \"\\\"}\"));\n } catch (e) {\n bridgeReadyCb();\n }\n }\n} // 2 探测结果, 可能继续探测 或 完成\n\nfunction bridgeReadyCb(arg) {\n if (arg) {\n onReady();\n } else {\n times++;\n\n if (times < self.conf.defaultPollingTimes) {\n clearTimeout(timeId);\n timeId = setTimeout(function () {\n bridgeReadyCheck.call(self);\n }, interval);\n } else {\n onReady();\n }\n }\n} // 3 探测结束\n\n\nfunction onReady() {\n timeId = null;\n self.isReady = true; // 执行之前队列\n\n for (var i = 0; i < queue.length; i++) {\n var fn = queue[i];\n fn();\n }\n\n queue = [];\n times = 0;\n}\n\n/***/ }),\n/* 7 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = stringify;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__index__ = __webpack_require__(0);\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n// https://github.com/substack/json-stable-stringify/blob/master/index.js\n// 由于不想依赖 jsonify,直接 copy 了一份主体代码\n\nfunction stringify(obj, opts) {\n if (!opts) {\n opts = {};\n }\n\n if (typeof opts === 'function') {\n opts = {\n cmp: opts\n };\n }\n\n var space = opts.space || '';\n\n if (typeof space === 'number') {\n space = Array(space + 1).join(' ');\n }\n\n var cycles = typeof opts.cycles === 'boolean' ? opts.cycles : false;\n\n var replacer = opts.replacer || function (key, value) {\n return value;\n };\n\n var cmp = opts.cmp && function (f) {\n return function (node) {\n return function (a, b) {\n var aobj = {\n key: a,\n value: node[a]\n };\n var bobj = {\n key: b,\n value: node[b]\n };\n return f(aobj, bobj);\n };\n };\n }(opts.cmp);\n\n var seen = [];\n return function _stringify(parent, key, node, level) {\n var indent = space ? '\\n' + new Array(level + 1).join(space) : '';\n var colonSeparator = space ? ': ' : ':';\n\n if (node && node.toJSON && typeof node.toJSON === 'function') {\n node = node.toJSON();\n }\n\n node = replacer.call(parent, key, node);\n\n if (node === undefined) {\n return '';\n }\n\n if (_typeof(node) !== 'object' || node === null) {\n return JSON.stringify(node);\n }\n\n if (Object(__WEBPACK_IMPORTED_MODULE_0__index__[\"g\" /* isArray */])(node)) {\n var _out = [];\n\n for (var i = 0; i < node.length; i++) {\n var item = stringify(node, i, node[i], level + 1) || JSON.stringify(null);\n\n _out.push(indent + space + item);\n }\n\n return '[' + _out.join(',') + indent + ']';\n }\n\n if (seen.indexOf(node) !== -1) {\n if (cycles) {\n return JSON.stringify('__cycle__');\n }\n\n throw new TypeError('Converting circular structure to JSON');\n } else {\n seen.push(node);\n }\n\n var keys = Object.keys(node).sort(cmp && cmp(node));\n var out = [];\n\n for (var _i = 0; _i < keys.length; _i++) {\n var _key = keys[_i];\n\n var value = _stringify(node, _key, node[_key], level + 1);\n\n if (!value) {\n continue;\n }\n\n var keyValue = JSON.stringify(_key) + colonSeparator + value;\n out.push(indent + space + keyValue);\n }\n\n seen.splice(seen.indexOf(node), 1);\n return '{' + out.join(',') + indent + '}';\n }({\n '': obj\n }, '', obj, 0);\n}\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports) {\n\nvar charenc = {\n // UTF-8 encoding\n utf8: {\n // Convert a string to a byte array\n stringToBytes: function(str) {\n return charenc.bin.stringToBytes(unescape(encodeURIComponent(str)));\n },\n\n // Convert a byte array to a string\n bytesToString: function(bytes) {\n return decodeURIComponent(escape(charenc.bin.bytesToString(bytes)));\n }\n },\n\n // Binary encoding\n bin: {\n // Convert a string to a byte array\n stringToBytes: function(str) {\n for (var bytes = [], i = 0; i < str.length; i++)\n bytes.push(str.charCodeAt(i) & 0xFF);\n return bytes;\n },\n\n // Convert a byte array to a string\n bytesToString: function(bytes) {\n for (var str = [], i = 0; i < bytes.length; i++)\n str.push(String.fromCharCode(bytes[i]));\n return str.join('');\n }\n }\n};\n\nmodule.exports = charenc;\n\n\n/***/ }),\n/* 9 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__index__ = __webpack_require__(10);\n\nvar ksBridge = new __WEBPACK_IMPORTED_MODULE_0__index__[\"a\" /* default */]();\nksBridge.config();\n\nif (window !== undefined) {\n window.ksBridge = ksBridge;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (ksBridge);\n\n/***/ }),\n/* 10 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return KsBridge; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_extend__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__lib_sniff__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__lib_init__ = __webpack_require__(11);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__lib_register__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__lib_bridge__ = __webpack_require__(5);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__utils__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__utils_request__ = __webpack_require__(143);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__utils_stringify__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__utils_logger__ = __webpack_require__(145);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__ks_yoda_js_sdk__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__ks_yoda_js_sdk___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_9__ks_yoda_js_sdk__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10_md5__ = __webpack_require__(146);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10_md5___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_10_md5__);\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n// KsBridge\n\n\n\n\n\n\n\n\n\n\n // 表示options自己,就是不要传参的意思\n\nvar SKIP_PARAM_OPTION_SELF = '__self__';\nvar DEFAULT_CONFIG = {\n version: \"2.0.3\" || '0.0.0',\n name: 'Kwai',\n notSupportErrorCode: 118003,\n appType: Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"e\" /* getUrlParam */])('appType'),\n // 默认不需要传给客户端的参数,只给前端使用的\n // 例如是否强制fallback,回调函数是否常驻内存,\n // 以及是否有些桥不让传参(这是早期约定的问题,居然还有这种约定。。。。变参。。。。。,android某些bridge不让传参)\n skipOptionsParam: ['notDelete', SKIP_PARAM_OPTION_SELF],\n supportPromise: false,\n hasNameSpace: false,\n // 检查桥是否 ready 时默认的轮询次数\n defaultPollingTimes: 10,\n checkReadyBridge: 'gete2',\n // radar项目ID\n radarProjectId: '',\n debug: false\n};\nvar PRELOAD_REQUEST_EVENT_MAP = {};\nvar isListenDataFetchChange = false;\n\nfunction checkRunEnv() {\n var ua = navigator && navigator.userAgent; // 直播伴侣\n\n if (/ livemate\\//.test(ua)) {\n DEFAULT_CONFIG.name = 'livemate';\n }\n}\n\nvar KsBridge = /*#__PURE__*/function () {\n function KsBridge() {\n _classCallCheck(this, KsBridge);\n\n checkRunEnv();\n this.conf = Object(__WEBPACK_IMPORTED_MODULE_0__utils_extend__[\"a\" /* default */])(true, {}, DEFAULT_CONFIG);\n this.isInit = false;\n this.isReady = false;\n this.sniff = __WEBPACK_IMPORTED_MODULE_1__lib_sniff__[\"a\" /* default */];\n this.plugins = [];\n this.generateUUCallbackFunction = __WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* generateUUCallbackFunction */];\n this.yodaApiMap = {};\n this.yoda = __WEBPACK_IMPORTED_MODULE_9__ks_yoda_js_sdk___default.a;\n }\n /**\n * 配置 KsBridge
\n * 使用场景:对 KsBridge 默认配置项进行覆盖。
\n * 对接人: fangchangquan\n * @method ksBridge.config\n * @category Base\n * @version >=1.0.0\n * @example ./config.demo\n * @demo base/config\n * @description\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | debug | Bool | 是否支持调试模式 | X | 常用参数,默认false |\n * | name | String | 客户端在 window 上挂载的变量名,如果是其他客户端,例如直播伴侣,可以指定 'livemate' | X | 默认是 'Kwai' |\n * | supportPromise | Bool | 是否开启 promise,取代传统的回调方式,部分 bridge 不支持,具体使用细节请查看下方说明,从 1.0.13 版本开始支持 | X | 默认是 false |\n * | checkReadyBridge | string | bridge 名,用于 ks-bridge 内部检查当前桥的注入是否 ready,如果需要修改,请注意不要使用会引起 UI 变化的 bridge | X |默认是 gete2 |\n * | logSampleRate | number | bridge 调用打点日志上报采样率 | X | v2.0.2 已下线,不再上报日志;v2.0.0、v2.0.1 版本默认为 0.5,即 50%;v1.x 版本(除1.0.17)默认为 1,即 100%;v1.0.17 版默认值为 0.01(春节版本) |\n * | logDelay | number | bridge 调用打点日志上报延迟时间设置 | X| v2.0.2 已下线,不再上报日志;v2.0.0、v2.0.1 版本默认 2000,即2s |\n *\n * **说明**:\n * + 不是所有 bridge 均支持 promise 方式调用,只支持“可以被 Promise 化”的 bridge,可以理解为”回调期望被调用一次且仅一次“的 bridge\n * + 不支持 promise 的 bridge:同步方法(没有回调);回调期望被调用多次的异步方法,如 postVideo bridge 的回调会持续触发,直至上传完成\n * + 使用示例请参考 getDeviceInfo 和 commonShare bridge 的示例 demo\n *\n * 不支持 promise 的 api:\n * + 同步方法:startGatewayWithdraw、startPlayLongVideo、collapseKeyboard、setPageTitle、setStatusBarStyle、showToast、exitWebView、loadUrlOnNewPage、popBack、setMiddleSlideBack、setSlideBack、previewIntownVideo\n * + 多次回调的方法:download、postVideo、verifyThirdPartyLogin、setPhysicalBackButton、setTopLeftBtn、setTopLeftSecondBtn、\n * setTopRightBtn、setTopRightSecondBtn、showAlertDialog、showConfirmDialog、showDialog、emit、on、off、reuploadIntownVideo、uploadIntownVideo、downloadThirdPartyAPP\n * + 如有遗漏,欢迎补充\n *\n */\n\n\n _createClass(KsBridge, [{\n key: \"config\",\n value: function config(conf) {\n var _this = this;\n\n if (!this.isInit || conf) {\n var config = Object(__WEBPACK_IMPORTED_MODULE_0__utils_extend__[\"a\" /* default */])(true, {}, this.conf, conf) || {};\n this.conf = config;\n this.isInit = true;\n config.debug && alert(\"\\u8C03\\u7528 config\\uFF0C\\u53C2\\u6570\\uFF1A\".concat(JSON.stringify(conf)));\n this.plugins.forEach(function (plugin) {\n plugin.call(_this, config);\n });\n __WEBPACK_IMPORTED_MODULE_2__lib_init__[\"a\" /* default */].call(this, config);\n\n if (__WEBPACK_IMPORTED_MODULE_9__ks_yoda_js_sdk___default.a.isInYoda) {\n // 获取 bridge 列表,用于 isSupport\n __WEBPACK_IMPORTED_MODULE_9__ks_yoda_js_sdk___default.a.ready(function () {\n __WEBPACK_IMPORTED_MODULE_9__ks_yoda_js_sdk___default.a.tool.getApiList({}, function (_ref) {\n var result = _ref.result,\n apiList = _ref.apiList;\n\n if (result === 1) {\n apiList.forEach(function (api) {\n var namespace = api.namespace,\n name = api.name;\n _this.yodaApiMap[namespace] = _this.yodaApiMap[namespace] || [];\n\n _this.yodaApiMap[namespace].push(name);\n });\n }\n });\n });\n }\n }\n } // 拓展插件\n\n }, {\n key: \"plugin\",\n value: function plugin(_plugin) {\n Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"j\" /* isFunction */])(_plugin) && this.plugins.push(_plugin);\n } // 临时注册客户端 api,避免每加一个 api 都要发版\n\n /**\n * 通过register扩展接口
\n * 使用场景:临时向 KsBridge 上挂载一个 api,避免每新增一个 api,都需要 KsBridge 发版
\n * 对接人: fangchangquan\n * @method ksBridge.register\n * @category Base\n * @version >=1.0.0\n * @example ./register.demo\n * @demo base/register\n * @description\n * \n * 调用参数:\n * \n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | name | String | 接口名称 | √ | 常用参数 |\n * | bridgeName | String | 对应native桥名字 | √ | 常用参数 |\n * | namespace | String | 命名空间 | x | 常用参数,默认无 |\n * | option | Object | native桥额外配置 | x | 默认值为 { notDelete: false } |\n * \n * 注意事项:\n * **一定记得先注册再使用,否则会报undefined**\n */\n\n }, {\n key: \"register\",\n value: function register(name, bridgeName) {\n var namespace = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n var option = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {\n notDelete: false\n };\n\n if (!name || !bridgeName) {\n console.error('参数name、bridgeName必传'); // eslint-disable-line\n\n return;\n }\n\n var api = {\n key: bridgeName\n }; // TODO: 这里实现总觉得不优雅,后续期望能有更好的实现方式\n\n api.optHandle = function (opt) {\n opt = Object(__WEBPACK_IMPORTED_MODULE_0__utils_extend__[\"a\" /* default */])(true, opt, option);\n\n if (opt.onClick) {\n opt.onClick = Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* generateUUCallbackFunction */])(name, opt.onClick, true);\n }\n\n if (opt.handler) {\n opt.handler = Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"c\" /* generateHandlerFunction */])(name, opt.handler, true);\n }\n\n return opt;\n };\n\n var self = this;\n this._apis = this._apis || {};\n __WEBPACK_IMPORTED_MODULE_3__lib_register__[\"b\" /* setUpFunction */].call(this, name, api, namespace);\n\n if (namespace) {\n this[namespace] = this[namespace] || {};\n this._apis[namespace] = this._apis[namespace] || {};\n this._apis[namespace][name] = api;\n self = this[namespace];\n } else {\n this._apis[name] = api;\n }\n\n self[name] = __WEBPACK_IMPORTED_MODULE_3__lib_register__[\"a\" /* register */].call(this, name, namespace);\n }\n /**\n * 检查是否支持指定JS接口
\n * 使用场景:在不确定当前客户端对API支持情况下检测
\n * 注意:Yoda 容器下请直接使用isSupportAsync,原因详见文档
\n * 对接人: fangchangquan\n * @method ksBridge.isSupport\n * @category Base\n * @version >=1.0.0\n * @example ./isSupport.demo\n * @demo base/isSupport\n * @description\n *\n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | api | String | api 名字 | √ | - |\n * | namespace | String | api 命名空间,当通过 register 方法注册的 api 时指定了命名空间,检测时也要指定,其他情况不要传该值,参考示例3 | X | - |\n *\n * 返回参数:\n * 直接返回一个布尔值,true 表示支持,false 表示不支持\n */\n\n }, {\n key: \"isSupport\",\n value: function isSupport() {\n var api = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var namespace = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var res = false;\n\n if (!api) {\n this.conf.debug && alert('api 为必传参数');\n }\n\n var apis = this._apis && namespace ? this._apis[namespace] : this._apis;\n\n if (!apis || !apis[api]) {\n this.conf.debug && alert(\"\\u8BF7\\u68C0\\u67E5 \".concat(api, \" \\u662F\\u5426\\u5C01\\u88C5\"));\n return res;\n }\n\n var bridgeName = apis[api].key || api;\n\n try {\n var name = this.conf.name || 'Kwai';\n\n if (__WEBPACK_IMPORTED_MODULE_9__ks_yoda_js_sdk___default.a.isInYoda) {\n var apiList = this.yodaApiMap[name];\n res = Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"g\" /* isArray */])(apiList) && apiList.indexOf(bridgeName) > -1;\n } else {\n res = !!window[name][bridgeName];\n }\n } catch (e) {// nothing\n }\n\n return res;\n }\n /**\n * 检查是否支持指定JS接口
\n * 使用场景:在不确定当前客户端对API支持情况下检测,异步返回结果
\n * 注意:isSupportAsync 传参格式与 isSupport 不同,具体参见示例
\n * 对接人: fangchangquan\n * @method ksBridge.isSupportAsync\n * @category Base\n * @version >=2.0.0\n * @example ./isSupportAsync.demo\n * @demo base/isSupportAsync\n * @description\n *\n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | api | String | api 名字 | √ | - |\n * | namespace | String | api 命名空间,当通过 register 方法注册的 api 时指定了命名空间,检测时也要指定,其他情况不要传该值,参考示例3 | X | - |\n *\n * 返回参数:\n * \n * 返回值为一个布尔值,isSupportAsync 支持 promise,具体调用参照示例\n */\n\n }, {\n key: \"isSupportAsync\",\n value: function isSupportAsync(param) {\n var ns = this.conf.name || 'Kwai';\n var cb = __WEBPACK_IMPORTED_MODULE_4__lib_bridge__[\"a\" /* getCallback */].call(this, param, ns, 'isSupportAsync');\n var _param$namespace = param.namespace,\n namespace = _param$namespace === void 0 ? '' : _param$namespace,\n _param$api = param.api,\n api = _param$api === void 0 ? '' : _param$api;\n\n if (!api) {\n this.conf.debug && alert('api 为必传参数');\n }\n\n var apis = this._apis && namespace ? this._apis[namespace] : this._apis;\n var bridgeName = apis && apis[api] && apis[api].key || api;\n var returnPromise;\n var res;\n\n if (__WEBPACK_IMPORTED_MODULE_9__ks_yoda_js_sdk___default.a.isInYoda) {\n return __WEBPACK_IMPORTED_MODULE_9__ks_yoda_js_sdk___default.a.ready().then(function () {\n return __WEBPACK_IMPORTED_MODULE_9__ks_yoda_js_sdk___default.a.tool.canIUse({\n namespace: ns,\n name: bridgeName\n });\n }).then(function (ret) {\n res = !!(ret && ret.result === 1 && ret.canUse);\n returnPromise = new Promise(function (resolve) {\n return resolve(res);\n });\n cb(res);\n return returnPromise;\n });\n }\n\n res = !!(window[ns] && window[ns][bridgeName]);\n returnPromise = new Promise(function (resolve) {\n return resolve(res);\n });\n cb(res);\n return returnPromise;\n }\n /**\n * 接口请求
\n * 使用场景:接入接口预加载时使用
\n * 对接人: fangchangquan\n * @method ksBridge.request\n * @category Base\n * @version >=2.0.2\n * @example ./request.demo\n * @demo base/request\n * @description\n *\n * 调用参数:\n *\n * | 参数 | 类型 | 默认值 | 是否必填 | 说明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | url | string | - | √ | 请求地址 |\n * | method | string | POST | √ | 请求方法 |\n * | data | string | - | X | 请求的参数,一期仅支持 json string |\n * | headers\t| Object | { 'content-type': 'application/json' } | X | 设置请求的 headers,其中 content-type 默认为 application/json |\n * | timeout | number | 30000 | X | 超时时间,单位为毫秒 |\n * | responseType | string | json | X | 响应的数据类型,一期仅支持 json、text |\n * | preloadType | string | - | X | 预加载请求类型 |\n * | forceFallback | boolean | false | X | 强制不走桥发请求 |\n * \n * 返回参数:\n * \n * | 参数 | 类型 | 说明 |\n * | :--: | :--: | :--: |\n * | result | number | bridge 调用返回 code,1 表示调用成功,其他值表示调用异常 |\n * | data | string/Object | 开发者服务器返回的数据 |\n * | statusCode | number | 开发者服务器返回的 HTTP 状态码 |\n * | headers | Object\t | 开发者服务器返回的 HTTP Response Header |\n * \n * 需求设计[文档](https://wiki.corp.kuaishou.com/pages/viewpage.action?pageId=498181222)\n */\n\n }, {\n key: \"request\",\n value: function request() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _this$conf = this.conf,\n debug = _this$conf.debug,\n notSupportErrorCode = _this$conf.notSupportErrorCode,\n radarProjectId = _this$conf.radarProjectId;\n var callback = __WEBPACK_IMPORTED_MODULE_4__lib_bridge__[\"a\" /* getCallback */].call(this, params);\n var PROXYTYPE_PRELOAD = 1;\n var PROXYTYPE_REQUEST = 2;\n var PROXYTYPE_PRELOAD_AND_REQUEST = 3;\n var ua = navigator.userAgent || '';\n\n var _ref2 = ua.match(/Yoda\\/([\\d+.*]+)/) || [],\n _ref3 = _slicedToArray(_ref2, 2),\n _ref3$ = _ref3[1],\n appVer = _ref3$ === void 0 ? '' : _ref3$;\n\n var defaultVer = '1.2.1';\n var _params$url = params.url,\n url = _params$url === void 0 ? '' : _params$url;\n\n if (!url) {\n callback({\n result: notSupportErrorCode,\n error_msg: '调用参数异常'\n });\n return;\n } // 当业务调用时传入相对路径地址,默认为其拼接上当前页面的 origin\n\n\n params.url = Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"f\" /* isAbsoluteUrl */])(url) ? url : location.origin + url;\n params.method = params.method || 'POST';\n params.proxyType = Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"l\" /* isUndefined */])(params.proxyType) && PROXYTYPE_PRELOAD_AND_REQUEST || params.proxyType;\n params.preloadType = params.preloadType || 'update';\n\n try {\n // 桥调用参数需要额外处理下,包括按字母排序后转成 json string\n // 因为生成 reqMd5 需要,所以提前处理下\n params.data = params.data && Object(__WEBPACK_IMPORTED_MODULE_7__utils_stringify__[\"a\" /* default */])(params.data) || '';\n } catch (e) {\n params.data = '';\n }\n\n var reqMd5 = __WEBPACK_IMPORTED_MODULE_10_md5___default()(params.data + params.method + params.url);\n\n if (!PRELOAD_REQUEST_EVENT_MAP[reqMd5]) {\n PRELOAD_REQUEST_EVENT_MAP[reqMd5] = {\n callback: callback,\n startTime: new Date().getTime()\n };\n }\n\n var DATAFETCHCHANGE_EVENT = 'data-fetch-change';\n var logParam = {\n category: 'yoda_request',\n src: params.url,\n extra_info: JSON.stringify(params)\n };\n\n function h5Request(params) {\n var headers = params.headers,\n proxyType = params.proxyType,\n preloadType = params.preloadType;\n var reqParams = Object(__WEBPACK_IMPORTED_MODULE_0__utils_extend__[\"a\" /* default */])(true, params, {\n headers: headers\n });\n var isUpdateData = (proxyType === PROXYTYPE_PRELOAD || proxyType === PROXYTYPE_PRELOAD_AND_REQUEST) && preloadType === 'offline-first';\n return Object(__WEBPACK_IMPORTED_MODULE_6__utils_request__[\"a\" /* default */])(reqParams).then(function (res) {\n res.isUpdateData = isUpdateData;\n callback(res);\n return res;\n }).catch(function (err) {\n // eslint-disable-next-line\n debug && console.log(err);\n var res = {\n result: notSupportErrorCode,\n error_msg: 'h5 ajax请求异常',\n isUpdateData: isUpdateData\n };\n callback(res);\n return res;\n }).then(function (res) {\n var result = res.result,\n error_msg = res.error_msg;\n var eventType = [proxyType, preloadType];\n Object(__WEBPACK_IMPORTED_MODULE_8__utils_logger__[\"a\" /* sendEventLog */])(radarProjectId, _objectSpread(_objectSpread({}, logParam), {}, {\n name: 'yoda_request_h5',\n event_type: eventType.filter(function (v) {\n return !Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"l\" /* isUndefined */])(v);\n }).join('_') || '',\n result_type: result,\n message: error_msg || ''\n }), PRELOAD_REQUEST_EVENT_MAP[reqMd5].startTime);\n });\n }\n\n if (__WEBPACK_IMPORTED_MODULE_9__ks_yoda_js_sdk___default.a.isInYoda && !params.forceFallback) {\n __WEBPACK_IMPORTED_MODULE_9__ks_yoda_js_sdk___default.a.ready(function () {\n function eventHandler(ret) {\n var _ref4 = ret || {},\n result = _ref4.result,\n requestId = _ref4.requestId; // 当 js-sdk 外部已监听 data-fetch-change 事件,sdk 内部监听的事件回调逻辑直接跳过\n\n\n var listeners = __WEBPACK_IMPORTED_MODULE_9__ks_yoda_js_sdk___default.a._eventListeners && __WEBPACK_IMPORTED_MODULE_9__ks_yoda_js_sdk___default.a._eventListeners[DATAFETCHCHANGE_EVENT] || {};\n\n if (Object.keys(listeners).length > 1) {\n return;\n }\n\n if (result === 1) {\n if (requestId !== PRELOAD_REQUEST_EVENT_MAP[reqMd5].requestId) {\n return;\n }\n\n var _params = Object(__WEBPACK_IMPORTED_MODULE_0__utils_extend__[\"a\" /* default */])(true, {}, params);\n\n _params.preloadType = 'offline-first';\n __WEBPACK_IMPORTED_MODULE_9__ks_yoda_js_sdk___default.a.network.request(_params, function (res) {\n var result = res.result,\n headers = res.headers,\n message = res.message;\n var responseType = headers && headers['yoda-response-type'];\n var fn = PRELOAD_REQUEST_EVENT_MAP[reqMd5] && PRELOAD_REQUEST_EVENT_MAP[reqMd5].callback; // request 桥调用日志\n\n Object(__WEBPACK_IMPORTED_MODULE_8__utils_logger__[\"a\" /* sendEventLog */])(radarProjectId, _objectSpread(_objectSpread({}, logParam), {}, {\n name: 'yoda_request',\n event_type: '',\n result_type: result,\n message: message || '',\n extra_info: JSON.stringify(_params)\n })); // request 桥预取结果日志\n\n var eventType = [_params.proxyType, _params.preloadType, responseType];\n Object(__WEBPACK_IMPORTED_MODULE_8__utils_logger__[\"a\" /* sendEventLog */])(radarProjectId, _objectSpread(_objectSpread({}, logParam), {}, {\n name: 'yoda_request_prefetch',\n event_type: eventType.filter(function (v) {\n return !Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"l\" /* isUndefined */])(v);\n }).join('_') || '',\n result_type: result,\n message: message || '',\n extra_info: JSON.stringify(_params)\n }), PRELOAD_REQUEST_EVENT_MAP[reqMd5].startTime);\n\n if (Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"j\" /* isFunction */])(fn)) {\n // res.isUpdateData true表示第二次触发回调,更新数据\n res.isUpdateData = true;\n fn(res);\n delete PRELOAD_REQUEST_EVENT_MAP[reqMd5];\n }\n\n if (!Object.keys(PRELOAD_REQUEST_EVENT_MAP).length) {\n __WEBPACK_IMPORTED_MODULE_9__ks_yoda_js_sdk___default.a.event.removeEventListener(DATAFETCHCHANGE_EVENT, eventHandler);\n isListenDataFetchChange = false;\n }\n });\n } else {\n h5Request(params);\n }\n }\n\n __WEBPACK_IMPORTED_MODULE_9__ks_yoda_js_sdk___default.a.tool.canIUse({\n namespace: 'network',\n name: 'request'\n }, function (_ref5) {\n var result = _ref5.result,\n canUse = _ref5.canUse;\n // ios 下 yoda sdk 低于 defaultVer 1.2.1 的客户端,当调用 ksBridge.request 传的 preloadType 参数不是 update/offline-first 时,强制走 h5 ajax请求\n var proxyType = params.proxyType,\n preloadType = params.preloadType;\n var isSupportForIOS = !(__WEBPACK_IMPORTED_MODULE_1__lib_sniff__[\"a\" /* default */].isIOS && Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"b\" /* compareVersion */])(appVer, defaultVer) < 0 && preloadType !== 'update' && preloadType !== 'offline-first');\n\n if (result === 1 && canUse && isSupportForIOS) {\n // eslint-disable-next-line\n debug && console.log('request 调用参数:', params);\n\n if (!isListenDataFetchChange) {\n isListenDataFetchChange = true;\n __WEBPACK_IMPORTED_MODULE_9__ks_yoda_js_sdk___default.a.event.addEventListener(DATAFETCHCHANGE_EVENT, eventHandler);\n }\n\n __WEBPACK_IMPORTED_MODULE_9__ks_yoda_js_sdk___default.a.network.request(params, function (res) {\n var result = res.result,\n headers = res.headers,\n message = res.message;\n var responseType = headers && headers['yoda-response-type']; // eslint-disable-next-line\n\n debug && console.log('request 桥回调参数:', res);\n\n if (result === 1) {\n PRELOAD_REQUEST_EVENT_MAP[reqMd5].requestId = headers && headers['yoda-request-id'];\n callback(res);\n } else {\n // 当桥回调返回参数的 result 非 1 时 fallback 到 h5 发请求\n h5Request(params);\n } // request 桥调用日志\n\n\n Object(__WEBPACK_IMPORTED_MODULE_8__utils_logger__[\"a\" /* sendEventLog */])(radarProjectId, _objectSpread(_objectSpread({}, logParam), {}, {\n name: 'yoda_request',\n event_type: '',\n result_type: result,\n message: message || ''\n })); // request 桥调用结果日志\n\n var name = proxyType === PROXYTYPE_REQUEST ? 'yoda_request_online' : 'yoda_request_prefetch';\n var eventType = proxyType === PROXYTYPE_REQUEST ? [proxyType] : [proxyType, preloadType, responseType];\n Object(__WEBPACK_IMPORTED_MODULE_8__utils_logger__[\"a\" /* sendEventLog */])(radarProjectId, _objectSpread(_objectSpread({}, logParam), {}, {\n name: name,\n event_type: eventType.filter(function (v) {\n return !Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"l\" /* isUndefined */])(v);\n }).join('_') || '',\n result_type: result,\n message: message || ''\n }), PRELOAD_REQUEST_EVENT_MAP[reqMd5].startTime);\n });\n } else {\n // 当 request 不支持调用时 fallback 到 h5 发请求\n h5Request(params);\n }\n });\n });\n } else {\n // 非 yoda 环境或强行forceFallback设置时 fallback 到 h5 发请求\n h5Request(params);\n }\n }\n }]);\n\n return KsBridge;\n}();\n\n\n\n/***/ }),\n/* 11 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = init;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_extend__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__apis__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__register__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__ready__ = __webpack_require__(6);\n// 初始化\n\n\n\n\nfunction init() {\n var _this = this;\n\n this._apis = {};\n var hasNameSpace = this.conf.hasNameSpace;\n var self = this;\n Object.keys(__WEBPACK_IMPORTED_MODULE_1__apis__[\"a\" /* default */]).forEach(function (nameSpace) {\n // TODO: 需要确认下是否符合当时定的动态支持命名空间的预期\n var ns = hasNameSpace ? nameSpace : '';\n var apiList = __WEBPACK_IMPORTED_MODULE_1__apis__[\"a\" /* default */][nameSpace];\n _this._apis = Object(__WEBPACK_IMPORTED_MODULE_0__utils_extend__[\"a\" /* default */])(true, _this._apis, apiList);\n _this._apis[nameSpace] = apiList;\n\n if (hasNameSpace) {\n _this[nameSpace] = _this[nameSpace] || {};\n self = _this[nameSpace];\n }\n\n Object.keys(apiList).forEach(function (key) {\n __WEBPACK_IMPORTED_MODULE_2__register__[\"b\" /* setUpFunction */].call(_this, key, apiList[key], ns);\n var fn = __WEBPACK_IMPORTED_MODULE_2__register__[\"a\" /* register */].call(_this, key, ns);\n self[key] = fn;\n });\n });\n __WEBPACK_IMPORTED_MODULE_3__ready__[\"a\" /* bridgeReadyCheck */].call(this);\n}\n\n/***/ }),\n/* 12 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_extend__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__component__ = __webpack_require__(13);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__data__ = __webpack_require__(64);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__page__ = __webpack_require__(71);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__system__ = __webpack_require__(74);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__ui__ = __webpack_require__(87);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__webview__ = __webpack_require__(106);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__event__ = __webpack_require__(118);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__intown__ = __webpack_require__(125);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__third__ = __webpack_require__(131);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__merchant__ = __webpack_require__(135);\n\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Object(__WEBPACK_IMPORTED_MODULE_0__utils_extend__[\"a\" /* default */])(true, __WEBPACK_IMPORTED_MODULE_1__component__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_2__data__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_3__page__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_4__system__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_5__ui__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_6__webview__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_7__event__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_8__intown__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_9__third__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_10__merchant__[\"a\" /* default */]));\n\n/***/ }),\n/* 13 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_extend__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__runSequencialTasks__ = __webpack_require__(14);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__verifyRealNameInfo__ = __webpack_require__(15);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__selectImage__ = __webpack_require__(16);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__selectAndUploadMedia__ = __webpack_require__(17);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__postVideo__ = __webpack_require__(18);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__bindWithdrawType__ = __webpack_require__(19);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__injectCookie__ = __webpack_require__(20);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__verifySMSCode__ = __webpack_require__(21);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__socialShare__ = __webpack_require__(22);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__fansTopPay__ = __webpack_require__(23);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__couponPay__ = __webpack_require__(24);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__commonShare__ = __webpack_require__(25);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__startGatewayPay__ = __webpack_require__(26);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__startPlayLongVideo__ = __webpack_require__(27);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__startAudioRecord__ = __webpack_require__(28);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_16__login__ = __webpack_require__(29);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_17__logout__ = __webpack_require__(30);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_18__deleteAccount__ = __webpack_require__(31);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_19__verifyThirdPartyLogin__ = __webpack_require__(32);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_20__selectCountryPhoneCode__ = __webpack_require__(33);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_21__captureCertVideo__ = __webpack_require__(34);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_22__uploadCertVideo__ = __webpack_require__(35);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_23__uploadContacts__ = __webpack_require__(36);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_24__sendSMS__ = __webpack_require__(37);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_25__decryptContactsName__ = __webpack_require__(38);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_26__bindPhone__ = __webpack_require__(39);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_27__download__ = __webpack_require__(40);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_28__selectCity__ = __webpack_require__(41);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_29__verifyLiveUser__ = __webpack_require__(42);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_30__publishWorks__ = __webpack_require__(43);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_31__verifyAccount__ = __webpack_require__(44);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_32__enterGroupChat__ = __webpack_require__(45);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_33__startGatewayWithdraw__ = __webpack_require__(46);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_34__saveImage__ = __webpack_require__(47);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_35__sendImFriendMessage__ = __webpack_require__(48);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_36__selectScreenshot__ = __webpack_require__(49);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_37__wechatLogin__ = __webpack_require__(50);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_38__authThirdPartyAccount__ = __webpack_require__(51);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_39__downloadProgress__ = __webpack_require__(52);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_40__installApk__ = __webpack_require__(53);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_41__iAPCurrency__ = __webpack_require__(54);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_42__share__ = __webpack_require__(55);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_43__businessAction__ = __webpack_require__(56);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_44__startDeposit__ = __webpack_require__(57);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_45__startKspayOrderPrepay__ = __webpack_require__(58);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_46__setPageFollowRefer__ = __webpack_require__(59);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_47__authorizationStatusForCalendar__ = __webpack_require__(60);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_48__changeEventForCalendar__ = __webpack_require__(61);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_49__renderImage__ = __webpack_require__(62);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_50__requestFollowUserV2__ = __webpack_require__(63);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar component = Object(__WEBPACK_IMPORTED_MODULE_0__utils_extend__[\"a\" /* default */])(true, __WEBPACK_IMPORTED_MODULE_50__requestFollowUserV2__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_49__renderImage__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_48__changeEventForCalendar__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_47__authorizationStatusForCalendar__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_46__setPageFollowRefer__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_45__startKspayOrderPrepay__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_44__startDeposit__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_43__businessAction__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_41__iAPCurrency__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_40__installApk__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_39__downloadProgress__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_38__authThirdPartyAccount__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_37__wechatLogin__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_36__selectScreenshot__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_35__sendImFriendMessage__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_34__saveImage__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_33__startGatewayWithdraw__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_32__enterGroupChat__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_19__verifyThirdPartyLogin__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_16__login__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_17__logout__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_18__deleteAccount__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_20__selectCountryPhoneCode__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_21__captureCertVideo__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_22__uploadCertVideo__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_2__verifyRealNameInfo__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_3__selectImage__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_4__selectAndUploadMedia__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_5__postVideo__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_26__bindPhone__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_23__uploadContacts__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_31__verifyAccount__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_24__sendSMS__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_25__decryptContactsName__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_9__socialShare__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_12__commonShare__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_6__bindWithdrawType__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_27__download__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_7__injectCookie__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_10__fansTopPay__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_11__couponPay__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_13__startGatewayPay__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_14__startPlayLongVideo__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_15__startAudioRecord__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_8__verifySMSCode__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_1__runSequencialTasks__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_28__selectCity__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_29__verifyLiveUser__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_30__publishWorks__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_42__share__[\"a\" /* default */]);\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n component: component\n});\n\n/***/ }),\n/* 14 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 执行任务队列
\n * 对应native接口:runSequencialTasks
\n * 支持版本:客户端2017.11.28版本
\n * 对接人: songyunlu\n * @method ksBridge.runSequencialTasks\n * @category Component\n * @version >=1.0.0\n * @example ./apis/component/runSequencialTasks.demo\n * @demo component/runSequencialTasks\n * @description\n *\n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | tasks | Array | 任务数组 | √ | task目前只支持示例代码中的几种类型,可以为一个,也可以为多个,调用顺序严格按照tasks数组里的顺序执行,数组元素:{ taskName: 'bindPhone', info: '绑定手机号,确认你的直播账号安全' } |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n *\n * 返回参数:\n * ```\n * {\n * // result 四种结果:1: 成功、0: 用户取消、其他:出错、100: 无法识别task\n * result: 1,\n * error_msg: '',\n * }\n * ```\n */\n runSequencialTasks: true\n});\n\n/***/ }),\n/* 15 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 调起腾讯实名认证服务(直播认证)
\n * 对应native接口:verifyRealNameInfo
\n * 支持版本:客户端17年6月版本
\n * 注意:需要登录
\n * 对接人: songyunlu\n * @method ksBridge.verifyRealNameInfo\n * @category Component\n * @version >=1.0.0\n * @example ./apis/component/verifyRealNameInfo.demo\n * @demo component/verifyRealNameInfo\n * @description\n *\n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | data | Object | 腾讯实名认证SDK所需字段 | √ | - |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n *\n * 返回参数:\n * ```\n * {\n * //result 不为1时返回错误信息(国际化)\n * result: 1,\n * error_msg: '',\n * }\n * ```\n */\n verifyRealNameInfo: true\n});\n\n/***/ }),\n/* 16 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils__ = __webpack_require__(0);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 从系统相册选择图片
\n * 对应native接口:selectImage
\n * 注意:从18年8月,开始支持上传多张,并多次触发回调
\n * 支持版本:客户端2017.6月版本
\n * 对接人: songyunlu\n * @method ksBridge.selectImage\n * @category Component\n * @version >=1.0.0\n * @example ./apis/component/selectImage.demo\n * @demo component/selectImage\n * @description\n *\n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | count | Number | 选择图片数量 | X | |\n * | sourceType | Array | 可以指定来源是相册还是相机,默认二者都有 | X | 默认 ['album', 'camera'] |\n * | maxFileSize | Number | 字节单位 | X | 不存在则为不限制,原图超过该值时自动压缩 |\n * | maxWidth | Number | 像素单位 | X | 不存在则为不限制,原图超过该值时自动压缩,建议设置,否则图太大 |\n * | maxHeight | Number | 像素单位 | X | 不存在则为不限制,原图超过该值时自动压缩,建议设置,否则图太大 |\n * | title | String | 设置 naviBar 的 title 文案 | X | Android 6.4.2,ios 6.4.1 版本开始支持 |\n * | confirmTitle | String | 完成按钮文案 | X | Android 6.4.2,ios 6.4.1 版本开始支持 |\n * | minFileSize | Number | 最小文件大小,不传不限制 | X | 预计 8.1.10 支持 |\n * | minSizeAlert | string | 没达到最小size时,toast文案,不传不弹toast | X | 预计 8.1.10 支持 |\n * | minWidth | Number | 最小图片/视频宽度,不传不限制 | X | 预计 8.1.10 支持 |\n * | minHeight | Number | 最小图片/视频高度,不传不限制 | X | 预计 8.1.10 支持 |\n * | minHeightWidthAlert | String | 没达到最小宽度或高度时,toast文案,不传不弹toast | X | 预计 8.1.10 支持 |\n * | selectedList | Array | 进相册时预先选中的数据,给原始图片路径的列表 | X | 预计 8.1.10 支持 |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n *\n * 返回参数:\n * ```\n * {\n * result: 1,\n * error_msg: '',//result 不为1时返回错误信息(国际化)\n * data:[{\n * // originFilePath 新增字段,预计 8.1.10 支持\n * originFilePath: '', // 原始图片路径\n * base64: 'xxxxx',\n * width: 1024, // 单位px\n * height: 768,\n * fileType: 'png'\n * }, {...}, {...}]\n * }\n * ```\n */\n selectImage: {\n optHandle: function optHandle(opt) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__utils__[\"a\" /* assignOptions */])(opt, {\n notPromise: true,\n notDelete: true\n });\n }\n }\n});\n\n/***/ }),\n/* 17 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 从相册选择媒体资源上传
\n * 对应native接口:selectAndUploadMedia
\n * 注意:需要登录,一次只支持上传1个资源,目前快接单里有使用
\n * 支持版本:客户端2017.6月版本
\n * 对接人: songyunlu\n * @method ksBridge.selectAndUploadMedia\n * @category Component\n * @version >=1.0.0\n * @example ./apis/component/selectAndUploadMedia.demo\n * @demo component/selectAndUploadMedia\n * @description\n *\n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | sourceType | Array | 可以指定来源是相册还是相机,或二者都有 | √ | 默认 ['album', 'camera'] |\n * | uploadToken | String | 用上传key,客户端透传 | √ | - |\n * | mediaType | String | image 为图片 video 为视频 | √ | - |\n * | fileType | String | mediaType = image 只支持 jpeg/png,mediaType = video 只支持 mp4 | √ | - |\n * | maxFileSize | Number | 字节单位,不存在则为不限制,超过该值时自动压缩(视频暂不能完美支持支持)| √ | - |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n *\n * 返回参数:\n * ```\n * {\n * result: 1,\n * error_msg: ''\n * }\n * ```\n */\n selectAndUploadMedia: true\n});\n\n/***/ }),\n/* 18 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils__ = __webpack_require__(0);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 视频拍摄和发布
\n * 对应native接口:postVideo
\n * 注意:回调多次,前端可根据 progress 显示上传进度;从 ks-bridge 1.0.11 版本开始,returnToWeb 参数默认为 true
\n * 对接人: fangchangquan\n * @method ksBridge.postVideo\n * @category Component\n * @version >=1.0.0\n * @example ./apis/component/postVideo.demo\n * @demo component/postVideo\n * @description\n *\n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | param | Object | picker 内容配置 | √ | - |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n * \n * param 参数:\n * \n * | 可以带入拍摄页的内容 | 参数 |\n * | :--: | --:: |\n * | 文本tag | tag: 话题名称(支持添加多个标签,多个标签通过一个空格和一个#号分隔,例如:金月饼 #竞猜活动 #中秋,如需添加多个标签必须设置showNativeTagPage=false)|\n * | 话题Topic
(rich tag) | topic: // 分享一个话题(带头图的tag)
magicFaceId // 如果带魔法表情,必传
magicName // 如果带魔法表情,必传
imageUrl
resourceUrl
tag
version |\n * | 魔法表情 | magicName // 识别附带魔法表情(带入魔表时必传)
magicFaceId // 识别附带魔法表情(带入魔表时必传)
imageUrl
resourceUrl
tag
version |\n * | 地理位置 | poiId // 识别附带地理位置(带入地理位置时必传)
address
id
longitude
latitude
title |\n * | 显示native tag聚合页 | showNativeTagPage. // 是否显示native tag聚合页
背景:从app外的h5 tag聚合页呼起native的拍摄页时,会在native的拍摄页下补一个native的tag聚合页
备注:由于这个字段添加的时候iOS已经有了会打开native的tag聚合页的功能,所以这个字段的定义为:如果不下发或者下发为true,展示native的tag聚合页,反之不展示 |\n * | 回到h5页面 | returnToWeb // 是否回到h5页面。ks-bridge 从 1.0.11 版本开始,默认值为 true,低于 1.0.11 版本,需要手动传值
背景:调用 postVideo 拍摄视频,点击发布按钮后,可能命中 ab 实验,跳转到首页关注页,一般活动等 h5 页面希望在调桥拍摄发布后回到 h5 页面,所以通过传 returnToWeb 参数,可以强制回到 h5 页面,而不会跳到首页的关注页(不管是否命中 ab 实验)
当 returnToWeb 值为 true 时,会强制回到 h5 页面;当 returnToWeb 值为 false 或直接不传该参数,具体跳转页面根据当前用户是否命中 ab 实验进行跳转,命中实验则跳转到首页的关注页,未命中则回到 h5 页面
iOS 6.0.4 及以上版本支持 returnToWeb 参数;Android 预计 6.2.2 及以上版本支持\n * | 活动id | activity // 用于区分视频的拍摄来源,具体使用方式请参考示例 demo |\n * | 音乐原声 | musicId // 音乐原声 id
musicType // 音乐类型
带入音乐原声时,musicId 和 musicType 都要传,客户端从 6.3.2 版本开始支持 |\n * | 是否新启动一个拍摄页 | allowGoBackVideoPost,一般不需要管该字段,值为 ture 表示返回之前的拍摄 false 新起一个拍摄,当 allowGoBackVideoPost 为 true 且客户端真的发现存在一个现有的录制页时,returnToWeb 会不起作用,客户端从 6.3.2 版本开始支持 |\n * | 是否开启“同框”、“跟拍”、“合唱”模式拍摄 | pairedPhoto // 值为包含 photoId、type 属性的对象。photoId 为作品 id,type 为拍摄模式,同框为 \"sameFrame\", 跟拍为 \"followShoot\", 合唱为 \"chorus\"。android 6.6.2 ios 6.6.3 及以上版本支持该功能 |\n * \n * 注意:\n * \n * 安卓端使用同框、跟拍模式拍摄,7.7.10 及以上版本才支持回调\n * \n * 返回参数:\n * ```\n * {\n * // 1成功 0用户取消\n * result: 1,\n * data: {\n * \"uploadId\": \"94015796-3862-483E-9EA6-FB053D6667B3\", // 用于预览、重传\n * \"coverUrl\": \"http://ali2.a.yximgs.com/bs2/intownImage/MjAyMTY_o.jpg\", // 视频封面 url,progress 为 100 时才有\n * \"coverKey\": \"1531293052316_qUkZkqISQ9qv4QLIVI600ssoq\", \n * \"videoUrl\": \"http://ali2.a.yximgs.com/bs2/intownVideo/MjAyMTY.mp4\", // 视频 url,progress 为 100 时才有\n * \"progress\": \"100\", // 进度\n * \"filePath\": \"/var/mobile/Containers/Data/Application/27B876FE-7014-4ED2-9A21-D6943CBEA61F/Documents/gifs/152B184D-C134-4B06-B009-F5813AC46EA8.MOV\", // 用于预览、重传\n * \"photoId\": \"5xwyk9vaarq9w6u\"\n * }\n * }\n * ```\n */\n postVideo: {\n optHandle: function optHandle() {\n var opt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n opt.param = opt.param || {};\n opt.param.returnToWeb = typeof opt.param.returnToWeb === 'boolean' ? opt.param.returnToWeb : true;\n var data = {\n notPromise: true,\n notDelete: true\n };\n Object(__WEBPACK_IMPORTED_MODULE_0__utils__[\"a\" /* assignOptions */])(data, opt);\n return data;\n }\n }\n});\n\n/***/ }),\n/* 19 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 提现绑定微信或支付宝
\n * 对应native接口:bindWithdrawType
\n * 支持版本:客户端17年7月版本,仅 Android 支持
\n * 对接人: songyunlu\n * @method ksBridge.bindWithdrawType\n * @category Component\n * @version >=1.0.0\n * @example ./apis/component/bindWithdrawType.demo\n * @demo component/bindWithdrawType\n * @description\n *\n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | category | String | 业务类型,如: sf2018 | √ | - |\n * | type | String | 目前支持: 'wechat', 'alipay' | √ | - |\n * | session | String | 手机验证码 | √ | - |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n *\n * 返回参数:\n * ```\n * {\n * result: 1,\n * error_msg: '',\n * }\n * ```\n */\n bindWithdrawType: true\n});\n\n/***/ }),\n/* 20 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 在webview中给指定快手域名注入cookie
\n * 使用场景:该接口主要用于安卓客户端注入cookie仅能在页面请求时注入,前端在进行跨子域的ajax请求和jsonp请求时,需要调手动注入快手相关cookie
\n * 对应native接口:injectCookie
\n * 支持版本:客户端17.07版本,仅支持 Android
\n * 对接人: songyunlu\n * @method ksBridge.injectCookie\n * @category Component\n * @version >=1.0.0\n * @example ./apis/component/injectCookie.demo\n * @demo component/injectCookie\n * @description\n *\n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | url | String | 要注入cookie的地址 | √ | 需要在快手相关域名白名单里 |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n *\n * 返回参数:\n * ```\n * {\n * result: 1,\n * error_msg: '',\n * }\n * ```\n */\n injectCookie: true\n});\n\n/***/ }),\n/* 21 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils__ = __webpack_require__(0);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 验证短信验证码?
\n * 对应native接口:verifySMSCode
\n * 支持版本:待添加?
\n * 对接人: songyunlu\n * @method ksBridge.verifySMSCode\n * @category Component\n * @version >=1.0.0\n * @example ./apis/component/verifySMSCode.demo\n * @demo component/verifySMSCode\n * @description\n *\n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | title | String | 可空,没有的话客户端默认 账号验证 | X | - |\n * | info | String | 可空,显示再上面的界面信息 | X | - |\n * | type | Number | 验证码的用途,如绑定手机号等 | √ | - |\n * | needMobile | Bool | 是否需要显示输入手机号和国家,如果为false,显示当前账号的手机号(混淆后),国家不可选择,否则显示手机号输入框且国家可以选择,如果账号未绑定手机号,也显示手机号输入框,国家可选择 | √ | - |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n *\n * 返回参数:\n * ```\n * {\n * result: 1,\n * data: {\n * mobileCode: '123456'// 用户填写的验证码\n * // 用户对应手机号的counttryCode,逻辑同mobile\n * mobileCountryCode: '86',\n * // needMobile为true时用户填写的手机号,\n * // 以及needMobile为 false时,\n * // 用户未绑定过手机号,也需要填写的手机号\n * mobile: ''\n * }\n * }\n * ```\n */\n verifySMSCode: {\n optHandle: function optHandle(opt) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__utils__[\"a\" /* assignOptions */])(opt, {\n notDelete: true\n });\n }\n }\n});\n\n/***/ }),\n/* 22 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils__ = __webpack_require__(0);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 社交分享
\n * 对应native接口:socialShare
\n * 注意:需要登录
\n * 对接人: songyunlu\n * @method ksBridge.socialShare\n * @category Component\n * @version >=1.0.0\n * @example ./apis/component/socialShare.demo\n * @demo component/socialShare\n * @description\n *\n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | paramObject | Object | 分享设置 | √ | - |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n *\n * 返回参数:\n * ```\n * {\n * result: 1,\n * error_msg: '',\n * }\n * ```\n */\n socialShare: {\n optHandle: function optHandle(opt) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__utils__[\"a\" /* assignOptions */])(opt, {\n notDelete: true\n });\n }\n }\n});\n\n/***/ }),\n/* 23 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 粉丝支付
\n * 对应native接口:fansTopPay
\n * 支持版本:未上线?
\n * 注意:需要登录
\n * 对接人: songyunlu\n * @method ksBridge.fansTopPay\n * @category Component\n * @version >=1.0.0\n * @example ./apis/component/fansTopPay.demo\n * @demo component/fansTopPay\n * @description\n *\n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | provider | Number | 支付渠道,微信2,支付宝3 | √ | - |\n * | photoId | Number | 视频ID | √ | - |\n * | fen | Number | 订单总金额,金额单位都是分 | √ | - |\n * | followAmountFen | Number | 关注页购买金额 | √ | - |\n * | exploreAmountFen | Number | 发现页购买金额 | √ | - |\n * | nearbyAmountFen | Number | 同城页购买金额 | √ | - |\n * | trackingData | Object | 保留参数 | √ | - |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n *\n * 返回参数:\n * ```\n * {\n * result: 1, // 支付结果,1为成功\n * error_msg: '',\n * data: {\n * provider: 2, // 支付渠道\n * ksOrderId: 'Egtg7g9zfsy-2dy20g'\n * }\n * }\n * ```\n */\n fansTopPay: true\n});\n\n/***/ }),\n/* 24 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 代金券支付
\n * 对应native接口:couponPay
\n * 注意:需要登录
\n * 对接人: zhuchao、zhangruifeng\n * @method ksBridge.couponPay\n * @category Component\n * @version >=1.0.0\n * @example ./apis/component/couponPay.demo\n * @demo component/couponPay\n * @description\n *\n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | ksCouponId | String | 代金券No | √ | - |\n * | fen | Number | 金额 | √ | - |\n * | provider | Number | 渠道 2:微信 3:支付宝 | √ | - |\n * | ksCoin | Number | 快币数 | √ | - |\n * | iapItemName | String | ios支付号 | √ | - |\n * | disableSuccessAlert | Bool |设置 true 时不提示成功弹窗 | X | - |\n * | disableFailAlert | Bool |设置 true 时不提示失败弹窗 | X | - |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n *\n * 注意:两端必传参数不一样\n * android 必传 provider/fen/ksCoin/ksCouponId 字段\n * \n * iOS 必传 ksCoin/fen/iapItemName 字段,\n * disableSuccessAlert、disableFailAlert 为 iOS 7.3.30及以上版本新增字段\n * \n * 返回参数:\n * ```\n * {\n * result: 1,\n * error_msg: '',\n * data: {\n * provider: 2, // 支付渠道\n * ksOrderId: 'Egtg7g9zfsy-2dy20g'\n * }\n * }\n * ```\n */\n couponPay: true\n});\n\n/***/ }),\n/* 25 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 通用分享
\n * 对应native接口:commonShare
\n * 注意:需要登录
\n * 对接人: songyunlu\n * @method ksBridge.commonShare\n * @category Component\n * @version >=1.0.0\n * @example ./apis/component/commonShare.demo\n * @demo component/commonShare\n * @description\n *\n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | param | Object | 分享设置 | √ | - |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n *\n * param:\n *\n * | 参数 | 类型 | 描述 |\n * | :--: | :--: | :--: |\n * | platform | Array | 分享的平台 |\n * | imgUrl | String | 图片URL,与 hdImageData 二选一 |\n * | caption | String | 标题 |\n * | desc | String | 描述 |\n * | siteName | String | 显示在分享卡片上的文案 |\n * | siteUrl | String | 实际URL |\n * | smallApp | Object | 小程序参数,例如:{\"path\":xxx, \"app_id\":xxxxx} |\n * | hdImageData | String | 高清大图数据,base64String,与 imgUrl 二选一 |\n *\n * 返回参数:\n * ```\n * {\n * result: 1,\n * error_msg: '',\n * }\n * ```\n */\n commonShare: {\n optHandle: function optHandle(opt) {\n var defaultImgUrl = 'https://ali.static.yximgs.com/s1/archive/i/common/logo.png';\n opt.param = opt.param || {};\n opt.param.imgUrl = opt.param.imgUrl || defaultImgUrl;\n return opt;\n }\n }\n});\n\n/***/ }),\n/* 26 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 调起第三方支付
\n * 对应native接口:startGatewayPay
\n * 对接人: zhujiahui\n * @method ksBridge.startGatewayPay\n * @category Component\n * @version >=1.0.0\n * @example ./apis/component/startGatewayPay.demo\n * @demo component/startGatewayPay\n * @description\n *\n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | data | Object | version,format,sign,timestamp,biz_content等等 | √ | - |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n *\n * 返回参数:\n * ```\n * {\n * // ?四种结果:1: 成功、0: 用户取消,其他:出错\n * result: 1,\n * error_msg: '',\n * }\n * ```\n */\n startGatewayPay: true\n});\n\n/***/ }),\n/* 27 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils__ = __webpack_require__(0);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 播放快手课堂的长视频
\n * 对应native接口:startPlayLongVideo
\n * 对接人: zhaorong\n * @method ksBridge.startPlayLongVideo\n * @category Component\n * @version >=1.0.1\n * @example ./apis/component/startPlayLongVideo.demo\n * @demo component/startPlayLongVideo\n * @description\n * \n * 调用参数:\n * \n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | title | String | 标题 | √ | - |\n * | coverUrl | String | 封面URL | √ | - |\n * | contentUrl | String | 视频URL | √ | - |\n * | contentWidth | Number | ? | √ | - |\n * | contentHeight | Number | ? | √ | - |\n * | duration | Number | ? | √ | - |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n *\n */\n startPlayLongVideo: {\n optHandle: function optHandle(opt) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__utils__[\"a\" /* assignOptions */])(opt, {\n notPromise: true\n });\n }\n }\n});\n\n/***/ }),\n/* 28 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 录音
\n * 对应native接口:startAudioRecord
\n * 对接人: fangchangquan\n * @method ksBridge.startAudioRecord\n * @category Component\n * @version >=1.0.3\n * @example ./apis/component/startAudioRecord.demo\n * @demo component/startAudioRecord\n * @description\n *\n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | timeLimit | number | 录制时长 | √ | 单位 ms,值必须大于 0 |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n *\n */\n startAudioRecord: true\n});\n\n/***/ }),\n/* 29 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils__ = __webpack_require__(0);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 登录
\n * 对应native接口:login
\n * 支持版本:客户端17.09版本
\n * 对接人: songyunlu\n * @method ksBridge.login\n * @category Component\n * @version >=1.0.0\n * @example ./apis/component/login.demo\n * @demo component/login\n * @description\n *\n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | checkFromServer | bool | 是否进行服务端校验 | X | 默认不校验 |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n *\n * 返回参数:\n * ```\n * {\n * result: 1,\n * error_msg: '',\n * }\n * ```\n */\n login: {\n optHandle: function optHandle(opt) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__utils__[\"a\" /* assignOptions */])(opt, {\n notDelete: true\n });\n }\n }\n});\n\n/***/ }),\n/* 30 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils__ = __webpack_require__(0);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 登出
\n * 对应native接口:logout
\n * 对接人: songyunlu\n * @method ksBridge.logout\n * @category Component\n * @version >=1.0.0\n * @example ./apis/component/logout.demo\n * @demo component/logout\n * @description\n *\n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n *\n * 返回参数:\n * ```\n * {\n * result: 1,\n * error_msg: '',\n * }\n * ```\n */\n logout: {\n optHandle: function optHandle(opt) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__utils__[\"a\" /* assignOptions */])(opt, {\n notDelete: true\n });\n }\n }\n});\n\n/***/ }),\n/* 31 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 删除账号?
\n * 对应native接口:deleteAccount
\n * 支持版本:暂未上线?
\n * 对接人: songyunlu\n * @method ksBridge.deleteAccount\n * @category Component\n * @version >=1.0.0\n * @example ./apis/component/deleteAccount.demo\n * @demo component/deleteAccount\n * @description\n *\n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | info | Object | 信息?| √ | { reasonId: 3, extraInfo: 'text' } |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n *\n * 返回参数:\n * ```\n * {\n * result: 1,\n * error_msg: '',\n * }\n * ```\n */\n deleteAccount: true\n});\n\n/***/ }),\n/* 32 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils__ = __webpack_require__(0);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 第三方登录
\n * 对应native接口:verifyThirdPartyLogin
\n * 对接人: songyunlu, guoda\n * @method ksBridge.verifyThirdPartyLogin\n * @category Component\n * @version >=1.0.0\n * @example ./apis/component/verifyThirdPartyLogin.demo\n * @demo component/verifyThirdPartyLogin\n * @description\n *\n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | platform | String | 10几种 | √ | - |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n *\n * 返回参数:\n * ```\n * {\n * result: 1,\n * error_msg: '', //result 不为1时返回错误信息(国际化)\n * accessToken:'xsdfsdf',\n * ...\n * }\n * ```\n */\n verifyThirdPartyLogin: {\n optHandle: function optHandle(opt) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__utils__[\"a\" /* assignOptions */])(opt, {\n notPromise: true,\n notDelete: true\n });\n }\n }\n});\n\n/***/ }),\n/* 33 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 选择手机国家区号
\n * 对应native接口:selectCountryPhoneCode
\n * 对接人: songyunlu\n * @method ksBridge.selectCountryPhoneCode\n * @category Component\n * @version >=1.0.0\n * @example ./apis/component/selectCountryPhoneCode.demo\n * @demo component/selectCountryPhoneCode\n * @description\n *\n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n *\n * 返回参数:\n * ```\n * {\n * result: 1,\n * phoneCode: '86'\n * }\n * ```\n */\n selectCountryPhoneCode: true\n});\n\n/***/ }),\n/* 34 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 调起录制视频(直播身份认证,已过期)
\n * 对应native接口:captureCertVideo
\n * 注意:需要登录,是否还要在 ksbridge 中添加?
\n * 对接人: songyunlu\n * @method ksBridge.captureCertVideo\n * @category Component\n * @version >=1.0.0\n * @example ./apis/component/captureCertVideo.demo\n * @demo component/captureCertVideo\n * @description\n *\n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | showUserPortrait | Bool | 是否显示用户轮廓 | X | 默认false |\n * | steps | Array | 验证步骤 | √ | 长度不限,对象数组,{ text: '眨眨眼', startTime: 0, duration: 3300 } |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n *\n * 返回参数:\n * ```\n * {\n * result: 1,\n * error_msg: '',\n * napshot: 'base 64 image data',\n * uploadToken: 'xxx',\n * ticket: 'xxxx'\n * }// positive绿色, negative 红色, neutral\n * ```\n */\n captureCertVideo: true\n});\n\n/***/ }),\n/* 35 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 身份证视频上传接口(业务通用)
\n * 对应native接口:uploadCertVideo
\n * 支持版本:客户端2017.11月版本
\n * 注意:需要登录
\n * 对接人: songyunlu\n * @method ksBridge.uploadCertVideo\n * @category Component\n * @version >=1.0.0\n * @example ./apis/component/uploadCertVideo.demo\n * @demo component/uploadCertVideo\n * @description\n *\n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | uploadToken | String | - | √ | - |\n * | showUserPortrait | Bool | 是否显示用户轮廓 | X | 默认false |\n * | steps | Array | 验证步骤 | √ | 长度不限,对象数组,{ text: '眨眨眼', startTime: 0, duration: 3300 } |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n *\n * 返回参数:\n * ```\n * {\n * result: 1,\n * error_msg: '',\n * napshot: 'base 64 image data',\n * uploadToken: 'xxx',\n * ticket: 'xxxx'\n * }// positive绿色, negative 红色, neutral\n * ```\n */\n uploadCertVideo: true\n});\n\n/***/ }),\n/* 36 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 绑定通讯录
\n * 对应native接口:uploadContacts
\n * 注意:需要登录
\n * 对接人: songyunlu\n * @method ksBridge.uploadContacts\n * @category Component\n * @version >=1.0.0\n * @example ./apis/component/uploadContacts.demo\n * @demo component/uploadContacts\n * @description\n *\n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n *\n * 返回参数:\n * ```\n * {\n * result: 1,\n * error_msg: '',\n * }\n * ```\n */\n uploadContacts: true\n});\n\n/***/ }),\n/* 37 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 发送短信
\n * 对应native接口:sendSMS
\n * 支持版本:客户端2018.7月新用户邀请活动更新
\n * 对接人: songyunlu\n * @method ksBridge.sendSMS\n * @category Component\n * @version >=1.0.0\n * @example ./apis/component/sendSMS.demo\n * @demo component/sendSMS\n * @description\n *\n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | encryptedMobile | String | 加密后的发送者的手机号,支持多个,逗号分割 | X | - |\n * | mobile | String | 手机号,改成支持多个,逗号分割 | √ | - |\n * | content | String | 短信内容 | √ | - |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n *\n * 返回参数:\n * ```\n * {\n * result: 1,\n * error_msg: ''\n * }\n * ```\n */\n sendSMS: true\n});\n\n/***/ }),\n/* 38 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 根据加密后通讯录名称获取原始名称
\n * 对应native接口:decryptContactsName
\n * 支持版本:客户端18.7月新用户邀请活动更新
\n * 对接人: songyunlu\n * @method ksBridge.decryptContactsName\n * @category Component\n * @version >=1.0.0\n * @example ./apis/component/decryptContactsName.demo\n * @demo component/decryptContactsName\n * @description\n *\n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | encryptedName | String | 加密后的通讯录名称 | √ | - |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n *\n * 返回参数:\n * ```\n * {\n * result: 1,\n * data: [{\n * encryptedName: 'key1',\n * name: '小白'\n * }\n * ...\n * ],\n * error_msg: '',\n * }\n * ```\n */\n decryptContactsName: true\n});\n\n/***/ }),\n/* 39 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 绑定手机号
\n * 对应native接口:bindPhone
\n * 注意:需要登录
\n * 对接人: songyunlu\n * @method ksBridge.bindPhone\n * @category Component\n * @version >=1.0.0\n * @example ./apis/component/bindPhone.demo\n * @demo component/bindPhone\n * @description\n *\n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n *\n * 返回参数:\n * ```\n * {\n * result: 1,\n * error_msg: '',\n * }\n * ```\n */\n bindPhone: true\n});\n\n/***/ }),\n/* 40 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils__ = __webpack_require__(0);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 下载
\n * 对应native接口:download
\n * 支持版本:客户端18.01月底上线
\n * 对接人: songyunlu\n * @method ksBridge.download\n * @category Component\n * @version >=1.0.0\n * @example ./apis/component/download.demo\n * @demo component/download\n * @description\n *\n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | action | String | 类型,start 重新开始 resume 继续或重新下载 pause 暂停 stop 停止 | √ | - |\n * | url | String | 下载地址 | √ | 使用 https 协议有问题 |\n * | fileType | String | 安卓上文件类型为video或image放在相册目录, 其它放在Download目录 | X | - |\n * | photoId | Number | ? | X | - |\n * | clickType | Number | actionBar类型 | X | - |\n * | downloadId | String | 下载id,自定义的 ID,估计是用于唯一标示当前的下载,如果较真可以找客户端确认下 | X | - |\n * | notificationHidden | Bool | ? | X | - |\n * | extraInfo | String | 目前仅支持 game | X - |\n * | downloadName | String | 下载文件名(apk时用包名) | X | - |\n * | notForceReDownload | bool | 是否不强制重新下载 | X | 默认false 暂停后从头下载 true 暂停后继续上次的进度下载 |\n * | customExtension | string | 配置 apk 强制下载后自动安装 | X | - |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n * \n * 注意:\n * 如果要实现 apk 安装包下载一次,第二次再调直接安装不重新下载的效果,必须要配合 downloadProgress、installApk 一起使用\n * 详细调用参考 downloadProgress demo,且 download 中的 extraInfo 必传 game,\n * download、downloadProgress、installApk 三个 bridge 是通过 downloadId 进行关联的\n *\n * 返回参数:\n * ```\n * {\n * result: 1,\n * error_msg: '',\n * // fail resume cancel pause start complete progress\n * stage: \"resume\",\n * percent: 33 // 0~100\n * }\n * ```\n */\n download: {\n optHandle: function optHandle(opt) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__utils__[\"a\" /* assignOptions */])(opt, {\n notPromise: true,\n notDelete: true\n });\n }\n }\n});\n\n/***/ }),\n/* 41 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 城市选择
\n * 对应native接口:selectCity
\n * 支持版本:客户端预计2017.12.26上线版本
\n * 对接人: songyunlu\n * @method ksBridge.selectCity\n * @category Component\n * @version >=1.0.0\n * @example ./apis/component/selectCity.demo\n * @demo component/selectCity\n * @description\n *\n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n *\n * 返回参数:\n * ```\n * {\n * result: 1, // 1成功 0用户取消\n * error_msg: '',\n * data: {\n * code: '', // 选中城市代码\n * provinceName: '', // 省名称\n * cityName: '' // 城市名称\n * }\n * }\n * ```\n */\n selectCity: true\n});\n\n/***/ }),\n/* 42 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * MMU活体验证接口
\n * 对应native接口:verifyLiveUser
\n * 支持版本:客户端18.06版本,账号申诉需求
\n * 对接人: songyunlu\n * @method ksBridge.verifyLiveUser\n * @category Component\n * @version >=1.0.0\n * @example ./apis/component/verifyLiveUser.demo\n * @demo component/verifyLiveUser\n * @description\n *\n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | category | String | 业务分类,目前只有申诉 | √ | - |\n * | preStartDuration | Number | 毫秒 | √ | - |\n * | preStartHint | Array | 提示? | √ | - |\n * | steps | Array | 验证任务 | √ | - |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n *\n * 返回参数:\n * ```\n * {\n * // ?四种结果:1: 成功、0: 用户取消,其他:出错\n * result: 1,\n * error_msg: '',\n * }\n * ```\n */\n verifyLiveUser: true\n});\n\n/***/ }),\n/* 43 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils__ = __webpack_require__(0);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 发布作品
\n * 注意:该 bridge 商业化业务特有的
\n * 对应native接口:publishWorks
\n * 对接人: songyunlu\n * @method ksBridge.publishWorks\n * @category Component\n * @version >=1.0.0\n * @example ./apis/component/publishWorks.demo\n * @demo component/publishWorks\n * @description\n *\n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | triggerType | Number | 0前端调用(查询是否有发布中作品),1用户主动点击(触发发布流程),2 show, 3 hide | √ | - |\n * | photoId | String | 需要编辑去水印的photoId | √ | - |\n * | bottomDistance | Number | 发布状态栏距离底部距离,单位px | √ | - |\n * | success | Function | 成功回调函数 | X | 当作品发布状态发生变化时会调用 |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n *\n * 返回参数:\n * ```\n * {\n * // 0失败,1成功,2发布中,3取消,4未知(查询无作品发布)\n * result: 1,\n * error_msg: '',\n * // string类型,上传成功的photoId\n * photoId: 'xxxxxxxx'\n * }\n * ```\n */\n publishWorks: {\n optHandle: function optHandle(opt) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__utils__[\"a\" /* assignOptions */])(opt, {\n notDelete: true\n });\n }\n }\n});\n\n/***/ }),\n/* 44 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils__ = __webpack_require__(0);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 对通过手机登录的用户进行短信验证码验证
\n * 对应native接口:verifyAccount
\n * 对接人: songyunlu\n * @method ksBridge.verifyAccount\n * @category Component\n * @version >=1.0.0\n * @example ./apis/component/verifyAccount.demo\n * @demo component/verifyAccount\n * @description\n *\n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | info | String | 提示信息,可空 | X | - |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n *\n * 返回参数:\n * ```\n * {\n * // 四种结果:成功、用户取消、未登录、未绑定手机\n * result: 1,\n * error_msg: '',\n * data: {}\n * }\n * ```\n */\n verifyAccount: {\n optHandle: function optHandle(opt) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__utils__[\"a\" /* assignOptions */])(opt, {\n notDelete: true\n });\n }\n }\n});\n\n/***/ }),\n/* 45 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 调起并进入私信群聊
\n * 对应native接口:enterGroupChat
\n * 对接人:hanchen
\n * @method ksBridge.enterGroupChat\n * @category Component\n * @version >=1.0.6\n * @example ./apis/component/enterGroupChat.demo\n * @demo component/enterGroupChat\n * @description \n * \n * 调用参数:\n * \n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | groupId | String | 群聊ID | √ | - |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n **/\n enterGroupChat: true\n});\n\n/***/ }),\n/* 46 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils__ = __webpack_require__(0);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 支付网关提现
\n * 对应native接口:startGatewayWithdraw
\n * 对接人:zhujiahui
\n * @method ksBridge.startGatewayWithdraw\n * @category Component\n * @version >=1.0.7\n * @example ./apis/component/startGatewayWithdraw.demo\n * @demo component/startGatewayWithdraw\n * @description \n * \n * 调用参数:\n * \n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | url | String | 需要在支付网关隔离环境里打开的页面地址 | √ | - |\n **/\n startGatewayWithdraw: {\n optHandle: function optHandle(opt) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__utils__[\"a\" /* assignOptions */])(opt, {\n notPromise: true\n });\n }\n }\n});\n\n/***/ }),\n/* 47 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 通过base64保存图片到手机相册
\n * 客户端的支持版本: android 6.5.3,iOS 6.5.5以上
\n * 对应native接口:saveImage
\n * 对接人:zhaorong
\n * @method ksBridge.saveImage\n * @category Component\n * @version >=1.0.14\n * @example ./apis/component/saveImage.demo\n * @demo component/saveImage\n * @description \n * \n * 调用参数:\n * \n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | base64String | String | 图片base64编码 | √ | - |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n **/\n saveImage: true\n});\n\n/***/ }),\n/* 48 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 给好友发送私信
\n * 对应native接口:sendImFriendMessage
\n * 对接人:lianxin
\n * @method ksBridge.sendImFriendMessage\n * @category Component\n * @version >=1.0.14\n * @example ./apis/component/sendImFriendMessage.demo\n * @demo component/sendImFriendMessage\n * @description \n * \n * 调用参数:\n * \n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | targetType | Number | 发送对象类型 | 必选 | 0 是单聊, 4是群聊 |\n * | targetId | Number | 对象ID | 必选 | 如果是用户,则为用户id, 如果是群,则是groupId |\n * | msgType | Number | 消息类型 | 必选 | 0 是文本,2 是 图片 9 是Link |\n * | text | String | 文本消息类型时对应发送内容 | 必选 | 与image属性 link属性互斥 |\n * | image | Object | 图片消息类型时对应发送内容 | 必选 | 与text属性 link属性互斥 |\n * | link | Object | link消息类型时对应发送内容 | 必选 | 与text属性 image属性互斥 |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n **/\n sendImFriendMessage: true\n});\n\n/***/ }),\n/* 49 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 获取客户端默认截图(提供裁剪压缩功能)
\n * 对应native接口:selectScreenshot
\n * 支持版本:Android、iOS >=6.6.6版本
\n * 对接人:hanchen
\n * @method ksBridge.selectScreenshot\n * @category Component\n * @version >=1.0.15\n * @example ./apis/component/selectScreenshot.demo\n * @demo component/selectScreenshot\n * @description \n * \n * 调用参数:\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | maxFileSize | Number | 字节单位 | X | 不存在则为不限制,原图超过该值时自动压缩,建议设置,否则图太大 |\n * | maxWidth | Number | 像素单位 | X | 不存在则为不限制,原图超过该值时自动压缩,建议设置,否则图太大 |\n * | maxHeight | Number | 像素单位 | X | 不存在则为不限制,原图超过该值时自动压缩,建议设置,否则图太大 |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n **/\n selectScreenshot: true\n});\n\n/***/ }),\n/* 50 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 直接调起微信登录,并且native也会变为登录状态。
\n * 对应native接口:wechatLogin
\n * 对接人:chenxiaolong
\n * @method ksBridge.wechatLogin\n * @category Component\n * @version >=1.0.16\n * @example ./apis/component/wechatLogin.demo\n * @demo component/wechatLogin\n * @description \n * \n * 调用参数:\n * \n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n **/\n wechatLogin: true\n});\n\n/***/ }),\n/* 51 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 通用的绑定第三方账号(微信/支付宝)
\n * 对应native接口:authThirdPartyAccount
\n * 对接人:zhujiahui
\n * @method ksBridge.authThirdPartyAccount\n * @category Component\n * @version >=1.0.16\n * @example ./apis/component/authThirdPartyAccount.demo\n * @demo component/authThirdPartyAccount\n * @description \n * \n * 调用参数:\n * \n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | provider | String | 平台标识 | X | wechat | alipay |\n * | auth_param | String | 授权参数 | X | 微信或支付宝的授权参数 |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n **/\n authThirdPartyAccount: true\n});\n\n/***/ }),\n/* 52 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 查看当前下载进度
\n * 对应native接口:downloadProgress
\n * 支持版本:仅支持 Android
\n * 对接人: xinyangxi\n * @method ksBridge.downloadProgress\n * @category Component\n * @version >=1.0.18\n * @example ./apis/component/downloadProgress.demo\n * @demo component/downloadProgress\n * @description\n *\n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | action | String | 类型,start 重新开始 resume 继续或重新下载 pause 暂停 stop 停止 | √ | - |\n * | url | String | 下载地址 | √ | - |\n * | downloadId | String | 下载id,自定义的 ID,估计是用于唯一标示当前的下载,如果较真可以找客户端确认下 | √ | - |\n * | downloadName | String | 下载文件名(apk时用包名) | √ | - |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n *\n * 返回参数:\n * ```\n * {\n * result: 1,\n * // 当进度为 100 时可以调用 installApk 进行安装\n * percent: 33 // 0~100\n * }\n * ```\n */\n downloadProgress: true\n});\n\n/***/ }),\n/* 53 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 安装 apk 包
\n * 对应native接口:installApk
\n * 支持版本:仅支持 Android
\n * 对接人: xinyangxi\n * @method ksBridge.installApk\n * @category Component\n * @version >=1.0.18\n * @example ./apis/component/installApk.demo\n * @demo component/installApk\n * @description\n *\n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | action | String | 类型,start 重新开始 resume 继续或重新下载 pause 暂停 stop 停止 | √ | - |\n * | url | String | 下载地址 | √ | - |\n * | downloadId | String | 下载id,自定义的 ID,估计是用于唯一标示当前的下载,如果较真可以找客户端确认下 | √ | - |\n * | downloadName | String | 下载文件名(apk时用包名) | √ | - |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n *\n */\n installApk: true\n});\n\n/***/ }),\n/* 54 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 获取 currency 参数
\n * 对应native接口:iapCurrencyWithParams
\n * 支持版本:仅支持 iOS 客户端 7.3.20 及以上版本
\n * 对接人: zhuchao\n * @method ksBridge.iAPCurrency\n * @category Component\n * @version >=2.0.0\n * @example ./apis/component/iAPCurrency.demo\n * @demo component/iAPCurrency\n * @description\n *\n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n *\n * 返回参数:\n * ```\n * {\n * result: 1, // 1成功\n * currency: 'xxxx', // currency 参数\n * }\n * ```\n */\n iAPCurrency: true\n});\n\n/***/ }),\n/* 55 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 通用分享
\n * 对应native接口:share
\n * 注意:需要登录
\n * 对接人: zhaoyifan03\n * @method ksBridge.share\n * @category Component\n * @version >=2.0.0\n * @example ./apis/component/share.demo\n * @demo component/share\n * @description\n *\n * 接入wiki:https://wiki.corp.kuaishou.com/pages/viewpage.action?pageId=429799993
\n * 详情wiki:https://wiki.corp.kuaishou.com/pages/viewpage.action?pageId=410888352\n *\n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | param | Object | 分享设置 | √ | - |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n *\n * param:\n *\n * | 参数 | 类型 | 描述 | 必选 |\n * | :--: | :--: | :--: | :--: |\n * | subBiz | String | 分享对应的业务 | √ |\n * | shareResourceType | String | 分享业务对象的类型(可以用来区分场景) | X |\n * | shareObjectId | String | 分享业务对象的唯一标识,非空的字符串,举例:userId,photoId等 | √ |\n * | showSharePanel | Bool | 是否展示面板 | X |\n * | shareDirectActionUrl | String | 直接发起分享的必要参数 | X |\n * | logParams | String | JSON字符串,该字段传的内容,客户端将直接透传到打点平台 | X |\n * | tokenStoreParams | Object | 定制化回流的文案,图片等,具体会在中台的show/any接口生效,参考下面示例 | X |\n * | commonConfigs | Object | 通用的期望configs,这里的configs回和channel中的expectedConfigs作合并,以custom的为准,这里的参数会传给server,。这里的config会带到show/any的请求中,期望使用这些参数,是否使用sever 端决定。参考下面示例 | X |\n * | forceCommonConfigs | Object | 通用的强制设置configs,这里的configs回和channel中的forceConfigs作合并,以custom的为准,这里的参数不会传给server。这里的config会覆盖show/any的返回值,参考下面示例 | X |\n * | extraChannelOptions | Array | 不同的分享渠道特殊配置,参考下面示例 | X |\n * \n * 返回参数:\n * ```\n * {\n * \"result\": 0,\n * \"error_msg\": \"\",\n * \"response\": {\n * \"share\": {\n * \"result\": 1,\n * \"errorMsg\": null,\n * \"shareMethod\": \"TOKEN\",\n * \"shareChannel\": \"COPY_LINK\",\n * \"shareMode\": \"APP\",\n * \"kpn\": \"KUAISHOU\",\n * \"subBiz\": \"IM\",\n * \"appName\": \"ztShareTest\",\n * \"appIconUrl\": \"\",\n * \"shareObject\": {\n * \"shareObjectId\": \"100021728\",\n * \"shareResourceType\": \"\",\n * \"shareId\": \"63146521687\",\n * \"shareMessage\": \"我和4个人正在快手群聊【小吃货们】里聊天, http://www.gifshow.com/s/y2irAQ9n 点击链接加入我们;或者复制这条消息后打开快手\",\n * \"extParams\": {}\n * }\n * }\n * }\n * }\n * ```\n */\n share: true\n});\n\n/***/ }),\n/* 56 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 商家号业务用于获取特性商业信息、商业逻辑操作
\n * 对应native接口:businessAction
\n * 对接人:liuming
\n * @method ksBridge.businessAction\n * @category Component\n * @version >=2.0.1\n * @example ./apis/component/businessAction.demo\n * @demo component/businessAction\n * @description \n * \n * API的action类型随时会新增,具体可以参考[附件](https://static.yximgs.com/udata/pkg/ks-ad-fe/bridge.4f84494d.pdf)\n * \n * 调用参数:\n * \n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | action | Enum | 操作指令,根据前端传入指令调用不同native方法 | √ | - |\n * | data | String | json字符串,根据type不同,获取不同的数据,传入不同数据 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n **/\n businessAction: true\n});\n\n/***/ }),\n/* 57 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 粉丝头条接入支付sdk账户充值功能
\n * 对应native接口:startDeposit
\n * 对接人:zhaoyang03
\n * @method ksBridge.startDeposit\n * @category Component\n * @version >=2.0.1\n * @example ./apis/component/startDeposit.demo\n * @demo component/startDeposit\n * @description \n * \n * 调用参数:\n * \n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | provider | String | 充值支付类型(枚举) | √ | wechat/alipay,可为空 |\n * | accountGroupKey | String | 账户标识key | √ | - |\n * | data | Object | 参数 | √ | - |\n * | complete | Function | 回调函数名 | √ | - |\n **/\n startDeposit: true\n});\n\n/***/ }),\n/* 58 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 调起支付收银台
\n * 对应native接口:startKspayOrderPrepay
\n * 对接人:zhujiahui
\n * @method ksBridge.startKspayOrderPrepay\n * @category Component\n * @version >=2.0.1\n * @example ./apis/component/startKspayOrderPrepay.demo\n * @demo component/startKspayOrderPrepay\n * @description \n * \n * 调用参数:\n * \n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | merchantId | String | 商户ID | √ | 接入之前联系 @孙为强 申请 |\n * | outOrderNo | String | 业务订单号 | √ | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n **/\n startKspayOrderPrepay: true\n});\n\n/***/ }),\n/* 59 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 设置关注栈
\n * 对应native接口:setPageFollowRefer
\n * 对接人:tanbing
\n * @method ksBridge.setPageFollowRefer\n * @category Component\n * @version >=2.0.1\n * @example ./apis/component/setPageFollowRefer.demo\n * @demo component/setPageFollowRefer\n * @description \n * \n * 调用参数:\n * \n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | followRefer | String | 要设置的关注栈refer | √ | - |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n **/\n setPageFollowRefer: true\n});\n\n/***/ }),\n/* 60 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 检测是否授权日历
\n * 对应native接口:authorizationStatusForCalendar
\n * 对接人:huangyiwei
\n * @method ksBridge.authorizationStatusForCalendar\n * @category Component\n * @version >=2.0.1\n * @example ./apis/component/authorizationStatusForCalendar.demo\n * @demo component/authorizationStatusForCalendar\n * @description \n * \n * 调用参数:\n * \n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n **/\n authorizationStatusForCalendar: true\n});\n\n/***/ }),\n/* 61 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 对日历进行增删改查
\n * 对应native接口:changeEventForCalendar
\n * 对接人:songyunlu
\n * @method ksBridge.changeEventForCalendar\n * @category Component\n * @version >=2.0.1\n * @example ./apis/component/changeEventForCalendar.demo\n * @demo component/changeEventForCalendar\n * @description \n * \n * 调用参数:\n * \n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | method | String | 操作类型,目前支持 add、delete、search | √ | 删除、更新均为 delete |\n * | event | Object | 事件配置 | √ | - |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n * \n * event 说明:\n * \n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | type | Number | 日历类型 | X | 1:每天/ 2:工作日/ 3:周末 |\n * | title | String | 标题 | X | - |\n * | note | String | 提示 | X | - |\n * | startDay | String | 开始时间| X | - |\n * | endDay | String | 结束时间 | X | - |\n * | url | String | 跳转地址 | X | 目前安卓不支持 ios有bug |\n * | eventId | String | 事件id | X | 删除更新时需要该 id |\n * \n * 返回参数:\n * \n * ```json\n * {\n * \"result\": 1,\n * \"eventId\": \"50\"\n * }\n * \n * eventId 仅在 add 时会返回,method 为 delete、search 时,只有 result\n * \n * 更多细节参考:[桥定义](https://wiki.corp.kuaishou.com/pages/viewpage.action?pageId=390952222),[需求文档](https://wiki.corp.kuaishou.com/pages/viewpage.action?pageId=483860832)\n **/\n changeEventForCalendar: true\n});\n\n/***/ }),\n/* 62 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * webview容器截屏,可以把当前屏幕高度的H5截图下来,保存在相册里
\n * 对应native接口:renderImage
\n * 对接人:liuming
\n * @method ksBridge.renderImage\n * @category Component\n * @version >=2.0.1\n * @example ./apis/component/renderImage.demo\n * @demo component/renderImage\n * @description \n * \n * 调用参数:\n * \n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | action | String | 操作类型,这里是3个枚举值, start: 打开一个影藏的webview. end:条件哦,启动截屏 failure: 条件不ok,放弃截屏 | √ |这里需要组合调用,因为隐藏的view不可见,所以当你调用end或者failure。执行的是 start的回调函数,具体看例子 |\n * | data | Object | 只包含一个参数imageUrl,传入一个H5的地址,就是你要截屏的页面 | √ | - |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n **/\n renderImage: true\n});\n\n/***/ }),\n/* 63 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 关注/取消关注用户
\n * 对应native接口:requestFollowUserV2
\n * 对接人:iOS:刘永超、安卓:柯国宇
\n * @method ksBridge.requestFollowUserV2\n * @category Component\n * @version >=2.0.2\n * @example ./apis/component/requestFollowUserV2.demo\n * @demo component/requestFollowUserV2\n * @description \n * \n * 调用参数:\n * \n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | userId | String | 被关注/取消关注用户id | √ | - |\n * | following | Boolean | 操作类型 关注/取消关注 | √ | - |\n * | activityId | String | 活动ID | √ | - |\n * | info | Object | 用于扩展关注参数 | X | - |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n * \n * 注意:\n * 关注的账号需要后端加白名单,可联系对应PM 顾小羽\n * 测试时,可打开开关 摇一摇-》社交tab-》关注-Bridge禁用HTTPS校验 【iOS】/ 开启HTTP页面调用关注jsbridge【Android】\n * \n * 更详细信息参考[wiki](https://wiki.corp.kuaishou.com/pages/viewpage.action?pageId=504451510)\n * \n **/\n requestFollowUserV2: true\n});\n\n/***/ }),\n/* 64 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_extend__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__gete2__ = __webpack_require__(65);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__getFeed__ = __webpack_require__(66);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__queryKCardStatus__ = __webpack_require__(67);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__submitData__ = __webpack_require__(68);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__getClientLogInfo__ = __webpack_require__(69);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__setClientLogCurrentUrl__ = __webpack_require__(70);\n\n\n\n\n\n\n\nvar data = Object(__WEBPACK_IMPORTED_MODULE_0__utils_extend__[\"a\" /* default */])(true, __WEBPACK_IMPORTED_MODULE_5__getClientLogInfo__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_6__setClientLogCurrentUrl__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_1__gete2__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_2__getFeed__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_3__queryKCardStatus__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_4__submitData__[\"a\" /* default */]);\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n data: data\n});\n\n/***/ }),\n/* 65 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 获取imsi
\n * 对应native接口:gete2
\n * 对接人: songyunlu\n * @method ksBridge.gete2\n * @category Data\n * @version >=1.0.0\n * @example ./apis/data/gete2.demo\n * @demo data/gete2\n * @description\n * \n * 调用参数:\n * \n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n *\n * 返回参数:\n * ```\n * {\n * result: 1, // 1为成功, 其他为失败\n * error_msg: '',\n * data: {\n * e2: xxx, // 机密后imsi\n * iv2: xxx // 初始向量\n * }\n * }\n * ```\n */\n gete2: true\n});\n\n/***/ }),\n/* 66 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 获取视频详细信息
\n * 对应native接口:getFeed
\n * 支持版本:客户端18.01月底上线版本
\n * 注意:兼容转义字符问题,该接口 iOS 返回 object,使用时注意。
\n * 对接人: songyunlu\n * @method ksBridge.getFeed\n * @category Data\n * @version >=1.0.0\n * @example ./apis/data/getFeed.demo\n * @demo data/getFeed\n * @description\n * \n * 调用参数:\n * \n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | photoId | String | photoId | √ | - |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n *\n * 返回参数:\n * ```\n * {\n * result: 1, // 1为成功, 其他为失败\n * error_msg: '' // result 不为1时返回错误信息(国际化)\n * data: feedObject,\n * ext_data: {\n * photo_id: \"\", // String\n * user_id: \"\", // String\n * llsid: \"\" // String\n * }\n * }\n * ```\n * \n * feedObject:\n * ```\n * {\n * actionBarRatio: 1,\n * adType: \"1\",\n * alertNetMobile: true,\n * appName: \"蜀门手游.apk\",\n * backgroundColor: \"#ff61d575\",\n * chargeInfo: \"xxxxxxxxxx\",\n * conversionType: 1,\n * creativeId: 96097,\n * displayType: \"2\",\n * extData: \"\",\n * hideLabel: false,\n * orderId: 0,\n * packageName: \"com.ycgame.t11\",\n * photoPage: \"\",\n * preloadLandingPage: false,\n * showEndOption: true,\n * sourceDescription: \"广告\",\n * sourceType: 1,\n * textColor: \"#ffffffff\",\n * title: \"立即下载\",\n * tracks: [{…}],\n * url: \"download://dlp.shumensy.com/t11_1192_618.apk\",\n * useH5: false\n * }\n * ```\n */\n getFeed: true\n});\n\n/***/ }),\n/* 67 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n queryKCardStatus: true\n});\n\n/***/ }),\n/* 68 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * A 启动 B,B 回传数据给 A;A 从 B 中获取值
\n * 对应native接口:submitData
\n * 对接人: songyunlu\n * @method ksBridge.submitData\n * @category Data\n * @version >=1.0.0\n * @example ./apis/data/submitData.demo\n * @demo data/submitData\n * @description\n * \n * 调用参数:\n * \n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | type | String | 业务类型,例如 captcha | √ | - |\n * | data | Object | 数据内容 | √ | { token: 'xxxxx' } |\n *\n */\n submitData: true\n});\n\n/***/ }),\n/* 69 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 用于打通端内h5页面和客户端页面的pv打点。获取客户端打点相关信息。
\n * 对应native接口:getClientLogInfo
\n * 对接人:miaowei
\n * @method ksBridge.getClientLogInfo\n * @category Data\n * @version >=1.0.15\n * @example ./apis/data/getClientLogInfo.demo\n * @demo data/getClientLogInfo\n * @description\n *\n * 都是从 `logsdk` 中获取,包括refer页信息,当前页信息,和sessinId等。注意:没有result字段(bug)。\n *\n *\n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n *\n *\n * 返回参数:\n *\n * ```js\n * {\n * // 当前webview的页面信息\n * currentUrlPackage:{\n * cachedSize: -1,\n * category: 0,\n * entryPageId: \"\",\n * entryPageSource: \"\",\n * identity: \"f03bd21e-e3ab-42c8-8d96-9093ebcb4e73\",\n * page: 0,\n * pageSeq: 0,\n * params: \"\",\n * subPages: \"\",\n * },\n * // 来源页面\n * referUrlPackage:{\n * cachedSize: -1,\n * // 页面分类\n * category: 1,\n * // 入口页面(需要继承)\n * entryPageId: \"02c4d0ea-3d4d-4822-b6d5-95c41bd610d8\",\n * // 入口页面(需要继承)\n * entryPageSource: \"MENU\",\n * // pv唯一ID\n * identity: \"02c4d0ea-3d4d-4822-b6d5-95c41bd610d8\",\n * // 页面ID (因技术限制只能用数字)\n * page: 5,\n * // 页面被访问的序号\n * pageSeq: 7,\n * // 对应打点平台的 params\n * params: \"\",\n * // 对应打点平台的 subPages\n * subPages: \"\",\n * },\n * // 通过哪个按钮点进来的\n * referElementPackage:{\n * // element action (因技术限制只能用数字)\n * action: 1239,\n * cachedSize: 17,\n * index: 0,\n * name: \"LABORATORY\",\n * params: \"\",\n * status: 0,\n * type: 15,\n * value: 0,\n * },\n * sessionId: \"1b9de626-6014-4818-8c20-cebcf6adce7b\"\n * }\n * ```\n **/\n getClientLogInfo: true\n});\n\n/***/ }),\n/* 70 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 对 clientLog 设定当前页面信息
\n * 对应native接口:setClientLogCurrentUrl
\n * 对接人:miaowei
\n * @method ksBridge.setClientLogCurrentUrl\n * @category Data\n * @version >=1.0.15\n * @example ./apis/data/setClientLogCurrentUrl.demo\n * @demo data/setClientLogCurrentUrl\n * @description\n *\n * 注意:没有result字段(bug)\n *\n * 操作 `logsdk` 改变当前webview的页面信息。第一次调用会发送pv打点。后续是跳页动作,会发送leave和pv。\n *\n * 通过当前bridge将h5页面变成客户端页面(在clientLog层面)。这样h5页面的pv和refer都会被正确的处理。解决了之前refer丢失的问题。并且页面展现时长也交由客户端logsdk维护,更准确。\n *\n *\n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | currentUrlPackage | Object | 当前页面的信息 | O | - |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n *\n *\n * currentUrlPackage 示例(参数都是必传):\n *\n *\n * ```js\n * {\n * // 页面类型 一般是 1\n * category: 1,\n * // 打点平台页面名(因技术限制只能是数字)\n * page: 554,\n * // 打点平台 sub_pages\n * subPages: 'titleSearchView',\n * // 打点平台 params\n * params: 'foo=bar'\n * }\n * ```\n *\n * 返回值示例:\n *\n * ```\n * {\n * result:1,\n * currentUrlPackage: {\n * cachedSize: -1,\n * // 页面分类\n * category: 1211,\n * // 入口页面(后续打点需要带上)\n * entryPageId: \"02c4d0ea-3d4d-4822-b6d5-95c41bd610d8\",\n * // 入口页面(后续打点需要带上)\n * entryPageSource: \"MENU\",\n * // pv唯一ID\n * identity: \"3de0aac5-6661-4617-bc5b-46b6a16f2381\",\n * // 打点平台页面名 (因技术限制只能用数字)\n * page: 554,\n * // 页面被访问的序号\n * pageSeq: 8,\n * // 打点平台 params\n * params: \"foo=bar\",\n * // 打点平台 subPages\n * subPages: \"\",\n * }\n * }\n * ```\n **/\n setClientLogCurrentUrl: true\n});\n\n/***/ }),\n/* 71 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_extend__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__openWechatMiniProgram__ = __webpack_require__(72);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__kuaiXiangRegisterSuccess__ = __webpack_require__(73);\n\n\n\nvar page = Object(__WEBPACK_IMPORTED_MODULE_0__utils_extend__[\"a\" /* default */])(true, __WEBPACK_IMPORTED_MODULE_2__kuaiXiangRegisterSuccess__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_1__openWechatMiniProgram__[\"a\" /* default */]);\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n page: page\n});\n\n/***/ }),\n/* 72 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 打开微信小程序
\n * 对应native接口:openWechatMiniProgram
\n * 对接人: chenyuzhe\n * @method ksBridge.openWechatMiniProgram\n * @category Page\n * @version >=1.0.0\n * @example ./apis/page/openWechatMiniProgram.demo\n * @demo page/openWechatMiniProgram\n * @description\n * \n * 调用参数:\n * \n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | originalID | String | 微信小程序原始ID,AES加密,一般由服务端加密给到前端 | √ | 常用参数 |\n * | path | String | 跳转到微信小程序对应的path页面 | √ | 常用参数 |\n * | success | Function | 成功回调函数 | X | 常用参数 |\n * | fail | Function | 失败回调函数 | X | 常用参数 |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n * \n * 加密规则详见:https://wiki.corp.kuaishou.com/pages/viewpage.action?pageId=382765812 【感谢@zhaopeng05大佬的总结】\n * \n * 加密秘钥:https://wiki.corp.kuaishou.com/pages/viewpage.action?pageId=382766285 【有权限控制,如有需要请联系@songyunlu、@fangchangquan】\n *\n * 返回参数:\n * ```\n * {\n * extMsg:对应JsApi navigateBackApplication中的extraData字段数据\n * type:未知\n * errCode:错误码,1代表成功,-2代表小程序未上线,-3代表未关联(猜测,目前未找到相关错误码文档)\n * errStr:错误描述,当前code= -2、-3未返回错误描述\n * }\n * ```\n */\n openWechatMiniProgram: true\n});\n\n/***/ }),\n/* 73 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 【快接单】- 发布页设置快享跳转页
\n * 对应native接口:kuaiXiangRegisterSuccess
\n * 对接人:leijie
\n * @method ksBridge.kuaiXiangRegisterSuccess\n * @category Page\n * @version >=2.0.1\n * @example ./apis/page/kuaiXiangRegisterSuccess.demo\n * @demo page/kuaiXiangRegisterSuccess\n * @description \n * \n * 快接单业务专用bridge\n * 调用参数:\n * \n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | kxHomePageUrl | string | 注册成功后点击跳转的页面 | √ | -\n **/\n kuaiXiangRegisterSuccess: true\n});\n\n/***/ }),\n/* 74 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_extend__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__getDeviceInfo__ = __webpack_require__(75);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__getLocation__ = __webpack_require__(76);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__hasInstalledApp__ = __webpack_require__(77);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__launchApp__ = __webpack_require__(78);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__emitFreeTrafficUpdate__ = __webpack_require__(79);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__getDeviceSecretInfo__ = __webpack_require__(80);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__scanCode__ = __webpack_require__(81);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__setClipBoard__ = __webpack_require__(82);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__installedAppVersion__ = __webpack_require__(83);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__getDarkMode__ = __webpack_require__(84);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__openBrowser__ = __webpack_require__(85);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__getExpTagTransList__ = __webpack_require__(86);\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar system = Object(__WEBPACK_IMPORTED_MODULE_0__utils_extend__[\"a\" /* default */])(true, __WEBPACK_IMPORTED_MODULE_12__getExpTagTransList__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_11__openBrowser__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_10__getDarkMode__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_9__installedAppVersion__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_8__setClipBoard__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_7__scanCode__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_6__getDeviceSecretInfo__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_1__getDeviceInfo__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_2__getLocation__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_3__hasInstalledApp__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_4__launchApp__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_5__emitFreeTrafficUpdate__[\"a\" /* default */]);\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n system: system\n});\n\n/***/ }),\n/* 75 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 获取设备信息
\n * 使用场景:根据设备信息进行特殊判断或逻辑处理
\n * 对应native接口:getDeviceInfo
\n * 支持版本:客户端预计18年-01月底上线版本,有更新
\n * 对接人: songyunlu\n * @method ksBridge.getDeviceInfo\n * @category System\n * @version >=1.0.0\n * @example ./apis/system/getDeviceInfo.demo\n * @demo system/getDeviceInfo\n * @description\n * \n * 调用参数:\n * \n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n *\n * 返回参数:\n * \n * iOS:\n * ```\n * {\n * result: 1, // 1为成功, 其他为失败\n * error_msg: '' // result不为1时回传错误信息\n * data: {\n * appVersion: '1.23.34.3',\n * networkType: '3G',\n * manufacturer: 'Apple',\n * model: 'iPhone 5',\n * systemVersion: '9.0',\n * locale: 'en-US',\n * uuid: '123ksdf-123dfs-sdfsd-sdfs',\n * idfa: 'xxxxxxx' // ios独有?android里没有\n * screenWidth: 320,\n * screenHeight: 640,\n * statusBarHeight: 40, // 状态栏高度\n * titleBarHeight: 88, // 导航栏高度\n * imei: 'xxx',\n * androidId: 'xxx',\n * mac: 'xxx'\n * }\n * }\n * ```\n * \n * Android:\n * ```\n * {\n * result: 1, // 1为成功, 其他为失败\n * error_msg: '' // result不为1时回传错误信息\n * data: {\n * appVersion: '5.5.2.9999',\n * networkType: 'WIFI',\n * manufacturer: 'HUAWEI(MHA-L29)',\n * model: 'MHA-L29',\n * systemVersion: 'ANDROID_7.0',\n * locale: 'zh_CN_#Hans',\n * uuid: 'ANDROID_5bc489e5e0effdbd',\n * screenWidth: 320,\n * screenHeight: 640,\n * statusBarHeight: 72,\n * titleBarHeight: 150,\n * imei: '861957039491310',\n * androidId: '5bc489e5e0effdbd',\n * mac: '44:C3:46:2E:9C:F8'\n * }\n * }\n * ```\n * \n * iOS 端关于 networkType 的说明:\n * 这个字段值是拼接的,格式:运营商_网络类型,例如:中国移动_5\n * 运营商的值可能为:\n * \n * 0:未知\n * \n * 1:中国移动\n * \n * 2:中国联通\n * \n * 3:中国电信\n * \n * 9:其他运营商\n * \n * 网络类型值可能为:\n * \n * 0:无网络\n * \n * 1:2G\n * \n * 2:3G\n * \n * 3:4G\n * \n * 4:未知\n * \n * 5:WIFI\n * \n * 6:5G\n */\n getDeviceInfo: true\n});\n\n/***/ }),\n/* 76 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 获取经纬度
\n * 对应native接口:getLocation
\n * 支持版本:18年12月中旬上线版本
\n * 对接人: fangchangquan\n * @method ksBridge.getLocation\n * @category System\n * @version >=1.0.6\n * @example ./apis/system/getLocation.demo\n * @demo system/getLocation\n * @description\n * \n * 调用参数:\n * \n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n *\n * 返回参数:\n *\n * ```\n * {\n * result: 1,\n * data: {\n * latitude: 40.008365156510884,\n * longitude: 116.34678248968665,\n * }\n * }\n * ```\n */\n getLocation: true\n});\n\n/***/ }),\n/* 77 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__lib_sniff__ = __webpack_require__(3);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 检查是否安装某个客户端
\n * 对应native接口:hasInstalledApp
\n * 注意:yoda-js-sdk调用该桥时,内部未做兼容,identifier的值,iOS 传 scheme,Android 传包名
\n * 对接人: songyunlu\n * @method ksBridge.hasInstalledApp\n * @category System\n * @version >=1.0.0\n * @example ./apis/system/hasInstalledApp.demo\n * @demo system/hasInstalledApp\n * @description\n * \n * 调用参数:\n * \n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | identifier | String | 应用名称或包名,Android 填包名,iOS 填 scheme【对于 iOS,待检查的客户端的 scheme 需要在白名单中,可找gaoke确认添加】 | √ | 常用参数 |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n *\n * identifier 参数补充说明:\n * 检查是否安装微信或支付宝时,无论 iOS 还是 Android,identifier 只需传 wechat 或 alipay\n * ks-bridge 内部针对 Android 平台,会自动将其映射到 com.tencent.mm 或 com.eg.android.AlipayGphone\n *\n * 返回参数:\n * \n * ```\n * {\n * result: 1, // 1为已安装\n * }\n * ```\n */\n hasInstalledApp: {\n optHandle: function optHandle(opt) {\n var identifier = opt.identifier || '';\n\n if (__WEBPACK_IMPORTED_MODULE_0__lib_sniff__[\"a\" /* default */].isAndroid) {\n switch (identifier) {\n case 'wechat':\n identifier = 'com.tencent.mm';\n break;\n\n case 'alipay':\n identifier = 'com.eg.android.AlipayGphone';\n break;\n }\n }\n\n opt.identifier = identifier;\n return opt;\n }\n }\n});\n\n/***/ }),\n/* 78 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 打开本地安装的某个app
\n * 使用场景:在客户端中唤起第三方的客户端,仅 Android 支持,iOS 可以考虑通过 scheme 打开
\n * 对应native接口:launchApp
\n * 支持版本:客户端18年07月初上线版本
\n * 对接人: songyunlu\n * @method ksBridge.launchApp\n * @category System\n * @version >=1.0.0\n * @example ./apis/system/launchApp.demo\n * @demo system/launchApp\n * @description\n * \n * 调用参数:\n * \n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | identifier | String | 应用名称或包名 | √ | 常用参数 |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n *\n * 返回参数:\n * ```\n * {\n * // 无意义\n * result: 1\n * }\n * ```\n */\n launchApp: true\n});\n\n/***/ }),\n/* 79 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 向客户端发送免流状态更新事件
\n * 对应native接口:emitFreeTrafficUpdate
\n * 支持版本:客户端预计18年-01月底上线版本,有更新
\n * 对接人: songyunlu\n * @method ksBridge.emitFreeTrafficUpdate\n * @category System\n * @version >=1.0.0\n * @example ./apis/system/emitFreeTrafficUpdate.demo\n * @demo system/emitFreeTrafficUpdate\n * @description\n * \n * 调用参数:\n * \n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | success | Function | 成功回调函数 | X | 常用参数 |\n * | fail | Function | 失败回调函数 | X | 常用参数 |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n *\n */\n emitFreeTrafficUpdate: true\n});\n\n/***/ }),\n/* 80 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 获取设备加密信息
\n * 对应native接口:getDeviceSecretInfo
\n * 对接人:lifang
\n * @method ksBridge.getDeviceSecretInfo\n * @category System\n * @version >=1.0.10\n * @example ./apis/system/getDeviceSecretInfo.demo\n * @demo system/getDeviceSecretInfo\n * @description \n * \n * 调用参数:\n * \n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n **/\n getDeviceSecretInfo: true\n});\n\n/***/ }),\n/* 81 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 扫描条形码
\n * 对应native接口:scanCode
\n * 对接人:chenyuzhe
\n * @method ksBridge.scanCode\n * @category System\n * @version >=1.0.12\n * @example ./apis/system/scanCode.demo\n * @demo system/scanCode\n * @description \n * \n * 调用参数:\n * \n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | scene | String | 业务场景 | X | 数据上报用 |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n **/\n scanCode: true\n});\n\n/***/ }),\n/* 82 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 复制到剪贴板
\n * 对应native接口:setClipBoard
\n * 对接人:chenyuzhe
\n * @method ksBridge.setClipBoard\n * @category System\n * @version >=1.0.12\n * @example ./apis/system/setClipBoard.demo\n * @demo system/setClipBoard\n * @description \n * \n * 调用参数:\n * \n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | text | String | 复制的内容 | X | - |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n **/\n setClipBoard: true\n});\n\n/***/ }),\n/* 83 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 获取已安装app的版本信息.仅Android支持
\n * 对应native接口:installedAppVersion
\n * 对接人:xinyangxi
\n * @method ksBridge.installedAppVersion\n * @category System\n * @version >=1.0.13\n * @example ./apis/system/installedAppVersion.demo\n * @demo system/installedAppVersion\n * @description \n * \n * 调用参数:\n * \n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | identifier | string | android包名 | X | - |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n * \n * 返回参数:\n * \n * ```\n * {\n * result: 1,\n * appVersion: '7.0.3'\n * }\n * ```\n **/\n installedAppVersion: true\n});\n\n/***/ }),\n/* 84 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 获取夜间模式
\n * 对应native接口:getDarkMode
\n * 对接人:yinyong
\n * @method ksBridge.getDarkMode\n * @category System\n * @version >=2.0.1\n * @example ./apis/system/getDarkMode.demo\n * @demo system/getDarkMode\n * @description \n * \n * 调用参数:\n * \n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n * \n * 返回参考:\n * \n * ```json\n * {\n * \"result\": 1,\n * \"darkMode\": true\n * }\n * ```\n * 目前主站深色模式灰度中,未命中的,即使系统已开启深色模式,darkMode 仍为 false,如需测试,测试包摇一摇 abTest 下有相应开关\n * \n * 另外一种同步获取夜间模式的方法是读取名为“darkMode”的cookie,其值为“true”或者“false”。为确保cookie存在,可自行调用injectCookie方法。\n **/\n getDarkMode: true\n});\n\n/***/ }),\n/* 85 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 以系统浏览器方式打开某链接
\n * 对应native接口:openBrowser
\n * 对应版本:7.6.50 及以上版本
\n * 对接人:xinyangxi
\n * @method ksBridge.openBrowser\n * @category System\n * @version >=2.0.1\n * @example ./apis/system/openBrowser.demo\n * @demo system/openBrowser\n * @description \n * \n * 调用参数:\n * \n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | url | String| 要打开的链接url(必须http(s)开头 ) | √ |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n **/\n openBrowser: true\n});\n\n/***/ }),\n/* 86 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 获取ExpTag
\n * 对应native接口:getExpTagTransList
\n * 对接人:android:weiluhao
\n * @method ksBridge.getExpTagTransList\n * @category System\n * @version >=2.0.3\n * @example ./apis/system/getExpTagTransList.demo\n * @demo system/getExpTagTransList\n * @description \n * \n * 调用参数:\n * \n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n **/\n getExpTagTransList: true\n});\n\n/***/ }),\n/* 87 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_extend__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__setPageTitle__ = __webpack_require__(88);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__setStatusBarStyle__ = __webpack_require__(89);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__setPhysicalBackButton__ = __webpack_require__(90);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__showToast__ = __webpack_require__(91);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__showDialog__ = __webpack_require__(92);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__showAlertDialog__ = __webpack_require__(93);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__showConfirmDialog__ = __webpack_require__(94);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__resetTopButtons__ = __webpack_require__(95);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__showBottomSheet__ = __webpack_require__(96);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__setTopLeftBtn__ = __webpack_require__(97);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__setTopLeftSecondBtn__ = __webpack_require__(98);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12__setTopRightBtn__ = __webpack_require__(99);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13__setTopRightSecondBtn__ = __webpack_require__(100);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_14__showPicker__ = __webpack_require__(101);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_15__collapseKeyboard__ = __webpack_require__(102);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_16__businessAction__ = __webpack_require__(103);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_17__hideNavigationBar__ = __webpack_require__(104);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_18__popupToFollow__ = __webpack_require__(105);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ui = Object(__WEBPACK_IMPORTED_MODULE_0__utils_extend__[\"a\" /* default */])(true, __WEBPACK_IMPORTED_MODULE_18__popupToFollow__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_17__hideNavigationBar__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_16__businessAction__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_15__collapseKeyboard__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_1__setPageTitle__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_10__setTopLeftBtn__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_11__setTopLeftSecondBtn__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_12__setTopRightBtn__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_13__setTopRightSecondBtn__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_8__resetTopButtons__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_3__setPhysicalBackButton__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_4__showToast__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_5__showDialog__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_6__showAlertDialog__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_7__showConfirmDialog__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_9__showBottomSheet__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_14__showPicker__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_2__setStatusBarStyle__[\"a\" /* default */]);\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n ui: ui\n});\n\n/***/ }),\n/* 88 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils__ = __webpack_require__(0);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 设置 title
\n * 对应native接口:setPageTitle
\n * 注意:UI接口访问时不限制域名
\n * 对接人: songyunlu\n * @method ksBridge.setPageTitle\n * @category UI\n * @version >=1.0.0\n * @example ./apis/ui/setPageTitle.demo\n * @demo ui/setPageTitle\n * @description\n *\n * titleTextColor、titleBackgroundColor 新增参数,仅支持完整的16进制颜色色值(即#rrggbb 格式),双端 7.3.40 及以上版本支持\n * \n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | title | String | 标题 | √ | - |\n * | titleTextColor | String | 标题颜色 | X | - |\n * | titleBackgroundColor | String | 标题栏背景色 | X | - |\n * \n */\n setPageTitle: {\n optHandle: function optHandle(opt) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__utils__[\"a\" /* assignOptions */])(opt, {\n notPromise: true\n });\n }\n }\n});\n\n/***/ }),\n/* 89 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils__ = __webpack_require__(0);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 设置电池栏图标文字颜色
\n * 对应native接口:setStatusBarStyle
\n * 注意:Android 系统 5.x 以上电池栏背景色是透明的,5.x 及以下版本不支持沉浸式,电池栏背景色固定是黑色
\n * 对接人: songyunlu\n * @method ksBridge.setStatusBarStyle\n * @category UI\n * @version >=1.0.0\n * @example ./apis/ui/setStatusBarStyle.demo\n * @demo ui/setStatusBarStyle\n * @description\n *\n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | style | Number | 状态栏文字颜色, 0:黑色,1: 白色,不支持自定义颜色 | √ | - |\n */\n setStatusBarStyle: {\n optHandle: function optHandle(opt) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__utils__[\"a\" /* assignOptions */])(opt, {\n notPromise: true\n });\n }\n }\n});\n\n/***/ }),\n/* 90 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils__ = __webpack_require__(0);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 安卓返回按钮事件绑定
\n * 对应native接口:setPhysicalBackButton
\n * 注意:仅支持 Android
\n * 对接人: songyunlu\n * @method ksBridge.setPhysicalBackButton\n * @category UI\n * @version >=1.0.0\n * @example ./apis/ui/setPhysicalBackButton.demo\n * @demo ui/setPhysicalBackButton\n * @description\n *\n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | onClick | Function | 按钮点击事件回调,当不传 onClick 回调,将重置设置的事件 | X | - |\n */\n setPhysicalBackButton: {\n optHandle: function optHandle(opt) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__utils__[\"a\" /* assignOptions */])(opt, {\n notPromise: true,\n onClick: Object(__WEBPACK_IMPORTED_MODULE_0__utils__[\"j\" /* isFunction */])(opt.onClick) ? Object(__WEBPACK_IMPORTED_MODULE_0__utils__[\"d\" /* generateUUCallbackFunction */])('setPhysicalBackButton', opt.onClick, true) : null\n });\n }\n }\n});\n\n/***/ }),\n/* 91 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils__ = __webpack_require__(0);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 显示 toast
\n * 对应native接口:showToast
\n * 对接人: songyunlu\n * @method ksBridge.showToast\n * @category UI\n * @version >=1.0.0\n * @example ./apis/ui/showToast.demo\n * @demo ui/showToast\n * @description\n *\n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | type | String | toast类型,normal(灰色),success(绿色),error(红色) | √ | - |\n * | text | String | toast 内容 | √ | text文案长度超过7个字符将不显示icon |\n */\n showToast: {\n optHandle: function optHandle(opt) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__utils__[\"a\" /* assignOptions */])(opt, {\n notPromise: true\n });\n }\n }\n});\n\n/***/ }),\n/* 92 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_extend__ = __webpack_require__(1);\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 显示提示框
\n * 对应native接口:showDialog
\n * 注意:请不要单独使用 negativeButton、neutralButton 或 positiveButton+neutralButton、negativeButton+neutralButton 组合使用,否则会导致 app 崩溃
\n * 对接人: songyunlu\n * @method ksBridge.showDialog\n * @category UI\n * @version >=1.0.0\n * @example ./apis/ui/showDialog.demo\n * @demo ui/showDialog\n * @description\n *\n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | title | String | 提示框标题 | X | - |\n * | content | String | 提示框内容 | √ | - |\n * | positiveButton | Object | 确认按钮设置 | ? | 参见示例代码 |\n * | negativeButton | Object | 取消按钮设置 | X | 参见示例代码 |\n * | neutralButton | Object | ? | X | 参见示例代码 |\n */\n showDialog: {\n key: 'showDialog',\n optHandle: function optHandle(opt) {\n var tmp = {\n notPromise: true\n };\n tmp = Object(__WEBPACK_IMPORTED_MODULE_1__utils_extend__[\"a\" /* default */])(true, tmp, opt);\n var _tmp = tmp,\n positiveButton = _tmp.positiveButton,\n negativeButton = _tmp.negativeButton,\n neutralButton = _tmp.neutralButton;\n\n if (positiveButton) {\n tmp.positiveButton = Object(__WEBPACK_IMPORTED_MODULE_0__utils__[\"m\" /* transformFuncToURL */])('showDialog', positiveButton);\n }\n\n if (negativeButton) {\n tmp.negativeButton = Object(__WEBPACK_IMPORTED_MODULE_0__utils__[\"m\" /* transformFuncToURL */])('showDialog', negativeButton);\n }\n\n if (neutralButton) {\n tmp.neutralButton = Object(__WEBPACK_IMPORTED_MODULE_0__utils__[\"m\" /* transformFuncToURL */])('showDialog', neutralButton);\n }\n\n return tmp;\n }\n }\n});\n\n/***/ }),\n/* 93 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_extend__ = __webpack_require__(1);\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 显示提示框
\n * 对应native接口:showDialog
\n * 注意:基于 showDialog 组件进行的二次封装,简化调用
\n * 对接人: songyunlu\n * @method ksBridge.showAlertDialog\n * @category UI\n * @version >=1.0.0\n * @example ./apis/ui/showAlertDialog.demo\n * @demo ui/showAlertDialog\n * @description\n *\n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | title | String | 提示框标题 | X | - |\n * | content | String | 提示框内容 | √ | - |\n * | confirmBtnText | String | 确定按钮文案,默认为 '确定' | X | - |\n * | onConfirm | Function | 确认回调事件 | √ | - |\n */\n showAlertDialog: {\n key: 'showDialog',\n optHandle: function optHandle(opt) {\n var tmp = {\n notPromise: true,\n title: '',\n content: '',\n confirmBtnText: '确定',\n onConfirm: function onConfirm() {}\n };\n tmp = Object(__WEBPACK_IMPORTED_MODULE_1__utils_extend__[\"a\" /* default */])(true, tmp, opt);\n return {\n title: tmp.title,\n content: tmp.content,\n positiveButton: Object(__WEBPACK_IMPORTED_MODULE_0__utils__[\"m\" /* transformFuncToURL */])('showAlertDialog', {\n text: tmp.confirmBtnText,\n actions: [{\n actionType: 'JS_CALLBACK',\n url: tmp.onConfirm\n }]\n })\n };\n }\n }\n});\n\n/***/ }),\n/* 94 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_extend__ = __webpack_require__(1);\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 显示提示框
\n * 对应native接口:showDialog
\n * 注意:基于 showDialog 组件进行的二次封装,简化调用
\n * 对接人: songyunlu\n * @method ksBridge.showConfirmDialog\n * @category UI\n * @version >=1.0.0\n * @example ./apis/ui/showConfirmDialog.demo\n * @demo ui/showConfirmDialog\n * @description\n *\n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | title | String | 提示框标题 | X | - |\n * | content | String | 提示框内容 | √ | - |\n * | confirmBtnText | String | 确定按钮文案,默认为 '确定' | X | - |\n * | cancelBtnText | String | 取消按钮文案,默认为 '取消' | X | - |\n * | onConfirm | Function | 确认回调事件 | √ | - |\n * | onCancel | Function | 取消回调事件 | √ | - |\n */\n showConfirmDialog: {\n key: 'showDialog',\n optHandle: function optHandle(opt) {\n var tmp = {\n notPromise: true,\n title: '',\n content: '',\n confirmBtnText: '确定',\n cancelBtnText: '取消',\n onConfirm: function onConfirm() {},\n onCancel: function onCancel() {}\n };\n tmp = Object(__WEBPACK_IMPORTED_MODULE_1__utils_extend__[\"a\" /* default */])(true, tmp, opt);\n return {\n title: tmp.title,\n content: tmp.content,\n cancelable: tmp.cancelable,\n positiveButton: Object(__WEBPACK_IMPORTED_MODULE_0__utils__[\"m\" /* transformFuncToURL */])('showConfirmDialog', {\n text: tmp.confirmBtnText,\n actions: [{\n actionType: 'JS_CALLBACK',\n url: tmp.onConfirm\n }]\n }),\n negativeButton: Object(__WEBPACK_IMPORTED_MODULE_0__utils__[\"m\" /* transformFuncToURL */])('showConfirmDialog', {\n text: tmp.cancelBtnText,\n actions: [{\n actionType: 'JS_CALLBACK',\n url: tmp.onCancel\n }]\n })\n };\n }\n }\n});\n\n/***/ }),\n/* 95 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 重设顶部nav bar的按钮状态
\n * 对应native接口:resetTopButtons
\n * 支持版本:客户端18.05月版本
\n * 对接人: songyunlu\n * @method ksBridge.resetTopButtons\n * @category UI\n * @version >=1.0.0\n * @example ./apis/ui/resetTopButtons.demo\n * @demo ui/resetTopButtons\n * @description\n *\n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n */\n resetTopButtons: true\n});\n\n/***/ }),\n/* 96 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 显示底部ActionSheet
\n * 对应native接口:showBottomSheet
\n * 注意:Native 固定添加取消操作,点击取消回调无value
\n * 对接人: songyunlu\n * @method ksBridge.showBottomSheet\n * @category UI\n * @version >=1.0.0\n * @example ./apis/ui/showBottomSheet.demo\n * @demo ui/showBottomSheet\n * @description\n *\n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | title | String | 标题 | √ | - |\n * | options | Object | 选项,对象数组 | √ | 例如 { text: '1', value: 1, type: 0 } |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n * \n * 返回参数:\n * ```\n * {\n * result: 1,\n * error_msg: '',\n * // 选项的value值\n * value: ''\n * }\n * ```\n */\n showBottomSheet: true\n});\n\n/***/ }),\n/* 97 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils__ = __webpack_require__(0);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 设置顶部左侧按钮
\n * 对应native接口:setTopLeftBtn
\n * 注意:不调用时默认为back类型, 每次打开页面时使用默认配置, 不使用上个页面的配置
\n * 对接人: songyunlu\n * @method ksBridge.setTopLeftBtn\n * @category UI\n * @version >=1.0.0\n * @example ./apis/ui/setTopLeftBtn.demo\n * @demo ui/setTopLeftBtn\n * @description\n *\n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | show | Bool | 是否显示 | √ | - |\n * | icon | String | wallet,back,camera,chat,close,edit,question,info,more,refresh,share,custom,done,可选,默认为 back | X | iOS: 支持icon和text同时设置,Android: 存在icon时使用icon, 否则使用text |\n * | iconUrl | Object | icon为custom是,指定图片url,{ normal: '默认按钮图片url', pressed: '点击时按钮图片url,未设置时使用normal的设置' } | X | - |\n * | text | String | 可为空 | X | - |\n * | textColor | String | 文字颜色, 仅作用于text类button | X | - |\n * | onClick | Function | 按钮点击事件回调 | X | - |\n * \n * 注意:\n * 在 Android 5 且设置 layoutType=4 时,沉浸式有兼容问题,导航条虽然隐藏但是会盖在 h5 上面,导致导航栏位置点击不响应,可以考虑使用 hideNavigationBar 隐藏\n */\n setTopLeftBtn: {\n optHandle: function optHandle(opt) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__utils__[\"a\" /* assignOptions */])(opt, {\n notPromise: true,\n notDelete: true,\n onClick: Object(__WEBPACK_IMPORTED_MODULE_0__utils__[\"j\" /* isFunction */])(opt.onClick) ? Object(__WEBPACK_IMPORTED_MODULE_0__utils__[\"d\" /* generateUUCallbackFunction */])('setTopLeftBtn', opt.onClick, true) : null\n });\n }\n }\n});\n\n/***/ }),\n/* 98 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils__ = __webpack_require__(0);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 设置左侧第二个按钮
\n * 对应native接口:setTopLeftSecondBtn
\n * 对接人: songyunlu\n * @method ksBridge.setTopLeftSecondBtn\n * @category UI\n * @version >=1.0.0\n * @example ./apis/ui/setTopLeftSecondBtn.demo\n * @demo ui/setTopLeftSecondBtn\n * @description\n *\n * 调用参数:\n * 与 setTopLeftBtn 相同\n * **android 平台仅在广告详情页可用**\n */\n setTopLeftSecondBtn: {\n optHandle: function optHandle(opt) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__utils__[\"a\" /* assignOptions */])(opt, {\n notPromise: true,\n notDelete: true,\n onClick: Object(__WEBPACK_IMPORTED_MODULE_0__utils__[\"j\" /* isFunction */])(opt.onClick) ? Object(__WEBPACK_IMPORTED_MODULE_0__utils__[\"d\" /* generateUUCallbackFunction */])('setTopLeftSecondBtn', opt.onClick, true) : null\n });\n }\n }\n});\n\n/***/ }),\n/* 99 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils__ = __webpack_require__(0);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 设置顶部右侧按钮
\n * 对应native接口:setTopRightBtn
\n * 注意:不调用时默认为back类型, 每次打开页面时使用默认配置, 不使用上个页面的配置
\n * 对接人: songyunlu\n * @method ksBridge.setTopRightBtn\n * @category UI\n * @version >=1.0.0\n * @example ./apis/ui/setTopRightBtn.demo\n * @demo ui/setTopRightBtn\n * @description\n *\n * 调用参数:\n * 与 setTopLeftBtn 相同\n */\n setTopRightBtn: {\n optHandle: function optHandle(opt) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__utils__[\"a\" /* assignOptions */])(opt, {\n notPromise: true,\n notDelete: true,\n onClick: Object(__WEBPACK_IMPORTED_MODULE_0__utils__[\"j\" /* isFunction */])(opt.onClick) ? Object(__WEBPACK_IMPORTED_MODULE_0__utils__[\"d\" /* generateUUCallbackFunction */])('setTopRightBtn', opt.onClick, true) : null\n });\n }\n }\n});\n\n/***/ }),\n/* 100 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils__ = __webpack_require__(0);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 设置右侧第二个按钮
\n * 对应native接口:setTopRightSecondBtn
\n * 对接人: songyunlu\n * @method ksBridge.setTopRightSecondBtn\n * @category UI\n * @version >=1.0.0\n * @example ./apis/ui/setTopRightSecondBtn.demo\n * @demo ui/setTopRightSecondBtn\n * @description\n *\n * 注意:\n * iOS yoda 容器中,需要单独给 icon 字段设置为 none【否则会多个✅图标,安卓不影响】\n * \n * 调用参数:\n * 与 setTopLeftBtn 相同\n */\n setTopRightSecondBtn: {\n optHandle: function optHandle(opt) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__utils__[\"a\" /* assignOptions */])(opt, {\n notPromise: true,\n notDelete: true,\n onClick: Object(__WEBPACK_IMPORTED_MODULE_0__utils__[\"j\" /* isFunction */])(opt.onClick) ? Object(__WEBPACK_IMPORTED_MODULE_0__utils__[\"d\" /* generateUUCallbackFunction */])('setTopRightSecondBtn', opt.onClick, true) : null\n });\n }\n }\n});\n\n/***/ }),\n/* 101 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 通用单选组件
\n * 对应native接口:showPicker
\n * 对接人: songyunlu\n * @method ksBridge.showPicker\n * @category UI\n * @version >=1.0.0\n * @example ./apis/ui/showPicker.demo\n * @demo ui/showPicker\n * @description\n *\n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | param | Object | picker 内容配置 | √ | - |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n * \n * 返回参数:\n * ```\n * {\n * // 1成功 0用户取消\n * result: 1,\n * error_msg: '',\n * data: {\n * // selectedData是个数组,分别是选中的第一列的值,第二列的值,第三列的值\n * selectedData: [\n * { //选中的第一列的值\n * text: '',\n * id: ''\n * },\n * { //选中的第二列的值\n * text: '',\n * id: ''\n * }\n * ]\n * }\n * }\n * ```\n */\n showPicker: true\n});\n\n/***/ }),\n/* 102 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils__ = __webpack_require__(0);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 收起软键盘
\n * 对应native接口:collapseKeyboard
\n * 对接人:zhengmeiyu
\n * @method ksBridge.collapseKeyboard\n * @category UI\n * @version >=1.0.4\n * @example ./apis/ui/collapseKeyboard.demo\n * @demo ui/collapseKeyboard\n **/\n collapseKeyboard: {\n optHandle: function optHandle() {\n var opt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return Object(__WEBPACK_IMPORTED_MODULE_0__utils__[\"a\" /* assignOptions */])(opt, {\n notPromise: true\n });\n }\n }\n});\n\n/***/ }),\n/* 103 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 唤起native时间控件
\n * 对应native接口:businessAction
\n * 对接人:liguohui
\n * @method ksBridge.businessAction\n * @category UI\n * @version >=1.0.16\n * @example ./apis/ui/businessAction.demo\n * @demo ui/businessAction\n * @description \n * \n * 调用参数:\n * \n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | action | String | bridge名称 | true | LaunchDatePicker |\n * | data | JSON | 相关参数 | true | - |\n * | complete | Function | 结束回调| false | - |\n * \n * data内容:\n * \n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | datePickerInfo | Object | 参数容器 | true ||\n * \n * datePickerInfo内容:\n * \n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | title | String | 标题| true ||\n * | startTimestamp | Number | 可选范围开始时间| false |时间戳ms|\n * | endTimestamp | Number | 可选范围结束时间 | false |时间戳ms|\n * | defaultTimestamp | Number | 默认时间 | false |时间戳ms|\n **/\n businessAction: true\n});\n\n/***/ }),\n/* 104 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 隐藏导航栏区域,对所有layoutType生效
\n * 对应native接口:hideNavigationBar
\n * 对接人:lianxin
\n * @method ksBridge.hideNavigationBar\n * @category UI\n * @version >=1.0.16\n * @example ./apis/ui/hideNavigationBar.demo\n * @demo ui/hideNavigationBar\n * @description \n * \n * 调用参数:\n * \n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n **/\n hideNavigationBar: true\n});\n\n/***/ }),\n/* 105 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 弹出关注弹窗
\n * 对应native接口:popupToFollow
\n * 对接人:houjia
\n * @method ksBridge.popupToFollow\n * @category UI\n * @version >=2.0.2\n * @example ./apis/ui/popupToFollow.demo\n * @demo ui/popupToFollow\n * @description \n * \n * * 调用参数:\n * \n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | userAvatar | String | 用户头像 | √ | - |\n * | userName | String | 用户名 | √ | - |\n * | fansCount | String | 粉丝数 | √ | - |\n * | recommendReason | String | 推荐理由 | √ | - |\n * | userId | Number | 用户id | √ | - |\n * | followReferStack | String | 关注来源 | √ | - |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n * \n * \n * [购买成功推荐关注](https://wiki.corp.kuaishou.com/pages/viewpage.action?pageId=634623648)\n * \n * ``` json\n * {\n * \t\"result\": 0, \n * \t\"data\":{\n * \t\t\"code\":1\n * \t}\n * }\n * ```\n * \n * * result定义: \n * // -1:native执行失败; \n * // 1:native执行成功 \n * \n * * code 取值定义: \n * // -1: 关注失败; \n * // 1: 弹窗曝光 \n * // 2: 点击关闭按钮 \n * // 4: 点击关注按钮 \n * // 5: 关注成功\n **/\n popupToFollow: true\n});\n\n/***/ }),\n/* 106 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_extend__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__loadUrlOnNewPage__ = __webpack_require__(107);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__joinGroup__ = __webpack_require__(108);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__setSlideBack__ = __webpack_require__(109);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__setMiddleSlideBack__ = __webpack_require__(110);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__popBack__ = __webpack_require__(111);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__exitWebView__ = __webpack_require__(112);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__exitCurrentWebview__ = __webpack_require__(113);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__setBounceStyle__ = __webpack_require__(114);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__openYodaPage__ = __webpack_require__(115);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10__loadUrlOnNewFansTopPage__ = __webpack_require__(116);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__exitAll__ = __webpack_require__(117);\n\n\n\n\n\n\n\n\n\n\n\n\nvar webview = Object(__WEBPACK_IMPORTED_MODULE_0__utils_extend__[\"a\" /* default */])(true, __WEBPACK_IMPORTED_MODULE_11__exitAll__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_10__loadUrlOnNewFansTopPage__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_9__openYodaPage__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_8__setBounceStyle__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_7__exitCurrentWebview__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_5__popBack__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_6__exitWebView__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_1__loadUrlOnNewPage__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_2__joinGroup__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_4__setMiddleSlideBack__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_3__setSlideBack__[\"a\" /* default */]);\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n webview: webview\n});\n\n/***/ }),\n/* 107 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils__ = __webpack_require__(0);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 打开新的 webview
\n * 对应native接口:loadUrlOnNewPage
\n * 对接人: songyunlu\n * @method ksBridge.loadUrlOnNewPage\n * @category WebView\n * @version >=1.0.0\n * @example ./apis/webview/loadUrlOnNewPage.demo\n * @demo webview/loadUrlOnNewPage\n * @description\n * \n * 调用参数:\n * \n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | url | String | 新打开的页面的 URL 地址 | √ | 常用参数 |\n * | type | String | 类型? | √ | 常用参数,值可选 'close' 或 'back' |\n *\n */\n loadUrlOnNewPage: {\n optHandle: function optHandle(opt) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__utils__[\"a\" /* assignOptions */])(opt, {\n notPromise: true\n });\n }\n }\n});\n\n/***/ }),\n/* 108 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 调起bridge加入群聊
\n * 对应native接口:joinGroup
\n * 对接人: hanchen\n * @method ksBridge.joinGroup\n * @category WebView\n * @version >=1.0.1\n * @example ./apis/webview/joinGroup.demo\n * @demo webview/joinGroup\n * @description\n * \n * 调用参数:\n * \n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | groupid | String | 群聊id | √ | - |\n * | signData | String | 标识群聊分享信息的签名 | √ | - |\n * | inviterid | String | 邀请人id | √ | - |\n * | closeWebViewOnSuccess | Bool | 是否在成功调起bridge后关闭当前页面webview | X | 默认值:true |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n *\n */\n joinGroup: true\n});\n\n/***/ }),\n/* 109 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils__ = __webpack_require__(0);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 设置页面是否开启滑动返回
\n * 对应native接口:setSlideBack
\n * 注意:控制不能???
\n * 对接人: songyunlu\n * @method ksBridge.setSlideBack\n * @category WebView\n * @version >=1.0.0\n * @example ./apis/webview/setSlideBack.demo\n * @demo webview/setSlideBack\n * @description\n * \n * 调用参数:\n * \n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | enabled | Bool | 是否开启 | √ | - |\n *\n */\n setSlideBack: {\n optHandle: function optHandle(opt) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__utils__[\"a\" /* assignOptions */])(opt, {\n notPromise: true\n });\n }\n }\n});\n\n/***/ }),\n/* 110 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils__ = __webpack_require__(0);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 设置页面中部滑动返回功能
\n * 对应native接口:setMiddleSlideBack
\n * 注意:边缘返回不受控制,仅 iOS 支持
\n * 对接人: songyunlu\n * @method ksBridge.setMiddleSlideBack\n * @category WebView\n * @version >=1.0.0\n * @example ./apis/webview/setMiddleSlideBack.demo\n * @demo webview/setMiddleSlideBack\n * @description\n * \n * 调用参数:\n * \n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | enabled | Bool | 打开滑动返回,false关闭滑动返回 | √ | - |\n *\n */\n setMiddleSlideBack: {\n optHandle: function optHandle(opt) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__utils__[\"a\" /* assignOptions */])(opt, {\n notPromise: true\n });\n }\n }\n});\n\n/***/ }),\n/* 111 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils__ = __webpack_require__(0);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 退出
\n * 对应native接口:popBack
\n * 注意:如果当前是第一个,就退出webview,否则就history.back()
\n * 对接人: songyunlu\n * @method ksBridge.popBack\n * @category WebView\n * @version >=1.0.0\n * @example ./apis/webview/popBack.demo\n * @demo webview/popBack\n * @description\n * \n */\n popBack: {\n optHandle: function optHandle(opt) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__utils__[\"a\" /* assignOptions */])(opt, {\n notPromise: true,\n // 因为这种参数约定不规范的约定太恶心\n // 所以我决定用这个恶心的使用方式来强烈提示\n // 一定要规范定义和native的交互参数\n // 这两个桥不需要参数\n '__self__': false\n });\n }\n }\n});\n\n/***/ }),\n/* 112 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils__ = __webpack_require__(0);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 退出当前web page
\n * 对应native接口:exitWebView
\n * 注意:ios如果不在当前webview, exitWebview可能会失效
\n * 对接人: songyunlu\n * @method ksBridge.exitWebView\n * @category WebView\n * @version >=1.0.0\n * @example ./apis/webview/exitWebView.demo\n * @demo webview/exitWebView\n */\n exitWebView: {\n optHandle: function optHandle(opt) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__utils__[\"a\" /* assignOptions */])(opt, {\n notPromise: true,\n // 因为这种参数约定不规范的约定太恶心\n // 所以我决定用这个恶心的使用方式来强烈提示\n // 一定要规范定义和native的交互参数\n // 这两个桥不需要参数\n '__self__': false\n });\n }\n }\n});\n\n/***/ }),\n/* 113 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 关闭执行该代码的webview
\n * 对应native接口:exitCurrentWebview
\n * 对接人:leijie
\n * @method ksBridge.exitCurrentWebview\n * @category WebView\n * @version >=1.0.16\n * @example ./apis/webview/exitCurrentWebview.demo\n * @demo webview/exitCurrentWebview\n * @description \n * \n * 作用与 exitWebView 类似\n * \n * 使用场景:当前 h5 页面将打开一个 native 页,同时需要关闭当前 h5 页面时,Android 调用 exitWebView,iOS 使用 exitCurrentWebview 即可。\n * \n * 新增 exitCurrentWebview 的原因是因为 iOS 端调用 exitWebView 会关闭路由堆栈最顶上的页面,即新开的 native 页,考虑改动 exitWebView 影响范围过大,故新增 exitCurrentWebview 支持\n * \n * 具体使用可以参考「leijie」封装的模块:http://git.corp.kuaishou.com/leijie/ks-exitwebview,有相关问题可联系 leijie\n **/\n exitCurrentWebview: true\n});\n\n/***/ }),\n/* 114 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 设置页面上下拉回调效果(仅iOS),最低版本6.10.4
\n * 对应native接口:setBounceStyle
\n * 对接人:songyunlu
\n * @method ksBridge.setBounceStyle\n * @category WebView\n * @version >=1.0.16\n * @example ./apis/webview/setBounceStyle.demo\n * @demo webview/setBounceStyle\n * @description \n * \n * 调用参数:\n * \n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | enable | boolean | 是否允许页页上拉下滑,默认为true | Y | 仅iOS生效,安卓都是关闭状态 |\n **/\n setBounceStyle: true\n});\n\n/***/ }),\n/* 115 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils__ = __webpack_require__(0);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 用 yoda webview 打开页面
\n * 对应native接口:openYodaPage
\n * 注意:不推荐使用,请直接使用 loadUrlOnNewPage
\n * 对接人: fangchangquan\n * @method ksBridge.openYodaPage\n * @category WebView\n * @version >=1.0.18\n * @example ./apis/webview/openYodaPage.demo\n * @demo webview/openYodaPage\n * @description\n * \n * 调用参数:\n * \n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | bizId | String | bizId有对应的url和launchOptions,如果继续传url和launchOptions则会覆盖bizId中相应的配置建议传了bizId就不要传url和launchOption,防止后续更新线上配置不能影响到这里 | X | - |\n * | url | String | 新打开的页面的 URL 地址,指定了bizId 可为空 | √ | 常用参数 |\n * | launchOptions | Object | webview 相关的配置,参考http://zt.corp.kuaishou.com/user/document/detail?serviceId=8&portalType=1&docId=113 | X | - |\n * | data | Object | 携带给新 webview 的数据,可以被 yoda 的 getLaunchParams bridge 获取 | X | - |\n *\n */\n openYodaPage: {\n optHandle: function optHandle(opt) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__utils__[\"a\" /* assignOptions */])(opt, {\n notPromise: true\n });\n }\n }\n});\n\n/***/ }),\n/* 116 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 在非粉条H5中新打开粉条WebView(仅iOS支持)
\n * 对应native接口:loadUrlOnNewFansTopPage
\n * 对接人:zhaoyang03
\n * @method ksBridge.loadUrlOnNewFansTopPage\n * @category WebView\n * @version >=2.0.1\n * @example ./apis/webview/loadUrlOnNewFansTopPage.demo\n * @demo webview/loadUrlOnNewFansTopPage\n * @description \n * \n * 调用参数:\n * \n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | url | String | 打开新的H5链接 | √ | - |\n * | type| String | 类型 | √ | 常用参数,值可选 'close' 或 'back'|\n **/\n loadUrlOnNewFansTopPage: true\n});\n\n/***/ }),\n/* 117 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 退出所有webview(仅iOS支持)
\n * 对应native接口:exitAll
\n * 对接人:zhaoyang03
\n * @method ksBridge.exitAll\n * @category WebView\n * @version >=2.0.1\n * @example ./apis/webview/exitAll.demo\n * @demo webview/exitAll\n * @description \n * \n **/\n exitAll: true\n});\n\n/***/ }),\n/* 118 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_extend__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__on__ = __webpack_require__(119);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__addEventListener__ = __webpack_require__(120);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__off__ = __webpack_require__(121);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__removeEventListener__ = __webpack_require__(122);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__emit__ = __webpack_require__(123);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__dispatchEvent__ = __webpack_require__(124);\n\n\n\n\n\n\n\nvar event = Object(__WEBPACK_IMPORTED_MODULE_0__utils_extend__[\"a\" /* default */])(true, __WEBPACK_IMPORTED_MODULE_1__on__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_2__addEventListener__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_3__off__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_4__removeEventListener__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_5__emit__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_6__dispatchEvent__[\"a\" /* default */]);\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n event: event\n});\n\n/***/ }),\n/* 119 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils__ = __webpack_require__(0);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 监听事件
\n * 使用场景:页面监听一个事件,由客户端触发或前端通过 emit 方法来触发事件回调
\n * 注意:on、off 方法指定回调 handler 时,使用方式与 addEventListener、removeEventListener 类似,不能传匿名函数
\n * 对应native接口:on
\n * 对接人: fangchangquan\n * @method ksBridge.on\n * @category Event\n * @version >=1.0.0\n * @example ./apis/event/on.demo\n * @demo event/on\n * @description\n *\n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | type | String | 事件名称,支持客户端定义的事件,也可以自定义 | √ | 客户端定义的事件详见下文 |\n * | handler | Function | type 对应的事件的回调 | √ | - |\n * | success | Function | on 调用的成功回调 | X | - |\n * | fail | Function | on 调用的失败回调 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n *\n * | type | 可能的 value | 解释 | 备注 |\n * | :--: | :--: | :--: |:--: |\n * | native_pageFinished | | 加载页面完毕 | |\n * | native_background | | 进入后台 | |\n * | native_foreground | | 进入前台 | |\n * | native_leave | | 切换到App内其它页面(or webview) | |\n * | native_reentry | | 从其他页面(or webview)切换回来 | |\n * | native_loadPage | | 在当前webview打开新页面 | |\n * | h5_XXXXXXX | | 由不同webview之间发起和处理的事件,需要H5_前缀 | |\n *\n * 返回参数:\n *\n * on 调用的回调:\n * ```\n * {\n * result: 1\n * }\n * ```\n *\n * handler:\n * 具体的值根据触发事件时回传的数据来定,数据类型与 emit 回传的数据类型一致。\n * ```\n * {\n * key: 'value'\n * }\n * ```\n */\n on: {\n optHandle: function optHandle(opt) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__utils__[\"a\" /* assignOptions */])(opt, {\n notPromise: true,\n handler: Object(__WEBPACK_IMPORTED_MODULE_0__utils__[\"c\" /* generateHandlerFunction */])('on', opt.handler)\n });\n }\n }\n});\n\n/***/ }),\n/* 120 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils__ = __webpack_require__(0);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 监听事件
\n * 使用场景:监听事件
\n * 对应native接口:on
\n * 对接人: fangchangquan\n * @method ksBridge.addEventListener\n * @category Event\n * @version >=2.0.0\n * @example ./apis/event/addEventListener.demo\n * @demo event/addEventListener\n * @description\n * \n * 注意:\n * 调用方式与 on 一样\n * \n * 与 on 的区别:\n * 在主 APP 旧容器中实际是使用 on bridge 进行事件监听,在 yoda 容器中,使用 yoda.event.addEventListener 进行监听\n * 所以使用该方法监听事件时,需要保证该事件在两个 webview 中支持,目前仅支持 data-fetch-change 事件\n */\n addEventListener: {\n key: 'on',\n // 适配 yoda webview 下 event.addEventListener bridge\n yodaBridge: {\n namespace: 'event',\n bridge: 'addEventListener'\n },\n optHandle: function optHandle(opt) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__utils__[\"a\" /* assignOptions */])(opt, {\n notPromise: true,\n handler: Object(__WEBPACK_IMPORTED_MODULE_0__utils__[\"c\" /* generateHandlerFunction */])('addEventListener', opt.handler)\n });\n }\n }\n});\n\n/***/ }),\n/* 121 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils__ = __webpack_require__(0);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 解绑事件
\n * 注意:on、off 方法指定回调 handler 时,使用方式与 addEventListener、removeEventListener 类似,不能传匿名函数
\n * 对应native接口:off
\n * 对接人: fangchangquan\n * @method ksBridge.off\n * @category Event\n * @version >=1.0.0\n * @example ./apis/event/off.demo\n * @demo event/off\n * @description\n *\n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | type | String | 事件名称,支持客户端定义的事件,也可以自定义 | X | 客户端事件请查阅 on 方法相关说明 |\n * | handler | Function | type 对应的事件的回调 | X | 解绑 handler 需要与调用 on 监听时传的 handler 为同一个回调 |\n * | success | Function | on 调用的成功回调 | X | - |\n * | fail | Function | on 调用的失败回调 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n * \n * off 解绑规则:\n * 如果只有type存在,则解绑该type下所有handler,如果只有handler存在,则解绑所有type下的该handler,\n * 如果type,handler都有, 则只解绑该type下的该handler;如果type,handler都不存在, 则清除所有通过on绑定的事件\n */\n off: {\n optHandle: function optHandle(opt) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__utils__[\"a\" /* assignOptions */])(opt, {\n notPromise: true,\n handler: Object(__WEBPACK_IMPORTED_MODULE_0__utils__[\"c\" /* generateHandlerFunction */])('off', opt.handler)\n });\n }\n }\n});\n\n/***/ }),\n/* 122 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils__ = __webpack_require__(0);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 解绑事件
\n * 使用场景:解绑事件监听
\n * 对应native接口:off
\n * 对接人: fangchangquan\n * @method ksBridge.removeEventListener\n * @category Event\n * @version >=2.0.0\n * @example ./apis/event/removeEventListener.demo\n * @demo event/removeEventListener\n * @description\n * \n * * 注意:\n * 调用方式与 off 一样\n * \n * 与 off 的区别:\n * 在主 APP 旧容器中实际是使用 off bridge 进行事件解除监听,在 yoda 容器中,使用 yoda.event.removeEventListener 进行监听\n * 所以使用该方法解除监听事件时,需要保证该事件在两个 webview 中支持,目前仅支持 data-fetch-change 事件\n * \n */\n removeEventListener: {\n key: 'off',\n // 适配 yoda webview 下 event.removeEventListener bridge\n yodaBridge: {\n namespace: 'event',\n bridge: 'removeEventListener'\n },\n optHandle: function optHandle(opt) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__utils__[\"a\" /* assignOptions */])(opt, {\n notPromise: true,\n handler: Object(__WEBPACK_IMPORTED_MODULE_0__utils__[\"c\" /* generateHandlerFunction */])('removeEventListener', opt.handler)\n });\n }\n }\n});\n\n/***/ }),\n/* 123 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 发送一个事件,与 on 方法配合使用
\n * 对应native接口:emit
\n * 对接人: fangchangquan\n * @method ksBridge.emit\n * @category Event\n * @version >=1.0.0\n * @example ./apis/event/emit.demo\n * @demo event/emit\n * @description\n *\n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | type | String | 事件名称 | √ | 客户端事件请查阅 on 方法相关说明 |\n * | data | Object/String | 回传的数据 | √ | - |\n * | success | Function | 成功回调 | X | - |\n * | fail | Function | 失败回调 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n *\n */\n emit: {\n optHandle: function optHandle(opt) {\n if (opt && _typeof(opt.data) === 'object' && opt.data !== null) {\n opt.data = JSON.stringify(opt.data);\n }\n\n opt.notPromise = true;\n return opt;\n }\n }\n});\n\n/***/ }),\n/* 124 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__ks_yoda_js_sdk__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__ks_yoda_js_sdk___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__ks_yoda_js_sdk__);\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 发送一个事件,与 addEventListener 方法配合使用
\n * 对应native接口:emit
\n * 对接人: fangchangquan\n * @method ksBridge.dispatchEvent\n * @category Event\n * @version >=1.0.0\n * @example ./apis/event/dispatchEvent.demo\n * @demo event/dispatchEvent\n * @description\n *\n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | type | String | 事件名称 | √ | 客户端事件请查阅 on 方法相关说明 |\n * | data | Object | 回传的数据 | √ | - |\n * | success | Function | 成功回调 | X | - |\n * | fail | Function | 失败回调 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n *\n */\n dispatchEvent: {\n key: 'emit',\n yodaBridge: {\n namespace: 'event',\n bridge: 'dispatchEvent'\n },\n optHandle: function optHandle(opt) {\n if (!__WEBPACK_IMPORTED_MODULE_0__ks_yoda_js_sdk___default.a.isInYoda && opt && _typeof(opt.data) === 'object' && opt.data !== null) {\n opt.data = JSON.stringify(opt.data);\n }\n\n opt.notPromise = true;\n return opt;\n }\n }\n});\n\n/***/ }),\n/* 125 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_extend__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__uploadIntownVideo__ = __webpack_require__(126);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__previewIntownVideo__ = __webpack_require__(127);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__reuploadIntownVideo__ = __webpack_require__(128);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__intownShare__ = __webpack_require__(129);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__accessIntownInfo__ = __webpack_require__(130);\n\n\n\n\n\n\nvar intown = Object(__WEBPACK_IMPORTED_MODULE_0__utils_extend__[\"a\" /* default */])(true, __WEBPACK_IMPORTED_MODULE_1__uploadIntownVideo__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_2__previewIntownVideo__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_3__reuploadIntownVideo__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_4__intownShare__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_5__accessIntownInfo__[\"a\" /* default */]);\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n intown: intown\n});\n\n/***/ }),\n/* 126 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils__ = __webpack_require__(0);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 同乡拍摄并上传视频
\n * 对应native接口:uploadIntownVideo
\n * 注意:回调多次,前端可根据 progress 显示上传进度;桥已下线
\n * 对接人: miaowei\n * @method ksBridge.uploadIntownVideo\n * @category Intown\n * @version >=1.0.0\n * @example ./apis/intown/uploadIntownVideo.demo\n * @demo intown/uploadIntownVideo\n * @description\n * \n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n *\n * 返回参数:\n * ```\n * {\n * // 1: 正常; 0: 取消; 其他: 失败/异常\n * result: 1,\n * data: {\n * // 用于预览、重传\n * uploadId: '94015796-3862-483E-9EA6-FB053D6667B3',\n * // 视频封面 url,progress 为 100 时才有\n * coverUrl: 'http://ali2.a.yximgs.com/bs2/intownImage/MjAyMTY_o.jpg',\n * coverKey: '1531293052316_qUkZkqISQ9qv4QLIVI600ssoq',\n * // 视频 url,progress 为 100 时才有\n * videoUrl: 'http://ali2.a.yximgs.com/bs2/intownVideo/MjAyMTY.mp4',\n * // 进度\n * progress: '100',\n * // 用于预览、重传\n * filePath: '/var/mobile/Containers/Data/Application/27B876FE-7014-4ED2-9A21-D6943CBEA61F/Documents/gifs/152B184D-C134-4B06-B009-F5813AC46EA8.MOV',\n * photoId': '5xwyk9vaarq9w6u'\n * }\n * }\n * ```\n */\n uploadIntownVideo: {\n optHandle: function optHandle(opt) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__utils__[\"a\" /* assignOptions */])(opt, {\n notPromise: true,\n notDelete: true\n });\n }\n }\n});\n\n/***/ }),\n/* 127 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils__ = __webpack_require__(0);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 同乡视频预览
\n * 对应native接口:previewIntownVideo
\n * 注意:桥已下线没有回调
\n * 对接人: miaowei\n * @method ksBridge.previewIntownVideo\n * @category Intown\n * @version >=1.0.0\n * @example ./apis/intown/previewIntownVideo.demo\n * @demo intown/previewIntownVideo\n * @description\n *\n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | uploadId | String | uploadIntownVideo 方法返回的 uploadId | √ | - |\n * | filePath | String | uploadIntownVideo 方法返回的 filePath | √ | - |\n *\n */\n previewIntownVideo: {\n optHandle: function optHandle(opt) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__utils__[\"a\" /* assignOptions */])(opt, {\n notPromise: true\n });\n }\n }\n});\n\n/***/ }),\n/* 128 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils__ = __webpack_require__(0);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 同乡视频预览
\n * 对应native接口:reuploadIntownVideo
\n * 注意:桥已下线
\n * 对接人: miaowei\n * @method ksBridge.reuploadIntownVideo\n * @category Intown\n * @version >=1.0.0\n * @example ./apis/intown/reuploadIntownVideo.demo\n * @demo intown/reuploadIntownVideo\n * @description\n * \n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | uploadId | String | uploadIntownVideo 方法返回的 uploadId | √ | - |\n * | filePath | String | uploadIntownVideo 方法返回的 filePath | √ | - |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n * \n * 返回参数:\n * 与**uploadIntownVideo**一样,详见**uploadIntownVideo**\n */\n reuploadIntownVideo: {\n optHandle: function optHandle(opt) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__utils__[\"a\" /* assignOptions */])(opt, {\n notPromise: true,\n notDelete: true\n });\n }\n }\n});\n\n/***/ }),\n/* 129 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 同乡社交平台分享
\n * 对应native接口:intownShare
\n * 注意:桥已下线
\n * 对接人: miaowei\n * @method ksBridge.intownShare\n * @category Intown\n * @version >=1.0.0\n * @example ./apis/intown/intownShare.demo\n * @demo intown/intownShare\n * @description\n * \n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | hideResultToast | Bool | 分享后是否显示 “分享成功”/“分享失败” 的 toast | X | 新增字段,具体可咨询chenxiaolong |\n * | param | Object | 分享设置,具体可查看示例代码 | √ | - |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n *\n * 返回参数:\n * ```\n * {\n * // 1: 正常; 0: 取消; 其他: 失败/异常\n * result: 1\n * }\n * ```\n */\n intownShare: true\n});\n\n/***/ }),\n/* 130 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 设置或者读取同乡信息
\n * 对应native接口:accessIntownInfo
\n * 注意:桥已下线
\n * 对接人: miaowei\n * @method ksBridge.accessIntownInfo\n * @category Intown\n * @version >=1.0.0\n * @example ./apis/intown/accessIntownInfo.demo\n * @demo intown/accessIntownInfo\n * @description\n * \n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | intownInfo | String | 同乡信息,对象字符串? | X | 设置信息时需要该字段,读取时不需要 |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n *\n * 返回参数:\n * ```\n * {\n * // 1: 正常; 0: 取消; 其他: 失败\n * result: 1,\n * // 读取和设置都需要返回\n * intownInfo : \"{ \\\"intownId\\\": \\\"efa3r23\\\", \\\"mtime\\\": 123131231 }\"\n * }\n * ```\n */\n accessIntownInfo: true\n});\n\n/***/ }),\n/* 131 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_extend__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__startAuthActivity__ = __webpack_require__(132);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__startThirdPartyPaymentForWebActivity__ = __webpack_require__(133);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__downloadThirdPartyAPP__ = __webpack_require__(134);\n\n\n\n\nvar third = Object(__WEBPACK_IMPORTED_MODULE_0__utils_extend__[\"a\" /* default */])(true, __WEBPACK_IMPORTED_MODULE_1__startAuthActivity__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_2__startThirdPartyPaymentForWebActivity__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_3__downloadThirdPartyAPP__[\"a\" /* default */]);\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n third: third\n});\n\n/***/ }),\n/* 132 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 授权
\n * 对应native接口:startAuthActivity
\n * 注意:仅 Android 支持
\n * 对接人: songyunlu\n * @method ksBridge.startAuthActivity\n * @category Third\n * @version >=1.0.0\n * @example ./apis/third/startAuthActivity.demo\n * @demo third/startAuthActivity\n * @description\n * \n * 调用参数:\n * \n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | kwai_request_app_id | String | - | √ | - |\n * | kwai_request_type | String | - | √ | - |\n * | kwai_request_scope | String | - | √ | - |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n *\n * 返回参数:\n * \n * 成功:\n * ```\n * {\n * result: 1,\n * kwai_response_open_id: '',\n * kwai_response_code: '',\n * kwai_response_access_token: ''\n * }\n * ```\n * \n * 失败:\n * ```\n * {\n * result: kwai_response_error_code,\n * error_msg: kwai_response_error_msg\n * }\n * ```\n */\n startAuthActivity: true\n});\n\n/***/ }),\n/* 133 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 支付
\n * 对应native接口:startThirdPartyPaymentForWebActivity
\n * 注意:客户端将要下线,客户端将要下线,客户端将要下线,请不要再使用
\n * 对接人: songyunlu、zhangruifeng(客户端)\n * @method ksBridge.startThirdPartyPaymentForWebActivity\n * @category Third\n * @version >=1.0.0\n * @description\n * \n * 调用参数:\n * \n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | kwai_request_prepay_id | String | - | √ | - |\n * | kwai_order_id | String | - | √ | - |\n * | kwai_request_app_id | String | - | √ | - |\n * | kwai_request_sign | String | - | √ | - |\n * | kwai_request_timestamp | String | - | √ | - |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n *\n * 返回参数:\n * \n * ```\n * {\n * result: 1,\n * error_msg: '',\n * kwai_order_id: ''\n * }\n * ```\n */\n startThirdPartyPaymentForWebActivity: true\n});\n\n/***/ }),\n/* 134 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils__ = __webpack_require__(0);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 下载
\n * 对应native接口:downloadThirdPartyAPP
\n * 注意:仅 Android 支持
\n * 对接人: songyunlu\n * @method ksBridge.downloadThirdPartyAPP\n * @category Third\n * @version >=1.0.0\n * @example ./apis/third/downloadThirdPartyAPP.demo\n * @demo third/downloadThirdPartyAPP\n * @description\n *\n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | action | String | 类型,start 重新开始 resume 继续或重新下载 pause 暂停 stop 停止 | √ | - |\n * | url | String | 下载地址 | √ | 使用 https 协议有问题 |\n * | fileType | String | 安卓上文件类型为video或image放在相册目录, 其它放在Download目录? | X | - |\n * | photoId | Number | ? | X | - |\n * | clickType | Number | actionBar类型 | X | - |\n * | kwai_request_app_id | String | ? | √ | - |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n *\n * 返回参数:\n * 与**download**一致,请参考**download**的文档\n */\n downloadThirdPartyAPP: {\n optHandle: function optHandle(opt) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__utils__[\"a\" /* assignOptions */])(opt, {\n notPromise: true\n });\n }\n }\n});\n\n/***/ }),\n/* 135 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_extend__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__uploadShopVideo__ = __webpack_require__(136);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__previewVideo__ = __webpack_require__(137);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__reuploadShopVideo__ = __webpack_require__(138);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__merchantShare__ = __webpack_require__(139);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__querySessionIsStickyOnTop__ = __webpack_require__(140);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__reqSessionStickyOnTopWithThread__ = __webpack_require__(141);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__getSidToken__ = __webpack_require__(142);\n\n\n\n\n\n\n\n\nvar merchant = Object(__WEBPACK_IMPORTED_MODULE_0__utils_extend__[\"a\" /* default */])(true, __WEBPACK_IMPORTED_MODULE_7__getSidToken__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_6__reqSessionStickyOnTopWithThread__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_5__querySessionIsStickyOnTop__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_1__uploadShopVideo__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_2__previewVideo__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_3__reuploadShopVideo__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_4__merchantShare__[\"a\" /* default */]);\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n merchant: merchant\n});\n\n/***/ }),\n/* 136 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils__ = __webpack_require__(0);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 评价视频上传(支持拍摄,选择视频)
\n * 对应native接口:uploadShopVideo
\n * 支持版本:android >= 6.3.2 ios >= 6.3.0
\n * 注意:回调多次,前端可根据 progress 显示上传进度
\n * 对接人: baiyunpeng\n * @method ksBridge.uploadShopVideo\n * @category Merchant\n * @version >=1.0.14\n * @example ./apis/merchant/uploadShopVideo.demo\n * @demo merchant/uploadShopVideo\n * @description\n * \n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | taskId | String | 任务id | √ | 由特定接口下发 |\n * | token | String | 上传token | √ | 由特定接口下发 |\n * | coverUploadUrl | String | 上传封面图接口 | √ | 由特定接口下发 |\n * | endpointList | Array | 上传配置(客户端skd用) | √ | 由特定接口下发 |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n *\n * 返回参数:\n * ```\n * {\n * // 1: 正常; 0: 取消; 其他: 失败/异常\n * result: 1,\n * data: {\n * // 用于预览、重传\n * uploadId: '94015796-3862-483E-9EA6-FB053D6667B3',\n * // 本地文件路径,用于预览视频\n * filePath: '/var/mobile/Containers/Data/Application/27B876FE-7014-4ED2-9A21-D6943CBEA61F/Documents/gifs/152B184D-C134-4B06-B009-F5813AC46EA8.MOV',\n * // 视频封面 base64值,用于预览展示(只有第一次回调返回,前端可直接使用)\n * thumbnail: 'data:image/png:xxxxxxxxxxxxxxxxx',\n * // 上传状态 success | fail\n * status: 'success'\n * // 进度 (进度100并且success的时候可判定上传成功)\n * progress: '100',\n * \n * }\n * }\n * ```\n */\n uploadShopVideo: {\n optHandle: function optHandle(opt) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__utils__[\"a\" /* assignOptions */])(opt, {\n notPromise: true,\n notDelete: true\n });\n }\n }\n});\n\n/***/ }),\n/* 137 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils__ = __webpack_require__(0);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 评价视频预览
\n * 对应native接口:previewVideo
\n * 注意:没有回调
\n * 支持版本:android >= 6.3.2 ios >= 6.3.0
\n * 对接人: baiyunpeng\n * @method ksBridge.previewVideo\n * @category Merchant\n * @version >=1.0.14\n * @example ./apis/merchant/previewVideo.demo\n * @demo merchant/previewVideo\n * @description\n *\n * 调用参数(优先使用filePath):\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | videoUrl | String | 视频cdn地址 | √ | - |\n * | filePath | String | uploadShopVideo 方法返回的 filePath | √ | - |\n *\n */\n previewVideo: {\n optHandle: function optHandle(opt) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__utils__[\"a\" /* assignOptions */])(opt, {\n notPromise: true\n });\n }\n }\n});\n\n/***/ }),\n/* 138 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils__ = __webpack_require__(0);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 评价视频重传
\n * 对应native接口:reUploadShopVideo
\n * 支持版本:android >= 6.3.2 ios >= 6.3.0
\n * 对接人: baiyunpeng\n * @method ksBridge.reUploadShopVideo\n * @category Merchant\n * @version >=1.0.14\n * @example ./apis/merchant/reUploadShopVideo.demo\n * @demo merchant/reUploadShopVideo\n * @description\n * \n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | uploadId | String | uploadShopVideo 方法返回的 uploadId | X | uploadId与filePath至少填写1个,如果都有优先使用filePath |\n * | filePath | String | uploadShopVideo 方法返回的 filePath | X | - |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n * \n * 返回参数:\n * 与**uploadShopVideo**一样,详见**uploadShopVideo**\n */\n reUploadShopVideo: {\n optHandle: function optHandle(opt) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__utils__[\"a\" /* assignOptions */])(opt, {\n notPromise: true,\n notDelete: true\n });\n }\n }\n});\n\n/***/ }),\n/* 139 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 快手电商定制化分享
\n * 对应native接口:merchantShare
\n * 支持版本:android >= 6.5.3 ios >= 6.5.6
\n * 对接人: baiyunpeng\n * @method ksBridge.merchantShare\n * @category Merchant\n * @version >=1.0.14\n * @example ./apis/merchant/merchantShare.demo\n * @demo merchant/merchantShare\n * @description\n * \n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | param | Object | 分享设置,具体可查看示例代码 | √ | - |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n *\n * 返回参数:\n * ```\n * {\n * // 1: 正常; 0: 取消; 其他: 失败/异常\n * result: 1\n * }\n * ```\n */\n merchantShare: true\n});\n\n/***/ }),\n/* 140 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 获取某个会话在私信是否处于置顶状态
\n * 对应native接口:querySessionIsStickyOnTop
\n * 对接人:chenjihong
\n * @method ksBridge.querySessionIsStickyOnTop\n * @category Merchant\n * @version >=1.0.15\n * @example ./apis/merchant/querySessionIsStickyOnTop.demo\n * @demo merchant/querySessionIsStickyOnTop\n * @description \n * \n * 调用参数:\n * \n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | threadId | String | 会话ID | √ | - |\n * | type | Number | 聊天类型,目前仅支持0(单聊)和4(群聊) | √ | - |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n **/\n querySessionIsStickyOnTop: true\n});\n\n/***/ }),\n/* 141 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 对指定会话进行置顶/取消置顶操作
\n * 对应native接口:reqSessionStickyOnTopWithThread
\n * 对接人:chenjihong
\n * @method ksBridge.reqSessionStickyOnTopWithThread\n * @category Merchant\n * @version >=1.0.15\n * @example ./apis/merchant/reqSessionStickyOnTopWithThread.demo\n * @demo merchant/reqSessionStickyOnTopWithThread\n * @description \n * \n * 调用参数:\n * \n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | threadId | String | 会话ID | √ | - |\n * | type | Number | 聊天类型,目前仅支持0(单聊)和4(群聊) | √ | - |\n * | stickyOnTop | Boolean | 是否置顶, true: 置顶,false: 取消置顶 | √ | - |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n **/\n reqSessionStickyOnTopWithThread: true\n});\n\n/***/ }),\n/* 142 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n /**\n * 获取Token
\n * 对应native接口:getSidToken
\n * 对接人: chenjihong\n * @method ksBridge.getSidToken\n * @category Merchant\n * @version >=1.0.18\n * @example ./apis/merchant/getSidToken.demo\n * @demo merchant/getSidToken\n * @description\n * \n * 注意:\n * \n * 如果业务方的H5的域名是kuaishou.com\\kwaishop.com\\kwaixiaodian.com 3个域名 无需申请直接用\n * 如果不是上面的3个域名,就需要找安全的 @liaoxinxi @huanghao 评估是否有xss注入风险后才能使用\n * \n * 调用参数:\n *\n * | 参数 | 类型 | 描述 | 必选 | 注明 |\n * | :--: | :--: | :--: | :--: | :--: |\n * | sid | String | 现在只支持 kuaishou.shop.im | √ | - |\n * | forceRefresh | Bool | 是true, 则会发起网络请求最新的token;是false,则获取本地,如果本地为空,再去请求网络。 | √ | - |\n * | success | Function | 成功回调函数 | X | - |\n * | fail | Function | 失败回调函数 | X | - |\n * | complete | Function | 回调函数,默认都会执行 | X | - |\n *\n * 返回参数:\n * 如果传入的sid 参数不是 kuaishou.shop.im , 则返回401的错误码。如果是后端返回,则返回后端的错误码;如果是未知,则返回412 未知错误码\n * 如果传入的sid 为kuaishou.shop.im, 则返回 { \"result\":1 , \"token\" :\"xxxxx\",\"ssecurity\" : \"xxxxx\"}\n * \n */\n getSidToken: true\n});\n\n/***/ }),\n/* 143 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = request;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__index__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__extend__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__stringify__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__URLSearchParam__ = __webpack_require__(144);\n\n\n\n\nfunction request(config) {\n var defaultConfig = {\n method: 'post',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json'\n },\n timeout: 30000,\n withCredentials: true,\n transformRequest: [function (data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (Object(__WEBPACK_IMPORTED_MODULE_0__index__[\"k\" /* isObject */])(data)) {\n if (headers['Content-Type'] && headers['Content-Type'].indexOf('application/x-www-form-urlencoded') > -1) {\n var params = new __WEBPACK_IMPORTED_MODULE_3__URLSearchParam__[\"a\" /* default */]();\n Object.keys(data).forEach(function (key) {\n params.append(key, data[key]);\n });\n return params.toString();\n }\n\n return Object(__WEBPACK_IMPORTED_MODULE_2__stringify__[\"a\" /* default */])(data);\n }\n\n return data;\n }],\n transformResponse: [function (data) {\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (e) {\n /* Ignore */\n }\n }\n\n return data;\n }]\n };\n config = Object(__WEBPACK_IMPORTED_MODULE_1__extend__[\"a\" /* default */])(true, {}, defaultConfig, config);\n var promise = new Promise(function (resolve, reject) {\n var xhr = new XMLHttpRequest();\n var data = transformData(config.data, config.headers, config.transformRequest);\n var _config = config,\n method = _config.method,\n _config$timeout = _config.timeout,\n timeout = _config$timeout === void 0 ? defaultConfig.timeout : _config$timeout,\n _config$withCredentia = _config.withCredentials,\n withCredentials = _config$withCredentia === void 0 ? defaultConfig.withCredentials : _config$withCredentia,\n responseType = _config.responseType;\n var url = config.url;\n\n if (method.toLowerCase() === 'get') {\n // get 请求参数不支持嵌套对象\n url = buildURL(url, data);\n }\n\n xhr.timeout = timeout;\n xhr.open(method.toUpperCase(), url, true);\n\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4) {\n var _headers = parseHeaders(xhr.getAllResponseHeaders());\n\n var responseData = !responseType || responseType === 'text' ? xhr.responseText : xhr.response;\n var response = {\n result: 1,\n data: transformData(responseData, _headers, config.transformResponse),\n statusCode: xhr.status,\n headers: _headers\n };\n (xhr.status >= 200 && xhr.status < 300 ? resolve : reject)(response);\n xhr = null;\n }\n };\n\n xhr.onerror = function (err) {\n reject(err);\n };\n\n var headers = config.headers;\n Object.keys(headers).forEach(function (headerKey) {\n var headerVal = headers[headerKey];\n\n if ((!data || Object(__WEBPACK_IMPORTED_MODULE_0__index__[\"h\" /* isBlob */])(data) || Object(__WEBPACK_IMPORTED_MODULE_0__index__[\"i\" /* isFile */])(data)) && headerKey.toLowerCase() === 'content-type') {\n delete headers[headerKey];\n } else {\n xhr.setRequestHeader(headerKey, headerVal);\n }\n });\n\n if (withCredentials) {\n xhr.withCredentials = true;\n }\n\n if (responseType) {\n try {\n xhr.responseType = responseType;\n } catch (e) {\n if (request.responseType !== 'json') {\n throw e;\n }\n }\n }\n\n xhr.send(data);\n });\n return promise;\n}\n\nfunction normalizeHeaderName(headers, normalizedName) {\n Object.keys(headers).forEach(function (headerName) {\n if (headerName !== normalizedName && headerName.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = headers[headerName];\n delete headers[headerName];\n }\n });\n}\n\nfunction parseHeaders(headers) {\n var parsed = {};\n\n if (headers) {\n headers.split('\\n').forEach(function (headerStr) {\n var headerArr = headerStr.split(':');\n var headerKey = (headerArr[0] || '').trim().toLowerCase();\n var headerVal = (headerArr[1] || '').trim();\n\n if (headerKey) {\n parsed[headerKey] = headerVal;\n }\n });\n }\n\n return parsed;\n}\n\nfunction transformData(data, headers, fns) {\n fns.forEach(function (fn) {\n if (Object(__WEBPACK_IMPORTED_MODULE_0__index__[\"j\" /* isFunction */])(fn)) {\n data = fn(data, headers);\n }\n });\n return data;\n}\n\nfunction buildURL(url, params) {\n if (!params || !Object(__WEBPACK_IMPORTED_MODULE_0__index__[\"k\" /* isObject */])(params)) {\n return url;\n }\n\n var _params = new __WEBPACK_IMPORTED_MODULE_3__URLSearchParam__[\"a\" /* default */]();\n\n Object.keys(params).forEach(function (key) {\n _params.append(key, params[key]);\n });\n\n var serializedParams = _params.toString();\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n\n/***/ }),\n/* 144 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return URLSearchParams; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__index__ = __webpack_require__(0);\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\nvar URLSearchParams = /*#__PURE__*/function () {\n function URLSearchParams(search) {\n _classCallCheck(this, URLSearchParams);\n\n var dict = {};\n\n if (typeof search === 'string') {\n var searchIndex = search.indexOf('?');\n search = searchIndex > -1 ? search.slice(searchIndex + 1) : search;\n var pairs = search.split('&');\n var length = pairs.length;\n\n for (var i = 0; i < length; i++) {\n var value = pairs[i];\n var index = value.indexOf('=');\n\n if (-1 < index) {\n appendTo(dict, decode(value.slice(0, index)), decode(value.slice(index + 1)));\n } else if (value.length) {\n appendTo(dict, decode(value), '');\n }\n }\n }\n\n this.dict = dict;\n }\n\n _createClass(URLSearchParams, [{\n key: \"append\",\n value: function append(key, value) {\n appendTo(this.dict, key, value);\n }\n }, {\n key: \"toString\",\n value: function toString() {\n var _this = this;\n\n var query = [];\n Object.keys(this.dict).sort().forEach(function (key) {\n var encoded = encode(key);\n var value = _this.dict[key];\n\n for (var i = 0; i < value.length; i++) {\n query.push(encoded + '=' + encode(value[i]));\n }\n });\n return query.join('&');\n }\n }]);\n\n return URLSearchParams;\n}();\n\n\n\nfunction appendTo(dict, key, value) {\n var res = Object(__WEBPACK_IMPORTED_MODULE_0__index__[\"g\" /* isArray */])(value) ? value.join(',') : value;\n\n if (key in dict) {\n dict[key].push(res);\n } else {\n dict[key] = [res];\n }\n}\n\nfunction decode(str) {\n var findPercentSign = /%(?![0-9a-fA-F]{2})/g;\n return decodeURIComponent(str.replace(findPercentSign, '%25').replace(/\\+/g, ' '));\n}\n\nfunction replacer(match) {\n var replace = {\n '!': '%21',\n '\\'': '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return replace[match];\n}\n\nfunction encode(str) {\n return encodeURIComponent(str).replace(find, replacer);\n}\n\n/***/ }),\n/* 145 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (immutable) */ __webpack_exports__[\"a\"] = sendEventLog;\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__ks_yoda_js_sdk__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__ks_yoda_js_sdk___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__ks_yoda_js_sdk__);\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\nfunction getUAInfo(key) {\n var ua = navigator.userAgent;\n var uaList = {};\n ua.split(' ').forEach(function (item) {\n var arr = item.split('/');\n uaList[arr[0]] = arr[1];\n });\n return uaList[key] ? uaList[key] : uaList;\n}\n\nfunction getWebViewType() {\n var ua = navigator.userAgent;\n\n if (ua.indexOf('Android') !== -1) {\n return 'WebView';\n }\n\n if (ua.indexOf('iPhone') !== -1) {\n var uaList = getUAInfo();\n\n if (uaList.Yoda && uaList.WebViewType === 'WK') {\n return 'YodaWKWebView';\n }\n\n if (!uaList.Yoda && uaList.WebView === 'WKWebView') {\n return 'WKWebView';\n }\n\n return 'UIWebView';\n }\n\n return '';\n}\n\nfunction parseQuery() {\n var url = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : typeof window !== 'undefined' && window.location.search;\n var emptyValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n url = url.split('#')[0];\n var arr = url.split('?');\n var queryString = arr[arr.length - 1];\n var entrys = queryString === url ? [] : queryString.split('&');\n var res = {};\n\n for (var i = 0; i < entrys.length; i++) {\n var entry = entrys[i];\n var arr1 = entry.split('=');\n\n if (arr1[0]) {\n res[decodeURIComponent(arr1[0])] = decodeURIComponent(arr1[1] || emptyValue);\n }\n }\n\n return res;\n}\n\nfunction getCookie(name) {\n var match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)'));\n return match ? match[2] : '';\n}\n\nfunction sendEventLog(radarProjectId, data, startTime) {\n var query = parseQuery(); // 优先使用 config 指定的,其次是 URL query 指定,最后兜底是默认的一个 radar 项目\n // 不推荐走兜底上报\n\n radarProjectId = radarProjectId || query.radarProjectId || 'd113bf5b9c';\n var duration = new Date().getTime() - startTime;\n\n if (__WEBPACK_IMPORTED_MODULE_0__ks_yoda_js_sdk___default.a.isInYoda) {\n __WEBPACK_IMPORTED_MODULE_0__ks_yoda_js_sdk___default.a.ready(function () {\n __WEBPACK_IMPORTED_MODULE_0__ks_yoda_js_sdk___default.a.tool.canIUse({\n namespace: 'tool',\n name: 'sendRadarLog'\n }, function (_ref) {\n var result = _ref.result,\n canUse = _ref.canUse;\n\n if (result === 1 && canUse) {\n __WEBPACK_IMPORTED_MODULE_0__ks_yoda_js_sdk___default.a.tool.sendRadarLog({\n removeStashedLog: [],\n sendImmediate: true,\n customData: {\n project_id: radarProjectId,\n url_package: {\n page_type: 2,\n page: location.href,\n params: '',\n identity: getCookie('did')\n },\n data: [{\n key: 'event',\n value: {\n duration: startTime && duration\n },\n dimension: _objectSpread({\n yoda_version: getUAInfo('Yoda') || '',\n webview_type: getWebViewType()\n }, data)\n }]\n }\n });\n }\n });\n });\n }\n}\n\n/***/ }),\n/* 146 */\n/***/ (function(module, exports, __webpack_require__) {\n\n(function(){\r\n var crypt = __webpack_require__(147),\r\n utf8 = __webpack_require__(8).utf8,\r\n isBuffer = __webpack_require__(148),\r\n bin = __webpack_require__(8).bin,\r\n\r\n // The core\r\n md5 = function (message, options) {\r\n // Convert to byte array\r\n if (message.constructor == String)\r\n if (options && options.encoding === 'binary')\r\n message = bin.stringToBytes(message);\r\n else\r\n message = utf8.stringToBytes(message);\r\n else if (isBuffer(message))\r\n message = Array.prototype.slice.call(message, 0);\r\n else if (!Array.isArray(message) && message.constructor !== Uint8Array)\r\n message = message.toString();\r\n // else, assume byte array already\r\n\r\n var m = crypt.bytesToWords(message),\r\n l = message.length * 8,\r\n a = 1732584193,\r\n b = -271733879,\r\n c = -1732584194,\r\n d = 271733878;\r\n\r\n // Swap endian\r\n for (var i = 0; i < m.length; i++) {\r\n m[i] = ((m[i] << 8) | (m[i] >>> 24)) & 0x00FF00FF |\r\n ((m[i] << 24) | (m[i] >>> 8)) & 0xFF00FF00;\r\n }\r\n\r\n // Padding\r\n m[l >>> 5] |= 0x80 << (l % 32);\r\n m[(((l + 64) >>> 9) << 4) + 14] = l;\r\n\r\n // Method shortcuts\r\n var FF = md5._ff,\r\n GG = md5._gg,\r\n HH = md5._hh,\r\n II = md5._ii;\r\n\r\n for (var i = 0; i < m.length; i += 16) {\r\n\r\n var aa = a,\r\n bb = b,\r\n cc = c,\r\n dd = d;\r\n\r\n a = FF(a, b, c, d, m[i+ 0], 7, -680876936);\r\n d = FF(d, a, b, c, m[i+ 1], 12, -389564586);\r\n c = FF(c, d, a, b, m[i+ 2], 17, 606105819);\r\n b = FF(b, c, d, a, m[i+ 3], 22, -1044525330);\r\n a = FF(a, b, c, d, m[i+ 4], 7, -176418897);\r\n d = FF(d, a, b, c, m[i+ 5], 12, 1200080426);\r\n c = FF(c, d, a, b, m[i+ 6], 17, -1473231341);\r\n b = FF(b, c, d, a, m[i+ 7], 22, -45705983);\r\n a = FF(a, b, c, d, m[i+ 8], 7, 1770035416);\r\n d = FF(d, a, b, c, m[i+ 9], 12, -1958414417);\r\n c = FF(c, d, a, b, m[i+10], 17, -42063);\r\n b = FF(b, c, d, a, m[i+11], 22, -1990404162);\r\n a = FF(a, b, c, d, m[i+12], 7, 1804603682);\r\n d = FF(d, a, b, c, m[i+13], 12, -40341101);\r\n c = FF(c, d, a, b, m[i+14], 17, -1502002290);\r\n b = FF(b, c, d, a, m[i+15], 22, 1236535329);\r\n\r\n a = GG(a, b, c, d, m[i+ 1], 5, -165796510);\r\n d = GG(d, a, b, c, m[i+ 6], 9, -1069501632);\r\n c = GG(c, d, a, b, m[i+11], 14, 643717713);\r\n b = GG(b, c, d, a, m[i+ 0], 20, -373897302);\r\n a = GG(a, b, c, d, m[i+ 5], 5, -701558691);\r\n d = GG(d, a, b, c, m[i+10], 9, 38016083);\r\n c = GG(c, d, a, b, m[i+15], 14, -660478335);\r\n b = GG(b, c, d, a, m[i+ 4], 20, -405537848);\r\n a = GG(a, b, c, d, m[i+ 9], 5, 568446438);\r\n d = GG(d, a, b, c, m[i+14], 9, -1019803690);\r\n c = GG(c, d, a, b, m[i+ 3], 14, -187363961);\r\n b = GG(b, c, d, a, m[i+ 8], 20, 1163531501);\r\n a = GG(a, b, c, d, m[i+13], 5, -1444681467);\r\n d = GG(d, a, b, c, m[i+ 2], 9, -51403784);\r\n c = GG(c, d, a, b, m[i+ 7], 14, 1735328473);\r\n b = GG(b, c, d, a, m[i+12], 20, -1926607734);\r\n\r\n a = HH(a, b, c, d, m[i+ 5], 4, -378558);\r\n d = HH(d, a, b, c, m[i+ 8], 11, -2022574463);\r\n c = HH(c, d, a, b, m[i+11], 16, 1839030562);\r\n b = HH(b, c, d, a, m[i+14], 23, -35309556);\r\n a = HH(a, b, c, d, m[i+ 1], 4, -1530992060);\r\n d = HH(d, a, b, c, m[i+ 4], 11, 1272893353);\r\n c = HH(c, d, a, b, m[i+ 7], 16, -155497632);\r\n b = HH(b, c, d, a, m[i+10], 23, -1094730640);\r\n a = HH(a, b, c, d, m[i+13], 4, 681279174);\r\n d = HH(d, a, b, c, m[i+ 0], 11, -358537222);\r\n c = HH(c, d, a, b, m[i+ 3], 16, -722521979);\r\n b = HH(b, c, d, a, m[i+ 6], 23, 76029189);\r\n a = HH(a, b, c, d, m[i+ 9], 4, -640364487);\r\n d = HH(d, a, b, c, m[i+12], 11, -421815835);\r\n c = HH(c, d, a, b, m[i+15], 16, 530742520);\r\n b = HH(b, c, d, a, m[i+ 2], 23, -995338651);\r\n\r\n a = II(a, b, c, d, m[i+ 0], 6, -198630844);\r\n d = II(d, a, b, c, m[i+ 7], 10, 1126891415);\r\n c = II(c, d, a, b, m[i+14], 15, -1416354905);\r\n b = II(b, c, d, a, m[i+ 5], 21, -57434055);\r\n a = II(a, b, c, d, m[i+12], 6, 1700485571);\r\n d = II(d, a, b, c, m[i+ 3], 10, -1894986606);\r\n c = II(c, d, a, b, m[i+10], 15, -1051523);\r\n b = II(b, c, d, a, m[i+ 1], 21, -2054922799);\r\n a = II(a, b, c, d, m[i+ 8], 6, 1873313359);\r\n d = II(d, a, b, c, m[i+15], 10, -30611744);\r\n c = II(c, d, a, b, m[i+ 6], 15, -1560198380);\r\n b = II(b, c, d, a, m[i+13], 21, 1309151649);\r\n a = II(a, b, c, d, m[i+ 4], 6, -145523070);\r\n d = II(d, a, b, c, m[i+11], 10, -1120210379);\r\n c = II(c, d, a, b, m[i+ 2], 15, 718787259);\r\n b = II(b, c, d, a, m[i+ 9], 21, -343485551);\r\n\r\n a = (a + aa) >>> 0;\r\n b = (b + bb) >>> 0;\r\n c = (c + cc) >>> 0;\r\n d = (d + dd) >>> 0;\r\n }\r\n\r\n return crypt.endian([a, b, c, d]);\r\n };\r\n\r\n // Auxiliary functions\r\n md5._ff = function (a, b, c, d, x, s, t) {\r\n var n = a + (b & c | ~b & d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._gg = function (a, b, c, d, x, s, t) {\r\n var n = a + (b & d | c & ~d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._hh = function (a, b, c, d, x, s, t) {\r\n var n = a + (b ^ c ^ d) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n md5._ii = function (a, b, c, d, x, s, t) {\r\n var n = a + (c ^ (b | ~d)) + (x >>> 0) + t;\r\n return ((n << s) | (n >>> (32 - s))) + b;\r\n };\r\n\r\n // Package private blocksize\r\n md5._blocksize = 16;\r\n md5._digestsize = 16;\r\n\r\n module.exports = function (message, options) {\r\n if (message === undefined || message === null)\r\n throw new Error('Illegal argument ' + message);\r\n\r\n var digestbytes = crypt.wordsToBytes(md5(message, options));\r\n return options && options.asBytes ? digestbytes :\r\n options && options.asString ? bin.bytesToString(digestbytes) :\r\n crypt.bytesToHex(digestbytes);\r\n };\r\n\r\n})();\r\n\n\n/***/ }),\n/* 147 */\n/***/ (function(module, exports) {\n\n(function() {\n var base64map\n = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n\n crypt = {\n // Bit-wise rotation left\n rotl: function(n, b) {\n return (n << b) | (n >>> (32 - b));\n },\n\n // Bit-wise rotation right\n rotr: function(n, b) {\n return (n << (32 - b)) | (n >>> b);\n },\n\n // Swap big-endian to little-endian and vice versa\n endian: function(n) {\n // If number given, swap endian\n if (n.constructor == Number) {\n return crypt.rotl(n, 8) & 0x00FF00FF | crypt.rotl(n, 24) & 0xFF00FF00;\n }\n\n // Else, assume array and swap all items\n for (var i = 0; i < n.length; i++)\n n[i] = crypt.endian(n[i]);\n return n;\n },\n\n // Generate an array of any length of random bytes\n randomBytes: function(n) {\n for (var bytes = []; n > 0; n--)\n bytes.push(Math.floor(Math.random() * 256));\n return bytes;\n },\n\n // Convert a byte array to big-endian 32-bit words\n bytesToWords: function(bytes) {\n for (var words = [], i = 0, b = 0; i < bytes.length; i++, b += 8)\n words[b >>> 5] |= bytes[i] << (24 - b % 32);\n return words;\n },\n\n // Convert big-endian 32-bit words to a byte array\n wordsToBytes: function(words) {\n for (var bytes = [], b = 0; b < words.length * 32; b += 8)\n bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF);\n return bytes;\n },\n\n // Convert a byte array to a hex string\n bytesToHex: function(bytes) {\n for (var hex = [], i = 0; i < bytes.length; i++) {\n hex.push((bytes[i] >>> 4).toString(16));\n hex.push((bytes[i] & 0xF).toString(16));\n }\n return hex.join('');\n },\n\n // Convert a hex string to a byte array\n hexToBytes: function(hex) {\n for (var bytes = [], c = 0; c < hex.length; c += 2)\n bytes.push(parseInt(hex.substr(c, 2), 16));\n return bytes;\n },\n\n // Convert a byte array to a base-64 string\n bytesToBase64: function(bytes) {\n for (var base64 = [], i = 0; i < bytes.length; i += 3) {\n var triplet = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2];\n for (var j = 0; j < 4; j++)\n if (i * 8 + j * 6 <= bytes.length * 8)\n base64.push(base64map.charAt((triplet >>> 6 * (3 - j)) & 0x3F));\n else\n base64.push('=');\n }\n return base64.join('');\n },\n\n // Convert a base-64 string to a byte array\n base64ToBytes: function(base64) {\n // Remove non-base-64 characters\n base64 = base64.replace(/[^A-Z0-9+\\/]/ig, '');\n\n for (var bytes = [], i = 0, imod4 = 0; i < base64.length;\n imod4 = ++i % 4) {\n if (imod4 == 0) continue;\n bytes.push(((base64map.indexOf(base64.charAt(i - 1))\n & (Math.pow(2, -2 * imod4 + 8) - 1)) << (imod4 * 2))\n | (base64map.indexOf(base64.charAt(i)) >>> (6 - imod4 * 2)));\n }\n return bytes;\n }\n };\n\n module.exports = crypt;\n})();\n\n\n/***/ }),\n/* 148 */\n/***/ (function(module, exports) {\n\n/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nmodule.exports = function (obj) {\n return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)\n}\n\nfunction isBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))\n}\n\n\n/***/ })\n/******/ ]);\n});\n","(function (global, factory) {\n /* eslint-disable */\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.ksBridgeFactory = factory());\n /* eslint-enable */\n}(this, function () {\n 'use strict';\n var bridge = require('./ks-bridge.2.0.3.js');\n if (bridge && bridge.__esModule) {\n bridge = bridge.default;\n }\n bridge.ksBridge = bridge.ksBridge || bridge;\n return bridge;\n}));\n","/*!\n * yoda-kuaishou-plugin v0.0.3\n * (c) 2020-present By Kuaishou\n * Released under the ISC License.\n */\n'use strict';\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) {\n return;\n }\n\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}\n\n// 针对 bridge 回调做了一些分类,后续如果有其他类型的 bridge 需要特殊处理再新增分类即可\nvar BRIDGE_TYPE = {\n noCallbackList: ['popBack', 'exitWebView'],\n onClickList: ['setPhysicalBackButton', 'setTopLeftBtn', 'setTopLeftSecondBtn', 'setTopRightBtn', 'setTopRightSecondBtn'],\n handlerList: ['on', 'off']\n}; // 针对主 APP 客户端注入的全局变量,作为 namespace 注册前先进行小驼峰命名转化\n\nvar GLOBALVAR_2_NAMESPACE = {\n Kwai: 'kwai',\n KwaiAd: 'kwaiAd',\n KwaiAdThird: 'kwaiAdThird',\n KwaiMerchant: 'kwaiMerchant',\n KwaiLive: 'kwaiLive'\n};\nvar NAMESPACE_2_GLOBALVAR = {\n kwai: 'Kwai',\n kwaiAd: 'KwaiAd',\n kwaiAdThird: 'KwaiAdThird',\n kwaiMerchant: 'KwaiMerchant',\n kwaiLive: 'KwaiLive',\n // 以防使用大写 namespace 进行调用,大写的映射关系也加上\n Kwai: 'Kwai',\n KwaiAd: 'KwaiAd',\n KwaiAdThird: 'KwaiAdThird',\n KwaiMerchant: 'KwaiMerchant',\n KwaiLive: 'KwaiLive'\n};\nvar ADD_CB_PARAMS_LIST = {\n // Android 9.0.30 及以上版本已修复\n home: ['changeActivityTemplate', 'isActivityTabActive']\n};\n\nvar ua = navigator.userAgent;\nvar noCallbackList = BRIDGE_TYPE.noCallbackList,\n onClickList = BRIDGE_TYPE.onClickList,\n handlerList = BRIDGE_TYPE.handlerList;\nfunction isFunction(fn) {\n return typeof fn === 'function';\n}\nfunction isOldWebView() {\n return !window.__yodaBridge__;\n}\nfunction isIOS() {\n return !!ua.match(/\\(i[^;]+;( U;)? CPU.+Mac OS X/);\n}\n/**\n *\n * 生成唯一的id\n * @export\n * @returns\n */\n\nfunction generateUUID() {\n var rc = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n // https://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript/2117523#2117523\n var d = new Date().getTime();\n\n if (typeof performance !== 'undefined' && typeof performance.now === 'function') {\n d += performance.now(); // use high-precision timer if available\n }\n\n var pattern = rc ? 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx' : 'xxxxxxxx_xxxx_4xxx_yxxx_xxxxxxxxxxxx';\n return pattern.replace(/[xy]/g, function (c) {\n var r = (d + Math.random() * 16) % 16 | 0;\n d = Math.floor(d / 16);\n return (c === 'x' ? r : r & 0x3 | 0x8).toString(16);\n });\n}\n/**\n *\n * 生成临时唯一的方法挂接到window上,给客户端回调用\n * @name generateUUCallbackFunction\n * @private\n * @param {function} callback 回调函数,客户端方法执行完后会执行该方法\n * @param {boolean} notDelete 是否删除当前回调,留在当前页面的内存中\n * @param {string} bridge 的命名空间和方法名,方便后续问题排查\n * @param {string} 回调方法对应的唯一ID\n * @returns\n */\n\nfunction generateUUCallbackFunction(callback, notDelete, callbackName) {\n var callbackId = generateUUID(false);\n var name = \"yoda_kuaishou_plugin_callback_\".concat(callbackName, \"_\").concat(callbackId);\n\n window[name] = function (data) {\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (e) {\n console.warn(e); // eslint-disable-line\n }\n }\n\n if (isFunction(callback)) {\n callback.call(window, data);\n } else if (typeof callback === 'string' && isFunction(window[callback])) {\n window[callback].call(window, data);\n }\n\n if (!notDelete) {\n delete window[name];\n }\n };\n\n return name;\n} // 用于 showDialog 相关 api 中,将回调转化成接口需要的 URL\n\nfunction transformFuncToURL(btn, callbackName) {\n var tmpBtn = btn;\n\n if (btn && Array.isArray(btn.actions)) {\n tmpBtn.actions = btn.actions.map(function (action) {\n if (action && action.url && isFunction(action.url)) {\n action.url = generateUUCallbackFunction(action.url, true, callbackName);\n }\n\n return action;\n });\n }\n\n return tmpBtn;\n}\nvar handlerCbMap = {}; // 事件相关 api 中处理 handler\n\nfunction generateHandlerFunction(callback, bridge) {\n var handlerName = '';\n var cb = null;\n Object.keys(handlerCbMap).some(function (cbName) {\n var handlerCb = handlerCbMap[cbName];\n\n if (handlerCb === callback) {\n cb = handlerCb;\n handlerName = cbName;\n return true;\n }\n }); // 当传递的 handler 回调之前已经挂载过,就不再重新挂载,重新生成 handler 回调名\n\n if (cb !== callback && callback) {\n var name = generateUUCallbackFunction(callback, true, bridge);\n handlerCbMap[name] = callback;\n handlerName = name;\n }\n\n return handlerName;\n}\n/**\n * bridge 调用参数预处理,针对几类特定 bridge 进行处理\n * @name bridgeParamsHandler\n * @private\n * @param {string} namespace 命名空间\n * @param {string} bridge 桥名\n * @param {Object} 调用参数\n * @param {function} bridge 本身调用的回调\n*/\n\nfunction bridgeParamsHandler(namespace, bridgeName, params, invokeCallback) {\n var handledParams = _objectSpread2({}, params);\n\n var callbackName = \"\".concat(namespace, \"_\").concat(bridgeName); // 特殊适配 Kwai 等命名空间下 bridge 回调的传递\n // 回调为 onClick 形式的\n\n if (onClickList.indexOf(bridgeName) > -1) {\n handledParams.onClick = generateUUCallbackFunction(handledParams.onClick, true, callbackName); // 不允许传递任何参数给 native 的\n } else if (noCallbackList.indexOf(bridgeName) > -1) {\n handledParams = null; // 事件类传 handler 的\n } else if (handlerList.indexOf(bridgeName) > -1) {\n var callbackUUid = generateUUCallbackFunction(invokeCallback, false, callbackName); // 调用 off 桥不传 handler 时,则不能传再对其进行处理\n\n if (handledParams.handler && isFunction(handledParams.handler)) {\n handledParams.handler = generateHandlerFunction(handledParams.handler, callbackName);\n }\n\n handledParams.callback = callbackUUid; // showDialog\n } else if (bridgeName === 'showDialog') {\n var _handledParams = handledParams,\n positiveButton = _handledParams.positiveButton,\n negativeButton = _handledParams.negativeButton,\n neutralButton = _handledParams.neutralButton;\n\n if (positiveButton) {\n handledParams.positiveButton = transformFuncToURL(positiveButton, callbackName);\n }\n\n if (negativeButton) {\n handledParams.negativeButton = transformFuncToURL(negativeButton, callbackName);\n }\n\n if (neutralButton) {\n handledParams.neutralButton = transformFuncToURL(neutralButton, callbackName);\n } // 其他默认都是通过 callback 传给 native\n\n } else {\n var _callbackUUid = generateUUCallbackFunction(invokeCallback, true, callbackName);\n\n handledParams.callback = handledParams.callback || _callbackUUid;\n }\n\n return handledParams;\n}\n/**\n * 比较版本号\n * @param {string} source 比较源\n * @param {string} target 比较目标\n * @return {inter} 前者大返回>0, 相等返回0, 前者小返回<0\n */\n\nfunction compareVersion() {\n var source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var sourceArr = source.split('.');\n var targetArr = target.split('.');\n\n for (var i = 0; i < targetArr.length; i++) {\n if (sourceArr[i] !== targetArr[i]) {\n sourceArr[i] = isNaN(sourceArr[i]) ? 0 : sourceArr[i];\n targetArr[i] = isNaN(targetArr[i]) ? 0 : targetArr[i];\n return sourceArr[i] - targetArr[i];\n }\n }\n\n return 0;\n}\n\nvar bridgeMap = {}; // 为避免像 ks-bridge 那样为增加新的 bridge 调用而频繁发版,改为遍历 native 注入的 Kwai 等全局变量上的 bridge\n\nfor (var globalVar in GLOBALVAR_2_NAMESPACE) {\n for (var property in window[globalVar]) {\n var ns = GLOBALVAR_2_NAMESPACE[globalVar];\n\n if (ns) {\n var config = {}; // kwai.emit data 参数仅支持 string,但由于实际使用习惯直接传对象,故需要 stringify 处理下\n\n if (ns === 'kwai' && property === 'emit') {\n config.before = function (param) {\n if (param && _typeof(param.data) === 'object' && param.data !== null) {\n param.data = JSON.stringify(param.data);\n }\n\n return param;\n };\n }\n\n bridgeMap[ns] = bridgeMap[ns] || {};\n bridgeMap[ns][property] = config; // globalVar 也需要注入,保证不影响类似 yoda.Kwai.xxx 这种方式调用\n\n bridgeMap[globalVar] = bridgeMap[globalVar] || {};\n bridgeMap[globalVar][property] = config;\n }\n }\n}\n\nvar apis = _objectSpread2({\n webview: {\n open: {\n ksName: 'loadUrlOnNewPage',\n before: function before(opt) {\n var url = opt.url,\n type = opt.type;\n return {\n url: url,\n type: type || 'back'\n };\n }\n },\n close: function () {\n var ksName = isIOS() ? 'exitCurrentWebview' : 'exitWebView';\n return {\n ksName: ksName\n };\n }(),\n backOrClose: {\n ksName: 'popBack'\n },\n openKsWebview: {\n ksName: 'loadUrlOnNewPage'\n }\n },\n tool: {\n canIUse: {\n ksName: 'isSupport',\n after: function after(res) {\n return {\n result: 1,\n canUse: !!res\n };\n }\n },\n setClipBoard: {}\n },\n ui: {\n setSlideBackBehavior: {\n ksName: 'setSlideBack',\n before: function before(opt) {\n var behavior = opt.behavior;\n return {\n enabled: behavior !== 'none'\n };\n }\n },\n showToast: {},\n showDialog: {\n before: function before(opt, cb) {\n var _opt$title = opt.title,\n title = _opt$title === void 0 ? '' : _opt$title,\n _opt$content = opt.content,\n content = _opt$content === void 0 ? '' : _opt$content,\n _opt$confirmButtonTex = opt.confirmButtonText,\n confirmButtonText = _opt$confirmButtonTex === void 0 ? '确定' : _opt$confirmButtonTex,\n _opt$cancelButtonText = opt.cancelButtonText,\n cancelButtonText = _opt$cancelButtonText === void 0 ? '取消' : _opt$cancelButtonText,\n _opt$showCancelButton = opt.showCancelButton,\n showCancelButton = _opt$showCancelButton === void 0 ? true : _opt$showCancelButton;\n var param = {\n title: title,\n content: content,\n positiveButton: {\n text: confirmButtonText,\n colorType: 'positive',\n actions: [{\n actionType: 'JS_CALLBACK',\n url: function url() {\n cb({\n result: 1,\n target: 'confirm'\n });\n }\n }]\n }\n };\n\n if (showCancelButton) {\n param.negativeButton = {\n text: cancelButtonText,\n colorType: 'negative',\n actions: [{\n actionType: 'JS_CALLBACK',\n url: function url() {\n cb({\n result: 1,\n target: 'cancel'\n });\n }\n }]\n };\n }\n\n return param;\n }\n },\n showBottomSheet: {}\n },\n event: {\n dispatchEvent: {\n ksName: 'emit',\n before: function before(param) {\n if (param && _typeof(param.data) === 'object' && param.data !== null) {\n param.data = JSON.stringify(param.data);\n }\n\n return param;\n }\n }\n },\n merchant: {\n getSidToken: {},\n reqSessionStickyOnTopWithThread: {},\n querySessionIsStickyOnTop: {}\n },\n mediaInteraction: {\n saveImage: {},\n selectImage: {}\n }\n}, bridgeMap);\n\nvar noop = function noop() {};\n\nvar origin = function origin(o) {\n return o;\n};\n\nfunction callNative(name, bridgeName, options, cb) {\n var opts = bridgeParamsHandler(name, bridgeName, options, cb); // isSupport 为 ks-bridge 自定义方法,插件不再依赖 ks-bridge,故需要单独处理 isSupport 调用\n\n if (bridgeName === 'isSupport') {\n var checkedBridge = options.name;\n cb(!!window[name][checkedBridge]);\n return;\n } else if (!window[name] || !window[name][bridgeName]) {\n // 当该方法不存在时, 直接回调\n handleError(opts);\n return;\n }\n\n try {\n // opts 为空表示当前 bridge 调用不能传任何参数,否则 native 调用报错\n if (!opts) {\n window[name][bridgeName]();\n } else {\n var strParam;\n\n try {\n strParam = JSON.stringify(opts);\n } catch (e) {\n e.message += ' in JSON.stringify';\n throw e;\n }\n\n window[name][bridgeName](strParam);\n }\n } catch (e) {\n handleError(opts);\n setTimeout(function () {\n e.message += \" (from yoda-kuaishou-plugin window.\".concat(name, \".\").concat(bridgeName, \")\"); // 异步上报错误 不阻断当前代码\n\n throw e;\n });\n }\n}\n\nfunction handleError(opts) {\n var language = window.navigator && (window.navigator.languages || window.navigator.language) || [];\n var errorMsg = language.length && language.indexOf('zh') === -1 && language.indexOf('zh-CN') === -1 ? 'Error occurred, please upgrade your app' : '出错啦, 请升级客户端至最新版本';\n opts.callback && window[opts.callback] && window[opts.callback](JSON.stringify({\n result: 127000,\n error_msg: errorMsg\n }));\n} // 在旧 webview 中调用 yoda bridge,不走 yoda 内部的 invoke 与 native 通信\n// 所以在 beforeInvoke 中直接走 window.xxx 调用\n\n\nfunction invoke(ns, api, params, callback) {\n var globalVar = NAMESPACE_2_GLOBALVAR[ns] || 'Kwai';\n var name = api.name,\n ksName = api.ksName,\n _api$before = api.before,\n before = _api$before === void 0 ? origin : _api$before,\n _api$after = api.after,\n after = _api$after === void 0 ? origin : _api$after;\n var bridgeName = ksName || name;\n\n if (isFunction(before)) {\n // 对调用参数进行预处理\n params = before(params);\n }\n\n var cb = noop;\n\n if (isFunction(callback)) {\n cb = function cb(res) {\n var handledRes = res;\n\n if (isFunction(after)) {\n // 对响应参数进行预处理\n handledRes = after(res);\n }\n\n callback(handledRes);\n };\n }\n\n if (bridgeName) {\n callNative(globalVar, bridgeName, params, cb);\n } else {\n throw new Error('invoke: 未指定调用调用 bridge');\n }\n}\nfunction beforeInvoke(invokeConfig, next) {\n var yoda = this;\n\n if (isOldWebView()) {\n // call 全局变量上挂载的方法, 不执行next\n var namespace = invokeConfig.namespace,\n name = invokeConfig.name,\n params = invokeConfig.params,\n callbackId = invokeConfig.callbackId;\n var apiMap = apis[namespace];\n var api = apiMap && apiMap[name];\n var callback = yoda._callbacks && yoda._callbacks[callbackId] || noop;\n\n if (api) {\n // TODO 检查 params 结构,防止后续解析时报错\n var param = params || {};\n api.name = name;\n invoke.call(yoda, namespace, api, param, callback);\n } else {\n throw new Error(\"invoke\\uFF1Ayoda.\".concat(namespace, \".\").concat(name, \"\\u4E0D\\u5B58\\u5728\"));\n }\n\n return;\n } else {\n var _namespace = invokeConfig.namespace,\n _name = invokeConfig.name,\n _params = invokeConfig.params,\n _callbackId = invokeConfig.callbackId;\n var ns = NAMESPACE_2_GLOBALVAR[_namespace]; // 需要处理回调兼容的桥加到 ADD_CB_PARAMS_LIST 即可\n\n var addCbParamsBridges = ADD_CB_PARAMS_LIST[_namespace] || [];\n\n if (ns || addCbParamsBridges.indexOf(_name) > -1) {\n // 实际调用前需要将 register 中改写的 namespace 改回来\n var originalNamespace = ns || _namespace;\n var invokeCallback = yoda._callbacks[_callbackId];\n invokeConfig.namespace = originalNamespace; // 参数预处理\n\n invokeConfig.params = bridgeParamsHandler(originalNamespace, _name, _params, invokeCallback);\n var ua = navigator.userAgent || '';\n\n var _ref = ua.match(/Kwai\\/([\\d+.*]+)/) || [],\n _ref2 = _slicedToArray(_ref, 2),\n _ref2$ = _ref2[1],\n appVer = _ref2$ === void 0 ? '' : _ref2$;\n\n var defaultVer = '7.7.30'; // 比较版本号\n // 7730 以上版本不需要做兼容处理\n // 兼容方式注册的桥,双端只关注 params.callback,yoda 方式注册的桥只关注 invoke callbackId\n\n if (appVer && compareVersion(appVer, defaultVer) < 0) {\n // 在 js-sdk 层将桥调用的回调方法转到 params 后,需要将 callbackId 重置下\n // 主要处理部分只回调一次的桥(回调执行一次后会被 delete),如果 params.callback 和 invokeCallback 指向一个回调\n // 可能会导致 params.callback 还未执行,回调已被 delete\n var tmpCbKey = '__yoda_kuaishou_plugin_tmp_cb__';\n yoda._callbacks[tmpCbKey] = yoda._callbacks[tmpCbKey] || noop;\n invokeConfig.callbackId = tmpCbKey; // 需要额外挂到 window 上是因为 iOS 可能会去 window 上找该回调\n\n window.__yoda_kuaishou_plugin_tmp_cb__ = noop;\n }\n } else if (_namespace === 'tool' && _name === 'canIUse') {\n // 针对 canIUse 特殊适配 GLOBALVAR_2_NAMESPACE 的全局变量\n if (NAMESPACE_2_GLOBALVAR[_params.namespace]) {\n _params.namespace = NAMESPACE_2_GLOBALVAR[_params.namespace];\n }\n }\n }\n\n next();\n}\n\n// yoda 的 resume、pause,对应到旧 webview 中对应多种事件\nvar eventsMap = {\n resume: ['native_foreground', 'native_reentry'],\n pause: ['native_background', 'native_leave']\n};\n\nfunction addEventListener(type, handler, callback) {\n if (eventsMap[type]) {\n eventsMap[type].forEach(function (eventName) {\n invoke('kwai', {\n name: 'on'\n }, {\n type: eventName,\n handler: handler\n }, callback);\n });\n } else {\n invoke('kwai', {\n name: 'on'\n }, {\n type: type,\n handler: handler\n }, callback);\n }\n}\n\nfunction removeEventListener(type, handler, callback) {\n if (eventsMap[type]) {\n eventsMap[type].forEach(function (eventName) {\n invoke('kwai', {\n name: 'off'\n }, {\n type: eventName,\n handler: handler\n }, callback);\n });\n } else {\n invoke('kwai', {\n name: 'off'\n }, {\n type: type,\n handler: handler\n }, callback);\n }\n}\n\nfunction initEvents(yoda) {\n yoda.event = yoda.event || {};\n yoda.event.addEventListener = addEventListener.bind(yoda);\n yoda.event.removeEventListener = removeEventListener.bind(yoda);\n}\n\n// init hook\nfunction beforeInit(initConfig, next) {\n var yoda = this; // 在旧 webview 中由于无法走 yoda 自身的 init,从而导致无法在 yoda 上挂载相应 bridge\n // 所以在 beforeInit 中通过 yoda.register 进行相应 bridge 挂载\n\n if (isOldWebView()) {\n initEvents(yoda);\n\n for (var namespace in apis) {\n var apiList = apis[namespace];\n\n for (var name in apiList) {\n var api = apiList[name];\n\n if (api) {\n yoda.register({\n namespace: namespace,\n name: name,\n // 该参数会让走 callback\n // 由于主 APP 原部分 bridge 无法走 promise\n multiCallback: true\n });\n }\n }\n } // 手动触发 yoda ready\n\n\n yoda._readyResolve();\n\n return;\n }\n\n next();\n}\n\nfunction beforeRegister(registerApi, next) {\n var yoda = this;\n\n if (yoda.isInYoda) {\n var _ref = registerApi || {},\n namespace = _ref.namespace,\n name = _ref.name;\n\n var ns = GLOBALVAR_2_NAMESPACE[namespace];\n\n if (ns) {\n if (ns === 'kwai' && name === 'emit') {\n registerApi.before = function (param) {\n if (param && _typeof(param.data) === 'object' && param.data !== null) {\n param.data = JSON.stringify(param.data);\n }\n\n return param;\n };\n } // 兼容 kwai、kwaiLive 等命名空间大小写\n\n\n registerApi.namespace = ns;\n }\n }\n\n next();\n}\nfunction afterRegister(registerApi) {\n var yoda = this;\n\n if (yoda.isInYoda) {\n var _ref2 = registerApi || {},\n namespace = _ref2.namespace,\n name = _ref2.name;\n\n var globalVar = NAMESPACE_2_GLOBALVAR[namespace];\n\n if (globalVar) {\n // 为使得桥命名空间是小驼峰格式而改变了 yoda 上注册的命名空间\n // 为了不影响类似 yoda.Kwai.xxx 这种方式调用,将 yoda.kwai.xxx 赋值给 yoda.Kwai\n yoda[globalVar] = yoda[globalVar] || {};\n yoda[globalVar][name] = yoda[namespace][name];\n }\n }\n}\n\nvar ksYodaWrapper = {}; // 判断是否是旧 webview,如果是则需要通过 yoda 的 plugin 方法增加 hooks\n// 在 hooks 中,让调用 bridge 直接走类似 window.Kwai.xxx 等方式\n\nif (isOldWebView()) {\n ksYodaWrapper = {\n beforeInit: beforeInit,\n beforeInvoke: beforeInvoke\n };\n} else {\n // 在 yoda 环境下需要额外兼容处理下 kwai、kwaiLive 等命名空间大小写,emit 调用参数预处理等\n ksYodaWrapper = {\n beforeRegister: beforeRegister,\n afterRegister: afterRegister,\n beforeInvoke: beforeInvoke\n };\n}\n\nvar ksYodaWrapper$1 = ksYodaWrapper;\n\nmodule.exports = ksYodaWrapper$1;\n","\nexport default (sfc, props) => {\n const target = sfc.__vccOpts || sfc;\n for (const [key, val] of props) {\n target[key] = val;\n }\n return target;\n}\n","\n \n
\n\n\n\n","\n \n\n","\nexport default [\n 0,\n \"common_baseflat_gift_24\",\n \"\",\n \"#222222\",\n \"#E6E6E6\"\n];\n","\nexport default [\n 0,\n \"common_base_next_24\",\n \"\",\n \"#222222\",\n \"#E6E6E6\"\n];\n","\nexport default [\n 0,\n \"common_emptystate_nogift\",\n \"\",\n \"#222222\",\n \"#E6E6E6\"\n];\n","\nexport default [\n 0,\n \"gamecenter_gameofficial_signin\",\n \"\",\n \"#FFE3E9\",\n \"\"\n];\n","var Vue = require('vue')\n\nObject.keys(Vue).forEach(function(key) {\n exports[key] = Vue[key]\n})\n\nexports.set = function(target, key, val) {\n if (Array.isArray(target)) {\n target.length = Math.max(target.length, key)\n target.splice(key, 1, val)\n return val\n }\n target[key] = val\n return val\n}\n\nexports.del = function(target, key) {\n if (Array.isArray(target)) {\n target.splice(key, 1)\n return\n }\n delete target[key]\n}\n\nexports.Vue = Vue\nexports.Vue2 = undefined\nexports.isVue2 = false\nexports.isVue3 = true\nexports.install = function(){}\n","module.exports=function(t){var n={};function r(e){if(n[e])return n[e].exports;var o=n[e]={i:e,l:!1,exports:{}};return t[e].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=t,r.c=n,r.d=function(t,n,e){r.o(t,n)||Object.defineProperty(t,n,{enumerable:!0,get:e})},r.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},r.t=function(t,n){if(1&n&&(t=r(t)),8&n)return t;if(4&n&&\"object\"==typeof t&&t&&t.__esModule)return t;var e=Object.create(null);if(r.r(e),Object.defineProperty(e,\"default\",{enumerable:!0,value:t}),2&n&&\"string\"!=typeof t)for(var o in t)r.d(e,o,function(n){return t[n]}.bind(null,o));return e},r.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(n,\"a\",n),n},r.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},r.p=\"\",r(r.s=169)}([,function(t,n){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,n,r){(function(n){var r=function(t){return t&&t.Math==Math&&t};t.exports=r(\"object\"==typeof globalThis&&globalThis)||r(\"object\"==typeof window&&window)||r(\"object\"==typeof self&&self)||r(\"object\"==typeof n&&n)||function(){return this}()||Function(\"return this\")()}).call(this,r(70))},function(t,n){t.exports=require(\"vue-demi\")},function(t,n){t.exports=function(t){return\"object\"==typeof t?null!==t:\"function\"==typeof t}},function(t,n,r){var e=r(2),o=r(26),i=r(8),c=r(43),u=r(42),a=r(41),f=o(\"wks\"),s=e.Symbol,l=a?s:s&&s.withoutSetter||c;t.exports=function(t){return i(f,t)&&(u||\"string\"==typeof f[t])||(u&&i(s,t)?f[t]=s[t]:f[t]=l(\"Symbol.\"+t)),f[t]}},function(t,n,r){var e=r(4);t.exports=function(t){if(!e(t))throw TypeError(String(t)+\" is not an object\");return t}},function(t,n,r){var e=r(1);t.exports=!e((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},function(t,n,r){var e=r(13),o={}.hasOwnProperty;t.exports=Object.hasOwn||function(t,n){return o.call(e(t),n)}},function(t,n,r){var e=r(7),o=r(39),i=r(6),c=r(25),u=Object.defineProperty;n.f=e?u:function(t,n,r){if(i(t),n=c(n),i(r),o)try{return u(t,n,r)}catch(t){}if(\"get\"in r||\"set\"in r)throw TypeError(\"Accessors not supported\");return\"value\"in r&&(t[n]=r.value),t}},function(t,n){t.exports=function(t){if(null==t)throw TypeError(\"Can't call method on \"+t);return t}},function(t,n){var r={}.toString;t.exports=function(t){return r.call(t).slice(8,-1)}},function(t,n,r){var e=r(2),o=r(22).f,i=r(20),c=r(32),u=r(28),a=r(74),f=r(52);t.exports=function(t,n){var r,s,l,p,v,d=t.target,g=t.global,h=t.stat;if(r=g?e:h?e[d]||u(d,{}):(e[d]||{}).prototype)for(s in n){if(p=n[s],l=t.noTargetGet?(v=o(r,s))&&v.value:r[s],!f(g?s:d+(h?\".\":\"#\")+s,t.forced)&&void 0!==l){if(typeof p==typeof l)continue;a(p,l)}(t.sham||l&&l.sham)&&i(p,\"sham\",!0),c(r,s,p,t)}}},function(t,n,r){var e=r(10);t.exports=function(t){return Object(e(t))}},function(t,n,r){\"use strict\";r(37),r(57),r(78),r(64);function e(t){return function(n,r){return n&&\"string\"!=typeof n&&(r=n,n=\"\"),n=n?\"\".concat(t,\"__\").concat(n):t,\"\".concat(n).concat(function t(n,r){return r?\"string\"==typeof r?\" \".concat(n,\"--\").concat(r):Array.isArray(r)?r.reduce((function(r,e){return r+t(n,e)}),\"\"):Object.keys(r).reduce((function(e,o){return e+(r[o]?t(n,o):\"\")}),\"\"):\"\"}(n,r))}}r.d(n,\"a\",(function(){return o})),r.d(n,\"b\",(function(){return i})),r.d(n,\"c\",(function(){return c}));var o=\"hydration-\";function i(t){var n=o+t;return{prefix:o,name:n,createBEM:e(n)}}function c(t){var n;return(null===(n=t.options)||void 0===n?void 0:n.name)||t.name}},function(t,n,r){var e=r(17),o=Math.min;t.exports=function(t){return t>0?o(e(t),9007199254740991):0}},function(t,n,r){var e=r(21);t.exports=function(t){if(e(t))throw TypeError(\"Cannot convert a Symbol value to a string\");return String(t)}},function(t,n){var r=Math.ceil,e=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?e:r)(t)}},function(t,n,r){var e=r(2),o=function(t){return\"function\"==typeof t?t:void 0};t.exports=function(t,n){return arguments.length<2?o(e[t]):e[t]&&e[t][n]}},function(t,n,r){var e,o,i=r(2),c=r(71),u=i.process,a=i.Deno,f=u&&u.versions||a&&a.version,s=f&&f.v8;s?o=(e=s.split(\".\"))[0]<4?1:e[0]+e[1]:c&&(!(e=c.match(/Edge\\/(\\d+)/))||e[1]>=74)&&(e=c.match(/Chrome\\/(\\d+)/))&&(o=e[1]),t.exports=o&&+o},function(t,n,r){var e=r(7),o=r(9),i=r(29);t.exports=e?function(t,n,r){return o.f(t,n,i(1,r))}:function(t,n,r){return t[n]=r,t}},function(t,n,r){var e=r(18),o=r(41);t.exports=o?function(t){return\"symbol\"==typeof t}:function(t){var n=e(\"Symbol\");return\"function\"==typeof n&&Object(t)instanceof n}},function(t,n,r){var e=r(7),o=r(63),i=r(29),c=r(23),u=r(25),a=r(8),f=r(39),s=Object.getOwnPropertyDescriptor;n.f=e?s:function(t,n){if(t=c(t),n=u(n),f)try{return s(t,n)}catch(t){}if(a(t,n))return i(!o.f.call(t,n),t[n])}},function(t,n,r){var e=r(34),o=r(10);t.exports=function(t){return e(o(t))}},function(t,n,r){\"use strict\";var e,o,i=r(16),c=r(81),u=r(65),a=r(26),f=r(49),s=r(45).get,l=r(84),p=r(85),v=RegExp.prototype.exec,d=a(\"native-string-replace\",String.prototype.replace),g=v,h=(e=/a/,o=/b*/g,v.call(e,\"a\"),v.call(o,\"a\"),0!==e.lastIndex||0!==o.lastIndex),y=u.UNSUPPORTED_Y||u.BROKEN_CARET,x=void 0!==/()??/.exec(\"\")[1];(h||x||y||l||p)&&(g=function(t){var n,r,e,o,u,a,l,p=this,b=s(p),m=i(t),O=b.raw;if(O)return O.lastIndex=p.lastIndex,n=g.call(O,m),p.lastIndex=O.lastIndex,n;var j=b.groups,w=y&&p.sticky,S=c.call(p),E=p.source,_=0,I=m;if(w&&(-1===(S=S.replace(\"y\",\"\")).indexOf(\"g\")&&(S+=\"g\"),I=m.slice(p.lastIndex),p.lastIndex>0&&(!p.multiline||p.multiline&&\"\\n\"!==m.charAt(p.lastIndex-1))&&(E=\"(?: \"+E+\")\",I=\" \"+I,_++),r=new RegExp(\"^(?:\"+E+\")\",S)),x&&(r=new RegExp(\"^\"+E+\"$(?!\\\\s)\",S)),h&&(e=p.lastIndex),o=v.call(w?r:p,I),w?o?(o.input=o.input.slice(_),o[0]=o[0].slice(_),o.index=p.lastIndex,p.lastIndex+=o[0].length):p.lastIndex=0:h&&o&&(p.lastIndex=p.global?o.index+o[0].length:e),x&&o&&o.length>1&&d.call(o[0],r,(function(){for(u=1;ua;)e(u,r=n[a++])&&(~i(f,r)||f.push(r));return f}},function(t,n,r){\"use strict\";r.d(n,\"a\",(function(){return i}));var e=r(33),o=r(14);function i(t){return t.install=function(n){var r=Object(o.c)(t);n.component(r,t),n.component(Object(e.a)(\"-\".concat(r)),t)},t}},function(t,n,r){var e,o=r(6),i=r(82),c=r(31),u=r(30),a=r(83),f=r(40),s=r(46),l=s(\"IE_PROTO\"),p=function(){},v=function(t){return\"