mirror of
https://github.com/glassflame/glassflame.github.io.git
synced 2024-11-23 00:24:25 +00:00
Working wikilinks!
This commit is contained in:
parent
ce594624dc
commit
8d3343fa05
3 changed files with 66 additions and 29 deletions
|
@ -34,21 +34,6 @@ export class BrowseElement extends HTMLBodyElement {
|
||||||
return url
|
return url
|
||||||
}
|
}
|
||||||
|
|
||||||
urlName(name) {
|
|
||||||
if(name.startsWith(".")) {
|
|
||||||
const path = filePath(name).join("/")
|
|
||||||
return this.urlFor({path})
|
|
||||||
}
|
|
||||||
else if(!name.includes("/")) {
|
|
||||||
const path = `${fileDetails(this.parameters.path).directory}/${name}.md`
|
|
||||||
return this.urlFor({path})
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
const path = filePath(name).join("/")
|
|
||||||
return this.urlFor({path})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO: Add a landing page
|
// TODO: Add a landing page
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
import { CustomElement } from "../base.mjs";
|
import { CustomElement } from "../base.mjs";
|
||||||
import {findFirstAncestor} from "../../utils/trasversal.mjs";
|
import {findFirstAncestor} from "../../utils/trasversal.mjs";
|
||||||
import {BrowseElement} from "../browse.mjs";
|
import {BrowseElement} from "../browse.mjs";
|
||||||
|
import {VaultElement} from "../vault.mjs";
|
||||||
|
import {filePath} from "../../utils/file.mjs";
|
||||||
|
import {DisplayElement} from "../display.mjs";
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -12,17 +15,34 @@ export class WikilinkElement extends CustomElement {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Element handling the page navigation.
|
* Element displaying the this one.
|
||||||
* @type {BrowseElement}
|
* Can be recalculated with {@link recalculateAncestors}.
|
||||||
|
* @type {DisplayElement}
|
||||||
*/
|
*/
|
||||||
browseElement
|
display
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Recalculate the value of {@link browseElement} using this element's current position in the DOM.
|
* Element representing the Obsidian Vault.
|
||||||
|
* Can be recalculated with {@link recalculateAncestors}.
|
||||||
|
* @type {VaultElement}
|
||||||
|
*/
|
||||||
|
vault
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Element handling the page navigation.
|
||||||
|
* Can be recalculated with {@link recalculateAncestors}.
|
||||||
|
* @type {BrowseElement}
|
||||||
|
*/
|
||||||
|
browse
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Recalculate the value of {@link browse} and {@link vault} using this element's current position in the DOM.
|
||||||
* @returns {void}
|
* @returns {void}
|
||||||
*/
|
*/
|
||||||
recalculateBrowseElement() {
|
recalculateAncestors() {
|
||||||
this.browseElement = findFirstAncestor(this, BrowseElement)
|
this.display = findFirstAncestor(this, DisplayElement)
|
||||||
|
this.vault = findFirstAncestor(this, VaultElement)
|
||||||
|
this.browse = findFirstAncestor(this, BrowseElement)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -69,13 +89,28 @@ export class WikilinkElement extends CustomElement {
|
||||||
}
|
}
|
||||||
|
|
||||||
resetAnchorElementProperties() {
|
resetAnchorElementProperties() {
|
||||||
this.anchorElement.href = this.browseElement.urlName(this.target)
|
let path = null
|
||||||
|
if(this.target.startsWith(".")) {
|
||||||
|
path = filePath(this.display.path + "/" + this.target).join("/")
|
||||||
|
}
|
||||||
|
else if(this.target.includes("/")) {
|
||||||
|
path = filePath(this.target).join("/")
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if(this.vault.fileIndex !== null) {
|
||||||
|
path = this.vault.fileIndex.basenames[this.target]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(path !== null) {
|
||||||
|
this.anchorElement.href = this.browse.urlFor({path}).toString()
|
||||||
|
}
|
||||||
this.anchorElement.innerText = this.text
|
this.anchorElement.innerText = this.text
|
||||||
}
|
}
|
||||||
|
|
||||||
onConnect() {
|
onConnect() {
|
||||||
super.onConnect()
|
super.onConnect()
|
||||||
this.recalculateBrowseElement()
|
this.recalculateAncestors()
|
||||||
this.recalculateAnchorElement()
|
this.recalculateAnchorElement()
|
||||||
this.resetAnchorElementProperties()
|
this.resetAnchorElementProperties()
|
||||||
}
|
}
|
||||||
|
|
|
@ -119,7 +119,6 @@ export class VaultElement extends CustomElement {
|
||||||
this.vaultElement = this.instance.querySelector(this.constructor.VAULT_SELECTOR)
|
this.vaultElement = this.instance.querySelector(this.constructor.VAULT_SELECTOR)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The accent color of this vault.
|
* The accent color of this vault.
|
||||||
* Can be set manually, or updated via {@link refetchAppearance}.
|
* Can be set manually, or updated via {@link refetchAppearance}.
|
||||||
|
@ -145,12 +144,30 @@ export class VaultElement extends CustomElement {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
onConnect() {
|
/**
|
||||||
|
* Index containing information about the files available in the Vault.
|
||||||
|
* Used to resolve Wikilinks.
|
||||||
|
* @type {{basenames: {[basename: string]: string}, paths: []} | null}
|
||||||
|
*/
|
||||||
|
fileIndex
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update {@link fileIndex} by fetching the `steffo-file-index.json` file located at the root of the Vault.
|
||||||
|
* @returns {Promise<void>}
|
||||||
|
*/
|
||||||
|
async refetchSteffoFileIndex() {
|
||||||
|
const response = await this.fetchCooldown("steffo-file-index.json")
|
||||||
|
if(response.status >= 400) {
|
||||||
|
this.fileIndex = null
|
||||||
|
}
|
||||||
|
this.fileIndex = await response.json()
|
||||||
|
}
|
||||||
|
|
||||||
|
async onConnect() {
|
||||||
super.onConnect()
|
super.onConnect()
|
||||||
this.recalculateVaultElement()
|
this.recalculateVaultElement()
|
||||||
// noinspection JSIgnoredPromiseFromCall
|
this.#fetchQueueScheduler().then()
|
||||||
this.#fetchQueueScheduler()
|
await this.refetchAppearance()
|
||||||
// noinspection JSIgnoredPromiseFromCall
|
await this.refetchSteffoFileIndex()
|
||||||
this.refetchAppearance()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in a new issue