{"version":3,"file":"ngx-watermark.mjs","sources":["../../../src/ngx-watermark/lib/watermark.handler.ts","../../../src/ngx-watermark/lib/ngx-watermark.directive.ts","../../../src/ngx-watermark/lib/ngx-watermark.module.ts","../../../src/ngx-watermark/public-api.ts","../../../src/ngx-watermark/ngx-watermark.ts"],"sourcesContent":["\nimport { Renderer2, ElementRef } from '@angular/core';\nimport { NgxWatermarkOptions } from './ngx-watermark-options.model';\nimport FontFaceObserver from 'fontfaceobserver';\n\nexport class WatermarkHandler {\n\n    private _el: ElementRef;\n    private _renderer: Renderer2;\n\n    readonly DEFAULT_FONT_FAMILY = 'Arial';\n    readonly DEFAULT_OPTIONS: NgxWatermarkOptions = {\n        text: '',\n        width: 300,\n        height: 100,\n        fontFamily: this.DEFAULT_FONT_FAMILY,\n        fontSize: '18px',\n        fontWeight: \"normal\",\n        color: '#999999',\n        alpha: 0.5,\n        degree: -45,\n        lineHeight: 24,\n        textAlign: 'center',\n        textBaseline: 'middle',\n        backgroundRepeat: 'repeat',\n        backgroundPosition: '0% 0%',\n    };\n\n    readonly WEB_SAFE_FONT: string[] = [\n        \"Georgia\", \"Palatino Linotype\", \"Book Antiqua\", \"Palatino\", \"Times New Roman\", \"Times\", \"serif\", // Serif Fonts\n        \"Arial\", \"Helvetica\", \"Arial Black\", \"Gadget\", \"Comic Sans MS\", \"cursive\", \"Impact\", \"Charcoal\", \"Lucida Sans Unicode\", \"Lucida Grande\", \"Tahoma\", \"Geneva\", \"Trebuchet MS\", \"Verdana\", \"sans-serif\", // Sans-Serif Fonts\n        \"Courier New\", \"Courier\", \"Lucida Console\", \"Monaco\", \"monospace\" // Monospace Fonts\n    ];\n\n    constructor(_el: ElementRef, _renderer: Renderer2,) {\n        this._el = _el;\n        this._renderer = _renderer;\n    }\n\n    generateWatermark(_ops: NgxWatermarkOptions) {\n\n        let options: NgxWatermarkOptions = Object.assign({}, this.DEFAULT_OPTIONS, _ops);\n        if (this.isWebSafeFont(options.fontFamily)) {\n            this.processStyleFromOptions(options);\n        } else {\n            let font = new FontFaceObserver(options.fontFamily);\n            font.load().then(() => {\n                this.processStyleFromOptions(options);\n            }).catch(() => {\n                options = Object.assign({}, options, { fontFamily: this.DEFAULT_FONT_FAMILY });\n                this.processStyleFromOptions(options);\n            });\n        }\n    }\n\n    private processStyleFromOptions(_ops: NgxWatermarkOptions) {\n        this.setHTMLElementStyle(['background-image', `url(${this.createDataUrl(_ops)})`]);\n        this.setHTMLElementStyle(['background-repeat', _ops.backgroundRepeat]);\n        this.setHTMLElementStyle(['background-position', _ops.backgroundPosition]);\n    }\n\n    private isWebSafeFont(_font: string): boolean {\n        return this.WEB_SAFE_FONT.indexOf(_font) != -1;\n    }\n\n    private createDataUrl(options: NgxWatermarkOptions): string {\n\n        const width = options.width;\n        const height = options.height;\n\n        const canvas = document.createElement('canvas');\n        const ctx = canvas.getContext('2d');\n        canvas.width = width;\n        canvas.height = height;\n        ctx.clearRect(0, 0, canvas.width, canvas.height);\n        ctx.globalAlpha = 0;\n\n        ctx.fillRect(-0.5 * width, -0.5 * height, width, height);\n\n        ctx.font = `${options.fontWeight} ${options.fontSize} ${options.fontFamily}`;\n        ctx.fillStyle = options.color;\n        ctx.globalAlpha = options.alpha;\n        ctx.textAlign = options.textAlign;\n        ctx.textBaseline = options.textBaseline;\n\n        ctx.translate(0 + 0.5 * width, 0 + 0.5 * height);\n        ctx.rotate((options.degree * Math.PI) / 180);\n        this.generateMultiLineText(ctx, options.text, width, options.lineHeight, 0, 0);\n        \n        return canvas.toDataURL();\n    }\n\n    private generateMultiLineText(_ctx: CanvasRenderingContext2D, _text: string, _width: number, _lineHeight: number, x: number, y: number) {\n        let words = _text.split('\\n');\n        let line = '';\n\n        for (var n = 0; n < words.length; n++) {\n            line = words[n];\n            _ctx.fillText(line, x, y);\n            y += _lineHeight;\n        }\n    }\n\n    private setHTMLElementStyle([name, value]: [string, string | number]) {\n        this._renderer.setStyle(this._el.nativeElement, name, value);\n    }\n}","import { Directive, ElementRef, Renderer2, Input, OnChanges } from '@angular/core';\nimport { WatermarkHandler } from './watermark.handler';\nimport { NgxWatermarkOptions } from './ngx-watermark-options.model';\n\n@Directive({\n    selector: '[ngxWatermark]'\n})\nexport class NgxWatermarkDirective implements OnChanges {\n\n    private watermarkHandler: WatermarkHandler;\n\n    constructor(private _el: ElementRef, private _renderer: Renderer2) {\n        this.watermarkHandler = new WatermarkHandler(this._el, this._renderer);\n    }\n\n    @Input('ngxWatermark') options: NgxWatermarkOptions;\n    \n    ngOnChanges() {\n        this.watermarkHandler.generateWatermark(this.options);\n    }       \n\n   \n       \n        \n\n}","import { NgModule } from '@angular/core';\nimport { NgxWatermarkDirective } from './ngx-watermark.directive';\n\n@NgModule({\n    declarations: [NgxWatermarkDirective],\n    imports: [\n    ],\n    exports: [NgxWatermarkDirective]\n})\nexport class NgxWatermarkModule { }\n","/*\n * Public API Surface of ngx-watermark\n */\n\nexport * from './lib/ngx-watermark.module';\nexport * from './lib/ngx-watermark.directive';\nexport * from './lib/ngx-watermark-options.model';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}