{"version":3,"file":"ihk-gfi-lux-components-lux-html.mjs","sources":["../../../projects/lux-components-lib/lux-html/src/lux-html/lux-sanitize/lux-sanitize.pipe.ts","../../../projects/lux-components-lib/lux-html/src/lux-html/lux-html.component.ts","../../../projects/lux-components-lib/lux-html/src/lux-html/lux-html.component.html","../../../projects/lux-components-lib/lux-html/src/lux-html/lux-sanitize/lux-sanitize-config.ts","../../../projects/lux-components-lib/lux-html/src/public_api.ts","../../../projects/lux-components-lib/lux-html/src/ihk-gfi-lux-components-lux-html.ts"],"sourcesContent":["import { Pipe, PipeTransform, inject } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport DOMPurify, { Config } from 'dompurify';\nimport { LuxSanitizeConfig } from './lux-sanitize-config';\n\n@Pipe({ name: 'luxSanitize' })\nexport class LuxSanitizePipe implements PipeTransform {\n  private sanitizer = inject(DomSanitizer);\n\n  public transform(value: any, config?: LuxSanitizeConfig): SafeHtml {\n    // Hier wird zuerst eine Kopie des Config-Objekts erstellt,\n    // damit keiner nachträglich die Werte ändern kann.\n    // Die Properties in DOMPurify sind nämlich readonly.\n    const newConfig: LuxSanitizeConfig = {};\n    Object.assign(newConfig, config);\n\n    if (value) {\n      return this.sanitizer.bypassSecurityTrustHtml(DOMPurify.sanitize(value, this.createConfig(newConfig)));\n    } else {\n      return '';\n    }\n  }\n\n  createConfig(config: LuxSanitizeConfig): Config & { RETURN_DOM_FRAGMENT?: false; RETURN_DOM?: false } {\n    const domPurifyConfig: Config & { RETURN_DOM_FRAGMENT?: false; RETURN_DOM?: false } = { RETURN_DOM: false, RETURN_DOM_FRAGMENT: false };\n\n    if (config && config.allowedTags) {\n      domPurifyConfig.ALLOWED_TAGS = config.allowedTags;\n    }\n\n    if (config && config.allowedAttrs) {\n      domPurifyConfig.ALLOWED_ATTR = config.allowedAttrs;\n    }\n\n    if (config && config.addAllowedTags) {\n      domPurifyConfig.ADD_TAGS = config.addAllowedTags;\n    }\n\n    if (config && config.addAllowedAttrs) {\n      domPurifyConfig.ADD_ATTR = config.addAllowedAttrs;\n    }\n\n    if (config && config.forbiddenTags) {\n      domPurifyConfig.FORBID_TAGS = config.forbiddenTags;\n    }\n\n    if (config && config.forbiddenAttrs) {\n      domPurifyConfig.FORBID_ATTR = config.forbiddenAttrs;\n    }\n\n    return domPurifyConfig;\n  }\n}\n","import { Component, ElementRef, Input, ViewChild } from '@angular/core';\nimport { LuxSanitizeConfig } from './lux-sanitize/lux-sanitize-config';\nimport { LuxSanitizePipe } from './lux-sanitize/lux-sanitize.pipe';\n\n@Component({\n  selector: 'lux-html',\n  templateUrl: './lux-html.component.html',\n  styleUrls: ['./lux-html.component.scss'],\n  imports: [LuxSanitizePipe]\n})\nexport class LuxHtmlComponent {\n  @Input() luxData = '';\n  @Input() luxSanitizeConfig?: LuxSanitizeConfig;\n  @Input() luxStyle = '';\n  @Input() luxClass = '';\n\n  @ViewChild('content', { read: ElementRef }) contentRef!: ElementRef;\n\n  constructor() {}\n}\n","<div [style]=\"luxStyle\" [class]=\"luxClass\" [innerHTML]=\"luxData | luxSanitize : luxSanitizeConfig\" #content></div>\n","export class LuxSanitizeConfig {\n  allowedTags?: string[];\n  allowedAttrs?: string[];\n  addAllowedTags?: string[];\n  addAllowedAttrs?: string[];\n  forbiddenTags?: string[];\n  forbiddenAttrs?: string[];\n}\n","/**\n * LUX-Html\n */\nexport * from './lux-html/lux-html.component';\nexport * from './lux-html/lux-sanitize/lux-sanitize-config';\nexport * from './lux-html/lux-sanitize/lux-sanitize.pipe';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}