@cisstech/nge
Version:
NG Essentials is a collection of libraries for Angular developers.
49 lines • 6.4 kB
JavaScript
import { Injectable } from '@angular/core';
import { NGE_MARKDOWN_CONTRIBUTION } from '../nge-markdown-contribution';
import * as i0 from "@angular/core";
/**
* Contribution to use icons in markdown library using https://icongr.am/.
*/
export class NgeMarkdownIcons {
contribute(transformer) {
transformer.addMarkdownTransformer((markdown) => {
const pattern = /@(\w+)\s+([\w-]+)((\s+(?:color|size)=[^\s]+)*?)?@/gm;
const lines = markdown.split('\n');
const length = lines.length;
let insideCodeBlock = false;
for (let i = 0; i < length; i++) {
const curr = lines[i];
if (curr.startsWith('```')) {
insideCodeBlock = !insideCodeBlock;
}
if (insideCodeBlock) {
continue;
}
lines[i] = lines[i].replace(pattern, (_, type, name, params) => {
params = (params ?? '')
.trim()
.split(' ')
.filter((e) => e.trim())
.join('&');
params = params ? '?' + params : '';
return `<img src="https://icongr.am/${type.trim()}/${name.trim()}.svg${params}"/>`;
});
}
return lines.join('\n');
});
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: NgeMarkdownIcons, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: NgeMarkdownIcons }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.1", ngImport: i0, type: NgeMarkdownIcons, decorators: [{
type: Injectable
}] });
/**
* Injection token to register `NgeMarkdownIcons` contribution.
*/
export const NgeMarkdownIconsProvider = {
provide: NGE_MARKDOWN_CONTRIBUTION,
multi: true,
useClass: NgeMarkdownIcons,
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdlLW1hcmtkb3duLWljb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmdlL21hcmtkb3duL3NyYy9jb250cmlidXRpb25zL25nZS1tYXJrZG93bi1pY29ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFBO0FBRXBELE9BQU8sRUFBMkIseUJBQXlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQTs7QUFFakc7O0dBRUc7QUFFSCxNQUFNLE9BQU8sZ0JBQWdCO0lBQzNCLFVBQVUsQ0FBQyxXQUFtQztRQUM1QyxXQUFXLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUM5QyxNQUFNLE9BQU8sR0FBRyxxREFBcUQsQ0FBQTtZQUNyRSxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBO1lBQ2xDLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUE7WUFDM0IsSUFBSSxlQUFlLEdBQUcsS0FBSyxDQUFBO1lBQzNCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDaEMsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFBO2dCQUNyQixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDM0IsZUFBZSxHQUFHLENBQUMsZUFBZSxDQUFBO2dCQUNwQyxDQUFDO2dCQUNELElBQUksZUFBZSxFQUFFLENBQUM7b0JBQ3BCLFNBQVE7Z0JBQ1YsQ0FBQztnQkFDRCxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFTLEVBQUUsSUFBWSxFQUFFLElBQVksRUFBRSxNQUFlLEVBQUUsRUFBRTtvQkFDOUYsTUFBTSxHQUFHLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQzt5QkFDcEIsSUFBSSxFQUFFO3lCQUNOLEtBQUssQ0FBQyxHQUFHLENBQUM7eUJBQ1YsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7eUJBQ3ZCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQTtvQkFDWixNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7b0JBQ25DLE9BQU8sK0JBQStCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLE9BQU8sTUFBTSxLQUFLLENBQUE7Z0JBQ3BGLENBQUMsQ0FBQyxDQUFBO1lBQ0osQ0FBQztZQUNELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUN6QixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7OEdBM0JVLGdCQUFnQjtrSEFBaEIsZ0JBQWdCOzsyRkFBaEIsZ0JBQWdCO2tCQUQ1QixVQUFVOztBQStCWDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFhO0lBQ2hELE9BQU8sRUFBRSx5QkFBeUI7SUFDbEMsS0FBSyxFQUFFLElBQUk7SUFDWCxRQUFRLEVBQUUsZ0JBQWdCO0NBQzNCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBOZ2VNYXJrZG93blRyYW5zZm9ybWVyIH0gZnJvbSAnLi4vbmdlLW1hcmtkb3duLXRyYW5zZm9ybWVyJ1xuaW1wb3J0IHsgTmdlTWFya2Rvd25Db250cmlidXRpb24sIE5HRV9NQVJLRE9XTl9DT05UUklCVVRJT04gfSBmcm9tICcuLi9uZ2UtbWFya2Rvd24tY29udHJpYnV0aW9uJ1xuXG4vKipcbiAqIENvbnRyaWJ1dGlvbiB0byB1c2UgaWNvbnMgaW4gbWFya2Rvd24gbGlicmFyeSB1c2luZyBodHRwczovL2ljb25nci5hbS8uXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBOZ2VNYXJrZG93bkljb25zIGltcGxlbWVudHMgTmdlTWFya2Rvd25Db250cmlidXRpb24ge1xuICBjb250cmlidXRlKHRyYW5zZm9ybWVyOiBOZ2VNYXJrZG93blRyYW5zZm9ybWVyKSB7XG4gICAgdHJhbnNmb3JtZXIuYWRkTWFya2Rvd25UcmFuc2Zvcm1lcigobWFya2Rvd24pID0+IHtcbiAgICAgIGNvbnN0IHBhdHRlcm4gPSAvQChcXHcrKVxccysoW1xcdy1dKykoKFxccysoPzpjb2xvcnxzaXplKT1bXlxcc10rKSo/KT9AL2dtXG4gICAgICBjb25zdCBsaW5lcyA9IG1hcmtkb3duLnNwbGl0KCdcXG4nKVxuICAgICAgY29uc3QgbGVuZ3RoID0gbGluZXMubGVuZ3RoXG4gICAgICBsZXQgaW5zaWRlQ29kZUJsb2NrID0gZmFsc2VcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgY3VyciA9IGxpbmVzW2ldXG4gICAgICAgIGlmIChjdXJyLnN0YXJ0c1dpdGgoJ2BgYCcpKSB7XG4gICAgICAgICAgaW5zaWRlQ29kZUJsb2NrID0gIWluc2lkZUNvZGVCbG9ja1xuICAgICAgICB9XG4gICAgICAgIGlmIChpbnNpZGVDb2RlQmxvY2spIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGxpbmVzW2ldID0gbGluZXNbaV0ucmVwbGFjZShwYXR0ZXJuLCAoXzogc3RyaW5nLCB0eXBlOiBzdHJpbmcsIG5hbWU6IHN0cmluZywgcGFyYW1zPzogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgcGFyYW1zID0gKHBhcmFtcyA/PyAnJylcbiAgICAgICAgICAgIC50cmltKClcbiAgICAgICAgICAgIC5zcGxpdCgnICcpXG4gICAgICAgICAgICAuZmlsdGVyKChlKSA9PiBlLnRyaW0oKSlcbiAgICAgICAgICAgIC5qb2luKCcmJylcbiAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMgPyAnPycgKyBwYXJhbXMgOiAnJ1xuICAgICAgICAgIHJldHVybiBgPGltZyBzcmM9XCJodHRwczovL2ljb25nci5hbS8ke3R5cGUudHJpbSgpfS8ke25hbWUudHJpbSgpfS5zdmcke3BhcmFtc31cIi8+YFxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgcmV0dXJuIGxpbmVzLmpvaW4oJ1xcbicpXG4gICAgfSlcbiAgfVxufVxuXG4vKipcbiAqIEluamVjdGlvbiB0b2tlbiB0byByZWdpc3RlciBgTmdlTWFya2Rvd25JY29uc2AgY29udHJpYnV0aW9uLlxuICovXG5leHBvcnQgY29uc3QgTmdlTWFya2Rvd25JY29uc1Byb3ZpZGVyOiBQcm92aWRlciA9IHtcbiAgcHJvdmlkZTogTkdFX01BUktET1dOX0NPTlRSSUJVVElPTixcbiAgbXVsdGk6IHRydWUsXG4gIHVzZUNsYXNzOiBOZ2VNYXJrZG93bkljb25zLFxufVxuIl19