You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
86 lines
11 KiB
86 lines
11 KiB
3 years ago
|
/*
|
||
|
THIS IS A GENERATED/BUNDLED FILE BY ROLLUP
|
||
|
if you want to view the source visit the plugins github repository
|
||
|
*/
|
||
|
|
||
|
'use strict';
|
||
|
|
||
|
var obsidian = require('obsidian');
|
||
|
|
||
|
//string to array of classes
|
||
|
const arrayToClasses = (input) => {
|
||
|
input = input.trim();
|
||
|
if (input[0] != "[" || input[input.length - 1] != "]")
|
||
|
return [];
|
||
|
return input
|
||
|
.substring(1, input.length - 1)
|
||
|
.trim()
|
||
|
.split(/\s*,\s*/);
|
||
|
};
|
||
|
class EventFactory {
|
||
|
constructor(root, sourcePath) {
|
||
|
this.root = root;
|
||
|
this.sourcePath = sourcePath;
|
||
|
}
|
||
|
//remove first child's top margin and last child's bottom margin
|
||
|
regulate(component) {
|
||
|
let aux = component.lastChild;
|
||
|
aux.style.marginBottom = "0";
|
||
|
aux = component.firstChild;
|
||
|
aux.style.marginTop = "0";
|
||
|
}
|
||
|
create(time, title, description) {
|
||
|
let timeEl = this.root.createDiv({ cls: "time" });
|
||
|
let infoEl = this.root.createDiv({ cls: "info" });
|
||
|
let titleEl = infoEl.createDiv({ cls: "title" });
|
||
|
let descriptionEl = infoEl.createDiv({ cls: "description" });
|
||
|
obsidian.MarkdownRenderer.renderMarkdown(time, timeEl, this.sourcePath, null);
|
||
|
obsidian.MarkdownRenderer.renderMarkdown(title, titleEl, this.sourcePath, null);
|
||
|
obsidian.MarkdownRenderer.renderMarkdown(description, descriptionEl, this.sourcePath, null);
|
||
|
this.regulate(descriptionEl);
|
||
|
this.regulate(timeEl);
|
||
|
this.regulate(titleEl);
|
||
|
}
|
||
|
}
|
||
|
const codeBlockHandler = (source, el, ctx) => {
|
||
|
//Initial State
|
||
|
el.addClass("timeline");
|
||
|
let ef = new EventFactory(el, ctx.sourcePath);
|
||
|
//source to events
|
||
|
const events = source
|
||
|
.split(/^\s*\+ ?/gm)
|
||
|
.map((event) => (event.trim().length != 0 ? event : "\u200B"));
|
||
|
for (let elClass of arrayToClasses(events[0]))
|
||
|
el.addClass(elClass);
|
||
|
const incompleteCounter = (events.length - 1) % 3;
|
||
|
const completeCounter = events.length - 1 - incompleteCounter;
|
||
|
//build it
|
||
|
el.createDiv({
|
||
|
cls: "main-line",
|
||
|
attr: {
|
||
|
style: `grid-row-end: ${completeCounter / 3 + 1 + (incompleteCounter != 0 ? 1 : 0)}`,
|
||
|
},
|
||
|
});
|
||
|
for (let i = 1; i < completeCounter; i += 3) {
|
||
|
ef.create(events[i], events[i + 1], events[i + 2]);
|
||
|
}
|
||
|
switch (incompleteCounter) {
|
||
|
case 1:
|
||
|
ef.create(events[completeCounter + 1], "", "");
|
||
|
return;
|
||
|
case 2:
|
||
|
ef.create(events[completeCounter + 1], events[completeCounter + 2], "");
|
||
|
return;
|
||
|
default:
|
||
|
return;
|
||
|
}
|
||
|
};
|
||
|
class MyPlugin extends obsidian.Plugin {
|
||
|
onload() {
|
||
|
this.registerMarkdownCodeBlockProcessor("timeline", codeBlockHandler);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
module.exports = MyPlugin;
|
||
|
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsibWFpbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG5cdFBsdWdpbixcclxuXHRNYXJrZG93blBvc3RQcm9jZXNzb3JDb250ZXh0LFxyXG5cdE1hcmtkb3duUmVuZGVyZXIsXHJcbn0gZnJvbSBcIm9ic2lkaWFuXCI7XHJcblxyXG4vL3N0cmluZyB0byBhcnJheSBvZiBjbGFzc2VzXHJcbmNvbnN0IGFycmF5VG9DbGFzc2VzID0gKGlucHV0OiBzdHJpbmcpOiBzdHJpbmdbXSA9PiB7XHJcblx0aW5wdXQgPSBpbnB1dC50cmltKCk7XHJcblx0aWYgKGlucHV0WzBdICE9IFwiW1wiIHx8IGlucHV0W2lucHV0Lmxlbmd0aCAtIDFdICE9IFwiXVwiKSByZXR1cm4gW107XHJcblxyXG5cdHJldHVybiBpbnB1dFxyXG5cdFx0LnN1YnN0cmluZygxLCBpbnB1dC5sZW5ndGggLSAxKVxyXG5cdFx0LnRyaW0oKVxyXG5cdFx0LnNwbGl0KC9cXHMqLFxccyovKTtcclxufTtcclxuXHJcbmNsYXNzIEV2ZW50RmFjdG9yeSB7XHJcblx0cm9vdDogSFRNTEVsZW1lbnQ7XHJcblx0c291cmNlUGF0aDogc3RyaW5nO1xyXG5cclxuXHRjb25zdHJ1Y3Rvcihyb290OiBIVE1MRWxlbWVudCwgc291cmNlUGF0aDogc3RyaW5nKSB7XHJcblx0XHR0aGlzLnJvb3QgPSByb290O1xyXG5cdFx0dGhpcy5zb3VyY2VQYXRoID0gc291cmNlUGF0aDtcclxuXHR9XHJcblxyXG5cdC8vcmVtb3ZlIGZpcnN0IGNoaWxkJ3MgdG9wIG1hcmdpbiBhbmQgbGFzdCBjaGlsZCdzIGJvdHRvbSBtYXJnaW5cclxuXHRyZWd1bGF0ZShjb21wb25lbnQ6IEhUTUxEaXZFbGVtZW50KSB7XHJcblx0XHRsZXQgYXV4ID0gY29tcG9uZW50Lmxhc3RDaGlsZCBhcyBIVE1MRWxlbWVudDtcclxuXHRcdGF1eC5zdHlsZS5tYXJnaW5Cb3R0b20gPSBcIjBcIjtcclxuXHRcdGF1eCA9IGNvbXBvbmVudC5maXJzdENoaWxkIGFzIEhUTUxFbGVtZW50O1xyXG5cdFx0YXV4LnN0eWxlLm1hcmdpblRvcCA9IFwiMFwiO1xyXG5cdH1cclxuXHJcblx0Y3JlYXRlKHRpbWU6IHN0cmluZywgdGl0bGU6IHN0cmluZywgZGVzY3JpcHRpb246IHN0cmluZykge1xyXG5cdFx0bGV0IHRpbWVFbCA9IHRoaXMucm9vdC5jcmVhdGVEaXYoeyBjbHM6IFwidGltZVwiIH0pO1xyXG5cdFx0bGV0IGluZm9FbCA9IHRoaXMucm9vdC5jcmVhdGVEaXYoeyBjbHM6IFwiaW5mb1wiIH0pO1xyXG5cdFx0bGV0IHRpdGxlRWwgPSBpbmZvRWwuY3JlYXRlRGl2KHsgY2xzOiBcInRpdGxlXCIgfSk7XHJcblx0XHRsZXQgZGVzY3JpcHRpb25FbCA9IGluZm9FbC5jcmVhdGVEaXYoeyBjbHM6IFwiZGVzY3JpcHRpb25cIiB9KTtcclxuXHJcblx0XHRNYXJrZG93blJlbmRlcmVyLnJlbmRlck1hcmtkb3duKHRpbWUsIHRpbWVFbCwgdGhpcy5zb3VyY2VQYXRoLCBudWxsKTtcclxuXHRcdE1hcmtkb3duUmVuZGVyZXIucmVuZGVyTWFya2Rvd24odGl0bGUsIHRpdGxlRWwsIHRoaXMuc291cmNlUGF0aCwgbnVsbCk7XHJcblx0XHRNYXJrZG93blJlbmRlcmVyLnJlbmRlck1hcmtkb3duKFxyXG5cdFx0XHRkZXNjcmlwdGlvbixcclxuXHRcdFx0ZGVzY3JpcHRpb25FbCxcclxuXHRcdFx0dGhpcy5zb3VyY2VQYXRoLFxyXG5cdFx0XHRudWxsXHJcblx0XHQpO1xyXG5cclxuXHRcdHRoaXMucmVndWxhdGUoZGVzY3JpcHRpb25FbCk7XHJcblx0XHR0aGlzLnJlZ3VsYXRlKHRpbWVFbCk7XHJcblx0XHR0aGlzLnJlZ3VsYXRlKHRpdGxlRWwpO1xyXG5cdH1cclxufVxyXG5cclxuY29uc3QgY29kZUJsb2NrSGFuZGxlciA9IChcclxuXHRzb3VyY2U6IHN0cmluZyxcclxuXHRlbDogSFRNTEVsZW1lbnQsXHJcblx0Y3R4OiBNYXJrZG93blBvc3RQcm9jZXNzb3JDb250ZXh0XHJcbikgPT4ge1xyXG5cdC8vSW5pdGlhbCBTdGF0ZVxyXG5cdGVsLmFkZENsYXNzKFwidGltZWxpbmVcIik7XHJcblx0bGV0IGVmID0gbmV3IEV2ZW50RmFjdG9yeShlbCwgY3R4LnNvdXJjZVBhdGgpO1xyXG5cclxuXHQvL3NvdXJjZSB0byBldmVudHNcclxuXHRjb25zdCBldmVudHM6IHN0cmluZ1tdID0gc291cmNlXHJcblx0XHQuc3BsaXQoL15cXHMqXFwrID8vZ20pXHJcblx0XHQubWFwKChldmVudCkgPT4gKGV2ZW50LnRyaW0oKS5sZW5ndGggIT0gMCA/IGV2ZW50IDogXCJcXHUyMDBCXCIpKTtcclxuXHRmb3IgKGxldCBlbENsYXNzIG9mIGFycmF5VG9DbGFzc2VzKGV2ZW50c1swXSkpIGVsLmFkZENsYXNzKGVsQ2xhc3MpO1xyXG5cclxuXHRjb25zdCBpbmNvbXBsZXRlQ291bnRlciA9IChldmVudHMubGVuZ3RoIC0gMSkgJSAzO1xyXG5cdGNvbnN0IGNvbXBsZXRlQ291bnRlciA9IGV2ZW50cy5sZW5ndGggLSAxIC0gaW5jb21wbGV0ZUNvdW50ZXI7XHJcblxyXG5cdC8vYnVpbGQgaXRcclxuXHRlbC5jcmVhdGVEaXYoe1xyXG5cdFx0Y2xzOiBcIm1haW4tbGluZVwiLFxyXG5cdFx0YXR0cjoge1xyXG5cdFx0XHRzdHlsZTogYGdyaWQtcm93LWVuZDogJHtcclxuXHRcdFx0XHRjb21wbGV0ZUNvdW50ZXIgLyAzICsgMSArIChpbmNvbXBsZXRlQ291bnRlciAhPSAwID8gMSA6IDApXHJcblx0XHRcdH1gLFxyXG5cdFx0fSxcclxuXHR9KTtcclxuXHRmb3IgKGxldCBpID0gMTsgaSA8IGNvbXBsZXRlQ291bnRlcjsgaSArPSAzKSB7XHJcblx0XHRlZi5jcmVhdGUoZXZlbnRzW2ldLCBldmVudHNbaSArIDFdLCBldmVudHNbaSArIDJdKTtcclxuXHR9XHJcblxyXG5cdHN3aXRjaCAoaW5jb21wbGV0ZUNvdW50ZXIpIHtcclxuXHRcdGNhc2UgMTpcclxuXHRcdFx0ZWYuY3JlYXRlKGV2ZW50c1tjb21wbGV0ZUNvdW50ZXIgKyAxXSwgXCJcIiwgXCJcIik7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdGNhc2UgMjpcclxuXHRcdFx0ZWYuY3JlYXRlKGV2ZW50c1tjb21wbGV0ZUNvdW50ZXIgKyAxXSwgZXZlbnRzW2NvbXBsZXRlQ291bnRlciArIDJdLCBcIlwiKTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0ZGVmYXVsdDpcclxuXHRcdFx0cmV0dXJuO1xyXG5cdH1cclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE15UGx1Z2luIGV4dGVuZHMgUGx1Z2luIHtcclxuXHRvbmxvYWQoKSB7XHJcblx
|