|
7 | 7 | Plugin |
8 | 8 | } from "obsidian"; |
9 | 9 | import { Admonition, ObsidianAdmonitionPlugin } from "../@types/types"; |
10 | | -import { findIconDefinition, icon } from "./icons"; |
| 10 | +import { getAdmonitionElement } from './util'; |
11 | 11 |
|
12 | 12 | import * as CodeMirror from "./codemirror"; |
13 | 13 |
|
@@ -268,7 +268,9 @@ export default class ObsidianAdmonition |
268 | 268 |
|
269 | 269 | let params = Object.fromEntries( |
270 | 270 | matchedParameters.map((p) => |
271 | | - p.split(/:\s?/).map((s) => s.trim()) |
| 271 | + { |
| 272 | + let [, param, rest] = p.match(/^\b(title|collapse)\b:([\s\S]*?)$/) |
| 273 | + return [ param.trim(), rest.trim()]} |
272 | 274 | ) |
273 | 275 | ); |
274 | 276 |
|
@@ -317,9 +319,11 @@ export default class ObsidianAdmonition |
317 | 319 | * Collapsible -> <details> <summary> Title </summary> <div> Content </div> </details> |
318 | 320 | * Regular -> <div> <div> Title </div> <div> Content </div> </div> |
319 | 321 | */ |
320 | | - let admonitionElement = this.getAdmonitionElement( |
| 322 | + let admonitionElement = getAdmonitionElement( |
321 | 323 | type, |
322 | 324 | title, |
| 325 | + this.admonitions[type].icon, |
| 326 | + this.admonitions[type].color, |
323 | 327 | collapse |
324 | 328 | ); |
325 | 329 |
|
@@ -402,60 +406,6 @@ export default class ObsidianAdmonition |
402 | 406 | el.replaceWith(pre); |
403 | 407 | } |
404 | 408 | } |
405 | | - getAdmonitionElement( |
406 | | - type: string, |
407 | | - title: string, |
408 | | - collapse?: string |
409 | | - ): HTMLElement { |
410 | | - let admonition, |
411 | | - titleEl, |
412 | | - attrs: { style: string; open?: string } = { |
413 | | - style: `--admonition-color: ${this.admonitions[type].color};` |
414 | | - }; |
415 | | - if (collapse) { |
416 | | - if (collapse === "open") { |
417 | | - attrs.open = "open"; |
418 | | - } |
419 | | - admonition = createEl("details", { |
420 | | - cls: `admonition admonition-${type}`, |
421 | | - attr: attrs |
422 | | - }); |
423 | | - titleEl = admonition.createEl("summary", { |
424 | | - cls: `admonition-title ${ |
425 | | - !title.trim().length ? "no-title" : "" |
426 | | - }` |
427 | | - }); |
428 | | - } else { |
429 | | - admonition = createDiv({ |
430 | | - cls: `admonition admonition-${type}`, |
431 | | - attr: attrs |
432 | | - }); |
433 | | - titleEl = admonition.createDiv({ |
434 | | - cls: `admonition-title ${ |
435 | | - !title.trim().length ? "no-title" : "" |
436 | | - }` |
437 | | - }); |
438 | | - } |
439 | | - |
440 | | - let titleContentEl = createDiv("title-content"); |
441 | | - MarkdownRenderer.renderMarkdown(title, titleContentEl, "", null); |
442 | | - |
443 | | - const iconEl = createDiv("admonition-title-icon"); |
444 | | - iconEl.appendChild( |
445 | | - icon( |
446 | | - findIconDefinition({ |
447 | | - iconName: this.admonitions[type].icon |
448 | | - }) |
449 | | - ).node[0] |
450 | | - ); |
451 | | - titleContentEl.children[0].prepend(iconEl); |
452 | | - titleEl.appendChild(titleContentEl.children[0]); |
453 | | - |
454 | | - if (collapse) { |
455 | | - titleEl.createDiv("collapser").createDiv("handle"); |
456 | | - } |
457 | | - return admonition; |
458 | | - } |
459 | 409 | async onunload() { |
460 | 410 | console.log("Obsidian Admonition unloaded"); |
461 | 411 |
|
|
0 commit comments