🎨 asset search

This commit is contained in:
Vanessa 2023-08-18 12:09:55 +08:00
parent 099d45a8b5
commit bd59d77a76
5 changed files with 17 additions and 25 deletions

View file

@ -216,7 +216,7 @@
} }
.def--mark { .def--mark {
background-color: var(--b3-protyle-inline-mark-background); background-color: var(--b3-theme-secondary);
} }
span[data-type~="block-ref"], span[data-type~="block-ref"],

View file

@ -491,6 +491,9 @@ export abstract class Constants {
public static readonly SIYUAN_ASSETS_AUDIO: string[] = [".mp3", ".wav", ".ogg", ".m4a"]; public static readonly SIYUAN_ASSETS_AUDIO: string[] = [".mp3", ".wav", ".ogg", ".m4a"];
public static readonly SIYUAN_ASSETS_VIDEO: string[] = [".mov", ".weba", ".mkv", ".mp4", ".webm"]; public static readonly SIYUAN_ASSETS_VIDEO: string[] = [".mov", ".weba", ".mkv", ".mp4", ".webm"];
public static readonly SIYUAN_ASSETS_EXTS: string[] = [".pdf"].concat(Constants.SIYUAN_ASSETS_IMAGE).concat(Constants.SIYUAN_ASSETS_AUDIO).concat(Constants.SIYUAN_ASSETS_VIDEO); public static readonly SIYUAN_ASSETS_EXTS: string[] = [".pdf"].concat(Constants.SIYUAN_ASSETS_IMAGE).concat(Constants.SIYUAN_ASSETS_AUDIO).concat(Constants.SIYUAN_ASSETS_VIDEO);
public static readonly SIYUAN_ASSETS_SEARCH: string[] = [".txt", ".md", ".markdown", ".docx", ".xlsx", ".pptx", ".pdf", ".json", ".log", ".sql", ".html", ".xml", ".java", ".h", ".c",
".cpp", ".go", ".rs", ".swift", ".kt", ".py", ".php", ".js", ".css", ".ts", ".sh", ".bat", ".cmd", ".ini", ".yaml",
".rst", ".adoc", ".textile", ".opml", ".org", ".wiki"];
// protyle // protyle
public static readonly SIYUAN_CONFIG_APPEARANCE_DARK_CODE: string[] = ["a11y-dark", "agate", "an-old-hope", "androidstudio", public static readonly SIYUAN_CONFIG_APPEARANCE_DARK_CODE: string[] = ["a11y-dark", "agate", "an-old-hope", "androidstudio",

View file

@ -154,16 +154,13 @@ export const getLocalStorage = (cb: () => void) => {
row: "", row: "",
layout: 0, layout: 0,
method: 0, method: 0,
types: { types: {},
".txt": true,
".md": true,
".docx": true,
".xlsx": true,
".pptx": true,
},
sort: 0, sort: 0,
k: "", k: "",
}; };
Constants.SIYUAN_ASSETS_SEARCH.forEach(type => {
defaultStorage[Constants.LOCAL_SEARCHASSET].types[type] = true
})
defaultStorage[Constants.LOCAL_SEARCHKEYS] = { defaultStorage[Constants.LOCAL_SEARCHKEYS] = {
keys: [], keys: [],
replaceKeys: [], replaceKeys: [],

View file

@ -69,7 +69,7 @@ export const openSearchAsset = (element: Element, isStick: boolean) => {
<div class="search__drag"></div> <div class="search__drag"></div>
<div id="searchAssetPreview" class="fn__flex-1 search__preview" style="padding: 8px"></div> <div id="searchAssetPreview" class="fn__flex-1 search__preview" style="padding: 8px"></div>
</div> </div>
<div class="search__tip${isStick ? "" : " fn__none"}"> <div class="search__tip${isStick ? " fn__none" : ""}">
<kbd>/</kbd> ${window.siyuan.languages.searchTip1} <kbd>/</kbd> ${window.siyuan.languages.searchTip1}
${enterTip} ${enterTip}
<kbd>Esc</kbd> ${window.siyuan.languages.searchTip5} <kbd>Esc</kbd> ${window.siyuan.languages.searchTip5}
@ -357,35 +357,27 @@ export const assetMethodMenu = (target: HTMLElement, cb: () => void) => {
window.siyuan.menus.menu.popup({x: rect.right, y: rect.bottom}, true); window.siyuan.menus.menu.popup({x: rect.right, y: rect.bottom}, true);
}; };
let filterTypes: string[] = [ const filterTypesHTML = (types:IObject) => {
".txt", ".md", ".markdown", ".docx", ".xlsx", ".pptx", ".pdf", ".json", ".log", ".sql", ".html", ".xml", ".java", ".h", ".c",
".cpp", ".go", ".rs", ".swift", ".kt", ".py", ".php", ".js", ".css", ".ts", ".sh", ".bat", ".cmd", ".ini", ".yaml",
".rst", ".adoc", ".textile", ".opml", ".org", ".wiki",
]
const filterTypesHTML = (types: string[]) => {
filterTypes = filterTypes.sort((a: string, b: string) => {
return a.localeCompare(b);
});
let html = ""; let html = "";
types.forEach((type: string) => { Constants.SIYUAN_ASSETS_SEARCH.sort((a: string, b: string) => {
return a.localeCompare(b);
}).forEach((type: string) => {
html += `<label class="fn__flex b3-label"> html += `<label class="fn__flex b3-label">
<div class="fn__flex-1 fn__flex-center"> <div class="fn__flex-1 fn__flex-center">
${type} ${type}
</div> </div>
<span class="fn__space"></span> <span class="fn__space"></span>
<input class="b3-switch fn__flex-center" data-type="${type}" type="checkbox" checked> <input class="b3-switch fn__flex-center" data-type="${type}" type="checkbox" ${types[type] ? " checked" : ""}>
</label>`; </label>`;
}); });
return html; return html;
} };
export const assetFilterMenu = (assetsElement: Element) => { export const assetFilterMenu = (assetsElement: Element) => {
const localData = window.siyuan.storage[Constants.LOCAL_SEARCHASSET].types; const localData = window.siyuan.storage[Constants.LOCAL_SEARCHASSET].types;
const filterDialog = new Dialog({ const filterDialog = new Dialog({
title: window.siyuan.languages.type, title: window.siyuan.languages.type,
content: `<div class="b3-dialog__content">` + filterTypesHTML(filterTypes) + `</div> content: `<div class="b3-dialog__content">${filterTypesHTML(localData)}</div>
<div class="b3-dialog__action"> <div class="b3-dialog__action">
<button class="b3-button b3-button--cancel">${window.siyuan.languages.cancel}</button><div class="fn__space"></div> <button class="b3-button b3-button--cancel">${window.siyuan.languages.cancel}</button><div class="fn__space"></div>
<button class="b3-button b3-button--text">${window.siyuan.languages.confirm}</button> <button class="b3-button b3-button--text">${window.siyuan.languages.confirm}</button>

View file

@ -508,7 +508,7 @@ export const genSearch = (app: App, config: ISearchOption, element: Element, clo
event.preventDefault(); event.preventDefault();
break; break;
} else if (target.id === "searchAsset") { } else if (target.id === "searchAsset") {
openSearchAsset(assetsElement, !!closeCB); openSearchAsset(assetsElement, !closeCB);
event.stopPropagation(); event.stopPropagation();
event.preventDefault(); event.preventDefault();
break; break;