{"version":3,"sources":["webpack:///./src/views/mixins/sign-in.js","webpack:///./src/common/mixins/oauth-mixins.js","webpack:///./src/components/digital-clock.vue?555a","webpack:///./src/components/page-header.vue","webpack:///src/components/page-header.vue","webpack:///./src/components/page-header.vue?a29d","webpack:///./src/components/page-header.vue?53d4","webpack:///./src/assets/images/wechat.png","webpack:///./src/components/page-header.vue?cc75","webpack:///./src/common/mixins/qywxCommon.js","webpack:///./src/common/mixins/common-mixin.js","webpack:///./node_modules/@wecom/jssdk/dist/wecom.esm.js","webpack:///./src/assets/images/sigin-ecnu-logo.png","webpack:///./src/components/page-footer.vue?2db9","webpack:///./src/components/page-footer.vue","webpack:///src/components/page-footer.vue","webpack:///./src/components/page-footer.vue?9f5b","webpack:///./src/components/page-footer.vue?b093","webpack:///./src/views/sign-in.vue","webpack:///./src/components/qy-wecaht-qrcode.vue","webpack:///src/components/qy-wecaht-qrcode.vue","webpack:///./src/components/qy-wecaht-qrcode.vue?56fe","webpack:///./src/components/qy-wecaht-qrcode.vue?1736","webpack:///src/views/sign-in.vue","webpack:///./src/views/sign-in.vue?dad5","webpack:///./src/views/sign-in.vue?df55","webpack:///./src/components/digital-clock.vue","webpack:///src/components/digital-clock.vue","webpack:///./src/components/digital-clock.vue?9ea3","webpack:///./src/components/digital-clock.vue?50f3"],"names":["name","mixins","OauthMixin","commonMixin","qywxCommon","data","ready","admin_login","background_images","login","id","password","show_wechat","this","$organization","use_wechat","error_message","show_login_error","icons","icon","subject","title","mounted","_this","sso","$api","then","res","length","map","item","path","images","qywxHandler","computed","should_show_admin","window","location","href","indexOf","methods","resetPassword","vm","$affirm","$messageBox","success","$notice","error","submitForm","credential","mixToken","c","response","setUserInfo","jumpBack","created","$route","hash","query","ticket","code","admin","$nextTick","jumpToSSO","_this2","oauth","ret","text","state","_t","message","jumpToSignIn","catch","from","jumpToOAuth2","sjtu_app","return_url","signin_url","encodeURIComponent","replace","$router","push","url","decodeURIComponent","render","_vm","_c","_self","staticClass","class","ecnu","staticStyle","attrs","logo","require","_v","_s","preset","app","staticRenderFns","components","DigitalClock","props","type","Boolean","default","ulogo","String","_objectSpread","mapState","user","component","module","exports","is_wx_state","substring","redirect","redirectPath","msg","$isWechat","wx_redirect","wechat_appid","wechat_agentid","mapGetters","en","$english","english","is_mobile","$isMobile","mapMutations","_ua_match","win","undefined","doc","document","nav","navigator","loc","getHref","ua","userAgent","platform","wecomVersion","match","isWeCom","_getAppleDeviceType","test","getAppleDeviceType","isIOS","isMac","_nav_maxTouchPoints","maxTouchPoints","asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","done","Promise","_async_to_generator","fn","self","args","arguments","apply","err","__generator","thisArg","body","f","y","t","g","verb","n","v","step","op","TypeError","_","call","next","label","ops","pop","trys","e","sent","Symbol","iterator","_extends","Object","assign","target","i","source","prototype","hasOwnProperty","_array_like_to_array","arr","len","arr2","Array","_unsupported_iterable_to_array","o","minLen","toString","slice","constructor","_create_for_of_iterator_helper_loose","allowArrayLike","it","bind","isArray","_step","webToClientJsApiMap","config","onMenuShareTimeline","onMenuShareAppMessage","onMenuShareWechat","onMenuShareQQ","onMenuShareWeibo","onMenuShareQZone","previewImage","getLocation","openProductSpecificView","addCard","openCard","chooseWXPay","openEnterpriseRedPacket","startSearchBeacons","stopSearchBeacons","onSearchBeacons","consumeAndShareCard","openAddress","getBrandWCPayRequest","clientToWebJsApiMap","_iterator","keys","_array_without_holes","_iterable_to_array","iter","_non_iterable_spread","_to_consumable_array","_len","_key","_console","console","concat","safeRun","param","isFunction","error$1","val","isWeixinJSBridgeReady","WeixinJSBridge","_set_prototype_of","p","setPrototypeOf","__proto__","_inherits","subClass","superClass","create","writable","configurable","_is_native_reflect_construct","Reflect","construct","sham","Proxy","valueOf","_construct","Parent","Class","a","Constructor","Function","instance","_get_prototype_of","getPrototypeOf","_is_native_function","_wrap_native_super","_cache","Map","Wrapper","has","get","set","enumerable","addEventListener","Proximity","LocationType","NetworkType","SizeType","SourceType","CameraMode","LiveType","ProductViewType","CreateExternalPaymentType","EntryType","EnvVersion","OpenUserProfileType","PrintFileIdType","InTalkType","ScanQRCodeType","InputCorpGroupContactMode","InputCorpGroupContactType","SelectEnterpriseContactMode","SelectEnterpriseContactType","SelectExternalContactType","SelectPrivilegedContactMode","OAType","OaExtDataType","Error","createTransparentIFrame","width","height","el","iframeEl","createElement","style","display","border","background","referrerPolicy","setAttribute","containerEl","resolveEl","appendChild","querySelector","genUid","rand","Math","random","Date","now","normalizeError","stack","useRemoteInvoke","postMessage","callback","invoke","uid","messageMap","handleResponseMessage","handle","kind","delete","handleCallMessage","_handleCallMessage","_tmp","_state","attached","listeners","sendRemoteMessage","origin","JSON","stringify","useRemoteMessage","listener","onWindowMessage","index","splice","event","parse","startsWith","useIframeClient","onIframeLoad","iframeReady","handleReadyMessage","messageQueue","enqueueMessage","contentWindow","_useRemoteInvoke","dispose","handleCallMsg","options","payload","WWLoginType","WWLoginLangType","WWLoginRedirectType","WWLoginPanelSizeType","_obj","SDK_VERSION","PANEL_SIZE","middle","small","createWWLoginPanel","_options_params","_getPanelSize","getPanelSize","params","panel_size","URL","searchParams","src","unmount","_iframeEl_parentNode","parentNode","removeChild","panelSizeType","size","contact","domProps","org","_m","CommonMixin","mobile","directives","rawName","expression","_l","_e","on","$event","preventDefault","composing","$set","process","loading","oauth_title","sign_in_functions","x","slot","obj","loadWeChat","login_type","appid","agentid","redirect_uri","redirect_type","ww","beforeDestroy","SignIn","QyWecahtQrcode","PageHeader","PageFooter","shanghaitech","date","time","zeroPadding","num","digit","zero","that","setInterval","updateTime","cd","week","getHours","getMinutes","getFullYear","getMonth","getDate","getDay"],"mappings":"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","file":"js/about174.f226bbf1.js","sourcesContent":["import OauthMixin from \"../../common/mixins/oauth-mixins\"\nimport commonMixin from \"../../common/mixins/common-mixin\";\nimport qywxCommon from \"../../common/mixins/qywxCommon\";\nimport {mixToken} from \"../../plugins/common-functions\"\n\nexport default {\n name: \"sign-in\",\n mixins: [OauthMixin, commonMixin, qywxCommon],\n data() {\n return {\n ready: false,\n admin_login: false,\n background_images:[],\n login: {\n id: '',\n password: ''\n },\n show_wechat: this.$organization.use_wechat,\n error_message: 'error message',\n show_login_error: false,\n icons: [\n {icon: \"feature-1\", subject: '稳健', title: \"基于流行的视频会议系统,透过API,提供稳健的视频会议建会,查询,报告和录像自动收集等功能\"},\n {icon: \"feature-2\", subject: '高效', title: \"合理安排资源,提高视频会议资源的效率,监控资源使用情况,同时管理多个视频会议平台\"},\n {icon: \"feature-3\", subject: '协作', title: \"自由灵活分享屏幕,支持聊天、分组讨论,投票,同传,标注、直播、电子白板和影音分享\"},\n {icon: \"feature-4\", subject: '安全', title: \"会管平台私有化部署,有SSO对接登录、视频会议有等候室,锁定会议等手段保障会议信息安全\"},\n ]\n }\n },\n mounted() {\n if (!this.$organization.sso) { // 如果设置的是sso 那么就直接跳转连管理员输入都不显示\n this.$api('Query.BackgroundPictures', {}, true).then(res => {\n if (res.data.data && res.data.data.length) {\n this.background_images = res.data.data.map(item => item.path);\n } else {\n let images = ['tsi-ad-banner-0.jpg', 'tsi-ad-banner-1.jpg', 'tsi-ad-banner-2.jpg'];\n if (this.$organization.background_images) {\n images = this.$organization.background_images;\n }\n this.background_images = images.map(item => '/assets/images/' + item);\n }\n });\n }\n if (this.$organization.use_wechat) {\n this.qywxHandler();\n }\n },\n computed:{\n should_show_admin(){\n // 判断uri中是否包含了#admin,\n if (this.$organization.should_show_admin) return true;\n return window.location.href.indexOf('#admin') > -1;\n }\n },\n methods: {\n resetPassword() {\n const vm = this;\n if (vm.login.id) {\n vm.$affirm('我们将向您的邮箱发送一份包含有密码的邮件, 是否继续?').then(() => {\n vm.$api('ResetPassword', vm.login, true).then(() => {\n vm.$messageBox.success('密码已经发出,请检查您的邮箱。');\n })\n })\n } else {\n vm.$notice.error('请重新输入账号/邮箱');\n }\n },\n submitForm() {\n const vm = this;\n if (!vm.login.id) {\n vm.$notice.error('请重新输入账号/邮箱');\n } else {\n const credential = mixToken(vm.login.id + ':' + vm.login.password, true)\n vm.$api('SignIn', {c:credential}, true).then(response => {\n vm.setUserInfo(response.data.data);\n vm.jumpBack();\n });\n }\n },\n },\n}\n","export default {\n created() {\n //判断访问路径是否是 https://domain/sign-in#admin 如果是就显示管理员登录界面\n if (this.$route.hash === '#admin') {\n this.admin_login = true;\n } else {\n if (this.$organization.sso) { // 如果设置的是sso 那么就直接跳转连管理员输入都不显示\n if (!this.$route.query.ticket && !this.$route.query.code) { // read user info\n if (this.$route.query.admin) {\n this.admin_login = true;\n this.ready = true;\n } else {\n this.$nextTick(() => {\n this.jumpToSSO();\n });\n }\n }\n }\n }\n },\n mounted() {\n const vm=this;\n if (!this.oauth && !this.$organization.sso) this.admin_login=true;\n if (this.$organization.oauth || this.$organization.sso) { // 这是显示管理员界面+单点登录界面\n if (this.$route.query.ticket ) { // read user info\n //console.log('CAS Ticket is Comming in',this.$route.query.ticket);\n this.$api('SSO' + '?ticket=' + this.$route.query.ticket, null).then(res => {\n //console.log('CAS Ticket result',res);\n if (res.data.success) {\n vm.setUserInfo(res.data.data);\n vm.jumpBack();\n } else {\n const ret = res.data.text ? res.data.text : '错误的SSO返回信息,重新登录';\n vm.$messageBox.error( ret === \"INVALID\" ? '错误的SSO返回信息,重新登录' : ret ,null,()=>{\n window.location.href = this.$organization.sso;\n });\n }\n });\n } else if (this.$route.query.code ){ // && this.$route.query.state && this.$route.query.state === 'zoom') {\n //console.log('OAUTH Code is Comming in',this.$route.query.code);\n this.$api('SSO', {code: this.$route.query.code,state:this.$route.query.state,_t:this.$route.query._t},1).then(res => {\n //console.log('OAUTH Code result',res);\n if (res.data.success) {\n if (res.data.data.error) {\n this.show_login_error = true;\n this.error_message = res.data.data.message;\n } else {\n vm.setUserInfo(res.data.data);\n vm.jumpBack();\n }\n } else {\n this.$messageBox.error(res.data.text,null,()=>{\n this.jumpToSignIn()\n })\n }\n }).catch(()=>{\n this.ready = true;\n });\n } else if (this.$route.query.from === 'portal') {\n this.ready = false;\n vm.jumpToOAuth2();\n } else if (this.sjtu_app) {\n //交大的app交我办进来就直接跳转\n vm.jumpToOAuth2();\n }else {\n this.ready = true;\n }\n } else if (!this.$organization.use_wechat) {\n this.ready = true;\n }\n },\n computed: {\n oauth(){\n return !!this.$organization.oauth;\n },\n },\n methods: {\n jumpToOAuth2() {\n this.ready = false;\n const return_url = this.$organization.signin_url;\n window.location.href = this.$organization.oauth\n + encodeURIComponent(return_url);\n },\n jumpToSSO() {\n this.ready = false;\n const return_url = this.$organization.signin_url;\n let sso = this.$organization.sso;\n if (this.$route.query._t) {\n sso = sso.replace('zoom',encodeURIComponent(this.$route.query._t));\n }\n window.location.href = sso + encodeURIComponent(return_url);\n },\n jumpToSignIn(){\n this.$router.push('/sign-in');\n this.show_login_error = false;\n },\n jumpBack(){\n const return_url = '/';\n const url = this.$route.query.state?decodeURIComponent(this.$route.query.state):return_url;\n this.$router.replace(url);\n }\n },\n}\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/index.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./digital-clock.vue?vue&type=style&index=0&id=c617fefc&prod&scoped=true&lang=less\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"page-header\",class:_vm.ecnu?'pt-3':''},[_c('div',{staticClass:\"page-container\",staticStyle:{\"position\":\"relative\",\"width\":\"100%\"}},[_c('div',{staticClass:\"d-none d-md-block\",staticStyle:{\"position\":\"absolute\",\"right\":\"10px\",\"top\":\"-10px\"}},[_c('digital-clock',{attrs:{\"ecnu\":_vm.ecnu}})],1),_c('div',{staticClass:\"logo justify-content-sm-start justify-content-center\"},[_c('img',{attrs:{\"src\":_vm.logo,\"alt\":\"university-logo\"}}),(_vm.ecnu)?_c('div',{staticClass:\"title d-none d-sm-block pt-0 ml-5\"},[_c('img',{attrs:{\"src\":require(\"@/assets/images/sigin-ecnu-logo.png\"),\"alt\":\"\"}})]):_c('div',{staticClass:\"title d-none\"},[_vm._v(_vm._s(_vm.preset.app.name ||\n '视频会议系统')+\"\\n \")])])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./page-header.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./page-header.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./page-header.vue?vue&type=template&id=4af722ee\"\nimport script from \"./page-header.vue?vue&type=script&lang=js\"\nexport * from \"./page-header.vue?vue&type=script&lang=js\"\nimport style0 from \"./page-header.vue?vue&type=style&index=0&id=4af722ee&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","module.exports = \"data:image/png;base64,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\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./page-header.vue?vue&type=style&index=0&id=4af722ee&prod&lang=scss\"","export default {\n /* 需要添加\n mounted() {\n this.qywxHandler();\n },\n */\n methods: {\n qywxHandler() {\n const vm = this;\n const is_wx_state = this.$route.query.state && this.$route.query.state.substring(0,2) === 'wx';\n if (this.$organization.use_wechat && this.$route.query.code && is_wx_state) {// read user info\n this.$api('Wechat.QYWeb', {code: this.$route.query.code, state: this.$route.query.state}).then(res => {\n if (res.data.success) {\n vm.setUserInfo(res.data.data);\n\n let redirect = this.redirectPath();\n if (!redirect) redirect = \"/\";\n vm.$router.replace(redirect);\n\n } else {\n let msg = '错误的企业微信返回信息,请用其他方式登录!';\n if (res.data.text && res.data.text != 'INVALID') msg = res.data.text;\n vm.$messageBox.error(msg);\n let redirect = this.redirectPath();\n redirect = !redirect ? \"/sign-in\" : (\"/sign-in?_t=\" + redirect);\n vm.$router.replace(redirect);\n vm.ready = true;\n }\n });\n } else if (this.$isWechat() && this.$organization.use_wechat) { // 微信客户端\n // 构建微信跳转地址\n // https://open.weixin.qq.com/connect/oauth2/authorize?appid=appid&redirect_uri=%2F&response_type=code&scope=snsapi_userinfo&agentid=1000013&state=STATE#wechat_redirect\n let state = 'wx';\n if (this.$route.query._t) {\n state = 'wx_' + encodeURIComponent(this.$route.query._t);\n }\n const wx_redirect = \"https://open.weixin.qq.com/connect/oauth2/authorize?\" +\n \"appid=\" + this.$organization.wechat_appid +\n \"&redirect_uri=\" + encodeURIComponent(this.$organization.signin_url) +\n \"&response_type=code&scope=snsapi_userinfo&agentid=\" + this.$organization.wechat_agentid +\n \"&state=\" + state + \"#wechat_redirect\";\n window.location.href = wx_redirect;\n } else {\n this.ready = true;\n }\n },\n redirectPath(){\n let redirect = null;\n if (this.$route.query.state.substring(0,3) === 'wx_') {\n redirect = decodeURIComponent(this.$route.query.state.substring(3));\n }\n return redirect;\n }\n }\n}\n","import {mapState,mapGetters,mapMutations} from \"vuex\"\nexport default {\n computed:{\n ...mapState(['process','preset']),\n ...mapGetters('process',['isCollapsed','pageSize']),\n ...mapGetters('user',['user']),\n en(){\n return this.$english();\n },\n english(){\n return this.$english();\n },\n is_mobile(){\n return this.$isMobile();\n },\n },\n methods:{\n ...mapMutations('user', ['clear',\"setUserInfo\"]),\n ...mapMutations('process', ['setCollapsed','setPageSize']),\n }\n}\n","var win = typeof window !== \"undefined\" ? window : undefined;\nvar doc = typeof document !== \"undefined\" ? document : undefined;\nvar nav = typeof navigator !== \"undefined\" ? navigator : undefined;\nvar loc = typeof location !== \"undefined\" ? location : undefined;\nfunction getHref() {\n return (loc == null ? void 0 : loc.href) || \"\";\n}\nfunction getTitle() {\n return (doc == null ? void 0 : doc.title) || \"\";\n}\n\nvar _ua_match;\nvar ua = (nav == null ? void 0 : nav.userAgent) || \"\";\nvar platform = (nav == null ? void 0 : nav.platform) || \"\";\nvar wecomVersion = (_ua_match = ua == null ? void 0 : ua.match(/wxwork\\/([\\d.]+)/i)) == null ? void 0 : _ua_match[1];\nvar isWeCom = !!wecomVersion;\nvar isWeChat = !isWeCom && /micromessenger/i.test(ua);\nvar isAndroid = /\\bAndroid\\b/i.test(ua);\nvar isWindows = /Win/i.test(platform);\nvar _getAppleDeviceType = getAppleDeviceType();\nvar isIOS = _getAppleDeviceType.isIOS, isMac = _getAppleDeviceType.isMac;\nfunction getAppleDeviceType() {\n var _nav_maxTouchPoints;\n var maxTouchPoints = (_nav_maxTouchPoints = nav == null ? void 0 : nav.maxTouchPoints) != null ? _nav_maxTouchPoints : 1;\n var isMac = /Mac/i.test(platform);\n // https://stackoverflow.com/questions/56934826/distinguish-between-ipad-and-mac-on-ipad-with-ipados\n if (isMac && maxTouchPoints > 2) {\n return {\n isMac: false,\n isIOS: true\n };\n }\n return {\n isMac: isMac,\n isIOS: /\\b(iPhone|iPad|iPod)\\b/i.test(ua)\n };\n}\n\nvar registerOptions;\nvar corpConfigTask;\nvar agentConfigTask;\nfunction setRegisterOptions(options) {\n registerOptions = options;\n}\nfunction getRegisterOptions() {\n return registerOptions;\n}\nfunction getCorpConfigTask() {\n return corpConfigTask;\n}\nfunction setCorpConfigTask(task) {\n corpConfigTask = task;\n}\nfunction getCorpConfigParams() {\n var _corpConfigTask_getResult;\n return (_corpConfigTask_getResult = corpConfigTask == null ? void 0 : corpConfigTask.getResult()) == null ? void 0 : _corpConfigTask_getResult.params;\n}\nfunction getAgentConfigTask() {\n return agentConfigTask;\n}\nfunction setAgentConfigTask(task) {\n agentConfigTask = task;\n}\nfunction getAgentConfigParams() {\n var _agentConfigTask_getResult;\n return (_agentConfigTask_getResult = agentConfigTask == null ? void 0 : agentConfigTask.getResult()) == null ? void 0 : _agentConfigTask_getResult.params;\n}\nfunction getConfigParams() {\n var registerOptions = getRegisterOptions();\n if (isWeCom && (registerOptions == null ? void 0 : registerOptions.getAgentConfigSignature)) {\n return getAgentConfigParams();\n }\n return getCorpConfigParams();\n}\nfunction getConfigCorpId() {\n var registerOptions = getRegisterOptions();\n if (isWeCom && (registerOptions == null ? void 0 : registerOptions.getAgentConfigSignature)) {\n var params = getAgentConfigParams();\n return params == null ? void 0 : params.corpid;\n }\n var params1 = getCorpConfigParams();\n return params1 == null ? void 0 : params1.appId;\n}\n/**\n * 获取 config 或 agentConfig 传入的相关参数\n *\n * 用于外部 sdk 调用私有方法\n */ function getVerifyParams() {\n var verifyParams = getConfigParams();\n if (!verifyParams) {\n return;\n }\n var corpId = getConfigCorpId();\n return {\n appId: corpId,\n verifyAppId: corpId,\n verifySignType: \"sha1\",\n verifyTimestamp: verifyParams.timestamp,\n verifyNonceStr: verifyParams.nonceStr,\n verifySignature: verifyParams.signature\n };\n}\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) resolve(value);\n else Promise.resolve(value).then(_next, _throw);\n}\nfunction _async_to_generator(fn) {\n return function() {\n var self = this, args = arguments;\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\n\nfunction __generator(thisArg, body) {\n var verb = function verb(n) {\n return function(v) {\n return step([\n n,\n v\n ]);\n };\n };\n var step = function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while(g && (g = 0, op[0] && (_ = 0)), _)try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [\n op[0] & 2,\n t.value\n ];\n switch(op[0]){\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [\n 0\n ];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [\n 6,\n e\n ];\n y = 0;\n } finally{\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n };\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n }, f, y, t, g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() {\n return this;\n }), g;\n}\n\nfunction _extends() {\n _extends = Object.assign || function assign(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source)if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\n\nfunction _array_like_to_array(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\n\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);\n}\n\nfunction _create_for_of_iterator_helper_loose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (it) return (it = it.call(o)).next.bind(it);\n // Fallback for engines without symbol support\n if (Array.isArray(o) || (it = _unsupported_iterable_to_array(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n return function() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar webToClientJsApiMap = {\n config: \"preVerifyJsApi\",\n onMenuShareTimeline: \"menu:share:timeline\",\n onMenuShareAppMessage: \"menu:share:appmessage\",\n onMenuShareWechat: \"menu:share:wechat\",\n onMenuShareQQ: \"menu:share:qq\",\n onMenuShareWeibo: \"menu:share:weiboApp\",\n onMenuShareQZone: \"menu:share:QZone\",\n previewImage: \"imagePreview\",\n getLocation: \"geoLocation\",\n openProductSpecificView: \"openProductViewWithPid\",\n addCard: \"batchAddCard\",\n openCard: \"batchViewCard\",\n chooseWXPay: \"getBrandWCPayRequest\",\n openEnterpriseRedPacket: \"getRecevieBizHongBaoRequest\",\n startSearchBeacons: \"startMonitoringBeacons\",\n stopSearchBeacons: \"stopMonitoringBeacons\",\n onSearchBeacons: \"onBeaconsInRange\",\n consumeAndShareCard: \"consumedShareCard\",\n openAddress: \"editAddress\",\n getBrandWCPayRequest: \"getBrandWCPayRequest\"\n};\nvar clientToWebJsApiMap = {};\nfor(var _iterator = _create_for_of_iterator_helper_loose(Object.keys(webToClientJsApiMap)), _step; !(_step = _iterator()).done;){\n var key = _step.value;\n clientToWebJsApiMap[webToClientJsApiMap[key]] = key;\n}\nfunction mapJsApiNameToClient(name) {\n return webToClientJsApiMap[name] || name;\n}\nfunction mapJsApiNameToWeb(name) {\n return clientToWebJsApiMap[name] || name;\n}\nfunction mapJsApiListToClient(list) {\n return list.map(mapJsApiNameToClient);\n}\n\nfunction _array_without_holes(arr) {\n if (Array.isArray(arr)) return _array_like_to_array(arr);\n}\n\nfunction _iterable_to_array(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) {\n return Array.from(iter);\n }\n}\n\nfunction _non_iterable_spread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _to_consumable_array(arr) {\n return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();\n}\n\nfunction error() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n var _console;\n (_console = console).error.apply(_console, [\n \"[wwsdk]\"\n ].concat(_to_consumable_array(args))); // eslint-disable-line no-console\n}\n\nvar originalHref = getHref();\n/**\n * 两个 SemVer 相减,取差的符号\n */ function semverSubtract(v1, v2) {\n var v1Seg = (v1 == null ? void 0 : v1.split(\".\")) || [];\n var v2Seg = (v2 == null ? void 0 : v2.split(\".\")) || [];\n for(var i = 0, ii = Math.max(v1Seg.length, v2Seg.length); i < ii; i++){\n var v1Num = parseInt(v1Seg[i]) || 0;\n var v2Num = parseInt(v2Seg[i]) || 0;\n if (v1Num > v2Num) {\n return 1;\n }\n if (v1Num < v2Num) {\n return -1;\n }\n }\n return 0;\n}\nfunction arrayBufferToBase64(buffer) {\n if (typeof Buffer !== \"undefined\") {\n return Buffer.from(buffer).toString(\"base64\");\n }\n var binary = \"\";\n var bytes = new Uint8Array(buffer);\n var len = bytes.byteLength;\n for(var i = 0; i < len; i++){\n binary += String.fromCharCode(bytes[i]);\n }\n return btoa(binary);\n}\nfunction base64ToArrayBuffer(base64) {\n if (typeof Buffer !== \"undefined\") {\n return Buffer.from(base64, \"base64\").buffer;\n }\n var binary = atob(base64);\n var length = binary.length;\n var bytes = new Uint8Array(length);\n for(var i = 0; i < length; i++){\n bytes[i] = binary.charCodeAt(i);\n }\n return bytes.buffer;\n}\nfunction safeRun(fn, param) {\n if (!isFunction(fn)) {\n return;\n }\n try {\n return fn(param);\n } catch (error$1) {\n error(error$1);\n }\n}\nfunction startsWith(str, search) {\n return str.slice(0, search.length) === search;\n}\nfunction getSignURL(original) {\n if (original) {\n return originalHref.split(\"#\")[0];\n }\n return getHref().split(\"#\")[0];\n}\nfunction extractErrMsgKeyword(errMsg) {\n if (!isString(errMsg)) {\n return \"\";\n }\n return errMsg.slice(errMsg.indexOf(\":\") + 1);\n}\nfunction isFalsy(val) {\n return val === false || val === 0;\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction isObject(val) {\n if (!val) {\n return false;\n }\n return typeof val === \"object\";\n}\nfunction isFunction(val) {\n return typeof val === \"function\";\n}\nfunction isString(val) {\n return typeof val === \"string\";\n}\nfunction joinList(list) {\n if (!list) {\n return list;\n }\n if (isString(list)) {\n return list;\n }\n return list.join(\";\");\n}\n\n/**\n * WeixinJSBridge 是否已注入到 window\n */ var isWeixinJSBridgeReady = !!(win == null ? void 0 : win.WeixinJSBridge);\n/**\n * 等待 WeixinJSBridge 注入到 window\n */ var onWeixinJSBridgeReady = Promise.resolve();\nif (!isWeixinJSBridgeReady) {\n onWeixinJSBridgeReady = new Promise(function(resolve) {\n doc == null ? void 0 : doc.addEventListener(\"WeixinJSBridgeReady\", function() {\n isWeixinJSBridgeReady = true;\n resolve();\n });\n });\n}\n/**\n * 监听 JSSDK 未定义的事件\n *\n * @example\n * ```ts\n * ww.on('onBeaconsInRange', res => {\n * console.log(res)\n * })\n * ```\n *\n * @param name 事件名称\n * @param callback 监听回调\n */ function on(name, callback) {\n return _on.apply(this, arguments);\n}\nfunction _on() {\n _on = _async_to_generator(function(name, callback) {\n return __generator(this, function(_state) {\n switch(_state.label){\n case 0:\n if (!!isWeixinJSBridgeReady) return [\n 3,\n 2\n ];\n return [\n 4,\n onWeixinJSBridgeReady\n ];\n case 1:\n _state.sent();\n _state.label = 2;\n case 2:\n win.WeixinJSBridge.on(name, callback);\n return [\n 2\n ];\n }\n });\n });\n return _on.apply(this, arguments);\n}\n/**\n * 调用 JSSDK 未定义的 JSAPI\n *\n * @example\n * ```ts\n * ww.invoke('openEnterpriseChat', params, res => {\n * console.log(res)\n * })\n * ```\n *\n * @param name JSAPI 名称\n * @param params JSAPI 参数\n * @param callback 回调函数\n * @returns JSAPI 返回值\n */ function invoke(name) {\n return _invoke.apply(this, arguments);\n}\nfunction _invoke() {\n _invoke = _async_to_generator(function(name, params, callback) {\n var result, keyword;\n return __generator(this, function(_state) {\n switch(_state.label){\n case 0:\n if (params === void 0) params = {};\n if (!!isWeixinJSBridgeReady) return [\n 3,\n 2\n ];\n return [\n 4,\n onWeixinJSBridgeReady\n ];\n case 1:\n _state.sent();\n _state.label = 2;\n case 2:\n return [\n 4,\n new Promise(function(resolve) {\n var fullParams = _extends({}, params, getVerifyParams());\n win.WeixinJSBridge.invoke(name, fullParams, resolve);\n })\n ];\n case 3:\n result = _state.sent();\n if (!result.errMsg) {\n result.errMsg = formatErrMsg(name, result.err_msg || result.errmsg);\n }\n keyword = extractErrMsgKeyword(result.errMsg);\n if (result.errCode == null) {\n if (result.err_code != null) {\n result.errCode = result.err_code;\n } else {\n result.errCode = keyword === \"ok\" ? 0 : -1;\n }\n }\n safeRun(callback, result);\n if (keyword !== \"ok\") {\n throw result;\n }\n return [\n 2,\n result\n ];\n }\n });\n });\n return _invoke.apply(this, arguments);\n}\nfunction formatErrMsg(name, errMsg) {\n var apiName = mapJsApiNameToWeb(name);\n if (!errMsg) {\n return \"\" + apiName + \":ok\";\n }\n var keyword = extractErrMsgKeyword(errMsg);\n if (keyword === \"confirm\") {\n keyword = \"ok\";\n }\n if (keyword === \"failed\") {\n keyword = \"fail\";\n }\n if (startsWith(keyword, \"failed_\")) {\n keyword = keyword.slice(7);\n }\n if (startsWith(keyword, \"fail_\")) {\n keyword = keyword.slice(5);\n }\n keyword = keyword.replace(/_/g, \"\").toLowerCase();\n if (keyword === \"access denied\" || keyword === \"no permission to execute\") {\n keyword = \"permission denied\";\n }\n if (apiName === \"config\" && keyword === \"function not exist\") {\n keyword = \"ok\";\n }\n if (!keyword) {\n keyword = \"fail\";\n }\n return apiName + \":\" + keyword;\n}\n\nfunction _set_prototype_of(o, p) {\n _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _set_prototype_of(o, p);\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _set_prototype_of(subClass, superClass);\n}\n\nfunction _is_native_reflect_construct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _construct(Parent, args, Class) {\n if (_is_native_reflect_construct()) _construct = Reflect.construct;\n else {\n _construct = function construct(Parent, args, Class) {\n var a = [\n null\n ];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _set_prototype_of(instance, Class.prototype);\n return instance;\n };\n }\n return _construct.apply(null, arguments);\n}\n\nfunction _get_prototype_of(o) {\n _get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _get_prototype_of(o);\n}\n\nfunction _is_native_function(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n\nfunction _wrap_native_super(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrap_native_super = function _wrap_native_super(Class) {\n var Wrapper = function Wrapper() {\n return _construct(Class, arguments, _get_prototype_of(this).constructor);\n };\n if (Class === null || !_is_native_function(Class)) return Class;\n if (typeof Class !== \"function\") throw new TypeError(\"Super expression must either be null or a function\");\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return _set_prototype_of(Wrapper, Class);\n };\n return _wrap_native_super(Class);\n}\n\nvar SDKError = /*#__PURE__*/ function(Error1) {\n _inherits(SDKError, Error1);\n function SDKError(message) {\n return Error1.call(this, \"SDK Error: \" + message);\n }\n return SDKError;\n}(_wrap_native_super(Error));\nvar AbortError = /*#__PURE__*/ function(SDKError) {\n _inherits(AbortError, SDKError);\n function AbortError() {\n return SDKError.call(this, \"Aborted\");\n }\n return AbortError;\n}(SDKError);\n\nvar CONFIG_TYPE_CORP = 1;\nvar CONFIG_TYPE_AGENT = 2;\nvar ConfigTask = /*#__PURE__*/ function() {\n function ConfigTask(type, factory) {\n this.type = type;\n this.useOriginalURL = isWeChat && !isWindows && !isMac && type === CONFIG_TYPE_CORP;\n this.url = getSignURL(this.useOriginalURL);\n this.promise = this.awaitPromise(factory(this.url));\n }\n var _proto = ConfigTask.prototype;\n _proto.checkValid = function checkValid() {\n if (isWeCom && this.url !== getSignURL(this.useOriginalURL)) {\n this.error = new AbortError();\n }\n return !this.error;\n };\n _proto.getResult = function getResult() {\n if (this.checkValid()) {\n return this.result;\n }\n };\n _proto.awaitPromise = function awaitPromise(promise) {\n var _this = this;\n return _async_to_generator(function() {\n var error;\n return __generator(this, function(_state) {\n switch(_state.label){\n case 0:\n _state.trys.push([\n 0,\n 2,\n ,\n 3\n ]);\n return [\n 4,\n promise\n ];\n case 1:\n _this.result = _state.sent();\n return [\n 2,\n _this.result\n ];\n case 2:\n error = _state.sent();\n _this.error = error;\n throw error;\n case 3:\n return [\n 2\n ];\n }\n });\n })();\n };\n return ConfigTask;\n}();\n\n/**\n * 触发或等待 config 返回\n */ function ensureCorpConfigReady() {\n return _ensureCorpConfigReady.apply(this, arguments);\n}\nfunction _ensureCorpConfigReady() {\n _ensureCorpConfigReady = _async_to_generator(function() {\n var originalTask, task;\n return __generator(this, function(_state) {\n originalTask = getCorpConfigTask();\n if (originalTask == null ? void 0 : originalTask.checkValid()) {\n return [\n 2,\n originalTask.promise\n ];\n }\n task = new ConfigTask(CONFIG_TYPE_CORP, /*#__PURE__*/ _async_to_generator(function(url) {\n var registerOptions, data, params, result;\n return __generator(this, function(_state) {\n switch(_state.label){\n case 0:\n registerOptions = getRegisterOptions();\n if (!(registerOptions == null ? void 0 : registerOptions.getConfigSignature)) {\n throw new SDKError(\"Missing getConfigSignature\");\n }\n return [\n 4,\n registerOptions.getConfigSignature(url)\n ];\n case 1:\n data = _state.sent();\n if (!task.checkValid()) {\n throw new AbortError();\n }\n params = buildCorpConfigParams(registerOptions, data);\n return [\n 4,\n invoke(\"preVerifyJSAPI\", {\n appId: params.appId,\n verifyJsApiList: params.jsApiList,\n verifyOpenTagList: params.openTagList,\n verifyAppId: params.appId,\n verifySignType: \"sha1\",\n verifyTimestamp: params.timestamp,\n verifyNonceStr: params.nonceStr,\n verifySignature: params.signature\n })\n ];\n case 2:\n result = _state.sent();\n if (!task.checkValid()) {\n throw new AbortError();\n }\n return [\n 2,\n {\n params: params,\n result: result\n }\n ];\n }\n });\n }));\n task.promise.then(function(res) {\n var registerOptions = getRegisterOptions();\n safeRun(registerOptions == null ? void 0 : registerOptions.onConfigSuccess, res.result);\n safeRun(registerOptions == null ? void 0 : registerOptions.onConfigComplete, res.result);\n }, function(error) {\n var registerOptions = getRegisterOptions();\n safeRun(registerOptions == null ? void 0 : registerOptions.onConfigFail, error);\n safeRun(registerOptions == null ? void 0 : registerOptions.onConfigComplete, error);\n });\n setCorpConfigTask(task);\n return [\n 2,\n task.promise\n ];\n });\n });\n return _ensureCorpConfigReady.apply(this, arguments);\n}\nfunction buildCorpConfigParams(options, data) {\n return {\n appId: options.corpId,\n timestamp: \"\" + data.timestamp,\n nonceStr: data.nonceStr,\n signature: data.signature,\n jsApiList: mapJsApiListToClient(options.jsApiList || [\n \"config\"\n ]),\n openTagList: mapJsApiListToClient(options.openTagList || [])\n };\n}\n\n/**\n * 触发或等待 agentConfig 返回\n */ function ensureAgentConfigReady() {\n return _ensureAgentConfigReady.apply(this, arguments);\n}\nfunction _ensureAgentConfigReady() {\n _ensureAgentConfigReady = _async_to_generator(function() {\n var originalTask, task;\n return __generator(this, function(_state) {\n originalTask = getAgentConfigTask();\n if (originalTask == null ? void 0 : originalTask.checkValid()) {\n return [\n 2,\n originalTask.promise\n ];\n }\n task = new ConfigTask(CONFIG_TYPE_AGENT, /*#__PURE__*/ _async_to_generator(function(url) {\n var configPromise, _ref, params, result;\n return __generator(this, function(_state) {\n switch(_state.label){\n case 0:\n if (isWeCom && semverSubtract(wecomVersion, \"3.0.24\") < 0) {\n configPromise = ensureCorpConfigReady();\n }\n return [\n 4,\n Promise.all([\n resolveAgentConfigParams(url),\n configPromise\n ])\n ];\n case 1:\n _ref = _state.sent(), params = _ref[0];\n if (!task.checkValid()) {\n throw new AbortError();\n }\n return [\n 4,\n invoke(\"agentConfig\", params)\n ];\n case 2:\n result = _state.sent();\n if (!task.checkValid()) {\n throw new AbortError();\n }\n return [\n 2,\n {\n params: params,\n result: result\n }\n ];\n }\n });\n }));\n task.promise.then(function(res) {\n var registerOptions = getRegisterOptions();\n safeRun(registerOptions == null ? void 0 : registerOptions.onAgentConfigSuccess, res.result);\n safeRun(registerOptions == null ? void 0 : registerOptions.onAgentConfigComplete, res.result);\n }, function(error) {\n var registerOptions = getRegisterOptions();\n safeRun(registerOptions == null ? void 0 : registerOptions.onAgentConfigFail, error);\n safeRun(registerOptions == null ? void 0 : registerOptions.onAgentConfigComplete, error);\n });\n setAgentConfigTask(task);\n return [\n 2,\n task.promise\n ];\n });\n });\n return _ensureAgentConfigReady.apply(this, arguments);\n}\nfunction resolveAgentConfigParams(url) {\n return _resolveAgentConfigParams.apply(this, arguments);\n}\nfunction _resolveAgentConfigParams() {\n _resolveAgentConfigParams = _async_to_generator(function(url) {\n var registerOptions, data;\n return __generator(this, function(_state) {\n switch(_state.label){\n case 0:\n registerOptions = getRegisterOptions();\n if (!(registerOptions == null ? void 0 : registerOptions.getAgentConfigSignature)) {\n throw new SDKError(\"Missing getAgentConfigSignature\");\n }\n return [\n 4,\n registerOptions.getAgentConfigSignature(url)\n ];\n case 1:\n data = _state.sent();\n return [\n 2,\n {\n corpid: registerOptions.corpId,\n agentid: \"\" + registerOptions.agentId,\n timestamp: \"\" + data.timestamp,\n nonceStr: data.nonceStr,\n signature: data.signature,\n jsApiList: mapJsApiListToClient(registerOptions.jsApiList || [\n \"agentConfig\"\n ])\n }\n ];\n }\n });\n });\n return _resolveAgentConfigParams.apply(this, arguments);\n}\n\n/**\n * 触发或等待 config、agentConfig 完成\n *\n * @example\n * ```ts\n * await ww.ensureConfigReady()\n * ```\n */ function ensureConfigReady() {\n var registerOptions = getRegisterOptions();\n if (isWeCom && (registerOptions == null ? void 0 : registerOptions.getAgentConfigSignature)) {\n return ensureAgentConfigReady();\n }\n return ensureCorpConfigReady();\n}\n/**\n * 在提供了 registerOptions 的情况下保证 config、agentConfig 完成\n *\n * @private\n */ function tryEnsureConfigReady() {\n var registerOptions = getRegisterOptions();\n if (registerOptions) {\n return ensureConfigReady();\n }\n}\n\n/**\n * 注册应用信息。\n *\n * @example\n * ```ts\n * ww.register({\n * corpId: 'ww7ca4776b2a70000',\n * jsApiList: ['getExternalContact'],\n * getConfigSignature\n * })\n * ```\n */ function register(options) {\n setRegisterOptions(options);\n if (isWeChat || isWeCom) {\n ensureConfigReady();\n }\n}\n\n/**\n * 透传 JSAPI 调用\n */ function passthrough(name, params) {\n return _passthrough.apply(this, arguments);\n}\nfunction _passthrough() {\n _passthrough = _async_to_generator(function(name, params, jsapiParams) {\n return __generator(this, function(_state) {\n if (jsapiParams === void 0) jsapiParams = params;\n return [\n 2,\n promiseToCallback(params, /*#__PURE__*/ _async_to_generator(function() {\n return __generator(this, function(_state) {\n switch(_state.label){\n case 0:\n return [\n 4,\n tryEnsureConfigReady()\n ];\n case 1:\n _state.sent();\n return [\n 2,\n invoke(name, jsapiParams)\n ];\n }\n });\n }))\n ];\n });\n });\n return _passthrough.apply(this, arguments);\n}\n/**\n * 绑定事件\n */ function bindShare(name, params, handler) {\n return _bindShare.apply(this, arguments);\n}\nfunction _bindShare() {\n _bindShare = _async_to_generator(function(name, params, handler) {\n return __generator(this, function(_state) {\n switch(_state.label){\n case 0:\n return [\n 4,\n tryEnsureConfigReady()\n ];\n case 1:\n _state.sent();\n on(name, function() {\n promiseToCallback(params, handler);\n });\n return [\n 2\n ];\n }\n });\n });\n return _bindShare.apply(this, arguments);\n}\n/**\n * 把 promise 转为 success/fail callbacak 回调\n */ function promiseToCallback(params, factory) {\n return factory(params).then(function(result) {\n safeRun(params == null ? void 0 : params.success, result);\n safeRun(params == null ? void 0 : params.complete, result);\n return result;\n }, function(error) {\n var keyword = extractErrMsgKeyword(error.errMsg);\n if (keyword === \"cancel\") {\n safeRun(params == null ? void 0 : params.cancel, error);\n } else {\n safeRun(params == null ? void 0 : params.fail, error);\n }\n safeRun(params == null ? void 0 : params.complete, error);\n throw error;\n });\n}\n\nvar Proximity;\n(function(Proximity) {\n Proximity[/**\n * CLProximityUnknown\n */ \"CLProximityUnknown\"] = \"0\";\n Proximity[/**\n * CLProximityImmediate\n */ \"CLProximityImmediate\"] = \"1\";\n Proximity[/**\n * CLProximityNear\n */ \"CLProximityNear\"] = \"2\";\n Proximity[/**\n * CLProximityFar\n */ \"CLProximityFar\"] = \"3\";\n})(Proximity || (Proximity = {}));\n/**\n * 开启查找周边 iBeacon 设备\n *\n * @see https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html\n * @compat WeChat\n */ function startSearchBeacons(params) {\n if (params === void 0) params = {};\n return passthrough(\"startMonitoringBeacons\", params);\n}\n/**\n * 关闭查找周边 iBeacon 设备\n *\n * @see https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html\n * @compat WeChat\n */ function stopSearchBeacons(params) {\n if (params === void 0) params = {};\n return passthrough(\"stopMonitoringBeacons\", params);\n}\n/**\n * 监听周边 iBeacon 设备接口\n *\n * @see https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html\n * @compat WeChat\n */ function onSearchBeacons(callback) {\n on(\"onBeaconsInRange\", callback);\n}\n\n/**\n * 初始化蓝牙模块。\n *\n * @compat WeCom\n *\n * @example\n * ```ts\n * ww.openBluetoothAdapter()\n * ```\n */ function openBluetoothAdapter(params) {\n if (params === void 0) params = {};\n return passthrough(\"openBluetoothAdapter\", params);\n}\n/**\n * 关闭蓝牙模块。\n *\n * 调用该方法将断开所有已建立的链接并释放系统资源。\n *\n * @compat WeCom\n *\n * @example\n * ```ts\n * ww.closeBluetoothAdapter()\n * ```\n */ function closeBluetoothAdapter(params) {\n if (params === void 0) params = {};\n return passthrough(\"closeBluetoothAdapter\", params);\n}\n/**\n * 获取本机蓝牙适配器状态。\n *\n * @compat WeCom\n *\n * @example\n * ```ts\n * ww.getBluetoothAdapterState()\n * ```\n */ function getBluetoothAdapterState(params) {\n if (params === void 0) params = {};\n return passthrough(\"getBluetoothAdapterState\", params);\n}\n/**\n * 监听蓝牙适配器状态变化。\n *\n * @compat WeCom\n *\n * @example\n * ```ts\n * ww.onBluetoothAdapterStateChange(function(event) {\n * console.log(event)\n * })\n * ```\n */ function onBluetoothAdapterStateChange(callback) {\n on(\"onBluetoothAdapterStateChange\", callback);\n}\n/**\n * 开始搜寻附近的蓝牙外围设备。\n *\n * @compat WeCom\n *\n * @example\n * ```ts\nww.startBluetoothDevicesDiscovery({\n services: ['FEE7']\n})\n * ```\n */ function startBluetoothDevicesDiscovery(params) {\n if (params === void 0) params = {};\n return passthrough(\"startBluetoothDevicesDiscovery\", params);\n}\n/**\n * 停止搜寻附近的蓝牙外围设备。\n *\n * 若已经找到需要的蓝牙设备并不需要继续搜索时,建议调用该接口停止蓝牙搜索。\n *\n * @compat WeCom\n *\n * @example\n * ```ts\n * ww.stopBluetoothDevicesDiscovery()\n * ```\n */ function stopBluetoothDevicesDiscovery(params) {\n if (params === void 0) params = {};\n return passthrough(\"stopBluetoothDevicesDiscovery\", params);\n}\n/**\n * 获取在蓝牙模块生效期间所有已发现的蓝牙设备。\n *\n * @note\n * - 该接口获取到的设备列表为蓝牙模块生效期间所有搜索到的蓝牙设备,若在蓝牙模块使用流程结束后未及时调用 closeBluetoothAdapter 释放资源,\n * 调用该接口可能会返回之前蓝牙使用流程中搜索到的蓝牙设备,可能设备已经不在用户身边,无法连接\n * - 蓝牙设备在被搜索到时,系统返回的 name 字段一般为广播包中的 LocalName 字段中的设备名称,而如果与蓝牙设备建立连接,系统返回的 name\n * 字段会改为从蓝牙设备上获取到的 GattName。若需要动态改变设备名称并展示,建议使用 localName 字段\n *\n * @compat WeCom\n *\n * @example\n * ```ts\n * ww.getBluetoothDevices()\n * ```\n */ function getBluetoothDevices(params) {\n if (params === void 0) params = {};\n return promiseToCallback(params, /*#__PURE__*/ _async_to_generator(function() {\n var res, _iterator, _step, device;\n return __generator(this, function(_state) {\n switch(_state.label){\n case 0:\n return [\n 4,\n tryEnsureConfigReady()\n ];\n case 1:\n _state.sent();\n return [\n 4,\n invoke(\"getBluetoothDevices\")\n ];\n case 2:\n res = _state.sent();\n for(_iterator = _create_for_of_iterator_helper_loose(res.devices || []); !(_step = _iterator()).done;){\n device = _step.value;\n device.advertisData = base64ToArrayBuffer(device.advertisData);\n device.serviceData = base64ToArrayBuffer(device.serviceData);\n }\n return [\n 2,\n res\n ];\n }\n });\n }));\n}\n/**\n * 监听寻找到新设备。\n *\n * @note\n * - 若在该接口中回调了某个设备,则此设备会添加到 getBluetoothDevices 接口返回的设备列表中\n *\n * @compat WeCom\n *\n * @example\n * ```ts\n * ww.onBluetoothDeviceFound(function(event) {\n * console.log(event)\n * })\n * ```\n */ function onBluetoothDeviceFound(callback) {\n on(\"onBluetoothDeviceFound\", callback);\n}\n/**\n * 根据 uuid 获取处于已连接状态的设备。\n *\n * @compat WeCom\n *\n * @example\n * ```ts\n * ww.getConnectedBluetoothDevices({\n * services: ['FEE7']\n * })\n * ```\n */ function getConnectedBluetoothDevices(params) {\n return passthrough(\"getConnectedBluetoothDevices\", params);\n}\n/**\n * 连接低功耗蓝牙设备。\n *\n * @note\n * - 安卓手机上如果多次调用 createBLEConnection 创建连接,有可能导致系统持有同一设备多个连接的实例,导致调用 closeBLEConnection 的时候并不能真正的断开与设备的连接。因此请保证尽量成对的调用 create 和 close 接口\n * - 蓝牙链接随时可能断开,建议监听 onBLEConnectionStateChange 回调事件,当蓝牙设备断开时按需执行重连操作\n * - 若对未连接的设备或已断开连接的设备调用数据读写操作的接口,会返回 10006 错误,建议进行重连操作\n *\n * @compat WeCom\n *\n * @example\n * ```ts\n * ww.createBLEConnection({\n * deviceId: deviceId\n * })\n * ```\n */ function createBLEConnection(params) {\n return passthrough(\"createBLEConnection\", params);\n}\n/**\n * 断开与低功耗蓝牙设备的连接。\n *\n * @compat WeCom\n *\n * @example\n * ```ts\n * ww.closeBLEConnection({\n * deviceId: deviceId\n * })\n * ```\n */ function closeBLEConnection(params) {\n return passthrough(\"closeBLEConnection\", params);\n}\n/**\n * 监听低功耗蓝牙连接状态的改变事件,包括开发者主动连接或断开连接,设备丢失,连接异常断开等等。\n *\n * @compat WeCom\n *\n * @example\n * ```ts\n * ww.onBLEConnectionStateChange(function(event) {\n * console.log(event)\n * })\n * ```\n */ function onBLEConnectionStateChange(callback) {\n on(\"onBLEConnectionStateChange\", callback);\n}\n/**\n * 获取蓝牙设备所有 service(服务)。\n *\n * @compat WeCom\n *\n * @example\n * ```ts\n * ww.getBLEDeviceServices({\n * deviceId: deviceId\n * })\n * ```\n */ function getBLEDeviceServices(params) {\n return passthrough(\"getBLEDeviceServices\", params);\n}\n/**\n * 获取蓝牙设备某个服务中的所有 characteristic(特征值)。\n *\n * @compat WeCom\n *\n * @example\n * ```ts\n * ww.getBLEDeviceCharacteristics({\n * deviceId: deviceId,\n * serviceId: serviceId\n * })\n * ```\n */ function getBLEDeviceCharacteristics(params) {\n return passthrough(\"getBLEDeviceCharacteristics\", params);\n}\n/**\n * 读取低功耗蓝牙设备的特征值的二进制数据值。\n *\n * @note\n * - 设备的特征值必须支持 read 才可以成功调用,具体参照 characteristic 的 properties 属性\n * - 并行调用多次读写接口存在读写失败的可能性\n * - 接口读取到的信息需要在 onBLECharacteristicValueChange 的回调中获取\n *\n * @compat WeCom\n *\n * @example\n * ```ts\n * ww.readBLECharacteristicValue({\n * deviceId: deviceId,\n * serviceId: serviceId,\n * characteristicId: characteristicId\n * })\n * ```\n */ function readBLECharacteristicValue(params) {\n return passthrough(\"readBLECharacteristicValue\", params);\n}\n/**\n * 向低功耗蓝牙设备特征值中写入二进制数据。\n *\n * @note\n * - 设备的特征值必须支持 write 才可以成功调用,具体参照 characteristic 的 properties 属性\n * - 并行调用多次读写接口存在读写失败的可能性\n * - 接口不会对写入数据包大小做限制,但系统与蓝牙设备会确定蓝牙 4.0 单次传输的数据大小,超过最大字节数后会发生写入错误,建议每次写入不超过 20 字节\n * - 安卓平台上,在调用 notify 成功后立即调用 write 接口,在部分机型上会发生 10008 系统错误\n * - 若单次写入数据过长,iOS 平台上存在系统不会有任何回调的情况(包括错误回调)\n *\n * @compat WeCom\n *\n * @example\n * ```ts\n * ww.writeBLECharacteristicValue({\n * deviceId: deviceId,\n * serviceId: serviceId,\n * characteristicId: characteristicId,\n * value: arrayBufferValue\n * })\n * ```\n */ function writeBLECharacteristicValue(params) {\n return passthrough(\"writeBLECharacteristicValue\", params, {\n deviceId: params.deviceId,\n serviceId: params.serviceId,\n characteristicId: params.characteristicId,\n value: arrayBufferToBase64(params.value)\n });\n}\n/**\n * 启用低功耗蓝牙设备特征值变化时的 notify 功能,订阅特征值。\n *\n * @note\n * - 设备的特征值必须支持 notify 或者 indicate 才可以成功调用,具体参照 characteristic 的 properties 属性\n * - 订阅操作成功后需要设备主动更新特征值的 value 才会触发 onBLECharacteristicValueChange 回调\n * - 安卓平台上,在调用 notify 成功后立即调用 write 接口,在部分机型上会发生 10008 系统错误\n *\n * @compat WeCom\n *\n * @example\n * ```ts\n * ww.notifyBLECharacteristicValueChange({\n * deviceId: deviceId,\n * serviceId: serviceId,\n * characteristicId: characteristicId,\n * state: true\n * })\n * ```\n */ function notifyBLECharacteristicValueChange(params) {\n return passthrough(\"notifyBLECharacteristicValueChange\", params);\n}\n/**\n * 监听低功耗蓝牙设备的特征值变化。\n *\n * 必须先启用 notify 才能接收到设备推送的 notification。\n *\n * @compat WeCom\n *\n * @example\n * ```ts\n * ww.onBLECharacteristicValueChange(function(event) {\n * console.log(event)\n * })\n * ```\n */ function onBLECharacteristicValueChange(callback) {\n on(\"onBLECharacteristicValueChange\", function(event) {\n if (event == null ? void 0 : event.value) {\n event.value = base64ToArrayBuffer(event.value);\n }\n callback(event);\n });\n}\n\n/**\n * 设置系统剪贴板的内容。\n *\n * @compat WeCom iOS, Android >= 2.4.16; WeCom PC, Mac >= 3.1.2\n *\n * @example\n * ```ts\n * ww.setClipboardData({\n * data: 'data'\n * })\n * ```\n */ function setClipboardData(params) {\n return passthrough(\"setClipboardData\", params);\n}\n/**\n * 获取系统剪贴板内容。\n *\n * @compat WeCom >= 3.1.2\n *\n * @example\n * ```ts\n * ww.getClipboardData()\n * ```\n */ function getClipboardData(params) {\n if (params === void 0) params = {};\n return passthrough(\"getClipboardData\", params);\n}\n\n/**\n * 开始搜索附近的 iBeacon 设备。\n *\n * @compat WeCom\n *\n * @example\n * ```ts\n * ww.startBeaconDiscovery({\n * uuids: ['uuid']\n * })\n * ```\n */ function startBeaconDiscovery(params) {\n return passthrough(\"startBeaconDiscovery\", params);\n}\n/**\n * 停止搜索附近的 iBeacon 设备。\n *\n * @compat WeCom\n *\n * @example\n * ```ts\n * ww.stopBeaconDiscovery()\n * ```\n */ function stopBeaconDiscovery(params) {\n if (params === void 0) params = {};\n return passthrough(\"stopBeaconDiscovery\", params);\n}\n/**\n * 获取所有已搜索到的 iBeacon 设备。\n *\n * @compat WeCom\n *\n * @example\n * ```ts\n * ww.getBeacons()\n * ```\n */ function getBeacons(params) {\n if (params === void 0) params = {};\n return passthrough(\"getBeacons\", params);\n}\n/**\n * 监听 iBeacon 设备的更新事件。\n *\n * @compat WeCom\n *\n * @example\n * ```ts\n * ww.onBeaconUpdate(function(event) {\n * console.log(event)\n * })\n * ```\n */ function onBeaconUpdate(callback) {\n on(\"onBeaconUpdate\", callback);\n}\n/**\n * 监听 iBeacon 服务的状态变化。\n *\n * @compat WeCom\n *\n * @example\n * ```ts\n * ww.onBeaconServiceChange(function(event) {\n * console.log(event)\n * })\n * ```\n */ function onBeaconServiceChange(callback) {\n on(\"onBeaconServiceChange\", callback);\n}\n\nvar LocationType;\n(function(LocationType) {\n LocationType[/**\n * gps 坐标\n */ \"wgs84\"] = \"wgs84\";\n LocationType[/**\n * 火星坐标\n */ \"gcj02\"] = \"gcj02\";\n})(LocationType || (LocationType = {}));\n/**\n * 使用企业微信内置地图查看位置。\n *\n * @example\n * ```ts\n * ww.openLocation({\n * latitude: 0,\n * longitude: 0,\n * name: 'name',\n * address: 'address',\n * scale: 1\n * })\n * ```\n */ function openLocation(params) {\n return passthrough(\"openLocation\", params, {\n latitude: params.latitude,\n longitude: params.longitude,\n name: params.name || \"\",\n address: params.address || \"\",\n scale: params.scale || 28,\n infoUrl: params.infoUrl || \"\"\n });\n}\n/**\n * 获取地理位置。\n *\n * @example\n * ```ts\n * ww.getLocation({\n * type: 'wgs84'\n * })\n * ```\n */ function getLocation(params) {\n if (params === void 0) params = {};\n return promiseToCallback(params, /*#__PURE__*/ _async_to_generator(function() {\n var res;\n return __generator(this, function(_state) {\n switch(_state.label){\n case 0:\n return [\n 4,\n tryEnsureConfigReady()\n ];\n case 1:\n _state.sent();\n return [\n 4,\n invoke(\"geoLocation\", {\n type: params.type || \"wgs84\"\n })\n ];\n case 2:\n res = _state.sent();\n delete res.type;\n return [\n 2,\n res\n ];\n }\n });\n }));\n}\n/**\n * 打开持续定位。\n *\n * @compat WeCom >= 2.4.20\n *\n * @example\n * ```ts\n * ww.startAutoLBS({\n * type: 'gcj02'\n * })\n * ```\n */ function startAutoLBS(params) {\n return passthrough(\"startAutoLBS\", params);\n}\n/**\n * 停止持续定位。\n *\n * @compat WeCom >= 2.4.20\n *\n * @example\n * ```ts\n * ww.stopAutoLBS()\n * ```\n */ function stopAutoLBS(params) {\n if (params === void 0) params = {};\n return passthrough(\"stopAutoLBS\", params);\n}\n/**\n * 监听地理位置的变化。\n *\n * @limit\n * - 需要提前调用 startAutoLBS\n * - 需要用户停留在当前页面\n *\n * @compat WeCom >= 2.4.20\n *\n * @example\n * ```ts\n * ww.onLocationChange(function(event) {\n * console.log(event)\n * })\n * ```\n */ function onLocationChange(callback) {\n on(\"auto:location:report\", callback);\n}\n\nvar NetworkType;\n(function(NetworkType) {\n NetworkType[/**\n * wifi\n */ \"wifi\"] = \"wifi\";\n NetworkType[/**\n * 2g\n */ \"network2g\"] = \"2g\";\n NetworkType[/**\n * 3g\n */ \"network3g\"] = \"3g\";\n NetworkType[/**\n * 4g\n */ \"network4g\"] = \"4g\";\n NetworkType[/**\n * 无网络\n */ \"none\"] = \"none\";\n NetworkType[/**\n * Android下不常见的网络类型\n */ \"unknown\"] = \"unknown\";\n})(NetworkType || (NetworkType = {}));\n/**\n * 获取网络状态。\n *\n * @compat WeCom iOS, Android; WeChat\n *\n * @example\n * ```ts\n * ww.getNetworkType()\n * ```\n */ function getNetworkType(params) {\n if (params === void 0) params = {};\n return passthrough(\"getNetworkType\", params);\n}\n/**\n * 监听网络状态变化。\n *\n * @compat WeCom iOS, Android\n *\n * @example\n * ```ts\n * ww.onNetworkStatusChange(function(event) {\n * console.log(event)\n * })\n * ```\n */ function onNetworkStatusChange(callback) {\n on(\"onNetworkStatusChange\", callback);\n}\n\n/**\n * 初始化 Wi-Fi 模块。\n *\n * @compat WeCom iOS, Android >= 2.4.16\n *\n * @example\n * ```ts\n * ww.startWifi()\n * ```\n */ function startWifi(params) {\n if (params === void 0) params = {};\n return passthrough(\"startWifi\", params);\n}\n/**\n * 关闭 Wi-Fi 模块。\n *\n * @compat WeCom iOS, Android >= 2.4.16\n *\n * @example\n * ```ts\n * ww.stopWifi()\n * ```\n */ function stopWifi(params) {\n if (params === void 0) params = {};\n return passthrough(\"stopWifi\", params);\n}\n/**\n * 连接 Wi-Fi。\n *\n * @compat WeCom iOS, Android >= 2.4.16\n *\n * @example\n * ```ts\n * ww.connectWifi({\n * SSID: 'vincenthome',\n * BSSID: '8c:a6:df:c8:f7:4b',\n * password: 'test1234',\n * })\n * ```\n */ function connectWifi(params) {\n return passthrough(\"connectWifi\", params);\n}\n/**\n * 获取 Wi-Fi 列表。\n *\n * @compat WeCom iOS, Android >= 2.4.16\n *\n * @example\n * ```ts\n * ww.getWifiList()\n * ```\n */ function getWifiList(params) {\n if (params === void 0) params = {};\n return passthrough(\"getWifiList\", params);\n}\n/**\n * 监听 Wi-Fi 列表更新。\n *\n * @compat WeCom iOS, Android >= 2.4.16\n *\n * @example\n * ```ts\n * ww.onGetWifiList(function(event) {\n * console.log(event)\n * })\n * ```\n */ function onGetWifiList(callback) {\n on(\"onGetWifiList\", callback);\n}\n/**\n * 监听 Wi-Fi 连接成功。\n *\n * @compat WeCom iOS, Android >= 2.4.16\n *\n * @example\n * ```ts\n * ww.onWifiConnected(function(event) {\n * console.log(event)\n * })\n * ```\n */ function onWifiConnected(callback) {\n on(\"onWifiConnected\", callback);\n}\n/**\n * 获取已连接中的 Wi-Fi 信息。\n *\n * @compat WeCom iOS, Android >= 2.4.16\n *\n * @example\n * ```ts\n * ww.getConnectedWifi()\n * ```\n */ function getConnectedWifi(params) {\n if (params === void 0) params = {};\n return passthrough(\"getConnectedWifi\", params);\n}\n\n/**\n * 预览文件。\n *\n * @compat WeCom iOS, Android\n *\n * @example\n * ```ts\n * wx.previewFile({\n * url: 'http://open.work.weixin.qq.com/wwopen/downloadfile/wwapi.zip',\n * name: 'Android开发工具包集合',\n * size: 22189\n * })\n * ```\n */ function previewFile(params) {\n return passthrough(\"previewFile\", params);\n}\n\nvar SizeType;\n(function(SizeType) {\n SizeType[/**\n * 原图\n */ \"original\"] = \"original\";\n SizeType[/**\n * 压缩后的图片\n */ \"compressed\"] = \"compressed\";\n})(SizeType || (SizeType = {}));\nvar SourceType;\n(function(SourceType) {\n SourceType[/**\n * 相册\n */ \"album\"] = \"album\";\n SourceType[/**\n * 相机\n */ \"camera\"] = \"camera\";\n})(SourceType || (SourceType = {}));\nvar CameraMode;\n(function(CameraMode) {\n CameraMode[/**\n * 单拍\n */ \"normal\"] = \"normal\";\n CameraMode[/**\n * 连拍\n *\n * @compat WeCom >= 2.3.0\n */ \"batch\"] = \"batch\";\n CameraMode[/**\n * 前置摄像头单拍\n *\n * @compat WeCom >= 3.0.26\n */ \"front\"] = \"front\";\n CameraMode[/**\n * 前置摄像头连拍\n *\n * @compat WeCom >= 3.0.26\n */ \"batch_front\"] = \"batch_front\";\n})(CameraMode || (CameraMode = {}));\n/**\n * 拍照或从手机相册中选图。\n *\n * @example\n * ```ts\n * ww.chooseImage({\n * count: 1,\n * sizeType: ['original', 'compressed'],\n * sourceType: ['album', 'camera'],\n * defaultCameraMode: 'batch',\n * isSaveToAlbum: true\n * })\n * ```\n */ function chooseImage(params) {\n if (params === void 0) params = {};\n return promiseToCallback(params, /*#__PURE__*/ _async_to_generator(function() {\n var res;\n return __generator(this, function(_state) {\n switch(_state.label){\n case 0:\n return [\n 4,\n tryEnsureConfigReady()\n ];\n case 1:\n _state.sent();\n return [\n 4,\n invoke(\"chooseImage\", {\n scene: \"1|2\",\n count: params.count || 9,\n sizeType: params.sizeType || [\n \"original\",\n \"compressed\"\n ],\n sourceType: params.sourceType || [\n \"album\",\n \"camera\"\n ],\n defaultCameraMode: params.defaultCameraMode || \"normal\",\n isSaveToAlbum: isFalsy(params.isSaveToAlbum) ? 0 : 1\n })\n ];\n case 2:\n res = _state.sent();\n if (isAndroid && res.localIds) {\n res.localIds = res.localIds || \"[]\";\n try {\n res.localIds = JSON.parse(res.localIds);\n } catch (error) {\n // noop\n }\n }\n return [\n 2,\n res\n ];\n }\n });\n }));\n}\n/**\n * 预览图片。\n *\n * @example\n * ```ts\n * ww.previewImage({\n * current: imgURL,\n * urls: [imgURL]\n * });\n * ```\n */ function previewImage(params) {\n return passthrough(\"imagePreview\", params);\n}\n/**\n * 上传图片。\n *\n * 上传的图片有效期 3 天,可用[素材管理](#90253)接口下载图片到自己的服务器,此处获得的 serverId 即 media_id。\n *\n * @example\n * ```ts\n * ww.uploadImage({\n * localId: localId,\n * isShowProgressTips: true\n * })\n * ```\n */ function uploadImage(params) {\n return passthrough(\"uploadImage\", params, {\n localId: params.localId,\n isShowProgressTips: isFalsy(params.isShowProgressTips) ? 0 : 1\n });\n}\n/**\n * 下载图片。\n *\n * @example\n * ```ts\n * ww.downloadImage({\n * serverId: serverId,\n * isShowProgressTips: true\n * })\n * ```\n */ function downloadImage(params) {\n return passthrough(\"downloadImage\", params, {\n serverId: params.serverId,\n isShowProgressTips: isFalsy(params.isShowProgressTips) ? 0 : 1\n });\n}\n/**\n * 获取本地图片内容。\n *\n * 仅在 iOS WKWebView 下支持。\n *\n * @compat WeCom iOS >= 2.4.6\n *\n * @example\n * ```ts\n * ww.getLocalImgData({\n * localId: localId\n * })\n * ```\n */ function getLocalImgData(params) {\n return passthrough(\"getLocalImgData\", params);\n}\n\n/**\n * 开始录音。\n *\n * @example\n * ```ts\n * ww.startRecord()\n * ```\n */ function startRecord(params) {\n if (params === void 0) params = {};\n return passthrough(\"startRecord\", params);\n}\n/**\n * 停止录音。\n *\n * @example\n * ```ts\n * ww.stopRecord()\n * ```\n */ function stopRecord(params) {\n if (params === void 0) params = {};\n return passthrough(\"stopRecord\", params);\n}\n/**\n * 监听录音自动停止。\n *\n * @example\n * ```ts\n * ww.onVoiceRecordEnd({\n * localId: localId\n * })\n * ```\n */ function onVoiceRecordEnd(callback) {\n on(\"onVoiceRecordEnd\", callback);\n}\n/**\n * 播放语音。\n *\n * @example\n * ```ts\n * ww.playVoice({\n * localId: localId\n * })\n * ```\n */ function playVoice(params) {\n return passthrough(\"playVoice\", params);\n}\n/**\n * 暂停播放。\n *\n * @example\n * ```ts\n * ww.pauseVoice({\n * localId: localId\n * })\n * ```\n */ function pauseVoice(params) {\n return passthrough(\"pauseVoice\", params);\n}\n/**\n * 停止播放。\n *\n * @example\n * ```ts\n * ww.stopVoice({\n * localId: localId\n * })\n * ```\n */ function stopVoice(params) {\n return passthrough(\"stopVoice\", params);\n}\n/**\n * 监听语音播放完毕。\n *\n * @example\n * ```ts\n * ww.onVoicePlayEnd(function(event) {\n * console.log(event)\n * })\n * ```\n */ function onVoicePlayEnd(callback) {\n on(\"onVoicePlayEnd\", callback);\n}\n/**\n * 上传语音。\n *\n * 上传语音有效期 3 天,可以通过[素材管理](https://developer.work.weixin.qq.com/document/path/91054)接口下载语音到自己的服务器,接口返回的的 `serverId` 即 `media_id`。\n *\n * @example\n * ```ts\n * ww.uploadVoice({\n * localId: localId,\n * isShowProgressTips: true\n * })\n * ```\n */ function uploadVoice(params) {\n return passthrough(\"uploadVoice\", params, {\n localId: params.localId,\n isShowProgressTips: isFalsy(params.isShowProgressTips) ? 0 : 1\n });\n}\n/**\n * 下载语音。\n *\n * @example\n * ```ts\n * ww.downloadVoice({\n * serverId: serverId,\n * isShowProgressTips: true\n * })\n * ```\n */ function downloadVoice(params) {\n return passthrough(\"downloadVoice\", params, {\n serverId: params.serverId,\n isShowProgressTips: isFalsy(params.isShowProgressTips) ? 0 : 1\n });\n}\n/**\n * 语音转文字。\n *\n * @compat WeCom iOS, Android >= 2.7.5\n *\n * @example\n * ```ts\n * ww.translateVoice({\n * localId: localId,\n * isShowProgressTips: true\n * })\n * ```\n */ function translateVoice(params) {\n return passthrough(\"translateVoice\", params, {\n localId: params.localId,\n isShowProgressTips: isFalsy(params.isShowProgressTips) ? 0 : 1\n });\n}\n\nvar LiveType;\n(function(LiveType) {\n LiveType[LiveType[/**\n * 通用直播\n */ \"common\"] = 0] = \"common\";\n LiveType[LiveType[/**\n * 企业培训\n */ \"corp_training\"] = 1] = \"corp_training\";\n LiveType[LiveType[/**\n * 大班课\n */ \"edu_normal_class\"] = 2] = \"edu_normal_class\";\n LiveType[LiveType[/**\n * 小班课\n */ \"edu_small_class\"] = 3] = \"edu_small_class\";\n})(LiveType || (LiveType = {}));\nfunction startLiving(params) {\n if (params === void 0) params = {};\n return passthrough(\"startLiving\", params);\n}\n/**\n * 调起直播间回放页面。\n *\n * @limit\n * - 应用需具有直播使用权限,见[配置可使用直播的应用](#25967/配置可使用直播的应用)\n *\n * @compat WeCom >= 3.1.0\n *\n * @example\n * ```ts\n * ww.replayLiving({\n * livingId: 'LIVINGID'\n * })\n * ```\n */ function replayLiving(params) {\n return passthrough(\"replayLiving\", params);\n}\n/**\n * 调起直播回放下载页面。\n *\n * @limit\n * - 应用需具有直播使用权限,见[配置可使用直播的应用](#25967/配置可使用直播的应用)\n * - 只允许直播的发起人下载直播回放\n *\n * @compat WeCom PC >= 3.1.0\n *\n * @example\n * ```ts\n * ww.downloadLivingReplay({\n * livingId: 'LIVINGID'\n * })\n * ```\n */ function downloadLivingReplay(params) {\n return passthrough(\"downloadLivingReplay\", params);\n}\n\nfunction startMeeting(params) {\n if (params === void 0) params = {};\n return passthrough(\"startMeeting\", params);\n}\n\n/**\n * 选择可分享的在线文档\n *\n * @compat WeCom >= 4.0.12\n */ function wedocSelectDoc(params) {\n if (params === void 0) params = {};\n return passthrough(\"wedocSelectDoc\", params);\n}\n\n/**\n * 选择可上传的目录/空间\n *\n * 选中一个具有可上传权限的目录/空间,返回选中目录/空间对应的 selectedTicket\n *\n * @compat WeCom >= 4.0.12\n */ function wedriveSelectDir(params) {\n if (params === void 0) params = {};\n return passthrough(\"wedriveSelectDir\", params);\n}\n/**\n * 选择可分享的文件\n *\n * 选中一个或多个具有可分享权限的微盘文件或在线文档,返回选中文件的 url\n *\n * @compat WeCom >= 4.0.12\n */ function wedriveSelectFileForShare(params) {\n return passthrough(\"wedriveSelectFileForShare\", params);\n}\n/**\n * 选择可下载的文件\n *\n * 选中一个或多个具有下载权限的文件(只能是微盘文件,不支持在线文档),返回选中文件对应的 selectedTickets 列表\n *\n * @compat WeCom >= 4.0.12\n */ function wedriveSelectFileForDownload(params) {\n return passthrough(\"wedriveSelectFileForDownload\", params);\n}\n\n/**\n * 监听页面返回事件。\n *\n * @param callback 回调函数,返回 false 则表示中断此次返回操作\n *\n * @limit\n * - 当页面左上角没有关闭按钮,不产生该事件\n * - iOS 系统下使用手势返回时,不产生该事件\n *\n * @compat WeCom iOS, Android >= 2.2.0; WeCom PC, Mac >= 2.4.5\n *\n * @example\n * ```ts\n * ww.onHistoryBack(function() {\n * return confirm('确定放弃当前页面的修改?')\n * })\n * ```\n */ function onHistoryBack(callback) {\n on(\"historyBack\", callback);\n}\n/**\n * 隐藏右上角菜单。\n *\n * @example\n * ```ts\n * ww.hideOptionMenu()\n * ```\n */ function hideOptionMenu(params) {\n if (params === void 0) params = {};\n return passthrough(\"hideOptionMenu\", params);\n}\n/**\n * 显示右上角菜单。\n *\n * @example\n * ```ts\n * ww.showOptionMenu()\n * ```\n */ function showOptionMenu(params) {\n if (params === void 0) params = {};\n return passthrough(\"showOptionMenu\", params);\n}\n/**\n * 关闭当前网页窗口。\n *\n * @example\n * ```ts\n * ww.closeWindow()\n * ```\n */ function closeWindow(params) {\n if (params === void 0) params = {};\n return passthrough(\"closeWindow\", params);\n}\n/**\n * 批量隐藏功能按钮。\n *\n * @example\n * ```ts\n * ww.hideMenuItems({\n * menuList: ['menuItem:setFont']\n * })\n * ```\n */ function hideMenuItems(params) {\n return passthrough(\"hideMenuItems\", params);\n}\n/**\n * 批量显示功能按钮。\n *\n * @example\n * ```ts\nww.showMenuItems({\n menuList: ['menuItem:setFont']\n})\n * ```\n */ function showMenuItems(params) {\n return passthrough(\"showMenuItems\", params);\n}\n/**\n * 隐藏所有非基础按钮。\n *\n * @example\n * ```ts\n * ww.hideAllNonBaseMenuItem()\n * ```\n */ function hideAllNonBaseMenuItem(params) {\n if (params === void 0) params = {};\n return passthrough(\"hideAllNonBaseMenuItem\", params);\n}\n/**\n * 显示所有功能按钮。\n *\n * @example\n * ```ts\n * ww.showAllNonBaseMenuItem()\n * ```\n */ function showAllNonBaseMenuItem(params) {\n if (params === void 0) params = {};\n return passthrough(\"showAllNonBaseMenuItem\", params);\n}\n/**\n * 打开系统默认浏览器。\n *\n * @compat WeCom PC >= 2.3.0\n *\n * @example\n * ```ts\n * ww.openDefaultBrowser({\n * url: 'https://work.weixin.qq.com/'\n * })\n * ```\n */ function openDefaultBrowser(params) {\n return passthrough(\"openDefaultBrowser\", params);\n}\n/**\n * 监听用户截屏事件。\n *\n * @compat WeCom iOS, Android >= 2.5.0\n *\n * @example\n * ```ts\n * ww.onUserCaptureScreen(function() {\n * console.log('用户截屏了')\n * })\n * ```\n */ function onUserCaptureScreen(callback) {\n on(\"onUserCaptureScreen\", callback);\n}\n\n/**\n * 获取「转发」按钮点击状态并自定义分享内容。\n *\n * @note\n * - 微信客户端即将废弃该接口\n *\n * @limit\n * - 仅激活成员数超过 200 人且已经认证的企业才可在微信上调用\n *\n * @example\n * ```ts\n * ww.onMenuShareAppMessage({\n * title: '企业微信',\n * desc: '让每个企业都有自己的微信',\n * link: 'https://work.weixin.qq.com/',\n * imgUrl: 'https://res.mail.qq.com/node/ww/wwmng/style/images/index_share_logo$13c64306.png',\n * success() {\n * // 用户确认分享后回调\n * },\n * cancel() {\n * // 用户取消分享后回调\n * }\n * })\n * ```\n */ function onMenuShareAppMessage(params) {\n bindShare(\"menu:share:appmessage\", params, function() {\n return invoke(\"sendAppMessage\", {\n title: params.title || getTitle(),\n desc: params.desc || \"\",\n link: params.link || getHref(),\n img_url: params.imgUrl || \"\",\n type: params.type || \"link\",\n data_url: params.dataUrl || \"\"\n });\n });\n}\n/**\n * 获取「分享到朋友圈」按钮点击状态并自定义分享内容。\n *\n * @note\n * - 微信客户端即将废弃该接口\n *\n * @example\n * ```ts\n * ww.onMenuShareTimeline({\n * title: '企业微信',\n * link: 'https://work.weixin.qq.com/',\n * imgUrl: 'https://res.mail.qq.com/node/ww/wwmng/style/images/index_share_logo$13c64306.png',\n * success() {\n * // 用户确认分享后回调\n * },\n * cancel() {\n * // 用户取消分享后回调\n * }\n * })\n * ```\n */ function onMenuShareTimeline(params) {\n bindShare(\"menu:share:timeline\", params, function() {\n return invoke(\"shareTimeline\", {\n title: params.title || getTitle(),\n desc: params.title || getTitle(),\n img_url: params.imgUrl || \"\",\n link: params.link || getHref(),\n type: params.type || \"link\",\n data_url: params.dataUrl || \"\"\n });\n });\n}\n/**\n * 获取「微信」按钮点击状态并自定义分享内容。\n *\n * @compat WeCom\n *\n * @example\n * ```ts\n * ww.onMenuShareWechat({\n * title: '企业微信',\n * desc: '让每个企业都有自己的微信',\n * link: 'https://work.weixin.qq.com/',\n * imgUrl: 'https://res.mail.qq.com/node/ww/wwmng/style/images/index_share_logo$13c64306.png',\n * success() {\n * // 用户确认分享后回调\n * },\n * cancel() {\n * // 用户取消分享后回调\n * }\n * })\n * ```\n */ function onMenuShareWechat(params) {\n bindShare(\"menu:share:wechat\", params, function() {\n return invoke(\"shareWechat\", {\n title: params.title || getTitle(),\n desc: params.desc || \"\",\n link: params.link || getHref(),\n img_url: params.imgUrl || \"\",\n type: params.type || \"link\",\n data_url: params.dataUrl || \"\"\n });\n });\n}\n/**\n * 获取「分享到QQ」按钮点击状态并自定义分享内容。\n *\n * @note\n * 微信客户端即将废弃该接口\n *\n * @compat WeChat\n */ function onMenuShareQQ(params) {\n bindShare(\"menu:share:qq\", params, function() {\n return invoke(\"shareQQ\", {\n title: params.title || getTitle(),\n desc: params.desc || \"\",\n img_url: params.imgUrl || \"\",\n link: params.link || getHref()\n });\n });\n}\n/**\n * 获取「分享到微博」按钮点击状态并自定义分享内容。\n *\n * @compat WeChat\n */ function onMenuShareWeibo(params) {\n bindShare(\"menu:share:weiboApp\", params, function() {\n return invoke(\"shareWeiboApp\", {\n title: params.title || getTitle(),\n desc: params.desc || \"\",\n img_url: params.imgUrl || \"\",\n link: params.link || getHref()\n });\n });\n}\n/**\n * 获取「分享到QQ空间」按钮点击状态并自定义分享内容。\n *\n * @note\n * 微信客户端即将废弃该接口\n *\n * @compat WeChat\n */ function onMenuShareQZone(params) {\n bindShare(\"menu:share:QZone\", params, function() {\n return invoke(\"shareQZone\", {\n title: params.title || getTitle(),\n desc: params.desc || \"\",\n img_url: params.imgUrl || \"\",\n link: params.link || getHref()\n });\n });\n}\n/**\n * 自定义转发到会话。\n *\n * @compat WeCom >= 2.4.5\n *\n * @example\n * ```ts\n * ww.shareAppMessage({\n * title: '企业微信',\n * desc: '让每个企业都有自己的微信',\n * link: 'https://work.weixin.qq.com/',\n * imgUrl: 'https://res.mail.qq.com/node/ww/wwmng/style/images/index_share_logo$13c64306.png',\n * })\n * ```\n */ function shareAppMessage(params) {\n return passthrough(\"shareAppMessage\", params);\n}\n/**\n * 自定义转发到微信。\n *\n * @compat WeCom >= 2.4.5\n *\n * @example\n * ```ts\n * ww.shareWechatMessage({\n * title: '企业微信',\n * desc: '让每个企业都有自己的微信',\n * link: 'https://work.weixin.qq.com/',\n * imgUrl: 'https://res.mail.qq.com/node/ww/wwmng/style/images/index_share_logo$13c64306.png',\n * })\n * ```\n */ function shareWechatMessage(params) {\n return passthrough(\"shareWechatMessage\", params);\n}\n/**\n * 自定义「分享到朋友圈」及「分享到QQ空间」按钮的分享内容。\n *\n * @compat WeChat\n */ function updateTimelineShareData(params) {\n if (params === void 0) params = {};\n return passthrough(\"updateTimelineShareData\", params);\n}\n/**\n * 自定义「分享给朋友」及「分享到QQ」按钮的分享内容。\n *\n * @compat WeChat\n */ function updateAppMessageShareData(params) {\n if (params === void 0) params = {};\n return passthrough(\"updateAppMessageShareData\", params);\n}\n\n/**\n * 批量添加卡券\n *\n * @see https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html#批量添加卡券接口\n */ function addCard(params) {\n return promiseToCallback(params, /*#__PURE__*/ _async_to_generator(function() {\n var res, _iterator, _step, card;\n return __generator(this, function(_state) {\n switch(_state.label){\n case 0:\n return [\n 4,\n tryEnsureConfigReady()\n ];\n case 1:\n _state.sent();\n return [\n 4,\n invoke(\"batchAddCard\", {\n card_list: params.cardList.map(function(card) {\n return {\n card_id: card.cardId,\n card_ext: card.cardExt\n };\n })\n })\n ];\n case 2:\n res = _state.sent();\n if (!res.card_list) {\n return [\n 2,\n res\n ];\n }\n for(_iterator = _create_for_of_iterator_helper_loose(res.card_list); !(_step = _iterator()).done;){\n card = _step.value;\n card.cardId = card.card_id;\n delete card.card_id;\n card.cardExt = card.card_ext;\n delete card.card_ext;\n card.isSuccess = !!card.is_succ;\n delete card.is_succ;\n }\n res.cardList = res.card_list;\n delete res.card_list;\n return [\n 2,\n res\n ];\n }\n });\n }));\n}\n/**\n * 拉取适用卡券列表并获取用户选择信息\n *\n * @see https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html#拉取适用卡券列表并获取用户选择信息\n */ function chooseCard(params) {\n return promiseToCallback(params, /*#__PURE__*/ _async_to_generator(function() {\n var res;\n return __generator(this, function(_state) {\n switch(_state.label){\n case 0:\n return [\n 4,\n tryEnsureConfigReady()\n ];\n case 1:\n _state.sent();\n return [\n 4,\n invoke(\"chooseCard\", {\n app_id: getConfigCorpId(),\n location_id: params.shopId || \"\",\n sign_type: params.signType || \"SHA1\",\n card_id: params.cardId || \"\",\n card_type: params.cardType || \"\",\n card_sign: params.cardSign,\n time_stamp: \"\" + params.timestamp,\n nonce_str: params.nonceStr\n })\n ];\n case 2:\n res = _state.sent();\n res.cardList = res.choose_card_info;\n delete res.choose_card_info;\n return [\n 2,\n res\n ];\n }\n });\n }));\n}\n/**\n * 查看微信卡包中的卡券\n *\n * @see https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html#查看微信卡包中的卡券接口\n */ function openCard(params) {\n return passthrough(\"batchViewCard\", params, {\n card_list: params.cardList.map(function(card) {\n return {\n card_id: card.cardId,\n code: card.code\n };\n })\n });\n}\n/**\n * 核销并分享卡券\n *\n * @deprecated\n */ function consumeAndShareCard(params) {\n return passthrough(\"consumedShareCard\", params, {\n consumedCardId: params.cardId,\n consumedCode: params.code\n });\n}\n\nvar ProductViewType;\n(function(ProductViewType) {\n ProductViewType[ProductViewType[\"normal\"] = 0] = \"normal\";\n ProductViewType[ProductViewType[\"scan\"] = 1] = \"scan\";\n})(ProductViewType || (ProductViewType = {}));\n/**\n * 跳转微信商品页\n *\n * @see https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html#跳转微信商品页接口\n */ function openProductSpecificView(params) {\n return passthrough(\"openProductViewWithPid\", params, {\n pid: params.productId,\n view_type: params.viewType || 0,\n ext_info: params.extInfo\n });\n}\n\n/**\n * 发起一个微信支付请求\n *\n * @see https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html#发起一个微信支付请求\n */ function chooseWXPay(params) {\n return passthrough(\"getBrandWCPayRequest\", params, normalizeParams(params));\n}\n/**\n * 领取企业红包\n */ function openEnterpriseRedPacket(params) {\n return passthrough(\"getRecevieBizHongBaoRequest\", params, normalizeParams(params));\n}\nfunction normalizeParams(params) {\n return {\n timeStamp: \"\" + params.timestamp,\n nonceStr: params.nonceStr,\n package: params.package,\n paySign: params.paySign,\n signType: params.signType || \"SHA1\"\n };\n}\n\n/**\n * 添加设备。\n *\n * @limit\n * - 发起用户需要有设备添加权限(超级管理员/设备管理员)\n *\n * @compat WeCom iOS, Android >= 4.0.18\n *\n * @example\n * ```ts\n * ww.addDevice({\n * type: 'qrcode',\n * qrcode_url: 'https://open.work.weixin.qq.com/connect?xxx'\n * })\n * ```\n */ function addDevice(params) {\n return passthrough(\"addDevice\", params);\n}\n\n/**\n * 判断当前客户端版本是否支持指定 JS 接口。\n *\n * @example\n * ```ts\n * ww.checkJsApi({\n * jsApiList: ['chooseImage']\n * })\n * ```\n */ function checkJsApi(params) {\n return _checkJsApi.apply(this, arguments);\n}\nfunction _checkJsApi() {\n _checkJsApi = _async_to_generator(function(params) {\n return __generator(this, function(_state) {\n return [\n 2,\n promiseToCallback(params, /*#__PURE__*/ _async_to_generator(function() {\n var res;\n return __generator(this, function(_state) {\n switch(_state.label){\n case 0:\n return [\n 4,\n tryEnsureConfigReady()\n ];\n case 1:\n _state.sent();\n return [\n 4,\n invoke(\"checkJsApi\", {\n jsApiList: mapJsApiListToClient(params.jsApiList)\n })\n ];\n case 2:\n res = _state.sent();\n res.checkResult = normalize(flatten(res.checkResult));\n return [\n 2,\n res\n ];\n }\n });\n }))\n ];\n });\n });\n return _checkJsApi.apply(this, arguments);\n}\nfunction normalize(data) {\n var result = _extends({}, data);\n for(var _iterator = _create_for_of_iterator_helper_loose(Object.keys(data)), _step; !(_step = _iterator()).done;){\n var key = _step.value;\n result[mapJsApiNameToWeb(key)] = data[key];\n }\n return result;\n}\nfunction flatten(data) {\n var result = {};\n for(var _iterator = _create_for_of_iterator_helper_loose(Object.keys(data)), _step; !(_step = _iterator()).done;){\n var key = _step.value;\n if (!isObject(data[key])) {\n result[key] = data[key];\n continue;\n }\n var child = flatten(data[key]);\n for(var _iterator1 = _create_for_of_iterator_helper_loose(Object.keys(child)), _step1; !(_step1 = _iterator1()).done;){\n var childKey = _step1.value;\n result[key + \".\" + childKey] = child[childKey];\n }\n }\n return result;\n}\n\n/**\n * 查看日程闲忙状态。\n *\n * 查看其他成员某段时间内日程中的闲忙状态。\n *\n * @limit\n * - 当前成员必须在应用可见范围内\n * - 应用需具有日程使用权限\n *\n * @compat WeCom >= 4.0.20\n *\n * @example\n * ```ts\n * ww.checkSchedule({\n * start_time: 1667232000,\n * end_time: 1667318400,\n * users: ['jack', 'jason']\n * })\n * ```\n */ function checkSchedule(params) {\n return passthrough(\"checkSchedule\", params);\n}\n\n/**\n * 拉起电子发票列表。\n *\n * @compat WeCom iOS, Android >= 2.1.0\n *\n * @example\n * ```ts\n * ww.chooseInvoice({\n * timestamp: timestamp,\n * nonceStr: nonceStr,\n * signType: signType,\n * cardSign: cardSign\n * })\n * ```\n */ function chooseInvoice(params) {\n return passthrough(\"chooseInvoice\", params);\n}\n\n/**\n * 认领老师班级\n *\n * 跳转到认领班级的界面\n *\n * @compat WeCom >= 3.1.8\n */ function claimClassAdmin(params) {\n if (params === void 0) params = {};\n return passthrough(\"claimClassAdmin\", params);\n}\n\n/**\n * 创建群聊并发送消息\n *\n * 向用户申请给指定范围发送消息。调用接口后,用户可在选人界面对群聊范围进行修改,当创建群聊成功时会返回新建的群聊 ID\n *\n * @limit\n * - 仅第三方应用(非通讯录应用)可调用\n *\n * @compat WeCom >= 3.1.8\n *\n * @example\n * ```ts\n * ww.createChatWithMsg({\n * selectedOpenUserIds: ['zhangsan','lisi'],\n * selectedTickets: ['tick1','token2'],\n * chatName: 'discussName',\n * msg: {\n * msgtype: 'link',\n * link: {\n * title: 'title1',\n * desc: 'desc1',\n * url: 'link1',\n * imgUrl: 'imgurl1'\n * }\n * }\n * })\n * ```\n */ function createChatWithMsg(params) {\n return passthrough(\"createChatWithMsg\", params);\n}\n\n/**\n * 创建企业互联/上下游会话\n *\n * @limit\n * - 企业必须开启互联群功能\n * - 仅局校互联和上下游企业可调用\n * - 当前成员必须在应用的可见范围\n * - 群成员人数不能超过 2000 人\n * - 如果创建的会话有外部联系人,群成员人数不能超过 40 人\n *\n * @compat WeCom >= 3.1.8\n *\n * @example\n * ```ts\n * ww.createCorpGroupChat({\n * groupName: '讨论组',\n * userIds: ['lisi', 'lisi2'],\n * openUserIds: ['wabc3', 'wbcde'],\n * externalUserIds: ['exid1', 'exid2'],\n * corpGroupUserIds: [\n * {\n * corpId: 'ww3333',\n * userId: 'userid123',\n * openUserId: 'wx1111'\n * },\n * {\n * corpId: 'ww4444',\n * userId: 'userid123',\n * openUserId: 'wx1111'\n * }\n * ]\n * })\n * ```\n */ function createCorpGroupChat(params) {\n return passthrough(\"createCorpGroupChat\", params, {\n groupName: params.groupName || \"\",\n userIds: params.userIds,\n openUserIds: params.openUserIds,\n corpGroupUserIds: params.corpGroupUserIds\n });\n}\n\nvar CreateExternalPaymentType;\n(function(CreateExternalPaymentType) {\n CreateExternalPaymentType[CreateExternalPaymentType[/**\n * 在聊天中收款\n */ \"chat\"] = 0] = \"chat\";\n CreateExternalPaymentType[CreateExternalPaymentType[/**\n * 收款码收款\n */ \"qrcode\"] = 1] = \"qrcode\";\n})(CreateExternalPaymentType || (CreateExternalPaymentType = {}));\n/**\n * 发起对外收款\n *\n * @limit\n * - 应用需要具有对外收款权限\n * - 发起的用户必须在应用可见范围并实名\n * - 允许第三方应用、代开发应用和自建应用调用\n *\n * @compat WeCom >= 4.0.12\n *\n * @example\n * ```ts\n * ww.createExternalPayment({\n * paymentType: 0,\n * totalFee: 300,\n * description: '可乐一罐'\n * })\n * ```\n */ function createExternalPayment(params) {\n if (params === void 0) params = {};\n return passthrough(\"createExternalPayment\", params);\n}\n\n/**\n * 发起班级收款\n *\n * 用于老师对学生家长发起付款请求,接口调用成功后会通过家校通知发送付款小程序给家长\n *\n * @limit\n * - 仅支持配置在家长可使用范围内的应用\n * - 企业必须已验证或者已认证\n * - 发起的用户必须在应用可见范围并实名\n * - 发起的用户需在个人微信零钱账户的可用范围内\n *\n * @compat WeCom iOS, Android, PC >= 3.1.10\n *\n * @example\n * ```ts\n * ww.createSchoolPayment({\n * projectName: '1班班费',\n * amount: 100,\n * payers: {\n * students: ['zhagnshan', 'lisi'],\n * departments: [1, 2]\n * }\n * })\n * ```\n */ function createSchoolPayment(params) {\n return passthrough(\"createSchoolPayment\", params);\n}\n\n/**\n * 添加设备。\n *\n * @deprecated 请使用 addDevice 接口\n *\n * @limit\n * - 调用者必须为企业超级管理员\n *\n * @compat WeCom iOS, Android >= 2.5.8\n *\n * @example\n * ```ts\n * ww.discoverDevice({\n * type: 'qrcode',\n * qrcode_url: 'https://open.work.weixin.qq.com/connect?xxx'\n * })\n * ```\n */ function discoverDevice(params) {\n return passthrough(\"discoverDevice\", params);\n}\n\n/**\n * 加入视频会议。\n *\n * @limit\n * - 只能加入同企业硬件创建的视频会议\n *\n * @compat WeCom >= 2.5.0\n *\n * @example\n * ```ts\n * ww.enterHWOpenTalk({\n * code: code,\n * ticket: ticket\n * })\n * ```\n */ function enterHWOpenTalk(params) {\n return passthrough(\"enterHWOpenTalk\", params);\n}\n\n/**\n * 跳转认证界面。\n *\n * @compat WeCom iOS, Android >= 2.8.7\n *\n * @example\n * ```ts\n * ww.enterpriseVerify()\n * ```\n */ function enterpriseVerify(params) {\n if (params === void 0) params = {};\n return passthrough(\"enterpriseVerify\", params);\n}\n\n/**\n * 获取已选择的选项。\n *\n * 当用户打开网页后,应该先调用一次该接口获取用户已经选择的数据作为初始数据。获取到初始数据后,应该恢复已经选择的选项。\n *\n * @limit\n * - 网页应该做好深色模式适配\n * - 接口仅用于审批设置外部选项场景,请勿用作其他场景\n *\n * @compat WeCom >= 4.0.18\n *\n * @example\n * ```ts\n * ww.getApprovalSelectedItems({\n * key: 'key'\n * })\n * ```\n */ function getApprovalSelectedItems(params) {\n return promiseToCallback(params, /*#__PURE__*/ _async_to_generator(function() {\n var res;\n return __generator(this, function(_state) {\n switch(_state.label){\n case 0:\n return [\n 4,\n tryEnsureConfigReady()\n ];\n case 1:\n _state.sent();\n return [\n 4,\n invoke(\"getApprovalSelectedItems\", {\n key: params.key\n })\n ];\n case 2:\n res = _state.sent();\n if (!res.selectedData) {\n return [\n 2,\n res\n ];\n }\n try {\n res.selectedData = JSON.parse(res.selectedData);\n } catch (error) {\n res.selectedData = [];\n }\n return [\n 2,\n res\n ];\n }\n });\n }));\n}\n\nvar EntryType;\n(function(EntryType) {\n EntryType[/**\n * 从联系人详情进入\n */ \"contact_profile\"] = \"contact_profile\";\n EntryType[/**\n * 从单聊会话的工具栏进入\n */ \"single_chat_tools\"] = \"single_chat_tools\";\n EntryType[/**\n * 从群聊会话的工具栏进入\n */ \"group_chat_tools\"] = \"group_chat_tools\";\n EntryType[/**\n * 从会话的聊天附件栏进入\n *\n * @compat WeCom >= 3.1.6\n */ \"chat_attachment\"] = \"chat_attachment\";\n EntryType[/**\n * 从微信客服的工具栏进入\n *\n * @compat WeCom >= 3.1.10\n */ \"single_kf_tools\"] = \"single_kf_tools\";\n EntryType[/**\n * 上下游单聊会话的工具栏\n *\n * @compat WeCom >= 4.0.8\n */ \"chain_single_chat_tools\"] = \"chain_single_chat_tools\";\n EntryType[/**\n * 上下游群聊会话的工具栏\n *\n * @compat WeCom >= 4.0.8\n */ \"chain_group_chat_tools\"] = \"chain_group_chat_tools\";\n EntryType[/**\n * 除以上场景之外进入,例如工作台,聊天会话等\n */ \"normal\"] = \"normal\";\n})(EntryType || (EntryType = {}));\n/**\n * 调用该接口可以判断用户是从哪个入口打开页面,从而决定是否可以调用客户联系相关的接口。\n *\n * @compat WeCom >= 3.0.24\n *\n * @example\n * ```ts\n * ww.getContext()\n * ```\n */ function getContext(params) {\n if (params === void 0) params = {};\n return passthrough(\"getContext\", params);\n}\n\n/**\n * 获取当前上下游互联群的群 ID\n *\n * @compat WeCom >= 4.0.12\n */ function getCurCorpGroupChat(params) {\n if (params === void 0) params = {};\n return passthrough(\"getCurCorpGroupChat\", params);\n}\n\n/**\n * 获取当前上下游联系人用户 ID\n *\n * @compat WeCom >= 4.0.8\n */ function getCurCorpGroupContact(params) {\n return passthrough(\"getCurCorpGroupContact\", params);\n}\n\n/**\n * 获取当前客户群的群 ID。\n *\n * @limit\n * - 不同的入口对应用及用户有相应的限制\n * | getContext 接口返回的 entry 值 | 自建应用 | 第三方应用 | 用户 | 支持的最低版本 |\n * | --- | --- | --- | --- | --- |\n * | group_chat_tools | 需有客户联系功能权限 | 需有“企业客户权限->客户基础信息”权限 | 配置了客户联系功能 | 2.8.17 |\n * | group_chat_tools | 所有 | 需有「家校沟通」使用权限 | 所有 | 3.0.36 |\n * | group_chat_tools | 所有 | 需有「家校沟通」使用权限 | 所有 | 4.0.8 |\n *\n * @compat WeCom >= 2.8.17\n *\n * @example\n * ```ts\n * ww.getCurExternalChat()\n * ```\n */ function getCurExternalChat(params) {\n if (params === void 0) params = {};\n return passthrough(\"getCurExternalChat\", params);\n}\n\n/**\n * 获取当前外部联系人 userId。\n *\n * @limit\n * - 不同的入口对应用及用户有相应的限制\n * | getContext 接口返回的 entry 值 | 自建应用 | 第三方应用 | 用户 | 支持的最低版本 |\n * | --- | --- | --- | --- | --- |\n * | contact_profile | 需有客户联系功能权限 | 需有“企业客户权限->客户基础信息”权限 | 配置了客户联系功能 | 2.5.8 |\n * | single_chat_tools | 需有客户联系功能权限 | 需有“企业客户权限->客户基础信息”权限 | 配置了客户联系功能 | 2.8.10 |\n *\n * @compat WeCom >= 2.5.8\n *\n * @example\n * ```ts\n * ww.getCurExternalContact()\n * ```\n */ function getCurExternalContact(params) {\n if (params === void 0) params = {};\n return passthrough(\"getCurExternalContact\", params);\n}\n\n/**\n * 获取私密消息信息\n *\n * @compat WeCom >= 3.1.8\n *\n * @example\n * ```ts\n * ww.getShareInfo({\n * shareTicket: 'xxx'\n * })\n * ```\n */ function getShareInfo(params) {\n return passthrough(\"getShareInfo\", params);\n}\n\n/**\n * 隐藏聊天附件栏的发送按钮\n *\n * 隐藏从聊天附件栏打开页面时固定显示的发送按钮,开发者可以通过[分享消息到当前会话](#sendChatMessage)接口灵活适配对页面或页面中具体内容的转发\n *\n * @limit\n * - 需要从附件栏进入才允许调用\n *\n * @compat WeCom >= 3.1.6\n */ function hideChatAttachmentMenu(params) {\n return passthrough(\"hideChatAttachmentMenu\", params);\n}\n\n/**\n * 跳转到小程序。\n *\n * @note\n * - 打开小程序时如果需要关闭页面,需同步调用 closeWindow,不推荐用 setTimeout 延迟关闭\n *\n * @limit\n * - 跳转的小程序必须属于页面所属的企业\n * - 跳转的小程序必须已关联到工作台\n *\n * @compat WeCom >= 3.0.36\n *\n * @example\n * ```ts\n * ww.launchMiniprogram({\n * appid: 'wx062f7a5507909000',\n * path: 'pages/home/index'\n * })\n * ```\n */ function launchMiniprogram(params) {\n return passthrough(\"launchMiniprogram\", params, {\n appid: params.appid,\n path: addHTMLToPath(params.path),\n envVersion: params.envVersion\n });\n}\nfunction addHTMLToPath(url) {\n if (!url || !isString(url)) {\n return;\n }\n var _url_split = url.split(\"?\"), path = _url_split[0], query = _url_split.slice(1);\n if (!query.length) {\n return \"\" + path + \".html\";\n }\n return path + \".html?\" + query.join(\"?\");\n}\n\n/**\n * 在企业微信内快速跳转到添加客户的界面。\n *\n * @limit\n * - 当前成员必须配置了客户联系功能\n * - 第三方应用须配置客户联系功能权限\n *\n * @compat WeCom iOS, Android >= 3.0.36\n *\n * @example\n * ```ts\n * ww.navigateToAddCustomer()\n * ```\n */ function navigateToAddCustomer(params) {\n if (params === void 0) params = {};\n return passthrough(\"navigateToAddCustomer\", params);\n}\n\n/**\n * 进入微信客服消息界面\n *\n * @limit\n * - 当前企业须已开启「微信客服」应用\n * - 当前成员须是指定客服账号的坐席\n *\n * @compat WeCom iOS, Android, PC >= 3.1.12\n *\n * @example\n * ```ts\n * ww.navigateToKfChat({\n * openKfId: 'wkAJ2GCAAAZSfhHCt7IFSvLKtMPxyAAA',\n * externalUserId: 'wmAJ2GCAAAZSfhHCt7IFSvLKtMPxyBBB'\n * })\n * ```\n */ function navigateToKfChat(params) {\n return passthrough(\"navigateToKfChat\", params);\n}\n\n/**\n * 共享收货地址\n *\n * @see https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html#共享收货地址接口\n */ function openAddress(params) {\n if (params === void 0) params = {};\n return promiseToCallback(params, /*#__PURE__*/ _async_to_generator(function() {\n var res;\n return __generator(this, function(_state) {\n switch(_state.label){\n case 0:\n return [\n 4,\n tryEnsureConfigReady()\n ];\n case 1:\n _state.sent();\n return [\n 4,\n invoke(\"editAddress\")\n ];\n case 2:\n res = _state.sent();\n res.postalCode = res.addressPostalCode;\n delete res.addressPostalCode;\n res.provinceName = res.proviceFirstStageName;\n delete res.proviceFirstStageName;\n res.cityName = res.addressCitySecondStageName;\n delete res.addressCitySecondStageName;\n res.countryName = res.addressCountiesThirdStageName;\n delete res.addressCountiesThirdStageName;\n res.detailInfo = res.addressDetailInfo;\n delete res.addressDetailInfo;\n return [\n 2,\n res\n ];\n }\n });\n }));\n}\n\n/**\n * 打开应用评价页面\n *\n * 第三方应用可以使用该接口提供按钮,让用户快速打开应用评价页面。\n *\n * @compat WeCom iOS, Android, PC >= 4.0.2\n *\n * @limit\n * - 仅第三方应用可调用\n * - 当前用户可以进行应用评价\n * - 对成员授权的应用,当前用户需要在应用可见范围内\n * - 对管理员授权的应用,当前用户需要在应用可见范围内或具有应用管理权限\n */ function openAppComment(params) {\n if (params === void 0) params = {};\n return passthrough(\"openAppComment\", params);\n}\n\n/**\n * 获取设备数据授权。\n *\n * 唤起设备选择列表,企业管理员选择设备后,应用可以通过云端接口获取到设备上报的数据。\n *\n * @limit\n * - 应用必须勾选了设备信息接口权限\n * - 仅第三方应用使用\n *\n * @compat WeCom >= 4.0.12\n *\n * @example\n * ```ts\n * ww.openAppDeviceDataAuth()\n * ```\n */ function openAppDeviceDataAuth(params) {\n if (params === void 0) params = {};\n return passthrough(\"openAppDeviceDataAuth\", params);\n}\n\n/**\n * 打开应用管理页面\n *\n * 应用可以使用该接口提供按钮,让企业管理员快速打开应用的管理页面。\n *\n * @limit\n * - 当前用户必须具有应用管理权限\n *\n * @compat WeCom >= 4.0.2\n */ function openAppManage(params) {\n if (params === void 0) params = {};\n return passthrough(\"openAppManage\", params);\n}\n\nvar EnvVersion;\n(function(EnvVersion) {\n EnvVersion[\"release\"] = \"release\";\n EnvVersion[\"trial\"] = \"trial\";\n EnvVersion[\"develop\"] = \"develop\";\n})(EnvVersion || (EnvVersion = {}));\n/**\n * 商户小程序跳转微信支付分小程序\n *\n * @see https://pay.weixin.qq.com/wiki/doc/apiv3/payscore.php?chapter=29_3&index=3\n */ function openBusinessView(params) {\n return promiseToCallback(params, /*#__PURE__*/ _async_to_generator(function() {\n var res;\n return __generator(this, function(_state) {\n switch(_state.label){\n case 0:\n return [\n 4,\n tryEnsureConfigReady()\n ];\n case 1:\n _state.sent();\n return [\n 4,\n invoke(\"openBusinessView\", {\n businessType: params.businessType,\n queryString: params.queryString || \"\",\n envVersion: params.envVersion\n })\n ];\n case 2:\n res = _state.sent();\n if (!isAndroid || !res.extraData) {\n return [\n 2,\n res\n ];\n }\n try {\n res.extraData = JSON.parse(res.extraData);\n } catch (error) {\n res.extraData = {};\n }\n return [\n 2,\n res\n ];\n }\n });\n }));\n}\n\n/**\n * 查看设备。\n *\n * @limit\n * - 调用者必须拥有指定 deviceSn 的管理权限\n *\n * @note\n * - 若开发者需要在 web 端引导跳转设备管理,可以构造链接跳转:\n * `https://work.weixin.qq.com/wework_admin/frame#hardware/device?sn=DEVICESN`\n *\n * @compat WeCom iOS, Android >= 2.8.2\n *\n * @example\n * ```ts\n * ww.openDeviceProfile({\n * deviceSn: 'QYWX001'\n * })\n * ```\n */ function openDeviceProfile(params) {\n return passthrough(\"openDeviceProfile\", params);\n}\n\n/**\n * 打开会话。\n *\n * @limit\n * - 内部群最多 2000 人,外部群最多 500 人\n * - 若创建的会话包含微信联系人,群成员人数不能超过 40 人\n *\n * @compat WeCom >= 2.0.0\n *\n * @example\n * ```ts\n * ww.openEnterpriseChat({\n * groupName: '讨论组',\n * userIds: [\n * 'zhangsan',\n * 'lisi'\n * ],\n * externalUserIds: [\n * 'wmEAlECwAAHrbWYDOK5u3Bf13xlYDAAA',\n * 'wmEAlECwAAHibWYDOK5u3Af13xlYDAAA'\n * ]\n * })\n * ```\n */ function openEnterpriseChat(params) {\n if (params === void 0) params = {};\n return passthrough(\"openEnterpriseChat\", params, {\n chatId: params.chatId || \"\",\n chatname: params.groupName || \"\",\n groupName: params.groupName || \"\",\n useridlist: joinList(params.userIds),\n userIds: joinList(params.userIds),\n openIds: joinList(params.openIds),\n externalUserIds: joinList(params.externalUserIds)\n });\n}\n\n/**\n * 打开已有群聊并发送消息\n *\n * 打开一个已有的群聊并可选发送一条链接消息。支持打开企业内部群、外部群、互联群\n *\n * @compat WeCom >= 3.1.8\n *\n * @example\n * ```ts\n * ww.openExistedChatWithMsg({\n * chatId: 'chatId123',\n * msg: {\n * msgtype: 'link',\n * link: {\n * title: 'title1',\n * desc: 'desc1',\n * url: 'link1',\n * imgUrl: 'imgurl1'\n * }\n * }\n * })\n * ```\n */ function openExistedChatWithMsg(params) {\n return passthrough(\"openExistedChatWithMsg\", params);\n}\n\n/**\n * 进入应用客服会话\n *\n * 第三方应用可以使用该接口提供按钮,让用户快速打开应用客服的会话。\n *\n * @compat WeCom iOS, Android >= 3.1.18\n *\n * @limit\n * - 仅第三方应用可调用\n * - 第三方应用需要提前配置客服\n * - 当前用户需要有添加外部联系人权限\n */ function openThirdAppServiceChat(params) {\n if (params === void 0) params = {};\n return passthrough(\"openThirdAppServiceChat\", params);\n}\n\nvar OpenUserProfileType;\n(function(OpenUserProfileType) {\n OpenUserProfileType[OpenUserProfileType[/**\n * 企业成员\n */ \"internal\"] = 1] = \"internal\";\n OpenUserProfileType[OpenUserProfileType[/**\n * 外部联系人\n */ \"external\"] = 2] = \"external\";\n})(OpenUserProfileType || (OpenUserProfileType = {}));\n/**\n * 唤起成员或外部联系人的个人信息页面。\n *\n * @compat WeCom >= 2.4.20\n *\n * @example\n * ```ts\n * ww.openUserProfile({\n * type: 1,\n * userid: 'zhangsan'\n * })\n * ```\n */ function openUserProfile(params) {\n return passthrough(\"openUserProfile\", params);\n}\n\nvar PrintFileIdType;\n(function(PrintFileIdType) {\n PrintFileIdType[PrintFileIdType[/**\n * mediaid\n */ \"mediaid\"] = 1] = \"mediaid\";\n PrintFileIdType[PrintFileIdType[/**\n * url\n */ \"url\"] = 2] = \"url\";\n PrintFileIdType[PrintFileIdType[/**\n * localId\n */ \"localId\"] = 4] = \"localId\";\n})(PrintFileIdType || (PrintFileIdType = {}));\n/**\n * 发起文件打印。\n *\n * @limit\n * - 应用需要已获取设备信息 - 打印扫描设备 - 发起文件打印权限授权\n * - 当前触发调用人员身份需要在应用的可见范围内\n * - 当前企业有安装企业微信打印设备\n * - 仅第三方应用使用\n *\n * @compat WeCom >= 4.0.12\n *\n * @example\n * ```ts\n * ww.printFile({\n * fileId: 'fileId',\n * fileIdType: 1,\n * fileName: 'fileName.jpg'\n * })\n * ```\n */ function printFile(params) {\n return passthrough(\"printFile\", params);\n}\n\nvar InTalkType;\n(function(InTalkType) {\n InTalkType[/**\n * 当前不在任何通话中\n */ \"None\"] = \"None\";\n InTalkType[/**\n * 视频会议中\n */ \"HWOpenTalk\"] = \"HWOpenTalk\";\n InTalkType[/**\n * voip通话中\n */ \"VoIP\"] = \"VoIP\";\n InTalkType[/**\n * 系统通话中\n */ \"SystemCall\"] = \"SystemCall\";\n})(InTalkType || (InTalkType = {}));\n/**\n * 查询当前是否在视频会议。\n *\n * @compat WeCom >= 2.5.0\n *\n * @example\n * ```ts\n * ww.queryCurrHWOpenTalk()\n * ```\n */ function queryCurrHWOpenTalk(params) {\n if (params === void 0) params = {};\n return passthrough(\"queryCurrHWOpenTalk\", params);\n}\n\n/**\n * 发起退款\n *\n * @limit\n * - 应用需要具有对外收款权限\n * - 发起的用户必须在应用可见范围并实名\n * - 只允许退款由应用本身发起的收款\n * - 允许第三方应用、代开发应用和自建应用调用\n *\n * @compat WeCom >= 4.0.12\n *\n * @example\n * ```ts\n * ww.refundExternalPayment({\n * paymentId: 'xxxx',\n * outTradeNo: 'yyyy',\n * refundFee: 100,\n * refundComment: '7天无理由退货'\n * })\n * ```\n */ function refundExternalPayment(params) {\n return passthrough(\"refundExternalPayment\", params);\n}\n\n/**\n * 保存选择的选项。\n *\n * 用户在网页中进行选择时,调用该接口保存用户的选择。\n *\n * @note\n * - 接口仅用于审批设置外部选项场景,请勿用作其他场景\n * - 网页应该做好深色模式适配\n *\n * @compat WeCom >= 4.0.18\n *\n * @example\n * ```ts\n * ww.saveApprovalSelectedItems({\n * key: 'key',\n * selectedData: [\n * {\n * key: 'item-1',\n * value: '选项1'\n * },\n * {\n * key: 'item-2',\n * value: '选项2'\n * }\n * ]\n * })\n * ```\n */ function saveApprovalSelectedItems(params) {\n return passthrough(\"saveApprovalSelectedItems\", params, {\n key: params.key,\n selectedData: typeof params.selectedData === \"string\" ? params.selectedData : JSON.stringify(params.selectedData)\n });\n}\n\nvar ScanQRCodeType;\n(function(ScanQRCodeType) {\n ScanQRCodeType[/**\n * 扫描二维码\n */ \"qrCode\"] = \"qrCode\";\n ScanQRCodeType[/**\n * 扫描条形码\n */ \"barCode\"] = \"barCode\";\n})(ScanQRCodeType || (ScanQRCodeType = {}));\n/**\n * 调起企业微信扫一扫。\n *\n * @example\n * ```ts\n * ww.scanQRCode({\n * needResult: true,\n * scanType: ['qrCode']\n * })\n * ```\n */ function scanQRCode(params) {\n if (params === void 0) params = {};\n return promiseToCallback(params, /*#__PURE__*/ _async_to_generator(function() {\n var _data_scan_code, res, resultStr, data;\n return __generator(this, function(_state) {\n switch(_state.label){\n case 0:\n return [\n 4,\n tryEnsureConfigReady()\n ];\n case 1:\n _state.sent();\n return [\n 4,\n invoke(\"scanQRCode\", {\n needResult: params.needResult ? 1 : 0,\n scanType: params.scanType || [\n \"qrCode\",\n \"barCode\"\n ]\n })\n ];\n case 2:\n res = _state.sent();\n if (!isIOS) {\n return [\n 2,\n res\n ];\n }\n resultStr = res.resultStr;\n if (!resultStr) {\n return [\n 2,\n res\n ];\n }\n try {\n data = JSON.parse(resultStr);\n } catch (error) {\n // noop\n }\n res.resultStr = data == null ? void 0 : (_data_scan_code = data.scan_code) == null ? void 0 : _data_scan_code.scan_result;\n return [\n 2,\n res\n ];\n }\n });\n }));\n}\n\nvar InputCorpGroupContactMode;\n(function(InputCorpGroupContactMode) {\n InputCorpGroupContactMode[/**\n * 单选\n */ \"single\"] = \"single\";\n InputCorpGroupContactMode[/**\n * 多选\n */ \"multi\"] = \"multi\";\n})(InputCorpGroupContactMode || (InputCorpGroupContactMode = {}));\nvar InputCorpGroupContactType;\n(function(InputCorpGroupContactType) {\n InputCorpGroupContactType[\"department\"] = \"department\";\n InputCorpGroupContactType[\"user\"] = \"user\";\n})(InputCorpGroupContactType || (InputCorpGroupContactType = {}));\n/**\n * 企业互联选人\n *\n * @limit\n * - 该接口仅可选择应用可见范围内的成员和部门\n *\n * @compat WeCom iOS, Android, PC >= 3.1.6\n *\n * @example\n * ```ts\n * ww.selectCorpGroupContact({\n * fromDepartmentId: -1,\n * mode: 'single',\n * type: ['department', 'user'],\n * selectedDepartmentIds: ['2','3'],\n * selectedUserIds: ['lisi','lisi2'],\n * selectedOpenUserIds: ['wabc3','wbcde'],\n * selectedChainDepartmentIds: [\n * {\n * corpId: 'ww3333',\n * departmentId: '2'\n * },\n * {\n * corpId: 'ww4444',\n * departmentId: '3'\n * }\n * ],\n * selectedChainUserIds: [\n * {\n * corpId: 'ww3333',\n * userId: 'userid123',\n * openUserId: 'wx1111'\n * },\n * {\n * corpId: 'ww4444',\n * userId: 'userid123',\n * openUserId: 'wx1111'\n * }\n * ],\n * selectedCorpGroupDepartmentIds: [\n * {\n * corpId: 'ww3333',\n * departmentId: '2'\n * },\n * {\n * corpId: 'ww4444',\n * departmentId: '3'\n * }\n * ],\n * selectedCorpGroupUserIds: [\n * {\n * corpId: 'ww3333',\n * userId: 'userid123',\n * openUserId: 'wx1111'\n * },\n * {\n * corpId: 'ww4444',\n * userId: 'userid123',\n * openUserId: 'wx1111'\n * }\n * ]\n * })\n * ```\n */ function selectCorpGroupContact(params) {\n return promiseToCallback(params, /*#__PURE__*/ _async_to_generator(function() {\n var res;\n return __generator(this, function(_state) {\n switch(_state.label){\n case 0:\n return [\n 4,\n tryEnsureConfigReady()\n ];\n case 1:\n _state.sent();\n return [\n 4,\n invoke(\"selectCorpGroupContact\", params)\n ];\n case 2:\n res = _state.sent();\n if (!isString(res.result)) {\n return [\n 2,\n res\n ];\n }\n try {\n res.result = JSON.parse(res.result);\n } catch (error) {\n // noop\n }\n return [\n 2,\n res\n ];\n }\n });\n }));\n}\n\nvar SelectEnterpriseContactMode;\n(function(SelectEnterpriseContactMode) {\n SelectEnterpriseContactMode[/**\n * 单选\n */ \"single\"] = \"single\";\n SelectEnterpriseContactMode[/**\n * 多选\n */ \"multi\"] = \"multi\";\n})(SelectEnterpriseContactMode || (SelectEnterpriseContactMode = {}));\nvar SelectEnterpriseContactType;\n(function(SelectEnterpriseContactType) {\n SelectEnterpriseContactType[\"department\"] = \"department\";\n SelectEnterpriseContactType[\"user\"] = \"user\";\n})(SelectEnterpriseContactType || (SelectEnterpriseContactType = {}));\n/**\n * 选择通讯录成员。\n *\n * @compat WeCom >= 1.3.11; WeChat iOS, Android >= 6.5.10\n *\n * @example\n * ```ts\n * ww.selectEnterpriseContact({\n * fromDepartmentId: -1,\n * mode: 'multi',\n * type: ['department', 'user'],\n * selectedDepartmentIds: ['2', '3'],\n * selectedUserIds: ['lisi', 'lisi2']\n * })\n * ```\n */ function selectEnterpriseContact(params) {\n return promiseToCallback(params, /*#__PURE__*/ _async_to_generator(function() {\n var res;\n return __generator(this, function(_state) {\n switch(_state.label){\n case 0:\n return [\n 4,\n tryEnsureConfigReady()\n ];\n case 1:\n _state.sent();\n return [\n 4,\n invoke(\"selectEnterpriseContact\", params)\n ];\n case 2:\n res = _state.sent();\n if (!isString(res.result)) {\n return [\n 2,\n res\n ];\n }\n try {\n res.result = JSON.parse(res.result);\n } catch (error) {\n // noop\n }\n return [\n 2,\n res\n ];\n }\n });\n }));\n}\n\nvar SelectExternalContactType;\n(function(SelectExternalContactType) {\n SelectExternalContactType[SelectExternalContactType[/**\n * 展示全部外部联系人列表\n */ \"all\"] = 0] = \"all\";\n SelectExternalContactType[SelectExternalContactType[/**\n * 仅展示未曾选择过的外部联系人\n */ \"unselected\"] = 1] = \"unselected\";\n})(SelectExternalContactType || (SelectExternalContactType = {}));\n/**\n * 唤起该成员的外部联系人列表,并返回员工选择的外部联系人的 userId。\n *\n * @limit\n * - 当前成员必须配置了客户联系功能\n * - 第三方应用须配置客户联系功能权限\n *\n * @compat WeCom >= 2.4.20\n *\n * @example\n * ```ts\n * ww.selectExternalContact({\n * filterType: 0\n * })\n * ```\n */ function selectExternalContact(params) {\n if (params === void 0) params = {};\n return passthrough(\"selectExternalContact\", params);\n}\n\nvar SelectPrivilegedContactMode;\n(function(SelectPrivilegedContactMode) {\n SelectPrivilegedContactMode[/**\n * 单选\n */ \"single\"] = \"single\";\n SelectPrivilegedContactMode[/**\n * 多选\n */ \"multi\"] = \"multi\";\n})(SelectPrivilegedContactMode || (SelectPrivilegedContactMode = {}));\n/**\n * 返回 ticket 的选人接口\n *\n * 用于第三方应用唤起选择企业通讯录成员,用户选择的范围区分成两部分回传给第三方应用:\n *\n * 1. 过滤应用可见范围后的 openUserId 列表\n * 2. 用户选择完整列表的 ticket,ticket 后续可用于调用 createChatWithMsg 接口或者[发送模板消息](#94515)\n *\n * @limit\n * - 仅第三方应用(非通讯录应用)可调用\n *\n * @compat WeCom >= 3.1.8\n *\n * @example\n * ```ts\n * ww.selectPrivilegedContact({\n * fromDepartmentId: -1,\n * mode: 'multi',\n * selectedContextContact: 1\n * selectedOpenUserIds: ['xxx', 'yyy'],\n * selectedTickets: ['ticket1', 'ticket2']\n * })\n * ```\n */ function selectPrivilegedContact(params) {\n return passthrough(\"selectPrivilegedContact\", params);\n}\n\n/**\n * 从聊天工具栏或附件栏打开的页面中向当前会话发送消息。\n *\n * @limit\n * - 仅从特定入口进入页面才可调用\n * - 不同的入口对应用及用户有相应的限制\n * | getContext 接口返回的 entry 值 | 自建应用 | 第三方应用 | 用户 | 支持的最低版本 |\n * | --- | --- | --- | --- | --- |\n * | single_chat_tools | 需有客户联系功能权限 | 需有“企业客户权限->客户基础信息”权限 | 配置了客户联系功能 | 2.8.10 |\n * | group_chat_tools | 需有客户联系功能权限 | 需有“企业客户权限->客户基础信息”权限 | 配置了客户联系功能 | 2.8.10 |\n * | group_chat_tools | 所有 | 需有「家校沟通」使用权限 | 所有 | 3.0.36 |\n * | group_chat_tools | 所有 | 需有「家校沟通」使用权限 | 所有 | 4.0.8 |\n * | chat_attachment | 所有 | 所有 | 所有 | 3.1.6(mac端暂不支持) |\n *\n * @compat WeCom >= 2.8.10\n *\n * @example\n * ```ts\n * ww.sendChatMessage({\n * msgtype: 'text',\n * text: {\n * content: '你好'\n * }\n * })\n * ```\n */ function sendChatMessage(params) {\n return passthrough(\"sendChatMessage\", params);\n}\n\n/**\n * 设置私密消息\n *\n * @compat WeCom >= 3.1.8\n *\n * @example\n * ```ts\n * ww.setShareAttr({\n * withShareTicket: true,\n * state: 'STATE'\n * })\n * ```\n */ function setShareAttr(params) {\n if (params === void 0) params = {};\n return passthrough(\"setShareAttr\", params);\n}\n\n/**\n * 具有客户联系权限的企业成员,可通过该接口将文本内容和附件传递到客户群群发、发送到客户群。\n *\n * @limit\n * - 为防止滥用,同一个成员每日向一个客户最多可群发一条消息,每次群发最多可选 200 个最近活跃的客户群\n * - 当前成员必须配置了客户联系功能\n * - 第三方应用须配置客户联系功能权限\n *\n * @compat WeCom >= 2.8.7\n *\n * @example\n * ```ts\n * ww.shareToExternalChat({\n * text: {\n * content: '企业微信'\n * },\n * attachments: [\n * {\n * msgtype: 'image',\n * image: {\n * imgUrl: 'https://res.mail.qq.com/node/ww/wwmng/style/images/index_share_logo$13c64306.png'\n * }\n * }\n * ]\n * })\n * ```\n */ function shareToExternalChat(params) {\n return passthrough(\"shareToExternalChat\", params);\n}\n\n/**\n * 具有客户联系权限的企业成员,可通过该接口将文本内容和附件传递到群发助手、发送给客户。\n *\n * @limit\n * - 为防止滥用,同一个成员每日向一个客户最多可群发一条消息,每次群发最多可选 200 个客户\n * - 当前成员必须配置了客户联系功能\n * - 第三方应用须配置客户联系功能权限\n *\n * @compat WeCom >= 2.8.7\n *\n * @example\n * ```ts\n * ww.shareToExternalContact({\n * text: {\n * content: '企业微信'\n * },\n * attachments: [\n * {\n * msgtype: 'image',\n * image: {\n * imgUrl: 'https://res.mail.qq.com/node/ww/wwmng/style/images/index_share_logo$13c64306.png'\n * }\n * }\n * ]\n * })\n * ```\n */ function shareToExternalContact(params) {\n return passthrough(\"shareToExternalContact\", params);\n}\n\n/**\n * 发表内容到客户朋友圈\n *\n * @limit\n * - 当前成员必须配置了客户联系功能\n * - 第三方应用须配置客户联系功能权限\n * - 当前成员必须在客户朋友圈使用范围\n * - 当前成员必须具备外部沟通管理成员使用权限\n *\n * @compat WeCom iOS, Android >= 3.1.12\n *\n * @example\n * ```ts\n * ww.shareToExternalMoments({\n * text: {\n * content: '企业微信'\n * },\n * attachments: [\n * {\n * msgtype: 'image',\n * image: {\n * imgUrl: 'https://res.mail.qq.com/node/ww/wwmng/style/images/index_share_logo$13c64306.png'\n * }\n * }\n * ]\n * })\n * ```\n */ function shareToExternalMoments(params) {\n return passthrough(\"shareToExternalMoments\", params);\n}\n\n/**\n * 发起无线投屏。\n *\n * @compat WeCom\n *\n * @example\n * ```ts\n * ww.startWecast()\n * ```\n */ function startWecast(params) {\n if (params === void 0) params = {};\n return passthrough(\"startWecast\", params);\n}\n\nvar OAType;\n(function(OAType) {\n OAType[/**\n * 发起审批\n */ \"create_approval\"] = \"10001\";\n OAType[/**\n * 查看审批详情\n */ \"view_approval\"] = \"10002\";\n})(OAType || (OAType = {}));\nvar OaExtDataType;\n(function(OaExtDataType) {\n OaExtDataType[/**\n * 链接\n */ \"link\"] = \"link\";\n OaExtDataType[/**\n * 文本\n */ \"text\"] = \"text\";\n})(OaExtDataType || (OaExtDataType = {}));\n/**\n * 应用发起审批。\n *\n * 在应用页面中发起审批。之后审批流程的每次状态变化都会通知开发者,开发者可按需进行拓展开发。具体参见[审批流程引擎](#93798)。\n *\n * @limit\n * - 应用需具有审批权限\n *\n * @compat WeCom >= 2.5.0\n *\n * @example\n * ```ts\n * ww.thirdPartyOpenPage({\n * oaType: '10001',\n * templateId: '46af67a118a6ebf000002',\n * thirdNo: 'thirdNo',\n * extData: {\n * fieldList: [\n * {\n * type: 'text',\n * title: '采购类型',\n * value: '市场活动'\n * },\n * {\n * type: 'link',\n * title: '订单链接',\n * value: 'https://work.weixin.qq.com'\n * }\n * ]\n * }\n * })\n * ```\n */ function thirdPartyOpenPage(params) {\n return passthrough(\"thirdPartyOpenPage\", params);\n}\n\n/**\n * 变更企业互联群成员\n *\n * @limit\n * - 当前成员必须在应用的可见范围\n * - 仅支持往群里添加企业内部成员/企业互联成员\n * - 仅局校互联企业可调用\n *\n * @compat WeCom >= 3.1.8\n *\n * @example\n * ```ts\n * ww.updateCorpGroupChat({\n * chatId: 'CHATID',\n * userIdsToAdd: ['lisi', 'lisi2'],\n * openUserIdsToAdd: ['wabc3', 'wbcde'],\n * corpGroupUserIdsToAdd: [\n * {\n * corpId: 'ww3333',\n * userId: 'userid123',\n * openUserId: 'wx1111'\n * },\n * {\n * corpId: 'ww4444',\n * userId: 'userid123',\n * openUserId: 'wx1111'\n * }\n * ]\n * })\n * ```\n */ function updateCorpGroupChat(params) {\n return passthrough(\"updateCorpGroupChat\", params);\n}\n\n/**\n * 变更群成员。\n *\n * @limit\n * - 目前仅支持添加企业内成员\n * - 仅支持客户群调用\n *\n * @compat WeCom iOS, Android, PC >= 3.0.36\n *\n * @example\n * ```ts\n * ww.updateEnterpriseChat({\n * chatId: 'CHATID',\n * userIdsToAdd: [\n * 'zhangsan',\n * 'lisi'\n * ]\n * })\n * ```\n */ function updateEnterpriseChat(params) {\n return passthrough(\"updateEnterpriseChat\", params, {\n chatId: params.chatId,\n userIdsToAdd: joinList(params.userIdsToAdd)\n });\n}\n\n/**\n * 设置朋友圈封面与签名\n *\n * @compat WeCom iOS, Android >= 3.1.12\n *\n * @example\n * ```ts\n * ww.updateMomentSetting({\n * signature: '个性签名',\n * imgUrl: 'https://work.weixin.qq.com/'\n * })\n * ```\n */ function updateMomentsSetting(params) {\n return passthrough(\"updateMomentsSetting\", params);\n}\n\n/**\n * **注意:页面上需要提前引入 `jwxwork-1.0.0.js`:**\n *\n * ```html\n * \n * ```\n *\n * 初始化[通讯录展示组件](#91958)。\n *\n * 在该接口返回成功后,可以直接调用通讯录展示组件的相关方法。\n *\n * @example\n * ```ts\n * ww.initOpenData()\n * ```\n */ function initOpenData(params) {\n if (params === void 0) params = {};\n return promiseToCallback(params, /*#__PURE__*/ _async_to_generator(function() {\n var result;\n return __generator(this, function(_state) {\n switch(_state.label){\n case 0:\n if (!isWeCom) {\n return [\n 2,\n invokeOpenDataAgentConfig()\n ];\n }\n return [\n 4,\n ensureAgentConfigReady()\n ];\n case 1:\n result = _state.sent().result;\n if (!isWindows && !(win == null ? void 0 : win.WeixinSandBox)) {\n throw new SDKError(\"Missing WeixinSandBox\");\n }\n if (!!(win == null ? void 0 : win.WWOpenData)) return [\n 3,\n 3\n ];\n return [\n 4,\n invoke(\"wwapp.initWwOpenData\")\n ];\n case 2:\n _state.sent();\n _state.label = 3;\n case 3:\n if (!(win == null ? void 0 : win.WWOpenData)) {\n throw new SDKError(\"Init WWOpenData failed\");\n }\n if (win.WWOpenData.initJSSDK) {\n win.WWOpenData.initJSSDK({\n invoke: invoke,\n ensureAgentConfigReady: ensureAgentConfigReady\n });\n }\n return [\n 2,\n result\n ];\n }\n });\n }));\n}\nfunction invokeOpenDataAgentConfig() {\n return _invokeOpenDataAgentConfig.apply(this, arguments);\n}\nfunction _invokeOpenDataAgentConfig() {\n _invokeOpenDataAgentConfig = _async_to_generator(function() {\n var _win_WWOpenData, params;\n return __generator(this, function(_state) {\n switch(_state.label){\n case 0:\n if (!(win == null ? void 0 : (_win_WWOpenData = win.WWOpenData) == null ? void 0 : _win_WWOpenData.agentConfig)) {\n throw new SDKError(\"Missing WWOpenData.agentConfig\");\n }\n return [\n 4,\n resolveAgentConfigParams(getSignURL())\n ];\n case 1:\n params = _state.sent();\n return [\n 2,\n new Promise(function(success, fail) {\n win.WWOpenData.agentConfig(_extends({}, params, {\n success: success,\n fail: fail\n }));\n })\n ];\n }\n });\n });\n return _invokeOpenDataAgentConfig.apply(this, arguments);\n}\n\nfunction createTransparentIFrame(width, height, el) {\n var iframeEl = document.createElement(\"iframe\");\n var style = iframeEl.style;\n style.display = \"block\";\n style.border = \"none\";\n style.background = \"transparent\";\n style.width = width;\n style.height = height;\n iframeEl.referrerPolicy = \"origin\";\n iframeEl.setAttribute(\"frameborder\", \"0\");\n iframeEl.setAttribute(\"allowtransparency\", \"true\");\n var containerEl = resolveEl(el);\n if (containerEl) {\n containerEl.appendChild(iframeEl);\n }\n return iframeEl;\n}\nfunction resolveEl(el) {\n if (typeof el === \"string\") {\n return document.querySelector(el);\n }\n return el;\n}\n\nfunction genUid() {\n var rand = Math.random().toString(36).slice(2);\n return Date.now().toString(36) + \".\" + rand;\n}\nfunction normalizeError(error) {\n if (!error || typeof error !== \"object\") {\n return error;\n }\n return _extends({}, error, {\n message: error.message,\n stack: error.stack\n });\n}\n\nfunction useRemoteInvoke(postMessage, callback) {\n var invoke = function invoke(args) {\n return new Promise(function(resolve, reject) {\n var uid = genUid();\n messageMap.set(uid, {\n resolve: resolve,\n reject: reject\n });\n postMessage({\n type: \"ww-iframe-handle:call\",\n uid: uid,\n args: args\n });\n });\n };\n var handleResponseMessage = function handleResponseMessage(msg) {\n var handle = messageMap.get(msg.uid);\n if (!handle) {\n return;\n }\n handle[msg.kind](msg.args);\n messageMap.delete(msg.uid);\n };\n var messageMap = new Map();\n function handleCallMessage(msg) {\n return _handleCallMessage.apply(this, arguments);\n }\n function _handleCallMessage() {\n _handleCallMessage = _async_to_generator(function(msg) {\n var _tmp, error;\n return __generator(this, function(_state) {\n switch(_state.label){\n case 0:\n _state.trys.push([\n 0,\n 2,\n ,\n 3\n ]);\n _tmp = {\n type: \"ww-iframe-handle:response\",\n uid: msg.uid,\n kind: \"resolve\"\n };\n return [\n 4,\n callback(msg.args)\n ];\n case 1:\n postMessage.apply(void 0, [\n (_tmp.args = _state.sent(), _tmp)\n ]);\n return [\n 3,\n 3\n ];\n case 2:\n error = _state.sent();\n postMessage({\n type: \"ww-iframe-handle:response\",\n uid: msg.uid,\n kind: \"reject\",\n args: normalizeError(error)\n });\n throw error;\n case 3:\n return [\n 2\n ];\n }\n });\n });\n return _handleCallMessage.apply(this, arguments);\n }\n return {\n invoke: invoke,\n handleCallMessage: handleCallMessage,\n handleResponseMessage: handleResponseMessage\n };\n}\n\nvar attached = false;\nvar listeners = [];\nfunction sendRemoteMessage(target, message, origin) {\n var data = typeof message === \"string\" ? message : JSON.stringify(message);\n target == null ? void 0 : target.postMessage(data, origin);\n}\nfunction useRemoteMessage(listener) {\n if (!attached) {\n attached = true;\n window.addEventListener(\"message\", onWindowMessage);\n }\n listeners.push(listener);\n return function() {\n var index = listeners.indexOf(listener);\n if (index >= 0) {\n listeners.splice(index, 1);\n }\n };\n}\nfunction onWindowMessage(event) {\n try {\n var msg = JSON.parse(event.data);\n if (!msg.type.startsWith(\"ww-iframe-handle:\")) {\n return;\n }\n for(var _iterator = _create_for_of_iterator_helper_loose(listeners.slice()), _step; !(_step = _iterator()).done;){\n var listener = _step.value;\n listener(msg, event);\n }\n } catch (error) {\n // noop\n }\n}\n\nfunction useIframeClient(iframeEl, origin, callback) {\n var onIframeLoad = function onIframeLoad() {\n if (iframeReady) {\n return;\n }\n postMessage({\n type: \"ww-iframe-handle:init\"\n });\n };\n var handleReadyMessage = function handleReadyMessage() {\n if (iframeReady) {\n return;\n }\n iframeReady = true;\n for(var _iterator = _create_for_of_iterator_helper_loose(messageQueue), _step; !(_step = _iterator()).done;){\n var message = _step.value;\n postMessage(message);\n }\n };\n var enqueueMessage = function enqueueMessage(message) {\n var data = JSON.stringify(message);\n if (!iframeReady) {\n messageQueue.push(data);\n } else {\n postMessage(data);\n }\n };\n var postMessage = function postMessage(message) {\n sendRemoteMessage(iframeEl.contentWindow, message, origin);\n };\n var _useRemoteInvoke = useRemoteInvoke(enqueueMessage, callback), invoke = _useRemoteInvoke.invoke, handleCallMessage = _useRemoteInvoke.handleCallMessage, handleResponseMessage = _useRemoteInvoke.handleResponseMessage;\n var messageQueue = [];\n var iframeReady = false;\n var dispose = useRemoteMessage(function(msg, event) {\n if (event.origin !== origin || iframeEl.contentWindow !== event.source) {\n return;\n }\n switch(msg.type){\n case \"ww-iframe-handle:ready\":\n return handleReadyMessage();\n case \"ww-iframe-handle:call\":\n return handleCallMessage(msg);\n case \"ww-iframe-handle:response\":\n return handleResponseMessage(msg);\n }\n });\n iframeEl.addEventListener(\"load\", onIframeLoad);\n return {\n el: iframeEl,\n invoke: invoke,\n dispose: dispose\n };\n}\n\nfunction resolveSuiteConfigParams(url) {\n return _resolveSuiteConfigParams.apply(this, arguments);\n}\nfunction _resolveSuiteConfigParams() {\n _resolveSuiteConfigParams = _async_to_generator(function(url) {\n var registerOptions, data;\n return __generator(this, function(_state) {\n switch(_state.label){\n case 0:\n registerOptions = getRegisterOptions();\n if (!(registerOptions == null ? void 0 : registerOptions.getSuiteConfigSignature)) {\n throw new SDKError(\"Missing getSuiteConfigSignature\");\n }\n return [\n 4,\n registerOptions.getSuiteConfigSignature(url)\n ];\n case 1:\n data = _state.sent();\n return [\n 2,\n {\n suiteid: registerOptions.suiteId,\n timestamp: \"\" + data.timestamp,\n nonceStr: data.nonceStr,\n signature: data.signature,\n jsApiList: mapJsApiListToClient(registerOptions.jsApiList || [\n \"agentConfig\"\n ])\n }\n ];\n }\n });\n });\n return _resolveSuiteConfigParams.apply(this, arguments);\n}\n\nfunction has(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nfunction handleCallMsg(msg, options) {\n safeRun(options[msg.name], msg.payload || msg.data);\n}\n\nvar disposeModalFrame;\nfunction showModalFrame(url, callback) {\n var handleCloseMsg = function handleCloseMsg() {\n var _iframeEl_parentNode;\n client.dispose();\n (_iframeEl_parentNode = iframeEl.parentNode) == null ? void 0 : _iframeEl_parentNode.removeChild(iframeEl);\n };\n disposeModalFrame == null ? void 0 : disposeModalFrame();\n var iframeEl = createTransparentIFrame(\"100vw\", \"100vh\", document.body);\n var style = iframeEl.style;\n style.position = \"fixed\";\n style.left = \"0\";\n style.top = \"0\";\n style.zIndex = \"1000\";\n iframeEl.classList.add(\"wecom-jssdk-modal\");\n iframeEl.setAttribute(\"src\", url);\n var origin = new URL(url).origin;\n var client = useIframeClient(iframeEl, origin, function(msg) {\n if (msg.type === \"close\") {\n handleCloseMsg();\n }\n return callback == null ? void 0 : callback(msg);\n });\n disposeModalFrame = handleCloseMsg;\n return client;\n}\n\n/**\n * 创建 JSAPI 触发面板\n *\n * 在非企业微信内置浏览器环境下,开发者可以创建 JSAPI 触发面板。当用户点击面板时,内置的 iframe 将调起用户本地的企业微信客户端并调用指定的 JSAPI\n *\n * @param name 要调用的 JSAPI 名称\n *\n * @limit\n * - 应用必须经过 SSO 登录获取 web_token\n * - 用户必须登录了企业微信桌面端且当前用户身份和页面身份一致\n */ function createJSAPIPanel(name, options) {\n var handleGetStaticOptionsMsg = function handleGetStaticOptionsMsg() {\n return {\n name: name,\n options: _extends({}, options, {\n el: undefined,\n params: undefined\n })\n };\n };\n var handleJsapiCallbackMsg = function handleJsapiCallbackMsg(msg) {\n if (!jsapiParamsMap.has(msg.seq)) {\n return;\n }\n var jsapiParams = jsapiParamsMap.get(msg.seq);\n jsapiParamsMap.delete(msg.seq);\n if (msg.kind === \"success\") {\n safeRun(jsapiParams == null ? void 0 : jsapiParams.success, msg.payload);\n } else {\n safeRun(jsapiParams == null ? void 0 : jsapiParams.fail, msg.payload);\n }\n safeRun(jsapiParams == null ? void 0 : jsapiParams.complete, msg.payload);\n };\n var handleOpenModalFrameMsg = function handleOpenModalFrameMsg(msg) {\n showModalFrame(msg.payload.url);\n };\n var iframeEl = createTransparentIFrame(\"100%\", \"100%\", options.el);\n var jsapiParamsMap = new Map();\n var dispose = useIframeClient(iframeEl, \"https://login.work.weixin.qq.com\", function(msg) {\n switch(msg.type){\n case \"getStaticOptions\":\n return handleGetStaticOptionsMsg();\n case \"getJSAPIParams\":\n return handleGetJSAPIParams(msg);\n case \"openModalFrame\":\n return handleOpenModalFrameMsg(msg);\n case \"jsapiCallback\":\n return handleJsapiCallbackMsg(msg);\n case \"call\":\n return handleCallMsg(msg, options);\n }\n }).dispose;\n function handleGetJSAPIParams(msg) {\n return _handleGetJSAPIParams.apply(this, arguments);\n }\n function _handleGetJSAPIParams() {\n _handleGetJSAPIParams = _async_to_generator(function(msg) {\n var _msg_payload, _msg_payload1, jsapiParams, _tmp, signUrl, _tmp1, _tmp2;\n return __generator(this, function(_state) {\n switch(_state.label){\n case 0:\n if (!isFunction(options.params)) return [\n 3,\n 2\n ];\n return [\n 4,\n options.params()\n ];\n case 1:\n _tmp = _state.sent();\n return [\n 3,\n 3\n ];\n case 2:\n _tmp = options.params;\n _state.label = 3;\n case 3:\n jsapiParams = _tmp;\n signUrl = getSignURL();\n jsapiParamsMap.set(msg.seq, jsapiParams);\n _tmp1 = {\n webToken: options.webToken,\n url: signUrl\n };\n if (!((_msg_payload = msg.payload) == null ? void 0 : _msg_payload.skipSignature)) return [\n 3,\n 4\n ];\n _tmp2 = undefined;\n return [\n 3,\n 6\n ];\n case 4:\n return [\n 4,\n resolveSignatureData(signUrl, ((_msg_payload1 = msg.payload) == null ? void 0 : _msg_payload1.preferSignatureTypeList) || [\n \"agentConfig\"\n ])\n ];\n case 5:\n _tmp2 = _state.sent();\n _state.label = 6;\n case 6:\n return [\n 2,\n (_tmp1.configParams = _tmp2, _tmp1.jsapi = name, _tmp1.jsapiParams = jsapiParams, _tmp1)\n ];\n }\n });\n });\n return _handleGetJSAPIParams.apply(this, arguments);\n }\n iframeEl.style.opacity = \"0\";\n iframeEl.src = \"https://login.work.weixin.qq.com/wwopen/ww-jsapi-transparent-frame\";\n return {\n /**\n * JSAPI 触发面板的 iframe 元素\n */ el: iframeEl,\n /**\n * 卸载 JSAPI 触发面板\n */ unmount: function unmount() {\n var _iframeEl_parentNode;\n dispose();\n (_iframeEl_parentNode = iframeEl.parentNode) == null ? void 0 : _iframeEl_parentNode.removeChild(iframeEl);\n }\n };\n}\nvar resolveSignatureFnMap = {\n agentConfig: resolveAgentConfigParams,\n suiteConfig: resolveSuiteConfigParams\n};\nfunction resolveSignatureData(url, typeList) {\n return _resolveSignatureData.apply(this, arguments);\n}\nfunction _resolveSignatureData() {\n _resolveSignatureData = _async_to_generator(function(url, typeList) {\n var lastError, _iterator, _step, type, _tmp, error;\n return __generator(this, function(_state) {\n switch(_state.label){\n case 0:\n lastError = new Error(\"Missing signature handler\");\n _iterator = _create_for_of_iterator_helper_loose(typeList);\n _state.label = 1;\n case 1:\n if (!!(_step = _iterator()).done) return [\n 3,\n 6\n ];\n type = _step.value;\n _state.label = 2;\n case 2:\n _state.trys.push([\n 2,\n 4,\n ,\n 5\n ]);\n if (!has(resolveSignatureFnMap, type)) {\n return [\n 3,\n 5\n ];\n }\n _tmp = {\n type: type\n };\n return [\n 4,\n resolveSignatureFnMap[type](url)\n ];\n case 3:\n return [\n 2,\n (_tmp.params = _state.sent(), _tmp)\n ];\n case 4:\n error = _state.sent();\n lastError = error;\n return [\n 3,\n 5\n ];\n case 5:\n return [\n 3,\n 1\n ];\n case 6:\n throw lastError;\n }\n });\n });\n return _resolveSignatureData.apply(this, arguments);\n}\n\n/**\n * 显示确认安全网关配置页面。\n *\n * 在桌面端页面以 iframe 弹窗的形式覆盖在页面上;在移动端页面将跳转至确认页面,返回后页面需要主动确认 confirm_id 的确认情况。\n */ function showSecurityGatewayConfirmModal(options) {\n var url = new URL(\"https://open.work.weixin.qq.com/wwopen/secureGateway/confirm\");\n url.searchParams.set(\"confirm_id\", options.confirmId);\n if (isIOS || isAndroid) {\n location.href = url.href;\n return;\n }\n url.searchParams.set(\"modal\", \"true\");\n var client = showModalFrame(url.href, function(msg) {\n switch(msg.type){\n case \"call\":\n return handleCallMsg(msg, options);\n case \"close\":\n return;\n default:\n throw new Error(\"Unknown message type '\" + msg.type + \"'\");\n }\n });\n return {\n /**\n * 弹窗面板的 iframe 元素\n */ el: client.el,\n /**\n * 卸载弹窗面板\n */ unmount: function unmount() {\n var _client_el_parentNode;\n client.dispose();\n (_client_el_parentNode = client.el.parentNode) == null ? void 0 : _client_el_parentNode.removeChild(client.el);\n }\n };\n}\n\nvar SDK_VERSION = \"1.4.5\";\n\nvar WWLoginType;\n(function(WWLoginType) {\n WWLoginType[/**\n * [第三方应用登录](#45846)\n */ \"serviceApp\"] = \"ServiceApp\";\n WWLoginType[/**\n * [企业自建应用登录](/document/path/98151)、[服务商代开发应用登录](/document/path/98173)\n */ \"corpApp\"] = \"CorpApp\";\n})(WWLoginType || (WWLoginType = {}));\nvar WWLoginLangType;\n(function(WWLoginLangType) {\n WWLoginLangType[/**\n * 中文\n */ \"zh\"] = \"zh\";\n WWLoginLangType[/**\n * 英文\n */ \"en\"] = \"en\";\n})(WWLoginLangType || (WWLoginLangType = {}));\nvar WWLoginRedirectType;\n(function(WWLoginRedirectType) {\n WWLoginRedirectType[/**\n * 默认 `top window` 顶层页面跳转\n */ \"top\"] = \"top\";\n WWLoginRedirectType[/**\n * 通过 `onLoginSuccess` 回调用户授权 `code`,开发者自行处理跳转\n */ \"callback\"] = \"callback\";\n WWLoginRedirectType[/**\n * 登录组件跳转\n */ \"self\"] = \"self\";\n})(WWLoginRedirectType || (WWLoginRedirectType = {}));\nvar WWLoginPanelSizeType;\n(function(WWLoginPanelSizeType) {\n WWLoginPanelSizeType[/**\n * 默认: 480x416px\n */ \"middle\"] = \"middle\";\n WWLoginPanelSizeType[/**\n * 小尺寸: 320x380px\n */ \"small\"] = \"small\";\n})(WWLoginPanelSizeType || (WWLoginPanelSizeType = {}));\n\nvar _obj;\nvar PANEL_SIZE = (_obj = {}, _obj[WWLoginPanelSizeType.middle] = [\n \"480px\",\n \"416px\"\n], _obj[WWLoginPanelSizeType.small] = [\n \"320px\",\n \"380px\"\n], _obj);\n/**\n * 初始化企业微信Web登录组件,创建登录面板。\n *\n * @example\n * ```ts\n * // 初始化\n * const wwLogin = ww.createWWLoginPanel({\n * el: '#ww_login',\n * params: {\n * login_type: 'CorpApp',\n * appid: 'wwbbb6a7b539f2xxxxx',\n * agentid: '10000xx',\n * redirect_uri: 'https://work.weixin.qq.com',\n * state: 'loginState',\n * redirect_type: 'callback',\n * },\n * onCheckWeComLogin({ isWeComLogin }) {\n * console.log(isWeComLogin)\n * },\n * onLoginSuccess({ code }) {\n * console.log({ code })\n * },\n * onLoginFail(err) {\n * console.log(err)\n * },\n * })\n *\n * // 卸载\n * wwLogin.unmount()\n * ```\n */ function createWWLoginPanel(options) {\n var _options_params;\n var _getPanelSize = getPanelSize((_options_params = options.params) == null ? void 0 : _options_params.panel_size), width = _getPanelSize.width, height = _getPanelSize.height;\n var iframeEl = createTransparentIFrame(width, height, options.el);\n var dispose = useIframeClient(iframeEl, \"https://login.work.weixin.qq.com\", function(msg) {\n if (msg.type === \"call\") {\n return handleCallMsg(msg, options);\n }\n throw new Error(\"Unknown message type '\" + msg.type + \"'\");\n }).dispose;\n var url = new URL(\"https://login.work.weixin.qq.com/wwlogin/sso/login\");\n for(var _iterator = _create_for_of_iterator_helper_loose(Object.keys(options.params || {})), _step; !(_step = _iterator()).done;){\n var key = _step.value;\n url.searchParams.set(key, options.params[key]);\n }\n url.searchParams.set(\"version\", SDK_VERSION);\n iframeEl.src = url.href;\n return {\n el: iframeEl,\n unmount: function unmount() {\n var _iframeEl_parentNode;\n dispose();\n (_iframeEl_parentNode = iframeEl.parentNode) == null ? void 0 : _iframeEl_parentNode.removeChild(iframeEl);\n }\n };\n}\nfunction getPanelSize(panelSizeType) {\n if (panelSizeType === void 0) panelSizeType = WWLoginPanelSizeType.middle;\n var size = PANEL_SIZE[panelSizeType] || PANEL_SIZE[WWLoginPanelSizeType.middle];\n return {\n width: size[0],\n height: size[1]\n };\n}\n\n/**\n * From https://gist.github.com/schacon/12703\n */ function hex_sha1(s) {\n return rstr2hex(rstr_sha1(s));\n}\n/**\n * Calculate the SHA1 of a raw string\n */ function rstr_sha1(s) {\n return binb2rstr(binb_sha1(rstr2binb(s), s.length * 8));\n}\n/**\n * Convert a raw string to a hex string\n */ function rstr2hex(input) {\n var hex_tab = \"0123456789abcdef\";\n var output = \"\";\n var x;\n for(var i = 0; i < input.length; i++){\n x = input.charCodeAt(i);\n output += hex_tab.charAt(x >>> 4 & 0x0f) + hex_tab.charAt(x & 0x0f);\n }\n return output;\n}\n/**\n * Convert a raw string to an array of big-endian words\n * Characters >255 have their high-byte silently ignored.\n */ function rstr2binb(input) {\n var output = new Array(input.length >> 2);\n for(var i = 0; i < output.length; i++)output[i] = 0;\n for(var i1 = 0; i1 < input.length * 8; i1 += 8)output[i1 >> 5] |= (input.charCodeAt(i1 / 8) & 0xff) << 24 - i1 % 32;\n return output;\n}\n/**\n * Convert an array of little-endian words to a string\n */ function binb2rstr(input) {\n var output = \"\";\n for(var i = 0; i < input.length * 32; i += 8)output += String.fromCharCode(input[i >> 5] >>> 24 - i % 32 & 0xff);\n return output;\n}\n/**\n * Calculate the SHA-1 of an array of big-endian words, and a bit length\n */ function binb_sha1(x, len) {\n /* append padding */ x[len >> 5] |= 0x80 << 24 - len % 32;\n x[(len + 64 >> 9 << 4) + 15] = len;\n var w = new Array(80);\n var a = 1732584193;\n var b = -271733879;\n var c = -1732584194;\n var d = 271733878;\n var e = -1009589776;\n for(var i = 0; i < x.length; i += 16){\n var olda = a;\n var oldb = b;\n var oldc = c;\n var oldd = d;\n var olde = e;\n for(var j = 0; j < 80; j++){\n if (j < 16) w[j] = x[i + j];\n else w[j] = bit_rol(w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16], 1);\n var t = safe_add(safe_add(bit_rol(a, 5), sha1_ft(j, b, c, d)), safe_add(safe_add(e, w[j]), sha1_kt(j)));\n e = d;\n d = c;\n c = bit_rol(b, 30);\n b = a;\n a = t;\n }\n a = safe_add(a, olda);\n b = safe_add(b, oldb);\n c = safe_add(c, oldc);\n d = safe_add(d, oldd);\n e = safe_add(e, olde);\n }\n return [\n a,\n b,\n c,\n d,\n e\n ];\n}\n/**\n * Perform the appropriate triplet combination function for the current\n * iteration\n */ function sha1_ft(t, b, c, d) {\n if (t < 20) return b & c | ~b & d;\n if (t < 40) return b ^ c ^ d;\n if (t < 60) return b & c | b & d | c & d;\n return b ^ c ^ d;\n}\n/**\n * Determine the appropriate additive constant for the current iteration\n */ function sha1_kt(t) {\n return t < 20 ? 1518500249 : t < 40 ? 1859775393 : t < 60 ? -1894007588 : -899497514;\n}\n/**\n * Add integers, wrapping at 2^32. This uses 16-bit operations internally\n * to work around bugs in some JS interpreters.\n */ function safe_add(x, y) {\n var lsw = (x & 0xffff) + (y & 0xffff);\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return msw << 16 | lsw & 0xffff;\n}\n/**\n * Bitwise rotate a 32-bit number to the left.\n */ function bit_rol(num, cnt) {\n return num << cnt | num >>> 32 - cnt;\n}\n\nfunction getSignature(options) {\n var normalized = options;\n if (typeof options === \"string\") {\n normalized = {\n ticket: options\n };\n }\n var nonceStr = normalized.nonceStr || Math.random().toString(36).slice(2);\n var timestamp = normalized.timestamp || Math.floor(Date.now() / 1000);\n var url = normalized.url || getHref().split(\"#\")[0];\n var ticket = normalized.ticket;\n var signature = hex_sha1(\"jsapi_ticket=\" + ticket + \"&noncestr=\" + nonceStr + \"×tamp=\" + timestamp + \"&url=\" + url);\n return {\n timestamp: timestamp,\n nonceStr: nonceStr,\n signature: signature\n };\n}\n\nvar env = {\n isWeChat: isWeChat,\n isWeCom: isWeCom\n};\nvar IS_WECOM_SDK = true;\n\nexport { CameraMode, CreateExternalPaymentType, EntryType, EnvVersion, IS_WECOM_SDK, InTalkType, InputCorpGroupContactMode, InputCorpGroupContactType, LiveType, LocationType, NetworkType, OAType, OaExtDataType, OpenUserProfileType, PrintFileIdType, ProductViewType, Proximity, SDK_VERSION, ScanQRCodeType, SelectEnterpriseContactMode, SelectEnterpriseContactType, SelectExternalContactType, SelectPrivilegedContactMode, SizeType, SourceType, WWLoginLangType, WWLoginPanelSizeType, WWLoginRedirectType, WWLoginType, addCard, addDevice, checkJsApi, checkSchedule, chooseCard, chooseImage, chooseInvoice, chooseWXPay, claimClassAdmin, closeBLEConnection, closeBluetoothAdapter, closeWindow, connectWifi, consumeAndShareCard, createBLEConnection, createChatWithMsg, createCorpGroupChat, createExternalPayment, createJSAPIPanel, createSchoolPayment, createWWLoginPanel, discoverDevice, downloadImage, downloadLivingReplay, downloadVoice, ensureAgentConfigReady, ensureConfigReady, ensureCorpConfigReady, enterHWOpenTalk, enterpriseVerify, env, getApprovalSelectedItems, getBLEDeviceCharacteristics, getBLEDeviceServices, getBeacons, getBluetoothAdapterState, getBluetoothDevices, getClipboardData, getConnectedBluetoothDevices, getConnectedWifi, getContext, getCurCorpGroupChat, getCurCorpGroupContact, getCurExternalChat, getCurExternalContact, getLocalImgData, getLocation, getNetworkType, getShareInfo, getSignature, getVerifyParams, getWifiList, hideAllNonBaseMenuItem, hideChatAttachmentMenu, hideMenuItems, hideOptionMenu, initOpenData, invoke, isWeixinJSBridgeReady, launchMiniprogram, navigateToAddCustomer, navigateToKfChat, notifyBLECharacteristicValueChange, on, onBLECharacteristicValueChange, onBLEConnectionStateChange, onBeaconServiceChange, onBeaconUpdate, onBluetoothAdapterStateChange, onBluetoothDeviceFound, onGetWifiList, onHistoryBack, onLocationChange, onMenuShareAppMessage, onMenuShareQQ, onMenuShareQZone, onMenuShareTimeline, onMenuShareWechat, onMenuShareWeibo, onNetworkStatusChange, onSearchBeacons, onUserCaptureScreen, onVoicePlayEnd, onVoiceRecordEnd, onWeixinJSBridgeReady, onWifiConnected, openAddress, openAppComment, openAppDeviceDataAuth, openAppManage, openBluetoothAdapter, openBusinessView, openCard, openDefaultBrowser, openDeviceProfile, openEnterpriseChat, openEnterpriseRedPacket, openExistedChatWithMsg, openLocation, openProductSpecificView, openThirdAppServiceChat, openUserProfile, pauseVoice, playVoice, previewFile, previewImage, printFile, queryCurrHWOpenTalk, readBLECharacteristicValue, refundExternalPayment, register, replayLiving, saveApprovalSelectedItems, scanQRCode, selectCorpGroupContact, selectEnterpriseContact, selectExternalContact, selectPrivilegedContact, sendChatMessage, setClipboardData, setShareAttr, shareAppMessage, shareToExternalChat, shareToExternalContact, shareToExternalMoments, shareWechatMessage, showAllNonBaseMenuItem, showMenuItems, showOptionMenu, showSecurityGatewayConfirmModal, startAutoLBS, startBeaconDiscovery, startBluetoothDevicesDiscovery, startLiving, startMeeting, startRecord, startSearchBeacons, startWecast, startWifi, stopAutoLBS, stopBeaconDiscovery, stopBluetoothDevicesDiscovery, stopRecord, stopSearchBeacons, stopVoice, stopWifi, thirdPartyOpenPage, translateVoice, updateAppMessageShareData, updateCorpGroupChat, updateEnterpriseChat, updateMomentsSetting, updateTimelineShareData, uploadImage, uploadVoice, wedocSelectDoc, wedriveSelectDir, wedriveSelectFileForDownload, wedriveSelectFileForShare, writeBLECharacteristicValue };\n","module.exports = __webpack_public_path__ + \"img/sigin-ecnu-logo.bc4a7925.png\";","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./page-footer.vue?vue&type=style&index=0&id=4ba78df4&prod&lang=scss\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"page-container page-footer\"},[_c('div',{staticClass:\"contact\"},[(_vm.preset.app && _vm.preset.app.contact)?_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.preset.app.contact)}}):(_vm.$organization.org == 'sjtu')?_c('div',{},[_vm._v(\"\\n 联系方式: \"),_c('i',{staticClass:\"fa fa-phone\"}),_vm._v(\" 34206060 \"),_c('i',{staticClass:\"fa fa-map-signs\"}),_vm._v(\" :上海市东川路800号\\n \"),_c('span',{staticClass:\"ml-3\"},[_vm._v(\"©2019\")]),_vm._v(\" \\n \"),_c('a',{staticStyle:{\"color\":\"black\"},attrs:{\"href\":\"http://net.sjtu.edu.cn\"}},[_vm._v(\"上海交通大学网络信息中心\")]),_vm._v(\" \\n \"),_c('a',{staticStyle:{\"color\":\"black\"},attrs:{\"href\":\"mailto:service@sjtu.edu.cn\"}},[_vm._v(\"service@sjtu.edu.cn\")]),_c('br'),_vm._v(\"\\n 支持以下浏览器版本:IE版本9以上,Chrome,Safari,Firefox,Edge,国内浏览器请使用极速模式。\\n \")]):(_vm.$organization.org == 'ecupl')?_c('div',[_vm._v(\"\\n 联系方式: \"),_c('i',{staticClass:\"fa fa-phone\"}),_vm._v(\" 57090561(松江) 62071629(长宁) \"),_c('i',{staticClass:\"fa fa-map-signs\"}),_vm._v(\"\\n 松江校区:松江大学园区龙源路555号 \"),_c('i',{staticClass:\"fa fa-map-signs\"}),_vm._v(\" 长宁校区:万航渡路1575号\\n \"),_c('br'),_c('span',{staticClass:\"ml-3\"},[_vm._v(\"©2019\")]),_vm._v(\" 上海华东政法大学信息化办公室\\n \")]):(_vm.$organization.org == 'ecnu')?_c('div',[_vm._m(0)]):_c('div',[_vm._v(\"\\n 支持的浏览器版本:IE版本9以上,Chrome,Safari,Firefox,Edge,国内浏览器请使用极速模式。\\n \")])])])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"logo-address text-center\"},[_c('a',{attrs:{\"href\":\"https://eoffice.ecnu.edu.cn/\",\"target\":\"_blank\"}},[_vm._v(\"技术支持:华东师范大学 信息化治理办公室\")]),_vm._v(\"\\n | 联系电话:62233081 邮箱:its@ecnu.edu.cn | 沪ICP备05003394 \"),_c('br'),_vm._v(\"\\n 支持的浏览器有:IE版本9以上,Chrome,Safari,Firefox,国内浏览器请使用极速模式。 |\\n \"),_c('a',{attrs:{\"href\":\"/privacy\",\"target\":\"_blank\"}},[_c('i',{staticClass:\"el-icon-s-custom\"}),_vm._v(\" 隐私政策\")])])\n}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./page-footer.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./page-footer.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./page-footer.vue?vue&type=template&id=4ba78df4\"\nimport script from \"./page-footer.vue?vue&type=script&lang=js\"\nexport * from \"./page-footer.vue?vue&type=script&lang=js\"\nimport style0 from \"./page-footer.vue?vue&type=style&index=0&id=4ba78df4&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.ready),expression:\"ready\"}],staticClass:\"w-100 h-100 sign-in-web\"},[(_vm.$organization.sso && !_vm.admin_login)?_c('div',{staticClass:\"w-100 h-100\"},[_c('i',{staticClass:\"el-icon-loading\"})]):_c('div',[_c('page-header')],1),_c('div',{staticClass:\"page-body-wrap\"},[_c('div',{staticClass:\"page-body\"},[_c('el-carousel',{attrs:{\"indicator-position\":\"inside\",\"height\":\"400px\"}},_vm._l((_vm.background_images),function(item){return _c('el-carousel-item',{key:item},[_c('div',{staticClass:\"carousel-image\",style:({'background-image':'url('+item+')'})})])}),1),_c('div',{staticClass:\"body-wrap\"},[_c('div',{staticClass:\"login page-container\",class:{'wechat':_vm.$organization.use_wechat}},[_c('div',{staticClass:\"login-wrap\"},[_c('div',{staticClass:\"login-bg\"},[(!_vm.show_wechat)?_c('div',{staticClass:\"login-table\"},[_c('div',{staticClass:\"text-center login-title\"},[_vm._v(\"\\n 登 录 | SIGN IN\\n \")]),_c('div',{staticClass:\"line\"}),(_vm.admin_login)?_c('form',{staticClass:\"clearfix\",attrs:{\"action\":\"/\"},on:{\"submit\":function($event){$event.preventDefault();return _vm.submitForm.apply(null, arguments)}}},[_c('div',{staticClass:\"login-group\"},[_vm._m(0),_c('div',{staticClass:\"login-input-wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.login.id),expression:\"login.id\"}],staticClass:\"login-input\",attrs:{\"type\":\"text\",\"placeholder\":\"用户/邮箱\",\"required\":\"\"},domProps:{\"value\":(_vm.login.id)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.login, \"id\", $event.target.value)}}})])]),_c('div',{staticClass:\"login-group mt-2\"},[_vm._m(1),_c('div',{staticClass:\"login-input-wrap\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.login.password),expression:\"login.password\"}],staticClass:\"login-input\",attrs:{\"type\":\"password\",\"placeholder\":\"密码\",\"required\":\"\"},domProps:{\"value\":(_vm.login.password)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.login, \"password\", $event.target.value)}}})])]),_c('div',{staticClass:\"text-right mb-3\"}),_c('div',[_c('button',{staticClass:\"login-btn btn btn-block\",staticStyle:{\"font-size\":\"20px\"},attrs:{\"type\":\"submit\",\"disable\":_vm.process.loading}},[_vm._v(\"登 录\\n \")])]),(_vm.$organization.oauth)?_c('div',{staticClass:\"text-muted mt-3\"},[_c('el-button',{staticStyle:{\"padding\":\"0\"},attrs:{\"type\":\"text\"},on:{\"click\":function($event){_vm.admin_login=false}}},[_vm._v(\"\\n 统一身份认证\\n \")])],1):_vm._e()]):_vm._e(),(!_vm.admin_login)?_c('div',{staticClass:\"flex-in-middle\",staticStyle:{\"height\":\"220px\"}},[_c('div',{staticStyle:{\"height\":\"1px\"}}),_c('div',{staticClass:\"w-100\"},[_c('button',{staticClass:\"login-btn btn btn-block\",staticStyle:{\"font-size\":\"20px\"},attrs:{\"type\":\"button\",\"disable\":_vm.process.loading},on:{\"click\":_vm.jumpToOAuth2}},[_vm._v(\"\\n \"+_vm._s(_vm.$organization.oauth_title)+\"登录\\n \")]),_c('div',{staticClass:\"text-muted\",staticStyle:{\"font-size\":\"13px\",\"text-align\":\"center\",\"margin-top\":\"20px\"}},[_vm._v(\"点击按键,跳转到 \"),_c('b',[_vm._v(_vm._s(_vm.$organization.oauth_title)+\"登录\")])])]),_c('div',{staticClass:\"w-100 text-center\"},[(_vm.should_show_admin)?_c('el-button',{attrs:{\"type\":\"text\"},on:{\"click\":function($event){_vm.admin_login=true}}},[_vm._v(\"用户口令登录\\n \")]):_vm._e()],1)]):_vm._e()]):_vm._e()]),(_vm.$organization.use_wechat)?[_c('qy-wecaht-qrcode',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.show_wechat),expression:\"show_wechat\"}],staticClass:\"wechat\"}),_c('div',{staticClass:\"page-fold\"}),_c('div',{staticClass:\"fold-text\",staticStyle:{\"cursor\":\"pointer\"},on:{\"click\":function($event){_vm.show_wechat = !_vm.show_wechat}}},[(!_vm.show_wechat)?_c('div',{staticStyle:{\"width\":\"30px\",\"height\":\"30px\",\"margin\":\"3px 3px 0 0\"}},[_c('img',{staticStyle:{\"width\":\"100%\",\"height\":\"100%\"},attrs:{\"src\":require(\"@/assets/images/wechat.png\"),\"alt\":\"\"}})]):_c('i',{staticClass:\"el-icon-monitor\",staticStyle:{\"font-weight\":\"bold\",\"color\":\"white\",\"padding\":\"5px\",\"font-size\":\"26px\"}})])]:_vm._e()],2)])])],1),_c('div',{staticClass:\"container mb-3 pt-4 mt-2\"},[(_vm.$organization.sign_in_functions)?_c('el-row',{staticClass:\"function tsi\"},_vm._l((_vm.icons),function(x){return _c('el-col',{key:x.icon,staticClass:\"col-xs-12 col-sm-6 col-md-3\"},[_c('div',{staticClass:\"function-body mb-4\"},[_c('h3',{staticClass:\"card-title feature-title\",class:x.icon},[_vm._v(_vm._s(x.subject))]),_c('p',{staticClass:\"card-text\"},[_vm._v(_vm._s(x.title))])])])}),1):_vm._e()],1)]),_c('div',{staticClass:\"clearfix\"}),_c('div',{staticClass:\"page-footer\",staticStyle:{\"background-color\":\"#f2f2f2\",\"height\":\"87px\"}},[_c('page-footer')],1),_c('el-dialog',{attrs:{\"append-to-body\":\"\",\"width\":\"50%\",\"title\":\"错误\",\"visible\":_vm.show_login_error,\"close-on-click-modal\":false},on:{\"update:visible\":function($event){_vm.show_login_error=$event}}},[_c('el-row',{attrs:{\"gutter\":20}},[_c('el-col',{attrs:{\"span\":24}},[_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.error_message)}})])],1),_c('div',{attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.jumpToSignIn}},[_vm._v(\"关 闭\")])],1)],1)],1)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"login-icon\"},[_c('i',{staticClass:\"fa fa-envelope\"}),_vm._v(\"  \")])\n},function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"login-icon\"},[_c('i',{staticClass:\"fa fa-lock\"}),_vm._v(\"  \")])\n}]\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{attrs:{\"id\":\"WECHAT_QRCODE\"}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./qy-wecaht-qrcode.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./qy-wecaht-qrcode.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./qy-wecaht-qrcode.vue?vue&type=template&id=65ead432&scoped=true\"\nimport script from \"./qy-wecaht-qrcode.vue?vue&type=script&lang=js\"\nexport * from \"./qy-wecaht-qrcode.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"65ead432\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./sign-in.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./sign-in.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./sign-in.vue?vue&type=template&id=0cb31f5e\"\nimport script from \"./sign-in.vue?vue&type=script&lang=js\"\nexport * from \"./sign-in.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"clock\",class:{shanghaitech:_vm.shanghaitech}},[_c('div',{staticClass:\"date ecnu\"},[_vm._v(_vm._s(_vm.date)+\" \"),(_vm.shanghaitech)?_c('span',[_vm._v(_vm._s(_vm.time))]):_vm._e()]),(!_vm.ecnu && !_vm.shanghaitech)?_c('div',{staticClass:\"time\"},[_vm._v(_vm._s(_vm.time))]):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./digital-clock.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./digital-clock.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./digital-clock.vue?vue&type=template&id=c617fefc&scoped=true\"\nimport script from \"./digital-clock.vue?vue&type=script&lang=js\"\nexport * from \"./digital-clock.vue?vue&type=script&lang=js\"\nimport style0 from \"./digital-clock.vue?vue&type=style&index=0&id=c617fefc&prod&scoped=true&lang=less\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c617fefc\",\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""}