// src/template.html var template_default = '<div id="breadcrumbs-bar">\r\n <div id="history-buttons">\r\n <button onclick="window.history.back()" class="tree-floating-button bx bx-left-arrow-circle tree-settings-button" title="Go Back"></button>\r\n <button onclick="window.history.forward()" class="tree-floating-button bx bx-right-arrow-circle tree-settings-button" title="Go Back"></button>\r\n </div>\r\n <div id="breadcrumbs"></div>\r\n</div>'; // src/styles.css var styles_default = "#breadcrumbs-bar {\r\n display: flex;\r\n align-items: center;\r\n gap: 10px;\r\n padding: 10px;\r\n border-top: 1px solid var(--main-border-color);\r\n border-bottom: 1px solid var(--main-border-color);\r\n contain: none;\r\n}\r\n\r\n#breadcrumbs-bar.bottom {\r\n border-bottom: 0;\r\n}\r\n\r\n.note-split > #breadcrumbs-bar {\r\n border-top: 0;\r\n margin: 0 5px 0 10px;\r\n padding: 10px 10px 15px 10px;\r\n}\r\n\r\n#breadcrumbs-bar.borderless {\r\n border: 0;\r\n}\r\n\r\n#breadcrumbs {\r\n display: flex;\r\n align-items: center;\r\n gap: 6px;\r\n}\r\n\r\n#breadcrumbs a {\r\n display: inline-flex;\r\n line-height: 1;\r\n padding: 5px 10px;\r\n background-color: rgba(255, 255, 255, 0.1);\r\n border-radius: 12px;\r\n transition: transform 200ms ease, background-color 200ms ease, filter 200ms ease;\r\n}\r\n\r\n#breadcrumbs a:hover {\r\n text-decoration: none;\r\n background-color: rgba(255, 255, 255, 0.2);\r\n filter: brightness(1.2);\r\n transform: translateY(-3px);\r\n}\r\n\r\n#history-buttons {\r\n display: inline-flex;\r\n white-space: nowrap;\r\n}\r\n\r\n#breadcrumbs span a {\r\n white-space: pre;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n display: inherit;\r\n}"; // src/index.ts var position = api.startNote.getLabelValue("position") ?? "center"; var BreadcrumbWidget = class extends api.NoteContextAwareWidget { get position() { return position === "bottom" ? 100 : position === "top" ? 1 : 50; } static get parentWidget() { return position === "bottom" || position === "top" ? "center-pane" : "note-detail-pane"; } constructor() { super(); this.title = ""; } isEnabled() { var _a; if (!super.isEnabled()) return false; const widgetDisable = api.startNote.getLabelValue("globalDisable") === "true"; const noteDisable = (_a = this.note) == null ? void 0 : _a.hasLabel("breadcrumbsDisable"); return !widgetDisable && !noteDisable; } doRender() { this.$widget = $(template_default); this.$breadcrumbs = this.$widget.find("#breadcrumbs"); this.updateStyles(); const maxWidth = api.startNote.getLabelValue("maxCrumbWidth") ?? 250; const maxCrumbWidth = `#breadcrumbs span a { max-width: ${maxWidth}px; }`; this.cssBlock(`${styles_default} ${maxCrumbWidth}`); return this.$widget; } async refreshWithNote() { await this.makeBreadcrumb(); } async entitiesReloadedEvent({ loadResults }) { var _a; if ((_a = loadResults == null ? void 0 : loadResults.attributeRows) == null ? void 0 : _a.length) this.updateStyles(); if (!this.note) { this.title = ""; return; } if (!this.title) this.title = this.note.title; if (this.note.title != this.title) { this.title = this.note.title; await this.refresh(); } } async makeBreadcrumb() { var _a; this.$breadcrumbs.empty(); const notePath = ((_a = api.getActiveContextNotePath()) == null ? void 0 : _a.split("/")) ?? []; for (let n = 0; n < notePath.length; n++) { const path = notePath.slice(0, n + 1); const link = await api.createLink(path.join("/")); this.$breadcrumbs.append(link); if (n < notePath.length - 1) this.$breadcrumbs.append("/"); } } updateStyles() { this.updateHistoryButtons(); this.updateWidths(); this.updateBorders(); this.updatePosition(); } updateHistoryButtons() { const buttonWrapper = this.$widget.find("#history-buttons"); if (!buttonWrapper) return; const isVisible = buttonWrapper.css("display") !== "none"; const shouldHide = api.startNote.getLabelValue("hideHistory") === "true"; if (isVisible && shouldHide) buttonWrapper.hide(); if (!isVisible && !shouldHide) buttonWrapper.show(); } updateWidths() { const maxWidth = api.startNote.getLabelValue("maxCrumbWidth") ?? 250; const maxCrumbWidth = `#breadcrumbs span a { max-width: ${maxWidth}px; }`; if (!this.styleElement) this.styleElement = this.$widget.find("style").first()[0]; if (this.styleElement) this.styleElement.textContent = `${styles_default} ${maxCrumbWidth}`; } updateBorders() { const shouldHide = api.startNote.getLabelValue("hideBorders") === "true"; const isVisible = !this.$widget.hasClass("borderless"); if (isVisible && shouldHide) this.$widget.addClass("borderless"); if (!isVisible && !shouldHide) this.$widget.removeClass("borderless"); } updatePosition() { if (position === "bottom") this.$widget.addClass("bottom"); } }; module.exports = BreadcrumbWidget;