mirror of
https://github.com/rubickCenter/rubick
synced 2025-07-17 20:57:30 +08:00
💄 UI 升级
This commit is contained in:
parent
0d0f745fc1
commit
3cf0d3471f
@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<div :class="[platform, 'detach']">
|
||||
<div :class="[process.platform, 'detach']">
|
||||
<div class="info">
|
||||
<img :src="plugInfo.logo"/>
|
||||
<input
|
||||
|
@ -1,3 +1,22 @@
|
||||
module.exports = {
|
||||
presets: ["@vue/cli-plugin-babel/preset"],
|
||||
presets: ['@vue/cli-plugin-babel/preset'],
|
||||
plugins: [
|
||||
[
|
||||
'import',
|
||||
{
|
||||
libraryName: 'ant-design-vue',
|
||||
style: 'css', // or 'css'
|
||||
},
|
||||
'ant-design-vue',
|
||||
],
|
||||
[
|
||||
'import',
|
||||
{
|
||||
libraryName: '@ant-design/icons-vue',
|
||||
libraryDirectory: 'lib/icons',
|
||||
camel2DashComponentName: false,
|
||||
},
|
||||
'@ant-design/icons-vue',
|
||||
],
|
||||
],
|
||||
};
|
||||
|
13020
feature/package-lock.json
generated
13020
feature/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -5,22 +5,27 @@
|
||||
"scripts": {
|
||||
"serve": "vue-cli-service serve --port 8081",
|
||||
"build": "vue-cli-service build",
|
||||
"lint": "vue-cli-service lint"
|
||||
"lint": "vue-cli-service lint",
|
||||
"report": "vue-cli-service build --report"
|
||||
},
|
||||
"dependencies": {
|
||||
"@ant-design/icons-vue": "^6.0.1",
|
||||
"@vue/cli-service": "~4.5.0",
|
||||
"ant-design-vue": "3.2.14",
|
||||
"axios": "^0.24.0",
|
||||
"babel-plugin-import": "^1.13.8",
|
||||
"core-js": "^3.6.5",
|
||||
"lodash.debounce": "^4.0.8",
|
||||
"lodash.throttle": "^4.1.1",
|
||||
"markdown-it": "^12.2.0",
|
||||
"nanoid": "^4.0.2",
|
||||
"vue": "3.2.45",
|
||||
"vue-i18n": "^9.2.2",
|
||||
"vue-i18n": "9.2.2",
|
||||
"vue-router": "^4.0.0-0",
|
||||
"vuex": "^4.0.0-0"
|
||||
"vue3-carousel": "^0.3.1",
|
||||
"vue3-lottie": "^3.1.0",
|
||||
"vuex": "^4.0.0-0",
|
||||
"webpack-bundle-analyzer": "^4.9.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@typescript-eslint/eslint-plugin": "^4.18.0",
|
||||
|
@ -9,7 +9,7 @@
|
||||
"pluginType": "ui",
|
||||
"features": [
|
||||
{
|
||||
"code": "market",
|
||||
"code": "finder",
|
||||
"explain": "插件市场",
|
||||
"cmds":[
|
||||
"插件市场"
|
||||
|
@ -1,91 +1,226 @@
|
||||
<template>
|
||||
<div class="main-container">
|
||||
<div class="slider-bar">
|
||||
<div class="left-menu">
|
||||
<a-menu
|
||||
v-model:selectedKeys="active"
|
||||
mode="horizontal"
|
||||
@select="({ key }) => changeMenu(key)"
|
||||
:selectedKeys="active"
|
||||
mode="vertical"
|
||||
>
|
||||
<a-menu-item key="market">
|
||||
<a-menu-item key="finder">
|
||||
<template #icon>
|
||||
<AppstoreOutlined />
|
||||
<StarOutlined style="font-size: 18px;" />
|
||||
</template>
|
||||
{{ $t('feature.market.title') }}
|
||||
{{ $t('feature.market.explore') }}
|
||||
</a-menu-item>
|
||||
<a-menu-item key="installed">
|
||||
<a-menu-item key="worker">
|
||||
<template #icon>
|
||||
<HeartOutlined />
|
||||
<SendOutlined style="transform: rotate(-45deg); font-size: 18px;" />
|
||||
</template>
|
||||
{{ $t('feature.installed.title') }}
|
||||
{{ $t('feature.market.efficiency') }}
|
||||
</a-menu-item>
|
||||
<a-menu-item key="settings">
|
||||
<a-menu-item key="tools">
|
||||
<template #icon>
|
||||
<SettingOutlined />
|
||||
<SearchOutlined style="font-size: 18px;" />
|
||||
</template>
|
||||
{{ $t('feature.settings.title') }}
|
||||
{{ $t('feature.market.searchTool') }}
|
||||
</a-menu-item>
|
||||
<a-menu-item key="dev">
|
||||
<a-menu-item key="image">
|
||||
<template #icon>
|
||||
<BugOutlined />
|
||||
<FileImageOutlined style="font-size: 18px;" />
|
||||
</template>
|
||||
{{ $t('feature.dev.title') }}
|
||||
{{ $t('feature.market.imageTool') }}
|
||||
</a-menu-item>
|
||||
<a-menu-item key="devPlugin">
|
||||
<template #icon>
|
||||
<CodeOutlined style="font-size: 18px;" />
|
||||
</template>
|
||||
{{ $t('feature.market.developTool') }}
|
||||
</a-menu-item>
|
||||
<a-menu-item key="system">
|
||||
<template #icon>
|
||||
<DatabaseOutlined style="font-size: 18px;" />
|
||||
</template>
|
||||
{{ $t('feature.market.systemTool') }}
|
||||
</a-menu-item>
|
||||
<a-sub-menu class="user-info">
|
||||
<template #icon>
|
||||
<a-avatar :size="32">
|
||||
<template #icon>
|
||||
<img :src="perf.custom.logo" />
|
||||
</template>
|
||||
</a-avatar>
|
||||
</template>
|
||||
<template #title>{{ perf.custom.username }}</template>
|
||||
<a-menu-item key="settings">
|
||||
<template #icon>
|
||||
<SettingOutlined />
|
||||
</template>
|
||||
{{ $t('feature.settings.title') }}
|
||||
</a-menu-item>
|
||||
<a-menu-item key="installed">
|
||||
<template #icon>
|
||||
<HeartOutlined />
|
||||
</template>
|
||||
{{ $t('feature.installed.title') }}
|
||||
</a-menu-item>
|
||||
<a-menu-item key="dev">
|
||||
<template #icon>
|
||||
<BugOutlined />
|
||||
</template>
|
||||
{{ $t('feature.dev.title') }}
|
||||
</a-menu-item>
|
||||
</a-sub-menu>
|
||||
</a-menu>
|
||||
</div>
|
||||
<router-view />
|
||||
<div :class="['finder', 'result', 'devPlugin', 'image', 'tools', 'worker', 'system'].includes(active[0]) ? 'container' : 'more'">
|
||||
<keep-alive>
|
||||
<router-view />
|
||||
</keep-alive>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref } from 'vue';
|
||||
import { computed } from 'vue';
|
||||
import { useRouter } from 'vue-router';
|
||||
import {
|
||||
HeartOutlined,
|
||||
AppstoreOutlined,
|
||||
StarOutlined,
|
||||
SendOutlined,
|
||||
SearchOutlined,
|
||||
FileImageOutlined,
|
||||
DatabaseOutlined,
|
||||
CodeOutlined,
|
||||
SettingOutlined,
|
||||
HeartOutlined,
|
||||
BugOutlined,
|
||||
} from '@ant-design/icons-vue';
|
||||
import { useStore } from 'vuex';
|
||||
import localConfig from '@/confOp';
|
||||
|
||||
const store = useStore();
|
||||
const router = useRouter();
|
||||
const active = ref(['market']);
|
||||
const active = computed(() => store.state.active);
|
||||
const { perf } = localConfig.getConfig();
|
||||
|
||||
const changeMenu = (key: any) => {
|
||||
store.commit('commonUpdate', {active: [key]})
|
||||
router.push(key);
|
||||
};
|
||||
|
||||
window.rubick.onPluginEnter(({ code }: { code: string }) => {
|
||||
changeMenu(code);
|
||||
active.value = [code];
|
||||
store.commit('commonUpdate', {active: [code]})
|
||||
});
|
||||
|
||||
const store = useStore();
|
||||
window.rubick.setSubInput((e: any) => {
|
||||
if (
|
||||
[
|
||||
'finder',
|
||||
'result',
|
||||
'devPlugin',
|
||||
'image',
|
||||
'tools',
|
||||
'worker',
|
||||
'system',
|
||||
].includes(active.value[0])
|
||||
) {
|
||||
if (e.text) {
|
||||
store.commit('setSearchValue', e.text);
|
||||
router.push('result');
|
||||
} else {
|
||||
store.commit('commonUpdate', {active: ['finder']})
|
||||
router.push('finder');
|
||||
}
|
||||
}
|
||||
}, '搜索插件');
|
||||
|
||||
const init = () => store.dispatch('init');
|
||||
init();
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.main-container {
|
||||
-webkit-app-region: no-drag;
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
background: var(--color-body-bg);
|
||||
flex-direction: column;
|
||||
|
||||
.slider-bar {
|
||||
width: 100%;
|
||||
.ant-menu {
|
||||
background: var(--color-body-bg);
|
||||
border-color: var(--color-border-light);
|
||||
:deep(.ant-menu-item) {
|
||||
&:not(.ant-menu-item-selected) {
|
||||
color: var(--color-text-primary);
|
||||
}
|
||||
<style lang="less">
|
||||
.ant-menu-submenu-popup {
|
||||
.ant-menu {
|
||||
background: var(--color-body-bg2) !important;
|
||||
height: 100%;
|
||||
border-right: none;
|
||||
.ant-menu-item, .ant-menu-submenu, .ant-menu-submenu-arrow {
|
||||
color: var(--color-text-content);
|
||||
&:active {
|
||||
background: none;
|
||||
}
|
||||
}
|
||||
.ant-menu-item-selected, .ant-menu-submenu-selected {
|
||||
background-color: var(--color-list-hover);
|
||||
color: var(--ant-primary-color);
|
||||
.ant-menu-submenu-arrow {
|
||||
color: var(--ant-primary-color);
|
||||
}
|
||||
&:after {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
<style lang="less" scoped>
|
||||
@import '~@/assets/common.less';
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
.main-container {
|
||||
-webkit-app-region: no-drag;
|
||||
display: flex;
|
||||
background: var(--color-body-bg);
|
||||
border-top: 1px solid var(--color-border-light);
|
||||
height: 100vh;
|
||||
box-sizing: border-box;
|
||||
align-items: flex-start;
|
||||
width: 100%;
|
||||
overflow: hidden;
|
||||
background: var(--color-menu-bg);
|
||||
.search {
|
||||
:deep(.ant-btn),
|
||||
:deep(.ant-input),
|
||||
:deep(.ant-input-group-addon) {
|
||||
color: var(--ant-primary-color) !important;
|
||||
background: var(--color-input-hover);
|
||||
border-color: var(--color-border-light);
|
||||
}
|
||||
}
|
||||
.container,
|
||||
.more {
|
||||
background: var(--color-body-bg);
|
||||
width: calc(~'100% - 183px');
|
||||
height: 100%;
|
||||
box-sizing: border-box;
|
||||
padding: 16px;
|
||||
position: relative;
|
||||
overflow: auto;
|
||||
}
|
||||
.more {
|
||||
background: var(--color-body-bg2);
|
||||
}
|
||||
.left-menu {
|
||||
padding: 24px 16px;
|
||||
position: relative;
|
||||
height: 100vh;
|
||||
:deep(.ant-menu-item) {
|
||||
padding-left: 12px !important;
|
||||
}
|
||||
:deep(.ant-menu-item-selected),
|
||||
:deep(.ant-menu-submenu-selected) {
|
||||
background-color: var(--color-list-hover);
|
||||
border-radius: 6px;
|
||||
color: var(--ant-primary-color);
|
||||
}
|
||||
:deep(.user-info) {
|
||||
position: absolute;
|
||||
bottom: 32px;
|
||||
}
|
||||
:deep(.ant-avatar) {
|
||||
background: transparent;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
@ -8,9 +8,10 @@
|
||||
--color-text-content: #141414;
|
||||
--color-text-desc: rgba(0, 0, 0, 0.45);
|
||||
// 背景色
|
||||
--color-body-bg2: #eee;
|
||||
--color-body-bg: #fff;
|
||||
--color-menu-bg: #f3efef;
|
||||
--color-list-hover: #e2e2e2;
|
||||
--color-menu-bg: rgba(248, 248, 248, 1);
|
||||
--color-list-hover: rgba(233, 233, 233, 1);
|
||||
--color-input-hover: #fff;
|
||||
// 边框
|
||||
--color-border-light: #f0f0f0;
|
||||
@ -22,9 +23,10 @@
|
||||
--color-text-desc: #8f8fa6;
|
||||
// 背景色
|
||||
--color-body-bg: #1c1c28;
|
||||
--color-body-bg2: #2c2f3b;
|
||||
--color-menu-bg: #1c1c28;
|
||||
--color-list-hover: #33333d;
|
||||
--color-input-hover: #33333d;
|
||||
--color-list-hover: #2c2f3b;
|
||||
--color-input-hover: #444d;
|
||||
// 边框
|
||||
--color-border-light: #33333d;
|
||||
--color-border-light: #444d;
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
.left-menu {
|
||||
width: 200px;
|
||||
width: 183px;
|
||||
// height: 100vh;
|
||||
border-right: 1px solid var(--color-border-light);
|
||||
.search-container {
|
||||
@ -20,15 +20,18 @@
|
||||
background: var(--color-menu-bg);
|
||||
height: 100%;
|
||||
border-right: none;
|
||||
.ant-menu-item {
|
||||
.ant-menu-item, .ant-menu-submenu, .ant-menu-submenu-arrow {
|
||||
color: var(--color-text-content);
|
||||
&:active {
|
||||
background: none;
|
||||
}
|
||||
}
|
||||
.ant-menu-item-selected {
|
||||
.ant-menu-item-selected, .ant-menu-submenu-selected {
|
||||
background-color: var(--color-list-hover);
|
||||
color: var(--color-text-primary);
|
||||
color: var(--ant-primary-color);
|
||||
.ant-menu-submenu-arrow {
|
||||
color: var(--ant-primary-color);
|
||||
}
|
||||
&:after {
|
||||
display: none;
|
||||
}
|
||||
|
35
feature/src/assets/constans.ts
Normal file
35
feature/src/assets/constans.ts
Normal file
@ -0,0 +1,35 @@
|
||||
export const SPRING = {
|
||||
theme: 'SPRING',
|
||||
primaryColor: '#ff4ea4',
|
||||
errorColor: '#ed6d46',
|
||||
warningColor: '#e5a84b',
|
||||
successColor: '#c0d695',
|
||||
infoColor: '#aa8eeB',
|
||||
};
|
||||
|
||||
export const SUMMER = {
|
||||
theme: 'SUMMER',
|
||||
primaryColor: '#6078ea',
|
||||
errorColor: '#ed6d46',
|
||||
warningColor: '#e5a84b',
|
||||
successColor: '#c0d695',
|
||||
infoColor: '#aa8eeB',
|
||||
};
|
||||
|
||||
export const AUTUMN = {
|
||||
theme: 'AUTUMN',
|
||||
primaryColor: '#f55555',
|
||||
errorColor: '#ed6d46',
|
||||
warningColor: '#e5a84b',
|
||||
successColor: '#c0d695',
|
||||
infoColor: '#aa8eeB',
|
||||
};
|
||||
|
||||
export const WINTER = {
|
||||
theme: 'WINTER',
|
||||
primaryColor: '#00b294',
|
||||
errorColor: '#e94829',
|
||||
warningColor: '#ed6d3d',
|
||||
successColor: '#c3d94e',
|
||||
infoColor: '#bfa782',
|
||||
};
|
BIN
feature/src/assets/error.png
Normal file
BIN
feature/src/assets/error.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 13 KiB |
1
feature/src/assets/lottie/404.json
Normal file
1
feature/src/assets/lottie/404.json
Normal file
File diff suppressed because one or more lines are too long
1
feature/src/assets/lottie/empty.json
Normal file
1
feature/src/assets/lottie/empty.json
Normal file
File diff suppressed because one or more lines are too long
@ -12,6 +12,7 @@ try {
|
||||
}
|
||||
|
||||
const instance = axios.create({
|
||||
timeout: 4000,
|
||||
baseURL:
|
||||
baseURL || 'https://gitcode.net/rubickcenter/rubick-database/-/raw/master',
|
||||
});
|
||||
@ -61,7 +62,7 @@ export default {
|
||||
},
|
||||
|
||||
async getPluginDetail(url: string) {
|
||||
const res = await axios.get(url);
|
||||
const res = await instance.get(url);
|
||||
return res.data;
|
||||
},
|
||||
|
||||
|
@ -12,8 +12,9 @@ export default {
|
||||
developTool: 'Develop Tools',
|
||||
systemTool: 'System Tools',
|
||||
finder: {
|
||||
must: 'Necessary',
|
||||
recommended: 'Recommended',
|
||||
lastUpdated: 'Last Updated',
|
||||
lastUpdated: 'Total',
|
||||
},
|
||||
install: 'Install',
|
||||
},
|
||||
@ -37,17 +38,17 @@ export default {
|
||||
tips1: 'rubick',
|
||||
tips2:
|
||||
'After the software preferences are set, please restart the software. Please go to the mini program set avatar and nickname.',
|
||||
themeColor: 'Theme Color',
|
||||
primaryColor: 'Primary Color',
|
||||
errorColor: 'Error Color',
|
||||
warningColor: 'Warning Color',
|
||||
successColor: 'Success Color',
|
||||
infoColor: 'Info Color',
|
||||
themeColor: 'Theme Setting',
|
||||
spring: 'Spring',
|
||||
summer: 'Summer',
|
||||
autumn: 'Autumn',
|
||||
winter: 'Winter',
|
||||
personalized: 'Personalized',
|
||||
greeting: 'Search Box Greeting',
|
||||
logo: 'Logo',
|
||||
logo: 'Avatar',
|
||||
replace: 'Repalce Logo',
|
||||
reset: 'Reset Default',
|
||||
name: 'User Name',
|
||||
},
|
||||
basic: {
|
||||
title: 'Basic',
|
||||
|
@ -12,8 +12,9 @@ export default {
|
||||
developTool: '开发者',
|
||||
systemTool: '系统',
|
||||
finder: {
|
||||
must: '必备',
|
||||
recommended: '推荐',
|
||||
lastUpdated: '最近更新',
|
||||
lastUpdated: '全部',
|
||||
},
|
||||
install: '安装',
|
||||
},
|
||||
@ -35,17 +36,17 @@ export default {
|
||||
accountInfo: '账户信息',
|
||||
tips1: 'rubick 用户',
|
||||
tips2: '软件偏好设置完成后需重启软件,头像和昵称请前往小程序设置',
|
||||
themeColor: '主题色设置',
|
||||
primaryColor: '主色调',
|
||||
errorColor: '错误色',
|
||||
warningColor: '警告色',
|
||||
successColor: '成功色',
|
||||
infoColor: '提醒色',
|
||||
personalized: '用户个性化设置',
|
||||
greeting: '主搜索框欢迎语',
|
||||
logo: '界面 logo',
|
||||
replace: '点我替换',
|
||||
themeColor: '主题设置',
|
||||
spring: '立春',
|
||||
summer: '立夏',
|
||||
autumn: '立秋',
|
||||
winter: '立冬',
|
||||
personalized: '用户设置',
|
||||
greeting: '搜索框欢迎语',
|
||||
logo: '头像',
|
||||
replace: '替换',
|
||||
reset: '恢复默认设置',
|
||||
name: '用户名',
|
||||
},
|
||||
basic: {
|
||||
title: '基本设置',
|
||||
|
@ -1,5 +1,28 @@
|
||||
import { createApp } from 'vue';
|
||||
import Antd, { ConfigProvider } from 'ant-design-vue';
|
||||
import Vue3Lottie from 'vue3-lottie';
|
||||
import {
|
||||
ConfigProvider,
|
||||
Button,
|
||||
Divider,
|
||||
Row,
|
||||
Col,
|
||||
Dropdown,
|
||||
Menu,
|
||||
Form,
|
||||
Input,
|
||||
Radio,
|
||||
Select,
|
||||
Switch,
|
||||
Avatar,
|
||||
Collapse,
|
||||
List,
|
||||
Tooltip,
|
||||
Alert,
|
||||
Drawer,
|
||||
Modal,
|
||||
Result,
|
||||
Spin,
|
||||
} from 'ant-design-vue';
|
||||
import App from './App.vue';
|
||||
import router from './router';
|
||||
import store from './store';
|
||||
@ -14,4 +37,36 @@ ConfigProvider.config({
|
||||
theme: config.perf.custom || {},
|
||||
});
|
||||
|
||||
createApp(App).use(registerI18n).use(store).use(Antd).use(router).mount('#app');
|
||||
window.rubick.changeTheme = () => {
|
||||
const config: any = localConfig.getConfig();
|
||||
ConfigProvider.config({
|
||||
theme: config.perf.custom || {},
|
||||
});
|
||||
};
|
||||
|
||||
createApp(App)
|
||||
.use(registerI18n)
|
||||
.use(store)
|
||||
.use(Button)
|
||||
.use(Divider)
|
||||
.use(Row)
|
||||
.use(Col)
|
||||
.use(Dropdown)
|
||||
.use(Menu)
|
||||
.use(Form)
|
||||
.use(Input)
|
||||
.use(Radio)
|
||||
.use(Select)
|
||||
.use(Switch)
|
||||
.use(Avatar)
|
||||
.use(Collapse)
|
||||
.use(List)
|
||||
.use(Tooltip)
|
||||
.use(Alert)
|
||||
.use(Drawer)
|
||||
.use(Modal)
|
||||
.use(Result)
|
||||
.use(Spin)
|
||||
.use(router)
|
||||
.use(Vue3Lottie)
|
||||
.mount('#app');
|
||||
|
@ -1,40 +1,65 @@
|
||||
import { createRouter, createWebHashHistory, RouteRecordRaw } from 'vue-router';
|
||||
import Market from '../views/market/index.vue';
|
||||
import Installed from '../views/installed/index.vue';
|
||||
import Account from '../views/account/index.vue';
|
||||
import Settings from '../views/settings/user.vue';
|
||||
import Dev from '../views/dev/index.vue';
|
||||
|
||||
const routes: Array<RouteRecordRaw> = [
|
||||
{
|
||||
path: '/market',
|
||||
name: 'market',
|
||||
component: Market,
|
||||
path: '/result',
|
||||
name: 'result',
|
||||
component: () => import('../views/market/components/result.vue'),
|
||||
},
|
||||
{
|
||||
path: '/devPlugin',
|
||||
name: 'devPlugin',
|
||||
component: () => import('../views/market/components/devlopment.vue'),
|
||||
},
|
||||
{
|
||||
path: '/image',
|
||||
name: 'image',
|
||||
component: () => import('../views/market/components/image.vue'),
|
||||
},
|
||||
{
|
||||
path: '/tools',
|
||||
name: 'tools',
|
||||
component: () => import('../views/market/components/tools.vue'),
|
||||
},
|
||||
{
|
||||
path: '/worker',
|
||||
name: 'worker',
|
||||
component: () => import('../views/market/components/worker.vue'),
|
||||
},
|
||||
{
|
||||
path: '/system',
|
||||
name: 'system',
|
||||
component: () => import('../views/market/components/system.vue'),
|
||||
},
|
||||
{
|
||||
path: '/finder',
|
||||
name: 'finder',
|
||||
component: () => import('../views/market/components/finder.vue'),
|
||||
},
|
||||
{
|
||||
path: '/installed',
|
||||
name: 'installed',
|
||||
component: Installed,
|
||||
component: () => import('../views/installed/index.vue'),
|
||||
},
|
||||
{
|
||||
path: '/account',
|
||||
name: 'account',
|
||||
component: Account,
|
||||
component: () => import('../views/account/index.vue'),
|
||||
},
|
||||
{
|
||||
path: '/settings',
|
||||
name: 'settings',
|
||||
component: Settings,
|
||||
component: () => import('../views/settings/user.vue'),
|
||||
},
|
||||
{
|
||||
path: '/dev',
|
||||
name: 'dev',
|
||||
component: Dev,
|
||||
component: () => import('../views/dev/index.vue'),
|
||||
},
|
||||
{
|
||||
path: '/:catchAll(.*)',
|
||||
name: 'market',
|
||||
component: Market,
|
||||
name: 'finder',
|
||||
component: () => import('../views/market/components/finder.vue'),
|
||||
},
|
||||
];
|
||||
|
||||
|
@ -17,6 +17,7 @@ export default createStore({
|
||||
totalPlugins: [],
|
||||
localPlugins: [],
|
||||
searchValue: '',
|
||||
active: ['finder'],
|
||||
},
|
||||
mutations: {
|
||||
commonUpdate(state: any, payload) {
|
||||
|
@ -1,30 +1,33 @@
|
||||
<template>
|
||||
<div class="dev">
|
||||
<a-alert
|
||||
style="margin-bottom: 40px"
|
||||
:message="$t('feature.dev.tips')"
|
||||
type="warning"
|
||||
/>
|
||||
<a-form
|
||||
ref="formRef"
|
||||
:model="formState"
|
||||
:rules="rules"
|
||||
:label-col="labelCol"
|
||||
:wrapper-col="wrapperCol"
|
||||
>
|
||||
<a-form-item :label="$t('feature.dev.pluginName')" name="name">
|
||||
<a-input v-model:value="formState.name" />
|
||||
</a-form-item>
|
||||
|
||||
<a-form-item :wrapper-col="{ span: 14, offset: 4 }">
|
||||
<a-button :loading="loading" type="primary" @click="onSubmit">
|
||||
{{ $t('feature.dev.install') }}
|
||||
</a-button>
|
||||
<a-button @click="refresh" style="margin-left: 10px">
|
||||
{{ $t('feature.dev.refreshPlugins') }}
|
||||
</a-button>
|
||||
</a-form-item>
|
||||
</a-form>
|
||||
<div class="view-title">{{ $t('feature.dev.title') }}</div>
|
||||
<div class="view-container">
|
||||
<a-alert
|
||||
style="margin-bottom: 40px"
|
||||
:message="$t('feature.dev.tips')"
|
||||
type="warning"
|
||||
/>
|
||||
<a-form
|
||||
ref="formRef"
|
||||
:model="formState"
|
||||
:rules="rules"
|
||||
:label-col="labelCol"
|
||||
:wrapper-col="wrapperCol"
|
||||
>
|
||||
<a-form-item :label="$t('feature.dev.pluginName')" name="name">
|
||||
<a-input v-model:value="formState.name" />
|
||||
</a-form-item>
|
||||
|
||||
<a-form-item :wrapper-col="{ span: 14, offset: 4 }">
|
||||
<a-button :loading="loading" type="primary" @click="onSubmit">
|
||||
{{ $t('feature.dev.install') }}
|
||||
</a-button>
|
||||
<a-button @click="refresh" style="margin-left: 10px">
|
||||
{{ $t('feature.dev.refreshPlugins') }}
|
||||
</a-button>
|
||||
</a-form-item>
|
||||
</a-form>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@ -81,9 +84,21 @@ const wrapperCol = { span: 14 };
|
||||
box-sizing: border-box;
|
||||
width: 100%;
|
||||
overflow-x: hidden;
|
||||
background: var(--color-body-bg);
|
||||
height: calc(~'100vh - 46px');
|
||||
padding: 20px;
|
||||
height: calc(~'100vh - 34px');
|
||||
.view-title {
|
||||
font-size: 16px;
|
||||
font-weight: 500;
|
||||
margin-bottom: 16px;
|
||||
color: var(--color-text-primary);
|
||||
}
|
||||
.view-container {
|
||||
padding: 10px;
|
||||
box-sizing: border-box;
|
||||
border-radius: 8px;
|
||||
background: var(--color-body-bg);
|
||||
overflow: auto;
|
||||
height: calc(~'100vh - 84px');
|
||||
}
|
||||
:deep(label) {
|
||||
color: var(--color-text-content);
|
||||
}
|
||||
|
@ -1,111 +1,106 @@
|
||||
<template>
|
||||
<div class="installed">
|
||||
<div v-if="!localPlugins.length">
|
||||
<a-result
|
||||
status="404"
|
||||
:title="$t('feature.installed.tips1')"
|
||||
:sub-title="$t('feature.installed.tips2')"
|
||||
/>
|
||||
</div>
|
||||
<div class="container" v-else>
|
||||
<div class="installed-list">
|
||||
<div
|
||||
:class="currentSelect[0] === index ? 'item active' : 'item'"
|
||||
:key="index"
|
||||
@click="currentSelect = [index]"
|
||||
v-for="(plugin, index) in localPlugins"
|
||||
<div class="view-title">{{ $t('feature.installed.title') }}</div>
|
||||
<div class="view-container">
|
||||
<div v-if="!localPlugins.length">
|
||||
<a-result
|
||||
class="error-content"
|
||||
sub-title="哎呀,暂时还没有安装任何插件!"
|
||||
>
|
||||
<img :src="plugin.logo" />
|
||||
<div class="info">
|
||||
<div class="title">
|
||||
{{ plugin.pluginName }}
|
||||
<span class="desc">v{{ plugin.version }}</span>
|
||||
</div>
|
||||
<div class="desc">{{ plugin.description }}</div>
|
||||
</div>
|
||||
</div>
|
||||
<template #icon>
|
||||
<Vue3Lottie :animationData="emptyJson" :height="240" :width="240" />
|
||||
</template>
|
||||
<template #extra>
|
||||
<a-button @click="gotoFinder" key="console" type="primary">去插件市场看看吧</a-button>
|
||||
</template>
|
||||
</a-result>
|
||||
</div>
|
||||
<div class="plugin-detail">
|
||||
<div class="plugin-top">
|
||||
<div class="left">
|
||||
<div class="title">
|
||||
{{ pluginDetail.pluginName }}
|
||||
<a-tag>{{ pluginDetail.version }}</a-tag>
|
||||
<div class="container" v-else>
|
||||
<div class="installed-list">
|
||||
<div
|
||||
:class="currentSelect[0] === plugin.name ? 'item active' : 'item'"
|
||||
:key="index"
|
||||
@click="currentSelect = [plugin.name]"
|
||||
v-for="(plugin, index) in localPlugins"
|
||||
>
|
||||
<img :src="plugin.logo" />
|
||||
<div class="info">
|
||||
<div class="title">
|
||||
{{ plugin.pluginName }}
|
||||
</div>
|
||||
<div class="desc">{{ plugin.description }}</div>
|
||||
</div>
|
||||
<div class="desc">
|
||||
{{ $t('feature.installed.developer') }}:{{
|
||||
`${pluginDetail.author || $t('feature.installed.unknown')}`
|
||||
}}
|
||||
</div>
|
||||
<div class="desc">
|
||||
{{ pluginDetail.description }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="right">
|
||||
<a-button
|
||||
type="danger"
|
||||
size="small"
|
||||
shape="round"
|
||||
:loading="pluginDetail.isloading"
|
||||
@click="deletePlugin(pluginDetail)"
|
||||
>
|
||||
{{ $t('feature.installed.remove') }}
|
||||
</a-button>
|
||||
</div>
|
||||
</div>
|
||||
<a-tabs default-active-key="1">
|
||||
<a-tab-pane key="1" :tab="$t('feature.installed.functionKey')">
|
||||
<div class="feature-container">
|
||||
<div
|
||||
class="desc-item"
|
||||
:key="index"
|
||||
v-for="(item, index) in pluginDetail.features"
|
||||
>
|
||||
<div>{{ item.explain }}</div>
|
||||
<a-tag
|
||||
:key="cmd"
|
||||
v-for="cmd in item.cmds"
|
||||
:class="{ executable: !cmd.label }"
|
||||
>
|
||||
<span
|
||||
@click="
|
||||
!cmd.label &&
|
||||
openPlugin({
|
||||
code: item.code,
|
||||
cmd,
|
||||
})
|
||||
"
|
||||
>
|
||||
{{ cmd.label || cmd }}
|
||||
</span>
|
||||
<template v-if="!cmd.label" #icon>
|
||||
<a-tooltip
|
||||
v-if="!hasAdded(cmd)"
|
||||
placement="topLeft"
|
||||
:title="$t('feature.installed.addToPanel')"
|
||||
>
|
||||
<PlusCircleOutlined
|
||||
@click="addCmdToSuperPanel({ code: item.code, cmd })"
|
||||
/>
|
||||
</a-tooltip>
|
||||
<a-tooltip
|
||||
v-else
|
||||
placement="topLeft"
|
||||
:title="$t('feature.installed.removeFromPanel')"
|
||||
>
|
||||
<MinusCircleOutlined
|
||||
@click="removePluginToSuperPanel({ cmd })"
|
||||
/>
|
||||
</a-tooltip>
|
||||
</template>
|
||||
</a-tag>
|
||||
<div class="plugin-detail">
|
||||
<div class="plugin-top">
|
||||
<div class="left">
|
||||
<div class="title">
|
||||
{{ pluginDetail.pluginName }}
|
||||
<a-tag>{{ pluginDetail.version }}</a-tag>
|
||||
</div>
|
||||
<div class="desc">
|
||||
{{ $t('feature.installed.developer') }}:{{
|
||||
`${pluginDetail.author || $t('feature.installed.unknown')}`
|
||||
}}
|
||||
</div>
|
||||
<div class="desc">
|
||||
{{ pluginDetail.description }}
|
||||
</div>
|
||||
</div>
|
||||
</a-tab-pane>
|
||||
<a-tab-pane key="2" :tab="$t('feature.installed.detailInfo')">
|
||||
<div class="detail-container" v-html="readme"></div>
|
||||
</a-tab-pane>
|
||||
</a-tabs>
|
||||
<div class="right">
|
||||
<a-button
|
||||
type="primary"
|
||||
size="small"
|
||||
shape="round"
|
||||
:loading="pluginDetail.isloading"
|
||||
@click="deletePlugin(pluginDetail)"
|
||||
>
|
||||
{{ $t('feature.installed.remove') }}
|
||||
</a-button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-container">
|
||||
<template
|
||||
:key="index"
|
||||
v-for="(item, index) in pluginDetail.features"
|
||||
>
|
||||
<div
|
||||
class="desc-item"
|
||||
v-if="item.cmds.filter(cmd => !cmd.label).length > 0"
|
||||
>
|
||||
<div>{{ item.explain }}</div>
|
||||
<template :key="cmd" v-for="cmd in item.cmds">
|
||||
<a-dropdown
|
||||
v-if="!cmd.label"
|
||||
:class="{ executable: !cmd.label }"
|
||||
>
|
||||
<template #overlay>
|
||||
<a-menu @click="({key}) => handleMenuClick(key, item, cmd)">
|
||||
<a-menu-item key="open">
|
||||
<CaretRightOutlined />
|
||||
运行
|
||||
</a-menu-item>
|
||||
<a-menu-item v-if="!hasAdded(cmd)" key="add">
|
||||
<PushpinOutlined />
|
||||
固定到超级面板
|
||||
</a-menu-item>
|
||||
<a-menu-item v-else key="remove">
|
||||
<PushpinFilled />
|
||||
从超级面板中取消固定
|
||||
</a-menu-item>
|
||||
</a-menu>
|
||||
</template>
|
||||
<a-button size="small" class="keyword-tag">
|
||||
{{ cmd.label || cmd }}
|
||||
<DownOutlined />
|
||||
</a-button>
|
||||
</a-dropdown>
|
||||
</template>
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -113,22 +108,31 @@
|
||||
|
||||
<script setup>
|
||||
import { useStore } from 'vuex';
|
||||
import { computed, ref, toRaw } from 'vue';
|
||||
import { computed, ref, toRaw, watch } from 'vue';
|
||||
import { useRoute, useRouter } from 'vue-router';
|
||||
import path from 'path';
|
||||
import MarkdownIt from 'markdown-it';
|
||||
import { PlusCircleOutlined, MinusCircleOutlined } from '@ant-design/icons-vue';
|
||||
import {
|
||||
PushpinOutlined,
|
||||
PushpinFilled,
|
||||
CaretRightOutlined,
|
||||
DownOutlined,
|
||||
} from '@ant-design/icons-vue';
|
||||
import { message } from 'ant-design-vue';
|
||||
|
||||
import emptyJson from '@/assets/lottie/empty.json';
|
||||
|
||||
const { ipcRenderer } = window.require('electron');
|
||||
|
||||
const remote = window.require('@electron/remote');
|
||||
const fs = window.require('fs');
|
||||
const md = new MarkdownIt();
|
||||
|
||||
const appPath = remote.app.getPath('userData');
|
||||
const baseDir = path.join(appPath, './rubick-plugins');
|
||||
|
||||
const store = useStore();
|
||||
const route = useRoute();
|
||||
const router = useRouter();
|
||||
|
||||
const localPlugins = computed(() =>
|
||||
store.state.localPlugins.filter(
|
||||
(plugin) => plugin.name !== 'rubick-system-feature'
|
||||
@ -138,10 +142,16 @@ const updateLocalPlugin = () => store.dispatch('updateLocalPlugin');
|
||||
const startUnDownload = (name) => store.dispatch('startUnDownload', name);
|
||||
const errorUnDownload = (name) => store.dispatch('errorUnDownload', name);
|
||||
|
||||
const currentSelect = ref([0]);
|
||||
const currentSelect = ref([route.query.plugin || localPlugins?.value[0]?.name]);
|
||||
|
||||
watch(localPlugins, () => {
|
||||
currentSelect.value = [localPlugins?.value[0]?.name];
|
||||
});
|
||||
|
||||
const pluginDetail = computed(() => {
|
||||
return localPlugins.value[currentSelect.value] || {};
|
||||
return (
|
||||
localPlugins.value.find((v) => v.name === currentSelect.value[0]) || {}
|
||||
);
|
||||
});
|
||||
|
||||
const superPanelPlugins = ref(
|
||||
@ -151,6 +161,19 @@ const superPanelPlugins = ref(
|
||||
}
|
||||
);
|
||||
|
||||
const handleMenuClick = (key, item, cmd) => {
|
||||
if(key === 'open') {
|
||||
openPlugin({
|
||||
code: item.code,
|
||||
cmd,
|
||||
});
|
||||
} else if (key === 'add') {
|
||||
addCmdToSuperPanel({cmd, code: item.code});
|
||||
} else {
|
||||
removePluginToSuperPanel({cmd, name: item.name})
|
||||
}
|
||||
};
|
||||
|
||||
const addCmdToSuperPanel = ({ cmd, code }) => {
|
||||
const plugin = {
|
||||
...toRaw(pluginDetail.value),
|
||||
@ -203,21 +226,6 @@ const openPlugin = ({ cmd, code }) => {
|
||||
);
|
||||
};
|
||||
|
||||
const readme = computed(() => {
|
||||
if (!pluginDetail.value.name) return '';
|
||||
const readmePath = path.resolve(
|
||||
baseDir,
|
||||
'node_modules',
|
||||
pluginDetail.value.name,
|
||||
'README.md'
|
||||
);
|
||||
if (fs.existsSync(readmePath)) {
|
||||
const str = fs.readFileSync(readmePath, 'utf-8');
|
||||
return md.render(str);
|
||||
}
|
||||
return '';
|
||||
});
|
||||
|
||||
const deletePlugin = async (plugin) => {
|
||||
startUnDownload(plugin.name);
|
||||
const timer = setTimeout(() => {
|
||||
@ -230,7 +238,10 @@ const deletePlugin = async (plugin) => {
|
||||
clearTimeout(timer);
|
||||
};
|
||||
|
||||
|
||||
const gotoFinder = () => {
|
||||
router.push('/finder');
|
||||
store.commit('commonUpdate', { active: ['finder'] });
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
@ -238,14 +249,29 @@ const deletePlugin = async (plugin) => {
|
||||
box-sizing: border-box;
|
||||
width: 100%;
|
||||
overflow: hidden;
|
||||
background: var(--color-body-bg);
|
||||
height: calc(~'100vh - 46px');
|
||||
height: calc(~'100vh - 34px');
|
||||
.view-title {
|
||||
font-size: 16px;
|
||||
font-weight: 500;
|
||||
margin-bottom: 16px;
|
||||
color: var(--color-text-primary);
|
||||
}
|
||||
.view-container {
|
||||
border-radius: 8px;
|
||||
background: var(--color-body-bg);
|
||||
overflow: auto;
|
||||
height: calc(~'100vh - 84px');
|
||||
}
|
||||
:deep(.ant-result-title) {
|
||||
color: var(--color-text-primary);
|
||||
}
|
||||
:deep(.ant-result-subtitle) {
|
||||
color: var(--color-text-desc);
|
||||
}
|
||||
.keyword-tag {
|
||||
font-size: 13px;
|
||||
margin: 4px;
|
||||
}
|
||||
|
||||
.container {
|
||||
box-sizing: border-box;
|
||||
@ -257,7 +283,7 @@ const deletePlugin = async (plugin) => {
|
||||
}
|
||||
|
||||
.installed-list {
|
||||
width: 40%;
|
||||
width: 38%;
|
||||
background: var(--color-body-bg);
|
||||
height: 100%;
|
||||
padding: 10px 0;
|
||||
@ -269,17 +295,29 @@ const deletePlugin = async (plugin) => {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
color: var(--color-text-content);
|
||||
border-bottom: 1px dashed var(--color-border-light);
|
||||
cursor: pointer;
|
||||
&:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
img {
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
margin-right: 20px;
|
||||
width: 34px;
|
||||
height: 34px;
|
||||
margin-right: 12px;
|
||||
}
|
||||
|
||||
.desc {
|
||||
font-size: 12px;
|
||||
color: var(--color-text-desc);
|
||||
display: -webkit-box;
|
||||
-webkit-box-orient: vertical;
|
||||
overflow: hidden;
|
||||
-webkit-line-clamp: 2;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
&.active {
|
||||
color: var(--ant-primary-color);
|
||||
background: var(--color-list-hover);
|
||||
}
|
||||
}
|
||||
@ -288,16 +326,18 @@ const deletePlugin = async (plugin) => {
|
||||
.plugin-detail {
|
||||
padding: 20px 20px 0 20px;
|
||||
box-sizing: border-box;
|
||||
width: 60%;
|
||||
width: 62%;
|
||||
height: 100%;
|
||||
background: var(--color-body-bg);
|
||||
.plugin-top {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
justify-content: space-between;
|
||||
|
||||
border-bottom: 1px solid #eee;
|
||||
padding-bottom: 12px;
|
||||
margin-bottom: 12px;
|
||||
.title {
|
||||
font-size: 20px;
|
||||
font-size: 16px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
color: var(--color-text-primary);
|
||||
@ -314,12 +354,6 @@ const deletePlugin = async (plugin) => {
|
||||
color: var(--color-text-desc);
|
||||
}
|
||||
}
|
||||
.ant-tabs {
|
||||
:deep(.ant-tabs-bar) {
|
||||
color: var(--color-text-content);
|
||||
border-bottom: 1px solid var(--color-border-light);
|
||||
}
|
||||
}
|
||||
|
||||
.detail-container,
|
||||
.feature-container {
|
||||
@ -332,7 +366,6 @@ const deletePlugin = async (plugin) => {
|
||||
}
|
||||
|
||||
.desc-item {
|
||||
border-bottom: 1px solid var(--color-border-light);
|
||||
padding: 10px 0;
|
||||
color: var(--color-text-content);
|
||||
.ant-tag {
|
||||
|
@ -42,7 +42,6 @@ const dev = computed(() => {
|
||||
<style lang="less">
|
||||
.system {
|
||||
width: 100%;
|
||||
height: 100vh;
|
||||
overflow-x: hidden;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
@ -1,20 +1,17 @@
|
||||
<template>
|
||||
<div class="finder">
|
||||
<a-carousel arrows>
|
||||
<template #prevArrow>
|
||||
<div class="custom-slick-arrow" style="left: 10px; z-index: 1">
|
||||
<left-circle-outlined />
|
||||
</div>
|
||||
</template>
|
||||
<template #nextArrow>
|
||||
<div class="custom-slick-arrow" style="right: 10px">
|
||||
<right-circle-outlined />
|
||||
</div>
|
||||
</template>
|
||||
<div :key="index" v-for="(banner, index) in data.banners || []">
|
||||
<img @click="jumpTo(banner.link)" width="100%" :src="banner.src" />
|
||||
</div>
|
||||
</a-carousel>
|
||||
<Carousel :itemsToShow="2" :transition="500">
|
||||
<Slide :key="index" v-for="(banner, index) in data.banners || []">
|
||||
<img class="carousel__item" @click="jumpTo(banner.link)" :src="banner.src" />
|
||||
</Slide>
|
||||
</Carousel>
|
||||
<a-divider />
|
||||
<PluginList
|
||||
v-if="must && !!must.length"
|
||||
@downloadSuccess="downloadSuccess"
|
||||
:title="$t('feature.market.finder.must')"
|
||||
:list="must"
|
||||
/>
|
||||
<PluginList
|
||||
v-if="recommend && !!recommend.length"
|
||||
@downloadSuccess="downloadSuccess"
|
||||
@ -30,8 +27,9 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { LeftCircleOutlined, RightCircleOutlined } from '@ant-design/icons-vue';
|
||||
import { ref, computed, onBeforeMount } from 'vue';
|
||||
import 'vue3-carousel/dist/carousel.css';
|
||||
import { Carousel, Slide } from 'vue3-carousel';
|
||||
import request from '../../../assets/request/index';
|
||||
import PluginList from './plugin-list.vue';
|
||||
|
||||
@ -45,6 +43,24 @@ onBeforeMount(async () => {
|
||||
data.value = await request.getFinderDetail();
|
||||
});
|
||||
|
||||
const must = computed(() => {
|
||||
const defaultData = data.value.must || [];
|
||||
if (!defaultData.length) return [];
|
||||
return defaultData.map((plugin) => {
|
||||
let searchInfo = null;
|
||||
totalPlugins.value.forEach((t) => {
|
||||
if (t.name === plugin) {
|
||||
searchInfo = t;
|
||||
}
|
||||
});
|
||||
return searchInfo;
|
||||
});
|
||||
});
|
||||
|
||||
const jumpTo = (url) => {
|
||||
window.rubick.shellOpenExternal(url);
|
||||
};
|
||||
|
||||
const recommend = computed(() => {
|
||||
const defaultData = data.value.recommend || [];
|
||||
if (!defaultData.length) return [];
|
||||
@ -76,47 +92,46 @@ const newList = computed(() => {
|
||||
|
||||
<style lang="less">
|
||||
.finder {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
overflow-x: hidden;
|
||||
box-sizing: border-box;
|
||||
&::-webkit-scrollbar {
|
||||
width: 0;
|
||||
}
|
||||
.ant-carousel .slick-slide {
|
||||
text-align: center;
|
||||
height: 235px;
|
||||
line-height: 160px;
|
||||
overflow: hidden;
|
||||
border-radius: 4px;
|
||||
img {
|
||||
width: 100%;
|
||||
height: 235px;
|
||||
}
|
||||
}
|
||||
.ant-carousel .custom-slick-arrow {
|
||||
width: 25px;
|
||||
height: 25px;
|
||||
font-size: 25px;
|
||||
color: #fff;
|
||||
background-color: rgba(31, 45, 61, 0.11);
|
||||
opacity: 0.3;
|
||||
}
|
||||
|
||||
.ant-carousel .custom-slick-arrow.slick-next:focus {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.ant-carousel .custom-slick-arrow:before {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.ant-carousel .custom-slick-arrow:hover {
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
.ant-carousel .slick-slide h3 {
|
||||
color: #fff;
|
||||
.ant-divider-horizontal {
|
||||
margin: 17px 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.carousel__item {
|
||||
cursor: pointer;
|
||||
min-height: 180px;
|
||||
width: 100%;
|
||||
background-color: var(--vc-clr-primary);
|
||||
color: var(--vc-clr-white);
|
||||
font-size: 20px;
|
||||
border-radius: 8px;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.carousel__track {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.carousel__slide {
|
||||
padding-right: 6px;
|
||||
&:last-child {
|
||||
padding-left: 6px;
|
||||
}
|
||||
}
|
||||
|
||||
.carousel__prev,
|
||||
.carousel__next {
|
||||
box-sizing: content-box;
|
||||
border: 5px solid white;
|
||||
}
|
||||
</style>
|
||||
|
@ -42,7 +42,6 @@ const system = computed(() => {
|
||||
<style lang="less">
|
||||
.system {
|
||||
width: 100%;
|
||||
height: 100vh;
|
||||
overflow-x: hidden;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
@ -15,10 +15,15 @@
|
||||
:loading="item.isloading"
|
||||
>
|
||||
<CloudDownloadOutlined
|
||||
v-show="!item.isloading && !item.isdownload"
|
||||
v-if="!item.isloading && !item.isdownload"
|
||||
@click.stop="downloadPlugin(item, index)"
|
||||
style="font-size: 20px; cursor: pointer"
|
||||
/>
|
||||
<SelectOutlined
|
||||
v-else
|
||||
@click.stop="openPlugin(item)"
|
||||
style="font-size: 18px; cursor: pointer"
|
||||
/>
|
||||
</a-button>
|
||||
</template>
|
||||
<a-list-item-meta>
|
||||
@ -36,68 +41,82 @@
|
||||
</template>
|
||||
</a-list>
|
||||
</div>
|
||||
</div>
|
||||
<a-drawer
|
||||
width="100%"
|
||||
placement="right"
|
||||
:closable="false"
|
||||
:visible="visible"
|
||||
:get-container="false"
|
||||
class="plugin-info"
|
||||
:style="{ position: 'absolute' }"
|
||||
@close="visible = false"
|
||||
>
|
||||
<template #title>
|
||||
<div class="plugin-title-info">
|
||||
<div class="back-icon" @click="visible = false">
|
||||
<ArrowLeftOutlined />
|
||||
</div>
|
||||
<div class="info">
|
||||
<img :src="detail.logo" class="plugin-icon" />
|
||||
<div class="plugin-desc">
|
||||
<div class="title">
|
||||
{{ detail.pluginName }}
|
||||
<a-drawer
|
||||
width="77%"
|
||||
v-if="visible"
|
||||
placement="right"
|
||||
:closable="false"
|
||||
:visible="visible"
|
||||
class="plugin-info"
|
||||
:style="{ position: 'absolute' }"
|
||||
@close="visible = false"
|
||||
>
|
||||
<template #title>
|
||||
<div class="plugin-title-info">
|
||||
<div class="info">
|
||||
<img :src="detail.logo" class="plugin-icon" />
|
||||
<div class="plugin-desc">
|
||||
<div>
|
||||
<div class="title">
|
||||
{{ detail.pluginName }}
|
||||
</div>
|
||||
<div class="desc">
|
||||
{{ detail.description }}
|
||||
</div>
|
||||
</div>
|
||||
<a-button
|
||||
v-if="!detail.isdownload"
|
||||
@click.stop="downloadPlugin(detail)"
|
||||
shape="round"
|
||||
type="primary"
|
||||
:loading="detail.isloading"
|
||||
>
|
||||
<template #icon>
|
||||
<CloudDownloadOutlined
|
||||
v-show="!detail.isloading && !detail.isdownload"
|
||||
/>
|
||||
</template>
|
||||
{{ $t('feature.market.install') }}
|
||||
</a-button>
|
||||
</div>
|
||||
<div class="desc">
|
||||
{{ detail.description }}
|
||||
</div>
|
||||
<a-button
|
||||
v-if="!detail.isdownload"
|
||||
@click.stop="downloadPlugin(detail)"
|
||||
shape="round"
|
||||
type="primary"
|
||||
:loading="detail.isloading"
|
||||
>
|
||||
<template #icon>
|
||||
<CloudDownloadOutlined
|
||||
v-show="!detail.isloading && !detail.isdownload"
|
||||
/>
|
||||
</template>
|
||||
{{ $t('feature.market.install') }}
|
||||
</a-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<div v-html="content" class="home-page-container"></div>
|
||||
</a-drawer>
|
||||
</template>
|
||||
<a-spin :spinning="!content" tip="内容加载中...">
|
||||
<div v-if="content !== 'error'" v-html="content" class="home-page-container"></div>
|
||||
<a-result
|
||||
class="error-content"
|
||||
v-else
|
||||
sub-title="插件主页内容走丢啦!"
|
||||
>
|
||||
<template #icon>
|
||||
<Vue3Lottie :animationData="notFountJson" :height="240" :width="240" />
|
||||
</template>
|
||||
</a-result>
|
||||
</a-spin>
|
||||
</a-drawer>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import {
|
||||
CloudDownloadOutlined,
|
||||
ArrowLeftOutlined,
|
||||
SelectOutlined
|
||||
} from '@ant-design/icons-vue';
|
||||
|
||||
import { defineProps, ref } from 'vue';
|
||||
import { useStore } from 'vuex';
|
||||
import { message } from 'ant-design-vue';
|
||||
import MarkdownIt from 'markdown-it';
|
||||
import request from '../../../assets/request/index';
|
||||
import { useRouter } from 'vue-router';
|
||||
import request from '@/assets/request/index';
|
||||
import notFountJson from '@/assets/lottie/404.json';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
const { t } = useI18n();
|
||||
|
||||
const store = useStore();
|
||||
const router = useRouter();
|
||||
|
||||
const startDownload = (name) => store.dispatch('startDownload', name);
|
||||
const successDownload = (name) => store.dispatch('successDownload', name);
|
||||
@ -113,7 +132,7 @@ defineProps({
|
||||
const downloadPlugin = async (plugin) => {
|
||||
startDownload(plugin.name);
|
||||
await window.market.downloadPlugin(plugin);
|
||||
message.success(t('feature.dev.installSuccess', { pluginName: plugin.name }));
|
||||
message.success(t('feature.dev.installSuccess', { pluginName: plugin.pluginName }));
|
||||
successDownload(plugin.name);
|
||||
};
|
||||
|
||||
@ -125,11 +144,24 @@ const content = ref('');
|
||||
const showDetail = async (item) => {
|
||||
visible.value = true;
|
||||
detail.value = item;
|
||||
content.value = '';
|
||||
let mdContent = '暂无内容';
|
||||
if (item.homePage) {
|
||||
mdContent = await request.getPluginDetail(item.homePage);
|
||||
try {
|
||||
if (item.homePage) {
|
||||
mdContent = await request.getPluginDetail(item.homePage);
|
||||
}
|
||||
content.value = markdown.render(mdContent);
|
||||
} catch (e) {
|
||||
content.value = 'error';
|
||||
}
|
||||
content.value = markdown.render(mdContent);
|
||||
};
|
||||
|
||||
const openPlugin = (item) => {
|
||||
store.commit('commonUpdate', {active: ['installed']})
|
||||
router.push({
|
||||
path: '/installed',
|
||||
query: {plugin: item.name}
|
||||
});
|
||||
};
|
||||
</script>
|
||||
|
||||
@ -138,7 +170,7 @@ const showDetail = async (item) => {
|
||||
width: 0;
|
||||
}
|
||||
.panel-item {
|
||||
margin: 20px 0;
|
||||
margin-bottom: 17px;
|
||||
.download-plugin-btn {
|
||||
color: var(--ant-primary-color);
|
||||
}
|
||||
@ -170,7 +202,9 @@ const showDetail = async (item) => {
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
border-bottom: none;
|
||||
&:after {
|
||||
border-bottom: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
.plugin-info {
|
||||
@ -199,23 +233,23 @@ const showDetail = async (item) => {
|
||||
.plugin-title-info {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
|
||||
.back-icon {
|
||||
font-size: 16px;
|
||||
margin-right: 40px;
|
||||
}
|
||||
|
||||
width: 100%;
|
||||
.info {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
align-items: flex-start;
|
||||
|
||||
.plugin-icon {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
margin-right: 20px;
|
||||
}
|
||||
|
||||
.plugin-desc {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
.title {
|
||||
font-size: 18px;
|
||||
font-weight: bold;
|
||||
@ -225,14 +259,18 @@ const showDetail = async (item) => {
|
||||
.desc {
|
||||
font-size: 12px;
|
||||
font-weight: normal;
|
||||
margin-top: 5px;
|
||||
margin-bottom: 20px;
|
||||
color: var(--color-text-desc);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.error-content {
|
||||
&.ant-result {
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
.home-page-container {
|
||||
min-height: 200px;
|
||||
* {
|
||||
color: var(--color-text-content);
|
||||
}
|
||||
|
@ -6,11 +6,21 @@
|
||||
:title="$t('feature.market.searchResult')"
|
||||
:list="result"
|
||||
/>
|
||||
<a-result
|
||||
class="error-content"
|
||||
v-else
|
||||
sub-title="哎呀,暂时还没有这个插件哟!"
|
||||
>
|
||||
<template #icon>
|
||||
<Vue3Lottie :animationData="emptyJson" :height="240" :width="240" />
|
||||
</template>
|
||||
</a-result>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { computed } from 'vue';
|
||||
import emptyJson from '@/assets/lottie/empty.json';
|
||||
import PluginList from './plugin-list.vue';
|
||||
|
||||
import { useStore } from 'vuex';
|
||||
@ -38,8 +48,10 @@ const result = computed(() => {
|
||||
<style lang="less">
|
||||
.result {
|
||||
width: 100%;
|
||||
height: 100vh;
|
||||
overflow-x: hidden;
|
||||
box-sizing: border-box;
|
||||
.error-content {
|
||||
padding-top: 40px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
@ -42,7 +42,6 @@ const system = computed(() => {
|
||||
<style lang="less">
|
||||
.system {
|
||||
width: 100%;
|
||||
height: 100vh;
|
||||
overflow-x: hidden;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
@ -42,7 +42,6 @@ const tools = computed(() => {
|
||||
<style lang="less">
|
||||
.worker {
|
||||
width: 100%;
|
||||
height: 100vh;
|
||||
overflow-x: hidden;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
@ -42,7 +42,6 @@ const system = computed(() => {
|
||||
<style lang="less">
|
||||
.worker {
|
||||
width: 100%;
|
||||
height: 100vh;
|
||||
overflow-x: hidden;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
@ -1,133 +0,0 @@
|
||||
<template>
|
||||
<div class="market">
|
||||
<div class="left-menu">
|
||||
<div class="search-container">
|
||||
<a-input-search
|
||||
v-model:value="searchValue"
|
||||
:placeholder="$t('feature.market.search')"
|
||||
style="width: 100%"
|
||||
class="search"
|
||||
@search="onSearch"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<a-menu v-model:selectedKeys="current" mode="inline">
|
||||
<a-menu-item key="finder">
|
||||
<template #icon>
|
||||
<StarOutlined />
|
||||
</template>
|
||||
{{ $t('feature.market.explore') }}
|
||||
</a-menu-item>
|
||||
<a-menu-item key="worker">
|
||||
<template #icon>
|
||||
<SendOutlined style="transform: rotate(-45deg)" />
|
||||
</template>
|
||||
{{ $t('feature.market.efficiency') }}
|
||||
</a-menu-item>
|
||||
<a-menu-item key="tools">
|
||||
<template #icon>
|
||||
<SearchOutlined />
|
||||
</template>
|
||||
{{ $t('feature.market.searchTool') }}
|
||||
</a-menu-item>
|
||||
<a-menu-item key="image">
|
||||
<template #icon>
|
||||
<FileImageOutlined />
|
||||
</template>
|
||||
{{ $t('feature.market.imageTool') }}
|
||||
</a-menu-item>
|
||||
<a-menu-item key="dev">
|
||||
<template #icon>
|
||||
<CodeOutlined />
|
||||
</template>
|
||||
{{ $t('feature.market.developTool') }}
|
||||
</a-menu-item>
|
||||
<a-menu-item key="system">
|
||||
<template #icon>
|
||||
<DatabaseOutlined />
|
||||
</template>
|
||||
{{ $t('feature.market.systemTool') }}
|
||||
</a-menu-item>
|
||||
</a-menu>
|
||||
</div>
|
||||
<div class="container">
|
||||
<component :totalPlugins="totalPlugins" :is="Components[current[0]]" />
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import {
|
||||
StarOutlined,
|
||||
SendOutlined,
|
||||
SearchOutlined,
|
||||
FileImageOutlined,
|
||||
DatabaseOutlined,
|
||||
CodeOutlined,
|
||||
} from '@ant-design/icons-vue';
|
||||
import { reactive, toRefs, computed } from 'vue';
|
||||
import { useStore } from 'vuex';
|
||||
import Finder from './components/finder.vue';
|
||||
import System from './components/system.vue';
|
||||
import Worker from './components/worker.vue';
|
||||
import Tools from './components/tools.vue';
|
||||
import Dev from './components/devlopment.vue';
|
||||
import Image from './components/image.vue';
|
||||
import Result from './components/result.vue';
|
||||
|
||||
const Components = {
|
||||
finder: Finder,
|
||||
system: System,
|
||||
worker: Worker,
|
||||
image: Image,
|
||||
tools: Tools,
|
||||
dev: Dev,
|
||||
result: Result,
|
||||
};
|
||||
|
||||
const state = reactive({
|
||||
searchValue: '',
|
||||
current: ['finder'],
|
||||
});
|
||||
|
||||
const store = useStore();
|
||||
|
||||
const totalPlugins = computed(() => store.state.totalPlugins);
|
||||
|
||||
const { searchValue, current } = toRefs(state);
|
||||
|
||||
const onSearch = (searchValue: string) => {
|
||||
state.current = ['result'];
|
||||
store.commit('setSearchValue', searchValue);
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
@import '~@/assets/common.less';
|
||||
.market {
|
||||
display: flex;
|
||||
box-sizing: border-box;
|
||||
align-items: flex-start;
|
||||
width: 100%;
|
||||
overflow: hidden;
|
||||
background: var(--color-menu-bg);
|
||||
height: calc(~'100vh - 46px');
|
||||
.search {
|
||||
:deep(.ant-btn),
|
||||
:deep(.ant-input),
|
||||
:deep(.ant-input-group-addon) {
|
||||
color: var(--ant-primary-color) !important;
|
||||
background: var(--color-input-hover);
|
||||
border-color: var(--color-border-light);
|
||||
}
|
||||
}
|
||||
.container {
|
||||
background: var(--color-body-bg);
|
||||
width: calc(~'100% - 200px');
|
||||
height: 100%;
|
||||
box-sizing: border-box;
|
||||
padding: 10px 20px;
|
||||
position: relative;
|
||||
}
|
||||
}
|
||||
</style>
|
@ -1,239 +1,221 @@
|
||||
<template>
|
||||
<div class="settings">
|
||||
<div class="left-menu">
|
||||
<a-menu v-model:selectedKeys="currentSelect" mode="inline">
|
||||
<div class="view-title"> {{ $t('feature.settings.title') }}</div>
|
||||
<div class="view-container">
|
||||
<a-menu v-model:selectedKeys="currentSelect" mode="horizontal">
|
||||
<a-menu-item key="userInfo">
|
||||
<template #icon>
|
||||
<UserOutlined />
|
||||
</template>
|
||||
{{ $t('feature.settings.account.accountInfo') }}
|
||||
</a-menu-item>
|
||||
<a-menu-item key="normal">
|
||||
<template #icon>
|
||||
<ToolOutlined />
|
||||
</template>
|
||||
{{ $t('feature.settings.basic.title') }}
|
||||
</a-menu-item>
|
||||
<a-menu-item key="localstart">
|
||||
<template #icon>
|
||||
<FolderOpenOutlined />
|
||||
</template>
|
||||
{{ $t('feature.settings.localstart.title') }}
|
||||
</a-menu-item>
|
||||
<a-menu-item key="global">
|
||||
<template #icon>
|
||||
<LaptopOutlined />
|
||||
</template>
|
||||
{{ $t('feature.settings.global.title') }}
|
||||
</a-menu-item>
|
||||
<!-- <a-menu-item key="superpanel">-->
|
||||
<!-- <template #icon>-->
|
||||
<!-- <FileAddOutlined />-->
|
||||
<!-- </template>-->
|
||||
<!-- {{ $t('feature.settings.superPanel.title') }}-->
|
||||
<!-- </a-menu-item>-->
|
||||
<!-- <a-menu-item key="superpanel">-->
|
||||
<!-- <template #icon>-->
|
||||
<!-- <FileAddOutlined />-->
|
||||
<!-- </template>-->
|
||||
<!-- {{ $t('feature.settings.superPanel.title') }}-->
|
||||
<!-- </a-menu-item>-->
|
||||
<a-menu-item key="database">
|
||||
<template #icon>
|
||||
<DatabaseOutlined />
|
||||
</template>
|
||||
{{ $t('feature.settings.database.title') }}
|
||||
</a-menu-item>
|
||||
<a-menu-item key="localhost">
|
||||
<template #icon>
|
||||
<SafetyOutlined />
|
||||
</template>
|
||||
{{ $t('feature.settings.intranet.title') }}
|
||||
</a-menu-item>
|
||||
</a-menu>
|
||||
</div>
|
||||
<div class="settings-detail">
|
||||
<UserInfo v-if="currentSelect[0] === 'userInfo'" />
|
||||
<div v-if="currentSelect[0] === 'normal'">
|
||||
<div class="setting-item">
|
||||
<div class="title">
|
||||
{{ $t('feature.settings.basic.shortcutKey') }}
|
||||
</div>
|
||||
<div class="settings-item-li">
|
||||
<div class="label">
|
||||
{{ $t('feature.settings.basic.showOrHiddle') }}
|
||||
<div class="settings-detail">
|
||||
<UserInfo v-if="currentSelect[0] === 'userInfo'" />
|
||||
<div v-if="currentSelect[0] === 'normal'">
|
||||
<div class="setting-item">
|
||||
<div class="title">
|
||||
{{ $t('feature.settings.basic.shortcutKey') }}
|
||||
</div>
|
||||
<a-tooltip placement="top" trigger="click">
|
||||
<template #title>
|
||||
<span>{{ tipText }}</span>
|
||||
<template v-if="isWindows">
|
||||
<br />
|
||||
<span
|
||||
style="cursor: pointer; text-decoration: underline"
|
||||
@click="resetDefault('Alt')"
|
||||
>
|
||||
<div class="settings-item-li">
|
||||
<div class="label">
|
||||
{{ $t('feature.settings.basic.showOrHiddle') }}
|
||||
</div>
|
||||
<a-tooltip placement="top" trigger="click">
|
||||
<template #title>
|
||||
<span>{{ tipText }}</span>
|
||||
<template v-if="isWindows">
|
||||
<br />
|
||||
<span
|
||||
style="cursor: pointer; text-decoration: underline"
|
||||
@click="resetDefault('Alt')"
|
||||
>
|
||||
Alt+Space
|
||||
</span>
|
||||
<span
|
||||
style="
|
||||
<span
|
||||
style="
|
||||
cursor: pointer;
|
||||
margin-left: 8px;
|
||||
text-decoration: underline;
|
||||
"
|
||||
@click="resetDefault('Ctrl')"
|
||||
>
|
||||
@click="resetDefault('Ctrl')"
|
||||
>
|
||||
Ctrl+Space
|
||||
</span>
|
||||
</template>
|
||||
</template>
|
||||
</template>
|
||||
<div
|
||||
class="value"
|
||||
tabIndex="-1"
|
||||
@keyup="(e) => changeShortCut(e, 'showAndHidden')"
|
||||
>
|
||||
{{ shortCut.showAndHidden }}
|
||||
<div
|
||||
class="value"
|
||||
tabIndex="-1"
|
||||
@keyup="(e) => changeShortCut(e, 'showAndHidden')"
|
||||
>
|
||||
{{ shortCut.showAndHidden }}
|
||||
</div>
|
||||
</a-tooltip>
|
||||
</div>
|
||||
<div class="settings-item-li">
|
||||
<div class="label">
|
||||
{{ $t('feature.settings.basic.screenCapture') }}
|
||||
</div>
|
||||
</a-tooltip>
|
||||
</div>
|
||||
<div class="settings-item-li">
|
||||
<div class="label">
|
||||
{{ $t('feature.settings.basic.screenCapture') }}
|
||||
</div>
|
||||
<a-tooltip placement="top" trigger="click">
|
||||
<template #title>
|
||||
<span>{{ tipText }}</span>
|
||||
</template>
|
||||
<div
|
||||
class="value"
|
||||
tabIndex="-1"
|
||||
@keyup="(e) => changeShortCut(e, 'capture')"
|
||||
>
|
||||
{{ shortCut.capture }}
|
||||
</div>
|
||||
</a-tooltip>
|
||||
</div>
|
||||
</div>
|
||||
<div class="setting-item">
|
||||
<div class="title">{{ $t('feature.settings.basic.common') }}</div>
|
||||
<div class="settings-item-li">
|
||||
<div class="label">
|
||||
{{ $t('feature.settings.basic.autoPaste') }}
|
||||
</div>
|
||||
<a-switch
|
||||
v-model:checked="common.autoPast"
|
||||
:checked-children="$t('feature.settings.basic.on')"
|
||||
:un-checked-children="$t('feature.settings.basic.off')"
|
||||
></a-switch>
|
||||
</div>
|
||||
<div class="settings-item-li">
|
||||
<div class="label">{{ $t('feature.settings.basic.autoBoot') }}</div>
|
||||
<a-switch
|
||||
v-model:checked="common.start"
|
||||
:checked-children="$t('feature.settings.basic.on')"
|
||||
:un-checked-children="$t('feature.settings.basic.off')"
|
||||
></a-switch>
|
||||
</div>
|
||||
<div class="settings-item-li">
|
||||
<div class="label">
|
||||
{{ $t('feature.settings.basic.spaceExec') }}
|
||||
</div>
|
||||
<a-switch
|
||||
v-model:checked="common.space"
|
||||
:checked-children="$t('feature.settings.basic.on')"
|
||||
:un-checked-children="$t('feature.settings.basic.off')"
|
||||
></a-switch>
|
||||
</div>
|
||||
</div>
|
||||
<div class="setting-item">
|
||||
<div class="title">{{ $t('feature.settings.basic.theme') }}</div>
|
||||
<div class="settings-item-li">
|
||||
<div class="label">{{ $t('feature.settings.basic.darkMode') }}</div>
|
||||
<a-switch
|
||||
v-model:checked="common.darkMode"
|
||||
:checked-children="$t('feature.settings.basic.on')"
|
||||
:un-checked-children="$t('feature.settings.basic.off')"
|
||||
></a-switch>
|
||||
</div>
|
||||
</div>
|
||||
<div class="setting-item">
|
||||
<div class="title">{{ $t('feature.settings.basic.language') }}</div>
|
||||
<div class="settings-item-li">
|
||||
<div class="label">
|
||||
{{ $t('feature.settings.basic.changeLang') }}
|
||||
</div>
|
||||
<a-select
|
||||
v-model:value="state.common.lang"
|
||||
label-in-value
|
||||
style="width: 240px"
|
||||
:options="options"
|
||||
@change="changeLanguage"
|
||||
></a-select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="currentSelect[0] === 'global'">
|
||||
<a-collapse>
|
||||
<a-collapse-panel
|
||||
key="1"
|
||||
:header="$t('feature.settings.global.instructions')"
|
||||
>
|
||||
<div>
|
||||
{{ $t('feature.settings.global.tips') }}
|
||||
</div>
|
||||
<h3 style="margin-top: 10px">
|
||||
{{ $t('feature.settings.global.example') }}
|
||||
</h3>
|
||||
<a-divider style="margin: 5px 0" />
|
||||
<a-list item-layout="horizontal" :data-source="examples">
|
||||
<template #renderItem="{ item }">
|
||||
<a-list-item>
|
||||
<a-list-item-meta :description="item.desc">
|
||||
<template #title>
|
||||
<div>{{ item.title }}</div>
|
||||
</template>
|
||||
</a-list-item-meta>
|
||||
</a-list-item>
|
||||
</template>
|
||||
</a-list>
|
||||
</a-collapse-panel>
|
||||
</a-collapse>
|
||||
<div class="feature-container">
|
||||
<div class="keywords item">
|
||||
<div>{{ $t('feature.settings.global.shortcutKey') }}</div>
|
||||
<template :key="index" v-for="(item, index) in global">
|
||||
<a-tooltip placement="top" trigger="click">
|
||||
<template #title>
|
||||
<span>{{ tipText }}</span>
|
||||
</template>
|
||||
<div
|
||||
class="value"
|
||||
tabIndex="2"
|
||||
@keyup="(e) => changeGlobalKey(e, index)"
|
||||
tabIndex="-1"
|
||||
@keyup="(e) => changeShortCut(e, 'capture')"
|
||||
>
|
||||
{{ item.key }}
|
||||
<MinusCircleOutlined
|
||||
@click.stop="deleteGlobalKey(e, index)"
|
||||
/>
|
||||
{{ shortCut.capture }}
|
||||
</div>
|
||||
</a-tooltip>
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
<div class="short-cut item">
|
||||
<div>{{ $t('feature.settings.global.funtionKey') }}</div>
|
||||
<template v-for="(item, index) in global" :key="index">
|
||||
<a-input
|
||||
:value="item.value"
|
||||
class="value"
|
||||
allowClear
|
||||
:disabled="!item.key"
|
||||
@change="(e) => changeGlobalValue(index, e.target.value)"
|
||||
/>
|
||||
</template>
|
||||
<div class="setting-item">
|
||||
<div class="title">{{ $t('feature.settings.basic.common') }}</div>
|
||||
<div class="settings-item-li">
|
||||
<div class="label">
|
||||
{{ $t('feature.settings.basic.autoPaste') }}
|
||||
</div>
|
||||
<a-switch
|
||||
v-model:checked="common.autoPast"
|
||||
:checked-children="$t('feature.settings.basic.on')"
|
||||
:un-checked-children="$t('feature.settings.basic.off')"
|
||||
></a-switch>
|
||||
</div>
|
||||
<div class="settings-item-li">
|
||||
<div class="label">{{ $t('feature.settings.basic.autoBoot') }}</div>
|
||||
<a-switch
|
||||
v-model:checked="common.start"
|
||||
:checked-children="$t('feature.settings.basic.on')"
|
||||
:un-checked-children="$t('feature.settings.basic.off')"
|
||||
></a-switch>
|
||||
</div>
|
||||
<div class="settings-item-li">
|
||||
<div class="label">
|
||||
{{ $t('feature.settings.basic.spaceExec') }}
|
||||
</div>
|
||||
<a-switch
|
||||
v-model:checked="common.space"
|
||||
:checked-children="$t('feature.settings.basic.on')"
|
||||
:un-checked-children="$t('feature.settings.basic.off')"
|
||||
></a-switch>
|
||||
</div>
|
||||
</div>
|
||||
<div class="setting-item">
|
||||
<div class="title">{{ $t('feature.settings.basic.theme') }}</div>
|
||||
<div class="settings-item-li">
|
||||
<div class="label">{{ $t('feature.settings.basic.darkMode') }}</div>
|
||||
<a-switch
|
||||
v-model:checked="common.darkMode"
|
||||
:checked-children="$t('feature.settings.basic.on')"
|
||||
:un-checked-children="$t('feature.settings.basic.off')"
|
||||
></a-switch>
|
||||
</div>
|
||||
</div>
|
||||
<div class="setting-item">
|
||||
<div class="title">{{ $t('feature.settings.basic.language') }}</div>
|
||||
<div class="settings-item-li">
|
||||
<div class="label">
|
||||
{{ $t('feature.settings.basic.changeLang') }}
|
||||
</div>
|
||||
<a-select
|
||||
v-model:value="state.common.lang"
|
||||
label-in-value
|
||||
style="width: 240px"
|
||||
:options="options"
|
||||
@change="changeLanguage"
|
||||
></a-select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div @click="addConfig" class="add-global">
|
||||
<PlusCircleOutlined />
|
||||
{{ $t('feature.settings.global.addShortcutKey') }}
|
||||
<div v-if="currentSelect[0] === 'global'">
|
||||
<a-collapse>
|
||||
<a-collapse-panel
|
||||
key="1"
|
||||
:header="$t('feature.settings.global.instructions')"
|
||||
>
|
||||
<div>
|
||||
{{ $t('feature.settings.global.tips') }}
|
||||
</div>
|
||||
<h3 style="margin-top: 10px">
|
||||
{{ $t('feature.settings.global.example') }}
|
||||
</h3>
|
||||
<a-divider style="margin: 5px 0" />
|
||||
<a-list item-layout="horizontal" :data-source="examples">
|
||||
<template #renderItem="{ item }">
|
||||
<a-list-item>
|
||||
<a-list-item-meta :description="item.desc">
|
||||
<template #title>
|
||||
<div>{{ item.title }}</div>
|
||||
</template>
|
||||
</a-list-item-meta>
|
||||
</a-list-item>
|
||||
</template>
|
||||
</a-list>
|
||||
</a-collapse-panel>
|
||||
</a-collapse>
|
||||
<div class="feature-container">
|
||||
<div class="keywords item">
|
||||
<div>{{ $t('feature.settings.global.shortcutKey') }}</div>
|
||||
<template :key="index" v-for="(item, index) in global">
|
||||
<a-tooltip placement="top" trigger="click">
|
||||
<template #title>
|
||||
<span>{{ tipText }}</span>
|
||||
</template>
|
||||
<div
|
||||
class="value"
|
||||
tabIndex="2"
|
||||
@keyup="(e) => changeGlobalKey(e, index)"
|
||||
>
|
||||
{{ item.key }}
|
||||
<MinusCircleOutlined
|
||||
@click.stop="deleteGlobalKey(e, index)"
|
||||
/>
|
||||
</div>
|
||||
</a-tooltip>
|
||||
</template>
|
||||
</div>
|
||||
<div class="short-cut item">
|
||||
<div>{{ $t('feature.settings.global.funtionKey') }}</div>
|
||||
<template v-for="(item, index) in global" :key="index">
|
||||
<a-input
|
||||
:value="item.value"
|
||||
class="value"
|
||||
allowClear
|
||||
:disabled="!item.key"
|
||||
@change="(e) => changeGlobalValue(index, e.target.value)"
|
||||
/>
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
<div @click="addConfig" class="add-global">
|
||||
<PlusCircleOutlined />
|
||||
{{ $t('feature.settings.global.addShortcutKey') }}
|
||||
</div>
|
||||
</div>
|
||||
<Localhost v-if="currentSelect[0] === 'localhost'" />
|
||||
<LocalStart v-if="currentSelect[0] === 'localstart'" />
|
||||
<DataBase v-if="currentSelect[0] === 'database'" />
|
||||
</div>
|
||||
<SuperPanel v-if="currentSelect[0] === 'superpanel'" />
|
||||
<Localhost v-if="currentSelect[0] === 'localhost'" />
|
||||
<LocalStart v-if="currentSelect[0] === 'localstart'" />
|
||||
<DataBase v-if="currentSelect[0] === 'database'" />
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
@ -253,7 +235,6 @@ import debounce from 'lodash.debounce';
|
||||
import { ref, reactive, watch, toRefs, computed } from 'vue';
|
||||
import keycodes from './keycode';
|
||||
import Localhost from './localhost.vue';
|
||||
import SuperPanel from './super-panel.vue';
|
||||
import UserInfo from './user-info';
|
||||
import LocalStart from './local-start';
|
||||
import DataBase from './database';
|
||||
@ -453,10 +434,23 @@ const changeLanguage = (value) => {
|
||||
box-sizing: border-box;
|
||||
width: 100%;
|
||||
overflow-x: hidden;
|
||||
background: var(--color-body-bg);
|
||||
height: calc(~'100vh - 46px');
|
||||
display: flex;
|
||||
|
||||
background: var(--color-body-bg2);
|
||||
height: calc(~'100vh - 34px');
|
||||
.ant-menu-horizontal {
|
||||
border-bottom: 1px solid var(--color-border-light);
|
||||
}
|
||||
.view-title {
|
||||
font-size: 16px;
|
||||
font-weight: 500;
|
||||
margin-bottom: 16px;
|
||||
color: var(--color-text-primary);
|
||||
}
|
||||
.view-container {
|
||||
border-radius: 8px;
|
||||
background: var(--color-body-bg);
|
||||
overflow: auto;
|
||||
height: calc(~'100vh - 84px');
|
||||
}
|
||||
.ant-menu {
|
||||
background: var(--color-body-bg) !important;
|
||||
color: var(--color-text-content) !important;
|
||||
@ -467,7 +461,6 @@ const changeLanguage = (value) => {
|
||||
box-sizing: border-box;
|
||||
flex: 1;
|
||||
overflow: auto;
|
||||
height: 100%;
|
||||
background: var(--color-body-bg);
|
||||
|
||||
.setting-item {
|
||||
@ -479,7 +472,7 @@ const changeLanguage = (value) => {
|
||||
|
||||
.title {
|
||||
color: var(--ant-primary-color);
|
||||
font-size: 15px;
|
||||
font-size: 14px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
@ -592,7 +585,6 @@ const changeLanguage = (value) => {
|
||||
|
||||
.ant-collapse {
|
||||
background: var(--color-input-hover);
|
||||
|
||||
.ant-collapse-content {
|
||||
background: var(--color-input-hover);
|
||||
color: var(--color-text-content);
|
||||
|
@ -98,7 +98,7 @@ const checkDrop = (e) => {
|
||||
width: 100%;
|
||||
overflow-x: hidden;
|
||||
background: var(--color-body-bg);
|
||||
height: calc(~'100vh - 106px');
|
||||
height: calc(~'100vh - 180px');
|
||||
.del-title {
|
||||
text-decoration-line: line-through;
|
||||
text-decoration-color: var(--ant-error-color);
|
||||
|
@ -1,103 +1,17 @@
|
||||
<template>
|
||||
<div class="user-info">
|
||||
<!-- <div class="info-container">-->
|
||||
<!-- <a-result-->
|
||||
<!-- class="user-info-result"-->
|
||||
<!-- :title="userInfo.name || $t('feature.settings.account.tips1')"-->
|
||||
<!-- :sub-title="$t('feature.settings.account.tips2')"-->
|
||||
<!-- >-->
|
||||
<!-- <template #icon>-->
|
||||
<!-- <a-avatar :size="64" v-if="!userInfo.avatar">-->
|
||||
<!-- <template #icon><UserOutlined /></template>-->
|
||||
<!-- </a-avatar>-->
|
||||
<!-- <a-avatar :src="userInfo.avatar" :size="64" v-else />-->
|
||||
<!-- </template>-->
|
||||
<!-- </a-result>-->
|
||||
<!-- </div>-->
|
||||
<div class="settings-container">
|
||||
<div class="setting-item">
|
||||
<div class="title">
|
||||
{{ $t('feature.settings.account.themeColor') }}
|
||||
</div>
|
||||
<div class="settings-item-li">
|
||||
<div class="label">
|
||||
{{ $t('feature.settings.account.primaryColor') }}
|
||||
</div>
|
||||
<a-input v-model:value="custom.primaryColor" class="value">
|
||||
<template #prefix>
|
||||
<div
|
||||
:style="{
|
||||
background: custom.primaryColor,
|
||||
width: '10px',
|
||||
height: '10px',
|
||||
}"
|
||||
></div>
|
||||
</template>
|
||||
</a-input>
|
||||
</div>
|
||||
<div class="settings-item-li">
|
||||
<div class="label">
|
||||
{{ $t('feature.settings.account.errorColor') }}
|
||||
</div>
|
||||
<a-input v-model:value="custom.errorColor" class="value">
|
||||
<template #prefix>
|
||||
<div
|
||||
:style="{
|
||||
background: custom.errorColor,
|
||||
width: '10px',
|
||||
height: '10px',
|
||||
}"
|
||||
></div>
|
||||
</template>
|
||||
</a-input>
|
||||
</div>
|
||||
<div class="settings-item-li">
|
||||
<div class="label">
|
||||
{{ $t('feature.settings.account.warningColor') }}
|
||||
</div>
|
||||
<a-input v-model:value="custom.warningColor" class="value">
|
||||
<template #prefix>
|
||||
<div
|
||||
:style="{
|
||||
background: custom.warningColor,
|
||||
width: '10px',
|
||||
height: '10px',
|
||||
}"
|
||||
></div>
|
||||
</template>
|
||||
</a-input>
|
||||
</div>
|
||||
<div class="settings-item-li">
|
||||
<div class="label">
|
||||
{{ $t('feature.settings.account.successColor') }}
|
||||
</div>
|
||||
<a-input v-model:value="custom.successColor" class="value">
|
||||
<template #prefix>
|
||||
<div
|
||||
:style="{
|
||||
background: custom.successColor,
|
||||
width: '10px',
|
||||
height: '10px',
|
||||
}"
|
||||
></div>
|
||||
</template>
|
||||
</a-input>
|
||||
</div>
|
||||
<div class="settings-item-li">
|
||||
<div class="label">
|
||||
{{ $t('feature.settings.account.infoColor') }}
|
||||
</div>
|
||||
<a-input v-model:value="custom.infoColor" class="value">
|
||||
<template #prefix>
|
||||
<div
|
||||
:style="{
|
||||
background: custom.infoColor,
|
||||
width: '10px',
|
||||
height: '10px',
|
||||
}"
|
||||
></div>
|
||||
</template>
|
||||
</a-input>
|
||||
<a-radio-group @change="changeTheme" v-model:value="theme" button-style="solid">
|
||||
<a-radio-button value="SPRING">{{ $t('feature.settings.account.spring') }}</a-radio-button>
|
||||
<a-radio-button value="SUMMER">{{ $t('feature.settings.account.summer') }}</a-radio-button>
|
||||
<a-radio-button value="AUTUMN">{{ $t('feature.settings.account.autumn') }}</a-radio-button>
|
||||
<a-radio-button value="WINTER">{{ $t('feature.settings.account.winter') }}</a-radio-button>
|
||||
</a-radio-group>
|
||||
</div>
|
||||
</div>
|
||||
<div class="setting-item">
|
||||
@ -110,34 +24,33 @@
|
||||
</div>
|
||||
<a-input v-model:value="custom.placeholder" class="value"></a-input>
|
||||
</div>
|
||||
<div class="settings-item-li">
|
||||
<div class="label">
|
||||
{{ $t('feature.settings.account.name') }}
|
||||
</div>
|
||||
<a-input v-model:value="custom.username" class="value"></a-input>
|
||||
</div>
|
||||
<div class="settings-item-li">
|
||||
<div class="label">
|
||||
{{ $t('feature.settings.account.logo') }}
|
||||
</div>
|
||||
<div class="img-container">
|
||||
<img class="custom-img" :src="custom.logo" />
|
||||
<a-button @click="changeLogo" size="small" type="link">
|
||||
<a-button class="btn" @click="changeLogo" shape="round" size="small" type="primary">
|
||||
{{ $t('feature.settings.account.replace') }}
|
||||
</a-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- <div class="footer-btn">-->
|
||||
<!-- <a-button @click="reset" type="danger">-->
|
||||
<!-- {{ $t('feature.settings.account.reset') }}-->
|
||||
<!-- </a-button>-->
|
||||
<!-- </div>-->
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { reactive, ref, toRefs, watch } from 'vue';
|
||||
import { reactive, toRefs, watch, ref } from 'vue';
|
||||
import debounce from 'lodash.debounce';
|
||||
import localConfig from '@/confOp';
|
||||
|
||||
import service from '../../assets/service';
|
||||
|
||||
import * as Themes from '@/assets/constans';
|
||||
const { ipcRenderer } = window.require('electron');
|
||||
|
||||
const state = reactive({
|
||||
@ -146,14 +59,10 @@ const state = reactive({
|
||||
|
||||
const { perf } = localConfig.getConfig();
|
||||
|
||||
const theme = ref(perf.custom.theme);
|
||||
|
||||
state.custom = perf.custom || {};
|
||||
|
||||
const userInfo = ref(window.rubick.dbStorage.getItem('rubick-user-info'));
|
||||
|
||||
// service.getUserInfo({ openId: userInfo.value.openId }).then((res) => {
|
||||
// userInfo.value = res;
|
||||
// });
|
||||
|
||||
const setConfig = debounce(() => {
|
||||
localConfig.setConfig(
|
||||
JSON.parse(
|
||||
@ -180,6 +89,13 @@ const changeLogo = () => {
|
||||
state.custom.logo = `file://${logoPath}`;
|
||||
};
|
||||
|
||||
const changeTheme = () => {
|
||||
state.custom = {
|
||||
...state.custom,
|
||||
...Themes[theme.value],
|
||||
};
|
||||
};
|
||||
|
||||
// const reset = () => {
|
||||
// Modal.warning({
|
||||
// title: '确定恢复默认设置吗?',
|
||||
@ -194,11 +110,17 @@ const changeLogo = () => {
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
.settings-container {
|
||||
margin-top: 18px;
|
||||
.ant-radio-button-wrapper {
|
||||
background: var(--color-body-bg);
|
||||
color: var(--color-text-content);
|
||||
}
|
||||
.user-info-result {
|
||||
padding: 0;
|
||||
.theme-preview {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
border-radius: 100%;
|
||||
}
|
||||
&.ant-result {
|
||||
padding: 24px;
|
||||
}
|
||||
@ -214,6 +136,10 @@ const changeLogo = () => {
|
||||
}
|
||||
.img-container {
|
||||
width: 300px;
|
||||
.btn {
|
||||
margin-left: 10px;
|
||||
font-size: 12px;
|
||||
}
|
||||
}
|
||||
.custom-img {
|
||||
width: 60px;
|
||||
|
@ -77,7 +77,6 @@ watch([visible], () => {
|
||||
width: 100%;
|
||||
overflow-x: hidden;
|
||||
background: var(--color-body-bg);
|
||||
height: calc(~'100vh - 46px');
|
||||
:deep(.ant-result-title) {
|
||||
color: var(--color-text-primary);
|
||||
}
|
||||
|
@ -1,13 +1,22 @@
|
||||
const path = require("path");
|
||||
const path = require('path');
|
||||
|
||||
module.exports = {
|
||||
css: { // 配置css模块
|
||||
loaderOptions: { // 向预处理器 Loader 传递配置选项
|
||||
less: { // 配置less(其他样式解析用法一致)
|
||||
javascriptEnabled: true // 设置为true
|
||||
}
|
||||
}
|
||||
css: {
|
||||
// 配置css模块
|
||||
loaderOptions: {
|
||||
// 向预处理器 Loader 传递配置选项
|
||||
less: {
|
||||
// 配置less(其他样式解析用法一致)
|
||||
javascriptEnabled: true, // 设置为true
|
||||
},
|
||||
},
|
||||
},
|
||||
outputDir: path.join(__dirname, '../public/feature'),
|
||||
publicPath: process.env.NODE_ENV === 'production' ? '' : '/',
|
||||
chainWebpack: (config) => {
|
||||
// 查看打包文件体积大小
|
||||
config
|
||||
.plugin('webpack-bundle-analyzer')
|
||||
.use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin);
|
||||
},
|
||||
outputDir: path.join(__dirname, "../public/feature"),
|
||||
publicPath: process.env.NODE_ENV === "production" ? "" : "/",
|
||||
};
|
||||
|
@ -968,6 +968,11 @@
|
||||
resolved "https://registry.yarnpkg.com/@ctrl/tinycolor/-/tinycolor-3.4.1.tgz#75b4c27948c81e88ccd3a8902047bcd797f38d32"
|
||||
integrity sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw==
|
||||
|
||||
"@discoveryjs/json-ext@0.5.7":
|
||||
version "0.5.7"
|
||||
resolved "https://registry.npmmirror.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70"
|
||||
integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==
|
||||
|
||||
"@hapi/address@2.x.x":
|
||||
version "2.1.4"
|
||||
resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.1.4.tgz#5d67ed43f3fd41a69d4b9ff7b56e7c0d1d0a81e5"
|
||||
@ -1009,6 +1014,44 @@
|
||||
cssnano-preset-default "^4.0.0"
|
||||
postcss "^7.0.0"
|
||||
|
||||
"@intlify/core-base@9.2.2":
|
||||
version "9.2.2"
|
||||
resolved "https://registry.npmmirror.com/@intlify/core-base/-/core-base-9.2.2.tgz#5353369b05cc9fe35cab95fe20afeb8a4481f939"
|
||||
integrity sha512-JjUpQtNfn+joMbrXvpR4hTF8iJQ2sEFzzK3KIESOx+f+uwIjgw20igOyaIdhfsVVBCds8ZM64MoeNSx+PHQMkA==
|
||||
dependencies:
|
||||
"@intlify/devtools-if" "9.2.2"
|
||||
"@intlify/message-compiler" "9.2.2"
|
||||
"@intlify/shared" "9.2.2"
|
||||
"@intlify/vue-devtools" "9.2.2"
|
||||
|
||||
"@intlify/devtools-if@9.2.2":
|
||||
version "9.2.2"
|
||||
resolved "https://registry.npmmirror.com/@intlify/devtools-if/-/devtools-if-9.2.2.tgz#b13d9ac4b4e2fe6d2e7daa556517a8061fe8bd39"
|
||||
integrity sha512-4ttr/FNO29w+kBbU7HZ/U0Lzuh2cRDhP8UlWOtV9ERcjHzuyXVZmjyleESK6eVP60tGC9QtQW9yZE+JeRhDHkg==
|
||||
dependencies:
|
||||
"@intlify/shared" "9.2.2"
|
||||
|
||||
"@intlify/message-compiler@9.2.2":
|
||||
version "9.2.2"
|
||||
resolved "https://registry.npmmirror.com/@intlify/message-compiler/-/message-compiler-9.2.2.tgz#e42ab6939b8ae5b3d21faf6a44045667a18bba1c"
|
||||
integrity sha512-IUrQW7byAKN2fMBe8z6sK6riG1pue95e5jfokn8hA5Q3Bqy4MBJ5lJAofUsawQJYHeoPJ7svMDyBaVJ4d0GTtA==
|
||||
dependencies:
|
||||
"@intlify/shared" "9.2.2"
|
||||
source-map "0.6.1"
|
||||
|
||||
"@intlify/shared@9.2.2":
|
||||
version "9.2.2"
|
||||
resolved "https://registry.npmmirror.com/@intlify/shared/-/shared-9.2.2.tgz#5011be9ca2b4ab86f8660739286e2707f9abb4a5"
|
||||
integrity sha512-wRwTpsslgZS5HNyM7uDQYZtxnbI12aGiBZURX3BTR9RFIKKRWpllTsgzHWvj3HKm3Y2Sh5LPC1r0PDCKEhVn9Q==
|
||||
|
||||
"@intlify/vue-devtools@9.2.2":
|
||||
version "9.2.2"
|
||||
resolved "https://registry.npmmirror.com/@intlify/vue-devtools/-/vue-devtools-9.2.2.tgz#b95701556daf7ebb3a2d45aa3ae9e6415aed8317"
|
||||
integrity sha512-+dUyqyCHWHb/UcvY1MlIpO87munedm3Gn6E9WWYdWrMuYLcoIoOEVDWSS8xSwtlPU+kA+MEQTP6Q1iI/ocusJg==
|
||||
dependencies:
|
||||
"@intlify/core-base" "9.2.2"
|
||||
"@intlify/shared" "9.2.2"
|
||||
|
||||
"@jridgewell/gen-mapping@^0.1.0":
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996"
|
||||
@ -1090,6 +1133,11 @@
|
||||
"@nodelib/fs.scandir" "2.1.5"
|
||||
fastq "^1.6.0"
|
||||
|
||||
"@polka/url@^1.0.0-next.20":
|
||||
version "1.0.0-next.23"
|
||||
resolved "https://registry.npmmirror.com/@polka/url/-/url-1.0.0-next.23.tgz#498e41218ab3b6a1419c735e5c6ae2c5ed609b6c"
|
||||
integrity sha512-C16M+IYz0rgRhWZdCmK+h58JMv8vijAA61gmz2rspCSwKwzBebpdcsiUmwrtJRdphuY30i6BSLEOP8ppbNLyLg==
|
||||
|
||||
"@simonwep/pickr@~1.8.0":
|
||||
version "1.8.2"
|
||||
resolved "https://registry.yarnpkg.com/@simonwep/pickr/-/pickr-1.8.2.tgz#96dc86675940d7cad63d69c22083dd1cbb9797cb"
|
||||
@ -1720,6 +1768,11 @@
|
||||
resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.1.4.tgz#b4aec2f4b4599e11ba774a50c67fa378c9824e53"
|
||||
integrity sha512-IiA0SvDrJEgXvVxjNkHPFfDx6SXw0b/TUkqMcDZWNg9fnCAHbTpoo59YfJ9QLFkwa3raau5vSlRVzMSLDnfdtQ==
|
||||
|
||||
"@vue/devtools-api@^6.2.1":
|
||||
version "6.5.0"
|
||||
resolved "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.5.0.tgz#98b99425edee70b4c992692628fa1ea2c1e57d07"
|
||||
integrity sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==
|
||||
|
||||
"@vue/eslint-config-prettier@^6.0.0":
|
||||
version "6.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@vue/eslint-config-prettier/-/eslint-config-prettier-6.0.0.tgz#ad5912b308f4ae468458e02a2b05db0b9d246700"
|
||||
@ -1981,6 +2034,11 @@ acorn-walk@^7.1.1:
|
||||
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc"
|
||||
integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==
|
||||
|
||||
acorn-walk@^8.0.0:
|
||||
version "8.2.0"
|
||||
resolved "https://registry.npmmirror.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1"
|
||||
integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==
|
||||
|
||||
acorn@^6.4.1:
|
||||
version "6.4.2"
|
||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6"
|
||||
@ -1991,6 +2049,11 @@ acorn@^7.1.1, acorn@^7.4.0:
|
||||
resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
|
||||
integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
|
||||
|
||||
acorn@^8.0.4:
|
||||
version "8.10.0"
|
||||
resolved "https://registry.npmmirror.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5"
|
||||
integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==
|
||||
|
||||
address@^1.1.2:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/address/-/address-1.2.0.tgz#d352a62c92fee90f89a693eccd2a8b2139ab02d9"
|
||||
@ -2334,6 +2397,13 @@ babel-plugin-dynamic-import-node@^2.3.3:
|
||||
dependencies:
|
||||
object.assign "^4.1.0"
|
||||
|
||||
babel-plugin-import@^1.13.8:
|
||||
version "1.13.8"
|
||||
resolved "https://registry.npmmirror.com/babel-plugin-import/-/babel-plugin-import-1.13.8.tgz#782c517f6bbf2de3b1f75aaafd6d20a491c4878c"
|
||||
integrity sha512-36babpjra5m3gca44V6tSTomeBlPA7cHUynrE2WiQIm3rEGD9xy28MKsx5IdO45EbnpJY7Jrgd00C6Dwt/l/2Q==
|
||||
dependencies:
|
||||
"@babel/helper-module-imports" "^7.0.0"
|
||||
|
||||
babel-plugin-polyfill-corejs2@^0.3.0:
|
||||
version "0.3.1"
|
||||
resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz#440f1b70ccfaabc6b676d196239b138f8a2cfba5"
|
||||
@ -3046,6 +3116,11 @@ commander@^2.12.1, commander@^2.18.0, commander@^2.20.0:
|
||||
resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
|
||||
integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
|
||||
|
||||
commander@^7.2.0:
|
||||
version "7.2.0"
|
||||
resolved "https://registry.npmmirror.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7"
|
||||
integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==
|
||||
|
||||
commander@~2.19.0:
|
||||
version "2.19.0"
|
||||
resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a"
|
||||
@ -3802,7 +3877,7 @@ dotenv@^8.2.0:
|
||||
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.6.0.tgz#061af664d19f7f4d8fc6e4ff9b584ce237adcb8b"
|
||||
integrity sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==
|
||||
|
||||
duplexer@^0.1.1:
|
||||
duplexer@^0.1.1, duplexer@^0.1.2:
|
||||
version "0.1.2"
|
||||
resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6"
|
||||
integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==
|
||||
@ -3988,6 +4063,11 @@ escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
|
||||
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
|
||||
integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==
|
||||
|
||||
escape-string-regexp@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
|
||||
integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
|
||||
|
||||
eslint-config-prettier@^6.0.0:
|
||||
version "6.15.0"
|
||||
resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.15.0.tgz#7f93f6cb7d45a92f1537a70ecc06366e1ac6fed9"
|
||||
@ -4861,6 +4941,13 @@ gzip-size@^5.0.0:
|
||||
duplexer "^0.1.1"
|
||||
pify "^4.0.1"
|
||||
|
||||
gzip-size@^6.0.0:
|
||||
version "6.0.0"
|
||||
resolved "https://registry.npmmirror.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462"
|
||||
integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==
|
||||
dependencies:
|
||||
duplexer "^0.1.2"
|
||||
|
||||
handle-thing@^2.0.0:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e"
|
||||
@ -5615,6 +5702,11 @@ is-plain-object@^2.0.3, is-plain-object@^2.0.4:
|
||||
dependencies:
|
||||
isobject "^3.0.1"
|
||||
|
||||
is-plain-object@^5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344"
|
||||
integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==
|
||||
|
||||
is-regex@^1.0.4, is-regex@^1.1.4:
|
||||
version "1.1.4"
|
||||
resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958"
|
||||
@ -5982,7 +6074,7 @@ locate-path@^5.0.0:
|
||||
dependencies:
|
||||
p-locate "^4.1.0"
|
||||
|
||||
lodash-es@^4.17.15:
|
||||
lodash-es@^4.17.15, lodash-es@^4.17.21:
|
||||
version "4.17.21"
|
||||
resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee"
|
||||
integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==
|
||||
@ -5997,6 +6089,21 @@ lodash.defaultsdeep@^4.6.1:
|
||||
resolved "https://registry.yarnpkg.com/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz#512e9bd721d272d94e3d3a63653fa17516741ca6"
|
||||
integrity sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==
|
||||
|
||||
lodash.escape@^4.0.1:
|
||||
version "4.0.1"
|
||||
resolved "https://registry.npmmirror.com/lodash.escape/-/lodash.escape-4.0.1.tgz#c9044690c21e04294beaa517712fded1fa88de98"
|
||||
integrity sha512-nXEOnb/jK9g0DYMr1/Xvq6l5xMD7GDG55+GSYIYmS0G4tBk/hURD4JR9WCavs04t33WmJx9kCyp9vJ+mr4BOUw==
|
||||
|
||||
lodash.flatten@^4.4.0:
|
||||
version "4.4.0"
|
||||
resolved "https://registry.npmmirror.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f"
|
||||
integrity sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==
|
||||
|
||||
lodash.invokemap@^4.6.0:
|
||||
version "4.6.0"
|
||||
resolved "https://registry.npmmirror.com/lodash.invokemap/-/lodash.invokemap-4.6.0.tgz#1748cda5d8b0ef8369c4eb3ec54c21feba1f2d62"
|
||||
integrity sha512-CfkycNtMqgUlfjfdh2BhKO/ZXrP8ePOX5lEU/g0R3ItJcnuxWDwokMGKx1hWcfOikmyOVx6X9IwWnDGlgKl61w==
|
||||
|
||||
lodash.kebabcase@^4.1.1:
|
||||
version "4.1.1"
|
||||
resolved "https://registry.yarnpkg.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36"
|
||||
@ -6012,6 +6119,11 @@ lodash.memoize@^4.1.2:
|
||||
resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
|
||||
integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=
|
||||
|
||||
lodash.pullall@^4.2.0:
|
||||
version "4.2.0"
|
||||
resolved "https://registry.npmmirror.com/lodash.pullall/-/lodash.pullall-4.2.0.tgz#9d98b8518b7c965b0fae4099bd9fb7df8bbf38ba"
|
||||
integrity sha512-VhqxBKH0ZxPpLhiu68YD1KnHmbhQJQctcipvmFnqIBDYzcIHzf3Zpu0tpeOKtR4x76p9yohc506eGdOjTmyIBg==
|
||||
|
||||
lodash.throttle@^4.1.1:
|
||||
version "4.1.1"
|
||||
resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4"
|
||||
@ -6027,6 +6139,11 @@ lodash.uniq@^4.5.0:
|
||||
resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
|
||||
integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=
|
||||
|
||||
lodash.uniqby@^4.7.0:
|
||||
version "4.7.0"
|
||||
resolved "https://registry.npmmirror.com/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz#d99c07a669e9e6d24e1362dfe266c67616af1302"
|
||||
integrity sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==
|
||||
|
||||
lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.3:
|
||||
version "4.17.21"
|
||||
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
|
||||
@ -6051,6 +6168,11 @@ loose-envify@^1.0.0:
|
||||
dependencies:
|
||||
js-tokens "^3.0.0 || ^4.0.0"
|
||||
|
||||
lottie-web@5.12.2:
|
||||
version "5.12.2"
|
||||
resolved "https://registry.npmmirror.com/lottie-web/-/lottie-web-5.12.2.tgz#579ca9fe6d3fd9e352571edd3c0be162492f68e5"
|
||||
integrity sha512-uvhvYPC8kGPjXT3MyKMrL3JitEAmDMp30lVkuq/590Mw9ok6pWcFCwXJveo0t5uqYw1UREQHofD+jVpdjBv8wg==
|
||||
|
||||
lower-case@^1.1.1:
|
||||
version "1.1.4"
|
||||
resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac"
|
||||
@ -6356,6 +6478,11 @@ move-concurrently@^1.0.1:
|
||||
rimraf "^2.5.4"
|
||||
run-queue "^1.0.3"
|
||||
|
||||
mrmime@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.npmmirror.com/mrmime/-/mrmime-1.0.1.tgz#5f90c825fad4bdd41dc914eff5d1a8cfdaf24f27"
|
||||
integrity sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==
|
||||
|
||||
ms@2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
|
||||
@ -6720,7 +6847,7 @@ open@^6.3.0:
|
||||
dependencies:
|
||||
is-wsl "^1.1.0"
|
||||
|
||||
opener@^1.5.1:
|
||||
opener@^1.5.1, opener@^1.5.2:
|
||||
version "1.5.2"
|
||||
resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598"
|
||||
integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==
|
||||
@ -8170,6 +8297,15 @@ simple-swizzle@^0.2.2:
|
||||
dependencies:
|
||||
is-arrayish "^0.3.1"
|
||||
|
||||
sirv@^2.0.3:
|
||||
version "2.0.3"
|
||||
resolved "https://registry.npmmirror.com/sirv/-/sirv-2.0.3.tgz#ca5868b87205a74bef62a469ed0296abceccd446"
|
||||
integrity sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==
|
||||
dependencies:
|
||||
"@polka/url" "^1.0.0-next.20"
|
||||
mrmime "^1.0.0"
|
||||
totalist "^3.0.0"
|
||||
|
||||
slash@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55"
|
||||
@ -8285,16 +8421,16 @@ source-map-url@^0.4.0:
|
||||
resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56"
|
||||
integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==
|
||||
|
||||
source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1:
|
||||
version "0.6.1"
|
||||
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
|
||||
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
|
||||
|
||||
source-map@^0.5.6:
|
||||
version "0.5.7"
|
||||
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
|
||||
integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
|
||||
|
||||
source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1:
|
||||
version "0.6.1"
|
||||
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
|
||||
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
|
||||
|
||||
source-map@^0.7.3:
|
||||
version "0.7.3"
|
||||
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383"
|
||||
@ -8771,6 +8907,11 @@ toposort@^1.0.0:
|
||||
resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029"
|
||||
integrity sha1-LmhELZ9k7HILjMieZEOsbKqVACk=
|
||||
|
||||
totalist@^3.0.0:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.npmmirror.com/totalist/-/totalist-3.0.1.tgz#ba3a3d600c915b1a97872348f79c127475f6acf8"
|
||||
integrity sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==
|
||||
|
||||
tough-cookie@~2.5.0:
|
||||
version "2.5.0"
|
||||
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2"
|
||||
@ -9117,11 +9258,6 @@ uuid@^8.3.2:
|
||||
resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
|
||||
integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
|
||||
|
||||
uuid@^9.0.0:
|
||||
version "9.0.0"
|
||||
resolved "https://registry.npmmirror.com/uuid/-/uuid-9.0.0.tgz#592f550650024a38ceb0c562f2f6aa435761efb5"
|
||||
integrity sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==
|
||||
|
||||
v8-compile-cache@^2.0.3:
|
||||
version "2.3.0"
|
||||
resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee"
|
||||
@ -9177,6 +9313,16 @@ vue-hot-reload-api@^2.3.0:
|
||||
resolved "https://registry.yarnpkg.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz#532955cc1eb208a3d990b3a9f9a70574657e08f2"
|
||||
integrity sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==
|
||||
|
||||
vue-i18n@9.2.2:
|
||||
version "9.2.2"
|
||||
resolved "https://registry.npmmirror.com/vue-i18n/-/vue-i18n-9.2.2.tgz#aeb49d9424923c77e0d6441e3f21dafcecd0e666"
|
||||
integrity sha512-yswpwtj89rTBhegUAv9Mu37LNznyu3NpyLQmozF3i1hYOhwpG8RjcjIFIIfnu+2MDZJGSZPXaKWvnQA71Yv9TQ==
|
||||
dependencies:
|
||||
"@intlify/core-base" "9.2.2"
|
||||
"@intlify/shared" "9.2.2"
|
||||
"@intlify/vue-devtools" "9.2.2"
|
||||
"@vue/devtools-api" "^6.2.1"
|
||||
|
||||
"vue-loader-v16@npm:vue-loader@^16.1.0":
|
||||
version "16.8.3"
|
||||
resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-16.8.3.tgz#d43e675def5ba9345d6c7f05914c13d861997087"
|
||||
@ -9224,6 +9370,19 @@ vue-types@^3.0.0:
|
||||
dependencies:
|
||||
is-plain-object "3.0.1"
|
||||
|
||||
vue3-carousel@^0.3.1:
|
||||
version "0.3.1"
|
||||
resolved "https://registry.npmmirror.com/vue3-carousel/-/vue3-carousel-0.3.1.tgz#d001be7dea416dc2f4e66afc4d56af66696dc117"
|
||||
integrity sha512-86vUkNPBzL2PVuR9w6hUsI90ccFjLp+K8cSFpRTISf+SjUQY3fMHc5CFF5MUL62v1xYYm27zEBmQupO9VQx9Kw==
|
||||
|
||||
vue3-lottie@^3.1.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.npmmirror.com/vue3-lottie/-/vue3-lottie-3.1.0.tgz#39e2a595a83a7401f3308dfc923b28b0bb91a214"
|
||||
integrity sha512-dS6/cjEuAoN/CWYqthPjGVVaeW5jRVB1yGEcFQbBcbDfCeMlVhC7pzn0Qatdz7gasOUIvZcJCmhfUe681GwhSg==
|
||||
dependencies:
|
||||
lodash-es "^4.17.21"
|
||||
lottie-web "5.12.2"
|
||||
|
||||
vue@3.2.45:
|
||||
version "3.2.45"
|
||||
resolved "https://registry.yarnpkg.com/vue/-/vue-3.2.45.tgz#94a116784447eb7dbd892167784619fef379b3c8"
|
||||
@ -9300,6 +9459,29 @@ webpack-bundle-analyzer@^3.8.0:
|
||||
opener "^1.5.1"
|
||||
ws "^6.0.0"
|
||||
|
||||
webpack-bundle-analyzer@^4.9.1:
|
||||
version "4.9.1"
|
||||
resolved "https://registry.npmmirror.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.9.1.tgz#d00bbf3f17500c10985084f22f1a2bf45cb2f09d"
|
||||
integrity sha512-jnd6EoYrf9yMxCyYDPj8eutJvtjQNp8PHmni/e/ulydHBWhT5J3menXt3HEkScsu9YqMAcG4CfFjs3rj5pVU1w==
|
||||
dependencies:
|
||||
"@discoveryjs/json-ext" "0.5.7"
|
||||
acorn "^8.0.4"
|
||||
acorn-walk "^8.0.0"
|
||||
commander "^7.2.0"
|
||||
escape-string-regexp "^4.0.0"
|
||||
gzip-size "^6.0.0"
|
||||
is-plain-object "^5.0.0"
|
||||
lodash.debounce "^4.0.8"
|
||||
lodash.escape "^4.0.1"
|
||||
lodash.flatten "^4.4.0"
|
||||
lodash.invokemap "^4.6.0"
|
||||
lodash.pullall "^4.2.0"
|
||||
lodash.uniqby "^4.7.0"
|
||||
opener "^1.5.2"
|
||||
picocolors "^1.0.0"
|
||||
sirv "^2.0.3"
|
||||
ws "^7.3.1"
|
||||
|
||||
webpack-chain@^6.4.0:
|
||||
version "6.5.1"
|
||||
resolved "https://registry.yarnpkg.com/webpack-chain/-/webpack-chain-6.5.1.tgz#4f27284cbbb637e3c8fbdef43eef588d4d861206"
|
||||
@ -9519,6 +9701,11 @@ ws@^6.0.0, ws@^6.2.1:
|
||||
dependencies:
|
||||
async-limiter "~1.0.0"
|
||||
|
||||
ws@^7.3.1:
|
||||
version "7.5.9"
|
||||
resolved "https://registry.npmmirror.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591"
|
||||
integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==
|
||||
|
||||
xtend@^4.0.0, xtend@~4.0.1:
|
||||
version "4.0.2"
|
||||
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
|
||||
|
File diff suppressed because one or more lines are too long
2
public/feature/css/app.d8360197.css
Normal file
2
public/feature/css/app.d8360197.css
Normal file
File diff suppressed because one or more lines are too long
1
public/feature/css/chunk-111de227.2450c00b.css
Normal file
1
public/feature/css/chunk-111de227.2450c00b.css
Normal file
@ -0,0 +1 @@
|
||||
.worker{width:100%;overflow-x:hidden;box-sizing:border-box}
|
1
public/feature/css/chunk-15a45f31.f40ad637.css
Normal file
1
public/feature/css/chunk-15a45f31.f40ad637.css
Normal file
File diff suppressed because one or more lines are too long
1
public/feature/css/chunk-1af68a6e.2450c00b.css
Normal file
1
public/feature/css/chunk-1af68a6e.2450c00b.css
Normal file
@ -0,0 +1 @@
|
||||
.worker{width:100%;overflow-x:hidden;box-sizing:border-box}
|
1
public/feature/css/chunk-2ab2dd18.830bb4d6.css
Normal file
1
public/feature/css/chunk-2ab2dd18.830bb4d6.css
Normal file
@ -0,0 +1 @@
|
||||
::-webkit-scrollbar{width:0}.panel-item{margin-bottom:17px}.panel-item .download-plugin-btn{color:var(--ant-primary-color)}.panel-item .title{margin-bottom:30px;color:var(--color-text-primary)}.panel-item .ellipse{display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:100%;color:var(--color-text-content)}.panel-item .ellipse.desc{color:var(--color-text-desc)}.panel-item:after{content:" ";display:block;width:100%;height:1px;border-bottom:1px solid var(--color-border-light);transform:scaleY(.5)}.panel-item .ant-list-item{display:flex!important}.panel-item:last-child:after{border-bottom:none}.plugin-info{width:100%}.plugin-info .ant-drawer-content-wrapper{box-shadow:none!important}.plugin-info .ant-drawer-content-wrapper .ant-drawer-content{background:var(--color-body-bg)}.plugin-info .ant-drawer-content-wrapper .ant-drawer-header{background:var(--color-body-bg);border-bottom:1px solid var(--color-border-light)}.dark .plugin-title-info .back-icon{filter:invert(1) brightness(200%)}.plugin-title-info,.plugin-title-info .info{display:flex;align-items:flex-start;width:100%}.plugin-title-info .info .plugin-icon{width:40px;height:40px;margin-right:20px}.plugin-title-info .info .plugin-desc{flex:1;display:flex;align-items:center;justify-content:space-between}.plugin-title-info .info .plugin-desc .title{font-size:18px;font-weight:700;color:var(--color-text-primary)}.plugin-title-info .info .plugin-desc .desc{font-size:12px;font-weight:400;color:var(--color-text-desc)}.error-content.ant-result{padding:0}.home-page-container{min-height:200px}.home-page-container *{color:var(--color-text-content)}.home-page-container img{width:100%}
|
1
public/feature/css/chunk-322da6db.cb08d5f6.css
Normal file
1
public/feature/css/chunk-322da6db.cb08d5f6.css
Normal file
@ -0,0 +1 @@
|
||||
.result{width:100%;overflow-x:hidden;box-sizing:border-box}.result .error-content{padding-top:100px}
|
1
public/feature/css/chunk-596c6184.9be2495c.css
Normal file
1
public/feature/css/chunk-596c6184.9be2495c.css
Normal file
@ -0,0 +1 @@
|
||||
.system{width:100%;overflow-x:hidden;box-sizing:border-box}
|
1
public/feature/css/chunk-82ca94ea.b470edf6.css
Normal file
1
public/feature/css/chunk-82ca94ea.b470edf6.css
Normal file
@ -0,0 +1 @@
|
||||
.dev[data-v-6fb0031c]{box-sizing:border-box;width:100%;overflow-x:hidden;height:calc(100vh - 34px)}.dev .view-title[data-v-6fb0031c]{font-size:16px;font-weight:500;margin-bottom:16px;color:var(--color-text-primary)}.dev .view-container[data-v-6fb0031c]{padding:10px;box-sizing:border-box;border-radius:8px;background:var(--color-body-bg);overflow:auto;height:calc(100vh - 84px)}.dev[data-v-6fb0031c] label{color:var(--color-text-content)}.dev[data-v-6fb0031c] .ant-input{background:var(--color-input-hover);color:var(--color-text-content)}
|
1
public/feature/css/chunk-a1c10494.a43ed20b.css
Normal file
1
public/feature/css/chunk-a1c10494.a43ed20b.css
Normal file
@ -0,0 +1 @@
|
||||
.account[data-v-2bc021e6]{box-sizing:border-box;width:100%;overflow-x:hidden;background:var(--color-body-bg);height:calc(100vh - 46px)}.account[data-v-2bc021e6] .ant-result-title{color:var(--color-text-primary)}.account[data-v-2bc021e6] .ant-result-subtitle{color:var(--color-text-desc)}
|
1
public/feature/css/chunk-a2b32e48.67429700.css
Normal file
1
public/feature/css/chunk-a2b32e48.67429700.css
Normal file
@ -0,0 +1 @@
|
||||
:root{--vc-clr-primary:#000;--vc-clr-secondary:rgba(9,15,32,0.4980392156862745);--vc-clr-white:#fff;--vc-icn-width:1.2em;--vc-nav-width:30px;--vc-nav-height:30px;--vc-nav-border-radius:0;--vc-nav-color:var(--vc-clr-primary);--vc-nav-color-hover:var(--vc-clr-secondary);--vc-nav-background:transparent;--vc-pgn-width:12px;--vc-pgn-height:4px;--vc-pgn-margin:4px;--vc-pgn-border-radius:0;--vc-pgn-background-color:var(--vc-clr-secondary);--vc-pgn-active-color:var(--vc-clr-primary)}.carousel__next,.carousel__prev{background:var(--vc-nav-background);border-radius:var(--vc-nav-border-radius);width:var(--vc-nav-width);height:var(--vc-nav-height);text-align:center;font-size:var(--vc-nav-height);padding:0;color:var(--vc-nav-color);display:flex;justify-content:center;align-items:center;position:absolute;border:0;cursor:pointer;margin:0 10px;top:50%;transform:translateY(-50%)}.carousel__next:hover,.carousel__prev:hover{color:var(--vc-nav-color-hover)}.carousel__next--disabled,.carousel__prev--disabled{cursor:not-allowed;opacity:.5}.carousel__prev{left:0}.carousel__next{right:0}.carousel--rtl .carousel__prev{left:auto;right:0}.carousel--rtl .carousel__next{right:auto;left:0}.carousel{position:relative;text-align:center;box-sizing:border-box;touch-action:pan-y;-ms-scroll-chaining:none;overscroll-behavior:none}.carousel.is-dragging{touch-action:none}.carousel *{box-sizing:border-box}.carousel__track{display:flex;padding:0!important;position:relative}.carousel__viewport{overflow:hidden}.carousel__sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.carousel__icon{width:var(--vc-icn-width);height:var(--vc-icn-width);fill:currentColor}.carousel__pagination{display:flex;justify-content:center;list-style:none;line-height:0;margin:10px 0 0}.carousel__pagination-button{display:block;border:0;margin:0;cursor:pointer;padding:var(--vc-pgn-margin);background:transparent}.carousel__pagination-button:after{display:block;content:"";width:var(--vc-pgn-width);height:var(--vc-pgn-height);border-radius:var(--vc-pgn-border-radius);background-color:var(--vc-pgn-background-color)}.carousel__pagination-button--active:after,.carousel__pagination-button:hover:after{background-color:var(--vc-pgn-active-color)}.carousel__slide{scroll-snap-stop:auto;flex-shrink:0;margin:0;position:relative;display:flex;justify-content:center;align-items:center;transform:translateZ(0)}.finder{position:relative;width:100%;overflow-x:hidden;box-sizing:border-box}.finder::-webkit-scrollbar{width:0}.finder .ant-divider-horizontal{margin:17px 0}.carousel__item{cursor:pointer;min-height:180px;width:100%;background-color:var(--vc-clr-primary);color:var(--vc-clr-white);font-size:20px;border-radius:8px;display:flex;justify-content:center;align-items:center}.carousel__track{margin-bottom:0}.carousel__slide{padding-right:6px}.carousel__slide:last-child{padding-left:6px}.carousel__next,.carousel__prev{box-sizing:content-box;border:5px solid #fff}
|
1
public/feature/css/chunk-ca86664e.dd10748e.css
Normal file
1
public/feature/css/chunk-ca86664e.dd10748e.css
Normal file
@ -0,0 +1 @@
|
||||
.installed[data-v-6aedeb48]{box-sizing:border-box;width:100%;overflow:hidden;height:calc(100vh - 34px)}.installed .view-title[data-v-6aedeb48]{font-size:16px;font-weight:500;margin-bottom:16px;color:var(--color-text-primary)}.installed .view-container[data-v-6aedeb48]{border-radius:8px;background:var(--color-body-bg);overflow:auto;height:calc(100vh - 84px)}.installed[data-v-6aedeb48] .ant-result-title{color:var(--color-text-primary)}.installed[data-v-6aedeb48] .ant-result-subtitle{color:var(--color-text-desc)}.installed .keyword-tag[data-v-6aedeb48]{font-size:13px;margin:4px}.installed .container[data-v-6aedeb48]{box-sizing:border-box;width:100%;overflow:hidden;background:#f3efef;height:100%;display:flex}.installed .installed-list[data-v-6aedeb48]{width:38%;background:var(--color-body-bg);height:100%;padding:10px 0;border-right:1px solid var(--color-border-light);overflow:auto}.installed .installed-list .item[data-v-6aedeb48]{padding:10px 20px;display:flex;align-items:center;color:var(--color-text-content);border-bottom:1px dashed var(--color-border-light);cursor:pointer}.installed .installed-list .item[data-v-6aedeb48]:last-child{border-bottom:none}.installed .installed-list .item img[data-v-6aedeb48]{width:34px;height:34px;margin-right:12px}.installed .installed-list .item .desc[data-v-6aedeb48]{font-size:12px;color:var(--color-text-desc);display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;-webkit-line-clamp:2;text-overflow:ellipsis}.installed .installed-list .item.active[data-v-6aedeb48]{color:var(--ant-primary-color);background:var(--color-list-hover)}.installed .plugin-detail[data-v-6aedeb48]{padding:20px 20px 0 20px;box-sizing:border-box;width:62%;height:100%;background:var(--color-body-bg)}.installed .plugin-detail .plugin-top[data-v-6aedeb48]{display:flex;align-items:flex-start;justify-content:space-between;border-bottom:1px solid #eee;padding-bottom:12px;margin-bottom:12px}.installed .plugin-detail .plugin-top .title[data-v-6aedeb48]{font-size:16px;display:flex;align-items:center;color:var(--color-text-primary)}.installed .plugin-detail .plugin-top .title .ant-tag[data-v-6aedeb48]{background:var(--color-input-hover);border:1px solid var(--color-border-light);color:var(--color-text-content);margin-left:8px}.installed .plugin-detail .plugin-top .desc[data-v-6aedeb48]{font-size:13px;color:var(--color-text-desc)}.installed .plugin-detail .detail-container[data-v-6aedeb48],.installed .plugin-detail .feature-container[data-v-6aedeb48]{height:380px;overflow:auto;color:var(--color-text-content)}.installed .plugin-detail .detail-container img[data-v-6aedeb48],.installed .plugin-detail .feature-container img[data-v-6aedeb48]{width:100%}.installed .plugin-detail .desc-item[data-v-6aedeb48]{padding:10px 0;color:var(--color-text-content)}.installed .plugin-detail .desc-item .ant-tag[data-v-6aedeb48]{margin-top:6px}.installed .plugin-detail .desc-item .ant-tag.executable[data-v-6aedeb48]{cursor:pointer;color:var(--ant-info-color)}.installed .plugin-detail .desc-item .ant-tag.executable[data-v-6aedeb48]:hover{transform:translateY(-2px)}.installed .plugin-detail .desc-item .desc-title[data-v-6aedeb48]{display:flex;align-items:center;justify-content:space-between}.installed .plugin-detail .desc-item .desc-info[data-v-6aedeb48]{color:var(--color-text-desc)}
|
1
public/feature/css/chunk-cf61e458.9be2495c.css
Normal file
1
public/feature/css/chunk-cf61e458.9be2495c.css
Normal file
@ -0,0 +1 @@
|
||||
.system{width:100%;overflow-x:hidden;box-sizing:border-box}
|
1
public/feature/css/chunk-f69c766e.9be2495c.css
Normal file
1
public/feature/css/chunk-f69c766e.9be2495c.css
Normal file
@ -0,0 +1 @@
|
||||
.system{width:100%;overflow-x:hidden;box-sizing:border-box}
|
BIN
public/feature/img/error.bda0dc85.png
Normal file
BIN
public/feature/img/error.bda0dc85.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 13 KiB |
@ -1 +1 @@
|
||||
<!DOCTYPE html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="favicon.ico"><title>feature</title><link href="css/app.4e3502cb.css" rel="preload" as="style"><link href="css/chunk-vendors.7f9dcb72.css" rel="preload" as="style"><link href="js/app.5fe607e9.js" rel="preload" as="script"><link href="js/chunk-vendors.73a23bae.js" rel="preload" as="script"><link href="css/chunk-vendors.7f9dcb72.css" rel="stylesheet"><link href="css/app.4e3502cb.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but feature doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script src="js/chunk-vendors.73a23bae.js"></script><script src="js/app.5fe607e9.js"></script></body></html>
|
||||
<!DOCTYPE html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="favicon.ico"><title>feature</title><link href="css/chunk-111de227.2450c00b.css" rel="prefetch"><link href="css/chunk-15a45f31.f40ad637.css" rel="prefetch"><link href="css/chunk-1af68a6e.2450c00b.css" rel="prefetch"><link href="css/chunk-2ab2dd18.830bb4d6.css" rel="prefetch"><link href="css/chunk-322da6db.cb08d5f6.css" rel="prefetch"><link href="css/chunk-596c6184.9be2495c.css" rel="prefetch"><link href="css/chunk-82ca94ea.b470edf6.css" rel="prefetch"><link href="css/chunk-a1c10494.a43ed20b.css" rel="prefetch"><link href="css/chunk-a2b32e48.67429700.css" rel="prefetch"><link href="css/chunk-ca86664e.dd10748e.css" rel="prefetch"><link href="css/chunk-cf61e458.9be2495c.css" rel="prefetch"><link href="css/chunk-f69c766e.9be2495c.css" rel="prefetch"><link href="js/chunk-111de227.0ad80221.js" rel="prefetch"><link href="js/chunk-15a45f31.36dccd15.js" rel="prefetch"><link href="js/chunk-1af68a6e.c1d36c0f.js" rel="prefetch"><link href="js/chunk-2ab2dd18.69b0e89c.js" rel="prefetch"><link href="js/chunk-322da6db.f9b18700.js" rel="prefetch"><link href="js/chunk-596c6184.83021bf7.js" rel="prefetch"><link href="js/chunk-82ca94ea.71d77dba.js" rel="prefetch"><link href="js/chunk-a1c10494.7497b556.js" rel="prefetch"><link href="js/chunk-a2b32e48.f483e0e9.js" rel="prefetch"><link href="js/chunk-ca86664e.b3dc97d9.js" rel="prefetch"><link href="js/chunk-cf61e458.d98b4577.js" rel="prefetch"><link href="js/chunk-f69c766e.7fe57a21.js" rel="prefetch"><link href="css/app.d8360197.css" rel="preload" as="style"><link href="css/chunk-vendors.7f9dcb72.css" rel="preload" as="style"><link href="js/app.0d80f1c1.js" rel="preload" as="script"><link href="js/chunk-vendors.31673d31.js" rel="preload" as="script"><link href="css/chunk-vendors.7f9dcb72.css" rel="stylesheet"><link href="css/app.d8360197.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but feature doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script src="js/chunk-vendors.31673d31.js"></script><script src="js/app.0d80f1c1.js"></script></body></html>
|
2
public/feature/js/app.0d80f1c1.js
Normal file
2
public/feature/js/app.0d80f1c1.js
Normal file
File diff suppressed because one or more lines are too long
1
public/feature/js/app.0d80f1c1.js.map
Normal file
1
public/feature/js/app.0d80f1c1.js.map
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
2
public/feature/js/chunk-111de227.0ad80221.js
Normal file
2
public/feature/js/chunk-111de227.0ad80221.js
Normal file
@ -0,0 +1,2 @@
|
||||
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-111de227"],{3271:function(t,e,n){},be50:function(t,e,n){"use strict";n.r(e);var c=n("c7eb"),a=n("1da1"),r=(n("d81d"),n("d3b7"),n("159b"),n("b0c0"),n("7a23")),o=n("0eaf"),u=n("be89"),s=n("5502"),b={class:"tools"},i={__name:"tools",setup:function(t){var e=Object(s["b"])(),n=Object(r["j"])((function(){return e.state.totalPlugins})),i=Object(r["Q"])([]);Object(r["D"])(Object(a["a"])(Object(c["a"])().mark((function t(){return Object(c["a"])().wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,o["a"].getSearchDetail();case 2:i.value=t.sent;case 3:case"end":return t.stop()}}),t)}))));var l=Object(r["j"])((function(){var t=i.value||[];return t.length?t.map((function(t){var e=null;return n.value.forEach((function(n){n.name===t&&(e=n)})),e})):[]}));return function(t,e){return Object(r["L"])(),Object(r["n"])("div",b,[Object(r["bb"])(l)&&Object(r["bb"])(l).length?(Object(r["L"])(),Object(r["l"])(u["a"],{key:0,onDownloadSuccess:t.downloadSuccess,title:t.$t("feature.market.searchTool"),list:Object(r["bb"])(l)},null,8,["onDownloadSuccess","title","list"])):Object(r["m"])("",!0)])}}};n("f1e9");const l=i;e["default"]=l},d81d:function(t,e,n){"use strict";var c=n("23e7"),a=n("b727").map,r=n("1dde"),o=r("map");c({target:"Array",proto:!0,forced:!o},{map:function(t){return a(this,t,arguments.length>1?arguments[1]:void 0)}})},f1e9:function(t,e,n){"use strict";n("3271")}}]);
|
||||
//# sourceMappingURL=chunk-111de227.0ad80221.js.map
|
1
public/feature/js/chunk-111de227.0ad80221.js.map
Normal file
1
public/feature/js/chunk-111de227.0ad80221.js.map
Normal file
@ -0,0 +1 @@
|
||||
{"version":3,"sources":["webpack:///./src/views/market/components/tools.vue","webpack:///./src/views/market/components/tools.vue?bbe3","webpack:///./node_modules/core-js/modules/es.array.map.js","webpack:///./src/views/market/components/tools.vue?df38"],"names":["store","useStore","totalPlugins","computed","state","data","ref","onBeforeMount","request","getSearchDetail","value","tools","defaultData","length","map","plugin","searchInfo","forEach","t","name","__exports__","$","$map","arrayMethodHasSpeciesSupport","HAS_SPECIES_SUPPORT","target","proto","forced","callbackfn","this","arguments","undefined"],"mappings":"0TAiBA,IAAMA,EAAQC,iBACRC,EAAeC,gBAAS,kBAAMH,EAAMI,MAAMF,gBAE1CG,EAAOC,eAAI,IAEjBC,eAAa,sCAAC,4GACOC,OAAQC,kBADf,OACZJ,EAAKK,MADO,mDAId,IAAMC,EAAQR,gBAAS,WACrB,IAAMS,EAAcP,EAAKK,OAAS,GAClC,OAAKE,EAAYC,OACVD,EAAYE,KAAI,SAACC,GACtB,IAAIC,EAAa,KAMjB,OALAd,EAAaQ,MAAMO,SAAQ,SAACC,GACtBA,EAAEC,OAASJ,IACbC,EAAaE,MAGVF,KARuB,M,0VCvBlC,MAAMI,EAAc,EAEL,gB,kCCNf,IAAIC,EAAI,EAAQ,QACZC,EAAO,EAAQ,QAAgCR,IAC/CS,EAA+B,EAAQ,QAEvCC,EAAsBD,EAA6B,OAKvDF,EAAE,CAAEI,OAAQ,QAASC,OAAO,EAAMC,QAASH,GAAuB,CAChEV,IAAK,SAAac,GAChB,OAAON,EAAKO,KAAMD,EAAYE,UAAUjB,OAAS,EAAIiB,UAAU,QAAKC,O,kCCZxE","file":"js/chunk-111de227.0ad80221.js","sourcesContent":["<template>\n <div class=\"tools\">\n <PluginList\n v-if=\"tools && !!tools.length\"\n @downloadSuccess=\"downloadSuccess\"\n :title=\"$t('feature.market.searchTool')\"\n :list=\"tools\"\n />\n </div>\n</template>\n\n<script setup>\nimport { ref, computed, onBeforeMount } from 'vue';\nimport request from '../../../assets/request/index';\nimport PluginList from './plugin-list.vue';\n\nimport { useStore } from 'vuex';\nconst store = useStore();\nconst totalPlugins = computed(() => store.state.totalPlugins);\n\nconst data = ref([]);\n\nonBeforeMount(async () => {\n data.value = await request.getSearchDetail();\n});\n\nconst tools = computed(() => {\n const defaultData = data.value || [];\n if (!defaultData.length) return [];\n return defaultData.map((plugin) => {\n let searchInfo = null;\n totalPlugins.value.forEach((t) => {\n if (t.name === plugin) {\n searchInfo = t;\n }\n });\n return searchInfo;\n });\n});\n</script>\n\n<style lang=\"less\">\n.worker {\n width: 100%;\n overflow-x: hidden;\n box-sizing: border-box;\n}\n</style>\n","import script from \"./tools.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./tools.vue?vue&type=script&setup=true&lang=js\"\n\nimport \"./tools.vue?vue&type=style&index=0&id=6bc47f78&lang=less\"\n\nconst __exports__ = script;\n\nexport default __exports__","'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n\n// `Array.prototype.map` method\n// https://tc39.es/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./tools.vue?vue&type=style&index=0&id=6bc47f78&lang=less\""],"sourceRoot":""}
|
2
public/feature/js/chunk-15a45f31.36dccd15.js
Normal file
2
public/feature/js/chunk-15a45f31.36dccd15.js
Normal file
File diff suppressed because one or more lines are too long
1
public/feature/js/chunk-15a45f31.36dccd15.js.map
Normal file
1
public/feature/js/chunk-15a45f31.36dccd15.js.map
Normal file
File diff suppressed because one or more lines are too long
2
public/feature/js/chunk-1af68a6e.c1d36c0f.js
Normal file
2
public/feature/js/chunk-1af68a6e.c1d36c0f.js
Normal file
@ -0,0 +1,2 @@
|
||||
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-1af68a6e"],{5458:function(e,t,n){"use strict";n.r(t);var c=n("c7eb"),a=n("1da1"),r=(n("d81d"),n("d3b7"),n("159b"),n("b0c0"),n("7a23")),u=n("0eaf"),o=n("be89"),b=n("5502"),i={class:"worker"},s={__name:"worker",setup:function(e){var t=Object(b["b"])(),n=Object(r["j"])((function(){return t.state.totalPlugins})),s=Object(r["Q"])([]);Object(r["D"])(Object(a["a"])(Object(c["a"])().mark((function e(){return Object(c["a"])().wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,u["a"].getWorkerDetail();case 2:s.value=e.sent;case 3:case"end":return e.stop()}}),e)}))));var l=Object(r["j"])((function(){var e=s.value||[];return e.length?e.map((function(e){var t=null;return n.value.forEach((function(n){n.name===e&&(t=n)})),t})):[]}));return function(e,t){return Object(r["L"])(),Object(r["n"])("div",i,[Object(r["bb"])(l)&&Object(r["bb"])(l).length?(Object(r["L"])(),Object(r["l"])(o["a"],{key:0,onDownloadSuccess:e.downloadSuccess,title:e.$t("feature.market.efficiency"),list:Object(r["bb"])(l)},null,8,["onDownloadSuccess","title","list"])):Object(r["m"])("",!0)])}}};n("b63b");const l=s;t["default"]=l},"6a1f":function(e,t,n){},b63b:function(e,t,n){"use strict";n("6a1f")},d81d:function(e,t,n){"use strict";var c=n("23e7"),a=n("b727").map,r=n("1dde"),u=r("map");c({target:"Array",proto:!0,forced:!u},{map:function(e){return a(this,e,arguments.length>1?arguments[1]:void 0)}})}}]);
|
||||
//# sourceMappingURL=chunk-1af68a6e.c1d36c0f.js.map
|
1
public/feature/js/chunk-1af68a6e.c1d36c0f.js.map
Normal file
1
public/feature/js/chunk-1af68a6e.c1d36c0f.js.map
Normal file
@ -0,0 +1 @@
|
||||
{"version":3,"sources":["webpack:///./src/views/market/components/worker.vue","webpack:///./src/views/market/components/worker.vue?ab7e","webpack:///./src/views/market/components/worker.vue?b4e5","webpack:///./node_modules/core-js/modules/es.array.map.js"],"names":["store","useStore","totalPlugins","computed","state","data","ref","onBeforeMount","request","getWorkerDetail","value","system","defaultData","length","map","plugin","searchInfo","forEach","t","name","__exports__","$","$map","arrayMethodHasSpeciesSupport","HAS_SPECIES_SUPPORT","target","proto","forced","callbackfn","this","arguments","undefined"],"mappings":"qSAiBA,IAAMA,EAAQC,iBACRC,EAAeC,gBAAS,kBAAMH,EAAMI,MAAMF,gBAE1CG,EAAOC,eAAI,IAEjBC,eAAa,sCAAC,4GACOC,OAAQC,kBADf,OACZJ,EAAKK,MADO,mDAId,IAAMC,EAASR,gBAAS,WACtB,IAAMS,EAAcP,EAAKK,OAAS,GAClC,OAAKE,EAAYC,OACVD,EAAYE,KAAI,SAACC,GACtB,IAAIC,EAAa,KAMjB,OALAd,EAAaQ,MAAMO,SAAQ,SAACC,GACtBA,EAAEC,OAASJ,IACbC,EAAaE,MAGVF,KARuB,M,0VCvBlC,MAAMI,EAAc,EAEL,gB,2DCPf,W,kCCCA,IAAIC,EAAI,EAAQ,QACZC,EAAO,EAAQ,QAAgCR,IAC/CS,EAA+B,EAAQ,QAEvCC,EAAsBD,EAA6B,OAKvDF,EAAE,CAAEI,OAAQ,QAASC,OAAO,EAAMC,QAASH,GAAuB,CAChEV,IAAK,SAAac,GAChB,OAAON,EAAKO,KAAMD,EAAYE,UAAUjB,OAAS,EAAIiB,UAAU,QAAKC","file":"js/chunk-1af68a6e.c1d36c0f.js","sourcesContent":["<template>\n <div class=\"worker\">\n <PluginList\n v-if=\"system && !!system.length\"\n @downloadSuccess=\"downloadSuccess\"\n :title=\"$t('feature.market.efficiency')\"\n :list=\"system\"\n />\n </div>\n</template>\n\n<script setup>\nimport { ref, computed, onBeforeMount } from 'vue';\nimport request from '../../../assets/request/index';\nimport PluginList from './plugin-list.vue';\n\nimport { useStore } from 'vuex';\nconst store = useStore();\nconst totalPlugins = computed(() => store.state.totalPlugins);\n\nconst data = ref([]);\n\nonBeforeMount(async () => {\n data.value = await request.getWorkerDetail();\n});\n\nconst system = computed(() => {\n const defaultData = data.value || [];\n if (!defaultData.length) return [];\n return defaultData.map((plugin) => {\n let searchInfo = null;\n totalPlugins.value.forEach((t) => {\n if (t.name === plugin) {\n searchInfo = t;\n }\n });\n return searchInfo;\n });\n});\n</script>\n\n<style lang=\"less\">\n.worker {\n width: 100%;\n overflow-x: hidden;\n box-sizing: border-box;\n}\n</style>\n","import script from \"./worker.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./worker.vue?vue&type=script&setup=true&lang=js\"\n\nimport \"./worker.vue?vue&type=style&index=0&id=81c5c93e&lang=less\"\n\nconst __exports__ = script;\n\nexport default __exports__","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./worker.vue?vue&type=style&index=0&id=81c5c93e&lang=less\"","'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n\n// `Array.prototype.map` method\n// https://tc39.es/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n"],"sourceRoot":""}
|
2
public/feature/js/chunk-2ab2dd18.69b0e89c.js
Normal file
2
public/feature/js/chunk-2ab2dd18.69b0e89c.js
Normal file
File diff suppressed because one or more lines are too long
1
public/feature/js/chunk-2ab2dd18.69b0e89c.js.map
Normal file
1
public/feature/js/chunk-2ab2dd18.69b0e89c.js.map
Normal file
File diff suppressed because one or more lines are too long
2
public/feature/js/chunk-322da6db.f9b18700.js
Normal file
2
public/feature/js/chunk-322da6db.f9b18700.js
Normal file
File diff suppressed because one or more lines are too long
1
public/feature/js/chunk-322da6db.f9b18700.js.map
Normal file
1
public/feature/js/chunk-322da6db.f9b18700.js.map
Normal file
File diff suppressed because one or more lines are too long
2
public/feature/js/chunk-596c6184.83021bf7.js
Normal file
2
public/feature/js/chunk-596c6184.83021bf7.js
Normal file
@ -0,0 +1,2 @@
|
||||
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-596c6184"],{"10dc":function(e,t,n){"use strict";n.r(t);var c=n("c7eb"),a=n("1da1"),r=(n("d81d"),n("d3b7"),n("159b"),n("b0c0"),n("7a23")),u=n("0eaf"),o=n("be89"),b=n("5502"),s={class:"system"},i={__name:"devlopment",setup:function(e){var t=Object(b["b"])(),n=Object(r["j"])((function(){return t.state.totalPlugins})),i=Object(r["Q"])([]);Object(r["D"])(Object(a["a"])(Object(c["a"])().mark((function e(){return Object(c["a"])().wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,u["a"].getDevDetail();case 2:i.value=e.sent;case 3:case"end":return e.stop()}}),e)}))));var l=Object(r["j"])((function(){var e=i.value||[];return e.length?e.map((function(e){var t=null;return n.value.forEach((function(n){n.name===e&&(t=n)})),t})):[]}));return function(e,t){return Object(r["L"])(),Object(r["n"])("div",s,[Object(r["bb"])(l)&&Object(r["bb"])(l).length?(Object(r["L"])(),Object(r["l"])(o["a"],{key:0,onDownloadSuccess:e.downloadSuccess,title:e.$t("feature.market.developTool"),list:Object(r["bb"])(l)},null,8,["onDownloadSuccess","title","list"])):Object(r["m"])("",!0)])}}};n("edb3");const l=i;t["default"]=l},b7d6:function(e,t,n){},d81d:function(e,t,n){"use strict";var c=n("23e7"),a=n("b727").map,r=n("1dde"),u=r("map");c({target:"Array",proto:!0,forced:!u},{map:function(e){return a(this,e,arguments.length>1?arguments[1]:void 0)}})},edb3:function(e,t,n){"use strict";n("b7d6")}}]);
|
||||
//# sourceMappingURL=chunk-596c6184.83021bf7.js.map
|
1
public/feature/js/chunk-596c6184.83021bf7.js.map
Normal file
1
public/feature/js/chunk-596c6184.83021bf7.js.map
Normal file
@ -0,0 +1 @@
|
||||
{"version":3,"sources":["webpack:///./src/views/market/components/devlopment.vue","webpack:///./src/views/market/components/devlopment.vue?c17b","webpack:///./node_modules/core-js/modules/es.array.map.js","webpack:///./src/views/market/components/devlopment.vue?3da4"],"names":["store","useStore","totalPlugins","computed","state","data","ref","onBeforeMount","request","getDevDetail","value","dev","defaultData","length","map","plugin","searchInfo","forEach","t","name","__exports__","$","$map","arrayMethodHasSpeciesSupport","HAS_SPECIES_SUPPORT","target","proto","forced","callbackfn","this","arguments","undefined"],"mappings":"2SAiBA,IAAMA,EAAQC,iBACRC,EAAeC,gBAAS,kBAAMH,EAAMI,MAAMF,gBAE1CG,EAAOC,eAAI,IAEjBC,eAAa,sCAAC,4GACOC,OAAQC,eADf,OACZJ,EAAKK,MADO,mDAId,IAAMC,EAAMR,gBAAS,WACnB,IAAMS,EAAcP,EAAKK,OAAS,GAClC,OAAKE,EAAYC,OACVD,EAAYE,KAAI,SAACC,GACtB,IAAIC,EAAa,KAMjB,OALAd,EAAaQ,MAAMO,SAAQ,SAACC,GACtBA,EAAEC,OAASJ,IACbC,EAAaE,MAGVF,KARuB,M,2VCvBlC,MAAMI,EAAc,EAEL,gB,yDCNf,IAAIC,EAAI,EAAQ,QACZC,EAAO,EAAQ,QAAgCR,IAC/CS,EAA+B,EAAQ,QAEvCC,EAAsBD,EAA6B,OAKvDF,EAAE,CAAEI,OAAQ,QAASC,OAAO,EAAMC,QAASH,GAAuB,CAChEV,IAAK,SAAac,GAChB,OAAON,EAAKO,KAAMD,EAAYE,UAAUjB,OAAS,EAAIiB,UAAU,QAAKC,O,kCCZxE","file":"js/chunk-596c6184.83021bf7.js","sourcesContent":["<template>\n <div class=\"system\">\n <PluginList\n v-if=\"dev && !!dev.length\"\n @downloadSuccess=\"downloadSuccess\"\n :title=\"$t('feature.market.developTool')\"\n :list=\"dev\"\n />\n </div>\n</template>\n\n<script setup>\nimport { ref, computed, onBeforeMount } from 'vue';\nimport request from '../../../assets/request/index';\nimport PluginList from './plugin-list.vue';\n\nimport { useStore } from 'vuex';\nconst store = useStore();\nconst totalPlugins = computed(() => store.state.totalPlugins);\n\nconst data = ref([]);\n\nonBeforeMount(async () => {\n data.value = await request.getDevDetail();\n});\n\nconst dev = computed(() => {\n const defaultData = data.value || [];\n if (!defaultData.length) return [];\n return defaultData.map((plugin) => {\n let searchInfo = null;\n totalPlugins.value.forEach((t) => {\n if (t.name === plugin) {\n searchInfo = t;\n }\n });\n return searchInfo;\n });\n});\n</script>\n\n<style lang=\"less\">\n.system {\n width: 100%;\n overflow-x: hidden;\n box-sizing: border-box;\n}\n</style>\n","import script from \"./devlopment.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./devlopment.vue?vue&type=script&setup=true&lang=js\"\n\nimport \"./devlopment.vue?vue&type=style&index=0&id=fbcc4bb8&lang=less\"\n\nconst __exports__ = script;\n\nexport default __exports__","'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n\n// `Array.prototype.map` method\n// https://tc39.es/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./devlopment.vue?vue&type=style&index=0&id=fbcc4bb8&lang=less\""],"sourceRoot":""}
|
2
public/feature/js/chunk-82ca94ea.71d77dba.js
Normal file
2
public/feature/js/chunk-82ca94ea.71d77dba.js
Normal file
@ -0,0 +1,2 @@
|
||||
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-82ca94ea"],{"44e73":function(e,t,n){"use strict";n.r(t);var a=n("c7eb"),c=n("1da1"),u=(n("b0c0"),n("7a23")),r=n("f64c"),i=n("47e2"),l={class:"dev"},s={class:"view-title"},o={class:"view-container"},b={__name:"index",setup:function(e){var t=Object(i["b"])(),n=t.t,b=Object(u["Q"])(),f=Object(u["P"])({name:void 0}),d={name:{required:!0,message:"Please input name"}},j=function(){b.value.validate().then((function(){O(f.name)}))},p=Object(u["Q"])(!1),O=function(){var e=Object(c["a"])(Object(a["a"])().mark((function e(t){return Object(a["a"])().wrap((function(e){while(1)switch(e.prev=e.next){case 0:return p.value=!0,e.next=3,window.market.downloadPlugin({name:t,isDev:!0});case 3:r["a"].success(n("feature.dev.installSuccess",{pluginName:t})),p.value=!1;case 5:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),m=function(){b.value.validate().then((function(){window.market.refreshPlugin({name:f.name}),r["a"].success(n("feature.dev.refreshSuccess",{pluginName:f.name}))}))},v={span:4},g={span:14};return function(e,t){var n=Object(u["U"])("a-alert"),a=Object(u["U"])("a-input"),c=Object(u["U"])("a-form-item"),r=Object(u["U"])("a-button"),i=Object(u["U"])("a-form");return Object(u["L"])(),Object(u["n"])("div",l,[Object(u["o"])("div",s,Object(u["X"])(e.$t("feature.dev.title")),1),Object(u["o"])("div",o,[Object(u["q"])(n,{style:{"margin-bottom":"40px"},message:e.$t("feature.dev.tips"),type:"warning"},null,8,["message"]),Object(u["q"])(i,{ref_key:"formRef",ref:b,model:f,rules:d,"label-col":v,"wrapper-col":g},{default:Object(u["gb"])((function(){return[Object(u["q"])(c,{label:e.$t("feature.dev.pluginName"),name:"name"},{default:Object(u["gb"])((function(){return[Object(u["q"])(a,{value:f.name,"onUpdate:value":t[0]||(t[0]=function(e){return f.name=e})},null,8,["value"])]})),_:1},8,["label"]),Object(u["q"])(c,{"wrapper-col":{span:14,offset:4}},{default:Object(u["gb"])((function(){return[Object(u["q"])(r,{loading:p.value,type:"primary",onClick:j},{default:Object(u["gb"])((function(){return[Object(u["p"])(Object(u["X"])(e.$t("feature.dev.install")),1)]})),_:1},8,["loading"]),Object(u["q"])(r,{onClick:m,style:{"margin-left":"10px"}},{default:Object(u["gb"])((function(){return[Object(u["p"])(Object(u["X"])(e.$t("feature.dev.refreshPlugins")),1)]})),_:1})]})),_:1})]})),_:1},8,["model"])])])}}},f=(n("ef18"),n("6b0d")),d=n.n(f);const j=d()(b,[["__scopeId","data-v-6fb0031c"]]);t["default"]=j},ef18:function(e,t,n){"use strict";n("f44a")},f44a:function(e,t,n){}}]);
|
||||
//# sourceMappingURL=chunk-82ca94ea.71d77dba.js.map
|
1
public/feature/js/chunk-82ca94ea.71d77dba.js.map
Normal file
1
public/feature/js/chunk-82ca94ea.71d77dba.js.map
Normal file
@ -0,0 +1 @@
|
||||
{"version":3,"sources":["webpack:///./src/views/dev/index.vue","webpack:///./src/views/dev/index.vue?465d","webpack:///./src/views/dev/index.vue?35c7"],"names":["useI18n","t","formRef","ref","formState","reactive","name","undefined","rules","required","message","onSubmit","value","validate","then","downloadPlugin","loading","pluginName","window","market","isDev","success","refresh","refreshPlugin","labelCol","span","wrapperCol","__exports__"],"mappings":"4SAqCA,MAAcA,iBAANC,EAAR,EAAQA,EAEFC,EAAUC,iBACVC,EAAYC,eAAS,CACzBC,UAAMC,IAEFC,EAAQ,CACZF,KAAM,CACJG,UAAU,EACVC,QAAS,sBAGPC,EAAW,WACfT,EAAQU,MAAMC,WAAWC,MAAK,WAC5BC,EAAeX,EAAUE,UAIvBU,EAAUb,gBAAI,GACdY,EAAc,uDAAG,WAAOE,GAAP,sFACrBD,EAAQJ,OAAQ,EADK,SAEfM,OAAOC,OAAOJ,eAAe,CACjCT,KAAMW,EACNG,OAAO,IAJY,OAMrBV,OAAQW,QAAQpB,EAAE,6BAA8B,CAAEgB,WAAYA,KAC9DD,EAAQJ,OAAQ,EAPK,2CAAH,sDAUdU,EAAU,WACdpB,EAAQU,MAAMC,WAAWC,MAAK,WAC5BI,OAAOC,OAAOI,cAAc,CAC1BjB,KAAMF,EAAUE,OAElBI,OAAQW,QACNpB,EAAE,6BAA8B,CAAEgB,WAAYb,EAAUE,YAKxDkB,EAAW,CAAEC,KAAM,GACnBC,EAAa,CAAED,KAAM,I,8zCCxE3B,MAAME,EAA2B,IAAgB,EAAQ,CAAC,CAAC,YAAY,qBAExD,gB,kCCRf,W","file":"js/chunk-82ca94ea.71d77dba.js","sourcesContent":["<template>\n <div class=\"dev\">\n <div class=\"view-title\">{{ $t('feature.dev.title') }}</div>\n <div class=\"view-container\">\n <a-alert\n style=\"margin-bottom: 40px\"\n :message=\"$t('feature.dev.tips')\"\n type=\"warning\"\n />\n <a-form\n ref=\"formRef\"\n :model=\"formState\"\n :rules=\"rules\"\n :label-col=\"labelCol\"\n :wrapper-col=\"wrapperCol\"\n >\n <a-form-item :label=\"$t('feature.dev.pluginName')\" name=\"name\">\n <a-input v-model:value=\"formState.name\" />\n </a-form-item>\n \n <a-form-item :wrapper-col=\"{ span: 14, offset: 4 }\">\n <a-button :loading=\"loading\" type=\"primary\" @click=\"onSubmit\">\n {{ $t('feature.dev.install') }}\n </a-button>\n <a-button @click=\"refresh\" style=\"margin-left: 10px\">\n {{ $t('feature.dev.refreshPlugins') }}\n </a-button>\n </a-form-item>\n </a-form>\n </div>\n </div>\n</template>\n\n<script setup>\nimport { reactive, ref } from 'vue';\nimport { message } from 'ant-design-vue';\nimport { useI18n } from 'vue-i18n';\nconst { t } = useI18n();\n\nconst formRef = ref();\nconst formState = reactive({\n name: undefined,\n});\nconst rules = {\n name: {\n required: true,\n message: 'Please input name',\n },\n};\nconst onSubmit = () => {\n formRef.value.validate().then(() => {\n downloadPlugin(formState.name);\n });\n};\n\nconst loading = ref(false);\nconst downloadPlugin = async (pluginName) => {\n loading.value = true;\n await window.market.downloadPlugin({\n name: pluginName,\n isDev: true,\n });\n message.success(t('feature.dev.installSuccess', { pluginName: pluginName }));\n loading.value = false;\n};\n\nconst refresh = () => {\n formRef.value.validate().then(() => {\n window.market.refreshPlugin({\n name: formState.name,\n });\n message.success(\n t('feature.dev.refreshSuccess', { pluginName: formState.name })\n );\n });\n};\n\nconst labelCol = { span: 4 };\nconst wrapperCol = { span: 14 };\n</script>\n\n<style lang=\"less\" scoped>\n.dev {\n box-sizing: border-box;\n width: 100%;\n overflow-x: hidden;\n height: calc(~'100vh - 34px');\n .view-title {\n font-size: 16px;\n font-weight: 500;\n margin-bottom: 16px;\n color: var(--color-text-primary);\n }\n .view-container {\n padding: 10px;\n box-sizing: border-box;\n border-radius: 8px;\n background: var(--color-body-bg);\n overflow: auto;\n height: calc(~'100vh - 84px');\n }\n :deep(label) {\n color: var(--color-text-content);\n }\n :deep(.ant-input) {\n background: var(--color-input-hover);\n color: var(--color-text-content);\n }\n}\n</style>\n","import script from \"./index.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./index.vue?vue&type=script&setup=true&lang=js\"\n\nimport \"./index.vue?vue&type=style&index=0&id=6fb0031c&lang=less&scoped=true\"\n\nimport exportComponent from \"/Users/muwoo/rubick-wks/rubick/feature/node_modules/vue-loader-v16/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-6fb0031c\"]])\n\nexport default __exports__","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./index.vue?vue&type=style&index=0&id=6fb0031c&lang=less&scoped=true\""],"sourceRoot":""}
|
2
public/feature/js/chunk-a1c10494.7497b556.js
Normal file
2
public/feature/js/chunk-a1c10494.7497b556.js
Normal file
@ -0,0 +1,2 @@
|
||||
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-a1c10494"],{"3e1f":function(e,t,n){"use strict";n.r(t);var c=n("7a23"),r=n("e1bd"),a=n("f64c"),u=n("f5e0"),s={class:"account"},i=["src"],o={__name:"index",setup:function(e){var t=Object(c["Q"])(window.rubick.dbStorage.getItem("rubick-user-info")),n=Object(c["Q"])(""),o=Object(r["a"])(),b=Object(c["Q"])(!1),l=function(){b.value=!0,n.value||t.value||u["a"].getScanCode({scene:o}).then((function(e){n.value="data:image/png;base64,".concat(e.dataUrl)}))},d=null;return Object(c["eb"])([b],(function(){b.value?d=setInterval((function(){u["a"].checkLoginStatus({scene:o}).then((function(e){console.log(e),e.openId&&(window.rubick.dbStorage.setItem("rubick-user-info",e),t.value=e,a["a"].success("登录成功!"),b.value=!1,clearInterval(d),d=null)}))}),2e3):(clearInterval(d),d=null)})),function(e,r){var a=Object(c["U"])("a-button"),u=Object(c["U"])("a-result"),o=Object(c["U"])("a-modal");return Object(c["L"])(),Object(c["n"])("div",s,[t.value?Object(c["m"])("",!0):(Object(c["L"])(),Object(c["l"])(u,{key:0,title:"请先登录","sub-title":"用户暂未登录,无法体验更多设置"},{extra:Object(c["gb"])((function(){return[Object(c["q"])(a,{onClick:l,type:"primary"},{default:Object(c["gb"])((function(){return[Object(c["p"])(" 使用微信小程序登录 ")]})),_:1})]})),_:1})),Object(c["q"])(o,{footer:null,visible:b.value,"onUpdate:visible":r[0]||(r[0]=function(e){return b.value=e})},{default:Object(c["gb"])((function(){return[Object(c["q"])(u,{title:"请使用微信扫码登录!","sub-title":"使用微信扫描上面的 rubick 小程序二维码进行授权登录"},{icon:Object(c["gb"])((function(){return[Object(c["o"])("img",{width:"200",src:n.value},null,8,i)]})),_:1})]})),_:1},8,["visible"])])}}},b=(n("7251"),n("6b0d")),l=n.n(b);const d=l()(o,[["__scopeId","data-v-2bc021e6"]]);t["default"]=d},7251:function(e,t,n){"use strict";n("9d3e")},"9d3e":function(e,t,n){},e1bd:function(e,t,n){"use strict";n.d(t,"a",(function(){return c}));let c=(e=21)=>crypto.getRandomValues(new Uint8Array(e)).reduce((e,t)=>(t&=63,e+=t<36?t.toString(36):t<62?(t-26).toString(36).toUpperCase():t>62?"-":"_",e),"")},f5e0:function(e,t,n){"use strict";var c=n("c7eb"),r=n("1da1"),a=n("bc3a"),u=n.n(a),s=u.a.create({baseURL:"https://rubick.vip/api/"});t["a"]={getScanCode:function(e){return Object(r["a"])(Object(c["a"])().mark((function t(){var n,r;return Object(c["a"])().wrap((function(t){while(1)switch(t.prev=t.next){case 0:return n=e.scene,t.next=3,s.get("/users/getScanCode",{params:{scene:n}});case 3:return r=t.sent,t.abrupt("return",r.data);case 5:case"end":return t.stop()}}),t)})))()},checkLoginStatus:function(e){return Object(r["a"])(Object(c["a"])().mark((function t(){var n,r;return Object(c["a"])().wrap((function(t){while(1)switch(t.prev=t.next){case 0:return n=e.scene,t.next=3,s.post("/users/checkLoginStatus",{scene:n});case 3:return r=t.sent,t.abrupt("return",r.data);case 5:case"end":return t.stop()}}),t)})))()},getUserInfo:function(e){return Object(r["a"])(Object(c["a"])().mark((function t(){var n,r;return Object(c["a"])().wrap((function(t){while(1)switch(t.prev=t.next){case 0:return n=e.openId,t.next=3,s.post("/users/getUserInfo",{openId:n});case 3:return r=t.sent,t.abrupt("return",r.data);case 5:case"end":return t.stop()}}),t)})))()}}}}]);
|
||||
//# sourceMappingURL=chunk-a1c10494.7497b556.js.map
|
1
public/feature/js/chunk-a1c10494.7497b556.js.map
Normal file
1
public/feature/js/chunk-a1c10494.7497b556.js.map
Normal file
File diff suppressed because one or more lines are too long
8
public/feature/js/chunk-a2b32e48.f483e0e9.js
Normal file
8
public/feature/js/chunk-a2b32e48.f483e0e9.js
Normal file
File diff suppressed because one or more lines are too long
1
public/feature/js/chunk-a2b32e48.f483e0e9.js.map
Normal file
1
public/feature/js/chunk-a2b32e48.f483e0e9.js.map
Normal file
File diff suppressed because one or more lines are too long
2
public/feature/js/chunk-ca86664e.b3dc97d9.js
Normal file
2
public/feature/js/chunk-ca86664e.b3dc97d9.js
Normal file
File diff suppressed because one or more lines are too long
1
public/feature/js/chunk-ca86664e.b3dc97d9.js.map
Normal file
1
public/feature/js/chunk-ca86664e.b3dc97d9.js.map
Normal file
File diff suppressed because one or more lines are too long
2
public/feature/js/chunk-cf61e458.d98b4577.js
Normal file
2
public/feature/js/chunk-cf61e458.d98b4577.js
Normal file
@ -0,0 +1,2 @@
|
||||
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-cf61e458"],{"166f":function(e,t,n){},"5e94":function(e,t,n){"use strict";n("166f")},b805:function(e,t,n){"use strict";n.r(t);var c=n("c7eb"),a=n("1da1"),r=(n("d81d"),n("d3b7"),n("159b"),n("b0c0"),n("7a23")),u=n("0eaf"),o=n("be89"),s=n("5502"),b={class:"system"},i={__name:"image",setup:function(e){var t=Object(s["b"])(),n=Object(r["j"])((function(){return t.state.totalPlugins})),i=Object(r["Q"])([]);Object(r["D"])(Object(a["a"])(Object(c["a"])().mark((function e(){return Object(c["a"])().wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,u["a"].getImageDetail();case 2:i.value=e.sent;case 3:case"end":return e.stop()}}),e)}))));var l=Object(r["j"])((function(){var e=i.value||[];return e.length?e.map((function(e){var t=null;return n.value.forEach((function(n){n.name===e&&(t=n)})),t})):[]}));return function(e,t){return Object(r["L"])(),Object(r["n"])("div",b,[Object(r["bb"])(l)&&Object(r["bb"])(l).length?(Object(r["L"])(),Object(r["l"])(o["a"],{key:0,onDownloadSuccess:e.downloadSuccess,title:e.$t("feature.market.imageTool"),list:Object(r["bb"])(l)},null,8,["onDownloadSuccess","title","list"])):Object(r["m"])("",!0)])}}};n("5e94");const l=i;t["default"]=l},d81d:function(e,t,n){"use strict";var c=n("23e7"),a=n("b727").map,r=n("1dde"),u=r("map");c({target:"Array",proto:!0,forced:!u},{map:function(e){return a(this,e,arguments.length>1?arguments[1]:void 0)}})}}]);
|
||||
//# sourceMappingURL=chunk-cf61e458.d98b4577.js.map
|
1
public/feature/js/chunk-cf61e458.d98b4577.js.map
Normal file
1
public/feature/js/chunk-cf61e458.d98b4577.js.map
Normal file
@ -0,0 +1 @@
|
||||
{"version":3,"sources":["webpack:///./src/views/market/components/image.vue?4c36","webpack:///./src/views/market/components/image.vue","webpack:///./src/views/market/components/image.vue?eb79","webpack:///./node_modules/core-js/modules/es.array.map.js"],"names":["store","useStore","totalPlugins","computed","state","data","ref","onBeforeMount","request","getImageDetail","value","system","defaultData","length","map","plugin","searchInfo","forEach","t","name","__exports__","$","$map","arrayMethodHasSpeciesSupport","HAS_SPECIES_SUPPORT","target","proto","forced","callbackfn","this","arguments","undefined"],"mappings":"2IAAA,W,sNCiBA,IAAMA,EAAQC,iBACRC,EAAeC,gBAAS,kBAAMH,EAAMI,MAAMF,gBAE1CG,EAAOC,eAAI,IAEjBC,eAAa,sCAAC,4GACOC,OAAQC,iBADf,OACZJ,EAAKK,MADO,mDAId,IAAMC,EAASR,gBAAS,WACtB,IAAMS,EAAcP,EAAKK,OAAS,GAClC,OAAKE,EAAYC,OACVD,EAAYE,KAAI,SAACC,GACtB,IAAIC,EAAa,KAMjB,OALAd,EAAaQ,MAAMO,SAAQ,SAACC,GACtBA,EAAEC,OAASJ,IACbC,EAAaE,MAGVF,KARuB,M,yVCvBlC,MAAMI,EAAc,EAEL,gB,kCCNf,IAAIC,EAAI,EAAQ,QACZC,EAAO,EAAQ,QAAgCR,IAC/CS,EAA+B,EAAQ,QAEvCC,EAAsBD,EAA6B,OAKvDF,EAAE,CAAEI,OAAQ,QAASC,OAAO,EAAMC,QAASH,GAAuB,CAChEV,IAAK,SAAac,GAChB,OAAON,EAAKO,KAAMD,EAAYE,UAAUjB,OAAS,EAAIiB,UAAU,QAAKC","file":"js/chunk-cf61e458.d98b4577.js","sourcesContent":["export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./image.vue?vue&type=style&index=0&id=02d11799&lang=less\"","<template>\n <div class=\"system\">\n <PluginList\n v-if=\"system && !!system.length\"\n @downloadSuccess=\"downloadSuccess\"\n :title=\"$t('feature.market.imageTool')\"\n :list=\"system\"\n />\n </div>\n</template>\n\n<script setup>\nimport { ref, computed, onBeforeMount } from 'vue';\nimport request from '../../../assets/request/index';\nimport PluginList from './plugin-list.vue';\n\nimport { useStore } from 'vuex';\nconst store = useStore();\nconst totalPlugins = computed(() => store.state.totalPlugins);\n\nconst data = ref([]);\n\nonBeforeMount(async () => {\n data.value = await request.getImageDetail();\n});\n\nconst system = computed(() => {\n const defaultData = data.value || [];\n if (!defaultData.length) return [];\n return defaultData.map((plugin) => {\n let searchInfo = null;\n totalPlugins.value.forEach((t) => {\n if (t.name === plugin) {\n searchInfo = t;\n }\n });\n return searchInfo;\n });\n});\n</script>\n\n<style lang=\"less\">\n.system {\n width: 100%;\n overflow-x: hidden;\n box-sizing: border-box;\n}\n</style>\n","import script from \"./image.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./image.vue?vue&type=script&setup=true&lang=js\"\n\nimport \"./image.vue?vue&type=style&index=0&id=02d11799&lang=less\"\n\nconst __exports__ = script;\n\nexport default __exports__","'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n\n// `Array.prototype.map` method\n// https://tc39.es/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n"],"sourceRoot":""}
|
2
public/feature/js/chunk-f69c766e.7fe57a21.js
Normal file
2
public/feature/js/chunk-f69c766e.7fe57a21.js
Normal file
@ -0,0 +1,2 @@
|
||||
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-f69c766e"],{2957:function(e,t,n){"use strict";n("aed9e")},"83d4":function(e,t,n){"use strict";n.r(t);var c=n("c7eb"),a=n("1da1"),r=(n("d81d"),n("d3b7"),n("159b"),n("b0c0"),n("7a23")),u=n("0eaf"),s=n("be89"),o=n("5502"),b={class:"system"},i={__name:"system",setup:function(e){var t=Object(o["b"])(),n=Object(r["j"])((function(){return t.state.totalPlugins})),i=Object(r["Q"])([]);Object(r["D"])(Object(a["a"])(Object(c["a"])().mark((function e(){return Object(c["a"])().wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,u["a"].getSystemDetail();case 2:i.value=e.sent;case 3:case"end":return e.stop()}}),e)}))));var l=Object(r["j"])((function(){var e=i.value||[];return e.length?e.map((function(e){var t=null;return n.value.forEach((function(n){n.name===e&&(t=n)})),t})):[]}));return function(e,t){return Object(r["L"])(),Object(r["n"])("div",b,[Object(r["bb"])(l)&&Object(r["bb"])(l).length?(Object(r["L"])(),Object(r["l"])(s["a"],{key:0,onDownloadSuccess:e.downloadSuccess,title:e.$t("feature.market.systemTool"),list:Object(r["bb"])(l)},null,8,["onDownloadSuccess","title","list"])):Object(r["m"])("",!0)])}}};n("2957");const l=i;t["default"]=l},aed9e:function(e,t,n){},d81d:function(e,t,n){"use strict";var c=n("23e7"),a=n("b727").map,r=n("1dde"),u=r("map");c({target:"Array",proto:!0,forced:!u},{map:function(e){return a(this,e,arguments.length>1?arguments[1]:void 0)}})}}]);
|
||||
//# sourceMappingURL=chunk-f69c766e.7fe57a21.js.map
|
1
public/feature/js/chunk-f69c766e.7fe57a21.js.map
Normal file
1
public/feature/js/chunk-f69c766e.7fe57a21.js.map
Normal file
@ -0,0 +1 @@
|
||||
{"version":3,"sources":["webpack:///./src/views/market/components/system.vue?d800","webpack:///./src/views/market/components/system.vue","webpack:///./src/views/market/components/system.vue?ea4f","webpack:///./node_modules/core-js/modules/es.array.map.js"],"names":["store","useStore","totalPlugins","computed","state","data","ref","onBeforeMount","request","getSystemDetail","value","system","defaultData","length","map","plugin","searchInfo","forEach","t","name","__exports__","$","$map","arrayMethodHasSpeciesSupport","HAS_SPECIES_SUPPORT","target","proto","forced","callbackfn","this","arguments","undefined"],"mappings":"gHAAA,Y,yNCiBA,IAAMA,EAAQC,iBACRC,EAAeC,gBAAS,kBAAMH,EAAMI,MAAMF,gBAE1CG,EAAOC,eAAI,IAEjBC,eAAa,sCAAC,4GACOC,OAAQC,kBADf,OACZJ,EAAKK,MADO,mDAId,IAAMC,EAASR,gBAAS,WACtB,IAAMS,EAAcP,EAAKK,OAAS,GAClC,OAAKE,EAAYC,OACVD,EAAYE,KAAI,SAACC,GACtB,IAAIC,EAAa,KAMjB,OALAd,EAAaQ,MAAMO,SAAQ,SAACC,GACtBA,EAAEC,OAASJ,IACbC,EAAaE,MAGVF,KARuB,M,0VCvBlC,MAAMI,EAAc,EAEL,gB,0DCNf,IAAIC,EAAI,EAAQ,QACZC,EAAO,EAAQ,QAAgCR,IAC/CS,EAA+B,EAAQ,QAEvCC,EAAsBD,EAA6B,OAKvDF,EAAE,CAAEI,OAAQ,QAASC,OAAO,EAAMC,QAASH,GAAuB,CAChEV,IAAK,SAAac,GAChB,OAAON,EAAKO,KAAMD,EAAYE,UAAUjB,OAAS,EAAIiB,UAAU,QAAKC","file":"js/chunk-f69c766e.7fe57a21.js","sourcesContent":["export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./system.vue?vue&type=style&index=0&id=48de9761&lang=less\"","<template>\n <div class=\"system\">\n <PluginList\n v-if=\"system && !!system.length\"\n @downloadSuccess=\"downloadSuccess\"\n :title=\"$t('feature.market.systemTool')\"\n :list=\"system\"\n />\n </div>\n</template>\n\n<script setup>\nimport { ref, computed, onBeforeMount } from 'vue';\nimport request from '../../../assets/request/index';\nimport PluginList from './plugin-list.vue';\n\nimport { useStore } from 'vuex';\nconst store = useStore();\nconst totalPlugins = computed(() => store.state.totalPlugins);\n\nconst data = ref([]);\n\nonBeforeMount(async () => {\n data.value = await request.getSystemDetail();\n});\n\nconst system = computed(() => {\n const defaultData = data.value || [];\n if (!defaultData.length) return [];\n return defaultData.map((plugin) => {\n let searchInfo = null;\n totalPlugins.value.forEach((t) => {\n if (t.name === plugin) {\n searchInfo = t;\n }\n });\n return searchInfo;\n });\n});\n</script>\n\n<style lang=\"less\">\n.system {\n width: 100%;\n overflow-x: hidden;\n box-sizing: border-box;\n}\n</style>\n","import script from \"./system.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./system.vue?vue&type=script&setup=true&lang=js\"\n\nimport \"./system.vue?vue&type=style&index=0&id=48de9761&lang=less\"\n\nconst __exports__ = script;\n\nexport default __exports__","'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n\n// `Array.prototype.map` method\n// https://tc39.es/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n"],"sourceRoot":""}
|
38
public/feature/js/chunk-vendors.31673d31.js
Normal file
38
public/feature/js/chunk-vendors.31673d31.js
Normal file
File diff suppressed because one or more lines are too long
1
public/feature/js/chunk-vendors.31673d31.js.map
Normal file
1
public/feature/js/chunk-vendors.31673d31.js.map
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -9,7 +9,7 @@
|
||||
"pluginType": "ui",
|
||||
"features": [
|
||||
{
|
||||
"code": "market",
|
||||
"code": "finder",
|
||||
"explain": "插件市场",
|
||||
"cmds":[
|
||||
"插件市场"
|
||||
|
53
public/feature/report.html
Normal file
53
public/feature/report.html
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
2
src/common/constans/common.ts
Normal file
2
src/common/constans/common.ts
Normal file
@ -0,0 +1,2 @@
|
||||
export const WINDOW_WIDTH = 688;
|
||||
export const WINDOW_HEIGHT = 60;
|
@ -1,14 +1,16 @@
|
||||
export default {
|
||||
version: 0,
|
||||
version: 4,
|
||||
perf: {
|
||||
custom: {
|
||||
theme: 'SPRING',
|
||||
primaryColor: '#ff4ea4',
|
||||
errorColor: '#ed6d46',
|
||||
warningColor: '#e5a84b',
|
||||
successColor: '#c0d695',
|
||||
infoColor: '#aa8eeB',
|
||||
logo: `file://${__static}/logo.png`,
|
||||
placeholder: '你好 rubick',
|
||||
placeholder: '你好,Rubick!请输入插件关键词',
|
||||
username: 'Rubick',
|
||||
},
|
||||
shortCut: {
|
||||
showAndHidden: 'Option+R',
|
||||
|
@ -1,7 +1,7 @@
|
||||
const WINDOW_MAX_HEIGHT = 600;
|
||||
const WINDOW_MIN_HEIGHT = 60;
|
||||
const PRE_ITEM_HEIGHT = 60;
|
||||
const HISTORY_HEIGHT = 80;
|
||||
const HISTORY_HEIGHT = 70;
|
||||
|
||||
export default (searchList: Array<any>, historyList): number => {
|
||||
const defaultHeight = historyList.length ? HISTORY_HEIGHT : 0;
|
||||
|
@ -169,6 +169,8 @@ class AdapterHandler {
|
||||
cwd: this.baseDir,
|
||||
});
|
||||
|
||||
console.log(args);
|
||||
|
||||
let output = '';
|
||||
npm.stdout
|
||||
.on('data', (data: string) => {
|
||||
|
@ -3,6 +3,7 @@ import path from 'path';
|
||||
import { createProtocol } from 'vue-cli-plugin-electron-builder/lib';
|
||||
// import versonHandler from '../common/versionHandler';
|
||||
import localConfig from '@/main/common/initLocalConfig';
|
||||
import { WINDOW_HEIGHT, WINDOW_WIDTH } from '@/common/constans/common';
|
||||
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
||||
require('@electron/remote/main').initialize();
|
||||
|
||||
@ -17,10 +18,10 @@ export default () => {
|
||||
|
||||
const createWindow = async () => {
|
||||
win = new BrowserWindow({
|
||||
height: 60,
|
||||
height: WINDOW_HEIGHT,
|
||||
useContentSize: true,
|
||||
resizable: true,
|
||||
width: 800,
|
||||
width: WINDOW_WIDTH,
|
||||
frame: false,
|
||||
title: '拉比克',
|
||||
show: false,
|
||||
|
@ -57,8 +57,8 @@ export default () => {
|
||||
const viewReadyFn = async (window, { pluginSetting, ext }) => {
|
||||
if (!view) return;
|
||||
const height = pluginSetting && pluginSetting.height;
|
||||
window.setSize(800, height || 660);
|
||||
view.setBounds({ x: 0, y: 60, width: 800, height: height || 600 });
|
||||
window.setSize(800, height || 600);
|
||||
view.setBounds({ x: 0, y: 60, width: 800, height: height || 540 });
|
||||
view.setAutoResize({ width: true });
|
||||
executeHooks('PluginEnter', ext);
|
||||
executeHooks('PluginReady', ext);
|
||||
|
@ -6,7 +6,7 @@ const db = new DBInstance();
|
||||
|
||||
const localConfig = {
|
||||
async init(): Promise<any> {
|
||||
const localConfig = await db.dbGet({ data: { id: LOCAL_CONFIG_KEY } });
|
||||
const localConfig: any = await db.dbGet({ data: { id: LOCAL_CONFIG_KEY } });
|
||||
if (
|
||||
!localConfig ||
|
||||
!localConfig.data ||
|
||||
@ -16,8 +16,8 @@ const localConfig = {
|
||||
_id: LOCAL_CONFIG_KEY,
|
||||
data: defaultConfig,
|
||||
};
|
||||
if (localConfig && localConfig.data) {
|
||||
data._rev = localConfig.data._rev;
|
||||
if (localConfig && localConfig) {
|
||||
data._rev = localConfig._rev;
|
||||
}
|
||||
await db.dbPut({
|
||||
data: { data },
|
||||
|
@ -3,7 +3,6 @@ import {
|
||||
nativeTheme,
|
||||
BrowserWindow,
|
||||
BrowserView,
|
||||
screen,
|
||||
ipcMain,
|
||||
app,
|
||||
Notification,
|
||||
@ -21,6 +20,14 @@ const registerHotKey = (mainWindow: BrowserWindow): void => {
|
||||
openAsHidden: true,
|
||||
});
|
||||
};
|
||||
|
||||
const setTheme = async () => {
|
||||
mainWindow.webContents.executeJavaScript(`window.rubick.changeTheme()`);
|
||||
mainWindow.getBrowserViews().forEach((view: BrowserView) => {
|
||||
view.webContents.executeJavaScript(`window.rubick.changeTheme()`);
|
||||
});
|
||||
};
|
||||
|
||||
// 设置暗黑模式
|
||||
const setDarkMode = async () => {
|
||||
const config = await localConfig.getConfig();
|
||||
@ -51,6 +58,7 @@ const registerHotKey = (mainWindow: BrowserWindow): void => {
|
||||
const init = async () => {
|
||||
await setAutoLogin();
|
||||
await setDarkMode();
|
||||
await setTheme();
|
||||
const config = await localConfig.getConfig();
|
||||
globalShortcut.unregisterAll();
|
||||
// 注册偏好快捷键
|
||||
|
@ -4,8 +4,8 @@
|
||||
--color-text-desc: rgba(0, 0, 0, 0.45);
|
||||
// 背景色
|
||||
--color-body-bg: #fff;
|
||||
--color-menu-bg: #f3efef;
|
||||
--color-list-hover: #ebeee8;
|
||||
--color-menu-bg: rgb(248, 248, 248);
|
||||
--color-list-hover: rgba(247, 247, 247);
|
||||
--color-input-hover: #fff;
|
||||
// 边框
|
||||
--color-border-light: #f0f0f0;
|
||||
@ -18,8 +18,8 @@
|
||||
// 背景色
|
||||
--color-body-bg: #1c1c28;
|
||||
--color-menu-bg: #1c1c28;
|
||||
--color-list-hover: #33333d;
|
||||
--color-input-hover: #33333d;
|
||||
--color-list-hover: #2c2f3b;
|
||||
--color-input-hover: #444d;
|
||||
// 边框
|
||||
--color-border-light: #33333d;
|
||||
}
|
||||
|
@ -13,7 +13,7 @@
|
||||
v-for="(item, index) in pluginHistory"
|
||||
:key="index"
|
||||
>
|
||||
<a-avatar style="border-radius: 0" :src="item.icon" />
|
||||
<a-avatar style="width: 28px; height: 28px;" :src="item.icon" />
|
||||
<div class="name ellpise">{{item.pluginName || item._name || item.name}}</div>
|
||||
</a-col>
|
||||
</a-row>
|
||||
@ -117,21 +117,23 @@ const sort = (options) => {
|
||||
background: var(--color-body-bg);
|
||||
.history-plugins {
|
||||
width: 100%;
|
||||
border-top: 1px dashed #ddd;
|
||||
border-top: 1px dashed var(--color-border-light);
|
||||
box-sizing: border-box;
|
||||
.history-item {
|
||||
box-sizing: border-box;
|
||||
height: 79px;
|
||||
height: 69px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
flex-direction: column;
|
||||
border-right: 1px dashed #ddd;
|
||||
color: var(--color-text-content);
|
||||
border-right: 1px dashed var(--color-border-light);
|
||||
&.active {
|
||||
background: var(--color-list-hover);
|
||||
}
|
||||
}
|
||||
.name {
|
||||
font-size: 12px;
|
||||
margin-top: 4px;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
@ -146,7 +148,7 @@ const sort = (options) => {
|
||||
background: var(--color-body-bg);
|
||||
color: var(--color-text-content);
|
||||
border-color: var(--color-border-light);
|
||||
border-bottom: 1px solid var(--color-border-light);
|
||||
border-bottom: 1px solid var(--color-border-light) !important;
|
||||
&.active {
|
||||
background: var(--color-list-hover);
|
||||
}
|
||||
|
@ -1,51 +1,51 @@
|
||||
<template>
|
||||
<div class="rubick-select">
|
||||
<div class="select-tag" v-show="currentPlugin.cmd">
|
||||
{{ currentPlugin.cmd }}
|
||||
<div :class="currentPlugin.cmd ? 'rubick-tag' : ''">
|
||||
<img
|
||||
@click="() => emit('openMenu')"
|
||||
class="rubick-logo"
|
||||
:src="currentPlugin.logo || config.perf.custom.logo"
|
||||
/>
|
||||
<div class="select-tag" v-show="currentPlugin.cmd">
|
||||
{{ currentPlugin.cmd }}
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
:class="clipboardFile[0].name ? 'clipboard-tag' : 'clipboard-img'"
|
||||
v-if="!!clipboardFile.length"
|
||||
>
|
||||
<img :src="getIcon()" />
|
||||
<img style="margin-right: 8px" :src="getIcon()" />
|
||||
<div class="ellipse">{{ clipboardFile[0].name }}</div>
|
||||
<a-tag color="#aaa" v-if="clipboardFile.length > 1">{{
|
||||
clipboardFile.length
|
||||
}}</a-tag>
|
||||
<a-tag color="#aaa" v-if="clipboardFile.length > 1">
|
||||
{{ clipboardFile.length }}
|
||||
</a-tag>
|
||||
</div>
|
||||
<a-input
|
||||
id="search"
|
||||
ref="mainInput"
|
||||
class="main-input"
|
||||
@input="e => changeValue(e)"
|
||||
@keydown.down="e => keydownEvent(e, 'down')"
|
||||
@keydown.tab="e => keydownEvent(e, 'down')"
|
||||
@keydown.up="e => keydownEvent(e, 'up')"
|
||||
@keydown="e => checkNeedInit(e)"
|
||||
@input="(e) => changeValue(e)"
|
||||
@keydown.down="(e) => keydownEvent(e, 'down')"
|
||||
@keydown.tab="(e) => keydownEvent(e, 'down')"
|
||||
@keydown.up="(e) => keydownEvent(e, 'up')"
|
||||
@keydown="(e) => checkNeedInit(e)"
|
||||
:value="searchValue"
|
||||
:placeholder="placeholder || config.perf.custom.placeholder"
|
||||
@keypress.enter="e => keydownEvent(e, 'enter')"
|
||||
@keypress.space="e => keydownEvent(e, 'space')"
|
||||
:placeholder="
|
||||
pluginLoading
|
||||
? '更新检测中...'
|
||||
: placeholder || config.perf.custom.placeholder
|
||||
"
|
||||
@keypress.enter="(e) => keydownEvent(e, 'enter')"
|
||||
@keypress.space="(e) => keydownEvent(e, 'space')"
|
||||
@focus="emit('focus')"
|
||||
>
|
||||
<template #suffix>
|
||||
<div class="suffix-tool">
|
||||
<MoreOutlined v-show="!pluginLoading" @click="showSeparate()" class="icon-more" />
|
||||
<div
|
||||
v-if="currentPlugin && currentPlugin.logo"
|
||||
style="position: relative"
|
||||
>
|
||||
<div v-show="pluginLoading" class="update-tips">检测更新中...</div>
|
||||
<a-spin v-show="pluginLoading" class="loading">
|
||||
<template #indicator>
|
||||
<LoadingOutlined style="font-size: 42px" />
|
||||
</template>
|
||||
</a-spin>
|
||||
<img class="icon-tool" :src="currentPlugin.logo" />
|
||||
</div>
|
||||
<div @click="() => emit('openMenu')" v-else class="rubick-logo">
|
||||
<img :src="config.perf.custom.logo" />
|
||||
</div>
|
||||
<MoreOutlined
|
||||
v-show="!pluginLoading"
|
||||
@click="showSeparate()"
|
||||
class="icon-more"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
</a-input>
|
||||
@ -55,11 +55,11 @@
|
||||
<script setup lang="ts">
|
||||
import { defineProps, defineEmits, ref } from 'vue';
|
||||
import { ipcRenderer } from 'electron';
|
||||
import { LoadingOutlined, MoreOutlined } from '@ant-design/icons-vue';
|
||||
import { MoreOutlined } from '@ant-design/icons-vue';
|
||||
|
||||
const remote = window.require('@electron/remote');
|
||||
import localConfig from '../confOp';
|
||||
const { Menu, app } = remote;
|
||||
const { Menu } = remote;
|
||||
|
||||
const config: any = ref(localConfig.getConfig());
|
||||
|
||||
@ -78,8 +78,8 @@ const props: any = defineProps({
|
||||
clipboardFile: (() => [])(),
|
||||
});
|
||||
|
||||
const changeValue = e => {
|
||||
if (props.currentPlugin.name === 'rubick-system-feature') return;
|
||||
const changeValue = (e) => {
|
||||
// if (props.currentPlugin.name === 'rubick-system-feature') return;
|
||||
targetSearch({ value: e.target.value });
|
||||
emit('onSearch', e);
|
||||
};
|
||||
@ -109,7 +109,9 @@ const keydownEvent = (e, key: string) => {
|
||||
modifiers,
|
||||
},
|
||||
});
|
||||
const runPluginDisable = ((e.target.value === '' && !props.pluginHistory.length) || props.currentPlugin.name) ;
|
||||
const runPluginDisable =
|
||||
(e.target.value === '' && !props.pluginHistory.length) ||
|
||||
props.currentPlugin.name;
|
||||
switch (key) {
|
||||
case 'up':
|
||||
emit('changeCurrent', -1);
|
||||
@ -130,7 +132,7 @@ const keydownEvent = (e, key: string) => {
|
||||
}
|
||||
};
|
||||
|
||||
const checkNeedInit = e => {
|
||||
const checkNeedInit = (e) => {
|
||||
const { ctrlKey, metaKey } = e;
|
||||
|
||||
if (e.target.value === '' && e.keyCode === 8) {
|
||||
@ -262,7 +264,7 @@ window.rubick.hooks.onHide = () => {
|
||||
<style lang="less">
|
||||
.rubick-select {
|
||||
display: flex;
|
||||
padding-left: 10px;
|
||||
padding-left: 16px;
|
||||
background: var(--color-body-bg);
|
||||
position: fixed;
|
||||
top: 0;
|
||||
@ -278,20 +280,21 @@ window.rubick.hooks.onHide = () => {
|
||||
white-space: nowrap;
|
||||
max-width: 200px;
|
||||
}
|
||||
|
||||
.rubick-tag {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding: 4px 8px;
|
||||
height: 40px;
|
||||
border-radius: 9px;
|
||||
background: var(--color-list-hover);
|
||||
}
|
||||
.select-tag {
|
||||
white-space: pre;
|
||||
user-select: none;
|
||||
font-size: 18px;
|
||||
border-radius: 16px;
|
||||
height: 32px;
|
||||
position: relative;
|
||||
color: #fff;
|
||||
background-color: var(--ant-primary-color);
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
margin-right: 1px;
|
||||
padding: 0 10px;
|
||||
font-size: 16px;
|
||||
color: var(--color-text-primary);
|
||||
margin-left: 8px;
|
||||
}
|
||||
|
||||
.main-input {
|
||||
@ -302,18 +305,23 @@ window.rubick.hooks.onHide = () => {
|
||||
outline: none;
|
||||
box-shadow: none !important;
|
||||
background: var(--color-body-bg);
|
||||
padding-left: 8px;
|
||||
.ant-select-selection,
|
||||
.ant-input,
|
||||
.ant-select-selection__rendered {
|
||||
caret-color: var(--ant-primary-color);
|
||||
height: 100% !important;
|
||||
font-size: 22px;
|
||||
font-size: 16px;
|
||||
border: none !important;
|
||||
background: var(--color-body-bg);
|
||||
color: var(--color-text-primary);
|
||||
}
|
||||
}
|
||||
|
||||
.rubick-logo,
|
||||
.rubick-logo {
|
||||
width: 32px;
|
||||
border-radius: 100%;
|
||||
}
|
||||
.icon-tool {
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
|
@ -9,6 +9,7 @@ import {
|
||||
ConfigProvider,
|
||||
Row,
|
||||
Col,
|
||||
Divider,
|
||||
} from 'ant-design-vue';
|
||||
import App from './App.vue';
|
||||
import localConfig from './confOp';
|
||||
@ -21,6 +22,13 @@ ConfigProvider.config({
|
||||
theme: config.perf.custom || {},
|
||||
});
|
||||
|
||||
window.rubick.changeTheme = () => {
|
||||
const config: any = localConfig.getConfig();
|
||||
ConfigProvider.config({
|
||||
theme: config.perf.custom || {},
|
||||
});
|
||||
};
|
||||
|
||||
createApp(App)
|
||||
.use(Button)
|
||||
.use(List)
|
||||
@ -30,4 +38,5 @@ createApp(App)
|
||||
.use(Tag)
|
||||
.use(Row)
|
||||
.use(Col)
|
||||
.use(Divider)
|
||||
.mount('#app');
|
||||
|
Loading…
x
Reference in New Issue
Block a user