mirror of
https://github.com/Kuingsmile/PicList.git
synced 2026-05-06 20:42:57 +08:00
✨ Feature(custom): support open and edit config file in software
This commit is contained in:
@@ -9,12 +9,13 @@
|
|||||||
|
|
||||||
#### ⚙️ 核心功能
|
#### ⚙️ 核心功能
|
||||||
|
|
||||||
- 现在支持手动关闭 GPU 加速,解决部分硬件兼容性导致的黑屏或闪烁问题。
|
- 现在支持软件内编辑配置文件并保存
|
||||||
- 新增高级动画设置,开启后可获得更佳的 UI 交互体验。
|
|
||||||
- Windows 便携模式,无需安装运行,数据存储在程序目录下的 `data` 文件夹中,且支持自动更新。
|
- Windows 便携模式,无需安装运行,数据存储在程序目录下的 `data` 文件夹中,且支持自动更新。
|
||||||
- Linux 新增 `rpm` 安装包。
|
- Linux 新增 `rpm` 安装包。
|
||||||
- 新增图床编辑卡片页面,解决多配置切换时的混乱问题。
|
- 新增图床编辑卡片页面,解决多配置切换时的混乱问题。
|
||||||
- 文件浏览页面新增列表模式支持。
|
- 文件浏览页面新增列表模式支持。
|
||||||
|
- 现在支持手动关闭 GPU 加速,解决部分硬件兼容性导致的黑屏或闪烁问题。
|
||||||
|
- 新增高级动画设置,开启后可获得更佳的 UI 交互体验。
|
||||||
|
|
||||||
#### 🎨 UI 界面
|
#### 🎨 UI 界面
|
||||||
|
|
||||||
|
|||||||
@@ -83,6 +83,13 @@
|
|||||||
"yaml": "^2.8.2"
|
"yaml": "^2.8.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@codemirror/commands": "^6.10.1",
|
||||||
|
"@codemirror/lang-javascript": "^6.2.4",
|
||||||
|
"@codemirror/lang-json": "^6.0.2",
|
||||||
|
"@codemirror/search": "^6.6.0",
|
||||||
|
"@codemirror/state": "^6.5.4",
|
||||||
|
"@codemirror/theme-one-dark": "^6.1.3",
|
||||||
|
"@codemirror/view": "^6.39.11",
|
||||||
"@electron/notarize": "^3.1.1",
|
"@electron/notarize": "^3.1.1",
|
||||||
"@eslint/js": "^9.39.2",
|
"@eslint/js": "^9.39.2",
|
||||||
"@headlessui/vue": "^1.7.23",
|
"@headlessui/vue": "^1.7.23",
|
||||||
@@ -105,6 +112,7 @@
|
|||||||
"@vitejs/plugin-vue": "^6.0.3",
|
"@vitejs/plugin-vue": "^6.0.3",
|
||||||
"@vueuse/core": "^14.1.0",
|
"@vueuse/core": "^14.1.0",
|
||||||
"baseline-browser-mapping": "^2.9.13",
|
"baseline-browser-mapping": "^2.9.13",
|
||||||
|
"codemirror": "^6.0.2",
|
||||||
"dexie": "^3.2.4",
|
"dexie": "^3.2.4",
|
||||||
"dotenv": "^17.2.3",
|
"dotenv": "^17.2.3",
|
||||||
"dpdm": "^3.14.0",
|
"dpdm": "^3.14.0",
|
||||||
|
|||||||
@@ -42,6 +42,24 @@ export default [
|
|||||||
shell.openPath(abFilePath)
|
shell.openPath(abFilePath)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
action: IRPCActionType.READ_FILE_CONTENT,
|
||||||
|
handler: async (_: IIPCEvent, args: [fileName: string]) => {
|
||||||
|
const abFilePath = path.join(STORE_PATH, args[0])
|
||||||
|
if (!fs.existsSync(abFilePath)) {
|
||||||
|
fs.writeFileSync(abFilePath, '')
|
||||||
|
}
|
||||||
|
return fs.readFileSync(abFilePath, 'utf-8')
|
||||||
|
},
|
||||||
|
type: IRPCType.INVOKE,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
action: IRPCActionType.WRITE_FILE_CONTENT,
|
||||||
|
handler: async (_: IIPCEvent, args: [fileName: string, content: string]) => {
|
||||||
|
const abFilePath = path.join(STORE_PATH, args[0])
|
||||||
|
fs.writeFileSync(abFilePath, args[1], 'utf-8')
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
action: IRPCActionType.PICLIST_OPEN_DIRECTORY,
|
action: IRPCActionType.PICLIST_OPEN_DIRECTORY,
|
||||||
handler: async (_: IIPCEvent, args: [dirPath?: string, inStorePath?: boolean]) => {
|
handler: async (_: IIPCEvent, args: [dirPath?: string, inStorePath?: boolean]) => {
|
||||||
|
|||||||
@@ -138,4 +138,11 @@ export default [
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
action: IRPCActionType.RELOAD_WINDOW,
|
||||||
|
handler: async () => {
|
||||||
|
const window = BrowserWindow.getFocusedWindow()
|
||||||
|
window?.webContents.reload()
|
||||||
|
},
|
||||||
|
},
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -123,6 +123,9 @@ export const IRPCActionType = {
|
|||||||
PICLIST_OPEN_DIRECTORY: 'PICLIST_OPEN_DIRECTORY',
|
PICLIST_OPEN_DIRECTORY: 'PICLIST_OPEN_DIRECTORY',
|
||||||
PICLIST_AUTO_START: 'PICLIST_AUTO_START',
|
PICLIST_AUTO_START: 'PICLIST_AUTO_START',
|
||||||
PICLIST_AUTO_START_STATUS: 'PICLIST_AUTO_START_STATUS',
|
PICLIST_AUTO_START_STATUS: 'PICLIST_AUTO_START_STATUS',
|
||||||
|
READ_FILE_CONTENT: 'READ_FILE_CONTENT',
|
||||||
|
WRITE_FILE_CONTENT: 'WRITE_FILE_CONTENT',
|
||||||
|
RELOAD_WINDOW: 'RELOAD_WINDOW',
|
||||||
|
|
||||||
// shortkey setting rpc
|
// shortkey setting rpc
|
||||||
SHORTKEY_UPDATE: 'SHORTKEY_UPDATE',
|
SHORTKEY_UPDATE: 'SHORTKEY_UPDATE',
|
||||||
|
|||||||
99
src/renderer/components/Editor.vue
Normal file
99
src/renderer/components/Editor.vue
Normal file
@@ -0,0 +1,99 @@
|
|||||||
|
<template>
|
||||||
|
<div ref="editorRef" class="h-full w-full overflow-hidden rounded-[4px]"></div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { defaultKeymap, history, historyKeymap } from '@codemirror/commands'
|
||||||
|
import { javascript } from '@codemirror/lang-javascript'
|
||||||
|
import { json } from '@codemirror/lang-json'
|
||||||
|
import { openSearchPanel, search, searchKeymap } from '@codemirror/search'
|
||||||
|
import { EditorState } from '@codemirror/state'
|
||||||
|
import { oneDark } from '@codemirror/theme-one-dark'
|
||||||
|
import { EditorView, keymap, lineNumbers } from '@codemirror/view'
|
||||||
|
import { onBeforeUnmount, onMounted, ref, shallowRef, watch } from 'vue'
|
||||||
|
const props = defineProps({
|
||||||
|
modelValue: { type: String, default: '' },
|
||||||
|
language: { type: String, default: 'javascript' },
|
||||||
|
})
|
||||||
|
|
||||||
|
const emit = defineEmits(['update:modelValue'])
|
||||||
|
const editorRef = ref(null)
|
||||||
|
const view = shallowRef(null)
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
const startState = EditorState.create({
|
||||||
|
doc: props.modelValue,
|
||||||
|
extensions: [
|
||||||
|
lineNumbers(),
|
||||||
|
history(),
|
||||||
|
keymap.of([...defaultKeymap, ...historyKeymap]),
|
||||||
|
json(),
|
||||||
|
javascript(),
|
||||||
|
oneDark,
|
||||||
|
search({ top: true }),
|
||||||
|
keymap.of([...searchKeymap]),
|
||||||
|
EditorView.lineWrapping,
|
||||||
|
EditorView.updateListener.of(update => {
|
||||||
|
if (update.docChanged) {
|
||||||
|
emit('update:modelValue', update.state.doc.toString())
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
],
|
||||||
|
})
|
||||||
|
|
||||||
|
view.value = new EditorView({
|
||||||
|
state: startState,
|
||||||
|
parent: editorRef.value,
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
watch(
|
||||||
|
() => props.modelValue,
|
||||||
|
newVal => {
|
||||||
|
const currVal = view.value?.state.doc.toString()
|
||||||
|
if (view.value && newVal !== currVal) {
|
||||||
|
view.value.dispatch({
|
||||||
|
changes: { from: 0, to: currVal.length, insert: newVal },
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
openSearchPanel(view.value)
|
||||||
|
})
|
||||||
|
|
||||||
|
onBeforeUnmount(() => {
|
||||||
|
view.value?.destroy()
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
@import 'tailwindcss' reference;
|
||||||
|
@import '../assets/css/theme.css' reference;
|
||||||
|
@import '../assets/css/utilities.css' reference;
|
||||||
|
|
||||||
|
:deep(.cm-editor) {
|
||||||
|
@apply h-full;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.cm-scroller) {
|
||||||
|
@apply font-['Fira_Code','SF_Mono',Monaco,Menlo,'Ubuntu_Mono',monospace];
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.cm-search) {
|
||||||
|
@apply border-b border-b-[#181a1f] bg-[#282c34] p-2! text-[#abb2bf];
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.cm-search input) {
|
||||||
|
@apply mr-2 rounded-md border border-[#181a1f] bg-[#21252b] px-2 py-1 text-white;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.cm-search button) {
|
||||||
|
@apply cursor-pointer rounded-md border-none bg-[#3e4451] font-medium text-[#ecefe4];
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.cm-search button:hover) {
|
||||||
|
@apply bg-[#4b5263];
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -6,8 +6,10 @@
|
|||||||
"cancel": "Cancel",
|
"cancel": "Cancel",
|
||||||
"close": "Close",
|
"close": "Close",
|
||||||
"confirm": "Confirm",
|
"confirm": "Confirm",
|
||||||
|
"edit": "Edit",
|
||||||
"import": "Import",
|
"import": "Import",
|
||||||
"reset": "Reset",
|
"reset": "Reset",
|
||||||
|
"save": "Save",
|
||||||
"submit": "Submit",
|
"submit": "Submit",
|
||||||
"version": "Version"
|
"version": "Version"
|
||||||
},
|
},
|
||||||
@@ -718,6 +720,7 @@
|
|||||||
"enableServer": "Enable Upload API Service",
|
"enableServer": "Enable Upload API Service",
|
||||||
"enableWebServer": "Enable Web Server",
|
"enableWebServer": "Enable Web Server",
|
||||||
"guiLogFile": "GUI Log File",
|
"guiLogFile": "GUI Log File",
|
||||||
|
"invalidJson": "Invalid JSON format",
|
||||||
"logDialogDesc": "View log files and configure log settings",
|
"logDialogDesc": "View log files and configure log settings",
|
||||||
"logFile": "General Log File",
|
"logFile": "General Log File",
|
||||||
"logFilePath": "Log File Path",
|
"logFilePath": "Log File Path",
|
||||||
@@ -739,6 +742,8 @@
|
|||||||
"pluginInstallMirror": "Plugin Install Mirror",
|
"pluginInstallMirror": "Plugin Install Mirror",
|
||||||
"pluginInstallProxy": "Plugin Install Proxy",
|
"pluginInstallProxy": "Plugin Install Proxy",
|
||||||
"proxyDialogDesc": "Configure network proxy and plugin mirrors",
|
"proxyDialogDesc": "Configure network proxy and plugin mirrors",
|
||||||
|
"saveFileFailed": "failed to save file",
|
||||||
|
"saveFileSuccess": "file saved successfully",
|
||||||
"serverConfig": "Server Configuration",
|
"serverConfig": "Server Configuration",
|
||||||
"serverDialogDesc": "Configure upload API service connection parameters",
|
"serverDialogDesc": "Configure upload API service connection parameters",
|
||||||
"serverEncryptionKey": "API Data Encryption Key",
|
"serverEncryptionKey": "API Data Encryption Key",
|
||||||
@@ -777,6 +782,7 @@
|
|||||||
"commonConfig": "Common Configuration",
|
"commonConfig": "Common Configuration",
|
||||||
"configureSync": "Platform Config",
|
"configureSync": "Platform Config",
|
||||||
"downloadSettings": "Download Settings",
|
"downloadSettings": "Download Settings",
|
||||||
|
"editConfigFile": "Edit Configuration File",
|
||||||
"fileManagement": "File Management",
|
"fileManagement": "File Management",
|
||||||
"galleryDB": "Gallery Database Sync",
|
"galleryDB": "Gallery Database Sync",
|
||||||
"gitea": {
|
"gitea": {
|
||||||
|
|||||||
@@ -6,8 +6,10 @@
|
|||||||
"cancel": "取消",
|
"cancel": "取消",
|
||||||
"close": "关闭",
|
"close": "关闭",
|
||||||
"confirm": "确认",
|
"confirm": "确认",
|
||||||
|
"edit": "编辑",
|
||||||
"import": "导入",
|
"import": "导入",
|
||||||
"reset": "重置",
|
"reset": "重置",
|
||||||
|
"save": "保存",
|
||||||
"submit": "提交",
|
"submit": "提交",
|
||||||
"version": "版本"
|
"version": "版本"
|
||||||
},
|
},
|
||||||
@@ -718,6 +720,7 @@
|
|||||||
"enableServer": "是否开启上传API服务",
|
"enableServer": "是否开启上传API服务",
|
||||||
"enableWebServer": "是否开启 Web 服务",
|
"enableWebServer": "是否开启 Web 服务",
|
||||||
"guiLogFile": "GUI 日志文件",
|
"guiLogFile": "GUI 日志文件",
|
||||||
|
"invalidJson": "无效的JSON格式",
|
||||||
"logDialogDesc": "查看日志文件和配置日志设置",
|
"logDialogDesc": "查看日志文件和配置日志设置",
|
||||||
"logFile": "常规日志文件",
|
"logFile": "常规日志文件",
|
||||||
"logFilePath": "日志文件路径",
|
"logFilePath": "日志文件路径",
|
||||||
@@ -739,6 +742,8 @@
|
|||||||
"pluginInstallMirror": "插件安装镜像",
|
"pluginInstallMirror": "插件安装镜像",
|
||||||
"pluginInstallProxy": "插件安装代理",
|
"pluginInstallProxy": "插件安装代理",
|
||||||
"proxyDialogDesc": "配置网络代理和插件安装镜像",
|
"proxyDialogDesc": "配置网络代理和插件安装镜像",
|
||||||
|
"saveFileFailed": "文件保存失败",
|
||||||
|
"saveFileSuccess": "文件保存成功",
|
||||||
"serverConfig": "服务器配置",
|
"serverConfig": "服务器配置",
|
||||||
"serverDialogDesc": "配置上传 API 服务的连接参数",
|
"serverDialogDesc": "配置上传 API 服务的连接参数",
|
||||||
"serverEncryptionKey": "接口数据加密密钥",
|
"serverEncryptionKey": "接口数据加密密钥",
|
||||||
@@ -777,6 +782,7 @@
|
|||||||
"commonConfig": "通用配置",
|
"commonConfig": "通用配置",
|
||||||
"configureSync": "平台设置",
|
"configureSync": "平台设置",
|
||||||
"downloadSettings": "下载配置",
|
"downloadSettings": "下载配置",
|
||||||
|
"editConfigFile": "编辑配置文件",
|
||||||
"fileManagement": "文件管理",
|
"fileManagement": "文件管理",
|
||||||
"galleryDB": "相册数据库同步",
|
"galleryDB": "相册数据库同步",
|
||||||
"gitea": {
|
"gitea": {
|
||||||
|
|||||||
@@ -6,8 +6,10 @@
|
|||||||
"cancel": "取消",
|
"cancel": "取消",
|
||||||
"close": "關閉",
|
"close": "關閉",
|
||||||
"confirm": "確認",
|
"confirm": "確認",
|
||||||
|
"edit": "編輯",
|
||||||
"import": "匯入",
|
"import": "匯入",
|
||||||
"reset": "重置",
|
"reset": "重置",
|
||||||
|
"save": "保存",
|
||||||
"submit": "提交",
|
"submit": "提交",
|
||||||
"version": "版本"
|
"version": "版本"
|
||||||
},
|
},
|
||||||
@@ -718,6 +720,7 @@
|
|||||||
"enableServer": "是否開啟上傳API服務",
|
"enableServer": "是否開啟上傳API服務",
|
||||||
"enableWebServer": "是否開啟 Web 服務",
|
"enableWebServer": "是否開啟 Web 服務",
|
||||||
"guiLogFile": "GUI 日誌文件",
|
"guiLogFile": "GUI 日誌文件",
|
||||||
|
"invalidJson": "無效的 JSON 格式",
|
||||||
"logDialogDesc": "查看日誌文件和配置日誌設置",
|
"logDialogDesc": "查看日誌文件和配置日誌設置",
|
||||||
"logFile": "常規日誌文件",
|
"logFile": "常規日誌文件",
|
||||||
"logFilePath": "日誌文件路徑",
|
"logFilePath": "日誌文件路徑",
|
||||||
@@ -739,6 +742,8 @@
|
|||||||
"pluginInstallMirror": "插件安裝鏡像",
|
"pluginInstallMirror": "插件安裝鏡像",
|
||||||
"pluginInstallProxy": "插件安裝代理",
|
"pluginInstallProxy": "插件安裝代理",
|
||||||
"proxyDialogDesc": "配置網絡代理和插件安裝鏡像",
|
"proxyDialogDesc": "配置網絡代理和插件安裝鏡像",
|
||||||
|
"saveFileFailed": "文件保存失敗",
|
||||||
|
"saveFileSuccess": "文件保存成功",
|
||||||
"serverConfig": "伺服器配置",
|
"serverConfig": "伺服器配置",
|
||||||
"serverDialogDesc": "配置上傳 API 服務的連接參數",
|
"serverDialogDesc": "配置上傳 API 服務的連接參數",
|
||||||
"serverEncryptionKey": "接口數據加密密鑰",
|
"serverEncryptionKey": "接口數據加密密鑰",
|
||||||
@@ -777,6 +782,7 @@
|
|||||||
"commonConfig": "通用配置",
|
"commonConfig": "通用配置",
|
||||||
"configureSync": "平台配置",
|
"configureSync": "平台配置",
|
||||||
"downloadSettings": "下載配置",
|
"downloadSettings": "下載配置",
|
||||||
|
"editConfigFile": "編輯配置文件",
|
||||||
"fileManagement": "文件管理",
|
"fileManagement": "文件管理",
|
||||||
"galleryDB": "相冊數據庫同步",
|
"galleryDB": "相冊數據庫同步",
|
||||||
"gitea": {
|
"gitea": {
|
||||||
|
|||||||
@@ -274,6 +274,11 @@
|
|||||||
:icon="FileText"
|
:icon="FileText"
|
||||||
@click="openFile('data.json')"
|
@click="openFile('data.json')"
|
||||||
/>
|
/>
|
||||||
|
<CustomNavCard
|
||||||
|
:title="t('pages.settings.sync.editConfigFile')"
|
||||||
|
:icon="Edit"
|
||||||
|
@click="editFile('data.json')"
|
||||||
|
/>
|
||||||
<CustomNavCard
|
<CustomNavCard
|
||||||
:title="t('pages.settings.sync.openConfigFileDir')"
|
:title="t('pages.settings.sync.openConfigFileDir')"
|
||||||
:icon="FolderOpen"
|
:icon="FolderOpen"
|
||||||
@@ -1213,6 +1218,14 @@
|
|||||||
>
|
>
|
||||||
<ImageProcessSetting :config-id="''" :current-picbed-name="''" />
|
<ImageProcessSetting :config-id="''" :current-picbed-name="''" />
|
||||||
</CustomModal>
|
</CustomModal>
|
||||||
|
|
||||||
|
<CustomModal v-if="editorVisible" v-model:visible="editorVisible" :title="t('common.edit')">
|
||||||
|
<Editor v-model="editorContent" language="json" />
|
||||||
|
<template #footer>
|
||||||
|
<CustomButton type="secondary" :text="t('common.cancel')" @click="editorVisible = false" />
|
||||||
|
<CustomButton type="primary" :text="t('common.save')" @click="saveEditorContent" />
|
||||||
|
</template>
|
||||||
|
</CustomModal>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -1257,6 +1270,7 @@ import MultiSelect from '@/components/common/MultiSelect.vue'
|
|||||||
import placeholderTable from '@/components/common/PlaceholderTable.vue'
|
import placeholderTable from '@/components/common/PlaceholderTable.vue'
|
||||||
import SettingCard from '@/components/common/SettingCard.vue'
|
import SettingCard from '@/components/common/SettingCard.vue'
|
||||||
import SettingSection from '@/components/common/SettingSection.vue'
|
import SettingSection from '@/components/common/SettingSection.vue'
|
||||||
|
import Editor from '@/components/Editor.vue'
|
||||||
import ImageProcessSetting from '@/components/ImageProcessSetting.vue'
|
import ImageProcessSetting from '@/components/ImageProcessSetting.vue'
|
||||||
import useConfirm from '@/hooks/useConfirm'
|
import useConfirm from '@/hooks/useConfirm'
|
||||||
import { osGlobal, usePicBed } from '@/hooks/useGlobal'
|
import { osGlobal, usePicBed } from '@/hooks/useGlobal'
|
||||||
@@ -1296,6 +1310,8 @@ const webServerVisible = ref(false)
|
|||||||
const syncVisible = ref(false)
|
const syncVisible = ref(false)
|
||||||
const upDownConfigVisible = ref(false)
|
const upDownConfigVisible = ref(false)
|
||||||
const proxyVisible = ref(false)
|
const proxyVisible = ref(false)
|
||||||
|
const editorVisible = ref(false)
|
||||||
|
const editorContent = ref('// 在这里开始编写代码...\nfunction hello() {\n console.log("Hello Electron!");\n}')
|
||||||
|
|
||||||
const latestVersion = ref('')
|
const latestVersion = ref('')
|
||||||
const releaseNotes = ref('')
|
const releaseNotes = ref('')
|
||||||
@@ -1829,10 +1845,53 @@ async function handleChangeSecondPicBed() {
|
|||||||
window.electron.sendRPC(IRPCActionType.SHOW_SECOND_UPLOADER_MENU)
|
window.electron.sendRPC(IRPCActionType.SHOW_SECOND_UPLOADER_MENU)
|
||||||
}
|
}
|
||||||
|
|
||||||
function openFile(file: string) {
|
async function saveEditorContent() {
|
||||||
|
const content = editorContent.value.trim()
|
||||||
|
await saveFile('data.json', content, 'json')
|
||||||
|
editorVisible.value = false
|
||||||
|
}
|
||||||
|
|
||||||
|
async function openFile(file: string) {
|
||||||
window.electron.sendRPC(IRPCActionType.PICLIST_OPEN_FILE, file)
|
window.electron.sendRPC(IRPCActionType.PICLIST_OPEN_FILE, file)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function editFile(file: string, mode: 'text' | 'json' = 'text') {
|
||||||
|
const content = (await window.electron.triggerRPC<string>(IRPCActionType.READ_FILE_CONTENT, file)) || ''
|
||||||
|
if (mode === 'json') {
|
||||||
|
try {
|
||||||
|
editorContent.value = JSON.stringify(JSON.parse(content), null, 2)
|
||||||
|
} catch (error) {
|
||||||
|
editorContent.value = content
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
editorContent.value = content
|
||||||
|
}
|
||||||
|
editorVisible.value = true
|
||||||
|
}
|
||||||
|
|
||||||
|
async function saveFile(file: string, content: string, mode: 'text' | 'json' = 'text') {
|
||||||
|
let dataToSave = content
|
||||||
|
if (mode === 'json') {
|
||||||
|
try {
|
||||||
|
dataToSave = JSON.stringify(JSON.parse(content), null, 2)
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Invalid JSON content:', error)
|
||||||
|
message.error(t('pages.settings.advanced.invalidJson'))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
window.electron.sendRPC(IRPCActionType.WRITE_FILE_CONTENT, file, dataToSave)
|
||||||
|
message.success(t('pages.settings.advanced.saveFileSuccess'))
|
||||||
|
setTimeout(() => {
|
||||||
|
window.electron.sendRPC(IRPCActionType.RELOAD_WINDOW)
|
||||||
|
}, 1000)
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Failed to save file:', error)
|
||||||
|
message.error(t('pages.settings.advanced.saveFileFailed'))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function openDirectory(directory?: string, inStorePath = true) {
|
function openDirectory(directory?: string, inStorePath = true) {
|
||||||
window.electron.sendRPC(IRPCActionType.PICLIST_OPEN_DIRECTORY, directory, inStorePath)
|
window.electron.sendRPC(IRPCActionType.PICLIST_OPEN_DIRECTORY, directory, inStorePath)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -65,6 +65,9 @@ export const IRPCActionType = {
|
|||||||
PICLIST_OPEN_DIRECTORY: 'PICLIST_OPEN_DIRECTORY',
|
PICLIST_OPEN_DIRECTORY: 'PICLIST_OPEN_DIRECTORY',
|
||||||
PICLIST_AUTO_START: 'PICLIST_AUTO_START',
|
PICLIST_AUTO_START: 'PICLIST_AUTO_START',
|
||||||
PICLIST_AUTO_START_STATUS: 'PICLIST_AUTO_START_STATUS',
|
PICLIST_AUTO_START_STATUS: 'PICLIST_AUTO_START_STATUS',
|
||||||
|
READ_FILE_CONTENT: 'READ_FILE_CONTENT',
|
||||||
|
WRITE_FILE_CONTENT: 'WRITE_FILE_CONTENT',
|
||||||
|
RELOAD_WINDOW: 'RELOAD_WINDOW',
|
||||||
|
|
||||||
// shortkey setting rpc
|
// shortkey setting rpc
|
||||||
SHORTKEY_UPDATE: 'SHORTKEY_UPDATE',
|
SHORTKEY_UPDATE: 'SHORTKEY_UPDATE',
|
||||||
|
|||||||
168
yarn.lock
168
yarn.lock
@@ -997,6 +997,104 @@
|
|||||||
hashery "^1.3.0"
|
hashery "^1.3.0"
|
||||||
keyv "^5.5.5"
|
keyv "^5.5.5"
|
||||||
|
|
||||||
|
"@codemirror/autocomplete@^6.0.0":
|
||||||
|
version "6.20.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@codemirror/autocomplete/-/autocomplete-6.20.0.tgz#db818c12dce892a93fb8abadc2426febb002f8c1"
|
||||||
|
integrity sha512-bOwvTOIJcG5FVo5gUUupiwYh8MioPLQ4UcqbcRf7UQ98X90tCa9E1kZ3Z7tqwpZxYyOvh1YTYbmZE9RTfTp5hg==
|
||||||
|
dependencies:
|
||||||
|
"@codemirror/language" "^6.0.0"
|
||||||
|
"@codemirror/state" "^6.0.0"
|
||||||
|
"@codemirror/view" "^6.17.0"
|
||||||
|
"@lezer/common" "^1.0.0"
|
||||||
|
|
||||||
|
"@codemirror/commands@^6.0.0", "@codemirror/commands@^6.10.1":
|
||||||
|
version "6.10.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@codemirror/commands/-/commands-6.10.1.tgz#a17a48f846947f48150b9670a3de8c4352b69256"
|
||||||
|
integrity sha512-uWDWFypNdQmz2y1LaNJzK7fL7TYKLeUAU0npEC685OKTF3KcQ2Vu3klIM78D7I6wGhktme0lh3CuQLv0ZCrD9Q==
|
||||||
|
dependencies:
|
||||||
|
"@codemirror/language" "^6.0.0"
|
||||||
|
"@codemirror/state" "^6.4.0"
|
||||||
|
"@codemirror/view" "^6.27.0"
|
||||||
|
"@lezer/common" "^1.1.0"
|
||||||
|
|
||||||
|
"@codemirror/lang-javascript@^6.2.4":
|
||||||
|
version "6.2.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/@codemirror/lang-javascript/-/lang-javascript-6.2.4.tgz#eef2227d1892aae762f3a0f212f72bec868a02c5"
|
||||||
|
integrity sha512-0WVmhp1QOqZ4Rt6GlVGwKJN3KW7Xh4H2q8ZZNGZaP6lRdxXJzmjm4FqvmOojVj6khWJHIb9sp7U/72W7xQgqAA==
|
||||||
|
dependencies:
|
||||||
|
"@codemirror/autocomplete" "^6.0.0"
|
||||||
|
"@codemirror/language" "^6.6.0"
|
||||||
|
"@codemirror/lint" "^6.0.0"
|
||||||
|
"@codemirror/state" "^6.0.0"
|
||||||
|
"@codemirror/view" "^6.17.0"
|
||||||
|
"@lezer/common" "^1.0.0"
|
||||||
|
"@lezer/javascript" "^1.0.0"
|
||||||
|
|
||||||
|
"@codemirror/lang-json@^6.0.2":
|
||||||
|
version "6.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@codemirror/lang-json/-/lang-json-6.0.2.tgz#054b160671306667e25d80385286049841836179"
|
||||||
|
integrity sha512-x2OtO+AvwEHrEwR0FyyPtfDUiloG3rnVTSZV1W8UteaLL8/MajQd8DpvUb2YVzC+/T18aSDv0H9mu+xw0EStoQ==
|
||||||
|
dependencies:
|
||||||
|
"@codemirror/language" "^6.0.0"
|
||||||
|
"@lezer/json" "^1.0.0"
|
||||||
|
|
||||||
|
"@codemirror/language@^6.0.0", "@codemirror/language@^6.6.0":
|
||||||
|
version "6.12.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@codemirror/language/-/language-6.12.1.tgz#d615f7b099a39248312feaaf0bfafce4418aac1b"
|
||||||
|
integrity sha512-Fa6xkSiuGKc8XC8Cn96T+TQHYj4ZZ7RdFmXA3i9xe/3hLHfwPZdM+dqfX0Cp0zQklBKhVD8Yzc8LS45rkqcwpQ==
|
||||||
|
dependencies:
|
||||||
|
"@codemirror/state" "^6.0.0"
|
||||||
|
"@codemirror/view" "^6.23.0"
|
||||||
|
"@lezer/common" "^1.5.0"
|
||||||
|
"@lezer/highlight" "^1.0.0"
|
||||||
|
"@lezer/lr" "^1.0.0"
|
||||||
|
style-mod "^4.0.0"
|
||||||
|
|
||||||
|
"@codemirror/lint@^6.0.0":
|
||||||
|
version "6.9.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@codemirror/lint/-/lint-6.9.2.tgz#09ed0aedec13381c9e36e1ac5d126027740c3ef4"
|
||||||
|
integrity sha512-sv3DylBiIyi+xKwRCJAAsBZZZWo82shJ/RTMymLabAdtbkV5cSKwWDeCgtUq3v8flTaXS2y1kKkICuRYtUswyQ==
|
||||||
|
dependencies:
|
||||||
|
"@codemirror/state" "^6.0.0"
|
||||||
|
"@codemirror/view" "^6.35.0"
|
||||||
|
crelt "^1.0.5"
|
||||||
|
|
||||||
|
"@codemirror/search@^6.0.0", "@codemirror/search@^6.6.0":
|
||||||
|
version "6.6.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@codemirror/search/-/search-6.6.0.tgz#3b83a1e35391e1575a83a3b485e3f95263ddaa0b"
|
||||||
|
integrity sha512-koFuNXcDvyyotWcgOnZGmY7LZqEOXZaaxD/j6n18TCLx2/9HieZJ5H6hs1g8FiRxBD0DNfs0nXn17g872RmYdw==
|
||||||
|
dependencies:
|
||||||
|
"@codemirror/state" "^6.0.0"
|
||||||
|
"@codemirror/view" "^6.37.0"
|
||||||
|
crelt "^1.0.5"
|
||||||
|
|
||||||
|
"@codemirror/state@^6.0.0", "@codemirror/state@^6.4.0", "@codemirror/state@^6.5.0", "@codemirror/state@^6.5.4":
|
||||||
|
version "6.5.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/@codemirror/state/-/state-6.5.4.tgz#f5be4b8c0d2310180d5f15a9f641c21ca69faf19"
|
||||||
|
integrity sha512-8y7xqG/hpB53l25CIoit9/ngxdfoG+fx+V3SHBrinnhOtLvKHRyAJJuHzkWrR4YXXLX8eXBsejgAAxHUOdW1yw==
|
||||||
|
dependencies:
|
||||||
|
"@marijn/find-cluster-break" "^1.0.0"
|
||||||
|
|
||||||
|
"@codemirror/theme-one-dark@^6.1.3":
|
||||||
|
version "6.1.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/@codemirror/theme-one-dark/-/theme-one-dark-6.1.3.tgz#1dbb73f6e73c53c12ad2aed9f48c263c4e63ea37"
|
||||||
|
integrity sha512-NzBdIvEJmx6fjeremiGp3t/okrLPYT0d9orIc7AFun8oZcRk58aejkqhv6spnz4MLAevrKNPMQYXEWMg4s+sKA==
|
||||||
|
dependencies:
|
||||||
|
"@codemirror/language" "^6.0.0"
|
||||||
|
"@codemirror/state" "^6.0.0"
|
||||||
|
"@codemirror/view" "^6.0.0"
|
||||||
|
"@lezer/highlight" "^1.0.0"
|
||||||
|
|
||||||
|
"@codemirror/view@^6.0.0", "@codemirror/view@^6.17.0", "@codemirror/view@^6.23.0", "@codemirror/view@^6.27.0", "@codemirror/view@^6.35.0", "@codemirror/view@^6.37.0", "@codemirror/view@^6.39.11":
|
||||||
|
version "6.39.11"
|
||||||
|
resolved "https://registry.yarnpkg.com/@codemirror/view/-/view-6.39.11.tgz#200aebef2074bfbbb7a3d5f0644c1b560d876b39"
|
||||||
|
integrity sha512-bWdeR8gWM87l4DB/kYSF9A+dVackzDb/V56Tq7QVrQ7rn86W0rgZFtlL3g3pem6AeGcb9NQNoy3ao4WpW4h5tQ==
|
||||||
|
dependencies:
|
||||||
|
"@codemirror/state" "^6.5.0"
|
||||||
|
crelt "^1.0.6"
|
||||||
|
style-mod "^4.1.0"
|
||||||
|
w3c-keyname "^2.2.4"
|
||||||
|
|
||||||
"@commitlint/cli@^19.8.1":
|
"@commitlint/cli@^19.8.1":
|
||||||
version "19.8.1"
|
version "19.8.1"
|
||||||
resolved "https://registry.yarnpkg.com/@commitlint/cli/-/cli-19.8.1.tgz#85f7d9f331344e1f0a2b9d8b24fd3695466e1158"
|
resolved "https://registry.yarnpkg.com/@commitlint/cli/-/cli-19.8.1.tgz#85f7d9f331344e1f0a2b9d8b24fd3695466e1158"
|
||||||
@@ -2532,6 +2630,43 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@keyv/serialize/-/serialize-1.1.1.tgz#0c01dd3a3483882af7cf3878d4e71d505c81fc4a"
|
resolved "https://registry.yarnpkg.com/@keyv/serialize/-/serialize-1.1.1.tgz#0c01dd3a3483882af7cf3878d4e71d505c81fc4a"
|
||||||
integrity sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA==
|
integrity sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA==
|
||||||
|
|
||||||
|
"@lezer/common@^1.0.0", "@lezer/common@^1.1.0", "@lezer/common@^1.2.0", "@lezer/common@^1.3.0", "@lezer/common@^1.5.0":
|
||||||
|
version "1.5.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@lezer/common/-/common-1.5.0.tgz#db227b596260189b67ba286387d9dc81fb07c70b"
|
||||||
|
integrity sha512-PNGcolp9hr4PJdXR4ix7XtixDrClScvtSCYW3rQG106oVMOOI+jFb+0+J3mbeL/53g1Zd6s0kJzaw6Ri68GmAA==
|
||||||
|
|
||||||
|
"@lezer/highlight@^1.0.0", "@lezer/highlight@^1.1.3":
|
||||||
|
version "1.2.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/@lezer/highlight/-/highlight-1.2.3.tgz#a20f324b71148a2ea9ba6ff42e58bbfaec702857"
|
||||||
|
integrity sha512-qXdH7UqTvGfdVBINrgKhDsVTJTxactNNxLk7+UMwZhU13lMHaOBlJe9Vqp907ya56Y3+ed2tlqzys7jDkTmW0g==
|
||||||
|
dependencies:
|
||||||
|
"@lezer/common" "^1.3.0"
|
||||||
|
|
||||||
|
"@lezer/javascript@^1.0.0":
|
||||||
|
version "1.5.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/@lezer/javascript/-/javascript-1.5.4.tgz#11746955f957d33c0933f17d7594db54a8b4beea"
|
||||||
|
integrity sha512-vvYx3MhWqeZtGPwDStM2dwgljd5smolYD2lR2UyFcHfxbBQebqx8yjmFmxtJ/E6nN6u1D9srOiVWm3Rb4tmcUA==
|
||||||
|
dependencies:
|
||||||
|
"@lezer/common" "^1.2.0"
|
||||||
|
"@lezer/highlight" "^1.1.3"
|
||||||
|
"@lezer/lr" "^1.3.0"
|
||||||
|
|
||||||
|
"@lezer/json@^1.0.0":
|
||||||
|
version "1.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/@lezer/json/-/json-1.0.3.tgz#e773a012ad0088fbf07ce49cfba875cc9e5bc05f"
|
||||||
|
integrity sha512-BP9KzdF9Y35PDpv04r0VeSTKDeox5vVr3efE7eBbx3r4s3oNLfunchejZhjArmeieBH+nVOpgIiBJpEAv8ilqQ==
|
||||||
|
dependencies:
|
||||||
|
"@lezer/common" "^1.2.0"
|
||||||
|
"@lezer/highlight" "^1.0.0"
|
||||||
|
"@lezer/lr" "^1.0.0"
|
||||||
|
|
||||||
|
"@lezer/lr@^1.0.0", "@lezer/lr@^1.3.0":
|
||||||
|
version "1.4.7"
|
||||||
|
resolved "https://registry.yarnpkg.com/@lezer/lr/-/lr-1.4.7.tgz#01a38556652bf73ffbf3af4a88b91e4c056cc6ee"
|
||||||
|
integrity sha512-wNIFWdSUfX9Jc6ePMzxSPVgTVB4EOfDIwLQLWASyiUdHKaMsiilj9bYiGkGQCKVodd0x6bgQCV207PILGFCF9Q==
|
||||||
|
dependencies:
|
||||||
|
"@lezer/common" "^1.0.0"
|
||||||
|
|
||||||
"@malept/cross-spawn-promise@^2.0.0":
|
"@malept/cross-spawn-promise@^2.0.0":
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/@malept/cross-spawn-promise/-/cross-spawn-promise-2.0.0.tgz#d0772de1aa680a0bfb9ba2f32b4c828c7857cb9d"
|
resolved "https://registry.yarnpkg.com/@malept/cross-spawn-promise/-/cross-spawn-promise-2.0.0.tgz#d0772de1aa680a0bfb9ba2f32b4c828c7857cb9d"
|
||||||
@@ -2549,6 +2684,11 @@
|
|||||||
lodash "^4.17.15"
|
lodash "^4.17.15"
|
||||||
tmp-promise "^3.0.2"
|
tmp-promise "^3.0.2"
|
||||||
|
|
||||||
|
"@marijn/find-cluster-break@^1.0.0":
|
||||||
|
version "1.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@marijn/find-cluster-break/-/find-cluster-break-1.0.2.tgz#775374306116d51c0c500b8c4face0f9a04752d8"
|
||||||
|
integrity sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g==
|
||||||
|
|
||||||
"@napi-rs/wasm-runtime@^1.1.0":
|
"@napi-rs/wasm-runtime@^1.1.0":
|
||||||
version "1.1.1"
|
version "1.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.1.tgz#c3705ab549d176b8dc5172723d6156c3dc426af2"
|
resolved "https://registry.yarnpkg.com/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.1.tgz#c3705ab549d176b8dc5172723d6156c3dc426af2"
|
||||||
@@ -5236,6 +5376,19 @@ clone@^1.0.2:
|
|||||||
resolved "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e"
|
resolved "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e"
|
||||||
integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4=
|
integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4=
|
||||||
|
|
||||||
|
codemirror@^6.0.2:
|
||||||
|
version "6.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/codemirror/-/codemirror-6.0.2.tgz#4d3fea1ad60b6753f97ca835f2f48c6936a8946e"
|
||||||
|
integrity sha512-VhydHotNW5w1UGK0Qj96BwSk/Zqbp9WbnyK2W/eVMv4QyF41INRGpjUhFJY7/uDNuudSc33a/PKr4iDqRduvHw==
|
||||||
|
dependencies:
|
||||||
|
"@codemirror/autocomplete" "^6.0.0"
|
||||||
|
"@codemirror/commands" "^6.0.0"
|
||||||
|
"@codemirror/language" "^6.0.0"
|
||||||
|
"@codemirror/lint" "^6.0.0"
|
||||||
|
"@codemirror/search" "^6.0.0"
|
||||||
|
"@codemirror/state" "^6.0.0"
|
||||||
|
"@codemirror/view" "^6.0.0"
|
||||||
|
|
||||||
color-convert@^1.9.0:
|
color-convert@^1.9.0:
|
||||||
version "1.9.3"
|
version "1.9.3"
|
||||||
resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
|
resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
|
||||||
@@ -5555,6 +5708,11 @@ create-require@^1.1.0:
|
|||||||
resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333"
|
resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333"
|
||||||
integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==
|
integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==
|
||||||
|
|
||||||
|
crelt@^1.0.5, crelt@^1.0.6:
|
||||||
|
version "1.0.6"
|
||||||
|
resolved "https://registry.yarnpkg.com/crelt/-/crelt-1.0.6.tgz#7cc898ea74e190fb6ef9dae57f8f81cf7302df72"
|
||||||
|
integrity sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==
|
||||||
|
|
||||||
cross-spawn@^7.0.0, cross-spawn@^7.0.1:
|
cross-spawn@^7.0.0, cross-spawn@^7.0.1:
|
||||||
version "7.0.3"
|
version "7.0.3"
|
||||||
resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
|
resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
|
||||||
@@ -10743,6 +10901,11 @@ strtok3@^10.3.4:
|
|||||||
dependencies:
|
dependencies:
|
||||||
"@tokenizer/token" "^0.3.0"
|
"@tokenizer/token" "^0.3.0"
|
||||||
|
|
||||||
|
style-mod@^4.0.0, style-mod@^4.1.0:
|
||||||
|
version "4.1.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/style-mod/-/style-mod-4.1.3.tgz#6e9012255bb799bdac37e288f7671b5d71bf9f73"
|
||||||
|
integrity sha512-i/n8VsZydrugj3Iuzll8+x/00GH2vnYsk1eomD8QiRrSAeW6ItbCQDtfXCeJHd0iwiNagqjQkvpvREEPtW3IoQ==
|
||||||
|
|
||||||
stylelint-config-html@>=1.0.0, stylelint-config-html@^1.1.0:
|
stylelint-config-html@>=1.0.0, stylelint-config-html@^1.1.0:
|
||||||
version "1.1.0"
|
version "1.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/stylelint-config-html/-/stylelint-config-html-1.1.0.tgz#999db19aea713b7ff6dde92ada76e4c1bd812b66"
|
resolved "https://registry.yarnpkg.com/stylelint-config-html/-/stylelint-config-html-1.1.0.tgz#999db19aea713b7ff6dde92ada76e4c1bd812b66"
|
||||||
@@ -11668,6 +11831,11 @@ vue@^3.5.21, vue@^3.5.26:
|
|||||||
"@vue/server-renderer" "3.5.26"
|
"@vue/server-renderer" "3.5.26"
|
||||||
"@vue/shared" "3.5.26"
|
"@vue/shared" "3.5.26"
|
||||||
|
|
||||||
|
w3c-keyname@^2.2.4:
|
||||||
|
version "2.2.8"
|
||||||
|
resolved "https://registry.yarnpkg.com/w3c-keyname/-/w3c-keyname-2.2.8.tgz#7b17c8c6883d4e8b86ac8aba79d39e880f8869c5"
|
||||||
|
integrity sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==
|
||||||
|
|
||||||
walk-up-path@^4.0.0:
|
walk-up-path@^4.0.0:
|
||||||
version "4.0.0"
|
version "4.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/walk-up-path/-/walk-up-path-4.0.0.tgz#590666dcf8146e2d72318164f1f2ac6ef51d4198"
|
resolved "https://registry.yarnpkg.com/walk-up-path/-/walk-up-path-4.0.0.tgz#590666dcf8146e2d72318164f1f2ac6ef51d4198"
|
||||||
|
|||||||
Reference in New Issue
Block a user