From 1e5b0feb01af9e92edbcad2c4712a03ad7d7ceb6 Mon Sep 17 00:00:00 2001 From: Dmitry Date: Sun, 31 May 2026 09:53:43 +0300 Subject: [PATCH] vault backup: 2026-05-31 09:53:43 --- .obsidian/community-plugins.json | 4 +- .obsidian/plugins/calendar/data.json | 10 - .obsidian/plugins/calendar/main.js | 4459 ----------------- .obsidian/plugins/calendar/manifest.json | 10 - .../plugins/obsidian-icon-folder/data.json | 6 +- .../plugins/obsidian-style-settings/data.json | 25 +- .obsidian/workspace.json | 44 +- 7 files changed, 24 insertions(+), 4534 deletions(-) delete mode 100644 .obsidian/plugins/calendar/data.json delete mode 100644 .obsidian/plugins/calendar/main.js delete mode 100644 .obsidian/plugins/calendar/manifest.json diff --git a/.obsidian/community-plugins.json b/.obsidian/community-plugins.json index 8fa5dcd..edb691f 100644 --- a/.obsidian/community-plugins.json +++ b/.obsidian/community-plugins.json @@ -1,5 +1,4 @@ [ - "calendar", "digitalgarden", "editing-toolbar", "obsidian-linter", @@ -15,5 +14,6 @@ "obsidian-git", "obsidian-transcription", "obsidian-excalidraw-plugin", - "terminal" + "terminal", + "typewriter-mode" ] \ No newline at end of file diff --git a/.obsidian/plugins/calendar/data.json b/.obsidian/plugins/calendar/data.json deleted file mode 100644 index b03e21d..0000000 --- a/.obsidian/plugins/calendar/data.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "shouldConfirmBeforeCreate": true, - "weekStart": "locale", - "wordsPerDot": 250, - "showWeeklyNote": false, - "weeklyNoteFormat": "", - "weeklyNoteTemplate": "", - "weeklyNoteFolder": "", - "localeOverride": "system-default" -} \ No newline at end of file diff --git a/.obsidian/plugins/calendar/main.js b/.obsidian/plugins/calendar/main.js deleted file mode 100644 index ed6cea3..0000000 --- a/.obsidian/plugins/calendar/main.js +++ /dev/null @@ -1,4459 +0,0 @@ -'use strict'; - -var obsidian = require('obsidian'); - -function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } - -var obsidian__default = /*#__PURE__*/_interopDefaultLegacy(obsidian); - -const DEFAULT_WEEK_FORMAT = "gggg-[W]ww"; -const DEFAULT_WORDS_PER_DOT = 250; -const VIEW_TYPE_CALENDAR = "calendar"; -const TRIGGER_ON_OPEN = "calendar:open"; - -const DEFAULT_DAILY_NOTE_FORMAT = "YYYY-MM-DD"; -const DEFAULT_WEEKLY_NOTE_FORMAT = "gggg-[W]ww"; -const DEFAULT_MONTHLY_NOTE_FORMAT = "YYYY-MM"; - -function shouldUsePeriodicNotesSettings(periodicity) { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const periodicNotes = window.app.plugins.getPlugin("periodic-notes"); - return periodicNotes && periodicNotes.settings?.[periodicity]?.enabled; -} -/** - * Read the user settings for the `daily-notes` plugin - * to keep behavior of creating a new note in-sync. - */ -function getDailyNoteSettings() { - try { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const { internalPlugins, plugins } = window.app; - if (shouldUsePeriodicNotesSettings("daily")) { - const { format, folder, template } = plugins.getPlugin("periodic-notes")?.settings?.daily || {}; - return { - format: format || DEFAULT_DAILY_NOTE_FORMAT, - folder: folder?.trim() || "", - template: template?.trim() || "", - }; - } - const { folder, format, template } = internalPlugins.getPluginById("daily-notes")?.instance?.options || {}; - return { - format: format || DEFAULT_DAILY_NOTE_FORMAT, - folder: folder?.trim() || "", - template: template?.trim() || "", - }; - } - catch (err) { - console.info("No custom daily note settings found!", err); - } -} -/** - * Read the user settings for the `weekly-notes` plugin - * to keep behavior of creating a new note in-sync. - */ -function getWeeklyNoteSettings() { - try { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const pluginManager = window.app.plugins; - const calendarSettings = pluginManager.getPlugin("calendar")?.options; - const periodicNotesSettings = pluginManager.getPlugin("periodic-notes") - ?.settings?.weekly; - if (shouldUsePeriodicNotesSettings("weekly")) { - return { - format: periodicNotesSettings.format || DEFAULT_WEEKLY_NOTE_FORMAT, - folder: periodicNotesSettings.folder?.trim() || "", - template: periodicNotesSettings.template?.trim() || "", - }; - } - const settings = calendarSettings || {}; - return { - format: settings.weeklyNoteFormat || DEFAULT_WEEKLY_NOTE_FORMAT, - folder: settings.weeklyNoteFolder?.trim() || "", - template: settings.weeklyNoteTemplate?.trim() || "", - }; - } - catch (err) { - console.info("No custom weekly note settings found!", err); - } -} -/** - * Read the user settings for the `periodic-notes` plugin - * to keep behavior of creating a new note in-sync. - */ -function getMonthlyNoteSettings() { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const pluginManager = window.app.plugins; - try { - const settings = (shouldUsePeriodicNotesSettings("monthly") && - pluginManager.getPlugin("periodic-notes")?.settings?.monthly) || - {}; - return { - format: settings.format || DEFAULT_MONTHLY_NOTE_FORMAT, - folder: settings.folder?.trim() || "", - template: settings.template?.trim() || "", - }; - } - catch (err) { - console.info("No custom monthly note settings found!", err); - } -} - -/** - * dateUID is a way of weekly identifying daily/weekly/monthly notes. - * They are prefixed with the granularity to avoid ambiguity. - */ -function getDateUID$1(date, granularity = "day") { - const ts = date.clone().startOf(granularity).format(); - return `${granularity}-${ts}`; -} -function removeEscapedCharacters(format) { - return format.replace(/\[[^\]]*\]/g, ""); // remove everything within brackets -} -/** - * XXX: When parsing dates that contain both week numbers and months, - * Moment choses to ignore the week numbers. For the week dateUID, we - * want the opposite behavior. Strip the MMM from the format to patch. - */ -function isFormatAmbiguous(format, granularity) { - if (granularity === "week") { - const cleanFormat = removeEscapedCharacters(format); - return (/w{1,2}/i.test(cleanFormat) && - (/M{1,4}/.test(cleanFormat) || /D{1,4}/.test(cleanFormat))); - } - return false; -} -function getDateFromFile(file, granularity) { - const getSettings = { - day: getDailyNoteSettings, - week: getWeeklyNoteSettings, - month: getMonthlyNoteSettings, - }; - const format = getSettings[granularity]().format.split("/").pop(); - const noteDate = window.moment(file.basename, format, true); - if (!noteDate.isValid()) { - return null; - } - if (isFormatAmbiguous(format, granularity)) { - if (granularity === "week") { - const cleanFormat = removeEscapedCharacters(format); - if (/w{1,2}/i.test(cleanFormat)) { - return window.moment(file.basename, - // If format contains week, remove day & month formatting - format.replace(/M{1,4}/g, "").replace(/D{1,4}/g, ""), false); - } - } - } - return noteDate; -} - -// Credit: @creationix/path.js -function join(...partSegments) { - // Split the inputs into a list of path commands. - let parts = []; - for (let i = 0, l = partSegments.length; i < l; i++) { - parts = parts.concat(partSegments[i].split("/")); - } - // Interpret the path commands to get the new resolved path. - const newParts = []; - for (let i = 0, l = parts.length; i < l; i++) { - const part = parts[i]; - // Remove leading and trailing slashes - // Also remove "." segments - if (!part || part === ".") - continue; - // Push new path segments. - else - newParts.push(part); - } - // Preserve the initial slash if there was one. - if (parts[0] === "") - newParts.unshift(""); - // Turn back into a single string path. - return newParts.join("/"); -} -async function ensureFolderExists(path) { - const dirs = path.replace(/\\/g, "/").split("/"); - dirs.pop(); // remove basename - if (dirs.length) { - const dir = join(...dirs); - if (!window.app.vault.getAbstractFileByPath(dir)) { - await window.app.vault.createFolder(dir); - } - } -} -async function getNotePath(directory, filename) { - if (!filename.endsWith(".md")) { - filename += ".md"; - } - const path = obsidian__default['default'].normalizePath(join(directory, filename)); - await ensureFolderExists(path); - return path; -} -async function getTemplateInfo(template) { - const { metadataCache, vault } = window.app; - const templatePath = obsidian__default['default'].normalizePath(template); - if (templatePath === "/") { - return Promise.resolve(["", null]); - } - try { - const templateFile = metadataCache.getFirstLinkpathDest(templatePath, ""); - const contents = await vault.cachedRead(templateFile); - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const IFoldInfo = window.app.foldManager.load(templateFile); - return [contents, IFoldInfo]; - } - catch (err) { - console.error(`Failed to read the daily note template '${templatePath}'`, err); - new obsidian__default['default'].Notice("Failed to read the daily note template"); - return ["", null]; - } -} - -class DailyNotesFolderMissingError extends Error { -} -/** - * This function mimics the behavior of the daily-notes plugin - * so it will replace {{date}}, {{title}}, and {{time}} with the - * formatted timestamp. - * - * Note: it has an added bonus that it's not 'today' specific. - */ -async function createDailyNote(date) { - const app = window.app; - const { vault } = app; - const moment = window.moment; - const { template, format, folder } = getDailyNoteSettings(); - const [templateContents, IFoldInfo] = await getTemplateInfo(template); - const filename = date.format(format); - const normalizedPath = await getNotePath(folder, filename); - try { - const createdFile = await vault.create(normalizedPath, templateContents - .replace(/{{\s*date\s*}}/gi, filename) - .replace(/{{\s*time\s*}}/gi, moment().format("HH:mm")) - .replace(/{{\s*title\s*}}/gi, filename) - .replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi, (_, _timeOrDate, calc, timeDelta, unit, momentFormat) => { - const now = moment(); - const currentDate = date.clone().set({ - hour: now.get("hour"), - minute: now.get("minute"), - second: now.get("second"), - }); - if (calc) { - currentDate.add(parseInt(timeDelta, 10), unit); - } - if (momentFormat) { - return currentDate.format(momentFormat.substring(1).trim()); - } - return currentDate.format(format); - }) - .replace(/{{\s*yesterday\s*}}/gi, date.clone().subtract(1, "day").format(format)) - .replace(/{{\s*tomorrow\s*}}/gi, date.clone().add(1, "d").format(format))); - // eslint-disable-next-line @typescript-eslint/no-explicit-any - app.foldManager.save(createdFile, IFoldInfo); - return createdFile; - } - catch (err) { - console.error(`Failed to create file: '${normalizedPath}'`, err); - new obsidian__default['default'].Notice("Unable to create new file."); - } -} -function getDailyNote(date, dailyNotes) { - return dailyNotes[getDateUID$1(date, "day")] ?? null; -} -function getAllDailyNotes() { - /** - * Find all daily notes in the daily note folder - */ - const { vault } = window.app; - const { folder } = getDailyNoteSettings(); - const dailyNotesFolder = vault.getAbstractFileByPath(obsidian__default['default'].normalizePath(folder)); - if (!dailyNotesFolder) { - throw new DailyNotesFolderMissingError("Failed to find daily notes folder"); - } - const dailyNotes = {}; - obsidian__default['default'].Vault.recurseChildren(dailyNotesFolder, (note) => { - if (note instanceof obsidian__default['default'].TFile) { - const date = getDateFromFile(note, "day"); - if (date) { - const dateString = getDateUID$1(date, "day"); - dailyNotes[dateString] = note; - } - } - }); - return dailyNotes; -} - -class WeeklyNotesFolderMissingError extends Error { -} -function getDaysOfWeek$1() { - const { moment } = window; - // eslint-disable-next-line @typescript-eslint/no-explicit-any - let weekStart = moment.localeData()._week.dow; - const daysOfWeek = [ - "sunday", - "monday", - "tuesday", - "wednesday", - "thursday", - "friday", - "saturday", - ]; - while (weekStart) { - daysOfWeek.push(daysOfWeek.shift()); - weekStart--; - } - return daysOfWeek; -} -function getDayOfWeekNumericalValue(dayOfWeekName) { - return getDaysOfWeek$1().indexOf(dayOfWeekName.toLowerCase()); -} -async function createWeeklyNote(date) { - const { vault } = window.app; - const { template, format, folder } = getWeeklyNoteSettings(); - const [templateContents, IFoldInfo] = await getTemplateInfo(template); - const filename = date.format(format); - const normalizedPath = await getNotePath(folder, filename); - try { - const createdFile = await vault.create(normalizedPath, templateContents - .replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi, (_, _timeOrDate, calc, timeDelta, unit, momentFormat) => { - const now = window.moment(); - const currentDate = date.clone().set({ - hour: now.get("hour"), - minute: now.get("minute"), - second: now.get("second"), - }); - if (calc) { - currentDate.add(parseInt(timeDelta, 10), unit); - } - if (momentFormat) { - return currentDate.format(momentFormat.substring(1).trim()); - } - return currentDate.format(format); - }) - .replace(/{{\s*title\s*}}/gi, filename) - .replace(/{{\s*time\s*}}/gi, window.moment().format("HH:mm")) - .replace(/{{\s*(sunday|monday|tuesday|wednesday|thursday|friday|saturday)\s*:(.*?)}}/gi, (_, dayOfWeek, momentFormat) => { - const day = getDayOfWeekNumericalValue(dayOfWeek); - return date.weekday(day).format(momentFormat.trim()); - })); - // eslint-disable-next-line @typescript-eslint/no-explicit-any - window.app.foldManager.save(createdFile, IFoldInfo); - return createdFile; - } - catch (err) { - console.error(`Failed to create file: '${normalizedPath}'`, err); - new obsidian__default['default'].Notice("Unable to create new file."); - } -} -function getWeeklyNote(date, weeklyNotes) { - return weeklyNotes[getDateUID$1(date, "week")] ?? null; -} -function getAllWeeklyNotes() { - const { vault } = window.app; - const { folder } = getWeeklyNoteSettings(); - const weeklyNotesFolder = vault.getAbstractFileByPath(obsidian__default['default'].normalizePath(folder)); - if (!weeklyNotesFolder) { - throw new WeeklyNotesFolderMissingError("Failed to find weekly notes folder"); - } - const weeklyNotes = {}; - obsidian__default['default'].Vault.recurseChildren(weeklyNotesFolder, (note) => { - if (note instanceof obsidian__default['default'].TFile) { - const date = getDateFromFile(note, "week"); - if (date) { - const dateString = getDateUID$1(date, "week"); - weeklyNotes[dateString] = note; - } - } - }); - return weeklyNotes; -} - -function appHasDailyNotesPluginLoaded() { - const { app } = window; - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const dailyNotesPlugin = app.internalPlugins.plugins["daily-notes"]; - if (dailyNotesPlugin && dailyNotesPlugin.enabled) { - return true; - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const periodicNotes = app.plugins.getPlugin("periodic-notes"); - return periodicNotes && periodicNotes.settings?.daily?.enabled; -} -var appHasDailyNotesPluginLoaded_1 = appHasDailyNotesPluginLoaded; -var createDailyNote_1 = createDailyNote; -var createWeeklyNote_1 = createWeeklyNote; -var getAllDailyNotes_1 = getAllDailyNotes; -var getAllWeeklyNotes_1 = getAllWeeklyNotes; -var getDailyNote_1 = getDailyNote; -var getDailyNoteSettings_1 = getDailyNoteSettings; -var getDateFromFile_1 = getDateFromFile; -var getDateUID_1$1 = getDateUID$1; -var getWeeklyNote_1 = getWeeklyNote; -var getWeeklyNoteSettings_1 = getWeeklyNoteSettings; - -function noop$1() { } -function run$1(fn) { - return fn(); -} -function blank_object$1() { - return Object.create(null); -} -function run_all$1(fns) { - fns.forEach(run$1); -} -function is_function$1(thing) { - return typeof thing === 'function'; -} -function safe_not_equal$1(a, b) { - return a != a ? b == b : a !== b || ((a && typeof a === 'object') || typeof a === 'function'); -} -function not_equal$1(a, b) { - return a != a ? b == b : a !== b; -} -function is_empty$1(obj) { - return Object.keys(obj).length === 0; -} -function subscribe(store, ...callbacks) { - if (store == null) { - return noop$1; - } - const unsub = store.subscribe(...callbacks); - return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub; -} -function get_store_value(store) { - let value; - subscribe(store, _ => value = _)(); - return value; -} -function component_subscribe(component, store, callback) { - component.$$.on_destroy.push(subscribe(store, callback)); -} -function detach$1(node) { - node.parentNode.removeChild(node); -} -function children$1(element) { - return Array.from(element.childNodes); -} - -let current_component$1; -function set_current_component$1(component) { - current_component$1 = component; -} -function get_current_component$1() { - if (!current_component$1) - throw new Error('Function called outside component initialization'); - return current_component$1; -} -function onDestroy(fn) { - get_current_component$1().$$.on_destroy.push(fn); -} - -const dirty_components$1 = []; -const binding_callbacks$1 = []; -const render_callbacks$1 = []; -const flush_callbacks$1 = []; -const resolved_promise$1 = Promise.resolve(); -let update_scheduled$1 = false; -function schedule_update$1() { - if (!update_scheduled$1) { - update_scheduled$1 = true; - resolved_promise$1.then(flush$1); - } -} -function add_render_callback$1(fn) { - render_callbacks$1.push(fn); -} -function add_flush_callback(fn) { - flush_callbacks$1.push(fn); -} -let flushing$1 = false; -const seen_callbacks$1 = new Set(); -function flush$1() { - if (flushing$1) - return; - flushing$1 = true; - do { - // first, call beforeUpdate functions - // and update components - for (let i = 0; i < dirty_components$1.length; i += 1) { - const component = dirty_components$1[i]; - set_current_component$1(component); - update$1(component.$$); - } - set_current_component$1(null); - dirty_components$1.length = 0; - while (binding_callbacks$1.length) - binding_callbacks$1.pop()(); - // then, once components are updated, call - // afterUpdate functions. This may cause - // subsequent updates... - for (let i = 0; i < render_callbacks$1.length; i += 1) { - const callback = render_callbacks$1[i]; - if (!seen_callbacks$1.has(callback)) { - // ...so guard against infinite loops - seen_callbacks$1.add(callback); - callback(); - } - } - render_callbacks$1.length = 0; - } while (dirty_components$1.length); - while (flush_callbacks$1.length) { - flush_callbacks$1.pop()(); - } - update_scheduled$1 = false; - flushing$1 = false; - seen_callbacks$1.clear(); -} -function update$1($$) { - if ($$.fragment !== null) { - $$.update(); - run_all$1($$.before_update); - const dirty = $$.dirty; - $$.dirty = [-1]; - $$.fragment && $$.fragment.p($$.ctx, dirty); - $$.after_update.forEach(add_render_callback$1); - } -} -const outroing$1 = new Set(); -let outros$1; -function transition_in$1(block, local) { - if (block && block.i) { - outroing$1.delete(block); - block.i(local); - } -} -function transition_out$1(block, local, detach, callback) { - if (block && block.o) { - if (outroing$1.has(block)) - return; - outroing$1.add(block); - outros$1.c.push(() => { - outroing$1.delete(block); - if (callback) { - if (detach) - block.d(1); - callback(); - } - }); - block.o(local); - } -} - -function bind(component, name, callback) { - const index = component.$$.props[name]; - if (index !== undefined) { - component.$$.bound[index] = callback; - callback(component.$$.ctx[index]); - } -} -function create_component$1(block) { - block && block.c(); -} -function mount_component$1(component, target, anchor, customElement) { - const { fragment, on_mount, on_destroy, after_update } = component.$$; - fragment && fragment.m(target, anchor); - if (!customElement) { - // onMount happens before the initial afterUpdate - add_render_callback$1(() => { - const new_on_destroy = on_mount.map(run$1).filter(is_function$1); - if (on_destroy) { - on_destroy.push(...new_on_destroy); - } - else { - // Edge case - component was destroyed immediately, - // most likely as a result of a binding initialising - run_all$1(new_on_destroy); - } - component.$$.on_mount = []; - }); - } - after_update.forEach(add_render_callback$1); -} -function destroy_component$1(component, detaching) { - const $$ = component.$$; - if ($$.fragment !== null) { - run_all$1($$.on_destroy); - $$.fragment && $$.fragment.d(detaching); - // TODO null out other refs, including component.$$ (but need to - // preserve final state?) - $$.on_destroy = $$.fragment = null; - $$.ctx = []; - } -} -function make_dirty$1(component, i) { - if (component.$$.dirty[0] === -1) { - dirty_components$1.push(component); - schedule_update$1(); - component.$$.dirty.fill(0); - } - component.$$.dirty[(i / 31) | 0] |= (1 << (i % 31)); -} -function init$1(component, options, instance, create_fragment, not_equal, props, dirty = [-1]) { - const parent_component = current_component$1; - set_current_component$1(component); - const $$ = component.$$ = { - fragment: null, - ctx: null, - // state - props, - update: noop$1, - not_equal, - bound: blank_object$1(), - // lifecycle - on_mount: [], - on_destroy: [], - on_disconnect: [], - before_update: [], - after_update: [], - context: new Map(parent_component ? parent_component.$$.context : []), - // everything else - callbacks: blank_object$1(), - dirty, - skip_bound: false - }; - let ready = false; - $$.ctx = instance - ? instance(component, options.props || {}, (i, ret, ...rest) => { - const value = rest.length ? rest[0] : ret; - if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) { - if (!$$.skip_bound && $$.bound[i]) - $$.bound[i](value); - if (ready) - make_dirty$1(component, i); - } - return ret; - }) - : []; - $$.update(); - ready = true; - run_all$1($$.before_update); - // `false` as a special case of no DOM component - $$.fragment = create_fragment ? create_fragment($$.ctx) : false; - if (options.target) { - if (options.hydrate) { - const nodes = children$1(options.target); - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - $$.fragment && $$.fragment.l(nodes); - nodes.forEach(detach$1); - } - else { - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - $$.fragment && $$.fragment.c(); - } - if (options.intro) - transition_in$1(component.$$.fragment); - mount_component$1(component, options.target, options.anchor, options.customElement); - flush$1(); - } - set_current_component$1(parent_component); -} -/** - * Base class for Svelte components. Used when dev=false. - */ -class SvelteComponent$1 { - $destroy() { - destroy_component$1(this, 1); - this.$destroy = noop$1; - } - $on(type, callback) { - const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = [])); - callbacks.push(callback); - return () => { - const index = callbacks.indexOf(callback); - if (index !== -1) - callbacks.splice(index, 1); - }; - } - $set($$props) { - if (this.$$set && !is_empty$1($$props)) { - this.$$.skip_bound = true; - this.$$set($$props); - this.$$.skip_bound = false; - } - } -} - -const subscriber_queue = []; -/** - * Create a `Writable` store that allows both updating and reading by subscription. - * @param {*=}value initial value - * @param {StartStopNotifier=}start start and stop notifications for subscriptions - */ -function writable(value, start = noop$1) { - let stop; - const subscribers = []; - function set(new_value) { - if (safe_not_equal$1(value, new_value)) { - value = new_value; - if (stop) { // store is ready - const run_queue = !subscriber_queue.length; - for (let i = 0; i < subscribers.length; i += 1) { - const s = subscribers[i]; - s[1](); - subscriber_queue.push(s, value); - } - if (run_queue) { - for (let i = 0; i < subscriber_queue.length; i += 2) { - subscriber_queue[i][0](subscriber_queue[i + 1]); - } - subscriber_queue.length = 0; - } - } - } - } - function update(fn) { - set(fn(value)); - } - function subscribe(run, invalidate = noop$1) { - const subscriber = [run, invalidate]; - subscribers.push(subscriber); - if (subscribers.length === 1) { - stop = start(set) || noop$1; - } - run(value); - return () => { - const index = subscribers.indexOf(subscriber); - if (index !== -1) { - subscribers.splice(index, 1); - } - if (subscribers.length === 0) { - stop(); - stop = null; - } - }; - } - return { set, update, subscribe }; -} - -const weekdays$1 = [ - "sunday", - "monday", - "tuesday", - "wednesday", - "thursday", - "friday", - "saturday", -]; -const defaultSettings = Object.freeze({ - shouldConfirmBeforeCreate: true, - weekStart: "locale", - wordsPerDot: DEFAULT_WORDS_PER_DOT, - showWeeklyNote: false, - weeklyNoteFormat: "", - weeklyNoteTemplate: "", - weeklyNoteFolder: "", - localeOverride: "system-default", -}); -function appHasPeriodicNotesPluginLoaded() { - var _a, _b; - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const periodicNotes = window.app.plugins.getPlugin("periodic-notes"); - return periodicNotes && ((_b = (_a = periodicNotes.settings) === null || _a === void 0 ? void 0 : _a.weekly) === null || _b === void 0 ? void 0 : _b.enabled); -} -class CalendarSettingsTab extends obsidian.PluginSettingTab { - constructor(app, plugin) { - super(app, plugin); - this.plugin = plugin; - } - display() { - this.containerEl.empty(); - if (!appHasDailyNotesPluginLoaded_1()) { - this.containerEl.createDiv("settings-banner", (banner) => { - banner.createEl("h3", { - text: "⚠️ Daily Notes plugin not enabled", - }); - banner.createEl("p", { - cls: "setting-item-description", - text: "The calendar is best used in conjunction with either the Daily Notes plugin or the Periodic Notes plugin (available in the Community Plugins catalog).", - }); - }); - } - this.containerEl.createEl("h3", { - text: "General Settings", - }); - this.addDotThresholdSetting(); - this.addWeekStartSetting(); - this.addConfirmCreateSetting(); - this.addShowWeeklyNoteSetting(); - if (this.plugin.options.showWeeklyNote && - !appHasPeriodicNotesPluginLoaded()) { - this.containerEl.createEl("h3", { - text: "Weekly Note Settings", - }); - this.containerEl.createEl("p", { - cls: "setting-item-description", - text: "Note: Weekly Note settings are moving. You are encouraged to install the 'Periodic Notes' plugin to keep the functionality in the future.", - }); - this.addWeeklyNoteFormatSetting(); - this.addWeeklyNoteTemplateSetting(); - this.addWeeklyNoteFolderSetting(); - } - this.containerEl.createEl("h3", { - text: "Advanced Settings", - }); - this.addLocaleOverrideSetting(); - } - addDotThresholdSetting() { - new obsidian.Setting(this.containerEl) - .setName("Words per dot") - .setDesc("How many words should be represented by a single dot?") - .addText((textfield) => { - textfield.setPlaceholder(String(DEFAULT_WORDS_PER_DOT)); - textfield.inputEl.type = "number"; - textfield.setValue(String(this.plugin.options.wordsPerDot)); - textfield.onChange(async (value) => { - this.plugin.writeOptions(() => ({ - wordsPerDot: value !== "" ? Number(value) : undefined, - })); - }); - }); - } - addWeekStartSetting() { - const { moment } = window; - const localizedWeekdays = moment.weekdays(); - const localeWeekStartNum = window._bundledLocaleWeekSpec.dow; - const localeWeekStart = moment.weekdays()[localeWeekStartNum]; - new obsidian.Setting(this.containerEl) - .setName("Start week on:") - .setDesc("Choose what day of the week to start. Select 'Locale default' to use the default specified by moment.js") - .addDropdown((dropdown) => { - dropdown.addOption("locale", `Locale default (${localeWeekStart})`); - localizedWeekdays.forEach((day, i) => { - dropdown.addOption(weekdays$1[i], day); - }); - dropdown.setValue(this.plugin.options.weekStart); - dropdown.onChange(async (value) => { - this.plugin.writeOptions(() => ({ - weekStart: value, - })); - }); - }); - } - addConfirmCreateSetting() { - new obsidian.Setting(this.containerEl) - .setName("Confirm before creating new note") - .setDesc("Show a confirmation modal before creating a new note") - .addToggle((toggle) => { - toggle.setValue(this.plugin.options.shouldConfirmBeforeCreate); - toggle.onChange(async (value) => { - this.plugin.writeOptions(() => ({ - shouldConfirmBeforeCreate: value, - })); - }); - }); - } - addShowWeeklyNoteSetting() { - new obsidian.Setting(this.containerEl) - .setName("Show week number") - .setDesc("Enable this to add a column with the week number") - .addToggle((toggle) => { - toggle.setValue(this.plugin.options.showWeeklyNote); - toggle.onChange(async (value) => { - this.plugin.writeOptions(() => ({ showWeeklyNote: value })); - this.display(); // show/hide weekly settings - }); - }); - } - addWeeklyNoteFormatSetting() { - new obsidian.Setting(this.containerEl) - .setName("Weekly note format") - .setDesc("For more syntax help, refer to format reference") - .addText((textfield) => { - textfield.setValue(this.plugin.options.weeklyNoteFormat); - textfield.setPlaceholder(DEFAULT_WEEK_FORMAT); - textfield.onChange(async (value) => { - this.plugin.writeOptions(() => ({ weeklyNoteFormat: value })); - }); - }); - } - addWeeklyNoteTemplateSetting() { - new obsidian.Setting(this.containerEl) - .setName("Weekly note template") - .setDesc("Choose the file you want to use as the template for your weekly notes") - .addText((textfield) => { - textfield.setValue(this.plugin.options.weeklyNoteTemplate); - textfield.onChange(async (value) => { - this.plugin.writeOptions(() => ({ weeklyNoteTemplate: value })); - }); - }); - } - addWeeklyNoteFolderSetting() { - new obsidian.Setting(this.containerEl) - .setName("Weekly note folder") - .setDesc("New weekly notes will be placed here") - .addText((textfield) => { - textfield.setValue(this.plugin.options.weeklyNoteFolder); - textfield.onChange(async (value) => { - this.plugin.writeOptions(() => ({ weeklyNoteFolder: value })); - }); - }); - } - addLocaleOverrideSetting() { - var _a; - const { moment } = window; - const sysLocale = (_a = navigator.language) === null || _a === void 0 ? void 0 : _a.toLowerCase(); - new obsidian.Setting(this.containerEl) - .setName("Override locale:") - .setDesc("Set this if you want to use a locale different from the default") - .addDropdown((dropdown) => { - dropdown.addOption("system-default", `Same as system (${sysLocale})`); - moment.locales().forEach((locale) => { - dropdown.addOption(locale, locale); - }); - dropdown.setValue(this.plugin.options.localeOverride); - dropdown.onChange(async (value) => { - this.plugin.writeOptions(() => ({ - localeOverride: value, - })); - }); - }); - } -} - -const classList = (obj) => { - return Object.entries(obj) - .filter(([_k, v]) => !!v) - .map(([k, _k]) => k); -}; -function clamp(num, lowerBound, upperBound) { - return Math.min(Math.max(lowerBound, num), upperBound); -} -function partition(arr, predicate) { - const pass = []; - const fail = []; - arr.forEach((elem) => { - if (predicate(elem)) { - pass.push(elem); - } - else { - fail.push(elem); - } - }); - return [pass, fail]; -} -/** - * Lookup the dateUID for a given file. It compares the filename - * to the daily and weekly note formats to find a match. - * - * @param file - */ -function getDateUIDFromFile(file) { - if (!file) { - return null; - } - // TODO: I'm not checking the path! - let date = getDateFromFile_1(file, "day"); - if (date) { - return getDateUID_1$1(date, "day"); - } - date = getDateFromFile_1(file, "week"); - if (date) { - return getDateUID_1$1(date, "week"); - } - return null; -} -function getWordCount(text) { - const spaceDelimitedChars = /A-Za-z\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC/ - .source; - const nonSpaceDelimitedWords = /\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u4E00-\u9FD5/ - .source; - const pattern = new RegExp([ - `(?:[0-9]+(?:(?:,|\\.)[0-9]+)*|[\\-${spaceDelimitedChars}])+`, - nonSpaceDelimitedWords, - ].join("|"), "g"); - return (text.match(pattern) || []).length; -} - -function createDailyNotesStore() { - let hasError = false; - const store = writable(null); - return Object.assign({ reindex: () => { - try { - const dailyNotes = getAllDailyNotes_1(); - store.set(dailyNotes); - hasError = false; - } - catch (err) { - if (!hasError) { - // Avoid error being shown multiple times - console.log("[Calendar] Failed to find daily notes folder", err); - } - store.set({}); - hasError = true; - } - } }, store); -} -function createWeeklyNotesStore() { - let hasError = false; - const store = writable(null); - return Object.assign({ reindex: () => { - try { - const weeklyNotes = getAllWeeklyNotes_1(); - store.set(weeklyNotes); - hasError = false; - } - catch (err) { - if (!hasError) { - // Avoid error being shown multiple times - console.log("[Calendar] Failed to find weekly notes folder", err); - } - store.set({}); - hasError = true; - } - } }, store); -} -const settings = writable(defaultSettings); -const dailyNotes = createDailyNotesStore(); -const weeklyNotes = createWeeklyNotesStore(); -function createSelectedFileStore() { - const store = writable(null); - return Object.assign({ setFile: (file) => { - const id = getDateUIDFromFile(file); - store.set(id); - } }, store); -} -const activeFile = createSelectedFileStore(); - -class ConfirmationModal extends obsidian.Modal { - constructor(app, config) { - super(app); - const { cta, onAccept, text, title } = config; - this.contentEl.createEl("h2", { text: title }); - this.contentEl.createEl("p", { text }); - this.contentEl.createDiv("modal-button-container", (buttonsEl) => { - buttonsEl - .createEl("button", { text: "Never mind" }) - .addEventListener("click", () => this.close()); - buttonsEl - .createEl("button", { - cls: "mod-cta", - text: cta, - }) - .addEventListener("click", async (e) => { - await onAccept(e); - this.close(); - }); - }); - } -} -function createConfirmationDialog({ cta, onAccept, text, title, }) { - new ConfirmationModal(window.app, { cta, onAccept, text, title }).open(); -} - -/** - * Create a Daily Note for a given date. - */ -async function tryToCreateDailyNote(date, inNewSplit, settings, cb) { - const { workspace } = window.app; - const { format } = getDailyNoteSettings_1(); - const filename = date.format(format); - const createFile = async () => { - const dailyNote = await createDailyNote_1(date); - const leaf = inNewSplit - ? workspace.splitActiveLeaf() - : workspace.getUnpinnedLeaf(); - await leaf.openFile(dailyNote); - cb === null || cb === void 0 ? void 0 : cb(dailyNote); - }; - if (settings.shouldConfirmBeforeCreate) { - createConfirmationDialog({ - cta: "Create", - onAccept: createFile, - text: `File ${filename} does not exist. Would you like to create it?`, - title: "New Daily Note", - }); - } - else { - await createFile(); - } -} - -/** - * Create a Weekly Note for a given date. - */ -async function tryToCreateWeeklyNote(date, inNewSplit, settings, cb) { - const { workspace } = window.app; - const { format } = getWeeklyNoteSettings_1(); - const filename = date.format(format); - const createFile = async () => { - const dailyNote = await createWeeklyNote_1(date); - const leaf = inNewSplit - ? workspace.splitActiveLeaf() - : workspace.getUnpinnedLeaf(); - await leaf.openFile(dailyNote); - cb === null || cb === void 0 ? void 0 : cb(dailyNote); - }; - if (settings.shouldConfirmBeforeCreate) { - createConfirmationDialog({ - cta: "Create", - onAccept: createFile, - text: `File ${filename} does not exist. Would you like to create it?`, - title: "New Weekly Note", - }); - } - else { - await createFile(); - } -} - -function noop() { } -function assign(tar, src) { - // @ts-ignore - for (const k in src) - tar[k] = src[k]; - return tar; -} -function is_promise(value) { - return value && typeof value === 'object' && typeof value.then === 'function'; -} -function run(fn) { - return fn(); -} -function blank_object() { - return Object.create(null); -} -function run_all(fns) { - fns.forEach(run); -} -function is_function(thing) { - return typeof thing === 'function'; -} -function safe_not_equal(a, b) { - return a != a ? b == b : a !== b || ((a && typeof a === 'object') || typeof a === 'function'); -} -function not_equal(a, b) { - return a != a ? b == b : a !== b; -} -function is_empty(obj) { - return Object.keys(obj).length === 0; -} -function create_slot(definition, ctx, $$scope, fn) { - if (definition) { - const slot_ctx = get_slot_context(definition, ctx, $$scope, fn); - return definition[0](slot_ctx); - } -} -function get_slot_context(definition, ctx, $$scope, fn) { - return definition[1] && fn - ? assign($$scope.ctx.slice(), definition[1](fn(ctx))) - : $$scope.ctx; -} -function get_slot_changes(definition, $$scope, dirty, fn) { - if (definition[2] && fn) { - const lets = definition[2](fn(dirty)); - if ($$scope.dirty === undefined) { - return lets; - } - if (typeof lets === 'object') { - const merged = []; - const len = Math.max($$scope.dirty.length, lets.length); - for (let i = 0; i < len; i += 1) { - merged[i] = $$scope.dirty[i] | lets[i]; - } - return merged; - } - return $$scope.dirty | lets; - } - return $$scope.dirty; -} -function update_slot(slot, slot_definition, ctx, $$scope, dirty, get_slot_changes_fn, get_slot_context_fn) { - const slot_changes = get_slot_changes(slot_definition, $$scope, dirty, get_slot_changes_fn); - if (slot_changes) { - const slot_context = get_slot_context(slot_definition, ctx, $$scope, get_slot_context_fn); - slot.p(slot_context, slot_changes); - } -} -function null_to_empty(value) { - return value == null ? '' : value; -} - -function append(target, node) { - target.appendChild(node); -} -function insert(target, node, anchor) { - target.insertBefore(node, anchor || null); -} -function detach(node) { - node.parentNode.removeChild(node); -} -function destroy_each(iterations, detaching) { - for (let i = 0; i < iterations.length; i += 1) { - if (iterations[i]) - iterations[i].d(detaching); - } -} -function element(name) { - return document.createElement(name); -} -function svg_element(name) { - return document.createElementNS('http://www.w3.org/2000/svg', name); -} -function text(data) { - return document.createTextNode(data); -} -function space() { - return text(' '); -} -function empty() { - return text(''); -} -function listen(node, event, handler, options) { - node.addEventListener(event, handler, options); - return () => node.removeEventListener(event, handler, options); -} -function attr(node, attribute, value) { - if (value == null) - node.removeAttribute(attribute); - else if (node.getAttribute(attribute) !== value) - node.setAttribute(attribute, value); -} -function set_attributes(node, attributes) { - // @ts-ignore - const descriptors = Object.getOwnPropertyDescriptors(node.__proto__); - for (const key in attributes) { - if (attributes[key] == null) { - node.removeAttribute(key); - } - else if (key === 'style') { - node.style.cssText = attributes[key]; - } - else if (key === '__value') { - node.value = node[key] = attributes[key]; - } - else if (descriptors[key] && descriptors[key].set) { - node[key] = attributes[key]; - } - else { - attr(node, key, attributes[key]); - } - } -} -function children(element) { - return Array.from(element.childNodes); -} -function set_data(text, data) { - data = '' + data; - if (text.wholeText !== data) - text.data = data; -} -function toggle_class(element, name, toggle) { - element.classList[toggle ? 'add' : 'remove'](name); -} - -let current_component; -function set_current_component(component) { - current_component = component; -} -function get_current_component() { - if (!current_component) - throw new Error('Function called outside component initialization'); - return current_component; -} - -const dirty_components = []; -const binding_callbacks = []; -const render_callbacks = []; -const flush_callbacks = []; -const resolved_promise = Promise.resolve(); -let update_scheduled = false; -function schedule_update() { - if (!update_scheduled) { - update_scheduled = true; - resolved_promise.then(flush); - } -} -function add_render_callback(fn) { - render_callbacks.push(fn); -} -let flushing = false; -const seen_callbacks = new Set(); -function flush() { - if (flushing) - return; - flushing = true; - do { - // first, call beforeUpdate functions - // and update components - for (let i = 0; i < dirty_components.length; i += 1) { - const component = dirty_components[i]; - set_current_component(component); - update(component.$$); - } - set_current_component(null); - dirty_components.length = 0; - while (binding_callbacks.length) - binding_callbacks.pop()(); - // then, once components are updated, call - // afterUpdate functions. This may cause - // subsequent updates... - for (let i = 0; i < render_callbacks.length; i += 1) { - const callback = render_callbacks[i]; - if (!seen_callbacks.has(callback)) { - // ...so guard against infinite loops - seen_callbacks.add(callback); - callback(); - } - } - render_callbacks.length = 0; - } while (dirty_components.length); - while (flush_callbacks.length) { - flush_callbacks.pop()(); - } - update_scheduled = false; - flushing = false; - seen_callbacks.clear(); -} -function update($$) { - if ($$.fragment !== null) { - $$.update(); - run_all($$.before_update); - const dirty = $$.dirty; - $$.dirty = [-1]; - $$.fragment && $$.fragment.p($$.ctx, dirty); - $$.after_update.forEach(add_render_callback); - } -} -const outroing = new Set(); -let outros; -function group_outros() { - outros = { - r: 0, - c: [], - p: outros // parent group - }; -} -function check_outros() { - if (!outros.r) { - run_all(outros.c); - } - outros = outros.p; -} -function transition_in(block, local) { - if (block && block.i) { - outroing.delete(block); - block.i(local); - } -} -function transition_out(block, local, detach, callback) { - if (block && block.o) { - if (outroing.has(block)) - return; - outroing.add(block); - outros.c.push(() => { - outroing.delete(block); - if (callback) { - if (detach) - block.d(1); - callback(); - } - }); - block.o(local); - } -} - -function handle_promise(promise, info) { - const token = info.token = {}; - function update(type, index, key, value) { - if (info.token !== token) - return; - info.resolved = value; - let child_ctx = info.ctx; - if (key !== undefined) { - child_ctx = child_ctx.slice(); - child_ctx[key] = value; - } - const block = type && (info.current = type)(child_ctx); - let needs_flush = false; - if (info.block) { - if (info.blocks) { - info.blocks.forEach((block, i) => { - if (i !== index && block) { - group_outros(); - transition_out(block, 1, 1, () => { - if (info.blocks[i] === block) { - info.blocks[i] = null; - } - }); - check_outros(); - } - }); - } - else { - info.block.d(1); - } - block.c(); - transition_in(block, 1); - block.m(info.mount(), info.anchor); - needs_flush = true; - } - info.block = block; - if (info.blocks) - info.blocks[index] = block; - if (needs_flush) { - flush(); - } - } - if (is_promise(promise)) { - const current_component = get_current_component(); - promise.then(value => { - set_current_component(current_component); - update(info.then, 1, info.value, value); - set_current_component(null); - }, error => { - set_current_component(current_component); - update(info.catch, 2, info.error, error); - set_current_component(null); - if (!info.hasCatch) { - throw error; - } - }); - // if we previously had a then/catch block, destroy it - if (info.current !== info.pending) { - update(info.pending, 0); - return true; - } - } - else { - if (info.current !== info.then) { - update(info.then, 1, info.value, promise); - return true; - } - info.resolved = promise; - } -} -function outro_and_destroy_block(block, lookup) { - transition_out(block, 1, 1, () => { - lookup.delete(block.key); - }); -} -function update_keyed_each(old_blocks, dirty, get_key, dynamic, ctx, list, lookup, node, destroy, create_each_block, next, get_context) { - let o = old_blocks.length; - let n = list.length; - let i = o; - const old_indexes = {}; - while (i--) - old_indexes[old_blocks[i].key] = i; - const new_blocks = []; - const new_lookup = new Map(); - const deltas = new Map(); - i = n; - while (i--) { - const child_ctx = get_context(ctx, list, i); - const key = get_key(child_ctx); - let block = lookup.get(key); - if (!block) { - block = create_each_block(key, child_ctx); - block.c(); - } - else if (dynamic) { - block.p(child_ctx, dirty); - } - new_lookup.set(key, new_blocks[i] = block); - if (key in old_indexes) - deltas.set(key, Math.abs(i - old_indexes[key])); - } - const will_move = new Set(); - const did_move = new Set(); - function insert(block) { - transition_in(block, 1); - block.m(node, next); - lookup.set(block.key, block); - next = block.first; - n--; - } - while (o && n) { - const new_block = new_blocks[n - 1]; - const old_block = old_blocks[o - 1]; - const new_key = new_block.key; - const old_key = old_block.key; - if (new_block === old_block) { - // do nothing - next = new_block.first; - o--; - n--; - } - else if (!new_lookup.has(old_key)) { - // remove old block - destroy(old_block, lookup); - o--; - } - else if (!lookup.has(new_key) || will_move.has(new_key)) { - insert(new_block); - } - else if (did_move.has(old_key)) { - o--; - } - else if (deltas.get(new_key) > deltas.get(old_key)) { - did_move.add(new_key); - insert(new_block); - } - else { - will_move.add(old_key); - o--; - } - } - while (o--) { - const old_block = old_blocks[o]; - if (!new_lookup.has(old_block.key)) - destroy(old_block, lookup); - } - while (n) - insert(new_blocks[n - 1]); - return new_blocks; -} - -function get_spread_update(levels, updates) { - const update = {}; - const to_null_out = {}; - const accounted_for = { $$scope: 1 }; - let i = levels.length; - while (i--) { - const o = levels[i]; - const n = updates[i]; - if (n) { - for (const key in o) { - if (!(key in n)) - to_null_out[key] = 1; - } - for (const key in n) { - if (!accounted_for[key]) { - update[key] = n[key]; - accounted_for[key] = 1; - } - } - levels[i] = n; - } - else { - for (const key in o) { - accounted_for[key] = 1; - } - } - } - for (const key in to_null_out) { - if (!(key in update)) - update[key] = undefined; - } - return update; -} -function get_spread_object(spread_props) { - return typeof spread_props === 'object' && spread_props !== null ? spread_props : {}; -} -function create_component(block) { - block && block.c(); -} -function mount_component(component, target, anchor, customElement) { - const { fragment, on_mount, on_destroy, after_update } = component.$$; - fragment && fragment.m(target, anchor); - if (!customElement) { - // onMount happens before the initial afterUpdate - add_render_callback(() => { - const new_on_destroy = on_mount.map(run).filter(is_function); - if (on_destroy) { - on_destroy.push(...new_on_destroy); - } - else { - // Edge case - component was destroyed immediately, - // most likely as a result of a binding initialising - run_all(new_on_destroy); - } - component.$$.on_mount = []; - }); - } - after_update.forEach(add_render_callback); -} -function destroy_component(component, detaching) { - const $$ = component.$$; - if ($$.fragment !== null) { - run_all($$.on_destroy); - $$.fragment && $$.fragment.d(detaching); - // TODO null out other refs, including component.$$ (but need to - // preserve final state?) - $$.on_destroy = $$.fragment = null; - $$.ctx = []; - } -} -function make_dirty(component, i) { - if (component.$$.dirty[0] === -1) { - dirty_components.push(component); - schedule_update(); - component.$$.dirty.fill(0); - } - component.$$.dirty[(i / 31) | 0] |= (1 << (i % 31)); -} -function init(component, options, instance, create_fragment, not_equal, props, dirty = [-1]) { - const parent_component = current_component; - set_current_component(component); - const $$ = component.$$ = { - fragment: null, - ctx: null, - // state - props, - update: noop, - not_equal, - bound: blank_object(), - // lifecycle - on_mount: [], - on_destroy: [], - on_disconnect: [], - before_update: [], - after_update: [], - context: new Map(parent_component ? parent_component.$$.context : []), - // everything else - callbacks: blank_object(), - dirty, - skip_bound: false - }; - let ready = false; - $$.ctx = instance - ? instance(component, options.props || {}, (i, ret, ...rest) => { - const value = rest.length ? rest[0] : ret; - if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) { - if (!$$.skip_bound && $$.bound[i]) - $$.bound[i](value); - if (ready) - make_dirty(component, i); - } - return ret; - }) - : []; - $$.update(); - ready = true; - run_all($$.before_update); - // `false` as a special case of no DOM component - $$.fragment = create_fragment ? create_fragment($$.ctx) : false; - if (options.target) { - if (options.hydrate) { - const nodes = children(options.target); - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - $$.fragment && $$.fragment.l(nodes); - nodes.forEach(detach); - } - else { - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - $$.fragment && $$.fragment.c(); - } - if (options.intro) - transition_in(component.$$.fragment); - mount_component(component, options.target, options.anchor, options.customElement); - flush(); - } - set_current_component(parent_component); -} -/** - * Base class for Svelte components. Used when dev=false. - */ -class SvelteComponent { - $destroy() { - destroy_component(this, 1); - this.$destroy = noop; - } - $on(type, callback) { - const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = [])); - callbacks.push(callback); - return () => { - const index = callbacks.indexOf(callback); - if (index !== -1) - callbacks.splice(index, 1); - }; - } - $set($$props) { - if (this.$$set && !is_empty($$props)) { - this.$$.skip_bound = true; - this.$$set($$props); - this.$$.skip_bound = false; - } - } -} - -/** - * dateUID is a way of weekly identifying daily/weekly/monthly notes. - * They are prefixed with the granularity to avoid ambiguity. - */ -function getDateUID(date, granularity = "day") { - const ts = date.clone().startOf(granularity).format(); - return `${granularity}-${ts}`; -} -var getDateUID_1 = getDateUID; - -/* src/components/Dot.svelte generated by Svelte v3.35.0 */ - -function add_css$5() { - var style = element("style"); - style.id = "svelte-1widvzq-style"; - style.textContent = ".dot.svelte-1widvzq,.hollow.svelte-1widvzq{display:inline-block;height:6px;width:6px;margin:0 1px}.filled.svelte-1widvzq{fill:var(--color-dot)}.active.filled.svelte-1widvzq{fill:var(--text-on-accent)}.hollow.svelte-1widvzq{fill:none;stroke:var(--color-dot)}.active.hollow.svelte-1widvzq{fill:none;stroke:var(--text-on-accent)}"; - append(document.head, style); -} - -// (14:0) {:else} -function create_else_block$1(ctx) { - let svg; - let circle; - let svg_class_value; - - return { - c() { - svg = svg_element("svg"); - circle = svg_element("circle"); - attr(circle, "cx", "3"); - attr(circle, "cy", "3"); - attr(circle, "r", "2"); - attr(svg, "class", svg_class_value = "" + (null_to_empty(`hollow ${/*className*/ ctx[0]}`) + " svelte-1widvzq")); - attr(svg, "viewBox", "0 0 6 6"); - attr(svg, "xmlns", "http://www.w3.org/2000/svg"); - toggle_class(svg, "active", /*isActive*/ ctx[2]); - }, - m(target, anchor) { - insert(target, svg, anchor); - append(svg, circle); - }, - p(ctx, dirty) { - if (dirty & /*className*/ 1 && svg_class_value !== (svg_class_value = "" + (null_to_empty(`hollow ${/*className*/ ctx[0]}`) + " svelte-1widvzq"))) { - attr(svg, "class", svg_class_value); - } - - if (dirty & /*className, isActive*/ 5) { - toggle_class(svg, "active", /*isActive*/ ctx[2]); - } - }, - d(detaching) { - if (detaching) detach(svg); - } - }; -} - -// (6:0) {#if isFilled} -function create_if_block$2(ctx) { - let svg; - let circle; - let svg_class_value; - - return { - c() { - svg = svg_element("svg"); - circle = svg_element("circle"); - attr(circle, "cx", "3"); - attr(circle, "cy", "3"); - attr(circle, "r", "2"); - attr(svg, "class", svg_class_value = "" + (null_to_empty(`dot filled ${/*className*/ ctx[0]}`) + " svelte-1widvzq")); - attr(svg, "viewBox", "0 0 6 6"); - attr(svg, "xmlns", "http://www.w3.org/2000/svg"); - toggle_class(svg, "active", /*isActive*/ ctx[2]); - }, - m(target, anchor) { - insert(target, svg, anchor); - append(svg, circle); - }, - p(ctx, dirty) { - if (dirty & /*className*/ 1 && svg_class_value !== (svg_class_value = "" + (null_to_empty(`dot filled ${/*className*/ ctx[0]}`) + " svelte-1widvzq"))) { - attr(svg, "class", svg_class_value); - } - - if (dirty & /*className, isActive*/ 5) { - toggle_class(svg, "active", /*isActive*/ ctx[2]); - } - }, - d(detaching) { - if (detaching) detach(svg); - } - }; -} - -function create_fragment$6(ctx) { - let if_block_anchor; - - function select_block_type(ctx, dirty) { - if (/*isFilled*/ ctx[1]) return create_if_block$2; - return create_else_block$1; - } - - let current_block_type = select_block_type(ctx); - let if_block = current_block_type(ctx); - - return { - c() { - if_block.c(); - if_block_anchor = empty(); - }, - m(target, anchor) { - if_block.m(target, anchor); - insert(target, if_block_anchor, anchor); - }, - p(ctx, [dirty]) { - if (current_block_type === (current_block_type = select_block_type(ctx)) && if_block) { - if_block.p(ctx, dirty); - } else { - if_block.d(1); - if_block = current_block_type(ctx); - - if (if_block) { - if_block.c(); - if_block.m(if_block_anchor.parentNode, if_block_anchor); - } - } - }, - i: noop, - o: noop, - d(detaching) { - if_block.d(detaching); - if (detaching) detach(if_block_anchor); - } - }; -} - -function instance$6($$self, $$props, $$invalidate) { - let { className = "" } = $$props; - let { isFilled } = $$props; - let { isActive } = $$props; - - $$self.$$set = $$props => { - if ("className" in $$props) $$invalidate(0, className = $$props.className); - if ("isFilled" in $$props) $$invalidate(1, isFilled = $$props.isFilled); - if ("isActive" in $$props) $$invalidate(2, isActive = $$props.isActive); - }; - - return [className, isFilled, isActive]; -} - -class Dot extends SvelteComponent { - constructor(options) { - super(); - if (!document.getElementById("svelte-1widvzq-style")) add_css$5(); - init(this, options, instance$6, create_fragment$6, safe_not_equal, { className: 0, isFilled: 1, isActive: 2 }); - } -} - -/* src/components/MetadataResolver.svelte generated by Svelte v3.35.0 */ - -const get_default_slot_changes_1 = dirty => ({}); -const get_default_slot_context_1 = ctx => ({ metadata: null }); -const get_default_slot_changes = dirty => ({ metadata: dirty & /*metadata*/ 1 }); -const get_default_slot_context = ctx => ({ metadata: /*resolvedMeta*/ ctx[3] }); - -// (11:0) {:else} -function create_else_block(ctx) { - let current; - const default_slot_template = /*#slots*/ ctx[2].default; - const default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[1], get_default_slot_context_1); - - return { - c() { - if (default_slot) default_slot.c(); - }, - m(target, anchor) { - if (default_slot) { - default_slot.m(target, anchor); - } - - current = true; - }, - p(ctx, dirty) { - if (default_slot) { - if (default_slot.p && dirty & /*$$scope*/ 2) { - update_slot(default_slot, default_slot_template, ctx, /*$$scope*/ ctx[1], dirty, get_default_slot_changes_1, get_default_slot_context_1); - } - } - }, - i(local) { - if (current) return; - transition_in(default_slot, local); - current = true; - }, - o(local) { - transition_out(default_slot, local); - current = false; - }, - d(detaching) { - if (default_slot) default_slot.d(detaching); - } - }; -} - -// (7:0) {#if metadata} -function create_if_block$1(ctx) { - let await_block_anchor; - let promise; - let current; - - let info = { - ctx, - current: null, - token: null, - hasCatch: false, - pending: create_pending_block, - then: create_then_block, - catch: create_catch_block, - value: 3, - blocks: [,,,] - }; - - handle_promise(promise = /*metadata*/ ctx[0], info); - - return { - c() { - await_block_anchor = empty(); - info.block.c(); - }, - m(target, anchor) { - insert(target, await_block_anchor, anchor); - info.block.m(target, info.anchor = anchor); - info.mount = () => await_block_anchor.parentNode; - info.anchor = await_block_anchor; - current = true; - }, - p(new_ctx, dirty) { - ctx = new_ctx; - info.ctx = ctx; - - if (dirty & /*metadata*/ 1 && promise !== (promise = /*metadata*/ ctx[0]) && handle_promise(promise, info)) ; else { - const child_ctx = ctx.slice(); - child_ctx[3] = info.resolved; - info.block.p(child_ctx, dirty); - } - }, - i(local) { - if (current) return; - transition_in(info.block); - current = true; - }, - o(local) { - for (let i = 0; i < 3; i += 1) { - const block = info.blocks[i]; - transition_out(block); - } - - current = false; - }, - d(detaching) { - if (detaching) detach(await_block_anchor); - info.block.d(detaching); - info.token = null; - info = null; - } - }; -} - -// (1:0) {#if metadata} -function create_catch_block(ctx) { - return { - c: noop, - m: noop, - p: noop, - i: noop, - o: noop, - d: noop - }; -} - -// (8:37) ; export let metadata; {#if metadata} -function create_pending_block(ctx) { - return { - c: noop, - m: noop, - p: noop, - i: noop, - o: noop, - d: noop - }; -} - -function create_fragment$5(ctx) { - let current_block_type_index; - let if_block; - let if_block_anchor; - let current; - const if_block_creators = [create_if_block$1, create_else_block]; - const if_blocks = []; - - function select_block_type(ctx, dirty) { - if (/*metadata*/ ctx[0]) return 0; - return 1; - } - - current_block_type_index = select_block_type(ctx); - if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx); - - return { - c() { - if_block.c(); - if_block_anchor = empty(); - }, - m(target, anchor) { - if_blocks[current_block_type_index].m(target, anchor); - insert(target, if_block_anchor, anchor); - current = true; - }, - p(ctx, [dirty]) { - let previous_block_index = current_block_type_index; - current_block_type_index = select_block_type(ctx); - - if (current_block_type_index === previous_block_index) { - if_blocks[current_block_type_index].p(ctx, dirty); - } else { - group_outros(); - - transition_out(if_blocks[previous_block_index], 1, 1, () => { - if_blocks[previous_block_index] = null; - }); - - check_outros(); - if_block = if_blocks[current_block_type_index]; - - if (!if_block) { - if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx); - if_block.c(); - } else { - if_block.p(ctx, dirty); - } - - transition_in(if_block, 1); - if_block.m(if_block_anchor.parentNode, if_block_anchor); - } - }, - i(local) { - if (current) return; - transition_in(if_block); - current = true; - }, - o(local) { - transition_out(if_block); - current = false; - }, - d(detaching) { - if_blocks[current_block_type_index].d(detaching); - if (detaching) detach(if_block_anchor); - } - }; -} - -function instance$5($$self, $$props, $$invalidate) { - let { $$slots: slots = {}, $$scope } = $$props; - - let { metadata } = $$props; - - $$self.$$set = $$props => { - if ("metadata" in $$props) $$invalidate(0, metadata = $$props.metadata); - if ("$$scope" in $$props) $$invalidate(1, $$scope = $$props.$$scope); - }; - - return [metadata, $$scope, slots]; -} - -class MetadataResolver extends SvelteComponent { - constructor(options) { - super(); - init(this, options, instance$5, create_fragment$5, not_equal, { metadata: 0 }); - } -} - -function isMacOS() { - return navigator.appVersion.indexOf("Mac") !== -1; -} -function isMetaPressed(e) { - return isMacOS() ? e.metaKey : e.ctrlKey; -} -function getDaysOfWeek(..._args) { - return window.moment.weekdaysShort(true); -} -function isWeekend(date) { - return date.isoWeekday() === 6 || date.isoWeekday() === 7; -} -function getStartOfWeek(days) { - return days[0].weekday(0); -} -/** - * Generate a 2D array of daily information to power - * the calendar view. - */ -function getMonth(displayedMonth, ..._args) { - const locale = window.moment().locale(); - const month = []; - let week; - const startOfMonth = displayedMonth.clone().locale(locale).date(1); - const startOffset = startOfMonth.weekday(); - let date = startOfMonth.clone().subtract(startOffset, "days"); - for (let _day = 0; _day < 42; _day++) { - if (_day % 7 === 0) { - week = { - days: [], - weekNum: date.week(), - }; - month.push(week); - } - week.days.push(date); - date = date.clone().add(1, "days"); - } - return month; -} - -/* src/components/Day.svelte generated by Svelte v3.35.0 */ - -function add_css$4() { - var style = element("style"); - style.id = "svelte-q3wqg9-style"; - style.textContent = ".day.svelte-q3wqg9{background-color:var(--color-background-day);border-radius:4px;color:var(--color-text-day);cursor:pointer;font-size:0.8em;height:100%;padding:4px;position:relative;text-align:center;transition:background-color 0.1s ease-in, color 0.1s ease-in;vertical-align:baseline}.day.svelte-q3wqg9:hover{background-color:var(--interactive-hover)}.day.active.svelte-q3wqg9:hover{background-color:var(--interactive-accent-hover)}.adjacent-month.svelte-q3wqg9{opacity:0.25}.today.svelte-q3wqg9{color:var(--color-text-today)}.day.svelte-q3wqg9:active,.active.svelte-q3wqg9,.active.today.svelte-q3wqg9{color:var(--text-on-accent);background-color:var(--interactive-accent)}.dot-container.svelte-q3wqg9{display:flex;flex-wrap:wrap;justify-content:center;line-height:6px;min-height:6px}"; - append(document.head, style); -} - -function get_each_context$2(ctx, list, i) { - const child_ctx = ctx.slice(); - child_ctx[11] = list[i]; - return child_ctx; -} - -// (36:8) {#each metadata.dots as dot} -function create_each_block$2(ctx) { - let dot; - let current; - const dot_spread_levels = [/*dot*/ ctx[11]]; - let dot_props = {}; - - for (let i = 0; i < dot_spread_levels.length; i += 1) { - dot_props = assign(dot_props, dot_spread_levels[i]); - } - - dot = new Dot({ props: dot_props }); - - return { - c() { - create_component(dot.$$.fragment); - }, - m(target, anchor) { - mount_component(dot, target, anchor); - current = true; - }, - p(ctx, dirty) { - const dot_changes = (dirty & /*metadata*/ 128) - ? get_spread_update(dot_spread_levels, [get_spread_object(/*dot*/ ctx[11])]) - : {}; - - dot.$set(dot_changes); - }, - i(local) { - if (current) return; - transition_in(dot.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(dot.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(dot, detaching); - } - }; -} - -// (22:2) -function create_default_slot$1(ctx) { - let div1; - let t0_value = /*date*/ ctx[0].format("D") + ""; - let t0; - let t1; - let div0; - let div1_class_value; - let current; - let mounted; - let dispose; - let each_value = /*metadata*/ ctx[7].dots; - let each_blocks = []; - - for (let i = 0; i < each_value.length; i += 1) { - each_blocks[i] = create_each_block$2(get_each_context$2(ctx, each_value, i)); - } - - const out = i => transition_out(each_blocks[i], 1, 1, () => { - each_blocks[i] = null; - }); - - let div1_levels = [ - { - class: div1_class_value = `day ${/*metadata*/ ctx[7].classes.join(" ")}` - }, - /*metadata*/ ctx[7].dataAttributes || {} - ]; - - let div1_data = {}; - - for (let i = 0; i < div1_levels.length; i += 1) { - div1_data = assign(div1_data, div1_levels[i]); - } - - return { - c() { - div1 = element("div"); - t0 = text(t0_value); - t1 = space(); - div0 = element("div"); - - for (let i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].c(); - } - - attr(div0, "class", "dot-container svelte-q3wqg9"); - set_attributes(div1, div1_data); - toggle_class(div1, "active", /*selectedId*/ ctx[6] === getDateUID_1(/*date*/ ctx[0], "day")); - toggle_class(div1, "adjacent-month", !/*date*/ ctx[0].isSame(/*displayedMonth*/ ctx[5], "month")); - toggle_class(div1, "today", /*date*/ ctx[0].isSame(/*today*/ ctx[4], "day")); - toggle_class(div1, "svelte-q3wqg9", true); - }, - m(target, anchor) { - insert(target, div1, anchor); - append(div1, t0); - append(div1, t1); - append(div1, div0); - - for (let i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].m(div0, null); - } - - current = true; - - if (!mounted) { - dispose = [ - listen(div1, "click", function () { - if (is_function(/*onClick*/ ctx[2] && /*click_handler*/ ctx[8])) (/*onClick*/ ctx[2] && /*click_handler*/ ctx[8]).apply(this, arguments); - }), - listen(div1, "contextmenu", function () { - if (is_function(/*onContextMenu*/ ctx[3] && /*contextmenu_handler*/ ctx[9])) (/*onContextMenu*/ ctx[3] && /*contextmenu_handler*/ ctx[9]).apply(this, arguments); - }), - listen(div1, "pointerover", function () { - if (is_function(/*onHover*/ ctx[1] && /*pointerover_handler*/ ctx[10])) (/*onHover*/ ctx[1] && /*pointerover_handler*/ ctx[10]).apply(this, arguments); - }) - ]; - - mounted = true; - } - }, - p(new_ctx, dirty) { - ctx = new_ctx; - if ((!current || dirty & /*date*/ 1) && t0_value !== (t0_value = /*date*/ ctx[0].format("D") + "")) set_data(t0, t0_value); - - if (dirty & /*metadata*/ 128) { - each_value = /*metadata*/ ctx[7].dots; - let i; - - for (i = 0; i < each_value.length; i += 1) { - const child_ctx = get_each_context$2(ctx, each_value, i); - - if (each_blocks[i]) { - each_blocks[i].p(child_ctx, dirty); - transition_in(each_blocks[i], 1); - } else { - each_blocks[i] = create_each_block$2(child_ctx); - each_blocks[i].c(); - transition_in(each_blocks[i], 1); - each_blocks[i].m(div0, null); - } - } - - group_outros(); - - for (i = each_value.length; i < each_blocks.length; i += 1) { - out(i); - } - - check_outros(); - } - - set_attributes(div1, div1_data = get_spread_update(div1_levels, [ - (!current || dirty & /*metadata*/ 128 && div1_class_value !== (div1_class_value = `day ${/*metadata*/ ctx[7].classes.join(" ")}`)) && { class: div1_class_value }, - dirty & /*metadata*/ 128 && (/*metadata*/ ctx[7].dataAttributes || {}) - ])); - - toggle_class(div1, "active", /*selectedId*/ ctx[6] === getDateUID_1(/*date*/ ctx[0], "day")); - toggle_class(div1, "adjacent-month", !/*date*/ ctx[0].isSame(/*displayedMonth*/ ctx[5], "month")); - toggle_class(div1, "today", /*date*/ ctx[0].isSame(/*today*/ ctx[4], "day")); - toggle_class(div1, "svelte-q3wqg9", true); - }, - i(local) { - if (current) return; - - for (let i = 0; i < each_value.length; i += 1) { - transition_in(each_blocks[i]); - } - - current = true; - }, - o(local) { - each_blocks = each_blocks.filter(Boolean); - - for (let i = 0; i < each_blocks.length; i += 1) { - transition_out(each_blocks[i]); - } - - current = false; - }, - d(detaching) { - if (detaching) detach(div1); - destroy_each(each_blocks, detaching); - mounted = false; - run_all(dispose); - } - }; -} - -function create_fragment$4(ctx) { - let td; - let metadataresolver; - let current; - - metadataresolver = new MetadataResolver({ - props: { - metadata: /*metadata*/ ctx[7], - $$slots: { - default: [ - create_default_slot$1, - ({ metadata }) => ({ 7: metadata }), - ({ metadata }) => metadata ? 128 : 0 - ] - }, - $$scope: { ctx } - } - }); - - return { - c() { - td = element("td"); - create_component(metadataresolver.$$.fragment); - }, - m(target, anchor) { - insert(target, td, anchor); - mount_component(metadataresolver, td, null); - current = true; - }, - p(ctx, [dirty]) { - const metadataresolver_changes = {}; - if (dirty & /*metadata*/ 128) metadataresolver_changes.metadata = /*metadata*/ ctx[7]; - - if (dirty & /*$$scope, metadata, selectedId, date, displayedMonth, today, onClick, onContextMenu, onHover*/ 16639) { - metadataresolver_changes.$$scope = { dirty, ctx }; - } - - metadataresolver.$set(metadataresolver_changes); - }, - i(local) { - if (current) return; - transition_in(metadataresolver.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(metadataresolver.$$.fragment, local); - current = false; - }, - d(detaching) { - if (detaching) detach(td); - destroy_component(metadataresolver); - } - }; -} - -function instance$4($$self, $$props, $$invalidate) { - - - let { date } = $$props; - let { metadata } = $$props; - let { onHover } = $$props; - let { onClick } = $$props; - let { onContextMenu } = $$props; - let { today } = $$props; - let { displayedMonth = null } = $$props; - let { selectedId = null } = $$props; - const click_handler = e => onClick(date, isMetaPressed(e)); - const contextmenu_handler = e => onContextMenu(date, e); - const pointerover_handler = e => onHover(date, e.target, isMetaPressed(e)); - - $$self.$$set = $$props => { - if ("date" in $$props) $$invalidate(0, date = $$props.date); - if ("metadata" in $$props) $$invalidate(7, metadata = $$props.metadata); - if ("onHover" in $$props) $$invalidate(1, onHover = $$props.onHover); - if ("onClick" in $$props) $$invalidate(2, onClick = $$props.onClick); - if ("onContextMenu" in $$props) $$invalidate(3, onContextMenu = $$props.onContextMenu); - if ("today" in $$props) $$invalidate(4, today = $$props.today); - if ("displayedMonth" in $$props) $$invalidate(5, displayedMonth = $$props.displayedMonth); - if ("selectedId" in $$props) $$invalidate(6, selectedId = $$props.selectedId); - }; - - return [ - date, - onHover, - onClick, - onContextMenu, - today, - displayedMonth, - selectedId, - metadata, - click_handler, - contextmenu_handler, - pointerover_handler - ]; -} - -class Day extends SvelteComponent { - constructor(options) { - super(); - if (!document.getElementById("svelte-q3wqg9-style")) add_css$4(); - - init(this, options, instance$4, create_fragment$4, not_equal, { - date: 0, - metadata: 7, - onHover: 1, - onClick: 2, - onContextMenu: 3, - today: 4, - displayedMonth: 5, - selectedId: 6 - }); - } -} - -/* src/components/Arrow.svelte generated by Svelte v3.35.0 */ - -function add_css$3() { - var style = element("style"); - style.id = "svelte-156w7na-style"; - style.textContent = ".arrow.svelte-156w7na.svelte-156w7na{align-items:center;cursor:pointer;display:flex;justify-content:center;width:24px}.arrow.is-mobile.svelte-156w7na.svelte-156w7na{width:32px}.right.svelte-156w7na.svelte-156w7na{transform:rotate(180deg)}.arrow.svelte-156w7na svg.svelte-156w7na{color:var(--color-arrow);height:16px;width:16px}"; - append(document.head, style); -} - -function create_fragment$3(ctx) { - let div; - let svg; - let path; - let mounted; - let dispose; - - return { - c() { - div = element("div"); - svg = svg_element("svg"); - path = svg_element("path"); - attr(path, "fill", "currentColor"); - attr(path, "d", "M34.52 239.03L228.87 44.69c9.37-9.37 24.57-9.37 33.94 0l22.67 22.67c9.36 9.36 9.37 24.52.04 33.9L131.49 256l154.02 154.75c9.34 9.38 9.32 24.54-.04 33.9l-22.67 22.67c-9.37 9.37-24.57 9.37-33.94 0L34.52 272.97c-9.37-9.37-9.37-24.57 0-33.94z"); - attr(svg, "focusable", "false"); - attr(svg, "role", "img"); - attr(svg, "xmlns", "http://www.w3.org/2000/svg"); - attr(svg, "viewBox", "0 0 320 512"); - attr(svg, "class", "svelte-156w7na"); - attr(div, "class", "arrow svelte-156w7na"); - attr(div, "aria-label", /*tooltip*/ ctx[1]); - toggle_class(div, "is-mobile", /*isMobile*/ ctx[3]); - toggle_class(div, "right", /*direction*/ ctx[2] === "right"); - }, - m(target, anchor) { - insert(target, div, anchor); - append(div, svg); - append(svg, path); - - if (!mounted) { - dispose = listen(div, "click", function () { - if (is_function(/*onClick*/ ctx[0])) /*onClick*/ ctx[0].apply(this, arguments); - }); - - mounted = true; - } - }, - p(new_ctx, [dirty]) { - ctx = new_ctx; - - if (dirty & /*tooltip*/ 2) { - attr(div, "aria-label", /*tooltip*/ ctx[1]); - } - - if (dirty & /*direction*/ 4) { - toggle_class(div, "right", /*direction*/ ctx[2] === "right"); - } - }, - i: noop, - o: noop, - d(detaching) { - if (detaching) detach(div); - mounted = false; - dispose(); - } - }; -} - -function instance$3($$self, $$props, $$invalidate) { - let { onClick } = $$props; - let { tooltip } = $$props; - let { direction } = $$props; - - // eslint-disable-next-line @typescript-eslint/no-explicit-any - let isMobile = window.app.isMobile; - - $$self.$$set = $$props => { - if ("onClick" in $$props) $$invalidate(0, onClick = $$props.onClick); - if ("tooltip" in $$props) $$invalidate(1, tooltip = $$props.tooltip); - if ("direction" in $$props) $$invalidate(2, direction = $$props.direction); - }; - - return [onClick, tooltip, direction, isMobile]; -} - -class Arrow extends SvelteComponent { - constructor(options) { - super(); - if (!document.getElementById("svelte-156w7na-style")) add_css$3(); - init(this, options, instance$3, create_fragment$3, safe_not_equal, { onClick: 0, tooltip: 1, direction: 2 }); - } -} - -/* src/components/Nav.svelte generated by Svelte v3.35.0 */ - -function add_css$2() { - var style = element("style"); - style.id = "svelte-1vwr9dd-style"; - style.textContent = ".nav.svelte-1vwr9dd.svelte-1vwr9dd{align-items:center;display:flex;margin:0.6em 0 1em;padding:0 8px;width:100%}.nav.is-mobile.svelte-1vwr9dd.svelte-1vwr9dd{padding:0}.title.svelte-1vwr9dd.svelte-1vwr9dd{color:var(--color-text-title);font-size:1.5em;margin:0}.is-mobile.svelte-1vwr9dd .title.svelte-1vwr9dd{font-size:1.3em}.month.svelte-1vwr9dd.svelte-1vwr9dd{font-weight:500;text-transform:capitalize}.year.svelte-1vwr9dd.svelte-1vwr9dd{color:var(--interactive-accent)}.right-nav.svelte-1vwr9dd.svelte-1vwr9dd{display:flex;justify-content:center;margin-left:auto}.reset-button.svelte-1vwr9dd.svelte-1vwr9dd{cursor:pointer;border-radius:4px;color:var(--text-muted);font-size:0.7em;font-weight:600;letter-spacing:1px;margin:0 4px;padding:0px 4px;text-transform:uppercase}.is-mobile.svelte-1vwr9dd .reset-button.svelte-1vwr9dd{display:none}"; - append(document.head, style); -} - -function create_fragment$2(ctx) { - let div2; - let h3; - let span0; - let t0_value = /*displayedMonth*/ ctx[0].format("MMM") + ""; - let t0; - let t1; - let span1; - let t2_value = /*displayedMonth*/ ctx[0].format("YYYY") + ""; - let t2; - let t3; - let div1; - let arrow0; - let t4; - let div0; - let t6; - let arrow1; - let current; - let mounted; - let dispose; - - arrow0 = new Arrow({ - props: { - direction: "left", - onClick: /*decrementDisplayedMonth*/ ctx[3], - tooltip: "Previous Month" - } - }); - - arrow1 = new Arrow({ - props: { - direction: "right", - onClick: /*incrementDisplayedMonth*/ ctx[2], - tooltip: "Next Month" - } - }); - - return { - c() { - div2 = element("div"); - h3 = element("h3"); - span0 = element("span"); - t0 = text(t0_value); - t1 = space(); - span1 = element("span"); - t2 = text(t2_value); - t3 = space(); - div1 = element("div"); - create_component(arrow0.$$.fragment); - t4 = space(); - div0 = element("div"); - div0.textContent = `${/*todayDisplayStr*/ ctx[4]}`; - t6 = space(); - create_component(arrow1.$$.fragment); - attr(span0, "class", "month svelte-1vwr9dd"); - attr(span1, "class", "year svelte-1vwr9dd"); - attr(h3, "class", "title svelte-1vwr9dd"); - attr(div0, "class", "reset-button svelte-1vwr9dd"); - attr(div1, "class", "right-nav svelte-1vwr9dd"); - attr(div2, "class", "nav svelte-1vwr9dd"); - toggle_class(div2, "is-mobile", /*isMobile*/ ctx[5]); - }, - m(target, anchor) { - insert(target, div2, anchor); - append(div2, h3); - append(h3, span0); - append(span0, t0); - append(h3, t1); - append(h3, span1); - append(span1, t2); - append(div2, t3); - append(div2, div1); - mount_component(arrow0, div1, null); - append(div1, t4); - append(div1, div0); - append(div1, t6); - mount_component(arrow1, div1, null); - current = true; - - if (!mounted) { - dispose = [ - listen(h3, "click", function () { - if (is_function(/*resetDisplayedMonth*/ ctx[1])) /*resetDisplayedMonth*/ ctx[1].apply(this, arguments); - }), - listen(div0, "click", function () { - if (is_function(/*resetDisplayedMonth*/ ctx[1])) /*resetDisplayedMonth*/ ctx[1].apply(this, arguments); - }) - ]; - - mounted = true; - } - }, - p(new_ctx, [dirty]) { - ctx = new_ctx; - if ((!current || dirty & /*displayedMonth*/ 1) && t0_value !== (t0_value = /*displayedMonth*/ ctx[0].format("MMM") + "")) set_data(t0, t0_value); - if ((!current || dirty & /*displayedMonth*/ 1) && t2_value !== (t2_value = /*displayedMonth*/ ctx[0].format("YYYY") + "")) set_data(t2, t2_value); - const arrow0_changes = {}; - if (dirty & /*decrementDisplayedMonth*/ 8) arrow0_changes.onClick = /*decrementDisplayedMonth*/ ctx[3]; - arrow0.$set(arrow0_changes); - const arrow1_changes = {}; - if (dirty & /*incrementDisplayedMonth*/ 4) arrow1_changes.onClick = /*incrementDisplayedMonth*/ ctx[2]; - arrow1.$set(arrow1_changes); - }, - i(local) { - if (current) return; - transition_in(arrow0.$$.fragment, local); - transition_in(arrow1.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(arrow0.$$.fragment, local); - transition_out(arrow1.$$.fragment, local); - current = false; - }, - d(detaching) { - if (detaching) detach(div2); - destroy_component(arrow0); - destroy_component(arrow1); - mounted = false; - run_all(dispose); - } - }; -} - -function instance$2($$self, $$props, $$invalidate) { - - let { displayedMonth } = $$props; - let { today } = $$props; - let { resetDisplayedMonth } = $$props; - let { incrementDisplayedMonth } = $$props; - let { decrementDisplayedMonth } = $$props; - - // Get the word 'Today' but localized to the current language - const todayDisplayStr = today.calendar().split(/\d|\s/)[0]; - - // eslint-disable-next-line @typescript-eslint/no-explicit-any - let isMobile = window.app.isMobile; - - $$self.$$set = $$props => { - if ("displayedMonth" in $$props) $$invalidate(0, displayedMonth = $$props.displayedMonth); - if ("today" in $$props) $$invalidate(6, today = $$props.today); - if ("resetDisplayedMonth" in $$props) $$invalidate(1, resetDisplayedMonth = $$props.resetDisplayedMonth); - if ("incrementDisplayedMonth" in $$props) $$invalidate(2, incrementDisplayedMonth = $$props.incrementDisplayedMonth); - if ("decrementDisplayedMonth" in $$props) $$invalidate(3, decrementDisplayedMonth = $$props.decrementDisplayedMonth); - }; - - return [ - displayedMonth, - resetDisplayedMonth, - incrementDisplayedMonth, - decrementDisplayedMonth, - todayDisplayStr, - isMobile, - today - ]; -} - -class Nav extends SvelteComponent { - constructor(options) { - super(); - if (!document.getElementById("svelte-1vwr9dd-style")) add_css$2(); - - init(this, options, instance$2, create_fragment$2, safe_not_equal, { - displayedMonth: 0, - today: 6, - resetDisplayedMonth: 1, - incrementDisplayedMonth: 2, - decrementDisplayedMonth: 3 - }); - } -} - -/* src/components/WeekNum.svelte generated by Svelte v3.35.0 */ - -function add_css$1() { - var style = element("style"); - style.id = "svelte-egt0yd-style"; - style.textContent = "td.svelte-egt0yd{border-right:1px solid var(--background-modifier-border)}.week-num.svelte-egt0yd{background-color:var(--color-background-weeknum);border-radius:4px;color:var(--color-text-weeknum);cursor:pointer;font-size:0.65em;height:100%;padding:4px;text-align:center;transition:background-color 0.1s ease-in, color 0.1s ease-in;vertical-align:baseline}.week-num.svelte-egt0yd:hover{background-color:var(--interactive-hover)}.week-num.active.svelte-egt0yd:hover{background-color:var(--interactive-accent-hover)}.active.svelte-egt0yd{color:var(--text-on-accent);background-color:var(--interactive-accent)}.dot-container.svelte-egt0yd{display:flex;flex-wrap:wrap;justify-content:center;line-height:6px;min-height:6px}"; - append(document.head, style); -} - -function get_each_context$1(ctx, list, i) { - const child_ctx = ctx.slice(); - child_ctx[11] = list[i]; - return child_ctx; -} - -// (35:8) {#each metadata.dots as dot} -function create_each_block$1(ctx) { - let dot; - let current; - const dot_spread_levels = [/*dot*/ ctx[11]]; - let dot_props = {}; - - for (let i = 0; i < dot_spread_levels.length; i += 1) { - dot_props = assign(dot_props, dot_spread_levels[i]); - } - - dot = new Dot({ props: dot_props }); - - return { - c() { - create_component(dot.$$.fragment); - }, - m(target, anchor) { - mount_component(dot, target, anchor); - current = true; - }, - p(ctx, dirty) { - const dot_changes = (dirty & /*metadata*/ 64) - ? get_spread_update(dot_spread_levels, [get_spread_object(/*dot*/ ctx[11])]) - : {}; - - dot.$set(dot_changes); - }, - i(local) { - if (current) return; - transition_in(dot.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(dot.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(dot, detaching); - } - }; -} - -// (24:2) -function create_default_slot(ctx) { - let div1; - let t0; - let t1; - let div0; - let div1_class_value; - let current; - let mounted; - let dispose; - let each_value = /*metadata*/ ctx[6].dots; - let each_blocks = []; - - for (let i = 0; i < each_value.length; i += 1) { - each_blocks[i] = create_each_block$1(get_each_context$1(ctx, each_value, i)); - } - - const out = i => transition_out(each_blocks[i], 1, 1, () => { - each_blocks[i] = null; - }); - - return { - c() { - div1 = element("div"); - t0 = text(/*weekNum*/ ctx[0]); - t1 = space(); - div0 = element("div"); - - for (let i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].c(); - } - - attr(div0, "class", "dot-container svelte-egt0yd"); - attr(div1, "class", div1_class_value = "" + (null_to_empty(`week-num ${/*metadata*/ ctx[6].classes.join(" ")}`) + " svelte-egt0yd")); - toggle_class(div1, "active", /*selectedId*/ ctx[5] === getDateUID_1(/*days*/ ctx[1][0], "week")); - }, - m(target, anchor) { - insert(target, div1, anchor); - append(div1, t0); - append(div1, t1); - append(div1, div0); - - for (let i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].m(div0, null); - } - - current = true; - - if (!mounted) { - dispose = [ - listen(div1, "click", function () { - if (is_function(/*onClick*/ ctx[3] && /*click_handler*/ ctx[8])) (/*onClick*/ ctx[3] && /*click_handler*/ ctx[8]).apply(this, arguments); - }), - listen(div1, "contextmenu", function () { - if (is_function(/*onContextMenu*/ ctx[4] && /*contextmenu_handler*/ ctx[9])) (/*onContextMenu*/ ctx[4] && /*contextmenu_handler*/ ctx[9]).apply(this, arguments); - }), - listen(div1, "pointerover", function () { - if (is_function(/*onHover*/ ctx[2] && /*pointerover_handler*/ ctx[10])) (/*onHover*/ ctx[2] && /*pointerover_handler*/ ctx[10]).apply(this, arguments); - }) - ]; - - mounted = true; - } - }, - p(new_ctx, dirty) { - ctx = new_ctx; - if (!current || dirty & /*weekNum*/ 1) set_data(t0, /*weekNum*/ ctx[0]); - - if (dirty & /*metadata*/ 64) { - each_value = /*metadata*/ ctx[6].dots; - let i; - - for (i = 0; i < each_value.length; i += 1) { - const child_ctx = get_each_context$1(ctx, each_value, i); - - if (each_blocks[i]) { - each_blocks[i].p(child_ctx, dirty); - transition_in(each_blocks[i], 1); - } else { - each_blocks[i] = create_each_block$1(child_ctx); - each_blocks[i].c(); - transition_in(each_blocks[i], 1); - each_blocks[i].m(div0, null); - } - } - - group_outros(); - - for (i = each_value.length; i < each_blocks.length; i += 1) { - out(i); - } - - check_outros(); - } - - if (!current || dirty & /*metadata*/ 64 && div1_class_value !== (div1_class_value = "" + (null_to_empty(`week-num ${/*metadata*/ ctx[6].classes.join(" ")}`) + " svelte-egt0yd"))) { - attr(div1, "class", div1_class_value); - } - - if (dirty & /*metadata, selectedId, getDateUID, days*/ 98) { - toggle_class(div1, "active", /*selectedId*/ ctx[5] === getDateUID_1(/*days*/ ctx[1][0], "week")); - } - }, - i(local) { - if (current) return; - - for (let i = 0; i < each_value.length; i += 1) { - transition_in(each_blocks[i]); - } - - current = true; - }, - o(local) { - each_blocks = each_blocks.filter(Boolean); - - for (let i = 0; i < each_blocks.length; i += 1) { - transition_out(each_blocks[i]); - } - - current = false; - }, - d(detaching) { - if (detaching) detach(div1); - destroy_each(each_blocks, detaching); - mounted = false; - run_all(dispose); - } - }; -} - -function create_fragment$1(ctx) { - let td; - let metadataresolver; - let current; - - metadataresolver = new MetadataResolver({ - props: { - metadata: /*metadata*/ ctx[6], - $$slots: { - default: [ - create_default_slot, - ({ metadata }) => ({ 6: metadata }), - ({ metadata }) => metadata ? 64 : 0 - ] - }, - $$scope: { ctx } - } - }); - - return { - c() { - td = element("td"); - create_component(metadataresolver.$$.fragment); - attr(td, "class", "svelte-egt0yd"); - }, - m(target, anchor) { - insert(target, td, anchor); - mount_component(metadataresolver, td, null); - current = true; - }, - p(ctx, [dirty]) { - const metadataresolver_changes = {}; - if (dirty & /*metadata*/ 64) metadataresolver_changes.metadata = /*metadata*/ ctx[6]; - - if (dirty & /*$$scope, metadata, selectedId, days, onClick, startOfWeek, onContextMenu, onHover, weekNum*/ 16639) { - metadataresolver_changes.$$scope = { dirty, ctx }; - } - - metadataresolver.$set(metadataresolver_changes); - }, - i(local) { - if (current) return; - transition_in(metadataresolver.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(metadataresolver.$$.fragment, local); - current = false; - }, - d(detaching) { - if (detaching) detach(td); - destroy_component(metadataresolver); - } - }; -} - -function instance$1($$self, $$props, $$invalidate) { - - - let { weekNum } = $$props; - let { days } = $$props; - let { metadata } = $$props; - let { onHover } = $$props; - let { onClick } = $$props; - let { onContextMenu } = $$props; - let { selectedId = null } = $$props; - let startOfWeek; - const click_handler = e => onClick(startOfWeek, isMetaPressed(e)); - const contextmenu_handler = e => onContextMenu(days[0], e); - const pointerover_handler = e => onHover(startOfWeek, e.target, isMetaPressed(e)); - - $$self.$$set = $$props => { - if ("weekNum" in $$props) $$invalidate(0, weekNum = $$props.weekNum); - if ("days" in $$props) $$invalidate(1, days = $$props.days); - if ("metadata" in $$props) $$invalidate(6, metadata = $$props.metadata); - if ("onHover" in $$props) $$invalidate(2, onHover = $$props.onHover); - if ("onClick" in $$props) $$invalidate(3, onClick = $$props.onClick); - if ("onContextMenu" in $$props) $$invalidate(4, onContextMenu = $$props.onContextMenu); - if ("selectedId" in $$props) $$invalidate(5, selectedId = $$props.selectedId); - }; - - $$self.$$.update = () => { - if ($$self.$$.dirty & /*days*/ 2) { - $$invalidate(7, startOfWeek = getStartOfWeek(days)); - } - }; - - return [ - weekNum, - days, - onHover, - onClick, - onContextMenu, - selectedId, - metadata, - startOfWeek, - click_handler, - contextmenu_handler, - pointerover_handler - ]; -} - -class WeekNum extends SvelteComponent { - constructor(options) { - super(); - if (!document.getElementById("svelte-egt0yd-style")) add_css$1(); - - init(this, options, instance$1, create_fragment$1, not_equal, { - weekNum: 0, - days: 1, - metadata: 6, - onHover: 2, - onClick: 3, - onContextMenu: 4, - selectedId: 5 - }); - } -} - -async function metadataReducer(promisedMetadata) { - const meta = { - dots: [], - classes: [], - dataAttributes: {}, - }; - const metas = await Promise.all(promisedMetadata); - return metas.reduce((acc, meta) => ({ - classes: [...acc.classes, ...(meta.classes || [])], - dataAttributes: Object.assign(acc.dataAttributes, meta.dataAttributes), - dots: [...acc.dots, ...(meta.dots || [])], - }), meta); -} -function getDailyMetadata(sources, date, ..._args) { - return metadataReducer(sources.map((source) => source.getDailyMetadata(date))); -} -function getWeeklyMetadata(sources, date, ..._args) { - return metadataReducer(sources.map((source) => source.getWeeklyMetadata(date))); -} - -/* src/components/Calendar.svelte generated by Svelte v3.35.0 */ - -function add_css() { - var style = element("style"); - style.id = "svelte-pcimu8-style"; - style.textContent = ".container.svelte-pcimu8{--color-background-heading:transparent;--color-background-day:transparent;--color-background-weeknum:transparent;--color-background-weekend:transparent;--color-dot:var(--text-muted);--color-arrow:var(--text-muted);--color-button:var(--text-muted);--color-text-title:var(--text-normal);--color-text-heading:var(--text-muted);--color-text-day:var(--text-normal);--color-text-today:var(--interactive-accent);--color-text-weeknum:var(--text-muted)}.container.svelte-pcimu8{padding:0 8px}.container.is-mobile.svelte-pcimu8{padding:0}th.svelte-pcimu8{text-align:center}.weekend.svelte-pcimu8{background-color:var(--color-background-weekend)}.calendar.svelte-pcimu8{border-collapse:collapse;width:100%}th.svelte-pcimu8{background-color:var(--color-background-heading);color:var(--color-text-heading);font-size:0.6em;letter-spacing:1px;padding:4px;text-transform:uppercase}"; - append(document.head, style); -} - -function get_each_context(ctx, list, i) { - const child_ctx = ctx.slice(); - child_ctx[18] = list[i]; - return child_ctx; -} - -function get_each_context_1(ctx, list, i) { - const child_ctx = ctx.slice(); - child_ctx[21] = list[i]; - return child_ctx; -} - -function get_each_context_2(ctx, list, i) { - const child_ctx = ctx.slice(); - child_ctx[24] = list[i]; - return child_ctx; -} - -function get_each_context_3(ctx, list, i) { - const child_ctx = ctx.slice(); - child_ctx[27] = list[i]; - return child_ctx; -} - -// (55:6) {#if showWeekNums} -function create_if_block_2(ctx) { - let col; - - return { - c() { - col = element("col"); - }, - m(target, anchor) { - insert(target, col, anchor); - }, - d(detaching) { - if (detaching) detach(col); - } - }; -} - -// (58:6) {#each month[1].days as date} -function create_each_block_3(ctx) { - let col; - - return { - c() { - col = element("col"); - attr(col, "class", "svelte-pcimu8"); - toggle_class(col, "weekend", isWeekend(/*date*/ ctx[27])); - }, - m(target, anchor) { - insert(target, col, anchor); - }, - p(ctx, dirty) { - if (dirty & /*isWeekend, month*/ 16384) { - toggle_class(col, "weekend", isWeekend(/*date*/ ctx[27])); - } - }, - d(detaching) { - if (detaching) detach(col); - } - }; -} - -// (64:8) {#if showWeekNums} -function create_if_block_1(ctx) { - let th; - - return { - c() { - th = element("th"); - th.textContent = "W"; - attr(th, "class", "svelte-pcimu8"); - }, - m(target, anchor) { - insert(target, th, anchor); - }, - d(detaching) { - if (detaching) detach(th); - } - }; -} - -// (67:8) {#each daysOfWeek as dayOfWeek} -function create_each_block_2(ctx) { - let th; - let t_value = /*dayOfWeek*/ ctx[24] + ""; - let t; - - return { - c() { - th = element("th"); - t = text(t_value); - attr(th, "class", "svelte-pcimu8"); - }, - m(target, anchor) { - insert(target, th, anchor); - append(th, t); - }, - p(ctx, dirty) { - if (dirty & /*daysOfWeek*/ 32768 && t_value !== (t_value = /*dayOfWeek*/ ctx[24] + "")) set_data(t, t_value); - }, - d(detaching) { - if (detaching) detach(th); - } - }; -} - -// (75:10) {#if showWeekNums} -function create_if_block(ctx) { - let weeknum; - let current; - - const weeknum_spread_levels = [ - /*week*/ ctx[18], - { - metadata: getWeeklyMetadata(/*sources*/ ctx[8], /*week*/ ctx[18].days[0], /*today*/ ctx[10]) - }, - { onClick: /*onClickWeek*/ ctx[7] }, - { - onContextMenu: /*onContextMenuWeek*/ ctx[5] - }, - { onHover: /*onHoverWeek*/ ctx[3] }, - { selectedId: /*selectedId*/ ctx[9] } - ]; - - let weeknum_props = {}; - - for (let i = 0; i < weeknum_spread_levels.length; i += 1) { - weeknum_props = assign(weeknum_props, weeknum_spread_levels[i]); - } - - weeknum = new WeekNum({ props: weeknum_props }); - - return { - c() { - create_component(weeknum.$$.fragment); - }, - m(target, anchor) { - mount_component(weeknum, target, anchor); - current = true; - }, - p(ctx, dirty) { - const weeknum_changes = (dirty & /*month, getWeeklyMetadata, sources, today, onClickWeek, onContextMenuWeek, onHoverWeek, selectedId*/ 18344) - ? get_spread_update(weeknum_spread_levels, [ - dirty & /*month*/ 16384 && get_spread_object(/*week*/ ctx[18]), - dirty & /*getWeeklyMetadata, sources, month, today*/ 17664 && { - metadata: getWeeklyMetadata(/*sources*/ ctx[8], /*week*/ ctx[18].days[0], /*today*/ ctx[10]) - }, - dirty & /*onClickWeek*/ 128 && { onClick: /*onClickWeek*/ ctx[7] }, - dirty & /*onContextMenuWeek*/ 32 && { - onContextMenu: /*onContextMenuWeek*/ ctx[5] - }, - dirty & /*onHoverWeek*/ 8 && { onHover: /*onHoverWeek*/ ctx[3] }, - dirty & /*selectedId*/ 512 && { selectedId: /*selectedId*/ ctx[9] } - ]) - : {}; - - weeknum.$set(weeknum_changes); - }, - i(local) { - if (current) return; - transition_in(weeknum.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(weeknum.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component(weeknum, detaching); - } - }; -} - -// (85:10) {#each week.days as day (day.format())} -function create_each_block_1(key_1, ctx) { - let first; - let day; - let current; - - day = new Day({ - props: { - date: /*day*/ ctx[21], - today: /*today*/ ctx[10], - displayedMonth: /*displayedMonth*/ ctx[0], - onClick: /*onClickDay*/ ctx[6], - onContextMenu: /*onContextMenuDay*/ ctx[4], - onHover: /*onHoverDay*/ ctx[2], - metadata: getDailyMetadata(/*sources*/ ctx[8], /*day*/ ctx[21], /*today*/ ctx[10]), - selectedId: /*selectedId*/ ctx[9] - } - }); - - return { - key: key_1, - first: null, - c() { - first = empty(); - create_component(day.$$.fragment); - this.first = first; - }, - m(target, anchor) { - insert(target, first, anchor); - mount_component(day, target, anchor); - current = true; - }, - p(new_ctx, dirty) { - ctx = new_ctx; - const day_changes = {}; - if (dirty & /*month*/ 16384) day_changes.date = /*day*/ ctx[21]; - if (dirty & /*today*/ 1024) day_changes.today = /*today*/ ctx[10]; - if (dirty & /*displayedMonth*/ 1) day_changes.displayedMonth = /*displayedMonth*/ ctx[0]; - if (dirty & /*onClickDay*/ 64) day_changes.onClick = /*onClickDay*/ ctx[6]; - if (dirty & /*onContextMenuDay*/ 16) day_changes.onContextMenu = /*onContextMenuDay*/ ctx[4]; - if (dirty & /*onHoverDay*/ 4) day_changes.onHover = /*onHoverDay*/ ctx[2]; - if (dirty & /*sources, month, today*/ 17664) day_changes.metadata = getDailyMetadata(/*sources*/ ctx[8], /*day*/ ctx[21], /*today*/ ctx[10]); - if (dirty & /*selectedId*/ 512) day_changes.selectedId = /*selectedId*/ ctx[9]; - day.$set(day_changes); - }, - i(local) { - if (current) return; - transition_in(day.$$.fragment, local); - current = true; - }, - o(local) { - transition_out(day.$$.fragment, local); - current = false; - }, - d(detaching) { - if (detaching) detach(first); - destroy_component(day, detaching); - } - }; -} - -// (73:6) {#each month as week (week.weekNum)} -function create_each_block(key_1, ctx) { - let tr; - let t0; - let each_blocks = []; - let each_1_lookup = new Map(); - let t1; - let current; - let if_block = /*showWeekNums*/ ctx[1] && create_if_block(ctx); - let each_value_1 = /*week*/ ctx[18].days; - const get_key = ctx => /*day*/ ctx[21].format(); - - for (let i = 0; i < each_value_1.length; i += 1) { - let child_ctx = get_each_context_1(ctx, each_value_1, i); - let key = get_key(child_ctx); - each_1_lookup.set(key, each_blocks[i] = create_each_block_1(key, child_ctx)); - } - - return { - key: key_1, - first: null, - c() { - tr = element("tr"); - if (if_block) if_block.c(); - t0 = space(); - - for (let i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].c(); - } - - t1 = space(); - this.first = tr; - }, - m(target, anchor) { - insert(target, tr, anchor); - if (if_block) if_block.m(tr, null); - append(tr, t0); - - for (let i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].m(tr, null); - } - - append(tr, t1); - current = true; - }, - p(new_ctx, dirty) { - ctx = new_ctx; - - if (/*showWeekNums*/ ctx[1]) { - if (if_block) { - if_block.p(ctx, dirty); - - if (dirty & /*showWeekNums*/ 2) { - transition_in(if_block, 1); - } - } else { - if_block = create_if_block(ctx); - if_block.c(); - transition_in(if_block, 1); - if_block.m(tr, t0); - } - } else if (if_block) { - group_outros(); - - transition_out(if_block, 1, 1, () => { - if_block = null; - }); - - check_outros(); - } - - if (dirty & /*month, today, displayedMonth, onClickDay, onContextMenuDay, onHoverDay, getDailyMetadata, sources, selectedId*/ 18261) { - each_value_1 = /*week*/ ctx[18].days; - group_outros(); - each_blocks = update_keyed_each(each_blocks, dirty, get_key, 1, ctx, each_value_1, each_1_lookup, tr, outro_and_destroy_block, create_each_block_1, t1, get_each_context_1); - check_outros(); - } - }, - i(local) { - if (current) return; - transition_in(if_block); - - for (let i = 0; i < each_value_1.length; i += 1) { - transition_in(each_blocks[i]); - } - - current = true; - }, - o(local) { - transition_out(if_block); - - for (let i = 0; i < each_blocks.length; i += 1) { - transition_out(each_blocks[i]); - } - - current = false; - }, - d(detaching) { - if (detaching) detach(tr); - if (if_block) if_block.d(); - - for (let i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].d(); - } - } - }; -} - -function create_fragment$7(ctx) { - let div; - let nav; - let t0; - let table; - let colgroup; - let t1; - let t2; - let thead; - let tr; - let t3; - let t4; - let tbody; - let each_blocks = []; - let each2_lookup = new Map(); - let current; - - nav = new Nav({ - props: { - today: /*today*/ ctx[10], - displayedMonth: /*displayedMonth*/ ctx[0], - incrementDisplayedMonth: /*incrementDisplayedMonth*/ ctx[11], - decrementDisplayedMonth: /*decrementDisplayedMonth*/ ctx[12], - resetDisplayedMonth: /*resetDisplayedMonth*/ ctx[13] - } - }); - - let if_block0 = /*showWeekNums*/ ctx[1] && create_if_block_2(); - let each_value_3 = /*month*/ ctx[14][1].days; - let each_blocks_2 = []; - - for (let i = 0; i < each_value_3.length; i += 1) { - each_blocks_2[i] = create_each_block_3(get_each_context_3(ctx, each_value_3, i)); - } - - let if_block1 = /*showWeekNums*/ ctx[1] && create_if_block_1(); - let each_value_2 = /*daysOfWeek*/ ctx[15]; - let each_blocks_1 = []; - - for (let i = 0; i < each_value_2.length; i += 1) { - each_blocks_1[i] = create_each_block_2(get_each_context_2(ctx, each_value_2, i)); - } - - let each_value = /*month*/ ctx[14]; - const get_key = ctx => /*week*/ ctx[18].weekNum; - - for (let i = 0; i < each_value.length; i += 1) { - let child_ctx = get_each_context(ctx, each_value, i); - let key = get_key(child_ctx); - each2_lookup.set(key, each_blocks[i] = create_each_block(key, child_ctx)); - } - - return { - c() { - div = element("div"); - create_component(nav.$$.fragment); - t0 = space(); - table = element("table"); - colgroup = element("colgroup"); - if (if_block0) if_block0.c(); - t1 = space(); - - for (let i = 0; i < each_blocks_2.length; i += 1) { - each_blocks_2[i].c(); - } - - t2 = space(); - thead = element("thead"); - tr = element("tr"); - if (if_block1) if_block1.c(); - t3 = space(); - - for (let i = 0; i < each_blocks_1.length; i += 1) { - each_blocks_1[i].c(); - } - - t4 = space(); - tbody = element("tbody"); - - for (let i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].c(); - } - - attr(table, "class", "calendar svelte-pcimu8"); - attr(div, "id", "calendar-container"); - attr(div, "class", "container svelte-pcimu8"); - toggle_class(div, "is-mobile", /*isMobile*/ ctx[16]); - }, - m(target, anchor) { - insert(target, div, anchor); - mount_component(nav, div, null); - append(div, t0); - append(div, table); - append(table, colgroup); - if (if_block0) if_block0.m(colgroup, null); - append(colgroup, t1); - - for (let i = 0; i < each_blocks_2.length; i += 1) { - each_blocks_2[i].m(colgroup, null); - } - - append(table, t2); - append(table, thead); - append(thead, tr); - if (if_block1) if_block1.m(tr, null); - append(tr, t3); - - for (let i = 0; i < each_blocks_1.length; i += 1) { - each_blocks_1[i].m(tr, null); - } - - append(table, t4); - append(table, tbody); - - for (let i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].m(tbody, null); - } - - current = true; - }, - p(ctx, [dirty]) { - const nav_changes = {}; - if (dirty & /*today*/ 1024) nav_changes.today = /*today*/ ctx[10]; - if (dirty & /*displayedMonth*/ 1) nav_changes.displayedMonth = /*displayedMonth*/ ctx[0]; - nav.$set(nav_changes); - - if (/*showWeekNums*/ ctx[1]) { - if (if_block0) ; else { - if_block0 = create_if_block_2(); - if_block0.c(); - if_block0.m(colgroup, t1); - } - } else if (if_block0) { - if_block0.d(1); - if_block0 = null; - } - - if (dirty & /*isWeekend, month*/ 16384) { - each_value_3 = /*month*/ ctx[14][1].days; - let i; - - for (i = 0; i < each_value_3.length; i += 1) { - const child_ctx = get_each_context_3(ctx, each_value_3, i); - - if (each_blocks_2[i]) { - each_blocks_2[i].p(child_ctx, dirty); - } else { - each_blocks_2[i] = create_each_block_3(child_ctx); - each_blocks_2[i].c(); - each_blocks_2[i].m(colgroup, null); - } - } - - for (; i < each_blocks_2.length; i += 1) { - each_blocks_2[i].d(1); - } - - each_blocks_2.length = each_value_3.length; - } - - if (/*showWeekNums*/ ctx[1]) { - if (if_block1) ; else { - if_block1 = create_if_block_1(); - if_block1.c(); - if_block1.m(tr, t3); - } - } else if (if_block1) { - if_block1.d(1); - if_block1 = null; - } - - if (dirty & /*daysOfWeek*/ 32768) { - each_value_2 = /*daysOfWeek*/ ctx[15]; - let i; - - for (i = 0; i < each_value_2.length; i += 1) { - const child_ctx = get_each_context_2(ctx, each_value_2, i); - - if (each_blocks_1[i]) { - each_blocks_1[i].p(child_ctx, dirty); - } else { - each_blocks_1[i] = create_each_block_2(child_ctx); - each_blocks_1[i].c(); - each_blocks_1[i].m(tr, null); - } - } - - for (; i < each_blocks_1.length; i += 1) { - each_blocks_1[i].d(1); - } - - each_blocks_1.length = each_value_2.length; - } - - if (dirty & /*month, today, displayedMonth, onClickDay, onContextMenuDay, onHoverDay, getDailyMetadata, sources, selectedId, getWeeklyMetadata, onClickWeek, onContextMenuWeek, onHoverWeek, showWeekNums*/ 18431) { - each_value = /*month*/ ctx[14]; - group_outros(); - each_blocks = update_keyed_each(each_blocks, dirty, get_key, 1, ctx, each_value, each2_lookup, tbody, outro_and_destroy_block, create_each_block, null, get_each_context); - check_outros(); - } - }, - i(local) { - if (current) return; - transition_in(nav.$$.fragment, local); - - for (let i = 0; i < each_value.length; i += 1) { - transition_in(each_blocks[i]); - } - - current = true; - }, - o(local) { - transition_out(nav.$$.fragment, local); - - for (let i = 0; i < each_blocks.length; i += 1) { - transition_out(each_blocks[i]); - } - - current = false; - }, - d(detaching) { - if (detaching) detach(div); - destroy_component(nav); - if (if_block0) if_block0.d(); - destroy_each(each_blocks_2, detaching); - if (if_block1) if_block1.d(); - destroy_each(each_blocks_1, detaching); - - for (let i = 0; i < each_blocks.length; i += 1) { - each_blocks[i].d(); - } - } - }; -} - -function instance$7($$self, $$props, $$invalidate) { - - - let { localeData } = $$props; - let { showWeekNums = false } = $$props; - let { onHoverDay } = $$props; - let { onHoverWeek } = $$props; - let { onContextMenuDay } = $$props; - let { onContextMenuWeek } = $$props; - let { onClickDay } = $$props; - let { onClickWeek } = $$props; - let { sources = [] } = $$props; - let { selectedId } = $$props; - let { today = window.moment() } = $$props; - let { displayedMonth = today } = $$props; - let month; - let daysOfWeek; - - // eslint-disable-next-line @typescript-eslint/no-explicit-any - let isMobile = window.app.isMobile; - - function incrementDisplayedMonth() { - $$invalidate(0, displayedMonth = displayedMonth.clone().add(1, "month")); - } - - function decrementDisplayedMonth() { - $$invalidate(0, displayedMonth = displayedMonth.clone().subtract(1, "month")); - } - - function resetDisplayedMonth() { - $$invalidate(0, displayedMonth = today.clone()); - } - - $$self.$$set = $$props => { - if ("localeData" in $$props) $$invalidate(17, localeData = $$props.localeData); - if ("showWeekNums" in $$props) $$invalidate(1, showWeekNums = $$props.showWeekNums); - if ("onHoverDay" in $$props) $$invalidate(2, onHoverDay = $$props.onHoverDay); - if ("onHoverWeek" in $$props) $$invalidate(3, onHoverWeek = $$props.onHoverWeek); - if ("onContextMenuDay" in $$props) $$invalidate(4, onContextMenuDay = $$props.onContextMenuDay); - if ("onContextMenuWeek" in $$props) $$invalidate(5, onContextMenuWeek = $$props.onContextMenuWeek); - if ("onClickDay" in $$props) $$invalidate(6, onClickDay = $$props.onClickDay); - if ("onClickWeek" in $$props) $$invalidate(7, onClickWeek = $$props.onClickWeek); - if ("sources" in $$props) $$invalidate(8, sources = $$props.sources); - if ("selectedId" in $$props) $$invalidate(9, selectedId = $$props.selectedId); - if ("today" in $$props) $$invalidate(10, today = $$props.today); - if ("displayedMonth" in $$props) $$invalidate(0, displayedMonth = $$props.displayedMonth); - }; - - $$self.$$.update = () => { - if ($$self.$$.dirty & /*displayedMonth, localeData*/ 131073) { - $$invalidate(14, month = getMonth(displayedMonth, localeData)); - } - - if ($$self.$$.dirty & /*today, localeData*/ 132096) { - $$invalidate(15, daysOfWeek = getDaysOfWeek(today, localeData)); - } - }; - - return [ - displayedMonth, - showWeekNums, - onHoverDay, - onHoverWeek, - onContextMenuDay, - onContextMenuWeek, - onClickDay, - onClickWeek, - sources, - selectedId, - today, - incrementDisplayedMonth, - decrementDisplayedMonth, - resetDisplayedMonth, - month, - daysOfWeek, - isMobile, - localeData - ]; -} - -class Calendar$1 extends SvelteComponent { - constructor(options) { - super(); - if (!document.getElementById("svelte-pcimu8-style")) add_css(); - - init(this, options, instance$7, create_fragment$7, not_equal, { - localeData: 17, - showWeekNums: 1, - onHoverDay: 2, - onHoverWeek: 3, - onContextMenuDay: 4, - onContextMenuWeek: 5, - onClickDay: 6, - onClickWeek: 7, - sources: 8, - selectedId: 9, - today: 10, - displayedMonth: 0, - incrementDisplayedMonth: 11, - decrementDisplayedMonth: 12, - resetDisplayedMonth: 13 - }); - } - - get incrementDisplayedMonth() { - return this.$$.ctx[11]; - } - - get decrementDisplayedMonth() { - return this.$$.ctx[12]; - } - - get resetDisplayedMonth() { - return this.$$.ctx[13]; - } -} - -const langToMomentLocale = { - en: "en-gb", - zh: "zh-cn", - "zh-TW": "zh-tw", - ru: "ru", - ko: "ko", - it: "it", - id: "id", - ro: "ro", - "pt-BR": "pt-br", - cz: "cs", - da: "da", - de: "de", - es: "es", - fr: "fr", - no: "nn", - pl: "pl", - pt: "pt", - tr: "tr", - hi: "hi", - nl: "nl", - ar: "ar", - ja: "ja", -}; -const weekdays = [ - "sunday", - "monday", - "tuesday", - "wednesday", - "thursday", - "friday", - "saturday", -]; -function overrideGlobalMomentWeekStart(weekStart) { - const { moment } = window; - const currentLocale = moment.locale(); - // Save the initial locale weekspec so that we can restore - // it when toggling between the different options in settings. - if (!window._bundledLocaleWeekSpec) { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - window._bundledLocaleWeekSpec = moment.localeData()._week; - } - if (weekStart === "locale") { - moment.updateLocale(currentLocale, { - week: window._bundledLocaleWeekSpec, - }); - } - else { - moment.updateLocale(currentLocale, { - week: { - dow: weekdays.indexOf(weekStart) || 0, - }, - }); - } -} -/** - * Sets the locale used by the calendar. This allows the calendar to - * default to the user's locale (e.g. Start Week on Sunday/Monday/Friday) - * - * @param localeOverride locale string (e.g. "en-US") - */ -function configureGlobalMomentLocale(localeOverride = "system-default", weekStart = "locale") { - var _a; - const obsidianLang = localStorage.getItem("language") || "en"; - const systemLang = (_a = navigator.language) === null || _a === void 0 ? void 0 : _a.toLowerCase(); - let momentLocale = langToMomentLocale[obsidianLang]; - if (localeOverride !== "system-default") { - momentLocale = localeOverride; - } - else if (systemLang.startsWith(obsidianLang)) { - // If the system locale is more specific (en-gb vs en), use the system locale. - momentLocale = systemLang; - } - const currentLocale = window.moment.locale(momentLocale); - console.debug(`[Calendar] Trying to switch Moment.js global locale to ${momentLocale}, got ${currentLocale}`); - overrideGlobalMomentWeekStart(weekStart); - return currentLocale; -} - -/* src/ui/Calendar.svelte generated by Svelte v3.35.0 */ - -function create_fragment(ctx) { - let calendarbase; - let updating_displayedMonth; - let current; - - function calendarbase_displayedMonth_binding(value) { - /*calendarbase_displayedMonth_binding*/ ctx[12](value); - } - - let calendarbase_props = { - sources: /*sources*/ ctx[1], - today: /*today*/ ctx[9], - onHoverDay: /*onHoverDay*/ ctx[2], - onHoverWeek: /*onHoverWeek*/ ctx[3], - onContextMenuDay: /*onContextMenuDay*/ ctx[6], - onContextMenuWeek: /*onContextMenuWeek*/ ctx[7], - onClickDay: /*onClickDay*/ ctx[4], - onClickWeek: /*onClickWeek*/ ctx[5], - localeData: /*today*/ ctx[9].localeData(), - selectedId: /*$activeFile*/ ctx[10], - showWeekNums: /*$settings*/ ctx[8].showWeeklyNote - }; - - if (/*displayedMonth*/ ctx[0] !== void 0) { - calendarbase_props.displayedMonth = /*displayedMonth*/ ctx[0]; - } - - calendarbase = new Calendar$1({ props: calendarbase_props }); - binding_callbacks$1.push(() => bind(calendarbase, "displayedMonth", calendarbase_displayedMonth_binding)); - - return { - c() { - create_component$1(calendarbase.$$.fragment); - }, - m(target, anchor) { - mount_component$1(calendarbase, target, anchor); - current = true; - }, - p(ctx, [dirty]) { - const calendarbase_changes = {}; - if (dirty & /*sources*/ 2) calendarbase_changes.sources = /*sources*/ ctx[1]; - if (dirty & /*today*/ 512) calendarbase_changes.today = /*today*/ ctx[9]; - if (dirty & /*onHoverDay*/ 4) calendarbase_changes.onHoverDay = /*onHoverDay*/ ctx[2]; - if (dirty & /*onHoverWeek*/ 8) calendarbase_changes.onHoverWeek = /*onHoverWeek*/ ctx[3]; - if (dirty & /*onContextMenuDay*/ 64) calendarbase_changes.onContextMenuDay = /*onContextMenuDay*/ ctx[6]; - if (dirty & /*onContextMenuWeek*/ 128) calendarbase_changes.onContextMenuWeek = /*onContextMenuWeek*/ ctx[7]; - if (dirty & /*onClickDay*/ 16) calendarbase_changes.onClickDay = /*onClickDay*/ ctx[4]; - if (dirty & /*onClickWeek*/ 32) calendarbase_changes.onClickWeek = /*onClickWeek*/ ctx[5]; - if (dirty & /*today*/ 512) calendarbase_changes.localeData = /*today*/ ctx[9].localeData(); - if (dirty & /*$activeFile*/ 1024) calendarbase_changes.selectedId = /*$activeFile*/ ctx[10]; - if (dirty & /*$settings*/ 256) calendarbase_changes.showWeekNums = /*$settings*/ ctx[8].showWeeklyNote; - - if (!updating_displayedMonth && dirty & /*displayedMonth*/ 1) { - updating_displayedMonth = true; - calendarbase_changes.displayedMonth = /*displayedMonth*/ ctx[0]; - add_flush_callback(() => updating_displayedMonth = false); - } - - calendarbase.$set(calendarbase_changes); - }, - i(local) { - if (current) return; - transition_in$1(calendarbase.$$.fragment, local); - current = true; - }, - o(local) { - transition_out$1(calendarbase.$$.fragment, local); - current = false; - }, - d(detaching) { - destroy_component$1(calendarbase, detaching); - } - }; -} - -function instance($$self, $$props, $$invalidate) { - let $settings; - let $activeFile; - component_subscribe($$self, settings, $$value => $$invalidate(8, $settings = $$value)); - component_subscribe($$self, activeFile, $$value => $$invalidate(10, $activeFile = $$value)); - - - let today; - let { displayedMonth = today } = $$props; - let { sources } = $$props; - let { onHoverDay } = $$props; - let { onHoverWeek } = $$props; - let { onClickDay } = $$props; - let { onClickWeek } = $$props; - let { onContextMenuDay } = $$props; - let { onContextMenuWeek } = $$props; - - function tick() { - $$invalidate(9, today = window.moment()); - } - - function getToday(settings) { - configureGlobalMomentLocale(settings.localeOverride, settings.weekStart); - dailyNotes.reindex(); - weeklyNotes.reindex(); - return window.moment(); - } - - // 1 minute heartbeat to keep `today` reflecting the current day - let heartbeat = setInterval( - () => { - tick(); - const isViewingCurrentMonth = displayedMonth.isSame(today, "day"); - - if (isViewingCurrentMonth) { - // if it's midnight on the last day of the month, this will - // update the display to show the new month. - $$invalidate(0, displayedMonth = today); - } - }, - 1000 * 60 - ); - - onDestroy(() => { - clearInterval(heartbeat); - }); - - function calendarbase_displayedMonth_binding(value) { - displayedMonth = value; - $$invalidate(0, displayedMonth); - } - - $$self.$$set = $$props => { - if ("displayedMonth" in $$props) $$invalidate(0, displayedMonth = $$props.displayedMonth); - if ("sources" in $$props) $$invalidate(1, sources = $$props.sources); - if ("onHoverDay" in $$props) $$invalidate(2, onHoverDay = $$props.onHoverDay); - if ("onHoverWeek" in $$props) $$invalidate(3, onHoverWeek = $$props.onHoverWeek); - if ("onClickDay" in $$props) $$invalidate(4, onClickDay = $$props.onClickDay); - if ("onClickWeek" in $$props) $$invalidate(5, onClickWeek = $$props.onClickWeek); - if ("onContextMenuDay" in $$props) $$invalidate(6, onContextMenuDay = $$props.onContextMenuDay); - if ("onContextMenuWeek" in $$props) $$invalidate(7, onContextMenuWeek = $$props.onContextMenuWeek); - }; - - $$self.$$.update = () => { - if ($$self.$$.dirty & /*$settings*/ 256) { - $$invalidate(9, today = getToday($settings)); - } - }; - - return [ - displayedMonth, - sources, - onHoverDay, - onHoverWeek, - onClickDay, - onClickWeek, - onContextMenuDay, - onContextMenuWeek, - $settings, - today, - $activeFile, - tick, - calendarbase_displayedMonth_binding - ]; -} - -class Calendar extends SvelteComponent$1 { - constructor(options) { - super(); - - init$1(this, options, instance, create_fragment, not_equal$1, { - displayedMonth: 0, - sources: 1, - onHoverDay: 2, - onHoverWeek: 3, - onClickDay: 4, - onClickWeek: 5, - onContextMenuDay: 6, - onContextMenuWeek: 7, - tick: 11 - }); - } - - get tick() { - return this.$$.ctx[11]; - } -} - -function showFileMenu(app, file, position) { - const fileMenu = new obsidian.Menu(app); - fileMenu.addItem((item) => item - .setTitle("Delete") - .setIcon("trash") - .onClick(() => { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - app.fileManager.promptForFileDeletion(file); - })); - app.workspace.trigger("file-menu", fileMenu, file, "calendar-context-menu", null); - fileMenu.showAtPosition(position); -} - -const getStreakClasses = (file) => { - return classList({ - "has-note": !!file, - }); -}; -const streakSource = { - getDailyMetadata: async (date) => { - const file = getDailyNote_1(date, get_store_value(dailyNotes)); - return { - classes: getStreakClasses(file), - dots: [], - }; - }, - getWeeklyMetadata: async (date) => { - const file = getWeeklyNote_1(date, get_store_value(weeklyNotes)); - return { - classes: getStreakClasses(file), - dots: [], - }; - }, -}; - -function getNoteTags(note) { - var _a; - if (!note) { - return []; - } - const { metadataCache } = window.app; - const frontmatter = (_a = metadataCache.getFileCache(note)) === null || _a === void 0 ? void 0 : _a.frontmatter; - const tags = []; - if (frontmatter) { - const frontmatterTags = obsidian.parseFrontMatterTags(frontmatter) || []; - tags.push(...frontmatterTags); - } - // strip the '#' at the beginning - return tags.map((tag) => tag.substring(1)); -} -function getFormattedTagAttributes(note) { - const attrs = {}; - const tags = getNoteTags(note); - const [emojiTags, nonEmojiTags] = partition(tags, (tag) => /(?:[\u2700-\u27bf]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff]|[\u0023-\u0039]\ufe0f?\u20e3|\u3299|\u3297|\u303d|\u3030|\u24c2|\ud83c[\udd70-\udd71]|\ud83c[\udd7e-\udd7f]|\ud83c\udd8e|\ud83c[\udd91-\udd9a]|\ud83c[\udde6-\uddff]|\ud83c[\ude01-\ude02]|\ud83c\ude1a|\ud83c\ude2f|\ud83c[\ude32-\ude3a]|\ud83c[\ude50-\ude51]|\u203c|\u2049|[\u25aa-\u25ab]|\u25b6|\u25c0|[\u25fb-\u25fe]|\u00a9|\u00ae|\u2122|\u2139|\ud83c\udc04|[\u2600-\u26FF]|\u2b05|\u2b06|\u2b07|\u2b1b|\u2b1c|\u2b50|\u2b55|\u231a|\u231b|\u2328|\u23cf|[\u23e9-\u23f3]|[\u23f8-\u23fa]|\ud83c\udccf|\u2934|\u2935|[\u2190-\u21ff])/.test(tag)); - if (nonEmojiTags) { - attrs["data-tags"] = nonEmojiTags.join(" "); - } - if (emojiTags) { - attrs["data-emoji-tag"] = emojiTags[0]; - } - return attrs; -} -const customTagsSource = { - getDailyMetadata: async (date) => { - const file = getDailyNote_1(date, get_store_value(dailyNotes)); - return { - dataAttributes: getFormattedTagAttributes(file), - dots: [], - }; - }, - getWeeklyMetadata: async (date) => { - const file = getWeeklyNote_1(date, get_store_value(weeklyNotes)); - return { - dataAttributes: getFormattedTagAttributes(file), - dots: [], - }; - }, -}; - -async function getNumberOfRemainingTasks(note) { - if (!note) { - return 0; - } - const { vault } = window.app; - const fileContents = await vault.cachedRead(note); - return (fileContents.match(/(-|\*) \[ \]/g) || []).length; -} -async function getDotsForDailyNote$1(dailyNote) { - if (!dailyNote) { - return []; - } - const numTasks = await getNumberOfRemainingTasks(dailyNote); - const dots = []; - if (numTasks) { - dots.push({ - className: "task", - color: "default", - isFilled: false, - }); - } - return dots; -} -const tasksSource = { - getDailyMetadata: async (date) => { - const file = getDailyNote_1(date, get_store_value(dailyNotes)); - const dots = await getDotsForDailyNote$1(file); - return { - dots, - }; - }, - getWeeklyMetadata: async (date) => { - const file = getWeeklyNote_1(date, get_store_value(weeklyNotes)); - const dots = await getDotsForDailyNote$1(file); - return { - dots, - }; - }, -}; - -const NUM_MAX_DOTS = 5; -async function getWordLengthAsDots(note) { - const { wordsPerDot = DEFAULT_WORDS_PER_DOT } = get_store_value(settings); - if (!note || wordsPerDot <= 0) { - return 0; - } - const fileContents = await window.app.vault.cachedRead(note); - const wordCount = getWordCount(fileContents); - const numDots = wordCount / wordsPerDot; - return clamp(Math.floor(numDots), 1, NUM_MAX_DOTS); -} -async function getDotsForDailyNote(dailyNote) { - if (!dailyNote) { - return []; - } - const numSolidDots = await getWordLengthAsDots(dailyNote); - const dots = []; - for (let i = 0; i < numSolidDots; i++) { - dots.push({ - color: "default", - isFilled: true, - }); - } - return dots; -} -const wordCountSource = { - getDailyMetadata: async (date) => { - const file = getDailyNote_1(date, get_store_value(dailyNotes)); - const dots = await getDotsForDailyNote(file); - return { - dots, - }; - }, - getWeeklyMetadata: async (date) => { - const file = getWeeklyNote_1(date, get_store_value(weeklyNotes)); - const dots = await getDotsForDailyNote(file); - return { - dots, - }; - }, -}; - -class CalendarView extends obsidian.ItemView { - constructor(leaf) { - super(leaf); - this.openOrCreateDailyNote = this.openOrCreateDailyNote.bind(this); - this.openOrCreateWeeklyNote = this.openOrCreateWeeklyNote.bind(this); - this.onNoteSettingsUpdate = this.onNoteSettingsUpdate.bind(this); - this.onFileCreated = this.onFileCreated.bind(this); - this.onFileDeleted = this.onFileDeleted.bind(this); - this.onFileModified = this.onFileModified.bind(this); - this.onFileOpen = this.onFileOpen.bind(this); - this.onHoverDay = this.onHoverDay.bind(this); - this.onHoverWeek = this.onHoverWeek.bind(this); - this.onContextMenuDay = this.onContextMenuDay.bind(this); - this.onContextMenuWeek = this.onContextMenuWeek.bind(this); - this.registerEvent( - // eslint-disable-next-line @typescript-eslint/no-explicit-any - this.app.workspace.on("periodic-notes:settings-updated", this.onNoteSettingsUpdate)); - this.registerEvent(this.app.vault.on("create", this.onFileCreated)); - this.registerEvent(this.app.vault.on("delete", this.onFileDeleted)); - this.registerEvent(this.app.vault.on("modify", this.onFileModified)); - this.registerEvent(this.app.workspace.on("file-open", this.onFileOpen)); - this.settings = null; - settings.subscribe((val) => { - this.settings = val; - // Refresh the calendar if settings change - if (this.calendar) { - this.calendar.tick(); - } - }); - } - getViewType() { - return VIEW_TYPE_CALENDAR; - } - getDisplayText() { - return "Calendar"; - } - getIcon() { - return "calendar-with-checkmark"; - } - onClose() { - if (this.calendar) { - this.calendar.$destroy(); - } - return Promise.resolve(); - } - async onOpen() { - // Integration point: external plugins can listen for `calendar:open` - // to feed in additional sources. - const sources = [ - customTagsSource, - streakSource, - wordCountSource, - tasksSource, - ]; - this.app.workspace.trigger(TRIGGER_ON_OPEN, sources); - this.calendar = new Calendar({ - // eslint-disable-next-line @typescript-eslint/no-explicit-any - target: this.contentEl, - props: { - onClickDay: this.openOrCreateDailyNote, - onClickWeek: this.openOrCreateWeeklyNote, - onHoverDay: this.onHoverDay, - onHoverWeek: this.onHoverWeek, - onContextMenuDay: this.onContextMenuDay, - onContextMenuWeek: this.onContextMenuWeek, - sources, - }, - }); - } - onHoverDay(date, targetEl, isMetaPressed) { - if (!isMetaPressed) { - return; - } - const { format } = getDailyNoteSettings_1(); - const note = getDailyNote_1(date, get_store_value(dailyNotes)); - this.app.workspace.trigger("link-hover", this, targetEl, date.format(format), note === null || note === void 0 ? void 0 : note.path); - } - onHoverWeek(date, targetEl, isMetaPressed) { - if (!isMetaPressed) { - return; - } - const note = getWeeklyNote_1(date, get_store_value(weeklyNotes)); - const { format } = getWeeklyNoteSettings_1(); - this.app.workspace.trigger("link-hover", this, targetEl, date.format(format), note === null || note === void 0 ? void 0 : note.path); - } - onContextMenuDay(date, event) { - const note = getDailyNote_1(date, get_store_value(dailyNotes)); - if (!note) { - // If no file exists for a given day, show nothing. - return; - } - showFileMenu(this.app, note, { - x: event.pageX, - y: event.pageY, - }); - } - onContextMenuWeek(date, event) { - const note = getWeeklyNote_1(date, get_store_value(weeklyNotes)); - if (!note) { - // If no file exists for a given day, show nothing. - return; - } - showFileMenu(this.app, note, { - x: event.pageX, - y: event.pageY, - }); - } - onNoteSettingsUpdate() { - dailyNotes.reindex(); - weeklyNotes.reindex(); - this.updateActiveFile(); - } - async onFileDeleted(file) { - if (getDateFromFile_1(file, "day")) { - dailyNotes.reindex(); - this.updateActiveFile(); - } - if (getDateFromFile_1(file, "week")) { - weeklyNotes.reindex(); - this.updateActiveFile(); - } - } - async onFileModified(file) { - const date = getDateFromFile_1(file, "day") || getDateFromFile_1(file, "week"); - if (date && this.calendar) { - this.calendar.tick(); - } - } - onFileCreated(file) { - if (this.app.workspace.layoutReady && this.calendar) { - if (getDateFromFile_1(file, "day")) { - dailyNotes.reindex(); - this.calendar.tick(); - } - if (getDateFromFile_1(file, "week")) { - weeklyNotes.reindex(); - this.calendar.tick(); - } - } - } - onFileOpen(_file) { - if (this.app.workspace.layoutReady) { - this.updateActiveFile(); - } - } - updateActiveFile() { - const { view } = this.app.workspace.activeLeaf; - let file = null; - if (view instanceof obsidian.FileView) { - file = view.file; - } - activeFile.setFile(file); - if (this.calendar) { - this.calendar.tick(); - } - } - revealActiveNote() { - const { moment } = window; - const { activeLeaf } = this.app.workspace; - if (activeLeaf.view instanceof obsidian.FileView) { - // Check to see if the active note is a daily-note - let date = getDateFromFile_1(activeLeaf.view.file, "day"); - if (date) { - this.calendar.$set({ displayedMonth: date }); - return; - } - // Check to see if the active note is a weekly-note - const { format } = getWeeklyNoteSettings_1(); - date = moment(activeLeaf.view.file.basename, format, true); - if (date.isValid()) { - this.calendar.$set({ displayedMonth: date }); - return; - } - } - } - async openOrCreateWeeklyNote(date, inNewSplit) { - const { workspace } = this.app; - const startOfWeek = date.clone().startOf("week"); - const existingFile = getWeeklyNote_1(date, get_store_value(weeklyNotes)); - if (!existingFile) { - // File doesn't exist - tryToCreateWeeklyNote(startOfWeek, inNewSplit, this.settings, (file) => { - activeFile.setFile(file); - }); - return; - } - const leaf = inNewSplit - ? workspace.splitActiveLeaf() - : workspace.getUnpinnedLeaf(); - await leaf.openFile(existingFile); - activeFile.setFile(existingFile); - } - async openOrCreateDailyNote(date, inNewSplit) { - const { workspace } = this.app; - const existingFile = getDailyNote_1(date, get_store_value(dailyNotes)); - if (!existingFile) { - // File doesn't exist - tryToCreateDailyNote(date, inNewSplit, this.settings, (dailyNote) => { - activeFile.setFile(dailyNote); - }); - return; - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const mode = this.app.vault.getConfig("defaultViewMode"); - const leaf = inNewSplit - ? workspace.splitActiveLeaf() - : workspace.getUnpinnedLeaf(); - await leaf.openFile(existingFile, { mode }); - activeFile.setFile(existingFile); - } -} - -class CalendarPlugin extends obsidian.Plugin { - onunload() { - this.app.workspace - .getLeavesOfType(VIEW_TYPE_CALENDAR) - .forEach((leaf) => leaf.detach()); - } - async onload() { - this.register(settings.subscribe((value) => { - this.options = value; - })); - this.registerView(VIEW_TYPE_CALENDAR, (leaf) => (this.view = new CalendarView(leaf))); - this.addCommand({ - id: "show-calendar-view", - name: "Open view", - checkCallback: (checking) => { - if (checking) { - return (this.app.workspace.getLeavesOfType(VIEW_TYPE_CALENDAR).length === 0); - } - this.initLeaf(); - }, - }); - this.addCommand({ - id: "open-weekly-note", - name: "Open Weekly Note", - checkCallback: (checking) => { - if (checking) { - return !appHasPeriodicNotesPluginLoaded(); - } - this.view.openOrCreateWeeklyNote(window.moment(), false); - }, - }); - this.addCommand({ - id: "reveal-active-note", - name: "Reveal active note", - callback: () => this.view.revealActiveNote(), - }); - await this.loadOptions(); - this.addSettingTab(new CalendarSettingsTab(this.app, this)); - if (this.app.workspace.layoutReady) { - this.initLeaf(); - } - else { - this.registerEvent(this.app.workspace.on("layout-ready", this.initLeaf.bind(this))); - } - } - initLeaf() { - if (this.app.workspace.getLeavesOfType(VIEW_TYPE_CALENDAR).length) { - return; - } - this.app.workspace.getRightLeaf(false).setViewState({ - type: VIEW_TYPE_CALENDAR, - }); - } - async loadOptions() { - const options = await this.loadData(); - settings.update((old) => { - return Object.assign(Object.assign({}, old), (options || {})); - }); - await this.saveData(this.options); - } - async writeOptions(changeOpts) { - settings.update((old) => (Object.assign(Object.assign({}, old), changeOpts(old)))); - await this.saveData(this.options); - } -} - -module.exports = CalendarPlugin; - -/* nosourcemap */ \ No newline at end of file diff --git a/.obsidian/plugins/calendar/manifest.json b/.obsidian/plugins/calendar/manifest.json deleted file mode 100644 index 028bfa5..0000000 --- a/.obsidian/plugins/calendar/manifest.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "id": "calendar", - "name": "Calendar", - "description": "Calendar view of your daily notes", - "version": "1.5.10", - "author": "Liam Cain", - "authorUrl": "https://github.com/liamcain/", - "isDesktopOnly": false, - "minAppVersion": "0.9.11" -} diff --git a/.obsidian/plugins/obsidian-icon-folder/data.json b/.obsidian/plugins/obsidian-icon-folder/data.json index 607f27c..31c4dd6 100644 --- a/.obsidian/plugins/obsidian-icon-folder/data.json +++ b/.obsidian/plugins/obsidian-icon-folder/data.json @@ -6,11 +6,11 @@ "emojiStyle": "native", "iconColor": null, "recentlyUsedIcons": [ + "🧰", "🎒", "LiComputer", "💡", - "🏔", - "🦾" + "🏔" ], "recentlyUsedIconsSize": 5, "rules": [], @@ -35,7 +35,7 @@ "useInternalPlugins": false }, "00 Inbox": "📥", - "99 System": "🎒", + "99 System": "🧰", "99 System/Template": "LiBookTemplate", "99 System/Archive": "LiFolderArchive", "99 System/Cache": "LiArchive", diff --git a/.obsidian/plugins/obsidian-style-settings/data.json b/.obsidian/plugins/obsidian-style-settings/data.json index 8fca62b..58cf636 100644 --- a/.obsidian/plugins/obsidian-style-settings/data.json +++ b/.obsidian/plugins/obsidian-style-settings/data.json @@ -36,10 +36,10 @@ "anuppuccin-theme-settings@@anuppuccin-theme-accents": "ctp-accent-sapphire", "anuppuccin-theme-settings@@anp-active-line": "anp-current-line-border-only", "anuppuccin-theme-settings@@anp-pdf-blend-toggle-dark": false, - "anuppuccin-theme-settings@@anp-alt-tab-style": "anp-mini-tab-toggle", + "anuppuccin-theme-settings@@anp-alt-tab-style": "anp-alternate-tab-toggle", "anuppuccin-theme-settings@@anp-disable-newtab-align": false, "anuppuccin-theme-settings@@anp-depth-tab-text-invert": false, - "anuppuccin-theme-settings@@anp-safari-tab-animated": false, + "anuppuccin-theme-settings@@anp-safari-tab-animated": true, "anuppuccin-theme-settings@@anp-bg-fix": false, "anuppuccin-theme-settings@@anp-hide-borders": true, "anuppuccin-theme-settings@@anp-card-shadows": true, @@ -64,7 +64,7 @@ "pln@@pln-attachments-pdf": true, "pln@@pln-attachments-images": true, "pln@@pln-hdcl": true, - "anuppuccin-theme-settings@@anp-toggle-preview": true, + "anuppuccin-theme-settings@@anp-toggle-preview": false, "anuppuccin-theme-settings@@file-margins": 60, "anuppuccin-theme-settings@@anp-preview-width-pct": 75, "anuppuccin-theme-settings@@anp-layout-select": "anp-card-layout", @@ -79,8 +79,8 @@ "anuppuccin-theme-settings@@anp-button-metadata-toggle": true, "anuppuccin-theme-settings@@anp-color-transition-toggle": true, "anuppuccin-theme-settings@@anp-header-color-toggle": true, - "anuppuccin-theme-settings@@anp-header-margin-toggle": true, - "anuppuccin-theme-settings@@anp-header-divider-color-toggle": true, + "anuppuccin-theme-settings@@anp-header-margin-toggle": false, + "anuppuccin-theme-settings@@anp-header-divider-color-toggle": false, "anuppuccin-theme-settings@@anp-decoration-toggle": true, "anuppuccin-theme-settings@@anp-table-toggle": true, "anuppuccin-theme-settings@@anp-table-width": true, @@ -93,9 +93,9 @@ "anuppuccin-theme-settings@@anp-latex-block-color": "anp-latex-block-sapphire", "anuppuccin-theme-settings@@anp-colorful-frame": false, "anuppuccin-theme-settings@@anp-colorful-frame-icon-toggle-light": false, - "anuppuccin-theme-settings@@anp-colorful-frame-icon-toggle-dark": false, + "anuppuccin-theme-settings@@anp-colorful-frame-icon-toggle-dark": true, "anuppuccin-theme-settings@@anp-custom-vault-toggle": true, - "anuppuccin-theme-settings@@anp-file-icons": true, + "anuppuccin-theme-settings@@anp-file-icons": false, "anuppuccin-theme-settings@@anp-floating-header": true, "anuppuccin-theme-settings@@anp-collapse-folders": true, "anuppuccin-theme-settings@@anp-file-label-align": "0", @@ -105,9 +105,10 @@ "anuppuccin-theme-settings@@anp-simple-rainbow-indentation-toggle": true, "anuppuccin-theme-settings@@anp-simple-rainbow-icon-toggle": true, "anuppuccin-theme-settings@@anp-rainbow-subfolder-color-toggle": false, - "anuppuccin-theme-settings@@anp-font-preview-wt": "600", - "anuppuccin-theme-settings@@bold-weight": "700", - "anuppuccin-theme-settings@@anp-font-live-preview-wt": "600", - "anuppuccin-theme-settings@@anp-font-editor-wt": "600", - "anuppuccin-theme-settings@@anp-status-bar-select": "anp-floating-status-bar" + "anuppuccin-theme-settings@@bold-weight": "bolder", + "anuppuccin-theme-settings@@anp-status-bar-select": "anp-floating-status-bar", + "anuppuccin-theme-settings@@anp-translucency-opacity": 0.5, + "anuppuccin-theme-settings@@anp-editor-font-source": "Inter", + "anuppuccin-theme-settings@@anp-editor-font-lp": "Inter", + "anuppuccin-theme-settings@@anp-editor-font-rv": "Inter" } \ No newline at end of file diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index 7a723e3..5b71dc6 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -13,13 +13,13 @@ "state": { "type": "markdown", "state": { - "file": "90 Library/Programming/Web/Основы HTML (структура, таблицы, формы).md", + "file": "AGENTS.md", "mode": "preview", "source": false, "backlinks": false }, "icon": "lucide-file", - "title": "Основы HTML (структура, таблицы, формы)" + "title": "AGENTS" } } ] @@ -34,7 +34,6 @@ { "id": "383cca303cf4b57d", "type": "tabs", - "dimension": 54.23728813559322, "children": [ { "id": "27e6486165131cfa", @@ -92,42 +91,10 @@ } } ] - }, - { - "id": "8871a075091729ab", - "type": "tabs", - "dimension": 45.76271186440678, - "children": [ - { - "id": "ecfba1f8b8cc0897", - "type": "leaf", - "pinned": true, - "state": { - "type": "git-view", - "state": {}, - "pinned": true, - "icon": "git-pull-request", - "title": "Source Control" - } - }, - { - "id": "0a7dae7709bb0fa4", - "type": "leaf", - "pinned": true, - "state": { - "type": "calendar", - "state": {}, - "pinned": true, - "icon": "calendar-with-checkmark", - "title": "Calendar" - } - } - ], - "currentTab": 1 } ], "direction": "horizontal", - "width": 261 + "width": 290 }, "right": { "id": "38c591aa0966839e", @@ -175,7 +142,7 @@ }, "profileSourceId": "7004edff-76db-412f-95d3-5fd8e180d055", "serial": { - "columns": 23, + "columns": 24, "data": "\u001b[38;5;244m╭─\u001b[30m \u001b[0m \u001b[38;5;31m \u001b[38;5;39;1m~\u001b[38;5;31;22m/\u001b[38;5;103mDoc\u001b[38;5;31m/\u001b[38;5;103mV\u001b[38;5;31m/\u001b[38;5;39;1mSecon\r\n\u001b[38;5;244;22m╭─\u001b[30m \u001b[0m \u001b[38;5;31m \u001b[38;5;39;1m~\u001b[38;5;31;22m/\u001b[38;5;103mDoc\u001b[38;5;31m/\u001b[38;5;103mV\u001b[38;5;31m/\u001b[38;5;39;1mSecondBrain\u001b[38;5;31;22m \u001b[0mon \u001b[38;5;76m\u001b[38;5;178m \u001b[38;5;76m main \u001b[38;5;178m!1\r\n\u001b[38;5;244m╰─\u001b[38;5;76m❯\u001b[0m ", "rows": 34, "scrollLine": 0 @@ -253,7 +220,8 @@ } ], "direction": "horizontal", - "width": 261 + "width": 275, + "collapsed": true }, "left-ribbon": { "hiddenItems": {