diff --git a/src/preview-mode/custom-element/SpoilerSpanElement.ts b/src/preview-mode/custom-element/SpoilerSpanElement.ts deleted file mode 100644 index b3c5cc8..0000000 --- a/src/preview-mode/custom-element/SpoilerSpanElement.ts +++ /dev/null @@ -1,19 +0,0 @@ -export class SpoilerSpanElement extends HTMLElement { - constructor() { - super(); - } - clickListener = (evt: MouseEvent) => { - let curTarget = evt.currentTarget as HTMLElement; - if (curTarget.getAttribute("revealed") === null) { - curTarget.setAttribute("revealed", ""); - } else { - curTarget.removeAttribute("revealed"); - } - } - connectedCallback() { - this.addEventListener("click", this.clickListener); - } - disconnectedCallback() { - this.removeEventListener("click", this.clickListener); - } -} \ No newline at end of file diff --git a/src/preview-mode/custom-element/index.ts b/src/preview-mode/custom-element/index.ts deleted file mode 100644 index 5f4f415..0000000 --- a/src/preview-mode/custom-element/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./SpoilerSpanElement"; \ No newline at end of file diff --git a/src/preview-mode/post-processor/PreviewExtendedSyntax.ts b/src/preview-mode/post-processor/PreviewExtendedSyntax.ts index 1af26c7..60ebf6b 100644 --- a/src/preview-mode/post-processor/PreviewExtendedSyntax.ts +++ b/src/preview-mode/post-processor/PreviewExtendedSyntax.ts @@ -1,11 +1,9 @@ import { MarkdownPostProcessor } from "obsidian"; import { PreviewModeParser } from "src/preview-mode/parser"; import { CustomAlign, CustomHighlight } from "src/preview-mode/post-processor"; -import { SpoilerSpanElement } from "src/preview-mode/custom-element"; export class PreviewExtendedSyntax { constructor() { - customElements.define("spoiler-span", SpoilerSpanElement); } private readonly query = "p, h1, h2, h3, h4, h5, h6, td, th, li:not(:has(p)), .callout-title-inner"; private customAlign = new CustomAlign(); diff --git a/src/shared-configs/FormatRules.ts b/src/shared-configs/FormatRules.ts index 54c75cc..c437fd0 100644 --- a/src/shared-configs/FormatRules.ts +++ b/src/shared-configs/FormatRules.ts @@ -14,7 +14,15 @@ export const FormatRules: { [P in MainFormat]: {char: string, length: number, ex length: 2, exactLen: true, allowSpace: true, - getEl: () => document.createElement("spoiler-span") + getEl: () => { + return document.createSpan({ cls: "spoiler" }, (el) => { + el.addEventListener("click", (evt) => { + let spoiler = evt.currentTarget as Element, + isHidden = !spoiler.hasClass("spoiler-revealed"); + spoiler.toggleClass("spoiler-revealed", isHidden); + }) + }); + } }, [Format.SUPERSCRIPT]: { char: "^", diff --git a/styles.css b/styles.css index 6150d8a..ddd43da 100644 --- a/styles.css +++ b/styles.css @@ -115,7 +115,7 @@ mark { } } -spoiler-span { +span.spoiler { border-radius: 2px; transition-duration: 0.1s; transition-property: color; @@ -125,7 +125,7 @@ spoiler-span { .theme-light & { background-color: var(--color-base-40); } - &:not([revealed]) { + &:not(.spoiler-revealed) { color: transparent; } } \ No newline at end of file