{"version":3,"file":"bootkit-angular-components-code.mjs","sources":["../../../projects/bootkit/components/code/types.ts","../../../projects/bootkit/components/code/code-formatters.ts","../../../projects/bootkit/components/code/code.component.ts","../../../projects/bootkit/components/code/code.component.html","../../../projects/bootkit/components/code/bootkit-angular-components-code.ts"],"sourcesContent":["export type CodeFormatterFunc = (code: string) => string;\r\n\r\nexport class CodeFormatter {\r\n    constructor(public readonly name: string, public readonly format: CodeFormatterFunc) {\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { CodeFormatter, CodeFormatterFunc } from './types';\r\n\r\n@Injectable({\r\n    providedIn: 'root'\r\n})\r\nexport class CodeFormatters {\r\n    private _formatters = new Array<CodeFormatter>();\r\n\r\n    constructor() { }\r\n\r\n    add(name: string, func: CodeFormatterFunc): CodeFormatter {\r\n        var formatter = this._formatters.find(x => x.name == name);\r\n        if (!formatter) {\r\n            formatter = new CodeFormatter(name, func);\r\n            this._formatters.push(formatter);\r\n        }\r\n\r\n        return formatter;\r\n    }\r\n\r\n    find(name: string) {\r\n        return this._formatters.find(x => x.name == name);\r\n    }\r\n}\r\n\r\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { CodeFormatters } from './code-formatters';\r\n\r\n@Component({\r\n  selector: 'bk-code',\r\n  exportAs: 'bkCode',\r\n  styleUrls: ['./code.component.scss'],\r\n  templateUrl: './code.component.html',\r\n  standalone: true,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CodeComponent {\r\n\r\n  /** Code formatter name */\r\n  formatter = input.required<string>();\r\n\r\n  /** Code */\r\n  code = input.required<string>();\r\n\r\n  protected _safeHtml = computed(() => {\r\n    var frmt = this.formatters.find(this.formatter());\r\n\r\n    if (frmt == null) {\r\n      console.warn(`Code formatter named \"${this.formatter()}\" not found.`)\r\n      return undefined;\r\n    }\r\n\r\n    return this.domSanitizer.bypassSecurityTrustHtml(frmt.format(this.code()));\r\n  })\r\n\r\n  constructor(private formatters: CodeFormatters, private domSanitizer: DomSanitizer) { }\r\n}\r\n","<pre class=\"language-{{formatter()}} formatter-{{formatter()}}\">@if(_safeHtml()) {<code  class=\"language-{{formatter()}} formatter-{{formatter()}}\" [innerHtml]=\"_safeHtml()\" ></code>}@else {<code class=\"language-{{formatter()}} formatter-{{formatter()}}\" [innerText]=\"code()\"></code>}</pre>","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.CodeFormatters"],"mappings":"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"}