From 0b1e03a80328ee058c3e56f6874384292130c759 Mon Sep 17 00:00:00 2001 From: Zane Meyers Date: Mon, 2 Mar 2026 09:41:52 -0500 Subject: [PATCH] vault backup: 2026-03-02 09:41:52 --- .obsidian/plugins/digitalgarden/main.js | 667 +- .obsidian/plugins/digitalgarden/manifest.json | 2 +- .../obsidian-excalidraw-plugin/main.js | 6 +- .../obsidian-excalidraw-plugin/manifest.json | 2 +- .../obsidian-excalidraw-plugin/styles.css | 2 +- .obsidian/plugins/obsidian-git/main.js | 552 +- .obsidian/plugins/obsidian-git/manifest.json | 2 +- .../plugins/obsidian-latex-suite/main.js | 15919 +--------------- .../obsidian-latex-suite/manifest.json | 4 +- .../plugins/obsidian-latex-suite/styles.css | 29 + .obsidian/plugins/obsidian-linter/data.json | 4 +- .obsidian/plugins/obsidian-linter/main.js | 362 +- .../plugins/obsidian-linter/manifest.json | 2 +- .../plugins/obsidian-tasks-plugin/main.js | 158 +- .../obsidian-tasks-plugin/manifest.json | 2 +- .../plugins/obsidian-tasks-plugin/styles.css | 2 +- .obsidian/plugins/quickadd/data.json | 2 +- .obsidian/plugins/quickadd/main.js | 100 +- .obsidian/plugins/quickadd/manifest.json | 2 +- .obsidian/plugins/quickadd/styles.css | 2 +- .obsidian/plugins/spellcheck-toggler/main.js | 3 +- .../plugins/spellcheck-toggler/manifest.json | 2 +- .obsidian/types.json | 3 +- 23 files changed, 1651 insertions(+), 16178 deletions(-) diff --git a/.obsidian/plugins/digitalgarden/main.js b/.obsidian/plugins/digitalgarden/main.js index f8e18e8..165b814 100644 --- a/.obsidian/plugins/digitalgarden/main.js +++ b/.obsidian/plugins/digitalgarden/main.js @@ -10732,6 +10732,48 @@ var import_obsidian2 = require("obsidian"); // src/repositoryConnection/RepositoryConnection.ts var import_js_logger = __toESM(require_logger()); + +// src/forestry/LimitReachedError.ts +var LimitReachedError = class extends Error { + constructor(errorType, responseData) { + var _a2; + const message = (_a2 = responseData.message) != null ? _a2 : "Usage limit reached"; + super(message); + this.name = "LimitReachedError"; + this.errorType = errorType; + this.buildsUsed = responseData.builds_used; + this.monthlyLimit = responseData.monthly_limit; + this.starterCreditsRemaining = responseData.starter_credits_remaining; + } +}; +function throwIfLimitError(error) { + if (error && typeof error === "object" && "status" in error && error.status === 403) { + const responseData = extractResponseData(error); + if (!responseData) return; + const errorType = responseData.error; + if (errorType === "build_limit_reached" || errorType === "storage_limit_exceeded") { + throw new LimitReachedError(errorType, responseData); + } + } +} +function extractResponseData(error) { + const err = error; + if (err.response && typeof err.response === "object") { + const response = err.response; + if (response.data && typeof response.data === "object") { + return response.data; + } + } + if (err.response && typeof err.response === "object") { + const resp = err.response; + if (resp.data && typeof resp.data === "object") { + return resp.data; + } + } + return null; +} + +// src/repositoryConnection/RepositoryConnection.ts var logger = import_js_logger.default.get("repository-connection"); var IMAGE_PATH_BASE = "src/site/"; var NOTE_PATH_BASE = "src/site/notes/"; @@ -10823,6 +10865,7 @@ var RepositoryConnection = class { ); return result; } catch (error) { + throwIfLimitError(error); logger.error(error); return false; } @@ -10875,6 +10918,7 @@ var RepositoryConnection = class { payload ); } catch (error) { + throwIfLimitError(error); logger.error(error); } }); @@ -10973,6 +11017,7 @@ var RepositoryConnection = class { sha: blob.data.sha }; } catch (error) { + throwIfLimitError(error); logger.error(error); } })); @@ -11002,6 +11047,7 @@ var RepositoryConnection = class { sha: blob.data.sha }; } catch (error) { + throwIfLimitError(error); logger.error(error); } })); @@ -12902,7 +12948,8 @@ var CanvasCompiler = class { node, baseStyle, colorClass, - file + file, + assets ); case "file": return yield this.buildFileNode( @@ -12927,7 +12974,7 @@ var CanvasCompiler = class { } }); } - buildTextNode(node, baseStyle, colorClass, file) { + buildTextNode(node, baseStyle, colorClass, file, assets) { return __async(this, null, function* () { var _a2; let processedText = node.text; @@ -12935,7 +12982,8 @@ var CanvasCompiler = class { try { processedText = yield this.textNodeProcessor.processTextNodeContent( file, - node.text + node.text, + assets ); } catch (e) { console.error("Error processing canvas text node:", e); @@ -12955,6 +13003,45 @@ var CanvasCompiler = class { } buildFileNode(node, baseStyle, colorClass, file, assets) { return __async(this, null, function* () { + const isPdf = /\.pdf$/i.test(node.file); + if (isPdf) { + const linkedFile = this.metadataCache.getFirstLinkpathDest( + (0, import_obsidian4.getLinkpath)(node.file), + file.getPath() + ); + if (linkedFile) { + try { + const pdfData = yield this.vault.readBinary(linkedFile); + const pdfBase64 = arrayBufferToBase64(pdfData); + const pdfPath2 = `/img/user/${linkedFile.path}`; + assets.push({ + path: pdfPath2, + content: pdfBase64, + localHash: generateBlobHashFromBase64(pdfBase64) + }); + return `
+
+
+ +
+
+
`; + } catch (e) { + console.error("Error reading canvas PDF:", e); + } + } + const resolvedPath = (linkedFile == null ? void 0 : linkedFile.path) || node.file; + const pdfPath = encodeURI(`/img/user/${resolvedPath}`); + return `
+
+
+ +
+
+
`; + } const isImage = /\.(png|jpg|jpeg|gif|webp|svg)$/i.test(node.file); if (isImage) { const linkedFile = this.metadataCache.getFirstLinkpathDest( @@ -19415,6 +19502,18 @@ var GardenPageCompiler = class { linkedFileName = headerSplit[0]; headerPath = headerSplit.length > 1 ? `#${headerSplit[1]}` : ""; } + if (linkedFileName === "" && headerPath !== "") { + const currentFilePath = file.getPath(); + const currentExtensionlessPath = currentFilePath.substring( + 0, + currentFilePath.lastIndexOf(".") + ); + convertedText = convertedText.replace( + linkMatch, + `[[${currentExtensionlessPath}${headerPath}\\|${linkDisplayName}]]` + ); + continue; + } const fullLinkedFilePath = (0, import_obsidian5.getLinkpath)(linkedFileName); if (fullLinkedFilePath === "") { continue; @@ -20122,7 +20221,7 @@ ${headerSection} * Process text content from canvas text nodes through the same pipeline as notes. * This enables wiki-links, transclusions, dataview, etc. in canvas text nodes. */ - processTextNodeContent(file, text2) { + processTextNodeContent(file, text2, assets) { return __async(this, null, function* () { const CANVAS_TEXT_COMPILE_STEPS = [ this.convertCustomFilters, @@ -20130,12 +20229,18 @@ ${headerSection} this.createTranscludedText(0), this.convertDataViews, this.convertLinksToFullPath, - this.removeObsidianComments + this.removeObsidianComments, + this.createSvgEmbeds ]; - return yield this.runCompilerSteps( + const compiledText = yield this.runCompilerSteps( file, CANVAS_TEXT_COMPILE_STEPS )(text2); + const [processedText, collectedAssets] = yield this.convertEmbeddedAssets(file)(compiledText); + if (assets) { + assets.push(...collectedAssets); + } + return processedText; }); } generateMarkdown(file) { @@ -20371,6 +20476,9 @@ var Publisher = class { yield this.uploadAssets(assets, remoteImageHashes); return true; } catch (error) { + if (error instanceof LimitReachedError) { + throw error; + } console.error(error); return false; } @@ -20416,6 +20524,9 @@ var Publisher = class { ); return true; } catch (error) { + if (error instanceof LimitReachedError) { + throw error; + } console.error(error); return false; } @@ -30017,6 +30128,22 @@ var ForestryApi = class { } }); } + getUserLimits() { + return __async(this, null, function* () { + try { + const response = yield this.client.get( + "user/limits" + ); + if (response.status !== 200) { + return null; + } + return response.data; + } catch (e) { + import_js_logger8.default.error(e); + return null; + } + }); + } }; // src/views/SettingsView/ForestrySettings.svelte @@ -30033,11 +30160,11 @@ function create_else_block5(ctx) { pending: create_pending_block, then: create_then_block, catch: create_catch_block, - value: 9, + value: 12, blocks: [, , ,] }; handle_promise(promise = /*getPageInfo*/ - ctx[5](), info); + ctx[7](), info); return { c() { await_block_anchor = empty(); @@ -30125,13 +30252,13 @@ function create_if_block6(ctx) { input, "input", /*input_input_handler*/ - ctx[8] + ctx[10] ), listen( button, "click", /*connect*/ - ctx[3] + ctx[5] ) ]; mounted = true; @@ -30191,7 +30318,7 @@ function create_catch_block(ctx) { button, "click", /*disconnect*/ - ctx[4] + ctx[6] ); mounted = true; } @@ -30218,7 +30345,7 @@ function create_then_block(ctx) { function select_block_type_1(ctx2, dirty) { if ( /*pageInfo*/ - ctx2[9] + ctx2[12] ) return 0; return 1; } @@ -30287,7 +30414,7 @@ function create_else_block_12(ctx) { button, "click", /*disconnect*/ - ctx[4] + ctx[6] ); mounted = true; } @@ -30313,7 +30440,7 @@ function create_if_block_15(ctx) { let t0; let t1_value = ( /*pageInfo*/ - ((_a2 = ctx[9].value.pageName) != null ? _a2 : "Unknown") + "" + ((_a2 = ctx[12].value.pageName) != null ? _a2 : "Unknown") + "" ); let t1; let t2; @@ -30326,11 +30453,25 @@ function create_if_block_15(ctx) { let a; let icon1; let t7; + let t8; + let if_block_anchor; let current; let mounted; let dispose; icon0 = new Icon_default({ props: { name: "check-circle" } }); icon1 = new Icon_default({ props: { name: "external-link" } }); + function select_block_type_2(ctx2, dirty) { + if ( + /*limitsLoading*/ + ctx2[4] + ) return create_if_block_25; + if ( + /*limits*/ + ctx2[3] + ) return create_if_block_33; + } + let current_block_type = select_block_type_2(ctx, -1); + let if_block = current_block_type && current_block_type(ctx); return { c() { div4 = element("div"); @@ -30351,6 +30492,9 @@ function create_if_block_15(ctx) { a = element("a"); create_component(icon1.$$.fragment); t7 = text(" Open Forestry.md Dashboard"); + t8 = space(); + if (if_block) if_block.c(); + if_block_anchor = empty(); attr(div0, "class", "setting-item-name"); set_style(div0, "display", "flex"); set_style(div0, "align-items", "center"); @@ -30384,18 +30528,32 @@ function create_if_block_15(ctx) { append(div5, a); mount_component(icon1, a, null); append(a, t7); + insert(target, t8, anchor); + if (if_block) if_block.m(target, anchor); + insert(target, if_block_anchor, anchor); current = true; if (!mounted) { dispose = listen( button, "click", /*disconnect*/ - ctx[4] + ctx[6] ); mounted = true; } }, - p: noop, + p(ctx2, dirty) { + if (current_block_type === (current_block_type = select_block_type_2(ctx2, dirty)) && if_block) { + if_block.p(ctx2, dirty); + } else { + if (if_block) if_block.d(1); + if_block = current_block_type && current_block_type(ctx2); + if (if_block) { + if_block.c(); + if_block.m(if_block_anchor.parentNode, if_block_anchor); + } + } + }, i(local) { if (current) return; transition_in(icon0.$$.fragment, local); @@ -30412,14 +30570,362 @@ function create_if_block_15(ctx) { detach(div4); detach(t6); detach(div5); + detach(t8); + detach(if_block_anchor); } destroy_component(icon0); destroy_component(icon1); + if (if_block) { + if_block.d(detaching); + } mounted = false; dispose(); } }; } +function create_if_block_33(ctx) { + let div5; + let div0; + let t0; + let t1_value = ( + /*limits*/ + ctx[3].plan + "" + ); + let t1; + let t2; + let t3; + let div4; + let div1; + let span0; + let t5; + let span1; + let t6_value = ( + /*limits*/ + ctx[3].builds.monthlyLimit - /*limits*/ + ctx[3].builds.monthlyRemaining + "" + ); + let t6; + let t7; + let t8_value = ( + /*limits*/ + ctx[3].builds.monthlyLimit + "" + ); + let t8; + let t9; + let t10; + let div2; + let span2; + let t12; + let span3; + let t13_value = ( + /*limits*/ + ctx[3].storage.usedFormatted + "" + ); + let t13; + let t14; + let t15_value = ( + /*limits*/ + ctx[3].storage.limitFormatted + "" + ); + let t15; + let t16; + let div3; + let span4; + let t18; + let span5; + let t19_value = ( + /*limits*/ + ctx[3].sites.current + "" + ); + let t19; + let t20; + let t21_value = ( + /*limits*/ + ctx[3].sites.limit + "" + ); + let t21; + let t22; + let if_block0 = ( + /*limits*/ + ctx[3].builds.starterCreditsRemaining > 0 && create_if_block_53(ctx) + ); + let if_block1 = ( + /*limits*/ + (ctx[3].builds.monthlyRemaining === 0 || /*limits*/ + ctx[3].storage.usedBytes >= /*limits*/ + ctx[3].storage.limitBytes) && create_if_block_43(ctx) + ); + return { + c() { + div5 = element("div"); + div0 = element("div"); + t0 = text("Usage \u2014 "); + t1 = text(t1_value); + t2 = text(" plan"); + t3 = space(); + div4 = element("div"); + div1 = element("div"); + span0 = element("span"); + span0.textContent = "Builds this month"; + t5 = space(); + span1 = element("span"); + t6 = text(t6_value); + t7 = text(" / "); + t8 = text(t8_value); + t9 = space(); + if (if_block0) if_block0.c(); + t10 = space(); + div2 = element("div"); + span2 = element("span"); + span2.textContent = "Storage"; + t12 = space(); + span3 = element("span"); + t13 = text(t13_value); + t14 = text(" / "); + t15 = text(t15_value); + t16 = space(); + div3 = element("div"); + span4 = element("span"); + span4.textContent = "Sites"; + t18 = space(); + span5 = element("span"); + t19 = text(t19_value); + t20 = text(" / "); + t21 = text(t21_value); + t22 = space(); + if (if_block1) if_block1.c(); + set_style(div0, "font-weight", "600"); + set_style(div0, "margin-bottom", "8px"); + set_style( + span1, + "color", + /*limits*/ + ctx[3].builds.monthlyRemaining === 0 ? "var(--text-error)" : "var(--text-normal)" + ); + set_style(div1, "display", "flex"); + set_style(div1, "justify-content", "space-between"); + set_style( + span3, + "color", + /*limits*/ + ctx[3].storage.usedBytes >= /*limits*/ + ctx[3].storage.limitBytes ? "var(--text-error)" : "var(--text-normal)" + ); + set_style(div2, "display", "flex"); + set_style(div2, "justify-content", "space-between"); + set_style(div3, "display", "flex"); + set_style(div3, "justify-content", "space-between"); + set_style(div4, "display", "flex"); + set_style(div4, "flex-direction", "column"); + set_style(div4, "gap", "6px"); + set_style(div4, "font-size", "0.9em"); + set_style(div4, "color", "var(--text-muted)"); + set_style(div5, "margin-top", "16px"); + set_style(div5, "padding", "12px"); + set_style(div5, "background", "var(--background-secondary)"); + set_style(div5, "border-radius", "8px"); + }, + m(target, anchor) { + insert(target, div5, anchor); + append(div5, div0); + append(div0, t0); + append(div0, t1); + append(div0, t2); + append(div5, t3); + append(div5, div4); + append(div4, div1); + append(div1, span0); + append(div1, t5); + append(div1, span1); + append(span1, t6); + append(span1, t7); + append(span1, t8); + append(div4, t9); + if (if_block0) if_block0.m(div4, null); + append(div4, t10); + append(div4, div2); + append(div2, span2); + append(div2, t12); + append(div2, span3); + append(span3, t13); + append(span3, t14); + append(span3, t15); + append(div4, t16); + append(div4, div3); + append(div3, span4); + append(div3, t18); + append(div3, span5); + append(span5, t19); + append(span5, t20); + append(span5, t21); + append(div5, t22); + if (if_block1) if_block1.m(div5, null); + }, + p(ctx2, dirty) { + if (dirty & /*limits*/ + 8 && t1_value !== (t1_value = /*limits*/ + ctx2[3].plan + "")) set_data(t1, t1_value); + if (dirty & /*limits*/ + 8 && t6_value !== (t6_value = /*limits*/ + ctx2[3].builds.monthlyLimit - /*limits*/ + ctx2[3].builds.monthlyRemaining + "")) set_data(t6, t6_value); + if (dirty & /*limits*/ + 8 && t8_value !== (t8_value = /*limits*/ + ctx2[3].builds.monthlyLimit + "")) set_data(t8, t8_value); + if (dirty & /*limits*/ + 8) { + set_style( + span1, + "color", + /*limits*/ + ctx2[3].builds.monthlyRemaining === 0 ? "var(--text-error)" : "var(--text-normal)" + ); + } + if ( + /*limits*/ + ctx2[3].builds.starterCreditsRemaining > 0 + ) { + if (if_block0) { + if_block0.p(ctx2, dirty); + } else { + if_block0 = create_if_block_53(ctx2); + if_block0.c(); + if_block0.m(div4, t10); + } + } else if (if_block0) { + if_block0.d(1); + if_block0 = null; + } + if (dirty & /*limits*/ + 8 && t13_value !== (t13_value = /*limits*/ + ctx2[3].storage.usedFormatted + "")) set_data(t13, t13_value); + if (dirty & /*limits*/ + 8 && t15_value !== (t15_value = /*limits*/ + ctx2[3].storage.limitFormatted + "")) set_data(t15, t15_value); + if (dirty & /*limits*/ + 8) { + set_style( + span3, + "color", + /*limits*/ + ctx2[3].storage.usedBytes >= /*limits*/ + ctx2[3].storage.limitBytes ? "var(--text-error)" : "var(--text-normal)" + ); + } + if (dirty & /*limits*/ + 8 && t19_value !== (t19_value = /*limits*/ + ctx2[3].sites.current + "")) set_data(t19, t19_value); + if (dirty & /*limits*/ + 8 && t21_value !== (t21_value = /*limits*/ + ctx2[3].sites.limit + "")) set_data(t21, t21_value); + if ( + /*limits*/ + ctx2[3].builds.monthlyRemaining === 0 || /*limits*/ + ctx2[3].storage.usedBytes >= /*limits*/ + ctx2[3].storage.limitBytes + ) { + if (if_block1) { + } else { + if_block1 = create_if_block_43(ctx2); + if_block1.c(); + if_block1.m(div5, null); + } + } else if (if_block1) { + if_block1.d(1); + if_block1 = null; + } + }, + d(detaching) { + if (detaching) { + detach(div5); + } + if (if_block0) if_block0.d(); + if (if_block1) if_block1.d(); + } + }; +} +function create_if_block_25(ctx) { + let div2; + return { + c() { + div2 = element("div"); + div2.innerHTML = `
Loading usage info...
`; + attr(div2, "class", "setting-item"); + set_style(div2, "margin-top", "12px"); + }, + m(target, anchor) { + insert(target, div2, anchor); + }, + p: noop, + d(detaching) { + if (detaching) { + detach(div2); + } + } + }; +} +function create_if_block_53(ctx) { + let div; + let span0; + let t1; + let span1; + let t2_value = ( + /*limits*/ + ctx[3].builds.starterCreditsRemaining + "" + ); + let t2; + return { + c() { + div = element("div"); + span0 = element("span"); + span0.textContent = "Starter credits remaining"; + t1 = space(); + span1 = element("span"); + t2 = text(t2_value); + set_style(div, "display", "flex"); + set_style(div, "justify-content", "space-between"); + }, + m(target, anchor) { + insert(target, div, anchor); + append(div, span0); + append(div, t1); + append(div, span1); + append(span1, t2); + }, + p(ctx2, dirty) { + if (dirty & /*limits*/ + 8 && t2_value !== (t2_value = /*limits*/ + ctx2[3].builds.starterCreditsRemaining + "")) set_data(t2, t2_value); + }, + d(detaching) { + if (detaching) { + detach(div); + } + } + }; +} +function create_if_block_43(ctx) { + let div; + return { + c() { + div = element("div"); + div.innerHTML = `You've reached your usage limit. Upgrade your plan to continue publishing.`; + set_style(div, "margin-top", "8px"); + set_style(div, "padding", "8px"); + set_style(div, "background", "var(--background-modifier-error)"); + set_style(div, "border-radius", "4px"); + set_style(div, "font-size", "0.85em"); + }, + m(target, anchor) { + insert(target, div, anchor); + }, + d(detaching) { + if (detaching) { + detach(div); + } + } + }; +} function create_pending_block(ctx) { let div2; return { @@ -30576,6 +31082,8 @@ function instance8($$self, $$props, $$invalidate) { let { saveSettings } = $$props; let { onConnect } = $$props; let apiKey = settings.forestrySettings.apiKey; + let limits = null; + let limitsLoading = false; const connect = () => __awaiter(void 0, void 0, void 0, function* () { let pageInfo = yield getPageInfo(); if (!pageInfo) { @@ -30594,24 +31102,45 @@ function instance8($$self, $$props, $$invalidate) { $$invalidate(0, settings.forestrySettings.forestryPageName = "", settings); yield saveSettings(); $$invalidate(2, apiKey = ""); + $$invalidate(3, limits = null); }); const getPageInfo = () => __awaiter(void 0, void 0, void 0, function* () { let pageInfo = yield new ForestryApi(apiKey).getPageInfo(); return pageInfo; }); + const fetchLimits = () => __awaiter(void 0, void 0, void 0, function* () { + if (!settings.forestrySettings.apiKey) return; + $$invalidate(4, limitsLoading = true); + try { + $$invalidate(3, limits = yield new ForestryApi(settings.forestrySettings.apiKey).getUserLimits()); + } catch (_a2) { + $$invalidate(3, limits = null); + } + $$invalidate(4, limitsLoading = false); + }); function input_input_handler() { apiKey = this.value; $$invalidate(2, apiKey); } $$self.$$set = ($$props2) => { if ("settings" in $$props2) $$invalidate(0, settings = $$props2.settings); - if ("saveSettings" in $$props2) $$invalidate(6, saveSettings = $$props2.saveSettings); - if ("onConnect" in $$props2) $$invalidate(7, onConnect = $$props2.onConnect); + if ("saveSettings" in $$props2) $$invalidate(8, saveSettings = $$props2.saveSettings); + if ("onConnect" in $$props2) $$invalidate(9, onConnect = $$props2.onConnect); + }; + $$self.$$.update = () => { + if ($$self.$$.dirty & /*settings*/ + 1) { + $: if (settings.forestrySettings.apiKey) { + fetchLimits(); + } + } }; return [ settings, unique, apiKey, + limits, + limitsLoading, connect, disconnect, getPageInfo, @@ -30625,8 +31154,8 @@ var ForestrySettings = class extends SvelteComponent { super(); init(this, options, instance8, create_fragment8, safe_not_equal, { settings: 0, - saveSettings: 6, - onConnect: 7 + saveSettings: 8, + onConnect: 9 }); } }; @@ -30699,7 +31228,7 @@ var SettingView = class { const publishPlatformSettings = this.settingsRootElement.createEl( "div", { - cls: "connection-status" + cls: "publish-platform-settings" } ); this.initializePublishPlatformSettings(publishPlatformSettings); @@ -31313,13 +31842,31 @@ var SettingView = class { cb.setButtonText("Apply settings to site"); cb.setCta(); cb.onClick((_ev) => __async(this, null, function* () { - const octokit = new Octokit({ - auth: this.settings.githubToken - }); new import_obsidian15.Notice("Applying settings to site..."); yield this.saveSettingsAndUpdateEnv(); - yield this.addFavicon(octokit); - yield this.addLogo(octokit); + const connection = yield PublishPlatformConnectionFactory.createPublishPlatformConnection( + this.settings + ); + const octokit = connection.octoKit; + const owner = connection.userName; + const repo = connection.pageName; + try { + yield this.addFavicon(octokit, owner, repo); + } catch (error) { + import_js_logger9.default.error("Failed to update favicon", error); + new import_obsidian15.Notice( + "Failed to update favicon. Check the developer console for details." + ); + } + try { + yield this.addLogo(octokit, owner, repo); + } catch (error) { + import_js_logger9.default.error("Failed to update logo", error); + new import_obsidian15.Notice( + "Failed to update logo. Check the developer console for details." + ); + } + new import_obsidian15.Notice("Settings applied to site!"); })); }; new import_obsidian15.Setting(this.settingsRootElement).setName("Appearance").setDesc("Manage themes, sitename and styling on your site").addButton((cb) => { @@ -31724,7 +32271,7 @@ var SettingView = class { } return settings; } - addFavicon(octokit) { + addFavicon(octokit, owner, repo) { return __async(this, null, function* () { let base64SettingsFaviconContent = ""; if (this.settings.faviconPath) { @@ -31738,11 +32285,12 @@ var SettingView = class { const faviconContent = yield this.app.vault.readBinary(faviconFile); base64SettingsFaviconContent = arrayBufferToBase64(faviconContent); } else { - const defaultFavicon = yield octokit.request( + const baseConnection = PublishPlatformConnectionFactory.createBaseGardenConnection(); + const defaultFavicon = yield baseConnection.octoKit.request( "GET /repos/{owner}/{repo}/contents/{path}", { - owner: "oleeskild", - repo: "digitalgarden", + owner: baseConnection.userName, + repo: baseConnection.pageName, path: "src/site/favicon.svg" } ); @@ -31755,13 +32303,13 @@ var SettingView = class { currentFaviconOnSite = yield octokit.request( "GET /repos/{owner}/{repo}/contents/{path}", { - owner: this.settings.githubUserName, - repo: this.settings.githubRepo, + owner, + repo, path: "src/site/favicon.svg" } ); faviconsAreIdentical = // @ts-expect-error TODO: abstract octokit response - currentFaviconOnSite.data.content === base64SettingsFaviconContent; + currentFaviconOnSite.data.content.replace(/\n/g, "") === base64SettingsFaviconContent; if (faviconsAreIdentical) { import_js_logger9.default.info("Favicons are identical, skipping update"); return; @@ -31771,8 +32319,8 @@ var SettingView = class { } if (!faviconExists || !faviconsAreIdentical) { yield octokit.request("PUT /repos/{owner}/{repo}/contents/{path}", { - owner: this.settings.githubUserName, - repo: this.settings.githubRepo, + owner, + repo, path: "src/site/favicon.svg", message: `Update favicon.svg`, content: base64SettingsFaviconContent, @@ -31782,9 +32330,12 @@ var SettingView = class { } }); } - addLogo(octokit) { + addLogo(octokit, owner, repo) { return __async(this, null, function* () { var _a2; + import_js_logger9.default.info( + `addLogo called, logoPath setting: "${this.settings.logoPath}", owner: "${owner}", repo: "${repo}"` + ); const logoBasePath = "src/site/logo"; const logoExtensions = ["png", "jpg", "jpeg", "gif", "svg", "webp"]; for (const ext of logoExtensions) { @@ -31792,8 +32343,8 @@ var SettingView = class { const existingLogo = yield octokit.request( "GET /repos/{owner}/{repo}/contents/{path}", { - owner: this.settings.githubUserName, - repo: this.settings.githubRepo, + owner, + repo, path: `${logoBasePath}.${ext}` } ); @@ -31804,8 +32355,8 @@ var SettingView = class { yield octokit.request( "DELETE /repos/{owner}/{repo}/contents/{path}", { - owner: this.settings.githubUserName, - repo: this.settings.githubRepo, + owner, + repo, path: `${logoBasePath}.${ext}`, message: `Remove logo.${ext}`, // @ts-expect-error TODO: abstract octokit response @@ -31841,13 +32392,13 @@ var SettingView = class { currentLogoOnSite = yield octokit.request( "GET /repos/{owner}/{repo}/contents/{path}", { - owner: this.settings.githubUserName, - repo: this.settings.githubRepo, + owner, + repo, path: logoPath } ); logosAreIdentical = // @ts-expect-error TODO: abstract octokit response - currentLogoOnSite.data.content === base64LogoContent; + currentLogoOnSite.data.content.replace(/\n/g, "") === base64LogoContent; if (logosAreIdentical) { import_js_logger9.default.info("Logos are identical, skipping update"); return; @@ -31858,8 +32409,8 @@ var SettingView = class { if (!logoExists || !logosAreIdentical) { try { const requestPayload = __spreadValues({ - owner: this.settings.githubUserName, - repo: this.settings.githubRepo, + owner, + repo, path: logoPath, message: `Update logo.${logoExtension}`, content: base64LogoContent @@ -32550,6 +33101,10 @@ var DigitalGarden = class extends import_obsidian19.Plugin { } catch (e) { statusBarItem.remove(); this.isPublishing = false; + if (e instanceof LimitReachedError) { + this.showLimitNotice(e); + return; + } console.error(e); new import_obsidian19.Notice( "Unable to publish multiple notes, something went wrong." @@ -32666,9 +33221,15 @@ var DigitalGarden = class extends import_obsidian19.Plugin { const publishSuccessful = yield publisher.publish(publishFile); if (publishSuccessful) { new import_obsidian19.Notice(`Successfully published note to your garden.`); + } else { + new import_obsidian19.Notice("Unable to publish note, something went wrong."); } return publishSuccessful; } catch (e) { + if (e instanceof LimitReachedError) { + this.showLimitNotice(e); + return false; + } console.error(e); new import_obsidian19.Notice("Unable to publish note, something went wrong."); return false; @@ -32762,6 +33323,22 @@ var DigitalGarden = class extends import_obsidian19.Plugin { } }); } + showLimitNotice(error) { + var _a2, _b; + if (error.errorType === "build_limit_reached") { + const used = (_a2 = error.buildsUsed) != null ? _a2 : 0; + const limit = (_b = error.monthlyLimit) != null ? _b : 0; + new import_obsidian19.Notice( + `Publishing blocked: You've used all ${used}/${limit} builds this month. Upgrade to Pro for 1000 builds/month at dashboard.forestry.md/settings`, + 1e4 + ); + } else { + new import_obsidian19.Notice( + `Publishing blocked: Storage limit exceeded. Free up space or upgrade at dashboard.forestry.md/settings`, + 1e4 + ); + } + } openPublishModal() { const siteManager = new DigitalGardenSiteManager( this.app.metadataCache, diff --git a/.obsidian/plugins/digitalgarden/manifest.json b/.obsidian/plugins/digitalgarden/manifest.json index 5e4c28d..ff4a3d8 100644 --- a/.obsidian/plugins/digitalgarden/manifest.json +++ b/.obsidian/plugins/digitalgarden/manifest.json @@ -1,7 +1,7 @@ { "id": "digitalgarden", "name": "Digital Garden", - "version": "2.69.0", + "version": "2.72.0", "minAppVersion": "1.10.0", "description": "Publish your notes to the web for others to enjoy. For free.", "author": "Ole Eskild Steensen", diff --git a/.obsidian/plugins/obsidian-excalidraw-plugin/main.js b/.obsidian/plugins/obsidian-excalidraw-plugin/main.js index 39bc18d..53b983a 100644 --- a/.obsidian/plugins/obsidian-excalidraw-plugin/main.js +++ b/.obsidian/plugins/obsidian-excalidraw-plugin/main.js @@ -1,10 +1,10 @@ "use strict";var obsidian_module=require("obsidian"),view=require("@codemirror/view"),commands=require("@codemirror/commands"),lr=require("@lezer/lr"),language=require("@codemirror/language"),state=require("@codemirror/state");;const INITIAL_TIMESTAMP=Date.now();var LZString=function(){var r=String.fromCharCode,o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$",e={};function t(r,o){if(!e[r]){e[r]={};for(var n=0;n>>8,n[2*e+1]=s%256}return n},decompressFromUint8Array:function(o){if(null==o)return i.decompress(o);for(var n=new Array(o.length/2),e=0,t=n.length;e>=1}else{for(t=1,e=0;e>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[c]}else for(t=s[c],e=0;e>=1;0==--l&&(l=Math.pow(2,h),h++),s[p]=f++,c=String(a)}if(""!==c){if(Object.prototype.hasOwnProperty.call(u,c)){if(c.charCodeAt(0)<256){for(e=0;e>=1}else{for(t=1,e=0;e>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[c]}else for(t=s[c],e=0;e>=1;0==--l&&(l=Math.pow(2,h),h++)}for(t=2,e=0;e>=1;for(;;){if(m<<=1,v==o-1){d.push(n(m));break}v++}return d.join("")},decompress:function(r){return null==r?"":""==r?null:i._decompress(r.length,32768,function(o){return r.charCodeAt(o)})},_decompress:function(o,n,e){var t,i,s,u,a,p,c,l=[],f=4,h=4,d=3,m="",v=[],g={val:e(0),position:n,index:1};for(t=0;t<3;t+=1)l[t]=t;for(s=0,a=Math.pow(2,2),p=1;p!=a;)u=g.val&g.position,g.position>>=1,0==g.position&&(g.position=n,g.val=e(g.index++)),s|=(u>0?1:0)*p,p<<=1;switch(s){case 0:for(s=0,a=Math.pow(2,8),p=1;p!=a;)u=g.val&g.position,g.position>>=1,0==g.position&&(g.position=n,g.val=e(g.index++)),s|=(u>0?1:0)*p,p<<=1;c=r(s);break;case 1:for(s=0,a=Math.pow(2,16),p=1;p!=a;)u=g.val&g.position,g.position>>=1,0==g.position&&(g.position=n,g.val=e(g.index++)),s|=(u>0?1:0)*p,p<<=1;c=r(s);break;case 2:return""}for(l[3]=c,i=c,v.push(c);;){if(g.index>o)return"";for(s=0,a=Math.pow(2,d),p=1;p!=a;)u=g.val&g.position,g.position>>=1,0==g.position&&(g.position=n,g.val=e(g.index++)),s|=(u>0?1:0)*p,p<<=1;switch(c=s){case 0:for(s=0,a=Math.pow(2,8),p=1;p!=a;)u=g.val&g.position,g.position>>=1,0==g.position&&(g.position=n,g.val=e(g.index++)),s|=(u>0?1:0)*p,p<<=1;l[h++]=r(s),c=h-1,f--;break;case 1:for(s=0,a=Math.pow(2,16),p=1;p!=a;)u=g.val&g.position,g.position>>=1,0==g.position&&(g.position=n,g.val=e(g.index++)),s|=(u>0?1:0)*p,p<<=1;l[h++]=r(s),c=h-1,f--;break;case 2:return v.join("")}if(0==f&&(f=Math.pow(2,d),d++),l[c])m=l[c];else{if(c!==h)return null;m=i+i.charAt(0)}v.push(m),l[h++]=i+m.charAt(0),i=m,0==--f&&(f=Math.pow(2,d),d++)}}};return i}();"function"==typeof define&&define.amd?define(function(){return LZString}):"undefined"!=typeof module&&null!=module?module.exports=LZString:"undefined"!=typeof angular&&null!=angular&&angular.module("LZString",[]).factory("LZString",function(){return LZString}); let REACT_PACKAGES = `!function(){var e,t;e=this,t=function(e){function M(e){return null!==e&&"object"==typeof e&&"function"==typeof(e=te&&e[te]||e["@@iterator"])?e:null}function t(e,t,n){this.props=e,this.context=t,this.refs=oe,this.updater=n||ne}function n(){}function r(e,t,n){this.props=e,this.context=t,this.refs=oe,this.updater=n||ne}function o(e,t,n){var r,o={},u=null,a=null;if(null!=t)for(r in void 0!==t.ref&&(a=t.ref),void 0!==t.key&&(u=""+t.key),t)ae.call(t,r)&&!ie.hasOwnProperty(r)&&(o[r]=t[r]);var i=arguments.length-2;if(1===i)o.children=n;else if(1>>1,o=e[r];if(!(0>>1;rt)||e&&!q());){var r,o=R.callback;"function"==typeof o?(R.callback=null,P=R.priorityLevel,r=o(R.expirationTime<=t),t=v(),"function"==typeof r?R.callback=r:R===i(C)&&l(C),y(t)):l(C),R=i(C)}var u,a=null!==R||(null!==(u=i(E))&&_(d,u.startTime-t),!1);return a}finally{R=null,P=n,$=!1}}function q(){return!(v()-de")?l.replace("",n.displayName):l}while(1<=u&&0<=i);break}}}finally{xo=!1,Error.prepareStackTrace=t}return(n=n?n.displayName||n.name:"")?Q(n):""}function $(e){switch(e.tag){case 5:return Q(e.type);case 16:return Q("Lazy");case 13:return Q("Suspense");case 19:return Q("SuspenseList");case 0:case 2:case 15:return e=j(e.type,!1);case 11:return e=j(e.type.render,!1);case 1:return e=j(e.type,!0);default:return""}}function q(e){if(null!=e){if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case co:return"Fragment";case so:return"Portal";case po:return"Profiler";case fo:return"StrictMode";case yo:return"Suspense";case vo:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case ho:return(e.displayName||"Context")+".Consumer";case mo:return(e._context.displayName||"Context")+".Provider";case go:var n=e.render;return e=(e=e.displayName)?e:""!==(e=n.displayName||n.name||"")?"ForwardRef("+e+")":"ForwardRef";case bo:return null!==(n=e.displayName||null)?n:q(e.type)||"Memo";case ko:n=e._payload,e=e._init;try{return q(e(n))}catch(e){}}}return null}function K(e){var n=e.type;switch(e.tag){case 24:return"Cache";case 9:return(n.displayName||"Context")+".Consumer";case 10:return(n._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=(e=n.render).displayName||e.name||"",n.displayName||(""!==e?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return n;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return q(n);case 8:return n===fo?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if("function"==typeof n)return n.displayName||n.name||null;if("string"==typeof n)return n}return null}function Y(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":case"object":return e;default:return""}}function X(e){var n=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===n||"radio"===n)}function G(e){var n,t,r=X(e)?"checked":"value",l=Object.getOwnPropertyDescriptor(e.constructor.prototype,r),a=""+e[r];if(!e.hasOwnProperty(r)&&void 0!==l&&"function"==typeof l.get&&"function"==typeof l.set)return n=l.get,t=l.set,Object.defineProperty(e,r,{configurable:!0,get:function(){return n.call(this)},set:function(e){a=""+e,t.call(this,e)}}),Object.defineProperty(e,r,{enumerable:l.enumerable}),{getValue:function(){return a},setValue:function(e){a=""+e},stopTracking:function(){e._valueTracker=null,delete e[r]}}}function Z(e){e._valueTracker||(e._valueTracker=G(e))}function J(e){var n,t,r;return!(!e||(n=e._valueTracker)&&(t=n.getValue(),r="",(e=r=e?X(e)?e.checked?"true":"false":e.value:r)===t||(n.setValue(e),0)))}function ee(n){if(void 0===(n=n||("undefined"!=typeof document?document:void 0)))return null;try{return n.activeElement||n.body}catch(e){return n.body}}function ne(e,n){var t=n.checked;return g({},n,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=t?t:e._wrapperState.initialChecked})}function te(e,n){var t=null==n.defaultValue?"":n.defaultValue,r=null!=n.checked?n.checked:n.defaultChecked,t=Y(null!=n.value?n.value:t);e._wrapperState={initialChecked:r,initialValue:t,controlled:"checkbox"===n.type||"radio"===n.type?null!=n.checked:null!=n.value}}function re(e,n){null!=(n=n.checked)&&B(e,"checked",n,!1)}function le(e,n){re(e,n);var t=Y(n.value),r=n.type;if(null!=t)"number"===r?(0===t&&""===e.value||e.value!=t)&&(e.value=""+t):e.value!==""+t&&(e.value=""+t);else if("submit"===r||"reset"===r)return void e.removeAttribute("value");n.hasOwnProperty("value")?oe(e,n.type,t):n.hasOwnProperty("defaultValue")&&oe(e,n.type,Y(n.defaultValue)),null==n.checked&&null!=n.defaultChecked&&(e.defaultChecked=!!n.defaultChecked)}function ae(e,n,t){if(n.hasOwnProperty("value")||n.hasOwnProperty("defaultValue")){var r=n.type;if(("submit"===r||"reset"===r)&&null==n.value)return;n=""+e._wrapperState.initialValue,t||n===e.value||(e.value=n),e.defaultValue=n}""!==(t=e.name)&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,""!==t&&(e.name=t)}function oe(e,n,t){"number"===n&&ee(e.ownerDocument)===e||(null==t?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+t&&(e.defaultValue=""+t))}function ue(e,n,t,r){if(e=e.options,n){n={};for(var l=0;l>>=0)?32:31-(iu(e)/su|0)|0}function Re(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return 4194240&e;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return 130023424&e;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function De(e,n){var t=e.pendingLanes;if(0===t)return 0;var r,l=0,a=e.suspendedLanes,o=e.pingedLanes,u=268435455&t;if(0!==u?0!==(r=u&~a)?l=Re(r):0!==(o&=u)&&(l=Re(o)):0!==(u=t&~a)?l=Re(u):0!==o&&(l=Re(o)),0===l)return 0;if(0!==n&&n!==l&&0==(n&a)&&((o=n&-n)<=(a=l&-l)||16===a&&0!=(4194240&o)))return n;if(0!=(4&l)&&(l|=16&t),0!==(n=e.entangledLanes))for(e=e.entanglements,n&=l;0>=r,a-=r,Xi=1<<32-uu(n)+a|t<u?(i=o,o=null):i=o.sibling;var s=y(n,o,t[u],r);if(null===s){null===o&&(o=i);break}f&&o&&null===s.alternate&&d(n,o),e=h(s,e,u),null===a?l=s:a.sibling=s,a=s,o=i}if(u===t.length)p(n,o);else if(null===o)for(;uu?(i=o,o=null):i=o.sibling;var c=y(n,o,s.value,r);if(null===c){null===o&&(o=i);break}f&&o&&null===c.alternate&&d(n,o),e=h(c,e,u),null===a?l=c:a.sibling=c,a=c,o=i}if(s.done)p(n,o);else if(null===o)for(;!s.done;u++,s=t.next())null!==(s=g(n,s.value,r))&&(e=h(s,e,u),null===a?l=s:a.sibling=s,a=s);else{for(o=m(n,o);!s.done;u++,s=t.next())null!==(s=v(o,n,u,s.value,r))&&(f&&null!==s.alternate&&o.delete(null===s.key?u:s.key),e=h(s,e,u),null===a?l=s:a.sibling=s,a=s);f&&o.forEach(function(e){return d(n,e)})}return E&&vt(n,u),l}function w(e,n,t,r){if("object"==typeof(t="object"==typeof t&&null!==t&&t.type===co&&null===t.key?t.props.children:t)&&null!==t){switch(t.$$typeof){case io:e:{for(var l=t.key,a=n;null!==a;){if(a.key===l){if((l=t.type)===co){if(7===a.tag){p(e,a.sibling),(n=o(a,t.props.children)).return=e,e=n;break e}}else if(a.elementType===l||"object"==typeof l&&null!==l&&l.$$typeof===ko&&Mt(l)===a.type){p(e,a.sibling),(n=o(a,t.props)).ref=Lt(e,a,t),n.return=e,e=n;break e}p(e,a);break}d(e,a),a=a.sibling}e=t.type===co?((n=za(t.props.children,e.mode,r,t.key)).return=e,n):((r=Na(t.type,t.key,t.props,null,e.mode,r)).ref=Lt(e,n,t),r.return=e,r)}return u(e);case so:e:{for(a=t.key;null!==n;){if(n.key===a){if(4===n.tag&&n.stateNode.containerInfo===t.containerInfo&&n.stateNode.implementation===t.implementation){p(e,n.sibling),(n=o(n,t.children||[])).return=e,e=n;break e}p(e,n);break}d(e,n),n=n.sibling}(n=La(t,e.mode,r)).return=e,e=n}return u(e);case ko:return w(e,n,(a=t._init)(t._payload),r)}if(Eo(t))return b(e,n,t,r);if(H(t))return k(e,n,t,r);Tt(e,t)}return"string"==typeof t&&""!==t||"number"==typeof t?(t=""+t,(n=null!==n&&6===n.tag?(p(e,n.sibling),o(n,t)):(p(e,n),_a(t,e.mode,r))).return=e,u(e=n)):p(e,n)}return w}function Rt(){os=as=ls=null}function Dt(e,n){n=rs.current,s(rs),e._currentValue=n}function Ot(e,n,t){for(;null!==e;){var r=e.alternate;if((e.childLanes&n)!==n?(e.childLanes|=n,null!==r&&(r.childLanes|=n)):null!==r&&(r.childLanes&n)!==n&&(r.childLanes|=n),e===t)break;e=e.return}}function It(e,n){(os=as=null)!==(e=(ls=e).dependencies)&&null!==e.firstContext&&(0!=(e.lanes&n)&&(_=!0),e.firstContext=null)}function Ut(e){var n=e._currentValue;if(os!==e)if(e={context:e,memoizedValue:n,next:null},null===as){if(null===ls)throw Error(S(308));as=e,ls.dependencies={lanes:0,firstContext:e}}else as=as.next=e;return n}function Vt(e){null===us?us=[e]:us.push(e)}function At(e,n,t,r){var l=n.interleaved;return null===l?(t.next=t,Vt(n)):(t.next=l.next,l.next=t),n.interleaved=t,Wt(e,r)}function Wt(e,n){e.lanes|=n;var t=e.alternate;for(null!==t&&(t.lanes|=n),e=(t=e).return;null!==e;)e.childLanes|=n,null!==(t=e.alternate)&&(t.childLanes|=n),e=(t=e).return;return 3===t.tag?t.stateNode:null}function Bt(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function Ht(e,n){e=e.updateQueue,n.updateQueue===e&&(n.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function Qt(e,n){return{eventTime:e,lane:n,tag:0,payload:null,callback:null,next:null}}function jt(e,n,t){var r,l=e.updateQueue;return null===l?null:(l=l.shared,(0!=(2&F)?(null===(r=l.pending)?n.next=n:(n.next=r.next,r.next=n),l.pending=n,is):(null===(r=l.interleaved)?(n.next=n,Vt(l)):(n.next=r.next,r.next=n),l.interleaved=n,Wt))(e,t))}function $t(e,n,t){var r;null!==(n=n.updateQueue)&&(n=n.shared,0!=(4194240&t))&&(r=n.lanes,r&=e.pendingLanes,He(e,n.lanes=t|=r))}function qt(e,n){var t=e.updateQueue,r=e.alternate;if(null!==r&&t===(r=r.updateQueue)){var l=null,a=null;if(null!==(t=t.firstBaseUpdate)){do{var o={eventTime:t.eventTime,lane:t.lane,tag:t.tag,payload:t.payload,callback:t.callback,next:null}}while(null===a?l=a=o:a=a.next=o,null!==(t=t.next));null===a?l=a=n:a=a.next=n}else l=a=n;t={baseState:r.baseState,firstBaseUpdate:l,lastBaseUpdate:a,shared:r.shared,effects:r.effects},e.updateQueue=t}else null===(e=t.lastBaseUpdate)?t.firstBaseUpdate=n:e.next=n,t.lastBaseUpdate=n}function Kt(e,n,t,r){var l,a,o=e.updateQueue,u=(ss=!1,o.firstBaseUpdate),i=o.lastBaseUpdate;if(null!==(f=o.shared.pending)&&(o.shared.pending=null,a=(l=f).next,(l.next=null)===i?u=a:i.next=a,i=l,null!==(c=e.alternate))&&(f=(c=c.updateQueue).lastBaseUpdate)!==i&&(null===f?c.firstBaseUpdate=a:f.next=a,c.lastBaseUpdate=l),null!==u){for(var s=o.baseState,i=0,c=a=l=null,f=u;;){var d=f.lane,p=f.eventTime;if((r&d)===d){null!==c&&(c=c.next={eventTime:p,lane:0,tag:f.tag,payload:f.payload,callback:f.callback,next:null});e:{var m=e,h=f,d=n,p=t;switch(h.tag){case 1:if("function"==typeof(m=h.payload)){s=m.call(p,s,d);break e}s=m;break e;case 3:m.flags=-65537&m.flags|128;case 0:if(null==(d="function"==typeof(m=h.payload)?m.call(p,s,d):m))break e;s=g({},s,d);break e;case 2:ss=!0}}null!==f.callback&&0!==f.lane&&(e.flags|=64,null===(d=o.effects)?o.effects=[f]:d.push(f))}else p={eventTime:p,lane:d,tag:f.tag,payload:f.payload,callback:f.callback,next:null},null===c?(a=c=p,l=s):c=c.next=p,i|=d;if(null===(f=f.next)){if(null===(f=o.shared.pending))break;f=(d=f).next,d.next=null,o.lastBaseUpdate=d,o.shared.pending=null}}if(null===c&&(l=s),o.baseState=l,o.firstBaseUpdate=a,o.lastBaseUpdate=c,null!==(n=o.shared.interleaved))for(o=n;i|=o.lane,(o=o.next)!==n;);else null===u&&(o.shared.lanes=0);Qs|=i,e.lanes=i,e.memoizedState=s}}function Yt(e,n,t){if(e=n.effects,(n.effects=null)!==e)for(n=0;n<\\/script>",e=e.removeChild(e.firstChild)):"string"==typeof r.is?e=o.createElement(t,{is:r.is}):(e=o.createElement(t),"select"===t&&(o=e,r.multiple?o.multiple=!0:r.size&&(o.size=r.size))):e=o.createElementNS(e,t),e[Li]=n,e[Ti]=r,Ls(e,n,!1,!1),n.stateNode=e;e:{switch(o=ye(t,r),t){case"dialog":c("cancel",e),c("close",e),a=r;break;case"iframe":case"object":case"embed":c("load",e),a=r;break;case"video":case"audio":for(a=0;aYs&&(n.flags|=128,wl(i,!(r=!0)),n.lanes=4194304)}else{if(!r)if(null!==(e=nr(o))){if(n.flags|=128,r=!0,null!==(t=e.updateQueue)&&(n.updateQueue=t,n.flags|=4),wl(i,!0),null===i.tail&&"hidden"===i.tailMode&&!o.alternate&&!E)return p(n),null}else 2*y()-i.renderingStartTime>Ys&&1073741824!==t&&(n.flags|=128,wl(i,!(r=!0)),n.lanes=4194304);i.isBackwards?(o.sibling=n.child,n.child=o):(null!==(t=i.last)?t.sibling=o:n.child=o,i.last=o)}if(null!==i.tail)return n=i.tail,i.rendering=n,i.tail=n.sibling,i.renderingStartTime=y(),n.sibling=null,t=C.current,f(C,r?1&t|2:1&t),n}return p(n),null;case 22:case 23:return O=Bs.current,s(Bs),r=null!==n.memoizedState,null!==e&&null!==e.memoizedState!==r&&(n.flags|=8192),r&&0!=(1&n.mode)?0!=(1073741824&O)&&(p(n),6&n.subtreeFlags)&&(n.flags|=8192):p(n),null;case 24:case 25:return null}throw Error(S(156,n.tag))}function xl(e,n,t){switch(wt(n),n.tag){case 1:return h(n.type)&&(s(b),s(v)),65536&(e=n.flags)?(n.flags=-65537&e|128,n):null;case 3:return Zt(),s(b),s(v),tr(),0!=(65536&(e=n.flags))&&0==(128&e)?(n.flags=-65537&e|128,n):null;case 5:return er(n),null;case 13:if(s(C),null!==(e=n.memoizedState)&&null!==e.dehydrated){if(null===n.alternate)throw Error(S(340));Pt()}return 65536&(e=n.flags)?(n.flags=-65537&e|128,n):null;case 19:return s(C),null;case 4:return Zt(),null;case 10:return Dt(n.type._context),null;case 22:case 23:return O=Bs.current,s(Bs),null;default:return null}}function El(n,t){var e=n.ref;if(null!==e)if("function"==typeof e)try{e(null)}catch(e){w(n,t,e)}else e.current=null}function Cl(n,t,e){try{e()}catch(e){w(n,t,e)}}function Nl(e,n){if(Ei=Su,Dn(e=Rn())){if("selectionStart"in e)var t={start:e.selectionStart,end:e.selectionEnd};else e:if((a=(t=(t=e.ownerDocument)&&t.defaultView||window).getSelection&&t.getSelection())&&0!==a.rangeCount){var t=a.anchorNode,r=a.anchorOffset,l=a.focusNode,a=a.focusOffset;try{t.nodeType,l.nodeType}catch(e){t=null;break e}var o,u=0,i=-1,s=-1,c=0,f=0,d=e,p=null;n:for(;;){for(;d!==t||0!==r&&3!==d.nodeType||(i=u+r),d!==l||0!==a&&3!==d.nodeType||(s=u+a),3===d.nodeType&&(u+=d.nodeValue.length),null!==(o=d.firstChild);)p=d,d=o;for(;;){if(d===e)break n;if(p===t&&++c===r&&(i=u),p===l&&++f===a&&(s=u),null!==(o=d.nextSibling))break;p=(d=p).parentNode}d=o}t=-1===i||-1===s?null:{start:i,end:s}}else t=null;t=t||{start:0,end:0}}else t=null;for(Su=!(Ci={focusedElem:e,selectionRange:t}),T=n;null!==T;)if(e=(n=T).child,0!=(1028&n.subtreeFlags)&&null!==e)e.return=n,T=e;else for(;null!==T;){n=T;try{var m,h,g,y,v=n.alternate;if(0!=(1024&n.flags))switch(n.tag){case 0:case 11:case 15:break;case 1:null!==v&&(m=v.memoizedProps,h=v.memoizedState,y=(g=n.stateNode).getSnapshotBeforeUpdate(n.elementType===n.type?m:Ar(n.type,m),h),g.__reactInternalSnapshotBeforeUpdate=y);break;case 3:var b=n.stateNode.containerInfo;1===b.nodeType?b.textContent="":9===b.nodeType&&b.documentElement&&b.removeChild(b.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(S(163))}}catch(e){w(n,n.return,e)}if(null!==(e=n.sibling)){e.return=n.return,T=e;break}T=n.return}return v=Os,Os=!1,v}function zl(e,n,t){var r=n.updateQueue;if(null!==(r=null!==r?r.lastEffect:null)){var l,a=r=r.next;do{}while((a.tag&e)===e&&(l=a.destroy,(a.destroy=void 0)!==l)&&Cl(n,t,l),(a=a.next)!==r)}}function Pl(e,n){if(null!==(n=null!==(n=n.updateQueue)?n.lastEffect:null)){var t,r=n=n.next;do{}while((r.tag&e)===e&&(t=r.create,r.destroy=t()),(r=r.next)!==n)}}function _l(e){var n,t=e.ref;null!==t&&(n=e.stateNode,e.tag,e=n,"function"==typeof t?t(e):t.current=e)}function Ll(e){var n=e.alternate;null!==n&&(e.alternate=null,Ll(n)),e.child=null,e.deletions=null,e.sibling=null,5===e.tag&&null!==(n=e.stateNode)&&(delete n[Li],delete n[Ti],delete n[Fi],delete n[Ri],delete n[Di]),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function Tl(e){return 5===e.tag||3===e.tag||4===e.tag}function Ml(e){e:for(;;){for(;null===e.sibling;){if(null===e.return||Tl(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;5!==e.tag&&6!==e.tag&&18!==e.tag;){if(2&e.flags)continue e;if(null===e.child||4===e.tag)continue e;e=(e.child.return=e).child}if(!(2&e.flags))return e.stateNode}}function Fl(e,n,t){var r=e.tag;if(5===r||6===r)e=e.stateNode,n?(8===t.nodeType?t.parentNode:t).insertBefore(e,n):(8===t.nodeType?(n=t.parentNode).insertBefore(e,t):(n=t).appendChild(e),null==(t=t._reactRootContainer)&&null===n.onclick&&(n.onclick=Jn));else if(4!==r&&null!==(e=e.child))for(Fl(e,n,t),e=e.sibling;null!==e;)Fl(e,n,t),e=e.sibling}function Rl(e,n,t){var r=e.tag;if(5===r||6===r)e=e.stateNode,n?t.insertBefore(e,n):t.appendChild(e);else if(4!==r&&null!==(e=e.child))for(Rl(e,n,t),e=e.sibling;null!==e;)Rl(e,n,t),e=e.sibling}function Dl(e,n,t){for(t=t.child;null!==t;)Ol(e,n,t),t=t.sibling}function Ol(e,n,t){if(ou&&"function"==typeof ou.onCommitFiberUnmount)try{ou.onCommitFiberUnmount(au,t)}catch(e){}switch(t.tag){case 5:L||El(t,n);case 6:var r=M,l=Is;M=null,Dl(e,n,t),Is=l,null!==(M=r)&&(Is?(e=M,t=t.stateNode,(8===e.nodeType?e.parentNode:e).removeChild(t)):M.removeChild(t.stateNode));break;case 18:null!==M&&(Is?(e=M,t=t.stateNode,8===e.nodeType?tt(e.parentNode,t):1===e.nodeType&&tt(e,t),Je(e)):tt(M,t.stateNode));break;case 4:r=M,l=Is,M=t.stateNode.containerInfo,Is=!0,Dl(e,n,t),M=r,Is=l;break;case 0:case 11:case 14:case 15:if(!L&&null!==(r=t.updateQueue)&&null!==(r=r.lastEffect)){l=r=r.next;do{var a=(o=l).destroy,o=o.tag}while(void 0===a||0==(2&o)&&0==(4&o)||Cl(t,n,a),(l=l.next)!==r)}Dl(e,n,t);break;case 1:if(!L&&(El(t,n),"function"==typeof(r=t.stateNode).componentWillUnmount))try{r.props=t.memoizedProps,r.state=t.memoizedState,r.componentWillUnmount()}catch(e){w(t,n,e)}Dl(e,n,t);break;case 21:Dl(e,n,t);break;case 22:1&t.mode?(L=(r=L)||null!==t.memoizedState,Dl(e,n,t),L=r):Dl(e,n,t);break;default:Dl(e,n,t)}}function Il(t){var r,e=t.updateQueue;null!==e&&((t.updateQueue=null)===(r=t.stateNode)&&(r=t.stateNode=new Ds),e.forEach(function(e){var n=ka.bind(null,t,e);r.has(e)||(r.add(e),e.then(n,n))}))}function Ul(e,n,t){if(null!==(t=n.deletions))for(var r=0;r