@cisstech/nge
Version:
NG Essentials is a collection of libraries for Angular developers.
156 lines (149 loc) • 17.4 kB
JavaScript
import { Injectable } from '@angular/core';
import { NGE_MARKDOWN_CONTRIBUTION } from '../nge-markdown-contribution';
import * as i0 from "@angular/core";
let TABSET_COUNTER = 0;
/**
* Contribution to render tabs inside markdown files.
*/
export class NgeMarkdownTabbedSet {
contribute(transformer) {
this.addStyles();
transformer.addHtmlTransformer((el) => {
const open = /^===\s*(.+)/;
const close = /^===\s*$/;
const processed = [];
const toRemoves = [];
el.querySelectorAll('p').forEach((paragraph) => {
if (processed.indexOf(paragraph) !== -1) {
return;
}
const match = paragraph.innerHTML.match(open);
if (match) {
const tabs = [];
let tab = {
title: match[1],
content: [],
};
let node = paragraph.nextElementSibling;
while (node) {
let push = true;
const innerHTML = node.innerHTML.trim();
if (innerHTML.match(open)) {
tabs.push(tab);
tab = {
title: innerHTML.replace('===', '').trim(),
content: [],
};
push = false;
toRemoves.push(node);
}
else if (innerHTML.match(close)) {
tabs.push(tab);
toRemoves.push(node);
break;
}
if (push) {
tab.content.push(node);
}
processed.push(node);
node = node.nextElementSibling;
}
paragraph.parentElement?.replaceChild(this.createTabs(tabs), paragraph);
paragraph.remove();
toRemoves.forEach((e) => e.remove());
}
});
});
}
createTabs(tabs) {
const tabset = document.createElement('div');
tabset.className = 'nge-md-tabbed-set';
let i = 0;
TABSET_COUNTER++;
tabs.forEach((e) => {
const checkbox = document.createElement('input');
checkbox.type = 'radio';
checkbox.id = 'nge-md-tabbed-' + TABSET_COUNTER + '-' + i;
checkbox.name = 'nge-md-tabbed-' + TABSET_COUNTER;
if (i === 0) {
checkbox.setAttribute('checked', 'checked');
}
const label = document.createElement('label');
label.setAttribute('for', checkbox.id);
label.innerHTML = e.title;
const content = document.createElement('div');
content.className = 'nge-md-tabbed-content';
e.content.forEach((c) => content.appendChild(c));
tabset.append(checkbox, label, content);
i++;
});
return tabset;
}
addStyles() {
const head = document.head;
if (head.querySelector('[nge-markdown-tabbed-set]')) {
return;
}
const style = document.createElement('style');
style.setAttribute('nge-markdown-tabbed-set', '');
style.innerHTML = `
/* TAB SET */
.nge-md-tabbed-set {
display: flex;
position: relative;
flex-wrap: wrap;
margin: 1em 0;
border-radius: .1rem;
}
.nge-md-tabbed-set .highlight {
background: #ddd;
}
.nge-md-tabbed-set .nge-md-tabbed-content {
display: none;
order: 99;
width: 100%;
}
.nge-md-tabbed-set .nge-md-tabbed-content :first-child {
margin: 0;
}
.nge-md-tabbed-set label {
width: auto;
/*padding: 0.25em;*/
padding: .9375em 1.25em .78125em;
font-weight: 700;
font-size: .84rem;
cursor: pointer;
}
.nge-md-tabbed-set input {
position: absolute;
opacity: 0;
}
.nge-md-tabbed-set input:nth-child(n+1) {
color: #333333;
}
.nge-md-tabbed-set input:nth-child(n+1):checked + label {
color: #ff5252;
transition: all 0.3s;
/* background-color: rgba(255, 82, 82, 0.1);*/
border-bottom: .1rem solid;
}
.nge-md-tabbed-set input:nth-child(n+1):checked + label + .nge-md-tabbed-content {
display: block;
border-top: 1px solid #F5F5F5;
}
`;
head.appendChild(style);
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: NgeMarkdownTabbedSet, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: NgeMarkdownTabbedSet }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: NgeMarkdownTabbedSet, decorators: [{
type: Injectable
}] });
/** * Injection token to register `NgeMarkdownTabbedSet` contribution. */
export const NgeMarkdownTabbedSetProvider = {
provide: NGE_MARKDOWN_CONTRIBUTION,
multi: true,
useClass: NgeMarkdownTabbedSet,
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdlLW1hcmtkb3duLXRhYmJlZC1zZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ2UvbWFya2Rvd24vc3JjL2NvbnRyaWJ1dGlvbnMvbmdlLW1hcmtkb3duLXRhYmJlZC1zZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQTtBQUVwRCxPQUFPLEVBQTJCLHlCQUF5QixFQUFFLE1BQU0sOEJBQThCLENBQUE7O0FBRWpHLElBQUksY0FBYyxHQUFHLENBQUMsQ0FBQTtBQU90Qjs7R0FFRztBQUVILE1BQU0sT0FBTyxvQkFBb0I7SUFDL0IsVUFBVSxDQUFDLFdBQW1DO1FBQzVDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQTtRQUNoQixXQUFXLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRTtZQUNwQyxNQUFNLElBQUksR0FBRyxhQUFhLENBQUE7WUFDMUIsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFBO1lBQ3hCLE1BQU0sU0FBUyxHQUFjLEVBQUUsQ0FBQTtZQUMvQixNQUFNLFNBQVMsR0FBYyxFQUFFLENBQUE7WUFDL0IsRUFBRSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO2dCQUM3QyxJQUFJLFNBQVMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDeEMsT0FBTTtnQkFDUixDQUFDO2dCQUVELE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBO2dCQUM3QyxJQUFJLEtBQUssRUFBRSxDQUFDO29CQUNWLE1BQU0sSUFBSSxHQUFVLEVBQUUsQ0FBQTtvQkFDdEIsSUFBSSxHQUFHLEdBQVE7d0JBQ2IsS0FBSyxFQUFFLEtBQUssQ0FBQyxD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cm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgTmdlTWFya2Rvd25UcmFuc2Zvcm1lciB9IGZyb20gJy4uL25nZS1tYXJrZG93bi10cmFuc2Zvcm1lcidcbmltcG9ydCB7IE5nZU1hcmtkb3duQ29udHJpYnV0aW9uLCBOR0VfTUFSS0RPV05fQ09OVFJJQlVUSU9OIH0gZnJvbSAnLi4vbmdlLW1hcmtkb3duLWNvbnRyaWJ1dGlvbidcblxubGV0IFRBQlNFVF9DT1VOVEVSID0gMFxuXG5pbnRlcmZhY2UgVGFiIHtcbiAgdGl0bGU6IHN0cmluZ1xuICBjb250ZW50OiBFbGVtZW50W11cbn1cblxuLyoqXG4gKiBDb250cmlidXRpb24gdG8gcmVuZGVyIHRhYnMgaW5zaWRlIG1hcmtkb3duIGZpbGVzLlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTmdlTWFya2Rvd25UYWJiZWRTZXQgaW1wbGVtZW50cyBOZ2VNYXJrZG93bkNvbnRyaWJ1dGlvbiB7XG4gIGNvbnRyaWJ1dGUodHJhbnNmb3JtZXI6IE5nZU1hcmtkb3duVHJhbnNmb3JtZXIpIHtcbiAgICB0aGlzLmFkZFN0eWxlcygpXG4gICAgdHJhbnNmb3JtZXIuYWRkSHRtbFRyYW5zZm9ybWVyKChlbCkgPT4ge1xuICAgICAgY29uc3Qgb3BlbiA9IC9ePT09XFxzKiguKykvXG4gICAgICBjb25zdCBjbG9zZSA9IC9ePT09XFxzKiQvXG4gICAgICBjb25zdCBwcm9jZXNzZWQ6IEVsZW1lbnRbXSA9IFtdXG4gICAgICBjb25zdCB0b1JlbW92ZXM6IEVsZW1lbnRbXSA9IFtdXG4gICAgICBlbC5xdWVyeVNlbGVjdG9yQWxsKCdwJykuZm9yRWFjaCgocGFyYWdyYXBoKSA9PiB7XG4gICAgICAgIGlmIChwcm9jZXNzZWQuaW5kZXhPZihwYXJhZ3JhcGgpICE9PSAtMSkge1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbWF0Y2ggPSBwYXJhZ3JhcGguaW5uZXJIVE1MLm1hdGNoKG9wZW4pXG4gICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgIGNvbnN0IHRhYnM6IFRhYltdID0gW11cbiAgICAgICAgICBsZXQgdGFiOiBUYWIgPSB7XG4gICAgICAgICAgICB0aXRsZTogbWF0Y2hbMV0sXG4gICAgICAgICAgICBjb250ZW50OiBbXSxcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsZXQgbm9kZSA9IHBhcmFncmFwaC5uZXh0RWxlbWVudFNpYmxpbmdcbiAgICAgICAgICB3aGlsZSAobm9kZSkge1xuICAgICAgICAgICAgbGV0IHB1c2ggPSB0cnVlXG4gICAgICAgICAgICBjb25zdCBpbm5lckhUTUwgPSBub2RlLmlubmVySFRNTC50cmltKClcbiAgICAgICAgICAgIGlmIChpbm5lckhUTUwubWF0Y2gob3BlbikpIHtcbiAgICAgICAgICAgICAgdGFicy5wdXNoKHRhYilcbiAgICAgICAgICAgICAgdGFiID0ge1xuICAgICAgICAgICAgICAgIHRpdGxlOiBpbm5lckhUTUwucmVwbGFjZSgnPT09JywgJycpLnRyaW0oKSxcbiAgICAgICAgICAgICAgICBjb250ZW50OiBbXSxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBwdXNoID0gZmFsc2VcbiAgICAgICAgICAgICAgdG9SZW1vdmVzLnB1c2gobm9kZSlcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5uZXJIVE1MLm1hdGNoKGNsb3NlKSkge1xuICAgICAgICAgICAgICB0YWJzLnB1c2godGFiKVxuICAgICAgICAgICAgICB0b1JlbW92ZXMucHVzaChub2RlKVxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocHVzaCkge1xuICAgICAgICAgICAgICB0YWIuY29udGVudC5wdXNoKG5vZGUpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHByb2Nlc3NlZC5wdXNoKG5vZGUpXG4gICAgICAgICAgICBub2RlID0gbm9kZS5uZXh0RWxlbWVudFNpYmxpbmdcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBwYXJhZ3JhcGgucGFyZW50RWxlbWVudD8ucmVwbGFjZUNoaWxkKHRoaXMuY3JlYXRlVGFicyh0YWJzKSwgcGFyYWdyYXBoKVxuXG4gICAgICAgICAgcGFyYWdyYXBoLnJlbW92ZSgpXG4gICAgICAgICAgdG9SZW1vdmVzLmZvckVhY2goKGUpID0+IGUucmVtb3ZlKCkpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfSlcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlVGFicyh0YWJzOiBUYWJbXSkge1xuICAgIGNvbnN0IHRhYnNldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXG4gICAgdGFic2V0LmNsYXNzTmFtZSA9ICduZ2UtbWQtdGFiYmVkLXNldCdcblxuICAgIGxldCBpID0gMFxuICAgIFRBQlNFVF9DT1VOVEVSKytcbiAgICB0YWJzLmZvckVhY2goKGUpID0+IHtcbiAgICAgIGNvbnN0IGNoZWNrYm94ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKVxuICAgICAgY2hlY2tib3gudHlwZSA9ICdyYWRpbydcbiAgICAgIGNoZWNrYm94LmlkID0gJ25nZS1tZC10YWJiZWQtJyArIFRBQlNFVF9DT1VOVEVSICsgJy0nICsgaVxuICAgICAgY2hlY2tib3gubmFtZSA9ICduZ2UtbWQtdGFiYmVkLScgKyBUQUJTRVRfQ09VTlRFUlxuICAgICAgaWYgKGkgPT09IDApIHtcbiAgICAgICAgY2hlY2tib3guc2V0QXR0cmlidXRlKCdjaGVja2VkJywgJ2NoZWNrZWQnKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBsYWJlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xhYmVsJylcbiAgICAgIGxhYmVsLnNldEF0dHJpYnV0ZSgnZm9yJywgY2hlY2tib3guaWQpXG4gICAgICBsYWJlbC5pbm5lckhUTUwgPSBlLnRpdGxlXG5cbiAgICAgIGNvbnN0IGNvbnRlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKVxuICAgICAgY29udGVudC5jbGFzc05hbWUgPSAnbmdlLW1kLXRhYmJlZC1jb250ZW50J1xuICAgICAgZS5jb250ZW50LmZvckVhY2goKGMpID0+IGNvbnRlbnQuYXBwZW5kQ2hpbGQoYykpXG5cbiAgICAgIHRhYnNldC5hcHBlbmQoY2hlY2tib3gsIGxhYmVsLCBjb250ZW50KVxuICAgICAgaSsrXG4gICAgfSlcbiAgICByZXR1cm4gdGFic2V0XG4gIH1cblxuICBwcml2YXRlIGFkZFN0eWxlcygpIHtcbiAgICBjb25zdCBoZWFkID0gZG9jdW1lbnQuaGVhZFxuICAgIGlmIChoZWFkLnF1ZXJ5U2VsZWN0b3IoJ1tuZ2UtbWFya2Rvd24tdGFiYmVkLXNldF0nKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3Qgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpXG4gICAgc3R5bGUuc2V0QXR0cmlidXRlKCduZ2UtbWFya2Rvd24tdGFiYmVkLXNldCcsICcnKVxuICAgIHN0eWxlLmlubmVySFRNTCA9IGBcbiAgICAgICAgICAgIC8qICBUQUIgU0VUICovXG4gICAgICAgICAgICAubmdlLW1kLXRhYmJlZC1zZXQge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDFlbSAwO1xuICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IC4xcmVtO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAubmdlLW1kLXRhYmJlZC1zZXQgLmhpZ2hsaWdodCB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogI2RkZDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLm5nZS1tZC10YWJiZWQtc2V0IC5uZ2UtbWQtdGFiYmVkLWNvbnRlbnQge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICAgICAgb3JkZXI6IDk5O1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLm5nZS1tZC10YWJiZWQtc2V0IC5uZ2UtbWQtdGFiYmVkLWNvbnRlbnQgOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5uZ2UtbWQtdGFiYmVkLXNldCBsYWJlbCB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgICAgICAgICAgLypwYWRkaW5nOiAwLjI1ZW07Ki9cbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAuOTM3NWVtIDEuMjVlbSAuNzgxMjVlbTtcbiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogNzAwO1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogLjg0cmVtO1xuICAgICAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLm5nZS1tZC10YWJiZWQtc2V0IGlucHV0IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLm5nZS1tZC10YWJiZWQtc2V0IGlucHV0Om50aC1jaGlsZChuKzEpIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogIzMzMzMzMztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLm5nZS1tZC10YWJiZWQtc2V0IGlucHV0Om50aC1jaGlsZChuKzEpOmNoZWNrZWQgKyBsYWJlbCB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICNmZjUyNTI7XG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogYWxsIDAuM3M7XG4gICAgICAgICAgICAgICAgLyogYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDgyLCA4MiwgMC4xKTsqL1xuICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b206IC4xcmVtIHNvbGlkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAubmdlLW1kLXRhYmJlZC1zZXQgaW5wdXQ6bnRoLWNoaWxkKG4rMSk6Y2hlY2tlZCArIGxhYmVsICsgLm5nZS1tZC10YWJiZWQtY29udGVudCB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNGNUY1RjU7XG4gICAgICAgICAgICB9XG4gICAgICAgIGBcblxuICAgIGhlYWQuYXBwZW5kQ2hpbGQoc3R5bGUpXG4gIH1cbn1cblxuLyoqICAqIEluamVjdGlvbiB0b2tlbiB0byByZWdpc3RlciBgTmdlTWFya2Rvd25UYWJiZWRTZXRgIGNvbnRyaWJ1dGlvbi4gKi9cbmV4cG9ydCBjb25zdCBOZ2VNYXJrZG93blRhYmJlZFNldFByb3ZpZGVyOiBQcm92aWRlciA9IHtcbiAgcHJvdmlkZTogTkdFX01BUktET1dOX0NPTlRSSUJVVElPTixcbiAgbXVsdGk6IHRydWUsXG4gIHVzZUNsYXNzOiBOZ2VNYXJrZG93blRhYmJlZFNldCxcbn1cbiJdfQ==