diff --git a/vue/dist/assets/TagSearch-b8ee4cd1.css b/vue/dist/assets/TagSearch-b8ee4cd1.css index 7852ef4..94a04b8 100644 --- a/vue/dist/assets/TagSearch-b8ee4cd1.css +++ b/vue/dist/assets/TagSearch-b8ee4cd1.css @@ -1,5 +1 @@ -<<<<<<< HEAD:vue/dist/assets/TagSearch-8cc2caef.css -.ant-collapse{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum";background-color:#fafafa;border:1px solid #d9d9d9;border-bottom:0;border-radius:2px}.ant-collapse>.ant-collapse-item{border-bottom:1px solid #d9d9d9}.ant-collapse>.ant-collapse-item:last-child,.ant-collapse>.ant-collapse-item:last-child>.ant-collapse-header{border-radius:0 0 2px 2px}.ant-collapse>.ant-collapse-item>.ant-collapse-header{position:relative;display:flex;flex-wrap:nowrap;align-items:flex-start;padding:12px 16px;color:#000000d9;line-height:1.5715;cursor:pointer;transition:all .3s,visibility 0s}.ant-collapse>.ant-collapse-item>.ant-collapse-header .ant-collapse-arrow{display:inline-block;margin-right:12px;font-size:12px;vertical-align:-1px}.ant-collapse>.ant-collapse-item>.ant-collapse-header .ant-collapse-arrow svg{transition:transform .24s}.ant-collapse>.ant-collapse-item>.ant-collapse-header .ant-collapse-extra{margin-left:auto}.ant-collapse>.ant-collapse-item>.ant-collapse-header:focus{outline:none}.ant-collapse>.ant-collapse-item .ant-collapse-header-collapsible-only{cursor:default}.ant-collapse>.ant-collapse-item .ant-collapse-header-collapsible-only .ant-collapse-header-text{cursor:pointer}.ant-collapse>.ant-collapse-item.ant-collapse-no-arrow>.ant-collapse-header{padding-left:12px}.ant-collapse-icon-position-right>.ant-collapse-item>.ant-collapse-header{position:relative;padding:12px 40px 12px 16px}.ant-collapse-icon-position-right>.ant-collapse-item>.ant-collapse-header .ant-collapse-arrow{position:absolute;top:50%;right:16px;left:auto;margin:0;transform:translateY(-50%)}.ant-collapse-content{color:#000000d9;background-color:#fff;border-top:1px solid #d9d9d9}.ant-collapse-content>.ant-collapse-content-box{padding:16px}.ant-collapse-content-hidden{display:none}.ant-collapse-item:last-child>.ant-collapse-content{border-radius:0 0 2px 2px}.ant-collapse-borderless{background-color:#fafafa;border:0}.ant-collapse-borderless>.ant-collapse-item{border-bottom:1px solid #d9d9d9}.ant-collapse-borderless>.ant-collapse-item:last-child,.ant-collapse-borderless>.ant-collapse-item:last-child .ant-collapse-header{border-radius:0}.ant-collapse-borderless>.ant-collapse-item>.ant-collapse-content{background-color:transparent;border-top:0}.ant-collapse-borderless>.ant-collapse-item>.ant-collapse-content>.ant-collapse-content-box{padding-top:4px}.ant-collapse-ghost{background-color:transparent;border:0}.ant-collapse-ghost>.ant-collapse-item{border-bottom:0}.ant-collapse-ghost>.ant-collapse-item>.ant-collapse-content{background-color:transparent;border-top:0}.ant-collapse-ghost>.ant-collapse-item>.ant-collapse-content>.ant-collapse-content-box{padding-top:12px;padding-bottom:12px}.ant-collapse .ant-collapse-item-disabled>.ant-collapse-header,.ant-collapse .ant-collapse-item-disabled>.ant-collapse-header>.arrow{color:#00000040;cursor:not-allowed}.ant-collapse-rtl{direction:rtl}.ant-collapse-rtl .ant-collapse>.ant-collapse-item>.ant-collapse-header{padding:12px 40px 12px 16px}.ant-collapse-rtl.ant-collapse>.ant-collapse-item>.ant-collapse-header .ant-collapse-arrow{margin-right:0;margin-left:12px}.ant-collapse-rtl.ant-collapse>.ant-collapse-item>.ant-collapse-header .ant-collapse-arrow svg{transform:rotate(180deg)}.ant-collapse-rtl.ant-collapse>.ant-collapse-item>.ant-collapse-header .ant-collapse-extra{margin-right:auto;margin-left:0}.ant-collapse-rtl.ant-collapse>.ant-collapse-item.ant-collapse-no-arrow>.ant-collapse-header{padding-right:12px;padding-left:0}[data-v-5d427604] .ant-collapse>.ant-collapse-item>.ant-collapse-header{padding:0}.container[data-v-5d427604]{height:var(--pane-max-height);overflow:auto;display:flex;flex-direction:column;align-items:stretch}.container .generate-idx-hint[data-v-5d427604]{margin:64px;padding:64px;font-size:2em;text-align:center;background-color:var(--zp-secondary-background);white-space:pre-line;line-height:2.5em;border-radius:16px}.container .remove[data-v-5d427604]{padding:4px;position:cursor;border-radius:2px}.container .remove[data-v-5d427604]:hover{background-color:var(--zp-secondary-background)}.container .select[data-v-5d427604]{padding:8px}.container .search-bar[data-v-5d427604]{padding:8px;display:flex}.container .search-bar .form-name[data-v-5d427604]{flex-shrink:0;padding:4px 8px;width:128px}.container .list-container[data-v-5d427604]{background-color:var(--zp-secondary-background);overflow:scroll}.container .cat-name[data-v-5d427604]{user-select:none;position:sticky;top:0;padding:4px 16px;background:var(--zp-primary-background);margin:4px;transition:all .3s ease;border-left:4px solid var(--primary-color);cursor:pointer}.container .cat-name[data-v-5d427604]:hover{border-radius:4px;background-color:var(--zp-secondary-background)}.container .cat-name .arrow[data-v-5d427604]{color:var(--primary-color);transition:all .3s ease;margin-right:16px}.container .cat-name .arrow.down[data-v-5d427604]{transform:rotate(90deg)}.container .tag-list[data-v-5d427604]{list-style:none;margin:16px;border-radius:16px;background:var(--zp-primary-background);padding:8px}.container .tag-list .tag[data-v-5d427604]{border:2px solid var(--zp-secondary);color:var(--zp-primary);border-radius:999px;padding:4px 16px;margin:4px;display:inline-block;cursor:pointer;max-width:256px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.container .tag-list .tag.selected[data-v-5d427604]{color:var(--primary-color);border:2px solid var(--primary-color)} -======= .ant-collapse{box-sizing:border-box;margin:0;padding:0;color:#000000d9;font-size:14px;font-variant:tabular-nums;line-height:1.5715;list-style:none;font-feature-settings:"tnum";background-color:#fafafa;border:1px solid #d9d9d9;border-bottom:0;border-radius:2px}.ant-collapse>.ant-collapse-item{border-bottom:1px solid #d9d9d9}.ant-collapse>.ant-collapse-item:last-child,.ant-collapse>.ant-collapse-item:last-child>.ant-collapse-header{border-radius:0 0 2px 2px}.ant-collapse>.ant-collapse-item>.ant-collapse-header{position:relative;display:flex;flex-wrap:nowrap;align-items:flex-start;padding:12px 16px;color:#000000d9;line-height:1.5715;cursor:pointer;transition:all .3s,visibility 0s}.ant-collapse>.ant-collapse-item>.ant-collapse-header .ant-collapse-arrow{display:inline-block;margin-right:12px;font-size:12px;vertical-align:-1px}.ant-collapse>.ant-collapse-item>.ant-collapse-header .ant-collapse-arrow svg{transition:transform .24s}.ant-collapse>.ant-collapse-item>.ant-collapse-header .ant-collapse-extra{margin-left:auto}.ant-collapse>.ant-collapse-item>.ant-collapse-header:focus{outline:none}.ant-collapse>.ant-collapse-item .ant-collapse-header-collapsible-only{cursor:default}.ant-collapse>.ant-collapse-item .ant-collapse-header-collapsible-only .ant-collapse-header-text{cursor:pointer}.ant-collapse>.ant-collapse-item.ant-collapse-no-arrow>.ant-collapse-header{padding-left:12px}.ant-collapse-icon-position-right>.ant-collapse-item>.ant-collapse-header{position:relative;padding:12px 40px 12px 16px}.ant-collapse-icon-position-right>.ant-collapse-item>.ant-collapse-header .ant-collapse-arrow{position:absolute;top:50%;right:16px;left:auto;margin:0;transform:translateY(-50%)}.ant-collapse-content{color:#000000d9;background-color:#fff;border-top:1px solid #d9d9d9}.ant-collapse-content>.ant-collapse-content-box{padding:16px}.ant-collapse-content-hidden{display:none}.ant-collapse-item:last-child>.ant-collapse-content{border-radius:0 0 2px 2px}.ant-collapse-borderless{background-color:#fafafa;border:0}.ant-collapse-borderless>.ant-collapse-item{border-bottom:1px solid #d9d9d9}.ant-collapse-borderless>.ant-collapse-item:last-child,.ant-collapse-borderless>.ant-collapse-item:last-child .ant-collapse-header{border-radius:0}.ant-collapse-borderless>.ant-collapse-item>.ant-collapse-content{background-color:transparent;border-top:0}.ant-collapse-borderless>.ant-collapse-item>.ant-collapse-content>.ant-collapse-content-box{padding-top:4px}.ant-collapse-ghost{background-color:transparent;border:0}.ant-collapse-ghost>.ant-collapse-item{border-bottom:0}.ant-collapse-ghost>.ant-collapse-item>.ant-collapse-content{background-color:transparent;border-top:0}.ant-collapse-ghost>.ant-collapse-item>.ant-collapse-content>.ant-collapse-content-box{padding-top:12px;padding-bottom:12px}.ant-collapse .ant-collapse-item-disabled>.ant-collapse-header,.ant-collapse .ant-collapse-item-disabled>.ant-collapse-header>.arrow{color:#00000040;cursor:not-allowed}.ant-collapse-rtl{direction:rtl}.ant-collapse-rtl .ant-collapse>.ant-collapse-item>.ant-collapse-header{padding:12px 40px 12px 16px}.ant-collapse-rtl.ant-collapse>.ant-collapse-item>.ant-collapse-header .ant-collapse-arrow{margin-right:0;margin-left:12px}.ant-collapse-rtl.ant-collapse>.ant-collapse-item>.ant-collapse-header .ant-collapse-arrow svg{transform:rotate(180deg)}.ant-collapse-rtl.ant-collapse>.ant-collapse-item>.ant-collapse-header .ant-collapse-extra{margin-right:auto;margin-left:0}.ant-collapse-rtl.ant-collapse>.ant-collapse-item.ant-collapse-no-arrow>.ant-collapse-header{padding-right:12px;padding-left:0}[data-v-1acce29f] .ant-collapse>.ant-collapse-item>.ant-collapse-header{padding:0}.container[data-v-1acce29f]{height:var(--pane-max-height);overflow:auto;display:flex;flex-direction:column;align-items:stretch}.container .generate-idx-hint[data-v-1acce29f]{margin:64px;padding:64px;font-size:2em;text-align:center;background-color:var(--zp-secondary-background);white-space:pre-line;line-height:2.5em;border-radius:16px}.container .remove[data-v-1acce29f]{padding:4px;position:cursor;border-radius:2px}.container .remove[data-v-1acce29f]:hover{background-color:var(--zp-secondary-background)}.container .select[data-v-1acce29f]{padding:8px}.container .search-bar[data-v-1acce29f]{padding:8px;display:flex}.container .search-bar .form-name[data-v-1acce29f]{flex-shrink:0;padding:4px 8px;width:128px}.container .list-container[data-v-1acce29f]{background-color:var(--zp-secondary-background);overflow:scroll}.container .cat-name[data-v-1acce29f]{user-select:none;position:sticky;top:0;padding:4px 16px;background:var(--zp-primary-background);margin:4px;transition:all .3s ease;border-left:4px solid var(--primary-color);cursor:pointer}.container .cat-name[data-v-1acce29f]:hover{border-radius:4px;background-color:var(--zp-secondary-background)}.container .cat-name .arrow[data-v-1acce29f]{color:var(--primary-color);transition:all .3s ease;margin-right:16px}.container .cat-name .arrow.down[data-v-1acce29f]{transform:rotate(90deg)}.container .tag-list[data-v-1acce29f]{list-style:none;margin:16px;border-radius:16px;background:var(--zp-primary-background);padding:8px}.container .tag-list .tag[data-v-1acce29f]{border:2px solid var(--zp-secondary);color:var(--zp-primary);border-radius:999px;padding:4px 16px;margin:4px;display:inline-block;cursor:pointer;max-width:256px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.container .tag-list .tag.selected[data-v-1acce29f]{color:var(--primary-color);border:2px solid var(--primary-color)} ->>>>>>> Add more isolation mechanisms and export functions for easier use as a library:vue/dist/assets/TagSearch-b8ee4cd1.css diff --git a/vue/src/store/useGlobalStore.ts b/vue/src/store/useGlobalStore.ts index 6115305..5abcb97 100644 --- a/vue/src/store/useGlobalStore.ts +++ b/vue/src/store/useGlobalStore.ts @@ -6,6 +6,7 @@ import { getPreferredLang } from '@/i18n' import { SortMethod } from '@/page/fileTransfer/fileSort' import type { getQuickMovePaths } from '@/page/taskRecord/autoComplete' import { type Dict, type ReturnTypeAsync } from '@/util' +import { AnyFn } from '@vueuse/core' import { cloneDeep, uniqueId } from 'lodash-es' import { defineStore } from 'pinia' import { VNode, computed, onMounted, reactive, toRaw, watch } from 'vue' @@ -24,6 +25,31 @@ interface OtherTabPane extends TabPaneBase { export type GridViewFileTag = WithRequired, 'name'>; +export interface GridViewFile extends FileNodeInfo { + /** + * Tags for displaying the file. The 'name' property is required, + * while the other properties are optional. + */ + tags?: GridViewFileTag[]; +} + +/** + * A tab pane that displays files in a grid view. + */ +interface GridViewTabPane extends TabPaneBase { + type: 'grid-view' + /** + * Indicates whether the files in the grid view can be deleted. + */ + removable?: boolean + /** + * Indicates whether files can be dragged and dropped from other pages into the grid view. + */ + allowDragAndDrop?: boolean, + files: GridViewFile[] +} + + export interface GridViewFile extends FileNodeInfo { /** * Tags for displaying the file. The 'name' property is required, @@ -66,7 +92,12 @@ export interface FileTransferTabPane extends TabPaneBase { stackKey?: string } -export type TabPane = FileTransferTabPane | OtherTabPane | TagSearchMatchedImageGridTabPane | ImgSliTabPane +export type TabPane = + | FileTransferTabPane + | OtherTabPane + | TagSearchMatchedImageGridTabPane + | ImgSliTabPane + | GridViewTabPane /** * This interface represents a tab, which contains an array of panes, an ID, and a key @@ -195,6 +226,9 @@ export const useGlobalStore = defineStore( const res = quickMovePaths.value.filter((v) => keys.includes(v.key)).map((v) => [v.zh, v.dir]) return Object.fromEntries(res) }) + + const pageFuncExportMap = new Map>() + return { computedTheme, darkModeControl,