{"version":3,"file":"sinequa-components-metadata.mjs","sources":["../../../projects/components/metadata/metadata.interface.ts","../../../projects/components/metadata/metadata.service.ts","../../../projects/components/metadata/highlight.service.ts","../../../projects/components/metadata/metadata/metadata-item/metadata-item.component.ts","../../../projects/components/metadata/metadata/metadata-item/metadata-item.component.html","../../../projects/components/metadata/metadata/metadata.component.ts","../../../projects/components/metadata/metadata/metadata.component.html","../../../projects/components/metadata/metadata.module.ts","../../../projects/components/metadata/messages/en.ts","../../../projects/components/metadata/messages/fr.ts","../../../projects/components/metadata/messages/de.ts","../../../projects/components/metadata/messages/index.ts","../../../projects/components/metadata/sinequa-components-metadata.ts"],"sourcesContent":["import { Query } from '@sinequa/core/app-utils';\r\nimport { CCColumn, EntityItem, Record } from '@sinequa/core/web-services';\r\nimport { Observable } from 'rxjs';\r\nimport { Action } from '@sinequa/components/action';\r\nimport { SafeHtml } from '@angular/platform-browser';\r\n\r\nexport interface MetadataItem {\r\n    value: string | boolean | number;\r\n    display?: string;\r\n    filtered?: boolean; // Whether the item is included in the filters\r\n    excluded?: boolean; // Whether the item is excluded from the filters\r\n}\r\n\r\nexport interface TreeMetadataItem {\r\n    parts: MetadataItem[];\r\n}\r\n\r\nexport function isTreeMetadataItem(item: MetadataItem | TreeMetadataItem): item is TreeMetadataItem {\r\n    return !!(item as TreeMetadataItem).parts;\r\n}\r\n\r\nexport interface MetadataConfig {\r\n    field: string;\r\n    label?: string;\r\n    icon?: string;\r\n    fieldClass?: string;\r\n    filterable?: boolean;\r\n    excludable?: boolean;\r\n    showEntityExtract?: boolean;\r\n    actions?: Action[];\r\n    collapseRows?: boolean;\r\n    entityExtractMaxLines?: number;\r\n}\r\n\r\nexport interface MetadataValue {\r\n    valueItems: (MetadataItem | TreeMetadataItem)[]; // the determined value from the results\r\n    column: CCColumn | undefined; // the results column\r\n    isTree: boolean; // if is tree\r\n    isEntity: boolean; // if is entity\r\n    isCsv: boolean; // if is csv\r\n    fnEntityTooltip?: (data: { entity: EntityItem, record: Record, query: Query }) => Observable<SafeHtml | undefined>;\r\n}\r\n","import { Injectable } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { AppService, Query } from '@sinequa/core/app-utils';\nimport { FieldValue, Utils } from '@sinequa/core/base';\nimport { CCColumn, EntityItem, Record, TextChunksWebService, TextLocation } from '@sinequa/core/web-services';\nimport { map, Observable, of } from 'rxjs';\nimport { isTreeMetadataItem, MetadataItem, MetadataValue, TreeMetadataItem } from './metadata.interface';\n\ntype RecordType = FieldValue | EntityItem[];\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class MetadataService {\n\n  constructor(\n    private textChunkWebService: TextChunksWebService,\n    private appService: AppService,\n    private sanitizer: DomSanitizer\n  ) { }\n\n  getMetadataValue(record: Record, query: Query, item: string, showEntityExtract?: boolean): MetadataValue {\n    let valueItems: (MetadataItem | TreeMetadataItem)[] = [];\n    const column = this.appService.getColumn(item);\n    const isTree = !!column && AppService.isTree(column);\n    const isEntity = !!column && AppService.isEntity(column);\n    const isCsv = !!column && AppService.isCsv(column);\n    let fnEntityTooltip: ((data: { entity: EntityItem, record: Record, query: Query }) => Observable<SafeHtml | undefined>) | undefined;\n\n    const alias = this.appService.getColumnAlias(column, item);\n    const key = Object.keys(record).find(k => k.toLowerCase() === alias.toLowerCase());\n\n    const values: RecordType = record[key ?? alias];\n\n    if (isTree) {\n      if(Array.isArray(values)) {\n        valueItems = this.getTreeValues(values as string[]);\n      }\n    }\n    else if (isCsv) {\n      if(Array.isArray(values)) {\n        valueItems = values.map(value => Utils.isString(value)? {value} : {...value});\n        if (isEntity && showEntityExtract && (values[0] as EntityItem)?.locations) {\n          fnEntityTooltip = this.getEntitySentence;\n        }\n      }\n    }\n    else {\n      if(!Array.isArray(values)) {\n        valueItems = this.getSingleValue(values, column);\n      }\n    }\n\n    // Get the filters for this field\n    const filters = query.findValueFilters(item);\n    if(filters.length > 0) {\n      const filtered = new Map<boolean|number|string, boolean>();\n      for(const filter of filters) {\n        filtered.set(filter.value, filter.operator !== 'neq');\n      }\n      this.applyFilters(valueItems, filtered);\n    }\n\n    return {\n      valueItems,\n      column,\n      isTree,\n      isEntity,\n      isCsv,\n      fnEntityTooltip\n    }\n  }\n\n  /**\n   * Sets the filtered and excluded properties to the value items\n   * including the nested tree items\n   */\n  applyFilters(valueItems: (MetadataItem | TreeMetadataItem)[], filtered: Map<string | boolean | number, boolean>) {\n    for(let item of valueItems) {\n      if (isTreeMetadataItem(item)) {\n        this.applyFilters(item.parts, filtered);\n      }\n      else {\n        const isFiltered = filtered.get(item.value);\n        if(isFiltered !== undefined) {\n          item.filtered = isFiltered;\n          item.excluded = !isFiltered;\n        }\n      }\n    }\n  }\n\n  /**\n   * Takes a list of paths like [\"/a/b/c/\", \"/a/b/d/\"] and returns an array of TreeMetadataItem\n   */\n  getTreeValues(values: string[]): TreeMetadataItem[] {\n    return values.map(path => ({parts: this.getTreeParts(path)}));\n  }\n\n  /**\n   * Takes a path like \"/a/b/c/\" and returns an array of MetadataItem\n   * like [{value: \"/a/*\", display: \"a\"}, {value: \"/a/b/*\", display: \"b\"}, {value: \"/a/b/c/*\", display: \"c\"}]\n   */\n  getTreeParts(path: string): MetadataItem[] {\n    const parts = path.substring(1, path.length-1).split(\"/\");\n    return parts.map((value,i) => ({\n      value: `/${parts.slice(0,i+1).join(\"/\")}/*`,\n      display: value\n    }));\n  }\n\n  /**\n   * Takes a single value and returns an array of one or zero MetadataItem\n   */\n  getSingleValue(value: string|number|Date|boolean|undefined, column: CCColumn | undefined): MetadataItem[] {\n    if (Utils.isEmpty(value)) {\n      if (AppService.isBoolean(column)) {\n        return [{value: false, display: 'msg#metadata.item.empty_boolean'}];\n      }\n      else if (AppService.isNumber(column)) {\n        return [{value: 0, display: 'msg#metadata.item.empty_number'}];\n      }\n      else {\n        return [];\n      }\n    }\n    if(Utils.isDate(value)) {\n      value = Utils.toSysDateStr(value);\n    }\n    return [{value}];\n  }\n\n  getEntitySentence = (data: { entity: EntityItem, record: Record, query: Query }) => {\n    const { entity, record, query } = data;\n    // Get entity location\n    const location = this.getEntityLocation(entity);\n    if (!location) return of(undefined);\n    // Get list of highlights\n    const highlights = this.getHighlights();\n    // Get the text at the location of the entity\n    // The query is optional, but can be useful to resolve aliases and relevant extracts/matches\n    return this.textChunkWebService.getTextChunks(record.id, [location], highlights, query, 1, 1).pipe(\n      map(chunks => this.sanitizer.bypassSecurityTrustHtml(chunks?.[0]?.text ?? ''))\n    );\n  }\n\n  protected getHighlights(): string[] {\n    const preview = this.appService.app?.preview?.split(',')?.[0];\n    if (preview) {\n      return this.appService.getWebService<any>(preview)?.highlights?.split(\",\") || [];\n    }\n    return [];\n  }\n\n  protected getEntityLocation(entity: EntityItem): TextLocation | undefined {\n    const locations = entity.locations?.split(\";\")?.[0]?.split(\",\");\n    if (!locations?.length) return;\n    // eslint-disable-next-line radix\n    const offset = parseInt(locations[0]);\n    // eslint-disable-next-line radix\n    const length = parseInt(locations[1]);\n    return { offset, length };\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { PreviewHighlightColors } from '@sinequa/components/preview';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class HighlightService {\n\n  styleElement: HTMLStyleElement;\n\n  setHighlights(selectorsHighlights: { selectors: string[], highlights: PreviewHighlightColors[] }[]) {\n    if (!selectorsHighlights) return;\n\n    if (!this.styleElement) {\n      this.styleElement = document.createElement('style');\n      document.head.appendChild(this.styleElement);\n    }\n\n    this.styleElement.textContent = selectorsHighlights.map(sh =>\n      sh.highlights.map(highlight =>\n        sh.selectors.map(selector => {\n          const color = highlight.color ? `color: ${highlight.color} !important;` : '';\n          const bgColor = highlight.bgColor ? `background-color: ${highlight.bgColor};` : '';\n          return `${selector}.${highlight.name} {\n              ${color}\n              ${bgColor}\n            }`;\n        }).join('\\n')\n      ).join('\\n')\n    ).join('\\n');\n  }\n\n  clearHighlights() {\n    this.styleElement.textContent = null;\n  }\n\n  remove() {\n    if (this.styleElement) {\n      this.styleElement.remove();\n    }\n  }\n}\n","import { Component, ElementRef, EventEmitter, HostListener, Input, OnChanges, Output, SimpleChanges, ViewChild } from \"@angular/core\";\nimport { SafeHtml } from \"@angular/platform-browser\";\nimport { Action } from \"@sinequa/components/action\";\nimport { SearchService } from \"@sinequa/components/search\";\nimport { Query } from \"@sinequa/core/app-utils\";\nimport { EntityItem, Filter, isValueFilter, Record } from \"@sinequa/core/web-services\";\nimport { map, Observable, of } from \"rxjs\";\nimport { MetadataItem, MetadataValue } from \"../../metadata.interface\";\nimport { MetadataService } from \"../../metadata.service\";\n\n@Component({\n    selector: \"sq-metadata-item\",\n    templateUrl: \"./metadata-item.component.html\",\n    styleUrls: ['./metadata-item.component.scss'],\n    standalone: false\n})\nexport class MetadataItemComponent implements OnChanges {\n    @Input() record: Record;\n    @Input(\"query\") _query?: Query;\n    @Input() layout: 'inline' | 'table' = 'inline';\n\n    @Input() field: string;\n    @Input() label?: string\n    @Input() icon?: string;\n    @Input() fieldClass?: string;\n    @Input() filterable?: boolean;\n    @Input() excludable?: boolean;\n    @Input() showEntityExtract?: boolean;\n    @Input() actions?: Action[];\n\n    @Input() collapseRows: boolean = true;\n    @Input() entityExtractMaxLines = 4;\n\n    @Input() actionsButtonsStyle = 'btn btn-secondary';\n    @Input() actionsButtonsSize = 'sm';\n\n    @Output() valueClicked = new EventEmitter<{field: string, value: MetadataItem}>();\n\n    @ViewChild('values') valuesEl: ElementRef<HTMLElement>;\n\n    metadataValue: MetadataValue;\n    needsCollapse: boolean = false;\n    collapsed: boolean = true;\n\n    get query(): Query {\n        return this._query || this.searchService.query;\n    }\n\n    @HostListener('window:resize', ['$event']) onResize(event) {\n        this.handleResize();\n    }\n\n    constructor(\n        private metadataService: MetadataService,\n        private searchService: SearchService,\n    ) { }\n\n    ngOnChanges(changes: SimpleChanges) {\n        // Generate the metadata data\n        if (changes.record || changes.query || changes.field || changes.showEntityExtract) {\n            this.metadataValue = this.metadataService.getMetadataValue(this.record, this.query, this.field, this.showEntityExtract);\n        }\n\n      this.handleResize();\n    }\n\n    handleResize() {\n        this.collapsed = true;\n        setTimeout(() => {\n            this.updateCollapsed();\n        }, 1);\n    }\n\n\n    filterItem(item: MetadataItem, remove?: boolean, not?: boolean): void {\n        if (remove) {\n            this.query.removeFilters(f => isValueFilter(f) && f.field === this.field && f.value === item.value);\n        } else {\n            let filter: Filter = {field: this.field, value: item.value, display: item.display};\n            if(not) {\n              filter = {operator: 'not', filters: [filter]};\n            }\n            this.query.addFilter(filter);\n        }\n        this.searchService.search();\n    }\n\n    toggleCollapse(): void {\n        this.collapsed = !this.collapsed;\n    }\n\n    getTooltip = (valueItem: MetadataItem): Observable<{ entityExtract?: SafeHtml, actions: Action[] }> | undefined => {\n        const hasActions = this.actions || this.filterable || this.excludable;\n\n        if (!hasActions && !this.metadataValue.fnEntityTooltip) return undefined;\n\n        const actions: Action[] = [];\n        if (hasActions) {\n            if (this.actions) {\n                // Inject the hovered value into custom actions\n                this.actions.forEach(a => a.data = valueItem);\n                actions.push(...this.actions);\n            }\n\n            const filterAction = new Action({\n                icon: \"fas fa-filter\",\n                text: \"msg#metadata.actions.filter\",\n                action: () => {\n                    this.filterItem(valueItem);\n                    updateVisibility(valueItem);\n                }\n            });\n\n            const excludeAction = new Action({\n                icon: \"fas fa-minus-circle\",\n                text: \"msg#metadata.actions.exclude\",\n                action: () => {\n                    this.filterItem(valueItem, false, true);\n                    updateVisibility(valueItem);\n                }\n            });\n\n            const removeFilterAction = new Action({\n                icon: \"fas fa-times\",\n                text: \"msg#metadata.actions.removeFilter\",\n                action: () => {\n                    this.filterItem(valueItem, true);\n                    updateVisibility(valueItem);\n                }\n            });\n\n            actions.push(filterAction, excludeAction, removeFilterAction);\n\n            const updateVisibility = (item: MetadataItem) => {\n                // Search for an existing filter on the current value and display actions accordingly\n                const filter = this.query.findFilter(f => isValueFilter(f) && f.field === this.field && f.value === item.value);\n                item.filtered = filter && filter.operator !== 'neq';\n                item.excluded = filter && filter.operator === 'neq';\n                filterAction.hidden = !this.filterable || !!filter;\n                removeFilterAction.hidden = (!this.filterable && !this.excludable) || !filter;\n                excludeAction.hidden = !this.excludable || !!filter;\n            }\n\n            updateVisibility(valueItem);\n        }\n\n        if (!this.metadataValue.fnEntityTooltip) {\n            return of({ actions })\n        } else {\n            return this.metadataValue.fnEntityTooltip({ entity: valueItem as EntityItem, record: this.record, query: this.query! })\n                .pipe(map((value: SafeHtml | undefined) => ({ entityExtract: value, actions })));\n        }\n    }\n\n    private updateCollapsed(): void {\n        if (this.valuesEl) { // Display or not the collapse icon\n            const { scrollHeight, clientHeight } = this.valuesEl.nativeElement;\n            this.needsCollapse = scrollHeight > clientHeight;\n        }\n    }\n\n}\n","<ng-container *ngIf=\"metadataValue.valueItems.length > 0\">\n    <!-- Icon -->\n    <span *ngIf=\"icon\" class=\"sq-metadata-col metadata-{{layout}} {{icon}}\"></span>\n\n    <!-- Title -->\n    <span *ngIf=\"label\" class=\"sq-metadata-col metadata-{{layout}} sq-metadata-item-label\">\n        {{label | sqMessage}}:\n    </span>\n\n    <!-- Value -->\n    <span class=\"sq-metadata-col sq-metadata-values metadata-{{layout}}\" [ngClass]=\"{'collapsed': !!collapseRows && collapsed}\" #values>\n        <!-- Collapse button -->\n        <a *ngIf=\"needsCollapse\" role=\"button\" (click)=\"toggleCollapse()\" class=\"collapse-button me-1\">\n            <i class=\"fas fa-fw fa-caret-{{collapsed? 'right' : 'down'}}\"></i>\n        </a>\n\n        <!-- If tree -->\n        <ng-container *ngIf=\"metadataValue.isTree\">\n            <ng-container *ngFor=\"let valueItem of metadataValue.valueItems; let $last = last\">\n                <ol class=\"breadcrumb\" *ngIf=\"!!valueItem.parts && valueItem.parts.length > 0\">\n                    <li *ngFor=\"let part of valueItem.parts; let $innerLast = last\">\n                        <ng-container *ngTemplateOutlet=\"valueTpl; context: {$implicit: part}\"></ng-container>\n                        <span *ngIf=\"!$innerLast\" class=\"sq-metadata-item-tree-node-separator\">{{'msg#metadata.item.treeNodeSeparator' | sqMessage}}</span>\n                    </li>\n                </ol>\n                <span *ngIf=\"!$last\" class=\"sq-metadata-item-tree-separator\">{{'msg#metadata.item.treeSeparator' | sqMessage}}</span>\n            </ng-container>\n        </ng-container>\n\n        <!-- Not a Tree-->\n        <ng-container *ngIf=\"!metadataValue.isTree\">\n            <ng-container *ngFor=\"let valueItem of metadataValue.valueItems; let $last = last\">\n                <ng-container *ngTemplateOutlet=\"valueTpl; context: {$implicit: valueItem}\"></ng-container>\n                <span class=\"sq-metadata-separator\" *ngIf=\"!$last\">{{'msg#metadata.item.listSeparator' | sqMessage}}</span>\n            </ng-container>\n        </ng-container>\n\n        <ng-template #valueTpl let-value>\n            <span\n                [attr.title]=\"(label || metadataValue.fnEntityTooltip) ? null : (label | sqMessage)\"\n                [sqTooltip]=\"getTooltip\"\n                [placement]=\"'top'\"\n                [hoverableTooltip]=\"true\"\n                [tooltipClass]=\"'p-0 bg-transparent'\"\n                [sqTooltipData]=\"value\"\n                [sqTooltipTemplate]=\"tooltipTpl\"\n                class=\"sq-metadata-item {{'sq-metadata-item-' + field}} {{fieldClass}}\"\n                [class.sq-filtered]=\"value.filtered\"\n                [class.sq-excluded]=\"value.excluded\"\n                (click)=\"valueClicked.emit({field: field, value: value})\"\n            >{{value | sqValue:metadataValue.column}}</span>\n        </ng-template>\n\n        <ng-template #tooltipTpl let-data>\n            <div class=\"sq-metadata-tooltip\">\n                <div *ngIf=\"data.entityExtract\" class=\"p-2\">\n                    <div class=\"sq-metadata-tooltip-entity\"\n                        [style.--sq-max-lines]=\"entityExtractMaxLines\"\n                        [innerHTML]=\"data.entityExtract\">\n                    </div>\n                </div>\n                <div *ngIf=\"data.actions.length\" class=\"btn-group w-100\"\n                    [sq-action-buttons]=\"{items: data.actions, style: actionsButtonsStyle, size: actionsButtonsSize, rightAligned: true}\">\n                </div>\n            </div>\n        </ng-template>\n    </span>\n</ng-container>\n","import { Component, EventEmitter, Input, Output } from \"@angular/core\";\r\nimport { Query } from \"@sinequa/core/app-utils\";\r\nimport { Record } from \"@sinequa/core/web-services\";\r\nimport { MetadataConfig, MetadataItem } from \"../metadata.interface\";\r\n\r\n@Component({\n    selector: \"sq-metadata\",\n    templateUrl: \"./metadata.component.html\",\n    styleUrls: ['./metadata.component.scss'],\n    standalone: false\n})\r\nexport class MetadataComponent {\r\n    @Input() record: Record;\r\n    @Input() query?: Query;\r\n    @Input() layout: 'inline' | 'table' = 'inline';\r\n\r\n    /**\r\n     * The metadata config with the list of metadata to display\r\n     * It can also be strings to be put in between\r\n     */\r\n    @Input() config: (MetadataConfig | string)[];\r\n    /**\r\n     * Class for the tooltip buttons\r\n     */\r\n    @Input() actionsButtonsStyle = 'btn btn-secondary';\r\n    /**\r\n     * Size for the tooltip buttons\r\n     */\r\n    @Input() actionsButtonsSize = 'sm';\r\n\r\n    @Output() valueClicked = new EventEmitter<{field: string, value: MetadataItem}>();\r\n\r\n    isString(config) {\r\n        return typeof config === 'string';\r\n    }\r\n}","<div class=\"metadata-{{layout}}\">\r\n    <ng-container *ngFor=\"let c of config\">\r\n        <sq-metadata-item *ngIf=\"!isString(c)\"\r\n            [record]=\"record\"\r\n            [query]=\"query\"\r\n            [field]=\"c.field\"\r\n            [icon]=\"c.icon\"\r\n            [fieldClass]=\"c.fieldClass\"\r\n            [filterable]=\"c.filterable\"\r\n            [excludable]=\"c.excludable\"\r\n            [showEntityExtract]=\"c.showEntityExtract\"\r\n            [actions]=\"c.actions\"\r\n            [layout]=\"layout\"\r\n            [label]=\"c.label\"\r\n            [entityExtractMaxLines]=\"c.entityExtractMaxLines\"\r\n            [actionsButtonsStyle]=\"actionsButtonsStyle\"\r\n            [actionsButtonsSize]=\"actionsButtonsSize\"\r\n            [collapseRows]=\"c.collapseRows\"\r\n            (valueClicked)=\"valueClicked.emit($event)\">\r\n        </sq-metadata-item>\r\n        <span *ngIf=\"isString(c)\">{{c | sqMessage}}</span>\r\n    </ng-container>\r\n</div>\r\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\n\nimport { IntlModule } from \"@sinequa/core/intl\";\nimport { UtilsModule } from \"@sinequa/components/utils\";\nimport { CollapseModule } from \"@sinequa/components/collapse\";\n\nimport { MetadataComponent } from \"./metadata/metadata.component\";\nimport { MetadataItemComponent } from \"./metadata/metadata-item/metadata-item.component\";\nimport { BsActionModule } from \"@sinequa/components/action\";\n\n@NgModule({\n    declarations: [\n        MetadataComponent, MetadataItemComponent\n    ],\n    exports: [\n        MetadataComponent, MetadataItemComponent\n    ],\n    imports: [\n        CommonModule,\n        IntlModule,\n        UtilsModule,\n        CollapseModule,\n        BsActionModule\n    ]\n})\nexport class MetadataModule {\n}","export default {\n    metadata: {\n        extractslocationsLabel: \"Relevant extract\",\n        extractslocationsPluralLabel: \"Relevant extracts\",\n        geoLabel: \"Place\",\n        geoPluralLabel: \"Places\",\n        personLabel: \"Person\",\n        personPluralLabel: \"People\",\n        companyLabel: \"Company\",\n        companyPluralLabel: \"Companies\",\n        treepathLabel: \"Source\",\n        treepathPluralLabel: \"Sources\",\n        matchlocationsLabel: \"Search term\",\n        matchlocationsPluralLabel: \"Search terms\",\n        titleLabel: \"Title\",\n        titlePluralLabel: \"Titles\",\n        authorsLabel: \"Author\",\n        authorsPluralLabel: \"Authors\",\n        filenameLabel: \"Filename\",\n        filenamePluralLabel: \"Filenames\",\n        modifiedLabel: \"Date\",\n        modifiedPluralLabel: \"Dates\",\n        sizeLabel: \"Size\",\n        sizePluralLabel: \"Sizes\",\n        docformatLabel: \"Format\",\n        docformatPluralLabel: \"Formats\",\n        documentlanguagesLabel: \"Language\",\n        documentlanguagesPluralLabel: \"Languages\",\n        geo_label: \"Place\",\n        geo_plural_label: \"Places\",\n        person_label: \"Person\",\n        person_plural_label: \"People\",\n        company_label: \"Company\",\n        company_plural_label: \"Companies\",\n        treepath_label: \"Source\",\n        treepath_plural_label: \"Sources\",\n        title_label: \"Title\",\n        title_plural_label: \"Titles\",\n        authors_label: \"Author\",\n        authors_plural_label: \"Authors\",\n        filename_label: \"Filename\",\n        filename_plural_label: \"Filenames\",\n        modified_label: \"Date\",\n        modified_plural_label: \"Dates\",\n        size_label: \"Size\",\n        size_plural_label: \"Sizes\",\n        docformat_label: \"Format\",\n        docformat_plural_label: \"Formats\",\n        documentlanguages_label: \"Language\",\n        documentlanguages_plural_label: \"Languages\",\n        accessLists: {\n            authorizedListTitleText: \"Authorized access list\",\n            authorizedListHeader: \"Authorized access list {value, number}\",\n            deniedListTitleText: \"Denied access list\",\n            deniedListHeader: \"Denied access list {value, number}\"\n        },\n        item: {\n            label: \"{label}:\",\n            separator: \" \",\n            treeSeparator: \" ; \",\n            treeNodeSeparator: \" ❯ \",\n            listSeparator: \", \",\n            empty_boolean: 'false',\n            empty_number: '0'\n        },\n        actions: {\n            filter: \"Filter\",\n            exclude: \"Exclude\",\n            removeFilter: \"Remove filter\"\n        }\n    },\n};\n","export default {\n    metadata: {\n        extractslocationsLabel: \"Extrait pertinent\",\n        extractslocationsPluralLabel: \"Extraits pertinents\",\n        geoLabel: \"Lieu\",\n        geoPluralLabel: \"Lieux\",\n        personLabel: \"Personne\",\n        personPluralLabel: \"Personnes\",\n        companyLabel: \"Société\",\n        companyPluralLabel: \"Sociétés\",\n        treepathLabel: \"Source\",\n        treepathPluralLabel: \"Sources\",\n        matchlocationsLabel: \"Terme recherché\",\n        matchlocationsPluralLabel: \"Termes recherchés\",\n        titleLabel: \"Titre\",\n        titlePluralLabel: \"Titres\",\n        authorsLabel: \"Auteur\",\n        authorsPluralLabel: \"Auteurs\",\n        filenameLabel: \"Nom de fichier\",\n        filenamePluralLabel: \"Noms de fichiers\",\n        modifiedLabel: \"Date\",\n        modifiedPluralLabel: \"Dates\",\n        sizeLabel: \"Taille\",\n        sizePluralLabel: \"Tailles\",\n        docformatLabel: \"Format\",\n        docformatPluralLabel: \"Formats\",\n        documentlanguagesLabel: \"Langue\",\n        documentlanguagesPluralLabel: \"Langues\",\n        geo_label: \"Lieu\",\n        geo_plural_label: \"Lieux\",\n        person_label: \"Personne\",\n        person_plural_label: \"Personnes\",\n        company_label: \"Société\",\n        company_plural_label: \"Sociétés\",\n        treepath_label: \"Source\",\n        treepath_plural_label: \"Sources\",\n        title_label: \"Titre\",\n        title_plural_label: \"Titres\",\n        authors_label: \"Auteur\",\n        authors_plural_label: \"Auteurs\",\n        filename_label: \"Nom de fichier\",\n        filename_plural_label: \"Noms de fichiers\",\n        modified_label: \"Date\",\n        modified_plural_label: \"Dates\",\n        size_label: \"Taille\",\n        size_plural_label: \"Tailles\",\n        docformat_label: \"Format\",\n        docformat_plural_label: \"Formats\",\n        documentlanguages_label: \"Langue\",\n        documentlanguages_plural_label: \"Langues\",\n        accessLists: {\n            authorizedListTitleText: \"Accès autorisés\",\n            authorizedListHeader: \"Liste d'accès autorisés {value, number}\",\n            deniedListTitleText: \"Accès refusés\",\n            deniedListHeader: \"Liste d'accès refusés {value, number}\"\n        },\n        item: {\n            label: \"{label}:\",\n            separator: \" \",\n            treeSeparator: \" ; \",\n            treeNodeSeparator: \" ❯ \",\n            listSeparator: \", \",\n            empty_boolean: 'false',\n            empty_number: '0'\n        },\n        actions: {\n            filter: \"Filtrer\",\n            exclude: \"Exclure\",\n            removeFilter: \"Retirer le filtre\"\n        }\n    },\n};\n","export default {\n    metadata: {\n        extractslocationsLabel: \"Relevanter Extrakt\",\n        extractslocationsPluralLabel: \"Relevante Extrakte\",\n        geoLabel: \"Ort\",\n        geoPluralLabel: \"Orte\",\n        personLabel: \"Person\",\n        personPluralLabel: \"Personen\",\n        companyLabel: \"Firma\",\n        companyPluralLabel: \"Firmen\",\n        treepathLabel: \"Quelle\",\n        treepathPluralLabel: \"Quellen\",\n        matchlocationsLabel: \"Suchbegriff\",\n        matchlocationsPluralLabel: \"Suchbegriffe\",\n        titleLabel: \"Titel\",\n        titlePluralLabel: \"Titel\",\n        authorsLabel: \"Autor\",\n        authorsPluralLabel: \"Autoren\",\n        filenameLabel: \"Dateiname\",\n        filenamePluralLabel: \"Dateinamen\",\n        modifiedLabel: \"Datum\",\n        modifiedPluralLabel: \"Datumsangaben\",\n        sizeLabel: \"Größe\",\n        sizePluralLabel: \"Größen\",\n        docformatLabel: \"Format\",\n        docformatPluralLabel: \"Formate\",\n        documentlanguagesLabel: \"Sprache\",\n        documentlanguagesPluralLabel: \"Sprachen\",\n        geo_label: \"Ort\",\n        geo_plural_label: \"Orte\",\n        person_label: \"Person\",\n        person_plural_label: \"Personen\",\n        company_label: \"Firma\",\n        company_plural_label: \"Firmen\",\n        treepath_label: \"Quelle\",\n        treepath_plural_label: \"Quellen\",\n        title_label: \"Titel\",\n        title_plural_label: \"Titel\",\n        authors_label: \"Autor\",\n        authors_plural_label: \"Autoren\",\n        filename_label: \"Dateiname\",\n        filename_plural_label: \"Dateinamen\",\n        modified_label: \"Datum\",\n        modified_plural_label: \"Datumsangaben\",\n        size_label: \"Größe\",\n        size_plural_label: \"Größen\",\n        docformat_label: \"Format\",\n        docformat_plural_label: \"Formate\",\n        documentlanguages_label: \"Sprache\",\n        documentlanguages_plural_label: \"Sprachen\",\n        accessLists: {\n            authorizedListTitleText: \"Liste der erlaubten Zugriffe\",\n            authorizedListHeader: \"Liste der erlaubten Zugriffe {value, number}\",\n            deniedListTitleText: \"Liste der unerlaubten Zugriffe\",\n            deniedListHeader: \"Liste der unerlaubten Zugriffe {value, number}\"\n        },\n        item: {\n            label: \"{label}:\",\n            separator: \" \",\n            treeSeparator: \" ; \",\n            treeNodeSeparator: \" ❯ \",\n            listSeparator: \", \",\n            empty_boolean: 'false',\n            empty_number: '0'\n        },\n        actions: {\n            filter: \"Filter\",\n            exclude: \"Ausschließen\",\n            removeFilter: \"Filter entfernen\"\n        }\n    }\n};\n","import {Utils} from \"@sinequa/core/base\";\nimport {enFacet, frFacet, deFacet} from \"@sinequa/components/facet\";\nimport {enCollapse, frCollapse, deCollapse} from \"@sinequa/components/collapse\";\n\nimport _enMetadata from \"./en\";\nimport _frMetadata from \"./fr\";\nimport _deMetadata from \"./de\";\n\nconst enMetadata = Utils.merge({}, _enMetadata, enFacet, enCollapse);\nconst frMetadata = Utils.merge({}, _frMetadata, frFacet, frCollapse);\nconst deMetadata = Utils.merge({}, _deMetadata, deFacet, deCollapse);\n\nexport { enMetadata, frMetadata, deMetadata };\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.MetadataService","i2","i3","i1","i2.MetadataItemComponent"],"mappings":"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"}