ngx-markdown-it
Version:
An Angular library that renders markdown using [markdown-it](https://github.com/markdown-it/markdown-it).
72 lines • 7.31 kB
JavaScript
/*
* @file ngx-markdown-it.service.ts
*
* @brief Markdown It service
* @author David Suárez
* @date Mon, 21 Jun 20 19:45:15 +0200
*
* @license
*
* ngx-markdown-it: angular markdown-it module
*
* Copyright (c) 2021 David Suárez
*
* Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation
* files (the "Software"), to deal in the Software without
* restriction, including without limitation the rights to use,
* copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following
* conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
*
*/
import { Injectable, Optional } from '@angular/core';
import MarkdownIt from 'markdown-it';
import * as i0 from "@angular/core";
import * as i1 from "./ngx-markdown-it-config.class";
export class NgxMarkdownItService {
markdownIt;
constructor(config) {
var presetName = 'default';
if (config && config.presetName) {
presetName = config.presetName;
}
this.markdownIt = new MarkdownIt(presetName);
if (config && config.plugins) {
config.plugins.forEach(plugin => this.markdownIt.use(plugin));
}
}
/**
* Renders a markdown string to HTML
*
* @param {string} markdown Markdown string that you want to render.
* @returns {string}
*/
render(markdown) {
return `${this.markdownIt.render(markdown)}`;
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: NgxMarkdownItService, deps: [{ token: i1.NgxMarkdownItConfig, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: NgxMarkdownItService, providedIn: 'root' });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: NgxMarkdownItService, decorators: [{
type: Injectable,
args: [{
providedIn: 'root'
}]
}], ctorParameters: function () { return [{ type: i1.NgxMarkdownItConfig, decorators: [{
type: Optional
}] }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LW1hcmtkb3duLWl0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvbmd4LW1hcmtkb3duLWl0L3NyYy9saWIvbmd4LW1hcmtkb3duLWl0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQ0c7QUFFSCxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUlyRCxPQUFPLFVBQVUsTUFBTSxhQUFhLENBQUM7OztBQUtyQyxNQUFNLE9BQU8sb0JBQW9CO0lBRXZCLFVBQVUsQ0FBYTtJQUUvQixZQUF3QixNQUE0QjtRQUVsRCxJQUFJLFVBQVUsR0FBMkIsU0FBUyxDQUFDO1FBRW5ELElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxVQUFVLEVBQUU7WUFDL0IsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUM7U0FDaEM7UUFFRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRTdDLElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUU7WUFDMUIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1NBQ2pFO0lBQ0gsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLFFBQWdCO1FBQzVCLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO0lBQy9DLENBQUM7dUdBM0JVLG9CQUFvQjsyR0FBcEIsb0JBQW9CLGNBRm5CLE1BQU07OzJGQUVQLG9CQUFvQjtrQkFIaEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQUtjLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQGZpbGUgbmd4LW1hcmtkb3duLWl0LnNlcnZpY2UudHNcbiAqXG4gKiBAYnJpZWYgTWFya2Rvd24gSXQgc2VydmljZVxuICogQGF1dGhvciBEYXZpZCBTdcOhcmV6XG4gKiBAZGF0ZSBNb24sIDIxIEp1biAyMCAxOTo0NToxNSArMDIwMFxuICpcbiAqIEBsaWNlbnNlXG4gKlxuICogbmd4LW1hcmtkb3duLWl0OiBhbmd1bGFyIG1hcmtkb3duLWl0IG1vZHVsZVxuICpcbiAqIENvcHlyaWdodCAoYykgMjAyMSBEYXZpZCBTdcOhcmV6XG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb25cbiAqIG9idGFpbmluZyBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uXG4gKiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXRcbiAqIHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLFxuICogY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZVxuICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmdcbiAqIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmVcbiAqIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsXG4gKiBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVNcbiAqIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EXG4gKiBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVFxuICogSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksXG4gKiBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkdcbiAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1JcbiAqIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cbiAqXG4gKi9cblxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgTmd4TWFya2Rvd25JdENvbmZpZyB9IGZyb20gXCIuL25neC1tYXJrZG93bi1pdC1jb25maWcuY2xhc3NcIjtcblxuaW1wb3J0IE1hcmtkb3duSXQgZnJvbSAnbWFya2Rvd24taXQnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBOZ3hNYXJrZG93bkl0U2VydmljZSB7XG5cbiAgcHJpdmF0ZSBtYXJrZG93bkl0OiBNYXJrZG93bkl0O1xuXG4gIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIGNvbmZpZz86IE5neE1hcmtkb3duSXRDb25maWcpIHtcblxuICAgIHZhciBwcmVzZXROYW1lIDogTWFya2Rvd25JdC5QcmVzZXROYW1lID0gJ2RlZmF1bHQnO1xuXG4gICAgaWYgKGNvbmZpZyAmJiBjb25maWcucHJlc2V0TmFtZSkge1xuICAgICAgcHJlc2V0TmFtZSA9IGNvbmZpZy5wcmVzZXROYW1lO1xuICAgIH1cblxuICAgIHRoaXMubWFya2Rvd25JdCA9IG5ldyBNYXJrZG93bkl0KHByZXNldE5hbWUpO1xuXG4gICAgaWYgKGNvbmZpZyAmJiBjb25maWcucGx1Z2lucykge1xuICAgICAgICBjb25maWcucGx1Z2lucy5mb3JFYWNoKHBsdWdpbiA9PiB0aGlzLm1hcmtkb3duSXQudXNlKHBsdWdpbikpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgbWFya2Rvd24gc3RyaW5nIHRvIEhUTUxcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1hcmtkb3duIE1hcmtkb3duIHN0cmluZyB0aGF0IHlvdSB3YW50IHRvIHJlbmRlci5cbiAgICogQHJldHVybnMge3N0cmluZ31cbiAgICovXG4gIHB1YmxpYyByZW5kZXIobWFya2Rvd246IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMubWFya2Rvd25JdC5yZW5kZXIobWFya2Rvd24pfWA7XG4gIH1cbn1cbiJdfQ==