{"version":3,"sources":["webpack:///./src/components/Spin.vue?5edc","webpack:///./src/components/Spin.vue?ef4c","webpack:///./src/components/Spin.vue","webpack:///./src/components/Spin.vue?71fb","webpack:///./src/components/PluginItem.vue?458b","webpack:///./src/components/PluginItem.vue","webpack:///./src/components/PluginItem.vue?de71","webpack:///./src/components/PluginGuide.vue?45b0","webpack:///./src/components/PluginGuide.vue","webpack:///./src/components/PluginGuide.vue?c151","webpack:///./src/views/plugin/index.vue?40f2","webpack:////var/static/shared/composable/plugin-mall.ts","webpack:///./src/api/plugin-mall.ts","webpack:///./src/views/plugin/index.vue","webpack:///./src/views/plugin/index.vue?5bef","webpack:///./src/components/Fail.vue","webpack:///./src/components/Fail.vue?276e","webpack:///./src/components/PluginItem.vue?4e2f","webpack:///./src/views/plugin/index.vue?a265","webpack:///./src/components/PluginGuide.vue?8853"],"names":["_hoisted_1","key","class","render","_ctx","_cache","$props","$setup","$data","$options","showCover","style","top","height","size","width","props","type","Number","default","Boolean","__exports__","_withScopeId","n","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","onClick","$event","handelShowAction","plugin","src","iconLink","alt","draggable","name","statusPhaseDesc","description","author","handleClick","inProgress","progress","to","showAction","_","href","title","moreAction","length","action","i","Object","index","emits","store","methods","this","$emit","_component_PluginItem","isVisible","args","close","components","PluginItem","isFirst","localStorage","getItem","setItem","_component_swiper_slide","_component_swiper","_component_PluginGuide","_component_Spin","_component_Fail","isVip","status","onTouchmove","ref","autoplay","delay","loop","modules","pagination","clickable","onSwiper","onSlideChange","bannerData","item","preview","goToDoc","pluginData","id","onHandlePluginClick","handlePluginClick","onPollPlugin","pollPlugin","onClearAppTimer","clearAppTimer","isLoading","PluginAction","freeze","STOP","RUN","INSTALL","UNINSTALL","CLEAN","UPDATE","PluginActionStatus","PHASE_TYPE_PENDING","PHASE_TYPE_RUNNING","PHASE_TYPE_ERROR","PHASE_TYPE_COMPLETE","PluginStatus","RUNNING","STOPPED","pluginButton","OPEN","IN_STOP","IN_UPDATE","IN_UNINSTALL","IN_CLEAN","IN_RUN","IN_INSTALL","inProgressText","NOT_IN_PROGRESS","IN_PROGRESS","IN_PERCENT","usePluginMall","space","getPluginApp","getPluginStatus","deleteStatus","showError","pollTimeoutRef","pluginApp","value","clearTimeout","isInQuickPoll","async","quickPollTimes","_pluginInfo$apps","_pluginStatus$tasks","_pluginStatus$expires","pluginInfo","catch","e","console","error","pluginStatus","apps","pluginState","tasks","pluginTempData","forEach","pluginAppItem","_pluginState$index","_pluginState$index2","_pluginAppItem$params","_pluginAppItem$params2","_pluginAppItem$params3","_pluginAppItem$params4","_pluginState$index$id","_pluginState$index3","_pluginAppItem$params5","findIndex","_item$params","params","app_id","pluginEle","statusPhase","phase","message","statusId","icon_link","link","version","delParams","changePluginEleStatus","lastStatusPhase","clearMoreAction","pluginRunningSwitch","includes","pluginStoppedSwitch","noPluginSwitch","is_need_update","unshift","push","pollInterval","SECOND","expires_in","log","window","setTimeout","request","location","method","limit","filters","JSON","stringify","in","taskIds","task_ids","actionPlugin","data","PluginGuide","Swiper","SwiperSlide","Spin","Fail","_store$state","state","commit","uninstallApp","uninstallIndex","computed","Array","fill","_deviceStore$currentD","deviceStore","currentDeviceRef","runnerTaskRef","defaultImg","url","deviceInfoWatchData","plugin_banner","h5","filter","installPlugins","reduce","pre","cur","encodeURIComponent","startupPlugins","watch","val","show","handleUninstall","document","pageShow","swiper","activeIndex","bannerShowList","$stat","banner_name","trim","envStore","platform","openType","from","assign","decodeURIComponent","isInPC","native","CallNativeFunction","isInMac","WebViewJavascriptBridge","callHandler","err","$router","query","$route","currentIframeUrl","currentIframeTitle","currentIframeShowClose","handelPluginChange","plug_num","pluginsNum","install_plug_num","installNum","install_plug_name","installName","launch_plug_num","startupNum","launch_plug_name","startName","pluginItem","_pluginItem$version$r","_pluginItem$version","_pluginItem$version$r2","replace","call","tip","okTxt","cancelTxt","showLoader","plug_name","launch_status","btn_status","click_id","app","diabled","reStatus","click_result","file_name","file_size","target","then","result","__name","__props","clickCount","showFailBtn","connectMessage","showFailDialog","connecting","curDeviceRunner","_curDeviceRunner$valu","_curDeviceRunner$valu2","_curDeviceRunner$valu3","tipBtn","lastTime","_device$updated_time","device","deviceLastUpdateTime","updated_time","localDeviceTime","lastUpdateTimeValue","Date","getTime","since","copyClose","handleRetry","reload","dispatch"],"mappings":"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","file":"js/chunk-199c570b.js","sourcesContent":["/* unplugin-vue-components disabled */export * from \"-!../../../../node_modules/.pnpm/unplugin@1.4.0/node_modules/unplugin/dist/webpack/loaders/transform.js?unpluginName=unplugin-vue-components!../../../../node_modules/.pnpm/mini-css-extract-plugin@0.9.0_webpack@4.46.0/node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/.pnpm/css-loader@3.6.0_webpack@4.46.0/node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/.pnpm/vue-loader@16.8.3_@vue+compiler-sfc@3.3.4_vue@3.3.4_webpack@4.46.0/node_modules/vue-loader/dist/stylePostLoader.js!../../../../node_modules/.pnpm/postcss-loader@3.0.0/node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/.pnpm/sass-loader@8.0.2_sass@1.65.1/node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/.pnpm/cache-loader@4.1.0_webpack@4.46.0/node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/.pnpm/vue-loader@16.8.3_@vue+compiler-sfc@3.3.4_vue@3.3.4_webpack@4.46.0/node_modules/vue-loader/dist/index.js??ref--1-1!./Spin.vue?vue&type=style&index=0&id=3b9d62ba&lang=scss&scoped=true\"","import { openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode, Fragment as _Fragment, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\";\nconst _withScopeId = n => (_pushScopeId(\"data-v-3b9d62ba\"), n = n(), _popScopeId(), n);\nconst _hoisted_1 = {\n key: 0,\n class: \"cover\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n return _openBlock(), _createElementBlock(_Fragment, null, [_ctx.showCover ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1)) : _createCommentVNode(\"\", true), _createElementVNode(\"div\", {\n class: \"loading\",\n style: _normalizeStyle({\n top: _ctx.top + 'px'\n })\n }, [_createElementVNode(\"div\", {\n class: \"loading__image\",\n style: _normalizeStyle({\n height: _ctx.size + 'px',\n width: _ctx.size + 'px'\n })\n }, null, 4)], 4)], 64);\n}","import { defineComponent } from 'vue';\nexport default defineComponent({\n props: {\n size: {\n type: Number,\n default: 30\n },\n top: {\n type: Number,\n default: 0\n },\n showCover: {\n type: Boolean,\n default: false\n }\n },\n setup() {\n return {};\n }\n});","/* unplugin-vue-components disabled */import { render } from \"./Spin.vue?vue&type=template&id=3b9d62ba&scoped=true&ts=true\"\nimport script from \"./Spin.vue?vue&type=script&lang=ts\"\nexport * from \"./Spin.vue?vue&type=script&lang=ts\"\n\nimport \"./Spin.vue?vue&type=style&index=0&id=3b9d62ba&lang=scss&scoped=true\"\n\nimport exportComponent from \"/var/static/node_modules/.pnpm/vue-loader@16.8.3_@vue+compiler-sfc@3.3.4_vue@3.3.4_webpack@4.46.0/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-3b9d62ba\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, withModifiers as _withModifiers, Transition as _Transition, withCtx as _withCtx, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, Teleport as _Teleport, createBlock as _createBlock, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\";\nconst _withScopeId = n => (_pushScopeId(\"data-v-2289f20c\"), n = n(), _popScopeId(), n);\nconst _hoisted_1 = {\n class: \"plugin-item-icon\"\n};\nconst _hoisted_2 = [\"src\"];\nconst _hoisted_3 = {\n class: \"plugin-item-content\"\n};\nconst _hoisted_4 = {\n class: \"plugin-item_name\"\n};\nconst _hoisted_5 = {\n class: \"name\"\n};\nconst _hoisted_6 = {\n key: 0,\n class: \"switch-on\"\n};\nconst _hoisted_7 = {\n class: \"plugin-item_txt\"\n};\nconst _hoisted_8 = {\n class: \"plugin-item-action\"\n};\nconst _hoisted_9 = {\n class: \"plugin-item_btn\"\n};\nconst _hoisted_10 = {\n key: 0,\n class: \"plugin\"\n};\nconst _hoisted_11 = {\n class: \"plugin__body\"\n};\nconst _hoisted_12 = {\n class: \"plugin__body-title\"\n};\nconst _hoisted_13 = {\n class: \"plugin-item-icon\"\n};\nconst _hoisted_14 = [\"src\"];\nconst _hoisted_15 = {\n class: \"plugin-item-title\"\n};\nconst _hoisted_16 = {\n key: 0,\n class: \"switch-on\"\n};\nconst _hoisted_17 = {\n key: 1,\n class: \"switch-off\"\n};\nconst _hoisted_18 = {\n class: \"plugin__body-sub\"\n};\nconst _hoisted_19 = /*#__PURE__*/_withScopeId(() => /*#__PURE__*/_createElementVNode(\"hr\", {\n class: \"hr-solid\"\n}, null, -1));\nconst _hoisted_20 = {\n key: 0,\n class: \"plugin__body-content\"\n};\nconst _hoisted_21 = /*#__PURE__*/_withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", {\n class: \"more-action\"\n}, \" 更多操作 \", -1));\nconst _hoisted_22 = {\n class: \"user-select\"\n};\nconst _hoisted_23 = [\"onClick\"];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n return _openBlock(), _createElementBlock(_Fragment, null, [_createElementVNode(\"div\", {\n class: \"plugin-item\",\n onClick: _cache[1] || (_cache[1] = $event => _ctx.handelShowAction(_ctx.plugin))\n }, [_createElementVNode(\"div\", _hoisted_1, [_createElementVNode(\"img\", {\n src: _ctx.plugin.iconLink,\n class: \"plugin-item_img\",\n alt: \"plugin\",\n draggable: \"false\"\n }, null, 8, _hoisted_2)]), _createElementVNode(\"div\", _hoisted_3, [_createElementVNode(\"div\", _hoisted_4, [_createElementVNode(\"span\", _hoisted_5, _toDisplayString(_ctx.plugin.name), 1), _ctx.plugin.statusPhaseDesc === '打开' ? (_openBlock(), _createElementBlock(\"span\", _hoisted_6, \"已启动\")) : _createCommentVNode(\"\", true)]), _createElementVNode(\"div\", _hoisted_7, _toDisplayString(_ctx.plugin.description) + \";由\" + _toDisplayString(_ctx.plugin.author) + \"提供 \", 1)]), _createElementVNode(\"div\", _hoisted_8, [_createElementVNode(\"div\", _hoisted_9, [_createElementVNode(\"div\", {\n class: \"action\",\n onClick: _cache[0] || (_cache[0] = _withModifiers($event => _ctx.handleClick(_ctx.plugin.statusPhaseDesc), [\"stop\"]))\n }, _toDisplayString(_ctx.plugin.inProgress === 'in-percent' ? `${_ctx.plugin.progress}%` : _ctx.plugin.statusPhaseDesc), 1)])])]), (_openBlock(), _createBlock(_Teleport, {\n to: \"#app\"\n }, [_createVNode(_Transition, {\n name: \"mask\"\n }, {\n default: _withCtx(() => [_ctx.plugin.showAction ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"cover\",\n onClick: _cache[2] || (_cache[2] = $event => _ctx.handelShowAction(_ctx.plugin))\n })) : _createCommentVNode(\"\", true)]),\n _: 1\n }), _createVNode(_Transition, {\n name: \"pop\"\n }, {\n default: _withCtx(() => [_ctx.plugin.showAction ? (_openBlock(), _createElementBlock(\"div\", _hoisted_10, [_createElementVNode(\"div\", _hoisted_11, [_createElementVNode(\"div\", _hoisted_12, [_createElementVNode(\"div\", _hoisted_13, [_createElementVNode(\"img\", {\n src: _ctx.plugin.iconLink,\n class: \"plugin-item_img\",\n alt: \"plugin\",\n draggable: \"false\"\n }, null, 8, _hoisted_14)]), _createElementVNode(\"div\", _hoisted_15, [_createElementVNode(\"h2\", null, _toDisplayString(_ctx.plugin.name), 1), _ctx.plugin.statusPhaseDesc === '打开' ? (_openBlock(), _createElementBlock(\"span\", _hoisted_16, \"已启动\")) : _createCommentVNode(\"\", true), _ctx.plugin.statusPhaseDesc !== '打开' ? (_openBlock(), _createElementBlock(\"span\", _hoisted_17, \"未启动\")) : _createCommentVNode(\"\", true)]), _createElementVNode(\"a\", {\n href: \"javascript:;\",\n class: \"qh-icon-close\",\n title: \"关闭\",\n onClick: _cache[3] || (_cache[3] = $event => _ctx.handelShowAction(_ctx.plugin))\n })]), _createElementVNode(\"div\", _hoisted_18, _toDisplayString(_ctx.plugin.description) + \";由\" + _toDisplayString(_ctx.plugin.author) + \"提供 \", 1), _hoisted_19, _ctx.plugin.moreAction.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_20, [_hoisted_21, _createElementVNode(\"ul\", _hoisted_22, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.plugin.moreAction, (action, i) => {\n return _openBlock(), _createElementBlock(\"li\", {\n key: i,\n class: \"user-select-item\",\n onClick: $event => _ctx.handleClick(action)\n }, _toDisplayString(action), 9, _hoisted_23);\n }), 128))])])) : _createCommentVNode(\"\", true)])])) : _createCommentVNode(\"\", true)]),\n _: 1\n })]))], 64);\n}","import { defineComponent } from 'vue';\nimport { useStore } from 'vuex';\nexport default defineComponent({\n props: {\n plugin: {\n type: Object,\n default: () => {}\n },\n index: {\n type: Number,\n default: 0\n }\n },\n emits: ['handlePluginClick', 'clearAppTimer', 'pollPlugin'],\n setup() {\n return {\n store: useStore()\n };\n },\n methods: {\n handleClick(action) {\n if (this.plugin.inProgress !== 'not-in-progress') return;\n this.$emit('handlePluginClick', action, this.plugin, this.index);\n },\n handelShowAction(plugin) {\n if (plugin.showAction) {\n this.$emit('pollPlugin');\n } else {\n this.$emit('clearAppTimer');\n }\n plugin.showAction = !plugin.showAction;\n }\n }\n});","/* unplugin-vue-components disabled */import { render } from \"./PluginItem.vue?vue&type=template&id=2289f20c&scoped=true&ts=true\"\nimport script from \"./PluginItem.vue?vue&type=script&lang=ts\"\nexport * from \"./PluginItem.vue?vue&type=script&lang=ts\"\n\nimport \"./PluginItem.vue?vue&type=style&index=0&id=2289f20c&lang=scss&scoped=true\"\n\nimport exportComponent from \"/var/static/node_modules/.pnpm/vue-loader@16.8.3_@vue+compiler-sfc@3.3.4_vue@3.3.4_webpack@4.46.0/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-2289f20c\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\";\nconst _withScopeId = n => (_pushScopeId(\"data-v-554ad9d9\"), n = n(), _popScopeId(), n);\nconst _hoisted_1 = {\n key: 0,\n class: \"guide\"\n};\nconst _hoisted_2 = /*#__PURE__*/_withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", {\n class: \"cover\"\n}, null, -1));\nconst _hoisted_3 = {\n class: \"guide-list\"\n};\nconst _hoisted_4 = /*#__PURE__*/_withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", {\n class: \"tip\"\n}, \" 点击卡片查看更多信息 \", -1));\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_PluginItem = _resolveComponent(\"PluginItem\");\n return _ctx.isVisible ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [_hoisted_2, _createElementVNode(\"div\", _hoisted_3, [_createVNode(_component_PluginItem, {\n plugin: _ctx.plugin\n }, null, 8, [\"plugin\"])]), _hoisted_4, _createElementVNode(\"div\", {\n class: \"btn\",\n onClick: _cache[0] || (_cache[0] =\n //@ts-ignore\n (...args) => _ctx.close && _ctx.close(...args))\n }, \" 我知道了 \")])) : _createCommentVNode(\"\", true);\n}","import { defineComponent } from 'vue';\nimport PluginItem from '@remote/components/PluginItem.vue';\nimport { IS_FIRST_SHOW_PLUGIN } from '@remote/constant';\nexport default defineComponent({\n components: {\n PluginItem\n },\n props: {\n plugin: {\n type: Object,\n default: () => {}\n }\n },\n data() {\n return {\n isVisible: false\n };\n },\n mounted() {\n const isFirst = localStorage.getItem(IS_FIRST_SHOW_PLUGIN);\n if (!isFirst) {\n this.isVisible = true;\n }\n },\n methods: {\n close() {\n localStorage.setItem(IS_FIRST_SHOW_PLUGIN, 'true');\n this.isVisible = false;\n }\n }\n});","/* unplugin-vue-components disabled */import { render } from \"./PluginGuide.vue?vue&type=template&id=554ad9d9&scoped=true&ts=true\"\nimport script from \"./PluginGuide.vue?vue&type=script&lang=ts\"\nexport * from \"./PluginGuide.vue?vue&type=script&lang=ts\"\n\nimport \"./PluginGuide.vue?vue&type=style&index=0&id=554ad9d9&lang=scss&scoped=true\"\n\nimport exportComponent from \"/var/static/node_modules/.pnpm/vue-loader@16.8.3_@vue+compiler-sfc@3.3.4_vue@3.3.4_webpack@4.46.0/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-554ad9d9\"]])\n\nexport default __exports__","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, withCtx as _withCtx, createBlock as _createBlock, createVNode as _createVNode, createCommentVNode as _createCommentVNode, withModifiers as _withModifiers, normalizeClass as _normalizeClass, pushScopeId as _pushScopeId, popScopeId as _popScopeId } from \"vue\";\nconst _withScopeId = n => (_pushScopeId(\"data-v-6a22eb9c\"), n = n(), _popScopeId(), n);\nconst _hoisted_1 = {\n key: 0,\n class: \"swiper-wrapper\"\n};\nconst _hoisted_2 = {\n class: \"image-wrapper\"\n};\nconst _hoisted_3 = [\"src\", \"onClick\"];\nconst _hoisted_4 = {\n key: 1,\n class: \"plugin_list\"\n};\nconst _hoisted_5 = {\n key: 2,\n class: \"plugin_list\"\n};\nconst _hoisted_6 = /*#__PURE__*/_withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", {\n class: \"plugin-item skeleton-item\"\n}, null, -1));\nconst _hoisted_7 = /*#__PURE__*/_withScopeId(() => /*#__PURE__*/_createElementVNode(\"div\", {\n class: \"plugin-item skeleton-item\"\n}, null, -1));\nconst _hoisted_8 = [_hoisted_6, _hoisted_7];\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_swiper_slide = _resolveComponent(\"swiper-slide\");\n const _component_swiper = _resolveComponent(\"swiper\");\n const _component_PluginItem = _resolveComponent(\"PluginItem\");\n const _component_PluginGuide = _resolveComponent(\"PluginGuide\");\n const _component_Spin = _resolveComponent(\"Spin\");\n const _component_Fail = _resolveComponent(\"Fail\");\n return _openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"plugin_wrapper\", {\n 'is-vip': _ctx.isVip,\n 'top': !_ctx.status\n }]),\n onTouchmove: _cache[0] || (_cache[0] = _withModifiers(() => {}, [\"stop\"]))\n }, [_ctx.status ? (_openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createVNode(_component_swiper, {\n ref: \"mySwiper\",\n class: \"swiper\",\n autoplay: {\n delay: 5000\n },\n loop: \"\",\n modules: _ctx.modules,\n pagination: {\n clickable: true\n },\n \"virtual-index\": 99,\n onSwiper: _ctx.onSwiper,\n onSlideChange: _ctx.onSlideChange\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.bannerData, (item, index) => {\n return _openBlock(), _createBlock(_component_swiper_slide, {\n key: index\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"img\", {\n class: \"image\",\n src: item.preview,\n draggable: \"false\",\n onClick: $event => _ctx.goToDoc(item)\n }, null, 8, _hoisted_3)])]),\n _: 2\n }, 1024);\n }), 128))]),\n _: 1\n }, 8, [\"modules\", \"onSwiper\", \"onSlideChange\"])])) : _createCommentVNode(\"\", true), _ctx.pluginData.length > 0 && _ctx.status ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList(_ctx.pluginData, (item, index) => {\n return _openBlock(), _createBlock(_component_PluginItem, {\n key: item.id,\n plugin: item,\n index: index,\n onHandlePluginClick: _ctx.handlePluginClick,\n onPollPlugin: _ctx.pollPlugin,\n onClearAppTimer: _ctx.clearAppTimer\n }, null, 8, [\"plugin\", \"index\", \"onHandlePluginClick\", \"onPollPlugin\", \"onClearAppTimer\"]);\n }), 128)), _createVNode(_component_PluginGuide, {\n plugin: _ctx.pluginData[0]\n }, null, 8, [\"plugin\"])])) : _createCommentVNode(\"\", true), _ctx.pluginData.length === 0 && _ctx.status ? (_openBlock(), _createElementBlock(\"div\", _hoisted_5, _hoisted_8)) : _createCommentVNode(\"\", true), _ctx.isLoading ? (_openBlock(), _createBlock(_component_Spin, {\n key: 3\n })) : _createCommentVNode(\"\", true), !_ctx.status ? (_openBlock(), _createBlock(_component_Fail, {\n key: 4\n })) : _createCommentVNode(\"\", true)], 34);\n}","import { ref, Ref } from 'vue'\r\nimport type { DeepPartial } from 'utility-types'\r\nimport { SECOND, MINUTE } from '@shared/constants/time'\r\n\r\n/** 小工具操作指令 */\r\nexport const PluginAction = Object.freeze({\r\n STOP: 'stop',\r\n RUN: 'run',\r\n INSTALL: 'install',\r\n UNINSTALL: 'uninstall',\r\n CLEAN: 'clean',\r\n UPDATE: 'update',\r\n})\r\n\r\n/** 小工具操作结果 */\r\nconst PluginActionStatus = Object.freeze({\r\n PHASE_TYPE_PENDING: 'PHASE_TYPE_PENDING',\r\n PHASE_TYPE_RUNNING: 'PHASE_TYPE_RUNNING',\r\n PHASE_TYPE_ERROR: 'PHASE_TYPE_ERROR',\r\n PHASE_TYPE_COMPLETE: 'PHASE_TYPE_COMPLETE',\r\n})\r\n\r\n/** 小工具状态 */\r\nconst PluginStatus = Object.freeze({\r\n RUNNING: 'running',\r\n STOPPED: 'stopped',\r\n})\r\n\r\n/**\r\n * 小工具按钮文案\r\n */\r\nexport const pluginButton = Object.freeze({\r\n OPEN: '打开',\r\n UNINSTALL: '卸载',\r\n STOP: '停止',\r\n RUN: '启动',\r\n INSTALL: '安装',\r\n UPDATE: '更新',\r\n CLEAN: '移除',\r\n IN_STOP: '停止中',\r\n IN_UPDATE: '更新中',\r\n IN_UNINSTALL: '卸载中',\r\n IN_CLEAN: '移除中',\r\n IN_RUN: '启动中',\r\n IN_INSTALL: '安装中',\r\n})\r\n\r\nexport const inProgressText = Object.freeze({\r\n NOT_IN_PROGRESS: 'not-in-progress',\r\n IN_PROGRESS: 'in-progress',\r\n IN_PERCENT: 'in-percent',\r\n})\r\n\r\nexport interface IPluginEle {\r\n /**\r\n * - PHASE_TYPE_PENDING: 等待中\r\n * - PHASE_TYPE_RUNNING: 进行中\r\n * - PHASE_TYPE_ERROR: 失败\r\n * - PHASE_TYPE_COMPLETE: 完成\r\n */\r\n statusPhase: string\r\n /**\r\n * 失败信息\r\n */\r\n message: string\r\n /**\r\n * 操作指令\r\n * 'stop'|'run'|'install'|'uninstall'|'clean'|'update'\r\n */\r\n action: string\r\n /**\r\n * 操作id\r\n */\r\n statusId: string\r\n /**\r\n * 进度 % 百分比\r\n */\r\n progress: number\r\n /**\r\n * 小工具状态 \r\n * - running:运行中\r\n * - stopped:暂停\r\n */\r\n pluginStatus: 'running' | 'stopped'\r\n /** \r\n * 应用ID,每个应用拥有一个唯一ID \r\n */\r\n id: string\r\n /**\r\n * 应用图标\r\n */\r\n iconLink: string\r\n /**\r\n * 应用链接\r\n */\r\n link: string\r\n /**\r\n * 应用名称\r\n */\r\n name: string\r\n /**\r\n * 说明\r\n */\r\n description: string\r\n /**\r\n * 作者\r\n */\r\n author: string\r\n /**\r\n * 是否展示下拉框\r\n */\r\n showAction: false\r\n /**\r\n * 下拉框列表\r\n */\r\n moreAction: string[]\r\n /**\r\n * 按钮中间态\r\n * - not-in-progress 不是中间态\r\n * - in-progress 显示进行中\r\n * - in-percent 展示百分比\r\n */\r\n inProgress: string\r\n /**\r\n * 按钮文字描述\r\n */\r\n statusPhaseDesc: string\r\n version?: string\r\n}\r\n\r\n/**\r\n * 获取小工具列表\r\n * 调用小工具轮询接口\r\n * 以及关闭轮询\r\n */\r\nexport function usePluginMall ({\r\n space,\r\n getPluginApp,\r\n getPluginStatus,\r\n deleteStatus,\r\n showError,\r\n}: {\r\n space: Ref\r\n getPluginApp: (space: string) => Promise>\r\n getPluginStatus: (space: string) => Promise>\r\n deleteStatus: (space: string, taskIds: string) => Promise\r\n showError: (errorText: string) => void\r\n}) {\r\n\r\n /**\r\n * 轮询定时器\r\n */\r\n const pollTimeoutRef = ref(null)\r\n\r\n /**\r\n * 整合小工具信息及状态变更结果的列表\r\n */\r\n const pluginData = ref[]>([])\r\n\r\n /**\r\n * 获取小工具应用配置信息列表\r\n */\r\n const pluginApp = ref[]>([])\r\n\r\n /**\r\n * 去掉定时器\r\n */\r\n function clearAppTimer () {\r\n if (pollTimeoutRef.value) clearTimeout(pollTimeoutRef.value)\r\n }\r\n\r\n let isInQuickPoll = false\r\n\r\n /**\r\n * 轮询小工具\r\n */\r\n const pollPlugin = async (quickPollTimes = 0) => {\r\n clearAppTimer()\r\n const pluginInfo = await getPluginApp(space.value).catch(e => {console.error(e); return {} as API_PLUGIN_MALL.GetPluginApp})\r\n const pluginStatus = await getPluginStatus(space.value).catch(e => {console.error(e); return {} as API_PLUGIN_MALL.GetPluginStatus})\r\n pluginApp.value = pluginInfo?.apps ?? []\r\n /**\r\n * 获取对小工具进行状态变更操作结果的列表\r\n */\r\n const pluginState = pluginStatus?.tasks ?? []\r\n \r\n /**\r\n * 整合小工具信息及状态变更结果的临时列表\r\n */\r\n const pluginTempData: Partial[] = []\r\n\r\n pluginApp.value.forEach((pluginAppItem) => {\r\n const index = pluginState.findIndex((item) => item.params?.app_id === pluginAppItem.id)\r\n\r\n const pluginEle: Partial = {\r\n statusPhase: index !== -1 ? pluginState[index].phase : '',\r\n message: index !== -1 ? pluginState[index]?.params?.error : '',\r\n action: index !== -1 ? pluginState[index]?.params?.action : '',\r\n statusId: index !== -1 ? pluginState[index].id : '',\r\n progress: index !== -1 ? pluginState[index].progress || 0 : 0,\r\n pluginStatus: pluginAppItem?.params?.status,\r\n id: pluginAppItem?.id,\r\n iconLink: pluginAppItem?.icon_link,\r\n link: pluginAppItem?.link,\r\n name: pluginAppItem?.name,\r\n description: pluginAppItem?.params?.description,\r\n author: pluginAppItem?.params?.author,\r\n showAction: false,\r\n moreAction: [],\r\n inProgress: inProgressText.NOT_IN_PROGRESS,\r\n statusPhaseDesc: '',\r\n version: pluginAppItem?.params?.version,\r\n }\r\n\r\n const delParams = pluginState[index]?.id ?? ''\r\n\r\n const { pluginStatus = '', action = '', statusPhase = '' } = pluginEle\r\n\r\n /**\r\n * 改变小工具状态\r\n * @param statusPhaseDesc \r\n * @param inProgress \r\n */\r\n const changePluginEleStatus = (statusPhaseDesc, inProgress) => {\r\n const lastStatusPhase = pluginEle.statusPhaseDesc\r\n pluginEle.statusPhaseDesc = statusPhaseDesc\r\n pluginEle.inProgress = inProgress\r\n if (lastStatusPhase !== statusPhaseDesc && !isInQuickPoll) {\r\n pollPlugin(3)\r\n }\r\n }\r\n /**\r\n * 清空下拉列表\r\n */\r\n const clearMoreAction = () => {\r\n pluginEle.moreAction = []\r\n }\r\n\r\n /**\r\n * 小工具运行中对action的判断\r\n */\r\n const pluginRunningSwitch = () => {\r\n pluginEle.statusPhaseDesc = pluginButton.OPEN\r\n pluginEle.moreAction = [pluginButton.UNINSTALL, pluginButton.STOP]\r\n switch (action) {\r\n case PluginAction.STOP:\r\n if ([PluginActionStatus.PHASE_TYPE_PENDING, PluginActionStatus.PHASE_TYPE_RUNNING].includes(statusPhase)) {\r\n changePluginEleStatus(pluginButton.IN_STOP, inProgressText.IN_PROGRESS)\r\n clearMoreAction()\r\n } else {\r\n if (statusPhase === PluginActionStatus.PHASE_TYPE_ERROR) {\r\n showError('暂停失败')\r\n }\r\n deleteStatus(space.value, delParams)\r\n }\r\n break\r\n case PluginAction.UPDATE:\r\n if ([PluginActionStatus.PHASE_TYPE_PENDING, PluginActionStatus.PHASE_TYPE_RUNNING].includes(statusPhase)) {\r\n changePluginEleStatus(pluginButton.IN_UPDATE, inProgressText.IN_PERCENT)\r\n clearMoreAction()\r\n } else {\r\n if (statusPhase === PluginActionStatus.PHASE_TYPE_ERROR) {\r\n showError('更新失败')\r\n }\r\n deleteStatus(space.value, delParams)\r\n }\r\n break\r\n case PluginAction.UNINSTALL:\r\n if ([PluginActionStatus.PHASE_TYPE_PENDING, PluginActionStatus.PHASE_TYPE_RUNNING].includes(statusPhase)) {\r\n changePluginEleStatus(pluginButton.IN_UNINSTALL, inProgressText.IN_PROGRESS)\r\n clearMoreAction()\r\n } else {\r\n if (statusPhase === PluginActionStatus.PHASE_TYPE_ERROR) {\r\n showError('卸载失败')\r\n }\r\n deleteStatus(space.value, delParams)\r\n }\r\n break\r\n case PluginAction.CLEAN:\r\n if ([PluginActionStatus.PHASE_TYPE_PENDING, PluginActionStatus.PHASE_TYPE_RUNNING].includes(statusPhase)) {\r\n changePluginEleStatus(pluginButton.IN_CLEAN, inProgressText.IN_PROGRESS)\r\n clearMoreAction()\r\n } else {\r\n if (statusPhase === PluginActionStatus.PHASE_TYPE_ERROR) {\r\n showError('移除失败')\r\n }\r\n deleteStatus(space.value, delParams)\r\n }\r\n break\r\n }\r\n }\r\n\r\n /**\r\n * 小工具暂停时对action的判断\r\n */\r\n const pluginStoppedSwitch = () => {\r\n pluginEle.statusPhaseDesc = pluginButton.RUN\r\n pluginEle.moreAction = [pluginButton.UNINSTALL]\r\n switch (action) {\r\n case PluginAction.RUN:\r\n if ([PluginActionStatus.PHASE_TYPE_PENDING, PluginActionStatus.PHASE_TYPE_RUNNING].includes(statusPhase)) {\r\n changePluginEleStatus(pluginButton.IN_RUN, inProgressText.IN_PROGRESS)\r\n clearMoreAction()\r\n } else {\r\n if (statusPhase === PluginActionStatus.PHASE_TYPE_ERROR) {\r\n showError(`启动失败.${pluginEle.message}`)\r\n }\r\n deleteStatus(space.value, delParams)\r\n }\r\n break\r\n case PluginAction.UPDATE:\r\n if ([PluginActionStatus.PHASE_TYPE_PENDING, PluginActionStatus.PHASE_TYPE_RUNNING].includes(statusPhase)) {\r\n changePluginEleStatus(pluginButton.IN_UPDATE, inProgressText.IN_PERCENT)\r\n clearMoreAction()\r\n } else {\r\n if (statusPhase === PluginActionStatus.PHASE_TYPE_ERROR) {\r\n showError('更新失败')\r\n }\r\n deleteStatus(space.value, delParams)\r\n }\r\n break\r\n case PluginAction.UNINSTALL:\r\n if ([PluginActionStatus.PHASE_TYPE_PENDING, PluginActionStatus.PHASE_TYPE_RUNNING].includes(statusPhase)) {\r\n changePluginEleStatus(pluginButton.IN_UNINSTALL, inProgressText.IN_PROGRESS)\r\n clearMoreAction()\r\n } else {\r\n if (statusPhase === PluginActionStatus.PHASE_TYPE_ERROR) {\r\n showError('卸载失败')\r\n }\r\n deleteStatus(space.value, delParams)\r\n }\r\n break\r\n case PluginAction.CLEAN:\r\n if ([PluginActionStatus.PHASE_TYPE_PENDING, PluginActionStatus.PHASE_TYPE_RUNNING].includes(statusPhase)) {\r\n changePluginEleStatus(pluginButton.IN_CLEAN, inProgressText.IN_PROGRESS)\r\n clearMoreAction()\r\n } else {\r\n if (statusPhase === PluginActionStatus.PHASE_TYPE_ERROR) {\r\n showError('移除失败')\r\n }\r\n deleteStatus(space.value, delParams)\r\n }\r\n break\r\n }\r\n }\r\n\r\n /**\r\n * 小工具不存在时对action的判断\r\n */\r\n const noPluginSwitch = () => {\r\n pluginEle.statusPhaseDesc = pluginButton.INSTALL\r\n if (action === PluginAction.INSTALL) {\r\n if ([PluginActionStatus.PHASE_TYPE_PENDING, PluginActionStatus.PHASE_TYPE_RUNNING].includes(statusPhase)) {\r\n changePluginEleStatus(pluginButton.IN_INSTALL, inProgressText.IN_PERCENT)\r\n } else {\r\n if (PluginActionStatus.PHASE_TYPE_ERROR === statusPhase) {\r\n showError('安装失败')\r\n }\r\n deleteStatus(space.value, delParams)\r\n }\r\n }\r\n }\r\n\r\n if (pluginStatus === PluginStatus.RUNNING) {\r\n pluginRunningSwitch()\r\n } else if (pluginStatus === PluginStatus.STOPPED) {\r\n pluginStoppedSwitch()\r\n } else {\r\n noPluginSwitch()\r\n }\r\n\r\n if (pluginAppItem?.params?.is_need_update && pluginEle.moreAction && pluginEle.statusPhaseDesc) {\r\n pluginEle.moreAction.unshift(pluginEle.statusPhaseDesc)\r\n pluginEle.statusPhaseDesc = pluginButton.UPDATE\r\n }\r\n\r\n pluginTempData.push(pluginEle)\r\n })\r\n\r\n // 轮询\r\n let pollInterval = SECOND * (pluginStatus.expires_in ?? 1)\r\n if (quickPollTimes > 0) {\r\n isInQuickPoll = true\r\n pollInterval = 5 * SECOND\r\n } else {\r\n isInQuickPoll = false\r\n }\r\n \r\n console.log('pollInterval', pollInterval)\r\n pollTimeoutRef.value = window.setTimeout(\r\n () => pollPlugin(quickPollTimes - 1),\r\n pollInterval,\r\n )\r\n \r\n pluginData.value = pluginTempData\r\n }\r\n\r\n return {\r\n clearAppTimer,\r\n pollPlugin,\r\n pluginData,\r\n }\r\n}","import type { DeepPartial } from 'utility-types'\r\nimport { request } from '@remote/api/request'\r\nimport { IOptions, IParams } from '../type'\r\n\r\nexport function getPluginApp (space: string) {\r\n return request(\r\n 'drive/v1/apps',\r\n {\r\n params: {\r\n space,\r\n location: location.href,\r\n },\r\n method: 'GET',\r\n },\r\n ) as Promise>\r\n}\r\n\r\nexport function getPluginStatus (space: string) {\r\n return request(\r\n 'drive/v1/tasks',\r\n { \r\n params: {\r\n space,\r\n limit: 50,\r\n type: 'user#app',\r\n filters:JSON.stringify({\r\n phase:{ in:'PHASE_TYPE_PENDING,PHASE_TYPE_RUNNING,PHASE_TYPE_ERROR,PHASE_TYPE_COMPLETE' },\r\n type:{ 'in':'user#app' },\r\n }),\r\n },\r\n method: 'GET',\r\n },\r\n ) as Promise>\r\n}\r\n\r\nexport function deleteStatus (space: string, taskIds: string) {\r\n return request(\r\n 'drive/v1/tasks',\r\n { method: 'DELETE', params: {\r\n space,\r\n task_ids: taskIds,\r\n } },\r\n ) as Promise\r\n}\r\n\r\nexport function actionPlugin (params: API_PLUGIN_MALL.ActionPluginRequest) {\r\n return request(\r\n 'drive/v1/task',\r\n {\r\n data: params,\r\n method: 'POST',\r\n },\r\n ) as Promise\r\n}","import \"core-js/modules/es.array.reduce.js\";\nimport \"core-js/modules/es.array.push.js\";\nimport { defineComponent, computed } from 'vue';\nimport { useStore, mapState, mapGetters } from 'vuex';\nimport { isAndroidNative as isAndroid, isIOSNative as isIOS, sendMessage } from '@xunlei/universal-native-api';\nimport { usePluginMall, pluginButton, inProgressText } from '@shared/composable/plugin-mall';\nimport Fail from '@remote/components/Fail.vue';\nimport Spin from '@remote/components/Spin.vue';\nimport PluginItem from '@remote/components/PluginItem.vue';\nimport PluginGuide from '@remote/components/PluginGuide.vue';\nimport { defaultPluginImg } from '@remote/constant';\nimport { getPluginApp, getPluginStatus, deleteStatus, actionPlugin } from '@remote/api/plugin-mall';\nimport { Navigation, Pagination, Scrollbar, A11y, Autoplay } from 'swiper';\nimport { Swiper, SwiperSlide } from 'swiper/vue/swiper-vue.js';\nimport 'swiper/swiper.min.css';\nimport 'swiper/modules/navigation/navigation.min.css';\nimport 'swiper/modules/pagination/pagination.min.css';\nimport 'swiper/modules/scrollbar/scrollbar.min.css';\nimport { parseVersionToNumber } from '@shared/utils';\nimport { useEnvStore } from '@remote/store/env';\nimport { useDeviceStore } from '@remote/store/device';\nexport default defineComponent({\n components: {\n PluginItem,\n PluginGuide,\n Swiper,\n SwiperSlide,\n Spin,\n Fail\n },\n setup() {\n const store = useStore();\n const deviceStore = useDeviceStore();\n const space = computed(() => {\n var _store$state;\n return store === null || store === void 0 || (_store$state = store.state) === null || _store$state === void 0 ? void 0 : _store$state.space;\n });\n const {\n pollPlugin,\n pluginData,\n clearAppTimer\n } = usePluginMall({\n space,\n getPluginApp,\n getPluginStatus,\n deleteStatus,\n showError: error => {\n if (error && typeof error === 'string') {\n store.commit('toast', error);\n }\n }\n });\n return {\n modules: [Navigation, Pagination, Scrollbar, A11y, Autoplay],\n space,\n store,\n pollPlugin,\n pluginData,\n clearAppTimer\n };\n },\n data() {\n return {\n uninstallApp: {},\n uninstallIndex: 0,\n isLoading: false\n };\n },\n computed: {\n ...mapState(['action', 'loading', 'deviceInfoWatchData']),\n ...mapGetters(['isVip']),\n pluginsNum() {\n return this.pluginData.length;\n },\n bannerShowList() {\n return Array(this.bannerData.length).fill(false);\n },\n status() {\n var _deviceStore$currentD;\n const deviceStore = useDeviceStore();\n return ((_deviceStore$currentD = deviceStore.currentDeviceRef) === null || _deviceStore$currentD === void 0 ? void 0 : _deviceStore$currentD.runnerTaskRef.phase) === 'PHASE_TYPE_RUNNING';\n },\n bannerData() {\n const defaultImg = {\n preview: defaultPluginImg,\n url: ''\n };\n try {\n return this.deviceInfoWatchData.plugin_banner ? this.deviceInfoWatchData.plugin_banner.h5 : [defaultImg];\n } catch (error) {\n return [defaultImg];\n }\n },\n installPlugins() {\n return this.pluginData.filter(plugin => plugin.pluginStatus);\n },\n installNum() {\n return this.installPlugins.length;\n },\n installName() {\n return this.installPlugins.reduce((pre, cur) => `${pre}${encodeURIComponent(cur.name)};`, '');\n },\n startupPlugins() {\n return this.pluginData.filter(plugin => plugin.statusPhaseDesc === '打开');\n },\n startupNum() {\n return this.startupPlugins.length;\n },\n startName() {\n return this.startupPlugins.reduce((pre, cur) => `${pre}${encodeURIComponent(cur.name)};`, '');\n }\n },\n watch: {\n action(val) {\n if (val === 'plugin') {\n this.store.commit('dialog', {\n show: false\n });\n } else if (val === 'uninstall') {\n this.handleUninstall();\n }\n }\n },\n async mounted() {\n document.title = '小工具';\n await this.pollPlugin();\n this.pageShow();\n },\n methods: {\n onSwiper() {\n console.log('swiper');\n },\n onSlideChange(swiper) {\n let index = swiper.activeIndex;\n index === 0 ? index = this.bannerShowList.length : index === this.bannerShowList.length + 1 ? index = 1 : '';\n if (!this.bannerShowList[index - 1]) {\n this.$stat({\n action: 'smallplug_page_banner_show',\n data: {\n banner_name: this.bannerData[index - 1].name\n }\n });\n this.bannerShowList[index - 1] = true;\n }\n },\n goToDoc(item) {\n const url = item.url.trim();\n const envStore = useEnvStore();\n if (url) {\n this.$stat({\n action: 'smallplug_page_banner_click',\n data: {\n banner_name: item.name\n }\n });\n if (isAndroid) {\n return sendMessage({\n platform: 'android',\n name: 'xlOpenUrl',\n params: {\n url,\n openType: 1,\n from: ''\n }\n });\n } else if (isIOS) {\n this.isLoading = true;\n setTimeout(() => {\n this.isLoading = false;\n location.assign(`xunlei://hybrid/openHybridWeb?url=${decodeURIComponent(url)}`);\n }, 1000);\n } else if (envStore.isInPC) {\n if (window.native) {\n window.native.CallNativeFunction('OpenNewTab', url);\n }\n } else if (envStore.isInMac) {\n window.WebViewJavascriptBridge.callHandler('openURL', {\n url\n }, function (err) {\n if (err) {\n console.log(err.message);\n }\n });\n } else {\n this.$router.push({\n name: 'pluginIframe',\n query: {\n ...this.$route.query,\n currentIframeUrl: url,\n currentIframeTitle: ' ',\n currentIframeShowClose: 0\n }\n });\n }\n }\n },\n handleUninstall() {\n this.store.commit('dialog', {\n show: false\n });\n this.handelPluginChange('卸载', this.uninstallApp, this.uninstallIndex);\n },\n async pageShow() {\n this.$stat({\n action: 'smallplug_page_show',\n data: {\n plug_num: this.pluginsNum,\n install_plug_num: this.installNum,\n install_plug_name: this.installName,\n launch_plug_num: this.startupNum,\n launch_plug_name: this.startName\n }\n });\n },\n handlePluginClick(action, pluginItem, index) {\n pluginItem.showAction = false;\n if (action === pluginButton.OPEN) {\n var _pluginItem$version$r, _pluginItem$version, _pluginItem$version$r2;\n // 050db57e2d73ac45c239beba432a2f95: 网心云\n // b514f2f26975b198cc1f7bf07118710f: 网心云arm64\n // 03d0d715ff47b12aa1fa582e8d8741f3: 网心云测试用\n if (['050db57e2d73ac45c239beba432a2f95', 'b514f2f26975b198cc1f7bf07118710f', '03d0d715ff47b12aa1fa582e8d8741f3'].includes(pluginItem.id) && parseVersionToNumber((_pluginItem$version$r = pluginItem === null || pluginItem === void 0 || (_pluginItem$version = pluginItem.version) === null || _pluginItem$version === void 0 || (_pluginItem$version$r2 = _pluginItem$version.replace) === null || _pluginItem$version$r2 === void 0 ? void 0 : _pluginItem$version$r2.call(_pluginItem$version, 'v', '')) !== null && _pluginItem$version$r !== void 0 ? _pluginItem$version$r : '') < parseVersionToNumber('2.3.19')) {\n this.store.commit('dialog', {\n show: true,\n title: '温馨提示',\n tip: '您的插件版本过低,为保证您的使用体验,请您升级到最新版本',\n okTxt: '我知道了',\n cancelTxt: '',\n action: 'plugin',\n showLoader: false\n });\n } else {\n this.$stat({\n action: 'smallplug_page_plug_click',\n data: {\n plug_name: pluginItem.name,\n launch_status: pluginItem.pluginStatus === 'running',\n btn_status: 'open',\n click_id: 'open'\n }\n });\n this.$router.push({\n name: 'pluginIframe',\n query: {\n ...this.$route.query,\n currentIframeUrl: pluginItem.link,\n // 隐藏「网速测试」插件的头部。 fixing: http://jira.xunlei.cn/browse/NAS-2949\n // 网速测试 插件id: 6a7ce3356c4740946df70760d8fa97bd\n // 网速测试arm版 插件id: e992af9a955024e7354ef6937b8fb40e\n currentIframeTitle: ['e992af9a955024e7354ef6937b8fb40e', '6a7ce3356c4740946df70760d8fa97bd'].includes(pluginItem.id) ? '' : pluginItem.name,\n currentIframeShowClose: 1\n }\n });\n }\n } else if (action === pluginButton.UNINSTALL) {\n this.uninstallApp = pluginItem;\n this.uninstallIndex = index;\n this.store.commit('dialog', {\n show: true,\n title: '确定卸载该插件吗',\n tip: '',\n okTxt: '确认',\n cancelTxt: '取消',\n action: 'uninstall',\n showLoader: false\n });\n } else {\n this.handelPluginChange(action, pluginItem, index);\n }\n },\n handelPluginChange(status, app, index) {\n if (app.diabled) return;\n let reStatus = '';\n let inProgress = 'not-in-progress';\n let action = '';\n let click_id = '';\n let click_result = '';\n let btn_status = '';\n switch (status) {\n case pluginButton.INSTALL:\n reStatus = pluginButton.IN_INSTALL;\n inProgress = inProgressText.IN_PERCENT;\n action = 'install';\n click_id = 'install';\n click_result = 'install_success';\n btn_status = 'install';\n break;\n case pluginButton.RUN:\n reStatus = pluginButton.IN_RUN;\n inProgress = inProgressText.IN_PROGRESS;\n action = 'run';\n click_result = 'launch_success';\n btn_status = 'launch';\n break;\n case pluginButton.STOP:\n reStatus = pluginButton.IN_STOP;\n inProgress = inProgressText.IN_PROGRESS;\n click_id = 'stop';\n action = 'stop';\n btn_status = 'stop';\n click_result = 'stop_success';\n break;\n case pluginButton.UNINSTALL:\n reStatus = pluginButton.IN_UNINSTALL;\n inProgress = inProgressText.IN_PROGRESS;\n click_id = 'uninstall';\n action = 'uninstall';\n click_result = 'uninstall_success';\n btn_status = 'uninstall';\n break;\n case pluginButton.UPDATE:\n reStatus = pluginButton.IN_UPDATE;\n inProgress = inProgressText.IN_PERCENT;\n action = 'update';\n btn_status = 'uninstall';\n click_result = 'update_success';\n break;\n case pluginButton.CLEAN:\n reStatus = pluginButton.IN_CLEAN;\n inProgress = inProgressText.IN_PROGRESS;\n click_id = 'move';\n action = 'clean';\n btn_status = 'move';\n click_result = 'move_success';\n break;\n }\n if (action == '') return;\n this.$stat({\n action: 'smallplug_page_plug_click',\n data: {\n plug_name: app.name,\n launch_status: app.pluginStatus === 'running',\n btn_status,\n click_id\n }\n });\n let params = {\n file_name: app.name,\n name: app.name,\n file_size: '0',\n type: 'user#app',\n space: this.space,\n params: {\n target: this.space,\n app_id: app.id,\n action\n }\n };\n this.pluginData[index].statusPhaseDesc = reStatus;\n this.pluginData[index].inProgress = inProgress;\n this.pluginData[index].progress = 0;\n actionPlugin(params).then(() => {\n this.pollPlugin();\n setTimeout(() => {\n this.$stat({\n action: 'smallplug_page_plug_click_result',\n data: {\n plug_name: app.name,\n launch_status: app.pluginStatus === 'running',\n result: click_result\n }\n });\n }, 1000);\n });\n }\n }\n});","/* unplugin-vue-components disabled */import { render } from \"./index.vue?vue&type=template&id=6a22eb9c&scoped=true&ts=true\"\nimport script from \"./index.vue?vue&type=script&lang=ts\"\nexport * from \"./index.vue?vue&type=script&lang=ts\"\n\nimport \"./index.vue?vue&type=style&index=0&id=6a22eb9c&lang=scss&scoped=true\"\n\nimport exportComponent from \"/var/static/node_modules/.pnpm/vue-loader@16.8.3_@vue+compiler-sfc@3.3.4_vue@3.3.4_webpack@4.46.0/node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-6a22eb9c\"]])\n\nexport default __exports__","import { defineComponent as _defineComponent } from 'vue';\nimport { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, vShow as _vShow, withDirectives as _withDirectives, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, Fragment as _Fragment } from \"vue\";\nconst _hoisted_1 = {\n class: \"fail\"\n};\nconst _hoisted_2 = /*#__PURE__*/_createElementVNode(\"div\", {\n class: \"fail__img\"\n}, null, -1);\nconst _hoisted_3 = {\n class: \"fail__tips\"\n};\nconst _hoisted_4 = /*#__PURE__*/_createElementVNode(\"li\", null, \"1、请确保设备和网络正常运行;\", -1);\nconst _hoisted_5 = /*#__PURE__*/_createElementVNode(\"li\", null, \"2、更新设备固件和客户端为最新版后重试;\", -1);\nconst _hoisted_6 = /*#__PURE__*/_createElementVNode(\"li\", null, \"3、请联系设备厂商,确认该设备支持迅雷下载。\", -1);\nconst _hoisted_7 = {\n key: 0,\n class: \"fail-cover\"\n};\nconst _hoisted_8 = {\n class: \"fail-dialog\"\n};\nconst _hoisted_9 = {\n class: \"dialog__body\"\n};\nconst _hoisted_10 = /*#__PURE__*/_createElementVNode(\"h2\", null, \"错误信息\", -1);\nconst _hoisted_11 = {\n class: \"tips\"\n};\nconst _hoisted_12 = {\n class: \"dialog__footer\"\n};\nimport { computed, ref } from 'vue';\nimport { store } from '@remote/store';\nimport { msToTime, formatTime } from '@remote/utils';\nimport { getLocalValue } from '@remote/utils/index';\nimport copy from 'clipboard-copy';\nimport '@remote/assets/css/fail.scss';\nimport { useDeviceStore } from '@remote/store/device';\nexport default /*#__PURE__*/_defineComponent({\n __name: 'Fail',\n setup(__props) {\n const clickCount = ref(0);\n const showFailBtn = ref(false);\n const connectMessage = ref('');\n const showFailDialog = ref(false);\n const deviceStore = useDeviceStore();\n const connecting = computed(() => {\n return store.state.connecting;\n });\n const curDeviceRunner = computed(() => {\n return store.state.curDeviceRunner;\n });\n const tip = computed(() => {\n var _curDeviceRunner$valu, _curDeviceRunner$valu2, _curDeviceRunner$valu3;\n return connecting.value ? '检查设备中' : (_curDeviceRunner$valu = curDeviceRunner.value) !== null && _curDeviceRunner$valu !== void 0 && _curDeviceRunner$valu.id ? `当前设备(${(_curDeviceRunner$valu2 = (_curDeviceRunner$valu3 = curDeviceRunner.value) === null || _curDeviceRunner$valu3 === void 0 ? void 0 : _curDeviceRunner$valu3.name) !== null && _curDeviceRunner$valu2 !== void 0 ? _curDeviceRunner$valu2 : ''})已离线` : '未找到可远程下载的设备';\n });\n const tipBtn = computed(() => {\n return connecting.value ? '正在连接中' : '重新连接';\n });\n const lastTime = computed(() => {\n var _deviceStore$currentD, _device$updated_time;\n const device = (_deviceStore$currentD = deviceStore.currentDeviceRef) === null || _deviceStore$currentD === void 0 ? void 0 : _deviceStore$currentD.runnerTaskRef;\n const deviceLastUpdateTime = (_device$updated_time = device === null || device === void 0 ? void 0 : device.updated_time) !== null && _device$updated_time !== void 0 ? _device$updated_time : '';\n const localDeviceTime = device && deviceLastUpdateTime ? formatTime(deviceLastUpdateTime, 'MM-dd hh:mm') : '';\n const lastUpdateTimeValue = new Date(deviceLastUpdateTime).getTime();\n const since = new Date().getTime() - lastUpdateTimeValue;\n return device && deviceLastUpdateTime ? `4、当前设备最近活跃时间为: ${localDeviceTime} (${msToTime(since / 1000)}前)` : '';\n });\n const copyClose = () => {\n copy(connectMessage.value);\n showFailDialog.value = false;\n };\n const handleRetry = () => {\n clickCount.value++;\n if (clickCount.value >= 5) {\n location.reload(); // 如果用户点了5下,就给他reload一下页面。\n }\n\n if (connecting.value) return;\n store.dispatch('login');\n connectMessage.value = getLocalValue('connectMessage') && JSON.stringify(getLocalValue('connectMessage'));\n showFailBtn.value = !!connectMessage.value;\n };\n return (_ctx, _cache) => {\n return _openBlock(), _createElementBlock(_Fragment, null, [_createElementVNode(\"div\", _hoisted_1, [_hoisted_2, _createElementVNode(\"p\", null, _toDisplayString(tip.value), 1), _createElementVNode(\"div\", _hoisted_3, [_createElementVNode(\"ul\", null, [_hoisted_4, _hoisted_5, _hoisted_6, _withDirectives(_createElementVNode(\"li\", null, _toDisplayString(lastTime.value), 513), [[_vShow, lastTime.value]])])]), _createElementVNode(\"span\", {\n class: \"button-fail\",\n onClick: handleRetry\n }, _toDisplayString(tipBtn.value), 1), showFailBtn.value ? (_openBlock(), _createElementBlock(\"span\", {\n key: 0,\n class: \"button-fb\",\n onClick: _cache[0] || (_cache[0] = $event => showFailDialog.value = true)\n }, \"反馈错误信息\")) : _createCommentVNode(\"\", true)]), showFailDialog.value ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [_createElementVNode(\"div\", _hoisted_8, [_createElementVNode(\"div\", _hoisted_9, [_hoisted_10, _createElementVNode(\"p\", _hoisted_11, [_createElementVNode(\"span\", null, _toDisplayString(connectMessage.value), 1)])]), _createElementVNode(\"div\", _hoisted_12, [_createElementVNode(\"a\", {\n href: \"javascript:;\",\n class: \"button-other\",\n onClick: _cache[1] || (_cache[1] = $event => showFailDialog.value = false)\n }, \" 关闭 \"), _createElementVNode(\"a\", {\n href: \"javascript:;\",\n onClick: copyClose\n }, \" 复制并关闭 \")])])])) : _createCommentVNode(\"\", true)], 64);\n };\n }\n});","/* unplugin-vue-components disabled */import script from \"./Fail.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./Fail.vue?vue&type=script&lang=ts&setup=true\"\n\nconst __exports__ = script;\n\nexport default __exports__","/* unplugin-vue-components disabled */export * from \"-!../../../../node_modules/.pnpm/unplugin@1.4.0/node_modules/unplugin/dist/webpack/loaders/transform.js?unpluginName=unplugin-vue-components!../../../../node_modules/.pnpm/mini-css-extract-plugin@0.9.0_webpack@4.46.0/node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/.pnpm/css-loader@3.6.0_webpack@4.46.0/node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/.pnpm/vue-loader@16.8.3_@vue+compiler-sfc@3.3.4_vue@3.3.4_webpack@4.46.0/node_modules/vue-loader/dist/stylePostLoader.js!../../../../node_modules/.pnpm/postcss-loader@3.0.0/node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/.pnpm/sass-loader@8.0.2_sass@1.65.1/node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/.pnpm/cache-loader@4.1.0_webpack@4.46.0/node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/.pnpm/vue-loader@16.8.3_@vue+compiler-sfc@3.3.4_vue@3.3.4_webpack@4.46.0/node_modules/vue-loader/dist/index.js??ref--1-1!./PluginItem.vue?vue&type=style&index=0&id=2289f20c&lang=scss&scoped=true\"","/* unplugin-vue-components disabled */export * from \"-!../../../../../node_modules/.pnpm/unplugin@1.4.0/node_modules/unplugin/dist/webpack/loaders/transform.js?unpluginName=unplugin-vue-components!../../../../../node_modules/.pnpm/mini-css-extract-plugin@0.9.0_webpack@4.46.0/node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../../node_modules/.pnpm/css-loader@3.6.0_webpack@4.46.0/node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../../node_modules/.pnpm/vue-loader@16.8.3_@vue+compiler-sfc@3.3.4_vue@3.3.4_webpack@4.46.0/node_modules/vue-loader/dist/stylePostLoader.js!../../../../../node_modules/.pnpm/postcss-loader@3.0.0/node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../../node_modules/.pnpm/sass-loader@8.0.2_sass@1.65.1/node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../../node_modules/.pnpm/cache-loader@4.1.0_webpack@4.46.0/node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/.pnpm/vue-loader@16.8.3_@vue+compiler-sfc@3.3.4_vue@3.3.4_webpack@4.46.0/node_modules/vue-loader/dist/index.js??ref--1-1!./index.vue?vue&type=style&index=0&id=6a22eb9c&lang=scss&scoped=true\"","/* unplugin-vue-components disabled */export * from \"-!../../../../node_modules/.pnpm/unplugin@1.4.0/node_modules/unplugin/dist/webpack/loaders/transform.js?unpluginName=unplugin-vue-components!../../../../node_modules/.pnpm/mini-css-extract-plugin@0.9.0_webpack@4.46.0/node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/.pnpm/css-loader@3.6.0_webpack@4.46.0/node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/.pnpm/vue-loader@16.8.3_@vue+compiler-sfc@3.3.4_vue@3.3.4_webpack@4.46.0/node_modules/vue-loader/dist/stylePostLoader.js!../../../../node_modules/.pnpm/postcss-loader@3.0.0/node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/.pnpm/sass-loader@8.0.2_sass@1.65.1/node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/.pnpm/cache-loader@4.1.0_webpack@4.46.0/node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/.pnpm/vue-loader@16.8.3_@vue+compiler-sfc@3.3.4_vue@3.3.4_webpack@4.46.0/node_modules/vue-loader/dist/index.js??ref--1-1!./PluginGuide.vue?vue&type=style&index=0&id=554ad9d9&lang=scss&scoped=true\""],"sourceRoot":""}