From 29f073046a8f0496469aa141cf48195d1d2bb17b Mon Sep 17 00:00:00 2001 From: huchuan Date: Sat, 19 Apr 2025 10:18:11 +0800 Subject: [PATCH] vault backup: 2025-04-19 10:18:11 --- .obsidian/community-plugins.json | 3 +- .obsidian/plugins/favorite-note/data.json | 5 + .obsidian/plugins/favorite-note/main.js | 536 ++++++++++++++++++ .obsidian/plugins/favorite-note/manifest.json | 11 + .obsidian/plugins/favorite-note/styles.css | 78 +++ .../plugins/file-tree-alternative/data.json | 4 +- .../个人管理/物品管理/Excels/记账表2025.xlsx | Bin 65707 -> 65978 bytes HOMEPAGE.md | 2 +- 8 files changed, 635 insertions(+), 4 deletions(-) create mode 100644 .obsidian/plugins/favorite-note/data.json create mode 100644 .obsidian/plugins/favorite-note/main.js create mode 100644 .obsidian/plugins/favorite-note/manifest.json create mode 100644 .obsidian/plugins/favorite-note/styles.css diff --git a/.obsidian/community-plugins.json b/.obsidian/community-plugins.json index 83b17c9..e1e5bd4 100644 --- a/.obsidian/community-plugins.json +++ b/.obsidian/community-plugins.json @@ -9,5 +9,6 @@ "obsidian-mind-map", "obsidian-kanban", "homepage", - "file-tree-alternative" + "file-tree-alternative", + "favorite-note" ] \ No newline at end of file diff --git a/.obsidian/plugins/favorite-note/data.json b/.obsidian/plugins/favorite-note/data.json new file mode 100644 index 0000000..673438e --- /dev/null +++ b/.obsidian/plugins/favorite-note/data.json @@ -0,0 +1,5 @@ +{ + "icon": "star", + "filled": true, + "favorites": {} +} \ No newline at end of file diff --git a/.obsidian/plugins/favorite-note/main.js b/.obsidian/plugins/favorite-note/main.js new file mode 100644 index 0000000..586890e --- /dev/null +++ b/.obsidian/plugins/favorite-note/main.js @@ -0,0 +1,536 @@ +/* +THIS IS A GENERATED/BUNDLED FILE BY ESBUILD +if you want to view the source, please visit the github repository of this plugin +*/ + +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/main.ts +var main_exports = {}; +__export(main_exports, { + default: () => FavoritePlugin +}); +module.exports = __toCommonJS(main_exports); +var import_obsidian6 = require("obsidian"); + +// src/lib/utils.ts +var import_obsidian = require("obsidian"); +function createFavoriteButton(isFavorite = false, icon = "star", fillIcon = false) { + const trailingButton = document.createElement("span"); + trailingButton.classList.add("fav-btn"); + if (isFavorite) { + trailingButton.classList.add("is-favorite"); + if (fillIcon) { + trailingButton.classList.add("fav-icon-filled"); + } + } else { + trailingButton.classList.remove("is-favorite"); + trailingButton.classList.remove("fav-icon-filled"); + } + (0, import_obsidian.setIcon)(trailingButton, icon); + return trailingButton; +} + +// src/constants.ts +var DEFAULT_SETTINGS = { + icon: "star", + filled: false, + favorites: /* @__PURE__ */ new Set() +}; +var SETTINGS_ICON_BTN_ID = "fv-select-icon-btn"; + +// src/variants/BasePlugin.ts +var BasePluginContract = class { +}; +var BasePlugin = class extends BasePluginContract { + constructor(plugin, app) { + super(); + this.isEnabled = false; + this.plugin = plugin; + this.app = app; + this.init(); + } + async init() { + await this.loadSettings(); + } + async loadSettings() { + this.settings = Object.assign( + {}, + DEFAULT_SETTINGS, + await this.plugin.loadData() + ); + this.favorites = new Set(Object.values(this.settings.favorites)); + } + async saveSettings() { + await this.plugin.saveData({ + ...this.settings, + favorites: Object.assign({}, Array.from(this.favorites)) + }); + } + isFavorite(filePath) { + return this.favorites.has(filePath); + } + removeFavorite(filePath) { + this.favorites.delete(filePath); + this.saveSettings(); + } + onFileDelete(file) { + this.removeFavorite(file.path); + } + toggleFavorite(filePath) { + if (this.isFavorite(filePath)) { + this.favorites.delete(filePath); + } else { + this.favorites.add(filePath); + } + this.saveSettings(); + } +}; + +// src/variants/DesktopPlugin.ts +var import_obsidian4 = require("obsidian"); + +// src/tabs/settings-tab.ts +var import_obsidian3 = require("obsidian"); + +// src/modals/choose-icon-modal.ts +var import_obsidian2 = require("obsidian"); +var ChooseFromIconList = class extends import_obsidian2.FuzzySuggestModal { + constructor(plugin, issub = false) { + super(plugin.app); + this.plugin = plugin; + this.issub = issub; + this.setPlaceholder("Choose an icon"); + } + capitalJoin(string) { + const icon = string.split(" "); + return icon.map((icon2) => { + return icon2[0].toUpperCase() + icon2.substring(1); + }).join(" "); + } + getItems() { + return (0, import_obsidian2.getIconIds)(); + } + getItemText(item) { + return this.capitalJoin( + item.replace("feather-", "").replace("remix-", "").replace("bx-", "").replace(/([A-Z])/g, " $1").trim().replace(/-/gi, " ") + ); + } + renderSuggestion(icon, iconItem) { + const span = createSpan({ cls: "fv-icon-item" }); + iconItem.appendChild(span); + (0, import_obsidian2.setIcon)(span, icon.item); + super.renderSuggestion(icon, iconItem); + } + async onChooseItem(item) { + this.plugin.variant.settings.icon = item; + (0, import_obsidian2.setIcon)( + document.querySelector( + `#${SETTINGS_ICON_BTN_ID}` + ), + item + ); + await this.plugin.variant.saveSettings(); + this.plugin.variant.reload(); + setTimeout(() => { + dispatchEvent(new Event("print-greeting-to-console")); + }, 100); + } +}; + +// src/tabs/settings-tab.ts +var FavoritePluginSettingsTab = class extends import_obsidian3.PluginSettingTab { + constructor(app, plugin) { + super(app, plugin); + this.plugin = plugin; + } + display() { + const { containerEl } = this; + containerEl.empty(); + new import_obsidian3.Setting(containerEl).setName("Favorite Icon").setDesc("Choose your favorite icon").addButton((el) => { + el.setIcon(this.plugin.variant.settings.icon); + el.onClick(async () => { + new ChooseFromIconList(this.plugin, false).open(); + }); + this.plugin.variant.saveSettings(); + }).controlEl.children[0].setAttr("id", SETTINGS_ICON_BTN_ID); + new import_obsidian3.Setting(containerEl).setName("Fill Icon").setDesc("If you want to fill the icon or not").addToggle((el) => { + el.setValue(this.plugin.variant.settings.filled); + el.onChange(async (value) => { + this.plugin.variant.settings.filled = value; + this.plugin.variant.saveSettings(); + this.plugin.variant.reload(); + }); + }); + const donationDiv = containerEl.createEl("div", { + cls: "donate-section" + }); + const donateText = createEl("p", { + text: "If you like this Plugin and are considering donating to support continued development, use the button below!" + }); + donationDiv.appendChild(donateText); + donationDiv.appendChild( + this.createDonateButton("https://www.buymeacoffee.com/mahmudz") + ); + } + createDonateButton(link) { + const a = createEl("a"); + a.setAttribute("href", link); + a.addClass("buymeacoffee-img"); + const img = createEl("img", { + attr: { + src: "https://img.buymeacoffee.com/button-api/?text=Buy me a coffee &emoji=&slug=mahmudz&button_colour=BD5FFF&font_colour=ffffff&font_family=Poppins&outline_colour=000000&coffee_colour=FFDD00" + } + }); + a.appendChild(img); + return a; + } +}; + +// src/variants/DesktopPlugin.ts +var DesktopPlugin = class extends BasePlugin { + getFileExplorer() { + return this.app.workspace.containerEl.find(".nav-files-container"); + } + onFolderExpand(e) { + if (this.isEnabled) { + this.addFavoriteIconToFolder(e.currentTarget); + } else { + const parentElement = e.currentTarget; + this.removeFavoriteIconFromChild(parentElement); + } + } + addFavoriteIconToItem(listItem) { + var _a; + const filePath = (_a = listItem.getAttribute("data-path")) != null ? _a : ""; + const trailingButton = createFavoriteButton( + this.isFavorite(filePath), + this.settings.icon, + this.settings.filled + ); + trailingButton.addEventListener("click", (e) => { + const favoriteButton = e.currentTarget; + if (favoriteButton) { + const titleEl = favoriteButton.parentElement; + const filePath2 = titleEl.getAttribute("data-path"); + this.toggleFavorite(filePath2); + if (this.isFavorite(filePath2)) { + favoriteButton.classList.add("is-favorite"); + if (this.settings.filled) { + trailingButton.classList.add("fav-icon-filled"); + } + } else { + favoriteButton.classList.remove("is-favorite"); + trailingButton.classList.remove("fav-icon-filled"); + } + } + }); + listItem.appendChild(trailingButton); + } + addFavoriteIconToFolder(folderEl) { + const listItems = folderEl.querySelectorAll( + ".nav-folder, .nav-file-title" + ); + listItems.forEach((listItem) => { + const isAlreadyExists = listItem.find(".fav-btn"); + if (isAlreadyExists) { + return; + } + if (listItem.classList.contains("nav-file-title")) { + listItem.addClass("fav-nav-file-title"); + this.addFavoriteIconToItem(listItem); + } else if (!listItem.classList.contains("is-collapsed")) { + setTimeout(() => { + this.addFavoriteIconToFolder(listItem); + }, 200); + } else { + listItem.addEventListener( + "click", + this.onFolderExpand.bind(this), + { once: true } + ); + } + }); + } + addFavoriteIcons() { + const parent = this.getFileExplorer(); + if (parent) { + this.addFavoriteIconToFolder(parent); + } + } + removeFavoriteIconFromChild(folderEl) { + const listItems = folderEl.querySelectorAll( + ".nav-folder, .nav-file-title" + ); + listItems.forEach((listItem) => { + if (listItem.classList.contains("nav-file-title")) { + listItem.findAll(".fav-btn").forEach((el) => el.remove()); + listItem.removeClass("fav-nav-file-title"); + } else { + this.removeFavoriteIconFromChild(listItem); + } + }); + } + removeFavoriteIcons() { + const fileExplorer = this.getFileExplorer(); + if (fileExplorer) { + this.removeFavoriteIconFromChild(fileExplorer); + } + } + reload() { + this.removeFavoriteIcons(); + this.addFavoriteIcons(); + } + onFileCreate(file) { + setTimeout(() => { + const listItem = this.app.workspace.containerEl.find( + `[data-path="${file.path}"]` + ); + listItem.classList.add("fav-nav-file-title"); + this.addFavoriteIconToItem(listItem); + }, 100); + } + async onload() { + this.isEnabled = true; + this.app.workspace.onLayoutReady(async () => { + if (import_obsidian4.Platform.isTablet || import_obsidian4.Platform.isDesktop) { + setTimeout(() => { + var _a; + this.addFavoriteIcons(); + (_a = this.getFileExplorer()) == null ? void 0 : _a.findAll(".nav-file-title").forEach((el) => { + el.classList.add("fav-nav-file-title"); + }); + }, 300); + this.app.vault.on("create", this.onFileCreate.bind(this)); + this.app.vault.on("delete", this.onFileDelete.bind(this)); + } + }); + this.plugin.addSettingTab( + new FavoritePluginSettingsTab( + this.app, + this.plugin + ) + ); + } + destroy() { + var _a; + this.isEnabled = false; + (_a = this.getFileExplorer()) == null ? void 0 : _a.findAll(".nav-file-title").forEach((el) => { + el.classList.remove("fav-nav-file-title"); + }); + this.app.vault.off("create", this.onFileCreate.bind(this)); + this.app.vault.off("delete", this.onFileDelete.bind(this)); + this.removeFavoriteIcons(); + } +}; + +// src/variants/MobilePlugin.ts +var import_obsidian5 = require("obsidian"); +var MobilePlugin = class extends BasePlugin { + constructor() { + super(...arguments); + this.onSidebarButtonClick = () => { + const explorer = this.getFileExplorer(); + if (!this.app.workspace.leftSplit.collapsed) { + setTimeout(() => { + this.addFavoriteIconToFolder(explorer); + }, 50); + } + }; + } + getFileListElements(parentEl) { + return parentEl.querySelectorAll(".nav-folder, .nav-file-title"); + } + getFileExplorer() { + var _a; + return (_a = this.app.workspace.getLeavesOfType("file-explorer").pop()) == null ? void 0 : _a.view.containerEl; + } + removeFavoriteIconFromChild(folderEl) { + const listItems = this.getFileListElements(folderEl); + listItems.forEach((listItem) => { + if (listItem.classList.contains("nav-file-title")) { + listItem.findAll(".mobile-fav-btn").forEach((el) => el.remove()); + listItem.removeClass("fav-nav-file-title"); + } else { + this.removeFavoriteIconFromChild(listItem); + } + }); + } + createFavoriteButton(isFavorite = false) { + const trailingButton = document.createElement("span"); + trailingButton.classList.add("mobile-fav-btn"); + if (isFavorite) { + trailingButton.classList.add("is-favorite"); + } else { + trailingButton.classList.remove("is-favorite"); + } + (0, import_obsidian5.setIcon)(trailingButton, this.settings.icon); + return trailingButton; + } + addFavoriteIconToItem(listItem) { + var _a; + const favButton = listItem.find(".mobile-fav-btn"); + const filePath = (_a = listItem.getAttribute("data-path")) != null ? _a : ""; + const favorite = this.isFavorite(filePath); + if (favButton) { + if (favorite) { + favButton.classList.add("is-favorite"); + } else { + favButton.classList.remove("is-favorite"); + } + return; + } + listItem.addClass("fav-nav-file-title"); + const trailingButton = this.createFavoriteButton(favorite); + listItem.appendChild(trailingButton); + } + addFavoriteIconToFolder(folderEl) { + const listItems = this.getFileListElements(folderEl); + listItems.forEach((listItem) => { + if (listItem.classList.contains("nav-file-title")) { + this.addFavoriteIconToItem(listItem); + } else { + this.addFavoriteIconToFolder(listItem); + } + }); + } + getHeaderFavoriteActionButton() { + const itemView = this.app.workspace.getActiveViewOfType(import_obsidian5.ItemView); + return itemView == null ? void 0 : itemView.containerEl.querySelector( + '.clickable-icon.view-action[aria-label="Favorite"]' + ); + } + itemViewAlreadyHasButton() { + return this.getHeaderFavoriteActionButton() != null; + } + getSidebarToggleButton() { + var _a, _b, _c; + if (import_obsidian5.Platform.isTablet) { + return (_a = this.app.workspace.containerEl) == null ? void 0 : _a.querySelector( + ".sidebar-toggle-button" + ); + } + return (_c = (_b = this.app.workspace.getActiveViewOfType(import_obsidian5.ItemView)) == null ? void 0 : _b.containerEl) == null ? void 0 : _c.querySelector( + 'button[aria-label="Expand"]' + ); + } + registerSidebarToggleEvents() { + const btn = this.getSidebarToggleButton(); + btn == null ? void 0 : btn.addEventListener("click", this.onSidebarButtonClick); + } + deregisterSidebarToggleEvents() { + const btn = this.getSidebarToggleButton(); + btn == null ? void 0 : btn.removeEventListener("click", this.onSidebarButtonClick); + } + updateHeaderButtonState() { + var _a; + const filePath = (_a = this.app.workspace.getActiveFile()) == null ? void 0 : _a.path; + const btn = this.getHeaderFavoriteActionButton(); + if (this.isFavorite(filePath)) { + btn == null ? void 0 : btn.classList.remove("mobile-header-fav-idle"); + btn == null ? void 0 : btn.classList.add("is-favorite"); + } else { + btn == null ? void 0 : btn.classList.remove("is-favorite"); + btn == null ? void 0 : btn.classList.add("mobile-header-fav-idle"); + } + } + onHeaderButtonClick() { + var _a; + const filePath = (_a = this.app.workspace.getActiveFile()) == null ? void 0 : _a.path; + if (!filePath) { + return; + } + this.toggleFavorite(filePath); + this.updateHeaderButtonState(); + } + addFavoriteButtonToHeader() { + var _a; + const filePath = (_a = this.app.workspace.getActiveFile()) == null ? void 0 : _a.path; + if (!filePath) { + return; + } + const itemView = this.app.workspace.getActiveViewOfType(import_obsidian5.ItemView); + const action = itemView == null ? void 0 : itemView.addAction( + this.settings.icon, + "Favorite", + this.onHeaderButtonClick.bind(this) + ); + action == null ? void 0 : action.classList.add( + this.isFavorite(filePath) ? "is-favorite" : "mobile-header-fav-idle" + ); + } + onload() { + this.app.workspace.on("window-open", () => { + console.log("open"); + }); + this.app.workspace.onLayoutReady(() => { + setTimeout(() => { + this.addFavoriteButtonToHeader(); + this.registerSidebarToggleEvents(); + this.onSidebarButtonClick(); + }, 100); + this.plugin.registerEvent( + this.app.workspace.on("active-leaf-change", (leaf) => { + if (!this.itemViewAlreadyHasButton()) { + this.addFavoriteButtonToHeader(); + } + this.updateHeaderButtonState(); + }) + ); + this.plugin.registerEvent( + this.app.vault.on("delete", this.onFileDelete.bind(this)) + ); + }); + } + reload() { + } + destroy() { + var _a, _b; + this.isEnabled = false; + (_a = this.getHeaderFavoriteActionButton()) == null ? void 0 : _a.remove(); + this.deregisterSidebarToggleEvents(); + (_b = this.getFileExplorer()) == null ? void 0 : _b.findAll(".nav-file-title").forEach((el) => { + el.classList.remove("fav-nav-file-title"); + el.find(".mobile-fav-btn").remove(); + }); + } +}; + +// src/main.ts +var FavoritePlugin = class extends import_obsidian6.Plugin { + constructor(app, manifest) { + super(app, manifest); + if (import_obsidian6.Platform.isDesktop) { + this.variant = new DesktopPlugin(this, this.app); + } + if (import_obsidian6.Platform.isMobile) { + this.variant = new MobilePlugin(this, this.app); + } + } + onload() { + var _a; + (_a = this.variant) == null ? void 0 : _a.onload(); + } + onunload() { + var _a; + (_a = this.variant) == null ? void 0 : _a.destroy(); + } +}; + +/* nosourcemap */ \ No newline at end of file diff --git a/.obsidian/plugins/favorite-note/manifest.json b/.obsidian/plugins/favorite-note/manifest.json new file mode 100644 index 0000000..49f4366 --- /dev/null +++ b/.obsidian/plugins/favorite-note/manifest.json @@ -0,0 +1,11 @@ +{ + "id": "favorite-note", + "name": "Favorite Note", + "version": "2.0.3", + "minAppVersion": "0.15.0", + "description": "Mark your note as favorite.", + "author": "mahmudz", + "authorUrl": "https://github.com/mahmudz", + "fundingUrl": "https://www.buymeacoffee.com/mahmudz", + "isDesktopOnly": false +} \ No newline at end of file diff --git a/.obsidian/plugins/favorite-note/styles.css b/.obsidian/plugins/favorite-note/styles.css new file mode 100644 index 0000000..a13b5b8 --- /dev/null +++ b/.obsidian/plugins/favorite-note/styles.css @@ -0,0 +1,78 @@ +/* + +This CSS file will be included with your plugin, and +available in the app when your plugin is enabled. + +If your plugin does not need CSS, delete this file. + +*/ + +.fav-nav-file-title { + display: flex; + align-items: center; + justify-content: space-between; + gap: 5px; +} + +.nav-file-title-content, +.nav-folder-title-content { + flex: 1; +} + +.fav-btn { + visibility: hidden; + cursor: pointer; + display: flex; +} + + +.fav-btn:hover { + color: #9f9f9f; +} + +.fav-btn svg.svg-icon { + height: 16px; + width: 16px; +} + +.fav-icon-filled svg { + fill: var(--text-accent); +} + +.nav-file:hover .fav-btn { + visibility: visible; +} + +.mobile-header-fav-idle { + color: var(--text-faint); +} + +.mobile-fav-btn { + cursor: pointer; + display: flex; + visibility: hidden; +} + +.is-favorite { + visibility: visible; + color: var(--text-accent); +} + +.is-favorite:hover { + visibility: visible; + color: var(--text-accent-hover); +} + +.donate-section { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + padding-top: 40px; +} + +.fv-icon-item { + line-height: normal; + vertical-align: middle; + margin-right: 8px; +} \ No newline at end of file diff --git a/.obsidian/plugins/file-tree-alternative/data.json b/.obsidian/plugins/file-tree-alternative/data.json index f334790..4684205 100644 --- a/.obsidian/plugins/file-tree-alternative/data.json +++ b/.obsidian/plugins/file-tree-alternative/data.json @@ -2,7 +2,7 @@ "openViewOnStart": true, "ribbonIcon": true, "showRootFolder": true, - "showFilesFromSubFolders": true, + "showFilesFromSubFolders": false, "searchFunction": true, "allSearchOnlyInFocusedFolder": false, "showFilesFromSubFoldersButton": true, @@ -13,7 +13,7 @@ "folderIcon": "icomoon", "folderCount": true, "folderCountOption": "notes", - "evernoteView": "Horizontal", + "evernoteView": "Vertical", "filePreviewOnHover": false, "iconBeforeFileName": true, "sortFilesBy": "name", diff --git a/20-Area/21-Person/个人管理/物品管理/Excels/记账表2025.xlsx b/20-Area/21-Person/个人管理/物品管理/Excels/记账表2025.xlsx index b68751370b8a5a58a17905e4a7c8250faba9baa7..c6d10edfccf64139dbd63097896a182ac560ffbf 100755 GIT binary patch delta 7670 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