diff --git a/.obsidian/plugins/html-tabs/main.js b/.obsidian/plugins/html-tabs/main.js new file mode 100644 index 0000000..0549bc9 --- /dev/null +++ b/.obsidian/plugins/html-tabs/main.js @@ -0,0 +1,3451 @@ +/* +THIS IS A GENERATED/BUNDLED FILE BY ESBUILD +if you want to view the source, please visit the github repository of this plugin +*/ + +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/main.ts +var main_exports = {}; +__export(main_exports, { + default: () => HTMLTabsPlugin +}); +module.exports = __toCommonJS(main_exports); +var import_obsidian2 = require("obsidian"); + +// src/lines.ts +var Line = class { + constructor(text, line, offset) { + this.text = text; + this.loc = { col: 0, line, offset }; + } +}; + +// src/tabs.ts +var Tabs = class { + constructor() { + this.tabs = []; + this.active_id = 0; + } + hasTabs() { + return this.tabs.length > 0; + } +}; + +// src/util/parsing.ts +function getTabExtSource(el, ctx) { + const sectionInfo = ctx.getSectionInfo(el); + if (!sectionInfo) { + return []; + } + const lines = []; + const rawLines = sectionInfo.text.split("\n"); + let offset = 0; + let lineNumber = 0; + rawLines.forEach((rawLine) => { + if (lineNumber < sectionInfo.lineStart) { + offset += rawLine.length + 1; + lineNumber++; + return; + } + if (lineNumber >= sectionInfo.lineStart && lineNumber <= sectionInfo.lineEnd) { + lines.push(new Line(rawLine, lineNumber, offset)); + offset += rawLine.length + 1; + lineNumber++; + return; + } + }); + return lines; +} +function parseTabs(lines) { + const tabs = new Tabs(); + let newTab = null; + let id = 0; + for (const line of lines) { + if (line.text.startsWith("---tab")) { + if (newTab) { + tabs.tabs.push(newTab); + newTab = null; + } + const match = line.text.match(/---tab(\*)? (.+)/); + if (match) { + const [_, isStarred, label] = match; + newTab = { + id: id++, + label: label.trim(), + content: "" + }; + if (isStarred !== void 0) { + tabs.active_id = newTab.id; + } + } + } else if (newTab) { + if (newTab.content === "") { + newTab.content += line.text; + } else { + newTab.content += "\n" + line.text; + } + } + } + if (newTab) { + tabs.tabs.push(newTab); + } + return tabs; +} +function parseLinesForCache(lines) { + const tabCache = {}; + for (const line of lines) { + parseLineForEmbed(line, tabCache); + parseLineForHeadings(line, tabCache); + parseLineForLinks(line, tabCache); + parseLineForListItems(line, tabCache); + parseLineForSections(line, tabCache); + parseLineForTags(line, tabCache); + } + return tabCache; +} +function parseLineForEmbed(line, tabCache) { +} +function parseLineForHeadings(line, tabCache) { +} +function parseLineForLinks(line, tabCache) { + const linkRegex = /(?[^|\]]+)(\|(?[^\]]+))?\]\]/g; + const matches = [...line.text.matchAll(linkRegex)]; + if (matches.length > 0) { + tabCache.links = []; + matches.forEach(function(match) { + var _a; + const col = match.index ? match.index : 0; + const start2 = { + col, + line: line.loc.line, + offset: line.loc.offset + col + }; + const linkCache = { + intabs: true, + link: match.groups ? match.groups.link : match[1], + original: match[0], + position: { + end: { + col: start2.col + match[0].length, + line: start2.line, + offset: start2.offset + match[0].length + }, + start: start2 + } + }; + if (match.groups && match.groups.display) { + linkCache.displayText = match.groups.display; + } + (_a = tabCache.links) == null ? void 0 : _a.push(linkCache); + }); + } +} +function parseLineForListItems(line, tabCache) { +} +function parseLineForSections(line, tabCache) { +} +function parseLineForTags(line, tabCache) { +} + +// src/util/cache.ts +function updateCache(app2, tabLines) { + rebuildCurrentPageCache(app2, tabLines); +} +function rebuildCurrentPageCache(app2, tabLines) { + const current_file = app2.workspace.getActiveFile(); + const pageCache = getPageCache(current_file); + rebuildPageCache(pageCache, tabLines); + app2.metadataCache.trigger("changed", current_file); + app2.metadataCache.trigger("resolve", current_file); + updateCacheLinks(app2.metadataCache, pageCache, current_file); +} +function updateCacheLinks(metadataCache, pageCache, current_file) { + if (!pageCache || !pageCache.links || !current_file) { + return; + } + const pageResolvedLinks = {}; + const pageUnresolvedLinks = {}; + pageCache.links.forEach((link) => { + if (!link.intabs) { + return; + } + let path = ""; + let pageLinks = pageResolvedLinks; + const file = metadataCache.getFirstLinkpathDest(link.link, ""); + if (!file) { + pageLinks = pageUnresolvedLinks; + path = link.link; + } else { + path = file.path; + } + if (pageLinks[path] === void 0) { + pageLinks[path] = 0; + } + pageLinks[path]++; + }); + metadataCache.resolvedLinks[current_file.path] = pageResolvedLinks; + metadataCache.unresolvedLinks[current_file.path] = pageUnresolvedLinks; +} +function getPageCache(current_file) { + if (!current_file) { + return null; + } + return app.metadataCache.getFileCache(current_file); +} +function rebuildPageCache(pageCache, tabLines) { + if (!pageCache) { + return; + } + const tabCache = parseLinesForCache(tabLines); + rebuildEmbedsCache(pageCache, tabCache); + rebuildHeadingsCache(pageCache, tabCache); + rebuildLinksCache(pageCache, tabCache); + rebuildListItemsCache(pageCache, tabCache); + rebuildSectionsCache(pageCache, tabCache); + rebuildTagsCache(pageCache, tabCache); +} +function rebuildEmbedsCache(pageCache, tabCache) { + if (!tabCache.embeds) { + return; + } + if (!pageCache.embeds) { + pageCache.embeds = []; + } +} +function rebuildHeadingsCache(pageCache, tabCache) { +} +function rebuildLinksCache(pageCache, tabCache) { + if (!tabCache.links) { + return; + } + if (!pageCache.links) { + pageCache.links = []; + } + const filteredLinks = pageCache.links.filter((link) => !link.intabs); + const newLinks = filteredLinks.concat(tabCache.links).sort((a, b) => { + return a.position.start.offset - b.position.start.offset; + }); + pageCache.links = newLinks; +} +function rebuildListItemsCache(pageCache, tabCache) { +} +function rebuildSectionsCache(pageCache, tabCache) { +} +function rebuildTagsCache(pageCache, tabCache) { +} + +// src/ui/rendering.ts +var import_obsidian = require("obsidian"); +function render(tabs, source, container, ctx) { + if (!tabs.hasTabs()) { + renderCodeBlock(container, source, "html"); + return; + } + const plugin2 = window.html_tabs_plugin; + const mainAttributes = { "data-x-data": "{ tab: " + tabs.active_id + " }" }; + const divMain = container.createEl("div", { attr: mainAttributes }); + const divTabs = divMain.createEl("div", { cls: ["html-tabs"] }); + for (let index = 0; index < tabs.tabs.length; index++) { + const element = tabs.tabs[index]; + const classes = ["html-tab"]; + if (index > 0) { + classes.push("html-tab-not-first"); + } + if (index === tabs.active_id) { + classes.push("html-tab-active"); + } + const attributes = { + "data-x-bind:class": "{ 'html-tab-active': tab == " + element.id + " }", + "data-x-on:click": "tab = " + element.id + }; + const divTab = divTabs.createEl("div", { cls: classes, attr: attributes }); + import_obsidian.MarkdownRenderer.render(plugin2.app, element.label, divTab, ctx.sourcePath, plugin2); + } + const divContent = divMain.createEl("div", { cls: ["html-tab-content"] }); + for (let index = 0; index < tabs.tabs.length; index++) { + const element = tabs.tabs[index]; + const attributes = { + "data-x-show": "tab == " + element.id + }; + const divTabContent = divContent.createEl("div", { attr: attributes }); + import_obsidian.MarkdownRenderer.render(plugin2.app, element.content, divTabContent, ctx.sourcePath, plugin2).then(() => { + const checks = divTabContent.findAll("input[type='checkbox']"); + for (let i = 0; i < checks.length; i++) { + checks[i].addEventListener("click", (event) => { + event.preventDefault(); + event.stopPropagation(); + console.log("task has ben (un)checked"); + }); + } + }); + } +} +function renderCodeBlock(container, source, language) { + const code = container.createEl("code", { cls: ["html-tabs"] }); + if (language) { + code.classList.add("language-" + language); + } + code.appendText(source); + return code; +} + +// node_modules/.pnpm/alpinejs@3.13.0/node_modules/alpinejs/dist/module.esm.js +var flushPending = false; +var flushing = false; +var queue = []; +var lastFlushedIndex = -1; +function scheduler(callback) { + queueJob(callback); +} +function queueJob(job) { + if (!queue.includes(job)) + queue.push(job); + queueFlush(); +} +function dequeueJob(job) { + let index = queue.indexOf(job); + if (index !== -1 && index > lastFlushedIndex) + queue.splice(index, 1); +} +function queueFlush() { + if (!flushing && !flushPending) { + flushPending = true; + queueMicrotask(flushJobs); + } +} +function flushJobs() { + flushPending = false; + flushing = true; + for (let i = 0; i < queue.length; i++) { + queue[i](); + lastFlushedIndex = i; + } + queue.length = 0; + lastFlushedIndex = -1; + flushing = false; +} +var reactive; +var effect; +var release; +var raw; +var shouldSchedule = true; +function disableEffectScheduling(callback) { + shouldSchedule = false; + callback(); + shouldSchedule = true; +} +function setReactivityEngine(engine) { + reactive = engine.reactive; + release = engine.release; + effect = (callback) => engine.effect(callback, { scheduler: (task) => { + if (shouldSchedule) { + scheduler(task); + } else { + task(); + } + } }); + raw = engine.raw; +} +function overrideEffect(override) { + effect = override; +} +function elementBoundEffect(el) { + let cleanup2 = () => { + }; + let wrappedEffect = (callback) => { + let effectReference = effect(callback); + if (!el._x_effects) { + el._x_effects = /* @__PURE__ */ new Set(); + el._x_runEffects = () => { + el._x_effects.forEach((i) => i()); + }; + } + el._x_effects.add(effectReference); + cleanup2 = () => { + if (effectReference === void 0) + return; + el._x_effects.delete(effectReference); + release(effectReference); + }; + return effectReference; + }; + return [wrappedEffect, () => { + cleanup2(); + }]; +} +function dispatch(el, name, detail = {}) { + el.dispatchEvent( + new CustomEvent(name, { + detail, + bubbles: true, + // Allows events to pass the shadow DOM barrier. + composed: true, + cancelable: true + }) + ); +} +function walk(el, callback) { + if (typeof ShadowRoot === "function" && el instanceof ShadowRoot) { + Array.from(el.children).forEach((el2) => walk(el2, callback)); + return; + } + let skip = false; + callback(el, () => skip = true); + if (skip) + return; + let node = el.firstElementChild; + while (node) { + walk(node, callback, false); + node = node.nextElementSibling; + } +} +function warn(message, ...args) { + console.warn(`Alpine Warning: ${message}`, ...args); +} +var started = false; +function start() { + if (started) + warn("Alpine has already been initialized on this page. Calling Alpine.start() more than once can cause problems."); + started = true; + if (!document.body) + warn("Unable to initialize. Trying to load Alpine before `` is available. Did you forget to add `defer` in Alpine's `