{"version":3,"file":"deja-js-component-templates.mjs","sources":["../../../../projects/deja-js/component/templates/bold-query.component.ts","../../../../projects/deja-js/component/templates/index.ts","../../../../projects/deja-js/component/templates/deja-js-component-templates.ts"],"sourcesContent":["/*\n *  @license\n *  Copyright Hôpitaux Universitaires de Genève. All Rights Reserved.\n *\n *  Use of this source code is governed by an Apache-2.0 license that can be\n *  found in the LICENSE file at https://github.com/DSI-HUG/dejajs-components/blob/master/LICENSE\n */\n\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { DiacriticService, RegExpUtils } from '@deja-js/component/core';\n\n@Component({\n    encapsulation: ViewEncapsulation.None,\n    selector: 'deja-bold-query',\n    styleUrls: [\n        './bold-query.component.scss'\n    ],\n    template: '<div [innerHTML]=\"content\"></div>'\n})\nexport class DejaBoldQueryComponent {\n    private _query: string;\n    private _value: string;\n    private _content: string;\n    private _regexpOptions = 'i';\n    private _firstOccurenceOnly = false;\n    private _firstOccurencePerWordOnly = false;\n    private _atTheBeginningOfWordOnly = false;\n    private _highlightClassName = 'highlight | yellowBackgroundColorHighlight';\n\n    public get content(): string {\n        return this._content;\n    }\n\n    @Input()\n    /*\n     * The search term query.\n     *\n     */\n    public set query(value: string) {\n        value = this.diacriticService.remove(value);\n        if (this._query !== value) {\n            this._query = value;\n            this.refresh();\n        }\n    }\n\n    @Input()\n    /*\n     * The model value. Usually the model display label.\n     */\n    public set value(value: string) {\n        this._value = value;\n        this.refresh();\n    }\n\n    @Input()\n    /*\n     * The RegExp optional Flags. Optional. Default value is 'i' (case insensitive).\n     *\n     */\n    public set regexpOption(value: string) {\n        this._regexpOptions = value;\n        this.refresh();\n    }\n\n    @Input()\n    /*\n     * If true, highlight only the first occurence. False by default.\n     */\n    public set firstOccurenceOnly(value: boolean) {\n        this._firstOccurenceOnly = value;\n        this.refresh();\n    }\n\n    @Input()\n    public set firstOccurencePerWordOnly(value: boolean) {\n        this._firstOccurencePerWordOnly = value;\n        this.refresh();\n    }\n\n    @Input()\n    public set atTheBeginningOfWordOnly(value: boolean) {\n        this._atTheBeginningOfWordOnly = value;\n        this.refresh();\n    }\n\n    public get highlightClassName(): string {\n        return this._highlightClassName;\n    }\n\n    @Input()\n    public set highlightClassName(value: string) {\n        this._highlightClassName = value;\n        if (!this._highlightClassName) {\n            this._highlightClassName = 'highlight';\n        }\n        this.refresh();\n    }\n\n    public constructor(private diacriticService: DiacriticService) { }\n\n    private refresh(): void {\n        if (this._value && this._query && this._query.length > 0) {\n            const regexpPattern = this._atTheBeginningOfWordOnly ? (`\\\\b${RegExpUtils.escapeRegExp(this._query)}`) : RegExpUtils.escapeRegExp(this._query);\n            const sc = new RegExp(regexpPattern, this._regexpOptions);\n            const value = this._value.toString();\n            const search = this.diacriticService.remove(value);\n            const splitted = search.split(sc);\n            let position = 0;\n            const queryLength = this._query.length;\n            const contents = [] as string[];\n            let firstOccurence = true;\n            let nbOccurence = 0;\n            splitted.forEach(text => {\n                if (text) {\n                    contents.push(value.slice(position, position + text.length));\n                    position += text.length;\n                }\n                if (position + queryLength <= value.length) {\n                    nbOccurence += 1;\n                    let skipHighlight = false;\n                    if (this._firstOccurencePerWordOnly && nbOccurence > 1) {\n                        const words = text.split(/[^a-zA-Z\\d]/g);\n                        if (words.length === 1) {\n                            skipHighlight = true;\n                        }\n                    }\n                    if (!skipHighlight && (!this._firstOccurenceOnly || firstOccurence)) {\n                        contents.push(`<span class=\"${this._highlightClassName}\">`);\n                    }\n                    contents.push(value.slice(position, position + queryLength));\n                    if (!skipHighlight && (!this._firstOccurenceOnly || firstOccurence)) {\n                        contents.push('</span>');\n                    }\n                    position += queryLength;\n                }\n                firstOccurence = false;\n            });\n            this._content = contents.join('');\n        } else {\n            this._content = this._value;\n        }\n    }\n}\n","/*\n *  @license\n *  Copyright Hôpitaux Universitaires de Genève. All Rights Reserved.\n *\n *  Use of this source code is governed by an Apache-2.0 license that can be\n *  found in the LICENSE file at https://github.com/DSI-HUG/dejajs-components/blob/master/LICENSE\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { DejaBoldQueryComponent } from './bold-query.component';\n\n@NgModule({\n    declarations: [\n        DejaBoldQueryComponent\n    ],\n    exports: [DejaBoldQueryComponent],\n    imports: [\n        CommonModule,\n        FormsModule\n    ]\n})\nexport class DejaBoldQueryModule { }\n\nexport * from './bold-query.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}