diff --git a/.obsidian/community-plugins.json b/.obsidian/community-plugins.json index fc209da..2c99718 100644 --- a/.obsidian/community-plugins.json +++ b/.obsidian/community-plugins.json @@ -4,5 +4,7 @@ "obsidian-linter", "terminal", "table-editor-obsidian", - "dataview" + "dataview", + "weather-fetcher", + "geocoding-properties" ] \ No newline at end of file diff --git a/.obsidian/daily-notes.json b/.obsidian/daily-notes.json new file mode 100644 index 0000000..de397bd --- /dev/null +++ b/.obsidian/daily-notes.json @@ -0,0 +1,4 @@ +{ + "template": "templates/daily_template", + "autorun": true +} \ No newline at end of file diff --git a/.obsidian/graph.json b/.obsidian/graph.json index 6395bc1..8bb0fb7 100644 --- a/.obsidian/graph.json +++ b/.obsidian/graph.json @@ -17,6 +17,6 @@ "repelStrength": 10, "linkStrength": 1, "linkDistance": 250, - "scale": 0.9832475302420375, + "scale": 3.0302387620056708, "close": true } \ No newline at end of file diff --git a/.obsidian/hotkeys.json b/.obsidian/hotkeys.json index 7f0d924..0ceda31 100644 --- a/.obsidian/hotkeys.json +++ b/.obsidian/hotkeys.json @@ -39,14 +39,6 @@ "key": "-" } ], - "copilot:chat-toggle-window": [ - { - "modifiers": [ - "Alt" - ], - "key": "J" - } - ], "terminal:open-terminal.integrated.current": [ { "modifiers": [ @@ -73,15 +65,6 @@ "key": "G" } ], - "copilot:chat-open-window": [ - { - "modifiers": [ - "Alt", - "Mod" - ], - "key": "J" - } - ], "table-editor-obsidian:format-all-tables": [ { "modifiers": [ @@ -90,5 +73,14 @@ ], "key": "L" } + ], + "copilot:chat-toggle-window": [ + { + "modifiers": [ + "Alt", + "Mod" + ], + "key": "J" + } ] } \ No newline at end of file diff --git a/.obsidian/plugins/geocoding-properties/data.json b/.obsidian/plugins/geocoding-properties/data.json new file mode 100644 index 0000000..9c05114 --- /dev/null +++ b/.obsidian/plugins/geocoding-properties/data.json @@ -0,0 +1,32 @@ +{ + "properties": { + "address": { + "frontmatterKey": "address", + "enabled": true + }, + "lat": { + "frontmatterKey": "lat", + "enabled": true + }, + "lng": { + "frontmatterKey": "lng", + "enabled": true + }, + "location": { + "frontmatterKey": "location", + "enabled": true + }, + "map_link": { + "frontmatterKey": "map_link", + "enabled": false + }, + "map_view_link": { + "frontmatterKey": "map_view_link", + "enabled": false + } + }, + "overrideExistingProperties": false, + "mapLinkProvider": "osm", + "apiProvider": "free-geocoding-api", + "apiKey": "" +} \ No newline at end of file diff --git a/.obsidian/plugins/geocoding-properties/main.js b/.obsidian/plugins/geocoding-properties/main.js new file mode 100644 index 0000000..3799701 --- /dev/null +++ b/.obsidian/plugins/geocoding-properties/main.js @@ -0,0 +1,602 @@ +/* +THIS IS A GENERATED/BUNDLED FILE BY ESBUILD +if you want to view the source, please visit the github repository of this plugin +*/ + +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; +}; +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 __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// node_modules/deepmerge/dist/cjs.js +var require_cjs = __commonJS({ + "node_modules/deepmerge/dist/cjs.js"(exports, module2) { + "use strict"; + var isMergeableObject = function isMergeableObject2(value) { + return isNonNullObject(value) && !isSpecial(value); + }; + function isNonNullObject(value) { + return !!value && typeof value === "object"; + } + function isSpecial(value) { + var stringValue = Object.prototype.toString.call(value); + return stringValue === "[object RegExp]" || stringValue === "[object Date]" || isReactElement(value); + } + var canUseSymbol = typeof Symbol === "function" && Symbol.for; + var REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for("react.element") : 60103; + function isReactElement(value) { + return value.$$typeof === REACT_ELEMENT_TYPE; + } + function emptyTarget(val) { + return Array.isArray(val) ? [] : {}; + } + function cloneUnlessOtherwiseSpecified(value, options) { + return options.clone !== false && options.isMergeableObject(value) ? deepmerge(emptyTarget(value), value, options) : value; + } + function defaultArrayMerge(target, source, options) { + return target.concat(source).map(function(element) { + return cloneUnlessOtherwiseSpecified(element, options); + }); + } + function getMergeFunction(key, options) { + if (!options.customMerge) { + return deepmerge; + } + var customMerge = options.customMerge(key); + return typeof customMerge === "function" ? customMerge : deepmerge; + } + function getEnumerableOwnPropertySymbols(target) { + return Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(target).filter(function(symbol) { + return Object.propertyIsEnumerable.call(target, symbol); + }) : []; + } + function getKeys(target) { + return Object.keys(target).concat(getEnumerableOwnPropertySymbols(target)); + } + function propertyIsOnObject(object, property) { + try { + return property in object; + } catch (_) { + return false; + } + } + function propertyIsUnsafe(target, key) { + return propertyIsOnObject(target, key) && !(Object.hasOwnProperty.call(target, key) && Object.propertyIsEnumerable.call(target, key)); + } + function mergeObject(target, source, options) { + var destination = {}; + if (options.isMergeableObject(target)) { + getKeys(target).forEach(function(key) { + destination[key] = cloneUnlessOtherwiseSpecified(target[key], options); + }); + } + getKeys(source).forEach(function(key) { + if (propertyIsUnsafe(target, key)) { + return; + } + if (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) { + destination[key] = getMergeFunction(key, options)(target[key], source[key], options); + } else { + destination[key] = cloneUnlessOtherwiseSpecified(source[key], options); + } + }); + return destination; + } + function deepmerge(target, source, options) { + options = options || {}; + options.arrayMerge = options.arrayMerge || defaultArrayMerge; + options.isMergeableObject = options.isMergeableObject || isMergeableObject; + options.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified; + var sourceIsArray = Array.isArray(source); + var targetIsArray = Array.isArray(target); + var sourceAndTargetTypesMatch = sourceIsArray === targetIsArray; + if (!sourceAndTargetTypesMatch) { + return cloneUnlessOtherwiseSpecified(source, options); + } else if (sourceIsArray) { + return options.arrayMerge(target, source, options); + } else { + return mergeObject(target, source, options); + } + } + deepmerge.all = function deepmergeAll(array, options) { + if (!Array.isArray(array)) { + throw new Error("first argument should be an array"); + } + return array.reduce(function(prev, next) { + return deepmerge(prev, next, options); + }, {}); + }; + var deepmerge_1 = deepmerge; + module2.exports = deepmerge_1; + } +}); + +// src/main.ts +var main_exports = {}; +__export(main_exports, { + default: () => GeocodingPlugin +}); +module.exports = __toCommonJS(main_exports); +var import_deepmerge = __toESM(require_cjs()); +var import_obsidian6 = require("obsidian"); + +// src/search-modal.ts +var import_obsidian2 = require("obsidian"); + +// src/results-modal.ts +var import_obsidian = require("obsidian"); +var GeocodingResultsModal = class extends import_obsidian.SuggestModal { + constructor(plugin, results) { + super(plugin.app); + this.plugin = plugin; + this.results = results; + this.setPlaceholder("Select result"); + } + getSuggestions(query) { + return this.results.filter( + (result) => result.address.toLowerCase().includes(query.toLowerCase()) + ); + } + onChooseSuggestion(result) { + this.plugin.insertProperties(result); + } + renderSuggestion({ address, lat, lng, info }, el) { + el.createEl("div", { + text: `${address} (${lat}, ${lng})` + }); + if (info) { + el.createEl("small", { + text: info + }); + } + } +}; + +// src/search-modal.ts +var GeocodingSearchModal = class extends import_obsidian2.Modal { + constructor(plugin, searchTerm) { + super(plugin.app); + this.plugin = plugin; + this.searchTerm = searchTerm; + } + async onSubmit() { + this.close(); + const results = await this.plugin.getResults(this.searchTerm); + new GeocodingResultsModal(this.plugin, results).open(); + } + onOpen() { + const { contentEl } = this; + contentEl.createEl("h1", { + text: "Confirm search term" + }); + new import_obsidian2.Setting(contentEl).setName("Name").addText((text) => { + const component = text.setValue(this.searchTerm).onChange((value) => { + this.searchTerm = value; + }); + component.inputEl.style.width = "100%"; + }); + new import_obsidian2.Setting(contentEl).addButton( + (btn) => btn.setButtonText("Submit").setCta().onClick(async () => { + await this.onSubmit(); + }) + ); + contentEl.addEventListener("keypress", async (e) => { + if (e.key === "Enter") { + e.preventDefault(); + await this.onSubmit(); + } + }); + } + onClose() { + const { contentEl } = this; + contentEl.empty(); + } +}; + +// src/settings.ts +var propertyDescriptions = { + address: { + name: "Address", + detail: "Format varies by provider" + }, + lat: { + name: "Latitude" + }, + lng: { + name: "Longitude" + }, + location: { + name: "Location", + detail: "Coordinates in [lat, lng] format" + }, + map_link: { + name: "Map link" + }, + map_view_link: { + name: "Map view link", + detail: "A link in [](geo:lat,lng) format" + } +}; +var defaultSettings = { + properties: { + address: { + frontmatterKey: "address", + enabled: true + }, + lat: { + frontmatterKey: "lat", + enabled: false + }, + lng: { + frontmatterKey: "lng", + enabled: false + }, + location: { + frontmatterKey: "location", + enabled: false + }, + map_link: { + frontmatterKey: "map_link", + enabled: false + }, + map_view_link: { + frontmatterKey: "map_view_link", + enabled: false + } + }, + overrideExistingProperties: false, + mapLinkProvider: "google", + apiProvider: "free-geocoding-api", + apiKey: "" +}; + +// src/settings-tab.ts +var import_obsidian3 = require("obsidian"); +var GeocodingPluginSettingTab = class extends import_obsidian3.PluginSettingTab { + constructor(app, plugin) { + super(app, plugin); + this.plugin = plugin; + } + display() { + const { containerEl } = this; + containerEl.empty(); + containerEl.createEl("h2", { text: "Properties" }); + for (const [key, description] of Object.entries( + propertyDescriptions + )) { + const property = this.plugin.settings.properties[key]; + new import_obsidian3.Setting(containerEl).setName(description.name || key).setDesc(description.detail || "").addText( + (text) => text.setValue(property.frontmatterKey).onChange(async (value) => { + if (!value) { + return; + } + property.frontmatterKey = value; + await this.plugin.saveSettings(); + }) + ).addToggle( + (toggle) => toggle.setValue(property.enabled).onChange(async (value) => { + property.enabled = value; + await this.plugin.saveSettings(); + }) + ); + } + containerEl.createEl("h2", { text: "Behavior" }); + new import_obsidian3.Setting(containerEl).setName("Override existing properties").setDesc( + "Whether to override existing properties with the same name" + ).addToggle( + (toggle) => toggle.setValue(this.plugin.settings.overrideExistingProperties).onChange(async (value) => { + this.plugin.settings.overrideExistingProperties = value; + await this.plugin.saveSettings(); + }) + ); + new import_obsidian3.Setting(containerEl).setName("Map link provider").setDesc("Provider for the map_link property, if enabled").addDropdown( + (dropdown) => dropdown.addOptions({ + google: "Google Maps", + apple: "Apple Maps", + osm: "OpenStreetMap" + }).setValue(this.plugin.settings.mapLinkProvider).onChange(async (value) => { + switch (value) { + case "google": + case "apple": + case "osm": + this.plugin.settings.mapLinkProvider = value; + break; + } + await this.plugin.saveSettings(); + }) + ); + containerEl.createEl("h2", { text: "API" }); + new import_obsidian3.Setting(containerEl).setName("API provider").addDropdown( + (dropdown) => dropdown.addOptions({ + ["free-geocoding-api"]: "Free Geocoding API", + ["google-geocoding"]: "Google Geocoding" + }).setValue(this.plugin.settings.apiProvider).onChange(async (value) => { + switch (value) { + case "free-geocoding-api": + case "google-geocoding": + this.plugin.settings.apiProvider = value; + break; + } + await this.plugin.saveSettings(); + }) + ); + new import_obsidian3.Setting(containerEl).setName("API key").setDisabled( + this.plugin.settings.apiProvider !== "google-geocoding" + ).addText( + (text) => text.setValue(this.plugin.settings.apiKey).onChange(async (value) => { + this.plugin.settings.apiKey = value; + await this.plugin.saveSettings(); + }) + ); + } +}; + +// src/utils/fetch-free-geocoding-api-results.ts +var import_obsidian4 = require("obsidian"); +var fetchFreeGeocodingAPIResults = async (searchTerm, apiKey) => { + const params = new URLSearchParams({ + q: searchTerm, + api_key: apiKey + }); + const url = `https://geocode.maps.co/search?${params.toString()}`; + const response = await (0, import_obsidian4.requestUrl)({ + url, + throw: false + }); + const retryAfter = response.headers["Retry-After"]; + switch (response.status) { + case 200: + break; + case 401: + throw new Error("Unauthorized. Please check your API key."); + case 409: + case 503: + if (retryAfter) { + throw new Error( + `Too many requests. Please try again in ${retryAfter} seconds.` + ); + } + throw new Error("Too many requests. Please try again later."); + default: + throw new Error(`Server responded with ${response.status}`); + } + const results = response.json; + return results.map((result) => ({ + address: result.display_name, + lat: Number(result.lat), + lng: Number(result.lon), + info: `${result.class} ${result.type}`, + id: result.osm_id.toString(), + provider: "free-geocoding-api" + })); +}; + +// src/utils/fetch-google-geocoding-results.ts +var import_obsidian5 = require("obsidian"); +var fetchGoogleGeocodingResults = async (searchTerm, apiKey) => { + const params = new URLSearchParams({ + address: searchTerm, + key: apiKey + }); + const url = `https://maps.googleapis.com/maps/api/geocode/json?${params.toString()}`; + const response = await (0, import_obsidian5.requestUrl)({ + url, + throw: false + }); + if (response.status !== 200) { + throw new Error(`Server responded with ${response.status}`); + } + const { status, results } = response.json; + switch (status) { + case "OK": + break; + case "ZERO_RESULTS": + throw new Error("No results found"); + case "OVER_DAILY_LIMIT": + throw new Error("Over daily limit"); + case "OVER_QUERY_LIMIT": + throw new Error("Over query limit"); + case "REQUEST_DENIED": + throw new Error("Request denied (invalid API key?)"); + default: + throw new Error("Unknown API response"); + } + return results.map((result) => ({ + address: result.formatted_address, + lat: result.geometry.location.lat, + lng: result.geometry.location.lng, + info: result.types.join(", "), + id: result.place_id, + provider: "google-geocoding" + })); +}; + +// src/utils/make-apple-maps-link.ts +var makeAppleMapsLink = ({ address, lat, lng }) => { + const params = new URLSearchParams({ + ll: `${lat},${lng}`, + address + // used only for display + }); + return `https://maps.apple.com/?${params.toString()}`; +}; + +// src/utils/make-google-maps-link.ts +var makeGoogleMapsLink = ({ + id, + provider, + lat, + lng +}) => { + if (provider === "google-geocoding") { + return `https://www.google.com/maps/search/?api=1&query=Google&query_place_id=${id}`; + } + const params = new URLSearchParams({ + api: "1", + // we can only query by lat,lng or address, so we choose the more precise option + query: `${lat},${lng}` + }); + return `https://www.google.com/maps/search/?${params.toString()}`; +}; + +// src/utils/make-osm-link.ts +var makeOsmLink = ({ id, provider, lat, lng }) => { + if (provider === "free-geocoding-api") { + } + const params = new URLSearchParams({ + mlat: lat.toString(), + mlon: lng.toString() + }); + return `https://openstreetmap.org/?${params.toString()}`; +}; + +// src/main.ts +var GeocodingPlugin = class extends import_obsidian6.Plugin { + async onload() { + await this.loadSettings(); + this.addSettingTab(new GeocodingPluginSettingTab(this.app, this)); + this.addCommand({ + id: "insert-into-current-note", + name: "Insert properties into current note", + editorCallback: async (_, ctx) => { + const currentFile = ctx.file; + if (!currentFile) { + return; + } + const searchTerm = this.getSearchTerm(currentFile); + new GeocodingSearchModal(this, searchTerm).open(); + } + }); + this.addCommand({ + id: "insert-into-current-note-no-confirmation", + name: "Insert properties into current note (no confirmation)", + editorCallback: async (_, ctx) => { + const currentFile = ctx.file; + if (!currentFile) { + return; + } + const searchTerm = this.getSearchTerm(currentFile); + const results = await this.getResults(searchTerm); + await this.insertProperties(results[0]); + } + }); + } + getSearchTerm(file) { + let searchTerm = file.basename; + const metadataCache = this.app.metadataCache.getFileCache(file); + if (metadataCache == null ? void 0 : metadataCache.frontmatter) { + searchTerm = metadataCache.frontmatter.address || metadataCache.frontmatter.title || searchTerm; + } + return searchTerm; + } + async getResults(searchTerm) { + const results = []; + try { + const { apiProvider, apiKey } = this.settings; + switch (apiProvider) { + case "free-geocoding-api": + results.push( + ...await fetchFreeGeocodingAPIResults( + searchTerm, + apiKey + ) + ); + break; + case "google-geocoding": + results.push( + ...await fetchGoogleGeocodingResults( + searchTerm, + apiKey + ) + ); + break; + default: + throw new Error(`Invalid API provider: ${apiProvider}`); + } + } catch (error) { + new import_obsidian6.Notice(String(error)); + throw error; + } + if (!(results == null ? void 0 : results.length)) { + new import_obsidian6.Notice(`No results found for "${searchTerm}"`); + } + return results; + } + async insertProperties(result) { + const currentFile = this.app.workspace.getActiveFile(); + if (!currentFile) { + return; + } + const { overrideExistingProperties, mapLinkProvider, properties } = this.settings; + this.app.fileManager.processFrontMatter(currentFile, (frontmatter) => { + for (const [key, property] of Object.entries(properties)) { + const shouldInsert = property.enabled && (overrideExistingProperties || frontmatter[property.frontmatterKey] === void 0); + if (!shouldInsert) { + continue; + } + switch (key) { + case "location": + frontmatter[property.frontmatterKey] = [ + result.lat.toString(), + result.lng.toString() + ]; + break; + case "map_link": + switch (mapLinkProvider) { + case "google": + frontmatter[property.frontmatterKey] = makeGoogleMapsLink(result); + break; + case "apple": + frontmatter[property.frontmatterKey] = makeAppleMapsLink(result); + break; + case "osm": + frontmatter[property.frontmatterKey] = makeOsmLink(result); + break; + } + break; + case "map_view_link": { + frontmatter[property.frontmatterKey] = `[](geo:${result.lat},${result.lng})`; + break; + } + default: + frontmatter[property.frontmatterKey] = result[key]; + break; + } + } + }); + } + async loadSettings() { + this.settings = (0, import_deepmerge.default)(defaultSettings, await this.loadData() || {}); + } + async saveSettings() { + await this.saveData(this.settings); + } +}; + +/* nosourcemap */ \ No newline at end of file diff --git a/.obsidian/plugins/geocoding-properties/manifest.json b/.obsidian/plugins/geocoding-properties/manifest.json new file mode 100644 index 0000000..0ed57e1 --- /dev/null +++ b/.obsidian/plugins/geocoding-properties/manifest.json @@ -0,0 +1,10 @@ +{ + "id": "geocoding-properties", + "name": "Geocoding Properties", + "version": "2.0.2", + "minAppVersion": "0.15.0", + "description": "Insert address / location data from geocoding APIs as Obsidian properties.", + "author": "Jose Elias Alvarez", + "authorUrl": "https://github.com/jose-elias-alvarez", + "isDesktopOnly": false +} \ No newline at end of file diff --git a/.obsidian/plugins/global-proxy/main.js b/.obsidian/plugins/global-proxy/main.js new file mode 100644 index 0000000..cc72528 --- /dev/null +++ b/.obsidian/plugins/global-proxy/main.js @@ -0,0 +1,185 @@ +var import_obsidian = require("obsidian"); + +const DEFAULT_SETTINGS = { + enableProxy: false, + httpProxy: "", + httpsProxy: "", + socksProxy: "", + bypassRules: ",127.*,10.*,172.16.*,172.17.*,172.18.*,172.19.*,172.20.*,172.21.*,172.22.*,172.23.*,172.24.*,172.25.*,172.26.*,172.27.*,172.28.*,172.29.*,172.30.*,172.31.*,192.168.*", + pluginTokens: "persist:surfing-vault-${appId}" +}; + +var GlobalProxyPlugin = class extends import_obsidian.Plugin { + async onload() { + await this.loadSettings(); + this.addSettingTab(new GlobalProxySettingTab(this.app, this)); + } + + async onunload() { + this.disableProxy() + } + + async loadSettings() { + this.settings = Object.assign({}, DEFAULT_SETTINGS, await this.loadData()); + this.sessionMap = {} + this.enableProxy(); + } + async saveSettings() { + await this.saveData(this.settings); + } + + async enableProxy() { + if (!this.settings.enableProxy) { + return; + } + + let sessions = [] + this.sessionMap.default = electron.remote.session.defaultSession + sessions.push(this.sessionMap.default) + + if (!!this.settings.pluginTokens) { + let pluginTokens = this.settings.pluginTokens.split("\n"); + for (var i = 0; i < pluginTokens.length; i++) { + if (!pluginTokens[i]) { + continue; + } + let token = pluginTokens[i].replace("${appId}", this.app.appId) + let session = await electron.remote.session.fromPartition(token) + sessions.push(session) + this.sessionMap[token] = session + } + } + + let proxyRules = this.composeProxyRules(), + proxyBypassRules = proxyRules ? this.settings.bypassRules : undefined; + + for (var i = 0; i < sessions.length; i++) { + await sessions[i].setProxy({ proxyRules, proxyBypassRules }); + } + + if (proxyRules) { + new import_obsidian.Notice('Enable proxy!'); + } + } + + + async disableProxy() { + let sessions = [] + for (const key in this.sessionMap) { + sessions.push(this.sessionMap[key]) + } + + for (var i = 0; i < sessions.length; i++) { + await sessions[i].setProxy({}); + await sessions[i].closeAllConnections(); + } + new import_obsidian.Notice('Disable proxy!'); + } + + + composeProxyRules() { + if (!["socksProxy", "httpProxy", "httpsProxy"]. + map((p) => !this.settings[p] || isValidFormat(this.settings[p])).reduce((res, check)=>{return res && check}, true)) { + return undefined; + } + + + const httpProxy= isValidFormat(this.settings.httpProxy) ? ";http=" + this.settings.httpProxy : ""; + const httpsProxy= isValidFormat(this.settings.httpsProxy) ? ";https=" + this.settings.httpsProxy : ""; + if (isValidFormat(this.settings.socksProxy)) { + return this.settings.socksProxy + httpProxy + httpsProxy + ",direct://" + } else if (!!httpProxy) { + return !!httpsProxy ? "http=" + this.settings.httpProxy + httpsProxy + ",direct://" + : this.settings.httpProxy + ",direct://" + } else if (!!httpsProxy) { + return this.settings.httpsProxy + ",direct://" + } + + return undefined; + } +}; + +var GlobalProxySettingTab = class extends import_obsidian.PluginSettingTab { + constructor(app, plugin) { + super(app, plugin); + this.plugin = plugin; + } + display() { + const { containerEl } = this; + containerEl.empty(); + new import_obsidian.Setting(containerEl) + .setName("Enable proxy") + .setDesc("Change your proxy status") + .addToggle((val) => val + .setValue(this.plugin.settings.enableProxy) + .onChange(async (value) => { + this.plugin.settings.enableProxy = value; + await this.plugin.saveSettings(); + value ? this.plugin.enableProxy() : this.plugin.disableProxy(); + })); + new import_obsidian.Setting(containerEl) + .setName("Socks Proxy") + .setDesc("Set up your socks proxy") + .addText((text) => text + .setPlaceholder("://:") + .setValue(this.plugin.settings.socksProxy) + .onChange((value) => { + this.refreshProxy("socksProxy", value); + })); + new import_obsidian.Setting(containerEl) + .setName("Http Proxy") + .setDesc("Set up your http proxy") + .addText((text) => text + .setPlaceholder("://:") + .setValue(this.plugin.settings.httpProxy) + .onChange((value) => { + this.refreshProxy("httpProxy", value); + })); + new import_obsidian.Setting(containerEl) + .setName("Https Proxy") + .setDesc("Set up your https proxy") + .addText((text) => text + .setPlaceholder("://:") + .setValue(this.plugin.settings.httpsProxy) + .onChange((value) => { + this.refreshProxy("httpsProxy", value); + })); + new import_obsidian.Setting(containerEl) + .setName("Plugin Tokens") + .setDesc("For proxy specified plugins") + .addTextArea((text) => text + .setValue(this.plugin.settings.pluginTokens) + .onChange((value) => { + this.refreshProxy("pluginTokens", value); + })); + new import_obsidian.Setting(containerEl) + .setName("Blacklist") + .setDesc("Proxy blacklist") + .addTextArea((text) => text + .setPlaceholder("[URL_SCHEME://] HOSTNAME_PATTERN [:]\n. HOSTNAME_SUFFIX_PATTERN [:PORT]\n[SCHEME://] IP_LITERAL [:PORT]\nIP_LITERAL / PREFIX_LENGTH_IN_BITS\n") + .setValue(this.plugin.settings.bypassRules) + .onChange((value) => { + this.refreshProxy("bypassRules", value); + })); + } + async refreshProxy(key, value) { + this.plugin.settings[key] = value; + this.plugin.saveSettings(); + + this.plugin.enableProxy(); + } +}; + + +function isValidFormat(proxyUrl) { + if (!!proxyUrl) { + const regex = /^(\w+):\/\/([^:/]+):(\d+)$/; + const matches = proxyUrl.match(regex); + return !!matches; + } + return false; +} + +module.exports = GlobalProxyPlugin; + +/* nosourcemap */ \ No newline at end of file diff --git a/.obsidian/plugins/global-proxy/manifest.json b/.obsidian/plugins/global-proxy/manifest.json new file mode 100644 index 0000000..104125e --- /dev/null +++ b/.obsidian/plugins/global-proxy/manifest.json @@ -0,0 +1,11 @@ +{ + "id": "global-proxy", + "name": "Global Proxy", + "version": "1.0.4", + "minAppVersion": "0.15.0", + "description": "Use network proxy throughout Obsidian according to the rules configured in this plugin.", + "author": "windingblack", + "fundingUrl": "https://www.buymeacoffee.com/windingblack", + "authorUrl": "https://github.com/windingblack", + "isDesktopOnly": true +} \ No newline at end of file diff --git a/.obsidian/plugins/weather-fetcher/data.json b/.obsidian/plugins/weather-fetcher/data.json new file mode 100644 index 0000000..feaa8bf --- /dev/null +++ b/.obsidian/plugins/weather-fetcher/data.json @@ -0,0 +1,5 @@ +{ + "source": "wttr", + "cacheSeconds": 300, + "addRibbon": true +} \ No newline at end of file diff --git a/.obsidian/plugins/weather-fetcher/main.js b/.obsidian/plugins/weather-fetcher/main.js new file mode 100644 index 0000000..1d6e50d --- /dev/null +++ b/.obsidian/plugins/weather-fetcher/main.js @@ -0,0 +1,1698 @@ +/* +THIS IS A GENERATED/BUNDLED FILE BY ESBUILD +if you want to view the source, please visit the github repository of this plugin +*/ + +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __markAsModule = (target) => __defProp(target, "__esModule", { value: true }); +var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[Object.keys(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; +}; +var __export = (target, all) => { + __markAsModule(target); + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __reExport = (target, module2, desc) => { + if (module2 && typeof module2 === "object" || typeof module2 === "function") { + for (let key of __getOwnPropNames(module2)) + if (!__hasOwnProp.call(target, key) && key !== "default") + __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable }); + } + return target; +}; +var __toModule = (module2) => { + return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2); +}; +var __async = (__this, __arguments, generator) => { + return new Promise((resolve, reject) => { + var fulfilled = (value) => { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + }; + var rejected = (value) => { + try { + step(generator.throw(value)); + } catch (e) { + reject(e); + } + }; + var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected); + step((generator = generator.apply(__this, __arguments)).next()); + }); +}; + +// node_modules/feather-icons/dist/feather.js +var require_feather = __commonJS({ + "node_modules/feather-icons/dist/feather.js"(exports, module2) { + (function webpackUniversalModuleDefinition(root, factory) { + if (typeof exports === "object" && typeof module2 === "object") + module2.exports = factory(); + else if (typeof define === "function" && define.amd) + define([], factory); + else if (typeof exports === "object") + exports["feather"] = factory(); + else + root["feather"] = factory(); + })(typeof self !== "undefined" ? self : exports, function() { + return function(modules) { + var installedModules = {}; + function __webpack_require__(moduleId) { + if (installedModules[moduleId]) { + return installedModules[moduleId].exports; + } + var module3 = installedModules[moduleId] = { + i: moduleId, + l: false, + exports: {} + }; + modules[moduleId].call(module3.exports, module3, module3.exports, __webpack_require__); + module3.l = true; + return module3.exports; + } + __webpack_require__.m = modules; + __webpack_require__.c = installedModules; + __webpack_require__.d = function(exports2, name, getter) { + if (!__webpack_require__.o(exports2, name)) { + Object.defineProperty(exports2, name, { + configurable: false, + enumerable: true, + get: getter + }); + } + }; + __webpack_require__.r = function(exports2) { + Object.defineProperty(exports2, "__esModule", { value: true }); + }; + __webpack_require__.n = function(module3) { + var getter = module3 && module3.__esModule ? function getDefault() { + return module3["default"]; + } : function getModuleExports() { + return module3; + }; + __webpack_require__.d(getter, "a", getter); + return getter; + }; + __webpack_require__.o = function(object, property) { + return Object.prototype.hasOwnProperty.call(object, property); + }; + __webpack_require__.p = ""; + return __webpack_require__(__webpack_require__.s = 0); + }({ + "./dist/icons.json": function(module3) { + module3.exports = { "activity": '', "airplay": '', "alert-circle": '', "alert-octagon": '', "alert-triangle": '', "align-center": '', "align-justify": '', "align-left": '', "align-right": '', "anchor": '', "aperture": '', "archive": '', "arrow-down-circle": '', "arrow-down-left": '', "arrow-down-right": '', "arrow-down": '', "arrow-left-circle": '', "arrow-left": '', "arrow-right-circle": '', "arrow-right": '', "arrow-up-circle": '', "arrow-up-left": '', "arrow-up-right": '', "arrow-up": '', "at-sign": '', "award": '', "bar-chart-2": '', "bar-chart": '', "battery-charging": '', "battery": '', "bell-off": '', "bell": '', "bluetooth": '', "bold": '', "book-open": '', "book": '', "bookmark": '', "box": '', "briefcase": '', "calendar": '', "camera-off": '', "camera": '', "cast": '', "check-circle": '', "check-square": '', "check": '', "chevron-down": '', "chevron-left": '', "chevron-right": '', "chevron-up": '', "chevrons-down": '', "chevrons-left": '', "chevrons-right": '', "chevrons-up": '', "chrome": '', "circle": '', "clipboard": '', "clock": '', "cloud-drizzle": '', "cloud-lightning": '', "cloud-off": '', "cloud-rain": '', "cloud-snow": '', "cloud": '', "code": '', "codepen": '', "codesandbox": '', "coffee": '', "columns": '', "command": '', "compass": '', "copy": '', "corner-down-left": '', "corner-down-right": '', "corner-left-down": '', "corner-left-up": '', "corner-right-down": '', "corner-right-up": '', "corner-up-left": '', "corner-up-right": '', "cpu": '', "credit-card": '', "crop": '', "crosshair": '', "database": '', "delete": '', "disc": '', "divide-circle": '', "divide-square": '', "divide": '', "dollar-sign": '', "download-cloud": '', "download": '', "dribbble": '', "droplet": '', "edit-2": '', "edit-3": '', "edit": '', "external-link": '', "eye-off": '', "eye": '', "facebook": '', "fast-forward": '', "feather": '', "figma": '', "file-minus": '', "file-plus": '', "file-text": '', "file": '', "film": '', "filter": '', "flag": '', "folder-minus": '', "folder-plus": '', "folder": '', "framer": '', "frown": '', "gift": '', "git-branch": '', "git-commit": '', "git-merge": '', "git-pull-request": '', "github": '', "gitlab": '', "globe": '', "grid": '', "hard-drive": '', "hash": '', "headphones": '', "heart": '', "help-circle": '', "hexagon": '', "home": '', "image": '', "inbox": '', "info": '', "instagram": '', "italic": '', "key": '', "layers": '', "layout": '', "life-buoy": '', "link-2": '', "link": '', "linkedin": '', "list": '', "loader": '', "lock": '', "log-in": '', "log-out": '', "mail": '', "map-pin": '', "map": '', "maximize-2": '', "maximize": '', "meh": '', "menu": '', "message-circle": '', "message-square": '', "mic-off": '', "mic": '', "minimize-2": '', "minimize": '', "minus-circle": '', "minus-square": '', "minus": '', "monitor": '', "moon": '', "more-horizontal": '', "more-vertical": '', "mouse-pointer": '', "move": '', "music": '', "navigation-2": '', "navigation": '', "octagon": '', "package": '', "paperclip": '', "pause-circle": '', "pause": '', "pen-tool": '', "percent": '', "phone-call": '', "phone-forwarded": '', "phone-incoming": '', "phone-missed": '', "phone-off": '', "phone-outgoing": '', "phone": '', "pie-chart": '', "play-circle": '', "play": '', "plus-circle": '', "plus-square": '', "plus": '', "pocket": '', "power": '', "printer": '', "radio": '', "refresh-ccw": '', "refresh-cw": '', "repeat": '', "rewind": '', "rotate-ccw": '', "rotate-cw": '', "rss": '', "save": '', "scissors": '', "search": '', "send": '', "server": '', "settings": '', "share-2": '', "share": '', "shield-off": '', "shield": '', "shopping-bag": '', "shopping-cart": '', "shuffle": '', "sidebar": '', "skip-back": '', "skip-forward": '', "slack": '', "slash": '', "sliders": '', "smartphone": '', "smile": '', "speaker": '', "square": '', "star": '', "stop-circle": '', "sun": '', "sunrise": '', "sunset": '', "tablet": '', "tag": '', "target": '', "terminal": '', "thermometer": '', "thumbs-down": '', "thumbs-up": '', "toggle-left": '', "toggle-right": '', "tool": '', "trash-2": '', "trash": '', "trello": '', "trending-down": '', "trending-up": '', "triangle": '', "truck": '', "tv": '', "twitch": '', "twitter": '', "type": '', "umbrella": '', "underline": '', "unlock": '', "upload-cloud": '', "upload": '', "user-check": '', "user-minus": '', "user-plus": '', "user-x": '', "user": '', "users": '', "video-off": '', "video": '', "voicemail": '', "volume-1": '', "volume-2": '', "volume-x": '', "volume": '', "watch": '', "wifi-off": '', "wifi": '', "wind": '', "x-circle": '', "x-octagon": '', "x-square": '', "x": '', "youtube": '', "zap-off": '', "zap": '', "zoom-in": '', "zoom-out": '' }; + }, + "./node_modules/classnames/dedupe.js": function(module3, exports2, __webpack_require__) { + var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; + (function() { + "use strict"; + var classNames = function() { + function StorageObject() { + } + StorageObject.prototype = Object.create(null); + function _parseArray(resultSet, array) { + var length = array.length; + for (var i = 0; i < length; ++i) { + _parse(resultSet, array[i]); + } + } + var hasOwn = {}.hasOwnProperty; + function _parseNumber(resultSet, num) { + resultSet[num] = true; + } + function _parseObject(resultSet, object) { + for (var k in object) { + if (hasOwn.call(object, k)) { + resultSet[k] = !!object[k]; + } + } + } + var SPACE = /\s+/; + function _parseString(resultSet, str) { + var array = str.split(SPACE); + var length = array.length; + for (var i = 0; i < length; ++i) { + resultSet[array[i]] = true; + } + } + function _parse(resultSet, arg) { + if (!arg) + return; + var argType = typeof arg; + if (argType === "string") { + _parseString(resultSet, arg); + } else if (Array.isArray(arg)) { + _parseArray(resultSet, arg); + } else if (argType === "object") { + _parseObject(resultSet, arg); + } else if (argType === "number") { + _parseNumber(resultSet, arg); + } + } + function _classNames() { + var len = arguments.length; + var args = Array(len); + for (var i = 0; i < len; i++) { + args[i] = arguments[i]; + } + var classSet = new StorageObject(); + _parseArray(classSet, args); + var list = []; + for (var k in classSet) { + if (classSet[k]) { + list.push(k); + } + } + return list.join(" "); + } + return _classNames; + }(); + if (typeof module3 !== "undefined" && module3.exports) { + module3.exports = classNames; + } else if (true) { + !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function() { + return classNames; + }.apply(exports2, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== void 0 && (module3.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + } else { + } + })(); + }, + "./node_modules/core-js/es/array/from.js": function(module3, exports2, __webpack_require__) { + __webpack_require__("./node_modules/core-js/modules/es.string.iterator.js"); + __webpack_require__("./node_modules/core-js/modules/es.array.from.js"); + var path = __webpack_require__("./node_modules/core-js/internals/path.js"); + module3.exports = path.Array.from; + }, + "./node_modules/core-js/internals/a-function.js": function(module3, exports2) { + module3.exports = function(it) { + if (typeof it != "function") { + throw TypeError(String(it) + " is not a function"); + } + return it; + }; + }, + "./node_modules/core-js/internals/an-object.js": function(module3, exports2, __webpack_require__) { + var isObject = __webpack_require__("./node_modules/core-js/internals/is-object.js"); + module3.exports = function(it) { + if (!isObject(it)) { + throw TypeError(String(it) + " is not an object"); + } + return it; + }; + }, + "./node_modules/core-js/internals/array-from.js": function(module3, exports2, __webpack_require__) { + "use strict"; + var bind = __webpack_require__("./node_modules/core-js/internals/bind-context.js"); + var toObject = __webpack_require__("./node_modules/core-js/internals/to-object.js"); + var callWithSafeIterationClosing = __webpack_require__("./node_modules/core-js/internals/call-with-safe-iteration-closing.js"); + var isArrayIteratorMethod = __webpack_require__("./node_modules/core-js/internals/is-array-iterator-method.js"); + var toLength = __webpack_require__("./node_modules/core-js/internals/to-length.js"); + var createProperty = __webpack_require__("./node_modules/core-js/internals/create-property.js"); + var getIteratorMethod = __webpack_require__("./node_modules/core-js/internals/get-iterator-method.js"); + module3.exports = function from(arrayLike) { + var O = toObject(arrayLike); + var C = typeof this == "function" ? this : Array; + var argumentsLength = arguments.length; + var mapfn = argumentsLength > 1 ? arguments[1] : void 0; + var mapping = mapfn !== void 0; + var index = 0; + var iteratorMethod = getIteratorMethod(O); + var length, result, step, iterator; + if (mapping) + mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : void 0, 2); + if (iteratorMethod != void 0 && !(C == Array && isArrayIteratorMethod(iteratorMethod))) { + iterator = iteratorMethod.call(O); + result = new C(); + for (; !(step = iterator.next()).done; index++) { + createProperty(result, index, mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value); + } + } else { + length = toLength(O.length); + result = new C(length); + for (; length > index; index++) { + createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]); + } + } + result.length = index; + return result; + }; + }, + "./node_modules/core-js/internals/array-includes.js": function(module3, exports2, __webpack_require__) { + var toIndexedObject = __webpack_require__("./node_modules/core-js/internals/to-indexed-object.js"); + var toLength = __webpack_require__("./node_modules/core-js/internals/to-length.js"); + var toAbsoluteIndex = __webpack_require__("./node_modules/core-js/internals/to-absolute-index.js"); + module3.exports = function(IS_INCLUDES) { + return function($this, el, fromIndex) { + var O = toIndexedObject($this); + var length = toLength(O.length); + var index = toAbsoluteIndex(fromIndex, length); + var value; + if (IS_INCLUDES && el != el) + while (length > index) { + value = O[index++]; + if (value != value) + return true; + } + else + for (; length > index; index++) + if (IS_INCLUDES || index in O) { + if (O[index] === el) + return IS_INCLUDES || index || 0; + } + return !IS_INCLUDES && -1; + }; + }; + }, + "./node_modules/core-js/internals/bind-context.js": function(module3, exports2, __webpack_require__) { + var aFunction = __webpack_require__("./node_modules/core-js/internals/a-function.js"); + module3.exports = function(fn, that, length) { + aFunction(fn); + if (that === void 0) + return fn; + switch (length) { + case 0: + return function() { + return fn.call(that); + }; + case 1: + return function(a) { + return fn.call(that, a); + }; + case 2: + return function(a, b) { + return fn.call(that, a, b); + }; + case 3: + return function(a, b, c) { + return fn.call(that, a, b, c); + }; + } + return function() { + return fn.apply(that, arguments); + }; + }; + }, + "./node_modules/core-js/internals/call-with-safe-iteration-closing.js": function(module3, exports2, __webpack_require__) { + var anObject = __webpack_require__("./node_modules/core-js/internals/an-object.js"); + module3.exports = function(iterator, fn, value, ENTRIES) { + try { + return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value); + } catch (error) { + var returnMethod = iterator["return"]; + if (returnMethod !== void 0) + anObject(returnMethod.call(iterator)); + throw error; + } + }; + }, + "./node_modules/core-js/internals/check-correctness-of-iteration.js": function(module3, exports2, __webpack_require__) { + var wellKnownSymbol = __webpack_require__("./node_modules/core-js/internals/well-known-symbol.js"); + var ITERATOR = wellKnownSymbol("iterator"); + var SAFE_CLOSING = false; + try { + var called = 0; + var iteratorWithReturn = { + next: function() { + return { done: !!called++ }; + }, + "return": function() { + SAFE_CLOSING = true; + } + }; + iteratorWithReturn[ITERATOR] = function() { + return this; + }; + Array.from(iteratorWithReturn, function() { + throw 2; + }); + } catch (error) { + } + module3.exports = function(exec, SKIP_CLOSING) { + if (!SKIP_CLOSING && !SAFE_CLOSING) + return false; + var ITERATION_SUPPORT = false; + try { + var object = {}; + object[ITERATOR] = function() { + return { + next: function() { + return { done: ITERATION_SUPPORT = true }; + } + }; + }; + exec(object); + } catch (error) { + } + return ITERATION_SUPPORT; + }; + }, + "./node_modules/core-js/internals/classof-raw.js": function(module3, exports2) { + var toString = {}.toString; + module3.exports = function(it) { + return toString.call(it).slice(8, -1); + }; + }, + "./node_modules/core-js/internals/classof.js": function(module3, exports2, __webpack_require__) { + var classofRaw = __webpack_require__("./node_modules/core-js/internals/classof-raw.js"); + var wellKnownSymbol = __webpack_require__("./node_modules/core-js/internals/well-known-symbol.js"); + var TO_STRING_TAG = wellKnownSymbol("toStringTag"); + var CORRECT_ARGUMENTS = classofRaw(function() { + return arguments; + }()) == "Arguments"; + var tryGet = function(it, key) { + try { + return it[key]; + } catch (error) { + } + }; + module3.exports = function(it) { + var O, tag, result; + return it === void 0 ? "Undefined" : it === null ? "Null" : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == "string" ? tag : CORRECT_ARGUMENTS ? classofRaw(O) : (result = classofRaw(O)) == "Object" && typeof O.callee == "function" ? "Arguments" : result; + }; + }, + "./node_modules/core-js/internals/copy-constructor-properties.js": function(module3, exports2, __webpack_require__) { + var has = __webpack_require__("./node_modules/core-js/internals/has.js"); + var ownKeys = __webpack_require__("./node_modules/core-js/internals/own-keys.js"); + var getOwnPropertyDescriptorModule = __webpack_require__("./node_modules/core-js/internals/object-get-own-property-descriptor.js"); + var definePropertyModule = __webpack_require__("./node_modules/core-js/internals/object-define-property.js"); + module3.exports = function(target, source) { + var keys = ownKeys(source); + var defineProperty = definePropertyModule.f; + var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + if (!has(target, key)) + defineProperty(target, key, getOwnPropertyDescriptor(source, key)); + } + }; + }, + "./node_modules/core-js/internals/correct-prototype-getter.js": function(module3, exports2, __webpack_require__) { + var fails = __webpack_require__("./node_modules/core-js/internals/fails.js"); + module3.exports = !fails(function() { + function F() { + } + F.prototype.constructor = null; + return Object.getPrototypeOf(new F()) !== F.prototype; + }); + }, + "./node_modules/core-js/internals/create-iterator-constructor.js": function(module3, exports2, __webpack_require__) { + "use strict"; + var IteratorPrototype = __webpack_require__("./node_modules/core-js/internals/iterators-core.js").IteratorPrototype; + var create = __webpack_require__("./node_modules/core-js/internals/object-create.js"); + var createPropertyDescriptor = __webpack_require__("./node_modules/core-js/internals/create-property-descriptor.js"); + var setToStringTag = __webpack_require__("./node_modules/core-js/internals/set-to-string-tag.js"); + var Iterators = __webpack_require__("./node_modules/core-js/internals/iterators.js"); + var returnThis = function() { + return this; + }; + module3.exports = function(IteratorConstructor, NAME, next) { + var TO_STRING_TAG = NAME + " Iterator"; + IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) }); + setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true); + Iterators[TO_STRING_TAG] = returnThis; + return IteratorConstructor; + }; + }, + "./node_modules/core-js/internals/create-property-descriptor.js": function(module3, exports2) { + module3.exports = function(bitmap, value) { + return { + enumerable: !(bitmap & 1), + configurable: !(bitmap & 2), + writable: !(bitmap & 4), + value + }; + }; + }, + "./node_modules/core-js/internals/create-property.js": function(module3, exports2, __webpack_require__) { + "use strict"; + var toPrimitive = __webpack_require__("./node_modules/core-js/internals/to-primitive.js"); + var definePropertyModule = __webpack_require__("./node_modules/core-js/internals/object-define-property.js"); + var createPropertyDescriptor = __webpack_require__("./node_modules/core-js/internals/create-property-descriptor.js"); + module3.exports = function(object, key, value) { + var propertyKey = toPrimitive(key); + if (propertyKey in object) + definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value)); + else + object[propertyKey] = value; + }; + }, + "./node_modules/core-js/internals/define-iterator.js": function(module3, exports2, __webpack_require__) { + "use strict"; + var $ = __webpack_require__("./node_modules/core-js/internals/export.js"); + var createIteratorConstructor = __webpack_require__("./node_modules/core-js/internals/create-iterator-constructor.js"); + var getPrototypeOf = __webpack_require__("./node_modules/core-js/internals/object-get-prototype-of.js"); + var setPrototypeOf = __webpack_require__("./node_modules/core-js/internals/object-set-prototype-of.js"); + var setToStringTag = __webpack_require__("./node_modules/core-js/internals/set-to-string-tag.js"); + var hide = __webpack_require__("./node_modules/core-js/internals/hide.js"); + var redefine = __webpack_require__("./node_modules/core-js/internals/redefine.js"); + var wellKnownSymbol = __webpack_require__("./node_modules/core-js/internals/well-known-symbol.js"); + var IS_PURE = __webpack_require__("./node_modules/core-js/internals/is-pure.js"); + var Iterators = __webpack_require__("./node_modules/core-js/internals/iterators.js"); + var IteratorsCore = __webpack_require__("./node_modules/core-js/internals/iterators-core.js"); + var IteratorPrototype = IteratorsCore.IteratorPrototype; + var BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS; + var ITERATOR = wellKnownSymbol("iterator"); + var KEYS = "keys"; + var VALUES = "values"; + var ENTRIES = "entries"; + var returnThis = function() { + return this; + }; + module3.exports = function(Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) { + createIteratorConstructor(IteratorConstructor, NAME, next); + var getIterationMethod = function(KIND) { + if (KIND === DEFAULT && defaultIterator) + return defaultIterator; + if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) + return IterablePrototype[KIND]; + switch (KIND) { + case KEYS: + return function keys() { + return new IteratorConstructor(this, KIND); + }; + case VALUES: + return function values() { + return new IteratorConstructor(this, KIND); + }; + case ENTRIES: + return function entries() { + return new IteratorConstructor(this, KIND); + }; + } + return function() { + return new IteratorConstructor(this); + }; + }; + var TO_STRING_TAG = NAME + " Iterator"; + var INCORRECT_VALUES_NAME = false; + var IterablePrototype = Iterable.prototype; + var nativeIterator = IterablePrototype[ITERATOR] || IterablePrototype["@@iterator"] || DEFAULT && IterablePrototype[DEFAULT]; + var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT); + var anyNativeIterator = NAME == "Array" ? IterablePrototype.entries || nativeIterator : nativeIterator; + var CurrentIteratorPrototype, methods, KEY; + if (anyNativeIterator) { + CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable())); + if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) { + if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) { + if (setPrototypeOf) { + setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype); + } else if (typeof CurrentIteratorPrototype[ITERATOR] != "function") { + hide(CurrentIteratorPrototype, ITERATOR, returnThis); + } + } + setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true); + if (IS_PURE) + Iterators[TO_STRING_TAG] = returnThis; + } + } + if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) { + INCORRECT_VALUES_NAME = true; + defaultIterator = function values() { + return nativeIterator.call(this); + }; + } + if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) { + hide(IterablePrototype, ITERATOR, defaultIterator); + } + Iterators[NAME] = defaultIterator; + if (DEFAULT) { + methods = { + values: getIterationMethod(VALUES), + keys: IS_SET ? defaultIterator : getIterationMethod(KEYS), + entries: getIterationMethod(ENTRIES) + }; + if (FORCED) + for (KEY in methods) { + if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) { + redefine(IterablePrototype, KEY, methods[KEY]); + } + } + else + $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods); + } + return methods; + }; + }, + "./node_modules/core-js/internals/descriptors.js": function(module3, exports2, __webpack_require__) { + var fails = __webpack_require__("./node_modules/core-js/internals/fails.js"); + module3.exports = !fails(function() { + return Object.defineProperty({}, "a", { get: function() { + return 7; + } }).a != 7; + }); + }, + "./node_modules/core-js/internals/document-create-element.js": function(module3, exports2, __webpack_require__) { + var global = __webpack_require__("./node_modules/core-js/internals/global.js"); + var isObject = __webpack_require__("./node_modules/core-js/internals/is-object.js"); + var document2 = global.document; + var exist = isObject(document2) && isObject(document2.createElement); + module3.exports = function(it) { + return exist ? document2.createElement(it) : {}; + }; + }, + "./node_modules/core-js/internals/enum-bug-keys.js": function(module3, exports2) { + module3.exports = [ + "constructor", + "hasOwnProperty", + "isPrototypeOf", + "propertyIsEnumerable", + "toLocaleString", + "toString", + "valueOf" + ]; + }, + "./node_modules/core-js/internals/export.js": function(module3, exports2, __webpack_require__) { + var global = __webpack_require__("./node_modules/core-js/internals/global.js"); + var getOwnPropertyDescriptor = __webpack_require__("./node_modules/core-js/internals/object-get-own-property-descriptor.js").f; + var hide = __webpack_require__("./node_modules/core-js/internals/hide.js"); + var redefine = __webpack_require__("./node_modules/core-js/internals/redefine.js"); + var setGlobal = __webpack_require__("./node_modules/core-js/internals/set-global.js"); + var copyConstructorProperties = __webpack_require__("./node_modules/core-js/internals/copy-constructor-properties.js"); + var isForced = __webpack_require__("./node_modules/core-js/internals/is-forced.js"); + module3.exports = function(options, source) { + var TARGET = options.target; + var GLOBAL = options.global; + var STATIC = options.stat; + var FORCED, target, key, targetProperty, sourceProperty, descriptor; + if (GLOBAL) { + target = global; + } else if (STATIC) { + target = global[TARGET] || setGlobal(TARGET, {}); + } else { + target = (global[TARGET] || {}).prototype; + } + if (target) + for (key in source) { + sourceProperty = source[key]; + if (options.noTargetGet) { + descriptor = getOwnPropertyDescriptor(target, key); + targetProperty = descriptor && descriptor.value; + } else + targetProperty = target[key]; + FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? "." : "#") + key, options.forced); + if (!FORCED && targetProperty !== void 0) { + if (typeof sourceProperty === typeof targetProperty) + continue; + copyConstructorProperties(sourceProperty, targetProperty); + } + if (options.sham || targetProperty && targetProperty.sham) { + hide(sourceProperty, "sham", true); + } + redefine(target, key, sourceProperty, options); + } + }; + }, + "./node_modules/core-js/internals/fails.js": function(module3, exports2) { + module3.exports = function(exec) { + try { + return !!exec(); + } catch (error) { + return true; + } + }; + }, + "./node_modules/core-js/internals/function-to-string.js": function(module3, exports2, __webpack_require__) { + var shared = __webpack_require__("./node_modules/core-js/internals/shared.js"); + module3.exports = shared("native-function-to-string", Function.toString); + }, + "./node_modules/core-js/internals/get-iterator-method.js": function(module3, exports2, __webpack_require__) { + var classof = __webpack_require__("./node_modules/core-js/internals/classof.js"); + var Iterators = __webpack_require__("./node_modules/core-js/internals/iterators.js"); + var wellKnownSymbol = __webpack_require__("./node_modules/core-js/internals/well-known-symbol.js"); + var ITERATOR = wellKnownSymbol("iterator"); + module3.exports = function(it) { + if (it != void 0) + return it[ITERATOR] || it["@@iterator"] || Iterators[classof(it)]; + }; + }, + "./node_modules/core-js/internals/global.js": function(module3, exports2, __webpack_require__) { + (function(global) { + var O = "object"; + var check = function(it) { + return it && it.Math == Math && it; + }; + module3.exports = check(typeof globalThis == O && globalThis) || check(typeof window == O && window) || check(typeof self == O && self) || check(typeof global == O && global) || Function("return this")(); + }).call(this, __webpack_require__("./node_modules/webpack/buildin/global.js")); + }, + "./node_modules/core-js/internals/has.js": function(module3, exports2) { + var hasOwnProperty = {}.hasOwnProperty; + module3.exports = function(it, key) { + return hasOwnProperty.call(it, key); + }; + }, + "./node_modules/core-js/internals/hidden-keys.js": function(module3, exports2) { + module3.exports = {}; + }, + "./node_modules/core-js/internals/hide.js": function(module3, exports2, __webpack_require__) { + var DESCRIPTORS = __webpack_require__("./node_modules/core-js/internals/descriptors.js"); + var definePropertyModule = __webpack_require__("./node_modules/core-js/internals/object-define-property.js"); + var createPropertyDescriptor = __webpack_require__("./node_modules/core-js/internals/create-property-descriptor.js"); + module3.exports = DESCRIPTORS ? function(object, key, value) { + return definePropertyModule.f(object, key, createPropertyDescriptor(1, value)); + } : function(object, key, value) { + object[key] = value; + return object; + }; + }, + "./node_modules/core-js/internals/html.js": function(module3, exports2, __webpack_require__) { + var global = __webpack_require__("./node_modules/core-js/internals/global.js"); + var document2 = global.document; + module3.exports = document2 && document2.documentElement; + }, + "./node_modules/core-js/internals/ie8-dom-define.js": function(module3, exports2, __webpack_require__) { + var DESCRIPTORS = __webpack_require__("./node_modules/core-js/internals/descriptors.js"); + var fails = __webpack_require__("./node_modules/core-js/internals/fails.js"); + var createElement = __webpack_require__("./node_modules/core-js/internals/document-create-element.js"); + module3.exports = !DESCRIPTORS && !fails(function() { + return Object.defineProperty(createElement("div"), "a", { + get: function() { + return 7; + } + }).a != 7; + }); + }, + "./node_modules/core-js/internals/indexed-object.js": function(module3, exports2, __webpack_require__) { + var fails = __webpack_require__("./node_modules/core-js/internals/fails.js"); + var classof = __webpack_require__("./node_modules/core-js/internals/classof-raw.js"); + var split = "".split; + module3.exports = fails(function() { + return !Object("z").propertyIsEnumerable(0); + }) ? function(it) { + return classof(it) == "String" ? split.call(it, "") : Object(it); + } : Object; + }, + "./node_modules/core-js/internals/internal-state.js": function(module3, exports2, __webpack_require__) { + var NATIVE_WEAK_MAP = __webpack_require__("./node_modules/core-js/internals/native-weak-map.js"); + var global = __webpack_require__("./node_modules/core-js/internals/global.js"); + var isObject = __webpack_require__("./node_modules/core-js/internals/is-object.js"); + var hide = __webpack_require__("./node_modules/core-js/internals/hide.js"); + var objectHas = __webpack_require__("./node_modules/core-js/internals/has.js"); + var sharedKey = __webpack_require__("./node_modules/core-js/internals/shared-key.js"); + var hiddenKeys = __webpack_require__("./node_modules/core-js/internals/hidden-keys.js"); + var WeakMap = global.WeakMap; + var set, get, has; + var enforce = function(it) { + return has(it) ? get(it) : set(it, {}); + }; + var getterFor = function(TYPE) { + return function(it) { + var state; + if (!isObject(it) || (state = get(it)).type !== TYPE) { + throw TypeError("Incompatible receiver, " + TYPE + " required"); + } + return state; + }; + }; + if (NATIVE_WEAK_MAP) { + var store = new WeakMap(); + var wmget = store.get; + var wmhas = store.has; + var wmset = store.set; + set = function(it, metadata) { + wmset.call(store, it, metadata); + return metadata; + }; + get = function(it) { + return wmget.call(store, it) || {}; + }; + has = function(it) { + return wmhas.call(store, it); + }; + } else { + var STATE = sharedKey("state"); + hiddenKeys[STATE] = true; + set = function(it, metadata) { + hide(it, STATE, metadata); + return metadata; + }; + get = function(it) { + return objectHas(it, STATE) ? it[STATE] : {}; + }; + has = function(it) { + return objectHas(it, STATE); + }; + } + module3.exports = { + set, + get, + has, + enforce, + getterFor + }; + }, + "./node_modules/core-js/internals/is-array-iterator-method.js": function(module3, exports2, __webpack_require__) { + var wellKnownSymbol = __webpack_require__("./node_modules/core-js/internals/well-known-symbol.js"); + var Iterators = __webpack_require__("./node_modules/core-js/internals/iterators.js"); + var ITERATOR = wellKnownSymbol("iterator"); + var ArrayPrototype = Array.prototype; + module3.exports = function(it) { + return it !== void 0 && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it); + }; + }, + "./node_modules/core-js/internals/is-forced.js": function(module3, exports2, __webpack_require__) { + var fails = __webpack_require__("./node_modules/core-js/internals/fails.js"); + var replacement = /#|\.prototype\./; + var isForced = function(feature, detection) { + var value = data[normalize(feature)]; + return value == POLYFILL ? true : value == NATIVE ? false : typeof detection == "function" ? fails(detection) : !!detection; + }; + var normalize = isForced.normalize = function(string) { + return String(string).replace(replacement, ".").toLowerCase(); + }; + var data = isForced.data = {}; + var NATIVE = isForced.NATIVE = "N"; + var POLYFILL = isForced.POLYFILL = "P"; + module3.exports = isForced; + }, + "./node_modules/core-js/internals/is-object.js": function(module3, exports2) { + module3.exports = function(it) { + return typeof it === "object" ? it !== null : typeof it === "function"; + }; + }, + "./node_modules/core-js/internals/is-pure.js": function(module3, exports2) { + module3.exports = false; + }, + "./node_modules/core-js/internals/iterators-core.js": function(module3, exports2, __webpack_require__) { + "use strict"; + var getPrototypeOf = __webpack_require__("./node_modules/core-js/internals/object-get-prototype-of.js"); + var hide = __webpack_require__("./node_modules/core-js/internals/hide.js"); + var has = __webpack_require__("./node_modules/core-js/internals/has.js"); + var wellKnownSymbol = __webpack_require__("./node_modules/core-js/internals/well-known-symbol.js"); + var IS_PURE = __webpack_require__("./node_modules/core-js/internals/is-pure.js"); + var ITERATOR = wellKnownSymbol("iterator"); + var BUGGY_SAFARI_ITERATORS = false; + var returnThis = function() { + return this; + }; + var IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator; + if ([].keys) { + arrayIterator = [].keys(); + if (!("next" in arrayIterator)) + BUGGY_SAFARI_ITERATORS = true; + else { + PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator)); + if (PrototypeOfArrayIteratorPrototype !== Object.prototype) + IteratorPrototype = PrototypeOfArrayIteratorPrototype; + } + } + if (IteratorPrototype == void 0) + IteratorPrototype = {}; + if (!IS_PURE && !has(IteratorPrototype, ITERATOR)) + hide(IteratorPrototype, ITERATOR, returnThis); + module3.exports = { + IteratorPrototype, + BUGGY_SAFARI_ITERATORS + }; + }, + "./node_modules/core-js/internals/iterators.js": function(module3, exports2) { + module3.exports = {}; + }, + "./node_modules/core-js/internals/native-symbol.js": function(module3, exports2, __webpack_require__) { + var fails = __webpack_require__("./node_modules/core-js/internals/fails.js"); + module3.exports = !!Object.getOwnPropertySymbols && !fails(function() { + return !String(Symbol()); + }); + }, + "./node_modules/core-js/internals/native-weak-map.js": function(module3, exports2, __webpack_require__) { + var global = __webpack_require__("./node_modules/core-js/internals/global.js"); + var nativeFunctionToString = __webpack_require__("./node_modules/core-js/internals/function-to-string.js"); + var WeakMap = global.WeakMap; + module3.exports = typeof WeakMap === "function" && /native code/.test(nativeFunctionToString.call(WeakMap)); + }, + "./node_modules/core-js/internals/object-create.js": function(module3, exports2, __webpack_require__) { + var anObject = __webpack_require__("./node_modules/core-js/internals/an-object.js"); + var defineProperties = __webpack_require__("./node_modules/core-js/internals/object-define-properties.js"); + var enumBugKeys = __webpack_require__("./node_modules/core-js/internals/enum-bug-keys.js"); + var hiddenKeys = __webpack_require__("./node_modules/core-js/internals/hidden-keys.js"); + var html = __webpack_require__("./node_modules/core-js/internals/html.js"); + var documentCreateElement = __webpack_require__("./node_modules/core-js/internals/document-create-element.js"); + var sharedKey = __webpack_require__("./node_modules/core-js/internals/shared-key.js"); + var IE_PROTO = sharedKey("IE_PROTO"); + var PROTOTYPE = "prototype"; + var Empty = function() { + }; + var createDict = function() { + var iframe = documentCreateElement("iframe"); + var length = enumBugKeys.length; + var lt = "<"; + var script = "script"; + var gt = ">"; + var js = "java" + script + ":"; + var iframeDocument; + iframe.style.display = "none"; + html.appendChild(iframe); + iframe.src = String(js); + iframeDocument = iframe.contentWindow.document; + iframeDocument.open(); + iframeDocument.write(lt + script + gt + "document.F=Object" + lt + "/" + script + gt); + iframeDocument.close(); + createDict = iframeDocument.F; + while (length--) + delete createDict[PROTOTYPE][enumBugKeys[length]]; + return createDict(); + }; + module3.exports = Object.create || function create(O, Properties) { + var result; + if (O !== null) { + Empty[PROTOTYPE] = anObject(O); + result = new Empty(); + Empty[PROTOTYPE] = null; + result[IE_PROTO] = O; + } else + result = createDict(); + return Properties === void 0 ? result : defineProperties(result, Properties); + }; + hiddenKeys[IE_PROTO] = true; + }, + "./node_modules/core-js/internals/object-define-properties.js": function(module3, exports2, __webpack_require__) { + var DESCRIPTORS = __webpack_require__("./node_modules/core-js/internals/descriptors.js"); + var definePropertyModule = __webpack_require__("./node_modules/core-js/internals/object-define-property.js"); + var anObject = __webpack_require__("./node_modules/core-js/internals/an-object.js"); + var objectKeys = __webpack_require__("./node_modules/core-js/internals/object-keys.js"); + module3.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) { + anObject(O); + var keys = objectKeys(Properties); + var length = keys.length; + var i = 0; + var key; + while (length > i) + definePropertyModule.f(O, key = keys[i++], Properties[key]); + return O; + }; + }, + "./node_modules/core-js/internals/object-define-property.js": function(module3, exports2, __webpack_require__) { + var DESCRIPTORS = __webpack_require__("./node_modules/core-js/internals/descriptors.js"); + var IE8_DOM_DEFINE = __webpack_require__("./node_modules/core-js/internals/ie8-dom-define.js"); + var anObject = __webpack_require__("./node_modules/core-js/internals/an-object.js"); + var toPrimitive = __webpack_require__("./node_modules/core-js/internals/to-primitive.js"); + var nativeDefineProperty = Object.defineProperty; + exports2.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) { + anObject(O); + P = toPrimitive(P, true); + anObject(Attributes); + if (IE8_DOM_DEFINE) + try { + return nativeDefineProperty(O, P, Attributes); + } catch (error) { + } + if ("get" in Attributes || "set" in Attributes) + throw TypeError("Accessors not supported"); + if ("value" in Attributes) + O[P] = Attributes.value; + return O; + }; + }, + "./node_modules/core-js/internals/object-get-own-property-descriptor.js": function(module3, exports2, __webpack_require__) { + var DESCRIPTORS = __webpack_require__("./node_modules/core-js/internals/descriptors.js"); + var propertyIsEnumerableModule = __webpack_require__("./node_modules/core-js/internals/object-property-is-enumerable.js"); + var createPropertyDescriptor = __webpack_require__("./node_modules/core-js/internals/create-property-descriptor.js"); + var toIndexedObject = __webpack_require__("./node_modules/core-js/internals/to-indexed-object.js"); + var toPrimitive = __webpack_require__("./node_modules/core-js/internals/to-primitive.js"); + var has = __webpack_require__("./node_modules/core-js/internals/has.js"); + var IE8_DOM_DEFINE = __webpack_require__("./node_modules/core-js/internals/ie8-dom-define.js"); + var nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; + exports2.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) { + O = toIndexedObject(O); + P = toPrimitive(P, true); + if (IE8_DOM_DEFINE) + try { + return nativeGetOwnPropertyDescriptor(O, P); + } catch (error) { + } + if (has(O, P)) + return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]); + }; + }, + "./node_modules/core-js/internals/object-get-own-property-names.js": function(module3, exports2, __webpack_require__) { + var internalObjectKeys = __webpack_require__("./node_modules/core-js/internals/object-keys-internal.js"); + var enumBugKeys = __webpack_require__("./node_modules/core-js/internals/enum-bug-keys.js"); + var hiddenKeys = enumBugKeys.concat("length", "prototype"); + exports2.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { + return internalObjectKeys(O, hiddenKeys); + }; + }, + "./node_modules/core-js/internals/object-get-own-property-symbols.js": function(module3, exports2) { + exports2.f = Object.getOwnPropertySymbols; + }, + "./node_modules/core-js/internals/object-get-prototype-of.js": function(module3, exports2, __webpack_require__) { + var has = __webpack_require__("./node_modules/core-js/internals/has.js"); + var toObject = __webpack_require__("./node_modules/core-js/internals/to-object.js"); + var sharedKey = __webpack_require__("./node_modules/core-js/internals/shared-key.js"); + var CORRECT_PROTOTYPE_GETTER = __webpack_require__("./node_modules/core-js/internals/correct-prototype-getter.js"); + var IE_PROTO = sharedKey("IE_PROTO"); + var ObjectPrototype = Object.prototype; + module3.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function(O) { + O = toObject(O); + if (has(O, IE_PROTO)) + return O[IE_PROTO]; + if (typeof O.constructor == "function" && O instanceof O.constructor) { + return O.constructor.prototype; + } + return O instanceof Object ? ObjectPrototype : null; + }; + }, + "./node_modules/core-js/internals/object-keys-internal.js": function(module3, exports2, __webpack_require__) { + var has = __webpack_require__("./node_modules/core-js/internals/has.js"); + var toIndexedObject = __webpack_require__("./node_modules/core-js/internals/to-indexed-object.js"); + var arrayIncludes = __webpack_require__("./node_modules/core-js/internals/array-includes.js"); + var hiddenKeys = __webpack_require__("./node_modules/core-js/internals/hidden-keys.js"); + var arrayIndexOf = arrayIncludes(false); + module3.exports = function(object, names) { + var O = toIndexedObject(object); + var i = 0; + var result = []; + var key; + for (key in O) + !has(hiddenKeys, key) && has(O, key) && result.push(key); + while (names.length > i) + if (has(O, key = names[i++])) { + ~arrayIndexOf(result, key) || result.push(key); + } + return result; + }; + }, + "./node_modules/core-js/internals/object-keys.js": function(module3, exports2, __webpack_require__) { + var internalObjectKeys = __webpack_require__("./node_modules/core-js/internals/object-keys-internal.js"); + var enumBugKeys = __webpack_require__("./node_modules/core-js/internals/enum-bug-keys.js"); + module3.exports = Object.keys || function keys(O) { + return internalObjectKeys(O, enumBugKeys); + }; + }, + "./node_modules/core-js/internals/object-property-is-enumerable.js": function(module3, exports2, __webpack_require__) { + "use strict"; + var nativePropertyIsEnumerable = {}.propertyIsEnumerable; + var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; + var NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1); + exports2.f = NASHORN_BUG ? function propertyIsEnumerable(V) { + var descriptor = getOwnPropertyDescriptor(this, V); + return !!descriptor && descriptor.enumerable; + } : nativePropertyIsEnumerable; + }, + "./node_modules/core-js/internals/object-set-prototype-of.js": function(module3, exports2, __webpack_require__) { + var validateSetPrototypeOfArguments = __webpack_require__("./node_modules/core-js/internals/validate-set-prototype-of-arguments.js"); + module3.exports = Object.setPrototypeOf || ("__proto__" in {} ? function() { + var correctSetter = false; + var test = {}; + var setter; + try { + setter = Object.getOwnPropertyDescriptor(Object.prototype, "__proto__").set; + setter.call(test, []); + correctSetter = test instanceof Array; + } catch (error) { + } + return function setPrototypeOf(O, proto) { + validateSetPrototypeOfArguments(O, proto); + if (correctSetter) + setter.call(O, proto); + else + O.__proto__ = proto; + return O; + }; + }() : void 0); + }, + "./node_modules/core-js/internals/own-keys.js": function(module3, exports2, __webpack_require__) { + var global = __webpack_require__("./node_modules/core-js/internals/global.js"); + var getOwnPropertyNamesModule = __webpack_require__("./node_modules/core-js/internals/object-get-own-property-names.js"); + var getOwnPropertySymbolsModule = __webpack_require__("./node_modules/core-js/internals/object-get-own-property-symbols.js"); + var anObject = __webpack_require__("./node_modules/core-js/internals/an-object.js"); + var Reflect2 = global.Reflect; + module3.exports = Reflect2 && Reflect2.ownKeys || function ownKeys(it) { + var keys = getOwnPropertyNamesModule.f(anObject(it)); + var getOwnPropertySymbols = getOwnPropertySymbolsModule.f; + return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys; + }; + }, + "./node_modules/core-js/internals/path.js": function(module3, exports2, __webpack_require__) { + module3.exports = __webpack_require__("./node_modules/core-js/internals/global.js"); + }, + "./node_modules/core-js/internals/redefine.js": function(module3, exports2, __webpack_require__) { + var global = __webpack_require__("./node_modules/core-js/internals/global.js"); + var shared = __webpack_require__("./node_modules/core-js/internals/shared.js"); + var hide = __webpack_require__("./node_modules/core-js/internals/hide.js"); + var has = __webpack_require__("./node_modules/core-js/internals/has.js"); + var setGlobal = __webpack_require__("./node_modules/core-js/internals/set-global.js"); + var nativeFunctionToString = __webpack_require__("./node_modules/core-js/internals/function-to-string.js"); + var InternalStateModule = __webpack_require__("./node_modules/core-js/internals/internal-state.js"); + var getInternalState = InternalStateModule.get; + var enforceInternalState = InternalStateModule.enforce; + var TEMPLATE = String(nativeFunctionToString).split("toString"); + shared("inspectSource", function(it) { + return nativeFunctionToString.call(it); + }); + (module3.exports = function(O, key, value, options) { + var unsafe = options ? !!options.unsafe : false; + var simple = options ? !!options.enumerable : false; + var noTargetGet = options ? !!options.noTargetGet : false; + if (typeof value == "function") { + if (typeof key == "string" && !has(value, "name")) + hide(value, "name", key); + enforceInternalState(value).source = TEMPLATE.join(typeof key == "string" ? key : ""); + } + if (O === global) { + if (simple) + O[key] = value; + else + setGlobal(key, value); + return; + } else if (!unsafe) { + delete O[key]; + } else if (!noTargetGet && O[key]) { + simple = true; + } + if (simple) + O[key] = value; + else + hide(O, key, value); + })(Function.prototype, "toString", function toString() { + return typeof this == "function" && getInternalState(this).source || nativeFunctionToString.call(this); + }); + }, + "./node_modules/core-js/internals/require-object-coercible.js": function(module3, exports2) { + module3.exports = function(it) { + if (it == void 0) + throw TypeError("Can't call method on " + it); + return it; + }; + }, + "./node_modules/core-js/internals/set-global.js": function(module3, exports2, __webpack_require__) { + var global = __webpack_require__("./node_modules/core-js/internals/global.js"); + var hide = __webpack_require__("./node_modules/core-js/internals/hide.js"); + module3.exports = function(key, value) { + try { + hide(global, key, value); + } catch (error) { + global[key] = value; + } + return value; + }; + }, + "./node_modules/core-js/internals/set-to-string-tag.js": function(module3, exports2, __webpack_require__) { + var defineProperty = __webpack_require__("./node_modules/core-js/internals/object-define-property.js").f; + var has = __webpack_require__("./node_modules/core-js/internals/has.js"); + var wellKnownSymbol = __webpack_require__("./node_modules/core-js/internals/well-known-symbol.js"); + var TO_STRING_TAG = wellKnownSymbol("toStringTag"); + module3.exports = function(it, TAG, STATIC) { + if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) { + defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG }); + } + }; + }, + "./node_modules/core-js/internals/shared-key.js": function(module3, exports2, __webpack_require__) { + var shared = __webpack_require__("./node_modules/core-js/internals/shared.js"); + var uid = __webpack_require__("./node_modules/core-js/internals/uid.js"); + var keys = shared("keys"); + module3.exports = function(key) { + return keys[key] || (keys[key] = uid(key)); + }; + }, + "./node_modules/core-js/internals/shared.js": function(module3, exports2, __webpack_require__) { + var global = __webpack_require__("./node_modules/core-js/internals/global.js"); + var setGlobal = __webpack_require__("./node_modules/core-js/internals/set-global.js"); + var IS_PURE = __webpack_require__("./node_modules/core-js/internals/is-pure.js"); + var SHARED = "__core-js_shared__"; + var store = global[SHARED] || setGlobal(SHARED, {}); + (module3.exports = function(key, value) { + return store[key] || (store[key] = value !== void 0 ? value : {}); + })("versions", []).push({ + version: "3.1.3", + mode: IS_PURE ? "pure" : "global", + copyright: "\xA9 2019 Denis Pushkarev (zloirock.ru)" + }); + }, + "./node_modules/core-js/internals/string-at.js": function(module3, exports2, __webpack_require__) { + var toInteger = __webpack_require__("./node_modules/core-js/internals/to-integer.js"); + var requireObjectCoercible = __webpack_require__("./node_modules/core-js/internals/require-object-coercible.js"); + module3.exports = function(that, pos, CONVERT_TO_STRING) { + var S = String(requireObjectCoercible(that)); + var position = toInteger(pos); + var size = S.length; + var first, second; + if (position < 0 || position >= size) + return CONVERT_TO_STRING ? "" : void 0; + first = S.charCodeAt(position); + return first < 55296 || first > 56319 || position + 1 === size || (second = S.charCodeAt(position + 1)) < 56320 || second > 57343 ? CONVERT_TO_STRING ? S.charAt(position) : first : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 55296 << 10) + (second - 56320) + 65536; + }; + }, + "./node_modules/core-js/internals/to-absolute-index.js": function(module3, exports2, __webpack_require__) { + var toInteger = __webpack_require__("./node_modules/core-js/internals/to-integer.js"); + var max = Math.max; + var min = Math.min; + module3.exports = function(index, length) { + var integer = toInteger(index); + return integer < 0 ? max(integer + length, 0) : min(integer, length); + }; + }, + "./node_modules/core-js/internals/to-indexed-object.js": function(module3, exports2, __webpack_require__) { + var IndexedObject = __webpack_require__("./node_modules/core-js/internals/indexed-object.js"); + var requireObjectCoercible = __webpack_require__("./node_modules/core-js/internals/require-object-coercible.js"); + module3.exports = function(it) { + return IndexedObject(requireObjectCoercible(it)); + }; + }, + "./node_modules/core-js/internals/to-integer.js": function(module3, exports2) { + var ceil = Math.ceil; + var floor = Math.floor; + module3.exports = function(argument) { + return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument); + }; + }, + "./node_modules/core-js/internals/to-length.js": function(module3, exports2, __webpack_require__) { + var toInteger = __webpack_require__("./node_modules/core-js/internals/to-integer.js"); + var min = Math.min; + module3.exports = function(argument) { + return argument > 0 ? min(toInteger(argument), 9007199254740991) : 0; + }; + }, + "./node_modules/core-js/internals/to-object.js": function(module3, exports2, __webpack_require__) { + var requireObjectCoercible = __webpack_require__("./node_modules/core-js/internals/require-object-coercible.js"); + module3.exports = function(argument) { + return Object(requireObjectCoercible(argument)); + }; + }, + "./node_modules/core-js/internals/to-primitive.js": function(module3, exports2, __webpack_require__) { + var isObject = __webpack_require__("./node_modules/core-js/internals/is-object.js"); + module3.exports = function(it, S) { + if (!isObject(it)) + return it; + var fn, val; + if (S && typeof (fn = it.toString) == "function" && !isObject(val = fn.call(it))) + return val; + if (typeof (fn = it.valueOf) == "function" && !isObject(val = fn.call(it))) + return val; + if (!S && typeof (fn = it.toString) == "function" && !isObject(val = fn.call(it))) + return val; + throw TypeError("Can't convert object to primitive value"); + }; + }, + "./node_modules/core-js/internals/uid.js": function(module3, exports2) { + var id = 0; + var postfix = Math.random(); + module3.exports = function(key) { + return "Symbol(".concat(key === void 0 ? "" : key, ")_", (++id + postfix).toString(36)); + }; + }, + "./node_modules/core-js/internals/validate-set-prototype-of-arguments.js": function(module3, exports2, __webpack_require__) { + var isObject = __webpack_require__("./node_modules/core-js/internals/is-object.js"); + var anObject = __webpack_require__("./node_modules/core-js/internals/an-object.js"); + module3.exports = function(O, proto) { + anObject(O); + if (!isObject(proto) && proto !== null) { + throw TypeError("Can't set " + String(proto) + " as a prototype"); + } + }; + }, + "./node_modules/core-js/internals/well-known-symbol.js": function(module3, exports2, __webpack_require__) { + var global = __webpack_require__("./node_modules/core-js/internals/global.js"); + var shared = __webpack_require__("./node_modules/core-js/internals/shared.js"); + var uid = __webpack_require__("./node_modules/core-js/internals/uid.js"); + var NATIVE_SYMBOL = __webpack_require__("./node_modules/core-js/internals/native-symbol.js"); + var Symbol2 = global.Symbol; + var store = shared("wks"); + module3.exports = function(name) { + return store[name] || (store[name] = NATIVE_SYMBOL && Symbol2[name] || (NATIVE_SYMBOL ? Symbol2 : uid)("Symbol." + name)); + }; + }, + "./node_modules/core-js/modules/es.array.from.js": function(module3, exports2, __webpack_require__) { + var $ = __webpack_require__("./node_modules/core-js/internals/export.js"); + var from = __webpack_require__("./node_modules/core-js/internals/array-from.js"); + var checkCorrectnessOfIteration = __webpack_require__("./node_modules/core-js/internals/check-correctness-of-iteration.js"); + var INCORRECT_ITERATION = !checkCorrectnessOfIteration(function(iterable) { + Array.from(iterable); + }); + $({ target: "Array", stat: true, forced: INCORRECT_ITERATION }, { + from + }); + }, + "./node_modules/core-js/modules/es.string.iterator.js": function(module3, exports2, __webpack_require__) { + "use strict"; + var codePointAt = __webpack_require__("./node_modules/core-js/internals/string-at.js"); + var InternalStateModule = __webpack_require__("./node_modules/core-js/internals/internal-state.js"); + var defineIterator = __webpack_require__("./node_modules/core-js/internals/define-iterator.js"); + var STRING_ITERATOR = "String Iterator"; + var setInternalState = InternalStateModule.set; + var getInternalState = InternalStateModule.getterFor(STRING_ITERATOR); + defineIterator(String, "String", function(iterated) { + setInternalState(this, { + type: STRING_ITERATOR, + string: String(iterated), + index: 0 + }); + }, function next() { + var state = getInternalState(this); + var string = state.string; + var index = state.index; + var point; + if (index >= string.length) + return { value: void 0, done: true }; + point = codePointAt(string, index, true); + state.index += point.length; + return { value: point, done: false }; + }); + }, + "./node_modules/webpack/buildin/global.js": function(module3, exports2) { + var g; + g = function() { + return this; + }(); + try { + g = g || Function("return this")() || (1, eval)("this"); + } catch (e) { + if (typeof window === "object") + g = window; + } + module3.exports = g; + }, + "./src/default-attrs.json": function(module3) { + module3.exports = { "xmlns": "http://www.w3.org/2000/svg", "width": 24, "height": 24, "viewBox": "0 0 24 24", "fill": "none", "stroke": "currentColor", "stroke-width": 2, "stroke-linecap": "round", "stroke-linejoin": "round" }; + }, + "./src/icon.js": function(module3, exports2, __webpack_require__) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var _extends = Object.assign || function(target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + return target; + }; + var _createClass = function() { + function defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) + descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + return function(Constructor, protoProps, staticProps) { + if (protoProps) + defineProperties(Constructor.prototype, protoProps); + if (staticProps) + defineProperties(Constructor, staticProps); + return Constructor; + }; + }(); + var _dedupe = __webpack_require__("./node_modules/classnames/dedupe.js"); + var _dedupe2 = _interopRequireDefault(_dedupe); + var _defaultAttrs = __webpack_require__("./src/default-attrs.json"); + var _defaultAttrs2 = _interopRequireDefault(_defaultAttrs); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + } + var Icon = function() { + function Icon2(name, contents) { + var tags = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : []; + _classCallCheck(this, Icon2); + this.name = name; + this.contents = contents; + this.tags = tags; + this.attrs = _extends({}, _defaultAttrs2.default, { class: "feather feather-" + name }); + } + _createClass(Icon2, [{ + key: "toSvg", + value: function toSvg() { + var attrs = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; + var combinedAttrs = _extends({}, this.attrs, attrs, { class: (0, _dedupe2.default)(this.attrs.class, attrs.class) }); + return "" + this.contents + ""; + } + }, { + key: "toString", + value: function toString() { + return this.contents; + } + }]); + return Icon2; + }(); + function attrsToString(attrs) { + return Object.keys(attrs).map(function(key) { + return key + '="' + attrs[key] + '"'; + }).join(" "); + } + exports2.default = Icon; + }, + "./src/icons.js": function(module3, exports2, __webpack_require__) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var _icon = __webpack_require__("./src/icon.js"); + var _icon2 = _interopRequireDefault(_icon); + var _icons = __webpack_require__("./dist/icons.json"); + var _icons2 = _interopRequireDefault(_icons); + var _tags = __webpack_require__("./src/tags.json"); + var _tags2 = _interopRequireDefault(_tags); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + exports2.default = Object.keys(_icons2.default).map(function(key) { + return new _icon2.default(key, _icons2.default[key], _tags2.default[key]); + }).reduce(function(object, icon) { + object[icon.name] = icon; + return object; + }, {}); + }, + "./src/index.js": function(module3, exports2, __webpack_require__) { + "use strict"; + var _icons = __webpack_require__("./src/icons.js"); + var _icons2 = _interopRequireDefault(_icons); + var _toSvg = __webpack_require__("./src/to-svg.js"); + var _toSvg2 = _interopRequireDefault(_toSvg); + var _replace = __webpack_require__("./src/replace.js"); + var _replace2 = _interopRequireDefault(_replace); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + module3.exports = { icons: _icons2.default, toSvg: _toSvg2.default, replace: _replace2.default }; + }, + "./src/replace.js": function(module3, exports2, __webpack_require__) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var _extends = Object.assign || function(target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + return target; + }; + var _dedupe = __webpack_require__("./node_modules/classnames/dedupe.js"); + var _dedupe2 = _interopRequireDefault(_dedupe); + var _icons = __webpack_require__("./src/icons.js"); + var _icons2 = _interopRequireDefault(_icons); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + function replace() { + var attrs = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}; + if (typeof document === "undefined") { + throw new Error("`feather.replace()` only works in a browser environment."); + } + var elementsToReplace = document.querySelectorAll("[data-feather]"); + Array.from(elementsToReplace).forEach(function(element) { + return replaceElement(element, attrs); + }); + } + function replaceElement(element) { + var attrs = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; + var elementAttrs = getAttrs(element); + var name = elementAttrs["data-feather"]; + delete elementAttrs["data-feather"]; + var svgString = _icons2.default[name].toSvg(_extends({}, attrs, elementAttrs, { class: (0, _dedupe2.default)(attrs.class, elementAttrs.class) })); + var svgDocument = new DOMParser().parseFromString(svgString, "image/svg+xml"); + var svgElement = svgDocument.querySelector("svg"); + element.parentNode.replaceChild(svgElement, element); + } + function getAttrs(element) { + return Array.from(element.attributes).reduce(function(attrs, attr) { + attrs[attr.name] = attr.value; + return attrs; + }, {}); + } + exports2.default = replace; + }, + "./src/tags.json": function(module3) { + module3.exports = { "activity": ["pulse", "health", "action", "motion"], "airplay": ["stream", "cast", "mirroring"], "alert-circle": ["warning", "alert", "danger"], "alert-octagon": ["warning", "alert", "danger"], "alert-triangle": ["warning", "alert", "danger"], "align-center": ["text alignment", "center"], "align-justify": ["text alignment", "justified"], "align-left": ["text alignment", "left"], "align-right": ["text alignment", "right"], "anchor": [], "archive": ["index", "box"], "at-sign": ["mention", "at", "email", "message"], "award": ["achievement", "badge"], "aperture": ["camera", "photo"], "bar-chart": ["statistics", "diagram", "graph"], "bar-chart-2": ["statistics", "diagram", "graph"], "battery": ["power", "electricity"], "battery-charging": ["power", "electricity"], "bell": ["alarm", "notification", "sound"], "bell-off": ["alarm", "notification", "silent"], "bluetooth": ["wireless"], "book-open": ["read", "library"], "book": ["read", "dictionary", "booklet", "magazine", "library"], "bookmark": ["read", "clip", "marker", "tag"], "box": ["cube"], "briefcase": ["work", "bag", "baggage", "folder"], "calendar": ["date"], "camera": ["photo"], "cast": ["chromecast", "airplay"], "circle": ["off", "zero", "record"], "clipboard": ["copy"], "clock": ["time", "watch", "alarm"], "cloud-drizzle": ["weather", "shower"], "cloud-lightning": ["weather", "bolt"], "cloud-rain": ["weather"], "cloud-snow": ["weather", "blizzard"], "cloud": ["weather"], "codepen": ["logo"], "codesandbox": ["logo"], "code": ["source", "programming"], "coffee": ["drink", "cup", "mug", "tea", "cafe", "hot", "beverage"], "columns": ["layout"], "command": ["keyboard", "cmd", "terminal", "prompt"], "compass": ["navigation", "safari", "travel", "direction"], "copy": ["clone", "duplicate"], "corner-down-left": ["arrow", "return"], "corner-down-right": ["arrow"], "corner-left-down": ["arrow"], "corner-left-up": ["arrow"], "corner-right-down": ["arrow"], "corner-right-up": ["arrow"], "corner-up-left": ["arrow"], "corner-up-right": ["arrow"], "cpu": ["processor", "technology"], "credit-card": ["purchase", "payment", "cc"], "crop": ["photo", "image"], "crosshair": ["aim", "target"], "database": ["storage", "memory"], "delete": ["remove"], "disc": ["album", "cd", "dvd", "music"], "dollar-sign": ["currency", "money", "payment"], "droplet": ["water"], "edit": ["pencil", "change"], "edit-2": ["pencil", "change"], "edit-3": ["pencil", "change"], "eye": ["view", "watch"], "eye-off": ["view", "watch", "hide", "hidden"], "external-link": ["outbound"], "facebook": ["logo", "social"], "fast-forward": ["music"], "figma": ["logo", "design", "tool"], "file-minus": ["delete", "remove", "erase"], "file-plus": ["add", "create", "new"], "file-text": ["data", "txt", "pdf"], "film": ["movie", "video"], "filter": ["funnel", "hopper"], "flag": ["report"], "folder-minus": ["directory"], "folder-plus": ["directory"], "folder": ["directory"], "framer": ["logo", "design", "tool"], "frown": ["emoji", "face", "bad", "sad", "emotion"], "gift": ["present", "box", "birthday", "party"], "git-branch": ["code", "version control"], "git-commit": ["code", "version control"], "git-merge": ["code", "version control"], "git-pull-request": ["code", "version control"], "github": ["logo", "version control"], "gitlab": ["logo", "version control"], "globe": ["world", "browser", "language", "translate"], "hard-drive": ["computer", "server", "memory", "data"], "hash": ["hashtag", "number", "pound"], "headphones": ["music", "audio", "sound"], "heart": ["like", "love", "emotion"], "help-circle": ["question mark"], "hexagon": ["shape", "node.js", "logo"], "home": ["house", "living"], "image": ["picture"], "inbox": ["email"], "instagram": ["logo", "camera"], "key": ["password", "login", "authentication", "secure"], "layers": ["stack"], "layout": ["window", "webpage"], "life-bouy": ["help", "life ring", "support"], "link": ["chain", "url"], "link-2": ["chain", "url"], "linkedin": ["logo", "social media"], "list": ["options"], "lock": ["security", "password", "secure"], "log-in": ["sign in", "arrow", "enter"], "log-out": ["sign out", "arrow", "exit"], "mail": ["email", "message"], "map-pin": ["location", "navigation", "travel", "marker"], "map": ["location", "navigation", "travel"], "maximize": ["fullscreen"], "maximize-2": ["fullscreen", "arrows", "expand"], "meh": ["emoji", "face", "neutral", "emotion"], "menu": ["bars", "navigation", "hamburger"], "message-circle": ["comment", "chat"], "message-square": ["comment", "chat"], "mic-off": ["record", "sound", "mute"], "mic": ["record", "sound", "listen"], "minimize": ["exit fullscreen", "close"], "minimize-2": ["exit fullscreen", "arrows", "close"], "minus": ["subtract"], "monitor": ["tv", "screen", "display"], "moon": ["dark", "night"], "more-horizontal": ["ellipsis"], "more-vertical": ["ellipsis"], "mouse-pointer": ["arrow", "cursor"], "move": ["arrows"], "music": ["note"], "navigation": ["location", "travel"], "navigation-2": ["location", "travel"], "octagon": ["stop"], "package": ["box", "container"], "paperclip": ["attachment"], "pause": ["music", "stop"], "pause-circle": ["music", "audio", "stop"], "pen-tool": ["vector", "drawing"], "percent": ["discount"], "phone-call": ["ring"], "phone-forwarded": ["call"], "phone-incoming": ["call"], "phone-missed": ["call"], "phone-off": ["call", "mute"], "phone-outgoing": ["call"], "phone": ["call"], "play": ["music", "start"], "pie-chart": ["statistics", "diagram"], "play-circle": ["music", "start"], "plus": ["add", "new"], "plus-circle": ["add", "new"], "plus-square": ["add", "new"], "pocket": ["logo", "save"], "power": ["on", "off"], "printer": ["fax", "office", "device"], "radio": ["signal"], "refresh-cw": ["synchronise", "arrows"], "refresh-ccw": ["arrows"], "repeat": ["loop", "arrows"], "rewind": ["music"], "rotate-ccw": ["arrow"], "rotate-cw": ["arrow"], "rss": ["feed", "subscribe"], "save": ["floppy disk"], "scissors": ["cut"], "search": ["find", "magnifier", "magnifying glass"], "send": ["message", "mail", "email", "paper airplane", "paper aeroplane"], "settings": ["cog", "edit", "gear", "preferences"], "share-2": ["network", "connections"], "shield": ["security", "secure"], "shield-off": ["security", "insecure"], "shopping-bag": ["ecommerce", "cart", "purchase", "store"], "shopping-cart": ["ecommerce", "cart", "purchase", "store"], "shuffle": ["music"], "skip-back": ["music"], "skip-forward": ["music"], "slack": ["logo"], "slash": ["ban", "no"], "sliders": ["settings", "controls"], "smartphone": ["cellphone", "device"], "smile": ["emoji", "face", "happy", "good", "emotion"], "speaker": ["audio", "music"], "star": ["bookmark", "favorite", "like"], "stop-circle": ["media", "music"], "sun": ["brightness", "weather", "light"], "sunrise": ["weather", "time", "morning", "day"], "sunset": ["weather", "time", "evening", "night"], "tablet": ["device"], "tag": ["label"], "target": ["logo", "bullseye"], "terminal": ["code", "command line", "prompt"], "thermometer": ["temperature", "celsius", "fahrenheit", "weather"], "thumbs-down": ["dislike", "bad", "emotion"], "thumbs-up": ["like", "good", "emotion"], "toggle-left": ["on", "off", "switch"], "toggle-right": ["on", "off", "switch"], "tool": ["settings", "spanner"], "trash": ["garbage", "delete", "remove", "bin"], "trash-2": ["garbage", "delete", "remove", "bin"], "triangle": ["delta"], "truck": ["delivery", "van", "shipping", "transport", "lorry"], "tv": ["television", "stream"], "twitch": ["logo"], "twitter": ["logo", "social"], "type": ["text"], "umbrella": ["rain", "weather"], "unlock": ["security"], "user-check": ["followed", "subscribed"], "user-minus": ["delete", "remove", "unfollow", "unsubscribe"], "user-plus": ["new", "add", "create", "follow", "subscribe"], "user-x": ["delete", "remove", "unfollow", "unsubscribe", "unavailable"], "user": ["person", "account"], "users": ["group"], "video-off": ["camera", "movie", "film"], "video": ["camera", "movie", "film"], "voicemail": ["phone"], "volume": ["music", "sound", "mute"], "volume-1": ["music", "sound"], "volume-2": ["music", "sound"], "volume-x": ["music", "sound", "mute"], "watch": ["clock", "time"], "wifi-off": ["disabled"], "wifi": ["connection", "signal", "wireless"], "wind": ["weather", "air"], "x-circle": ["cancel", "close", "delete", "remove", "times", "clear"], "x-octagon": ["delete", "stop", "alert", "warning", "times", "clear"], "x-square": ["cancel", "close", "delete", "remove", "times", "clear"], "x": ["cancel", "close", "delete", "remove", "times", "clear"], "youtube": ["logo", "video", "play"], "zap-off": ["flash", "camera", "lightning"], "zap": ["flash", "camera", "lightning"], "zoom-in": ["magnifying glass"], "zoom-out": ["magnifying glass"] }; + }, + "./src/to-svg.js": function(module3, exports2, __webpack_require__) { + "use strict"; + Object.defineProperty(exports2, "__esModule", { + value: true + }); + var _icons = __webpack_require__("./src/icons.js"); + var _icons2 = _interopRequireDefault(_icons); + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { default: obj }; + } + function toSvg(name) { + var attrs = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}; + console.warn("feather.toSvg() is deprecated. Please use feather.icons[name].toSvg() instead."); + if (!name) { + throw new Error("The required `key` (icon name) parameter is missing."); + } + if (!_icons2.default[name]) { + throw new Error("No icon matching '" + name + "'. See the complete list of icons at https://feathericons.com"); + } + return _icons2.default[name].toSvg(attrs); + } + exports2.default = toSvg; + }, + 0: function(module3, exports2, __webpack_require__) { + __webpack_require__("./node_modules/core-js/es/array/from.js"); + module3.exports = __webpack_require__("./src/index.js"); + } + }); + }); + } +}); + +// main.ts +__export(exports, { + default: () => WeatherPlugin +}); +var import_obsidian = __toModule(require("obsidian")); +var import_feather_icons = __toModule(require_feather()); +var DEFAULT_SETTINGS = { + source: "not-selected", + cacheSeconds: 300, + addRibbon: true +}; +var selectedIcon = import_feather_icons.default.icons["sun"].toSvg({ + width: 100, + height: 100 +}); +var isEmptyObj = (obj) => { + return obj && Object.keys(obj).length === 0 && Object.getPrototypeOf(obj) === Object.prototype; +}; +var WeatherPlugin = class extends import_obsidian.Plugin { + onload() { + return __async(this, null, function* () { + console.log("loading WeatherPlugin"); + yield this.loadSettings(); + this.cachedPrevCall = {}; + this.weatherRibbon = void 0; + this.commandEnabled = false; + (0, import_obsidian.addIcon)("weather", selectedIcon); + if (this.settings.source !== "not-selected") { + this.addWeatherCommand(); + } + if (this.settings.addRibbon) { + yield this.addWeatherRibbon(); + } + this.addSettingTab(new WeatherSettingTab(this.app, this)); + }); + } + onunload() { + console.log("unloading WeatherPlugin"); + } + loadSettings() { + return __async(this, null, function* () { + this.settings = Object.assign({}, DEFAULT_SETTINGS, yield this.loadData()); + }); + } + saveSettings() { + return __async(this, null, function* () { + yield this.saveData(this.settings); + }); + } + getEditor() { + const leaf = this.app.workspace.activeLeaf; + if (leaf !== void 0 && leaf !== null) { + const view = leaf.view; + if (view !== void 0 && view !== null) { + const editor = view.editor; + return editor; + } + } + return void 0; + } + addWeatherRibbon() { + if (this.weatherRibbon !== void 0) { + return; + } + if (this.settings.source === "not-selected") { + return; + } + this.weatherRibbon = this.addRibbonIcon("weather", "Insert Weather", (event) => __async(this, null, function* () { + const editor = this.getEditor(); + if (editor === void 0) { + new import_obsidian.Notice("No active editor, no output."); + return; + } + const k = new import_obsidian.Notice("Fetching weather..."); + try { + const weatherInfo = yield fetchWeather(this.settings.source, this.settings.cacheSeconds, this.cachedPrevCall); + k.hide(); + editor.replaceRange(weatherInfo.info, editor.getCursor()); + } catch (e) { + console.error(e); + new import_obsidian.Notice("Something goes wrong while fetching weather info."); + } + })); + } + removeWeatherRibbon() { + if (this.weatherRibbon === void 0) { + return; + } + this.weatherRibbon.detach(); + this.weatherRibbon = void 0; + } + addWeatherCommand() { + if (this.commandEnabled) { + return; + } + this.addCommand({ + id: "weather-insert", + name: "Insert current weather", + icon: "weather", + editorCallback: (editor, view) => __async(this, null, function* () { + const k = new import_obsidian.Notice("Fetching weather..."); + try { + const weatherInfo = yield fetchWeather(this.settings.source, this.settings.cacheSeconds, this.cachedPrevCall); + k.hide(); + editor.replaceRange(weatherInfo.info, editor.getCursor()); + } catch (e) { + console.error(e); + new import_obsidian.Notice("Something goes wrong while fetching weather info."); + } + }) + }); + this.addCommand({ + id: "weather-output-cache", + name: "Output current cached weather info. For debugging purposes.", + editorCallback: (editor, view) => __async(this, null, function* () { + if (this.cachedPrevCall === void 0 || isEmptyObj(this.cachedPrevCall)) { + new import_obsidian.Notice("No cached weather info, no output."); + } else { + const outputCode = "\n```json\n" + JSON.stringify(this.cachedPrevCall, null, 2) + "\n```\n"; + editor.replaceRange(outputCode, editor.getCursor()); + } + }) + }); + this.commandEnabled = true; + } + removeWeatherCommand() { + if (!this.commandEnabled) { + return; + } + this.app.commands.removeCommand(`${this.manifest.id}:weather-insert`); + this.app.commands.removeCommand(`${this.manifest.id}:weather-output-cache`); + this.commandEnabled = false; + } +}; +var fetchWeather = (source, cacheSeconds, cachedPrevCall) => __async(void 0, null, function* () { + const currTimestampMs = Date.now(); + if (cacheSeconds !== void 0 && cachedPrevCall !== void 0 && source in cachedPrevCall) { + const cached = cachedPrevCall[source]; + if (currTimestampMs <= cached.timestampInMs + cacheSeconds * 1e3) { + return cached; + } else { + delete cachedPrevCall[source]; + } + } + if (source === "wttr") { + const res1 = yield fetch("https://wttr.in/?format=4"); + const res2 = yield res1.text(); + const newItem = { + source, + timestampInMs: currTimestampMs, + info: res2 + }; + cachedPrevCall[source] = newItem; + return newItem; + } else if (source === "openweathermap") { + throw Error(`not implemented for ${source} yet!`); + } else { + throw Error(`not implemented for ${source} yet!`); + } +}); +var WeatherSettingTab = class extends import_obsidian.PluginSettingTab { + constructor(app, plugin) { + super(app, plugin); + this.plugin = plugin; + } + display() { + const { containerEl } = this; + containerEl.empty(); + containerEl.createEl("h1", { text: `${this.plugin.manifest.name}` }); + new import_obsidian.Setting(containerEl).setName("Data Provider").setDesc(createFragment((frag) => { + frag.createEl("span", { + text: "By selecting any third-party data provider, you agree to that provider's privacy policy and terms of use, and you also agree and consent that this plugin sends requests to the selected data provider to fetch the weather data, and stores some necessary information and login credentials locally." + }); + })).addDropdown((dropdown) => { + dropdown.addOption("not-selected", "(no provider selected)"); + dropdown.addOption("wttr", "https://wttr.in/"); + dropdown.setValue(this.plugin.settings.source).onChange((val) => __async(this, null, function* () { + this.plugin.settings.source = val; + yield this.plugin.saveSettings(); + if (val === "not-selected") { + this.plugin.removeWeatherCommand(); + this.plugin.removeWeatherRibbon(); + } else { + this.plugin.addWeatherCommand(); + this.plugin.addWeatherRibbon(); + } + })); + }); + new import_obsidian.Setting(containerEl).setName("Cache Time").setDesc("After one call of weather api, the result will be cached for some minutes locally.").addDropdown((dropdown) => { + dropdown.addOption("300", "5 minutes"); + dropdown.addOption("600", "10 minutes"); + dropdown.setValue(`${this.plugin.settings.cacheSeconds}`).onChange((val) => __async(this, null, function* () { + this.plugin.settings.cacheSeconds = parseInt(val); + yield this.plugin.saveSettings(); + })); + }); + new import_obsidian.Setting(containerEl).setName("Add Ribbon").setDesc("Add sidebar ribbon or not?").addToggle((toggle) => { + toggle.setValue(this.plugin.settings.addRibbon).onChange((val) => __async(this, null, function* () { + this.plugin.settings.addRibbon = val; + yield this.plugin.saveSettings(); + if (val) { + this.plugin.addWeatherRibbon(); + } else { + this.plugin.removeWeatherRibbon(); + } + })); + }); + containerEl.createEl("h2", { text: "License" }); + const licenseDiv = containerEl.createEl("div"); + licenseDiv.createEl("p", { + text: "The source code of the plugin is released under Apache-2 license. See the repo for more information:" + }); + licenseDiv.createEl("a", { + text: this.plugin.manifest.authorUrl, + href: this.plugin.manifest.authorUrl + }); + } +}; +/*! + Copyright (c) 2016 Jed Watson. + Licensed under the MIT License (MIT), see + http://jedwatson.github.io/classnames +*/ + +/* nosourcemap */ \ No newline at end of file diff --git a/.obsidian/plugins/weather-fetcher/manifest.json b/.obsidian/plugins/weather-fetcher/manifest.json new file mode 100644 index 0000000..e6f786f --- /dev/null +++ b/.obsidian/plugins/weather-fetcher/manifest.json @@ -0,0 +1,10 @@ +{ + "id": "weather-fetcher", + "name": "Weather Fetcher", + "version": "0.0.3", + "minAppVersion": "0.12.0", + "description": "Fetch and insert current weather into the editor of Obsidian.", + "author": "fyears", + "authorUrl": "https://github.com/fyears/obsidian-weather", + "isDesktopOnly": false +} diff --git a/.obsidian/plugins/weather-fetcher/styles.css b/.obsidian/plugins/weather-fetcher/styles.css new file mode 100644 index 0000000..58ee42c --- /dev/null +++ b/.obsidian/plugins/weather-fetcher/styles.css @@ -0,0 +1,3 @@ +/* +body { +} */ diff --git a/.obsidian/templates.json b/.obsidian/templates.json new file mode 100644 index 0000000..cda2aca --- /dev/null +++ b/.obsidian/templates.json @@ -0,0 +1,3 @@ +{ + "folder": "templates" +} \ No newline at end of file diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index 34ae25a..2f6eb9c 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -4,21 +4,21 @@ "type": "split", "children": [ { - "id": "c7e2d8a551657180", + "id": "5e3b239df99769bd", "type": "tabs", "children": [ { - "id": "5c17d1698a118a5f", + "id": "4365a0c25a4f26f9", "type": "leaf", "state": { "type": "markdown", "state": { - "file": "new notes/快捷键设置.md", - "mode": "preview", + "file": "copilot-conversations/ubuntu lvm bindfs.md", + "mode": "source", "source": false }, "icon": "lucide-file", - "title": "快捷键设置" + "title": "ubuntu lvm bindfs" } } ] @@ -88,39 +88,6 @@ "id": "32b176fd8dff1165", "type": "tabs", "children": [ - { - "id": "f2e4add240703050", - "type": "leaf", - "state": { - "type": "backlink", - "state": { - "file": "new notes/快捷键设置.md", - "collapseAll": false, - "extraContext": false, - "sortOrder": "alphabetical", - "showSearch": false, - "searchQuery": "", - "backlinkCollapsed": false, - "unlinkedCollapsed": false - }, - "icon": "links-coming-in", - "title": "Backlinks for 快捷键设置" - } - }, - { - "id": "6f91e2bf8c196925", - "type": "leaf", - "state": { - "type": "outgoing-link", - "state": { - "file": "new notes/快捷键设置.md", - "linksCollapsed": false, - "unlinkedCollapsed": true - }, - "icon": "links-going-out", - "title": "Outgoing links from 快捷键设置" - } - }, { "id": "ef29c0acdfab7689", "type": "leaf", @@ -137,49 +104,63 @@ } }, { - "id": "b07f0e0bbd9a2a1d", + "id": "445ac2f458bd24b6", + "type": "leaf", + "state": { + "type": "backlink", + "state": { + "file": "copilot-conversations/ubuntu lvm bindfs.md", + "collapseAll": false, + "extraContext": false, + "sortOrder": "alphabetical", + "showSearch": false, + "searchQuery": "", + "backlinkCollapsed": false, + "unlinkedCollapsed": true + }, + "icon": "links-coming-in", + "title": "Backlinks for ubuntu lvm bindfs" + } + }, + { + "id": "8c579b681aaaa178", + "type": "leaf", + "state": { + "type": "outgoing-link", + "state": { + "file": "copilot-conversations/ubuntu lvm bindfs.md", + "linksCollapsed": false, + "unlinkedCollapsed": true + }, + "icon": "links-going-out", + "title": "Outgoing links from ubuntu lvm bindfs" + } + }, + { + "id": "cf7a4dcbb71782cb", "type": "leaf", "state": { "type": "outline", "state": { - "file": "new notes/快捷键设置.md", + "file": "copilot-conversations/ubuntu lvm bindfs.md", "followCursor": false, "showSearch": false, "searchQuery": "" }, "icon": "lucide-list", - "title": "Outline of 快捷键设置" - } - }, - { - "id": "074859f93ca00fe5", - "type": "leaf", - "state": { - "type": "copilot-chat-view", - "state": {}, - "icon": "message-square", - "title": "Copilot" - } - }, - { - "id": "1f3c167b8064457c", - "type": "leaf", - "state": { - "type": "git-view", - "state": {}, - "icon": "git-pull-request", - "title": "Source Control" + "title": "Outline of ubuntu lvm bindfs" } } ], - "currentTab": 5 + "currentTab": 3 } ], "direction": "horizontal", - "width": 390.5 + "width": 409.5 }, "left-ribbon": { "hiddenItems": { + "weather-fetcher:Insert Weather": false, "switcher:Open quick switcher": false, "graph:Open graph view": false, "canvas:Create new canvas": false, @@ -192,13 +173,25 @@ "table-editor-obsidian:Advanced Tables Toolbar": false } }, - "active": "f2e4add240703050", + "active": "4365a0c25a4f26f9", "lastOpenFiles": [ - "new notes/chat history.md", + "copilot-conversations/dataview ob q&a.md", + "Chats/New Chat.md", + "copilot-conversations/ubuntu lvm bindfs.md", "new notes/快捷键设置.md", + "new notes/设置 nodeTest这个项目目录作为练手的项目.md", + "new notes/找到了如何入门obsidian的途径.md", + "new notes/chat history.md", + "new notes/pdf 插件的学习.md", + "new notes/Untitled.md", + "templates/base_template.md", + "templates/daily_template.md", + "Task.md", + "欢迎.md", + "Welcome.md", "new notes/2025-04-04.md", - "copilot-conversations/在ubuntu下可不可以把几个物理硬盘挂在到一个逻辑目录下@20250404_111308.md", - "copilot-conversations/如果我使用dataview插件查询在我的笔记目录里,是不是我需要事先有个目录里面的所有笔记都是包含特定模版的数据,这样更便于查询,或者说只有文档内包含特定属性的文档,那么查询结果中才能包含特定属性的文@20250404_232407.md", - "Chats/New Chat.md" + "new notes/2025-04-05.md", + "templates/daily.md", + "templates" ] } \ No newline at end of file diff --git a/copilot-conversations/如果我使用dataview插件查询在我的笔记目录里,是不是我需要事先有个目录里面的所有笔记都是包含特定模版的数据,这样更便于查询,或者说只有文档内包含特定属性的文档,那么查询结果中才能包含特定属性的文@20250404_232407.md b/copilot-conversations/dataview ob q&a.md similarity index 90% rename from copilot-conversations/如果我使用dataview插件查询在我的笔记目录里,是不是我需要事先有个目录里面的所有笔记都是包含特定模版的数据,这样更便于查询,或者说只有文档内包含特定属性的文档,那么查询结果中才能包含特定属性的文@20250404_232407.md rename to copilot-conversations/dataview ob q&a.md index 2e4c0dc..0afa4de 100644 --- a/copilot-conversations/如果我使用dataview插件查询在我的笔记目录里,是不是我需要事先有个目录里面的所有笔记都是包含特定模版的数据,这样更便于查询,或者说只有文档内包含特定属性的文档,那么查询结果中才能包含特定属性的文@20250404_232407.md +++ b/copilot-conversations/dataview ob q&a.md @@ -5,6 +5,9 @@ tags: - copilot-conversation - dataview - plugin + - qanda +title: 如果我使用dataview插件查询在我的笔记目录里,是不是我需要事先有个目录里面的所有笔记都是包含特定模版的数据,这样更便于查询,或者说只有文档内包含特定属性的文档,那么查询结果中才能包含特定属性的文@20250404_232407 +time: 20250404_232407 --- **user**: 如果我使用dataview插件查询在我的笔记目录里,是不是我需要事先有个目录里面的所有笔记都是包含特定模版的数据,这样更便于查询,或者说只有文档内包含特定属性的文档,那么查询结果中才能包含特定属性的文档, diff --git a/copilot-conversations/在ubuntu下可不可以把几个物理硬盘挂在到一个逻辑目录下@20250404_111308.md b/copilot-conversations/ubuntu lvm bindfs.md similarity index 94% rename from copilot-conversations/在ubuntu下可不可以把几个物理硬盘挂在到一个逻辑目录下@20250404_111308.md rename to copilot-conversations/ubuntu lvm bindfs.md index c230c4f..c6c40e9 100644 --- a/copilot-conversations/在ubuntu下可不可以把几个物理硬盘挂在到一个逻辑目录下@20250404_111308.md +++ b/copilot-conversations/ubuntu lvm bindfs.md @@ -1,10 +1,12 @@ --- epoch: 1743736388464 -modelKey: qwen-max-latest|3rd party (openai-format) +modelKey: tags: - copilot-conversation - lvm - ubuntu +title: 在ubuntu下可不可以把几个物理硬盘挂在到一个逻辑目录下 +time: 20250404_111308 --- **user**: 在ubuntu下可不可以把几个物理硬盘挂在到一个逻辑目录下 diff --git a/new notes/2025-04-04.md b/new notes/2025-04-04.md index e69de29..567f6f7 100644 --- a/new notes/2025-04-04.md +++ b/new notes/2025-04-04.md @@ -0,0 +1,38 @@ +--- +date: 2025-04-04 +tags: + - journal + - daily +title: 日记 - 2025-04-04 +weather: +mood: +--- + +# 2025-04-04 + +## 今日目标 + +- + +## 完成事项 + +- [[找到了如何入门obsidian的途径]] +- [[设置 nodeTest这个项目目录作为练手的项目]] +## 学到的新东西 + +- + +## 遇到的问题及解决方案 + +- + +## 明日计划 + +- [[pdf 插件的学习 ]] +- [[模版学习]] + +## 其他备注 + +- + + diff --git a/new notes/2025-04-05.md b/new notes/2025-04-05.md new file mode 100644 index 0000000..0087aff --- /dev/null +++ b/new notes/2025-04-05.md @@ -0,0 +1,34 @@ +--- +date: 2025-04-05 +tags: [journal, daily] +title: 日记 - 2025-04-05 +weather: "Beijing, China: ☀️ 🌡️+13°C 🌬️↘21km/h" +--- + +# 2025-04-05 + +## 今日目标 + +- + +## 完成事项 + +- + +## 学到的新东西 + +- + +## 遇到的问题及解决方案 + +- + +## 明日计划 + +- + +## 其他备注 + +- + + diff --git a/new notes/Untitled.md b/new notes/Untitled.md new file mode 100644 index 0000000..e69de29 diff --git a/new notes/pdf 插件的学习.md b/new notes/pdf 插件的学习.md new file mode 100644 index 0000000..e69de29 diff --git a/new notes/快捷键设置.md b/new notes/快捷键设置.md index c66839e..ed37288 100644 --- a/new notes/快捷键设置.md +++ b/new notes/快捷键设置.md @@ -40,8 +40,8 @@ Fn = Fn | open a terminal | ⌥ + T | 打开一个终端 | #### advance table -| name | hotkey | comment | -| --------------- | -------- | ------------ | -| open a terminal | ⌥ + ⌘ +l | 打开一个终端 | +| name | hotkey | comment | | +| --------------- | -------- | ------- | --- | +| open a terminal | ⌥ + ⌘ +l | 打开一个终端 | | diff --git a/new notes/找到了如何入门obsidian的途径.md b/new notes/找到了如何入门obsidian的途径.md new file mode 100644 index 0000000..b8cae06 --- /dev/null +++ b/new notes/找到了如何入门obsidian的途径.md @@ -0,0 +1,13 @@ +--- +tags: + - test + - job +links: + - obsidian://open?vault=notesTest&file=new%20notes%2F2025-04-04 +--- + +- 契合自己的路线: + - markdown + - git + - terminal + lazyvim + avante + - copilot \ No newline at end of file diff --git a/new notes/设置 nodeTest这个项目目录作为练手的项目.md b/new notes/设置 nodeTest这个项目目录作为练手的项目.md new file mode 100644 index 0000000..79592cd --- /dev/null +++ b/new notes/设置 nodeTest这个项目目录作为练手的项目.md @@ -0,0 +1,7 @@ +--- +tags: + - test + - job +links: obsidian://open?vault=notesTest&file=new%20notes%2F2025-04-04 +--- +并以此充实起 \ No newline at end of file diff --git a/templates/base_template.md b/templates/base_template.md new file mode 100644 index 0000000..0307ed5 --- /dev/null +++ b/templates/base_template.md @@ -0,0 +1,7 @@ +--- +date: {{date:YYYY-MM-DD}} +tags: [journal, daily] +title: 日记 - {{date:YYYY-MM-DD}} +weather: +mood: +--- \ No newline at end of file diff --git a/templates/daily_template.md b/templates/daily_template.md new file mode 100644 index 0000000..805cafe --- /dev/null +++ b/templates/daily_template.md @@ -0,0 +1,35 @@ +--- +date: {{date:YYYY-MM-DD}} +tags: [journal, daily] +title: 日记 - {{date:YYYY-MM-DD}} +weather: +mood: +--- + +# {{title}} + +## 今日目标 + +- + +## 完成事项 + +- + +## 学到的新东西 + +- + +## 遇到的问题及解决方案 + +- + +## 明日计划 + +- + +## 其他备注 + +- + +