import { NetDiskGlobalData } from "@/main/data/NetDiskGlobalData"; import { NetDiskShortcut } from "@/main/shortcut/NetDiskShortcut"; import { NetDiskView } from "@/main/view/NetDiskView"; import { NetDiskSuspension } from "@/main/view/suspension/NetDiskSuspensionView"; import { UIButton } from "@components/setting/components/ui-button"; import { UIButtonShortCut } from "@components/setting/components/ui-button-shortcut"; import { UIInputNumber } from "@components/setting/components/ui-input-number"; import { UISelect } from "@components/setting/components/ui-select"; import { UISelectMultiple } from "@components/setting/components/ui-select-multiple"; import { UISlider } from "@components/setting/components/ui-slider"; import { UISwitch } from "@components/setting/components/ui-switch"; import DOMUtils from "@whitesev/domutils"; import type { PopsPanelContentConfig } from "@whitesev/pops/dist/types/src/components/panel/types/index.js"; import Qmsg from "qmsg"; export const PanelUI_allSetting = (): PopsPanelContentConfig => { return { id: "netdisk-panel-config-all-setting", title: "设置", headerTitle: "总设置", isDefault: true, views: [ { type: "container", text: "", views: [ { type: "deepMenu", text: "Toast", views: [ { type: "container", text: "", className: "netdisk-panel-forms-toast", views: [ UISelect( "位置", NetDiskGlobalData.toast.position.KEY, NetDiskGlobalData.toast.position.default, [ { value: "topleft", text: "左上角", }, { value: "top", text: "顶部", }, { value: "topright", text: "右上角", }, { value: "left", text: "左边", }, { value: "center", text: "中间", }, { value: "right", text: "右边", }, { value: "bottomleft", text: "左下角", }, { value: "bottom", text: "底部", }, { value: "bottomright", text: "右下角", }, ], void 0, `Toast显示在九宫格的位置,默认: ${NetDiskGlobalData.toast.position.default}` ), UISelect( "同时最多显示的数量", NetDiskGlobalData.toast.maxnums.KEY, NetDiskGlobalData.toast.maxnums.default, [ { value: 1, text: "1", }, { value: 2, text: "2", }, { value: 3, text: "3", }, { value: 4, text: "4", }, { value: 5, text: "5", }, ], void 0, `默认: ${NetDiskGlobalData.toast.maxnums.default}` ), UISwitch( "逆序弹出", NetDiskGlobalData.toast.showreverse.KEY, NetDiskGlobalData.toast.showreverse.value, void 0, "默认是自上往下显示Toast,逆序则是自下往上显示Toast" ), ], }, ], }, { type: "deepMenu", text: "弹窗", views: [ { className: "netdisk-panel-forms-pops", type: "container", text: "", views: [ UISelect( "动画", NetDiskGlobalData.pops.popsAnimation.KEY, NetDiskGlobalData.pops.popsAnimation.default, [ { value: "", text: "无", }, { value: "pops-anim-spread", text: "spread", }, { value: "pops-anim-shake", text: "shake", }, { value: "pops-anim-rolling-left", text: "rolling-left", }, { value: "pops-anim-rolling-right", text: "rolling-right", }, { value: "pops-anim-slide-top", text: "slide-top", }, { value: "pops-anim-slide-bottom", text: "slide-bottom", }, { value: "pops-anim-slide-left", text: "slide-left", }, { value: "pops-anim-slide-right", text: "slide-right", }, { value: "pops-anim-fadein", text: "fadein", }, { value: "pops-anim-fadein-zoom", text: "fadein-zoom", }, { value: "pops-anim-fadein-alert", text: "fadein-alert", }, { value: "pops-anim-don", text: "don", }, { value: "pops-anim-roll", text: "roll", }, { value: "pops-anim-sandra", text: "sandra", }, { value: "pops-anim-gather", text: "gather", }, ], void 0, `显示/关闭的动画效果,默认: ${NetDiskGlobalData.pops.popsAnimation.default}` ), UISwitch( "点击弹窗遮罩层关闭弹窗", NetDiskGlobalData.pops.clickMaskToCloseDialog.KEY, NetDiskGlobalData.pops.clickMaskToCloseDialog.default, void 0, "点击遮罩层触发关闭弹窗事件" ), UISwitch( "窗口拖拽", NetDiskGlobalData.pops.pcDrag.KEY, NetDiskGlobalData.pops.pcDrag.default, void 0, "长按标题栏可拖拽移动弹窗" ), UISwitch( "限制拖拽距离", NetDiskGlobalData.pops.pcDragLimit.KEY, NetDiskGlobalData.pops.pcDragLimit.default, void 0, "只能在浏览器的可视窗口内拖动" ), UISwitch( "亚克力效果", NetDiskGlobalData.pops.popsAcrylic.KEY, NetDiskGlobalData.pops.popsAcrylic.default, void 0, "" ), ], }, ], }, { type: "deepMenu", text: "文件弹窗", views: [ { type: "container", text: "", className: "netdisk-panel-forms-pops-folder", views: [ UISelect( "排序名", NetDiskGlobalData.popsFolder["pops-folder-sort-name"].KEY, NetDiskGlobalData.popsFolder["pops-folder-sort-name"].default, [ { value: "fileName", text: "文件名", }, { value: "latestTime", text: "修改时间", }, { value: "fileSize", text: "大小", }, ], void 0, "当前的规则" ), UISelect( "排序规则", NetDiskGlobalData.popsFolder["pops-folder-sort-is-desc"].KEY, NetDiskGlobalData.popsFolder["pops-folder-sort-is-desc"].default, [ { value: false, text: "升序", }, { value: true, text: "降序", }, ], void 0, "当前的规则" ), ], }, ], }, { type: "deepMenu", text: "悬浮按钮", views: [ { type: "container", text: "", views: [ UISlider( "大小", NetDiskGlobalData.suspension.size.KEY, NetDiskGlobalData.suspension.size.default, 15, 250, (event, value) => { NetDiskGlobalData.suspension.size.value = parseInt(value.toString()); if (NetDiskView.$inst.suspension.$data.isShow) { DOMUtils.css(NetDiskView.$inst.suspension.$el.$suspension, { width: NetDiskGlobalData.suspension.size.value, height: NetDiskGlobalData.suspension.size.value, }); NetDiskView.$inst.suspension.updatePosition(true); } }, (value) => { return `${value}px`; }, "悬浮按钮的大小,默认: " + NetDiskGlobalData.suspension.size.default + "px" ), UISlider( "透明度", NetDiskGlobalData.suspension.opacity.KEY, NetDiskGlobalData.suspension.opacity.default, 0.1, 1, (event, value) => { NetDiskGlobalData.suspension.opacity.value = parseFloat(value.toString()); if (NetDiskView.$inst.suspension.$data.isShow) { DOMUtils.css(NetDiskView.$inst.suspension.$el.$suspension, { opacity: NetDiskGlobalData.suspension.opacity.value, }); } }, void 0, "值越小越透明,默认: " + NetDiskGlobalData.suspension.opacity.default, 0.1 ), UISlider( "背景轮播时间", NetDiskGlobalData.suspension["randbg-time"].KEY, NetDiskGlobalData.suspension["randbg-time"].default, 0, 10000, void 0, (value) => { return `${value}ms`; }, "淡入/淡出的时间,默认: " + NetDiskGlobalData.suspension["randbg-time"].default + "ms", 100 ), UISlider( "背景显示时间", NetDiskGlobalData.suspension["randbg-show-time"].KEY, NetDiskGlobalData.suspension["randbg-show-time"].default, 0, 10000, void 0, (value) => { return `${value}ms`; }, "图标显示的持续时间,默认: 1200", 100 ), UISwitch( "吸附边缘", NetDiskGlobalData.suspension["suspended-button-adsorption-edge"].KEY, NetDiskGlobalData.suspension["suspended-button-adsorption-edge"].default, void 0, "移动悬浮按钮松开后自动吸附边缘", void 0, void 0, () => { NetDiskSuspension.updatePosition(false); } ), UIInputNumber( "z-index", NetDiskGlobalData.suspension["suspended-z-index"].KEY, NetDiskGlobalData.suspension["suspended-z-index"].default, "值小于等于0则为动态获取z-index", (event, value, valueAsNumber) => { NetDiskGlobalData.suspension["suspended-z-index"].value = valueAsNumber; return true; } ), ], }, ], }, { type: "deepMenu", text: "大/小链接弹窗", views: [ { type: "container", text: "通用配置", views: [ UIInputNumber( "z-index", NetDiskGlobalData.smallWindow["netdisk-link-view-z-index"].KEY, NetDiskGlobalData.smallWindow["netdisk-link-view-z-index"].default, "值小于等于0则为动态获取z-index", (event, value, valueAsNumber) => { NetDiskGlobalData.smallWindow["netdisk-link-view-z-index"].value = valueAsNumber; return true; } ), ], }, { type: "container", text: "数据分页显示", views: [ UISwitch( "启用", NetDiskGlobalData.smallWindow["netdisk-ui-link-view-data-paging-enable"].KEY, NetDiskGlobalData.smallWindow["netdisk-ui-link-view-data-paging-enable"].default, void 0, "如果页面的数据量大,建议开启分页以显示防止卡顿" ), UIInputNumber( "分页数量", NetDiskGlobalData.smallWindow["netdisk-ui-link-view-data-paging-show-data-count"].KEY, NetDiskGlobalData.smallWindow["netdisk-ui-link-view-data-paging-show-data-count"].default, "每页显示的数据数量", void 0, "默认:10" ), ], }, { type: "container", text: "小窗", className: "netdisk-panel-forms-small-window", views: [ UISlider( "宽度", NetDiskGlobalData.smallWindow["netdisk-ui-small-window-width"].KEY, NetDiskGlobalData.smallWindow["netdisk-ui-small-window-width"].default, 50, DOMUtils.width(window), void 0, (value) => { return `${value}px`; }, "设置小窗宽度(px),默认: 250", 1 ), UISlider( "高度", NetDiskGlobalData.smallWindow["netdisk-ui-small-window-max-height"].KEY, NetDiskGlobalData.smallWindow["netdisk-ui-small-window-max-height"].default, 50, DOMUtils.height(window), void 0, (value) => { return `${value}px`; }, "设置小窗最大高度(px),默认: " + NetDiskGlobalData.smallWindow["netdisk-ui-small-window-max-height"].default, 1 ), ], }, ], }, ], }, { type: "container", text: "", views: [ { type: "deepMenu", text: "功能", views: [ { type: "container", text: "", views: [ UISwitch( "启用", "netdisk-rules-enable", true, void 0, "全局控制所有规则是否启用,开启可允许匹配所有规则,关闭则禁止匹配所有规则" ), ], }, { type: "container", text: "", className: "netdisk-panel-forms-function", views: [ UISelect( "匹配模式", NetDiskGlobalData.features["netdisk-match-mode"].KEY, NetDiskGlobalData.features["netdisk-match-mode"].default, [ { text: "MutationObserver", value: "MutationObserver", }, { text: "Menu", value: "Menu", }, ], void 0, "MutationObserver是自动监听并识别链接
Menu是手动点击油猴菜单进行识别" ), UISelect( "行为模式", NetDiskGlobalData.features["netdisk-behavior-mode"].KEY, NetDiskGlobalData.features["netdisk-behavior-mode"].default, [ { text: "悬浮按钮+小窗", value: "suspension_smallwindow", }, { text: "悬浮按钮+大窗", value: "suspension_window", }, { text: "小窗", value: "smallwindow", }, ], void 0, "匹配到链接时触发的UI执行" ), UISwitch( "自动填充访问码", NetDiskGlobalData.features.autoFillAccessCode.KEY, NetDiskGlobalData.features.autoFillAccessCode.default, void 0, "通过主动点击链接跳转时,会自动输入网盘访问码" ), ], }, ], }, { type: "deepMenu", text: "匹配设置", views: [ { type: "container", text: "文本匹配", views: [ UISelectMultiple>( "匹配规则类型", NetDiskGlobalData.match.pageMatchRange.KEY, NetDiskGlobalData.match.pageMatchRange.default, [ { value: "innerText", text: "普通文本", }, { value: "innerHTML", text: "超文本", }, ], void 0, "执行的文本匹配规则", void 0, { height: "auto", } ), UISwitch( "深入ShadowRoot获取匹配文本", NetDiskGlobalData.match.depthQueryWithShadowRoot.KEY, NetDiskGlobalData.match.depthQueryWithShadowRoot.default, void 0, "遍历ShadowRoot,获取匹配的内容" ), UISwitch( "匹配剪贴板", NetDiskGlobalData.match.readClipboard.KEY, NetDiskGlobalData.match.readClipboard.default, void 0, "Api兼容性查看:读取剪贴板权限申请直接读取剪贴板" ), UISwitch( "匹配当前URL", NetDiskGlobalData.match.allowMatchLocationHref.KEY, NetDiskGlobalData.match.allowMatchLocationHref.default, void 0, "提取window.location.href进行匹配" ), UISwitch( "匹配input标签的内容", NetDiskGlobalData.match.toBeMatchedWithInputElementValue.KEY, NetDiskGlobalData.match.toBeMatchedWithInputElementValue.default, void 0, "提取页面中的<input>的内容进行匹配" ), UISwitch( "匹配textarea标签的内容", NetDiskGlobalData.match.toBeMatchedTextAreaElementValue.KEY, NetDiskGlobalData.match.toBeMatchedTextAreaElementValue.default, void 0, "提取页面中的<textarea>的内容进行匹配" ), UISwitch( "匹配网络请求的内容", NetDiskGlobalData.match.toBeMatchedXhrHookResponseText.KEY, NetDiskGlobalData.match.toBeMatchedXhrHookResponseText.default, void 0, "劫持xhr请求并对请求的内容进行匹配,注意:该功能可能会导致页面的部分功能异常,请谨慎使用" ), ], }, { type: "container", text: "MutationObserver观察器", views: [ UISlider( "匹配间隔", NetDiskGlobalData.match.delaytime.KEY, NetDiskGlobalData.match.delaytime.default, 0.0, 5.0, void 0, (value) => { return `${value}s`; }, "匹配文本完毕后的延迟xxx秒允许下一次匹配", 0.1 ), UISwitch( "添加元素时进行匹配", NetDiskGlobalData.match.isAddedNodesToMatch.KEY, NetDiskGlobalData.match.isAddedNodesToMatch.default, void 0, "当监听到页面添加元素时才进行匹配文本" ), UISwitch( "观察器:childList", NetDiskGlobalData.match["mutationObserver-childList"].KEY, NetDiskGlobalData.match["mutationObserver-childList"].default, void 0, "子节点的变动(新增、删除或者更改)" ), UISwitch( "观察器:characterData", NetDiskGlobalData.match["mutationObserver-characterData"].KEY, NetDiskGlobalData.match["mutationObserver-characterData"].default, void 0, "节点内容或节点文本的变动" ), UISwitch( "观察器:subtree", NetDiskGlobalData.match["mutationObserver-subtree"].KEY, NetDiskGlobalData.match["mutationObserver-subtree"].default, void 0, "是否将观察器应用于该节点的所有后代节点" ), ], }, ], }, { type: "deepMenu", text: "网盘图标", views: [ { type: "container", text: "", views: [ UISwitch( "点击定位分享码", NetDiskGlobalData.smallIconNavgiator["pops-netdisk-icon-click-event-find-sharecode"].KEY, NetDiskGlobalData.smallIconNavgiator["pops-netdisk-icon-click-event-find-sharecode"].default, void 0, "自动滚动页面至包含分享码的元素" ), UISwitch( "选中分享码", NetDiskGlobalData.smallIconNavgiator["pops-netdisk-icon-click-event-find-sharecode-with-select"] .KEY, NetDiskGlobalData.smallIconNavgiator["pops-netdisk-icon-click-event-find-sharecode-with-select"] .default, void 0, "使用光标选中分享码/元素" ), UISwitch( "循环定位", NetDiskGlobalData.smallIconNavgiator["pops-netdisk-icon-click-event-loop-find-sharecode"].KEY, NetDiskGlobalData.smallIconNavgiator["pops-netdisk-icon-click-event-loop-find-sharecode"].default, void 0, "关闭则是每一个元素只定位一次" ), ], }, ], }, { type: "deepMenu", text: "历史匹配记录", views: [ { type: "container", text: "", className: "netdisk-panel-history-match", views: [ UISwitch( "保存匹配记录", NetDiskGlobalData.historyMatch.saveMatchNetDisk.KEY, NetDiskGlobalData.historyMatch.saveMatchNetDisk.default, void 0, "将匹配到的链接信息进行本地存储,可点击【油猴菜单-⚙ 历史匹配记录】进行查看" ), UISwitch( "合并相同链接", NetDiskGlobalData.historyMatch["netdisk-history-match-merge-same-link"].KEY, NetDiskGlobalData.historyMatch["netdisk-history-match-merge-same-link"].default, void 0, "将合并匹配到的相同链接,并更新它最后一次匹配到的更新时间、网址信息" ), UISelect( "排序规则", NetDiskGlobalData.historyMatch["netdisk-history-match-ordering-rule"].KEY, NetDiskGlobalData.historyMatch["netdisk-history-match-ordering-rule"].default, [ { value: "按 记录时间 - 升序", text: "按 记录时间 - 升序", }, { value: "按 记录时间 - 降序", text: "按 记录时间 - 降序", }, { value: "按 更新时间 - 升序", text: "按 更新时间 - 升序", }, { value: "按 更新时间 - 降序", text: "按 更新时间 - 降序", }, ] ), UIButton( "修复存储记录", "如果【匹配记录】弹窗打不开,可能是存储的数据缺失某些字段,可尝试点击此处进行修复", "修复", void 0, void 0, false, "primary", (event) => { DOMUtils.preventEvent(event); try { const { count, repairCount } = NetDiskView.$inst.historyMatch.checkAndRepairLocalData(); if (repairCount === 0) { Qmsg.info(`不存在需要修复的数据`); } else { Qmsg.success(`共计: ${count} 条,修复${repairCount}条`); } } catch (error: any) { Qmsg.error("修复异常:" + error.toString()); } } ), ], }, ], }, { type: "deepMenu", text: "分享码", views: [ { type: "container", text: "", className: "netdisk-panel-forms-share-code", views: [ UISwitch( "排除分享码", NetDiskGlobalData.shareCode.excludeIdenticalSharedCodes.KEY, NetDiskGlobalData.shareCode.excludeIdenticalSharedCodes.default, void 0, "启用后会根据【相同系数】排除掉匹配到的分享码" ), UISlider( "相同系数", NetDiskGlobalData.shareCode.excludeIdenticalSharedCodesCoefficient.KEY, NetDiskGlobalData.shareCode.excludeIdenticalSharedCodesCoefficient.default, 0, 1, void 0, (value) => { return value.toString(); }, "例如分享码: aaaaaaaabb,它的相同系数是0.8,设置相同系数≥0.8时会被排除", 0.01 ), ], }, ], }, { type: "deepMenu", text: "访问码", views: [ { className: "netdisk-panel-forms-access-code", text: "", type: "container", views: [ UISwitch( "允许查询历史匹配记录", NetDiskGlobalData.accessCode.allowQueryHistoryMatchingAccessCode.KEY, NetDiskGlobalData.accessCode.allowQueryHistoryMatchingAccessCode.default, void 0, "当访问码为空时,访问码将从历史匹配记录中查询,优先级:页面匹配 < 历史匹配记录 < 网站规则 < 黑名单" ), ], }, ], }, { type: "deepMenu", className: "netdisk-panel-forms-shortcut-keys-deepMenu", text: "快捷键", views: [ { className: "netdisk-panel-forms-shortcut-keys", text: "", type: "container", views: [ UIButtonShortCut( "【打开】⚙ 设置", "", "netdisk-keyboard-open-setting", void 0, "暂无快捷键", "default", NetDiskShortcut.shortCut ), UIButtonShortCut( "【打开】⚙ 历史匹配记录", "", "netdisk-keyboard-open-history-matching-records", void 0, "暂无快捷键", "default", NetDiskShortcut.shortCut ), UIButtonShortCut( "【打开】⚙ 访问码规则", "", "netdisk-keyboard-open-accesscode-rule", void 0, "暂无快捷键", "default", NetDiskShortcut.shortCut ), UIButtonShortCut( "【打开】⚙ 添加链接识别规则", "", "netdisk-keyboard-open-user-rule", void 0, "暂无快捷键", "default", NetDiskShortcut.shortCut ), UIButtonShortCut( "【打开】⚙ 网站规则", "", "netdisk-keyboard-website-rule", void 0, "暂无快捷键", "default", NetDiskShortcut.shortCut ), UIButtonShortCut( "【打开】⚙ 字符映射规则", "", "netdisk-keyboard-character-mapping", void 0, "暂无快捷键", "default", NetDiskShortcut.shortCut ), UIButtonShortCut( "【打开】⚙ 识别文本", "", "netdisk-keyboard-open-proactively-recognize-text", void 0, "暂无快捷键", "default", NetDiskShortcut.shortCut ), UIButtonShortCut( "执行文本匹配", "", "netdisk-keyboard-performPageTextMatchingManually", void 0, "暂无快捷键", "default", NetDiskShortcut.shortCut ), UIButtonShortCut( "识别选中内容", "", "netdisk-keyboard-identifyTheSelectedContent", void 0, "暂无快捷键", "default", NetDiskShortcut.shortCut ), ], }, ], }, ], }, ], }; };