{"version":3,"file":"sinequa-components-results-view.mjs","sources":["../../../projects/components/results-view/results-view.service.ts","../../../projects/components/results-view/bootstrap/results-grid-view/results-grid-view.ts","../../../projects/components/results-view/bootstrap/results-grid-view/results-grid-view.html","../../../projects/components/results-view/bootstrap/results-view-selector/results-view-selector.ts","../../../projects/components/results-view/bootstrap/results-view-selector/results-view-selector.html","../../../projects/components/results-view/bootstrap/results-view-module.ts","../../../projects/components/results-view/messages/en.ts","../../../projects/components/results-view/messages/fr.ts","../../../projects/components/results-view/messages/de.ts","../../../projects/components/results-view/messages/index.ts","../../../projects/components/results-view/sinequa-components-results-view.ts"],"sourcesContent":["import { Injectable, Inject, InjectionToken } from \"@angular/core\";\nimport { Router, ActivatedRoute, NavigationEnd } from \"@angular/router\";\nimport { Subject, Observable } from \"rxjs\";\nimport { Utils } from '@sinequa/core/base';\nimport { SearchService } from '@sinequa/components/search';\nimport { Query } from '@sinequa/core/app-utils';\n\n/**\n * Configuration of a Results View\n */\nexport interface ResultsView {\n    /** Name of the results view */\n    name: string;\n    /** Type of the results view (not used internally, but may be useful if multiple views share a common component) */\n    type: string;\n    /** How the results view should be displayed (default to the name) */\n    display?: string;\n    /** Icon class for the results view */\n    icon?: string;\n    /** List of tab for which this tab can be displayed (defaults to all if undefined) */\n    includedTabs?: string[];\n    /** List of tab for which this tab is excluded (defaults to none if undefined) */\n    excludedTabs?: string[];\n    /**\n     * Method called when selecting this results view. It can be used to modify the search query\n     * when a view has specific data to display. If the method returns true, then selecting this view\n     * triggers a search and the view selection becomes effective upon results. If the method results false,\n     * (or if the method is undefined), then selecting this view does not trigger a new search\n     * and the view selection is immediate.\n     */\n    beforeSearch?: (query: Query, previousView: ResultsView) => boolean;\n}\n\nexport interface ResultsViewEvent {\n    type: \"before-select\" | \"after-select\" | \"select-cancelled\";\n}\n\nexport interface ResultsViewBeforeSelectEvent extends ResultsViewEvent {\n    type: \"before-select\";\n    view: ResultsView;\n    promises: Promise<boolean>[];\n}\n\nexport interface ResultsViewAfterSelectEvent extends ResultsViewEvent {\n    type: \"after-select\";\n    view: ResultsView;\n}\n\nexport interface ResultsViewSelectCancelledEvent extends ResultsViewEvent {\n    type: \"select-cancelled\";\n    view: ResultsView;\n}\n\nexport type ResultsViewEvents =\n    ResultsViewBeforeSelectEvent |\n    ResultsViewAfterSelectEvent |\n    ResultsViewSelectCancelledEvent;\n\nexport const RESULTS_VIEWS = new InjectionToken<ResultsView[]>(\"RESULTS_VIEWS\");\nexport const DEFAULT_VIEW = new InjectionToken<ResultsView>(\"DEFAULT_VIEW\");\n\n@Injectable({\n    providedIn: 'root',\n})\nexport class ResultsViewService {\n\n    protected _resultsView : ResultsView;\n    protected readonly _resultsViews : ResultsView[];\n\n    protected _resultsViewSelected = new Subject<ResultsView>();\n    protected _events = new Subject<ResultsViewEvents>();\n\n    protected pendingView: ResultsView | undefined;\n\n    /**\n     * Constructor: Expects the configuration for a list of views and\n     * one default view. These views can be set when importing the module in the AppModule\n     * with the ResultsViewModule.forRoot() method.\n     */\n    constructor(\n        @Inject(DEFAULT_VIEW) public defaultView: ResultsView,\n        @Inject(RESULTS_VIEWS) resultsViews: ResultsView[],\n        protected router: Router,\n        protected route: ActivatedRoute,\n        protected searchService: SearchService\n    ) {\n        this._resultsViews = resultsViews;\n        this._resultsView = this.defaultView;\n\n        /**\n         * Listener triggered whenever the URL changes\n         */\n        this.router.events.subscribe(event => {\n            if (event instanceof NavigationEnd) {\n                this.handleNavigation();\n            }\n        });\n\n        /**\n         * Listener triggered whenever new results come in.\n         * Some views must be displayed after a search, hence the\n         * pendingView flag.\n         */\n        this.searchService.resultsStream.subscribe(results => {\n            if(this.pendingView) {\n                this.searchService.queryStringParams.view = this.pendingView.name;\n                this.searchService.navigate({skipSearch: true});\n                this.pendingView = undefined;\n            }\n        });\n\n        // Automatically switch results views, if we go to a tab that has specific list of views\n        this.searchService.events.subscribe(event => {\n            // Event called just before the query for the new tab is searched\n            if(event.type === \"before-select-tab\" && event.query.tab) {\n                const views = this.getIncludedViews(event.query.tab);\n                // If there are views for this tab and they don't include the current one...\n                if(views.length > 0 && !views.includes(this.resultsView)) {\n                    // Set the view as pending\n                    this.pendingView = views[0];\n                    // Modify the query if needed\n                    if(this.pendingView.beforeSearch) {\n                        this.pendingView.beforeSearch(event.query, this.resultsView);\n                    }\n                }\n            }\n        })\n    }\n\n\n    // GETTERS\n\n    public get resultsViewSelected(): Observable<ResultsView> {\n        return this._resultsViewSelected;\n    }\n\n    public get events(): Observable<ResultsViewEvents> {\n        return this._events;\n    }\n\n    public get resultsView(): ResultsView {\n        return this._resultsView;\n    }\n\n    public get views(): ResultsView[] {\n        return this._resultsViews;\n    }\n\n    // EVENT HANDLERS\n\n    /**\n     * Navigate to a new URL including the given results view's name\n     * @param view \n     */\n    protected navigate(view: ResultsView) {\n        let waitForResults = !!view.beforeSearch;\n        if(view.beforeSearch) {\n            waitForResults = view.beforeSearch(this.searchService.query, this.resultsView);\n        }\n        if(!waitForResults) {\n            // We switch view immediately via the search service (which centralizes the navigation)\n            this.searchService.queryStringParams.view = view.name;\n            this.searchService.navigate({skipSearch: true});\n        }\n        else {\n            // We set the view as \"pending\", that is waiting for new results to come in\n            this.pendingView = view;\n            this.searchService.search();\n        }\n    }\n\n    /**\n     * Responds to a change in the URL: Sets the results view if the URL\n     * specifies a different results view name.\n     */\n    protected handleNavigation() {\n        const url = Utils.makeURL(this.router.url);\n        const view = this.getView(url.searchParams.get(\"view\"));\n        if(view && view !== this.resultsView) {\n            this.searchService.queryStringParams.view = view.name; // Needed when refreshing the page\n            this.setResultsView(view);\n        } else if (!view) {\n            // ensures 'view' param do not exists, otherwise next search query will contains it\n            delete this.searchService.queryStringParams.view;\n            this.setResultsView(this.defaultView);\n        }\n    }\n\n    /**\n     * Sets the results view and emits an event\n     * @param view \n     */\n    protected setResultsView(view: ResultsView) {\n        this._resultsView = view;\n        this._events.next({type: \"after-select\", view});\n        this._resultsViewSelected.next(view);\n    }\n\n\n    // PUBLIC API\n\n    /**\n     * Selects the given results view. This method is asynchronous:\n     * - The selected results view might modify the query before being displayed\n     * - The view selection works with a navigation via the router (adding the view name to the URL)\n     * @param view \n     */\n    public selectResultsView(view: ResultsView) {\n        if (view) {\n            // Raise before event...\n            const beforeEvent: ResultsViewBeforeSelectEvent = {\n                type: \"before-select\",\n                view,\n                promises: []\n            }\n            this._events.next(beforeEvent);\n            if (beforeEvent.promises.length === 0) {\n                this.navigate(view);\n            }\n            else {\n                Promise.all(beforeEvent.promises)\n                    .then((results) => {\n                        const ok = results.every(result => result);\n                        if (ok) {\n                            this.navigate(view);\n                        }\n                        else {\n                            console.log(\"selectResultsView cancelled\");\n                            this._events.next({type: \"select-cancelled\", view});\n                        }\n                    })\n                    .catch((reason) => {\n                        console.log(\"selectResultsView error:\", reason);\n                        this._events.next({type: \"select-cancelled\", view});\n                    });\n            }\n        }\n        else {\n            console.error(\"Undefined Results View\");\n        }\n    }\n\n    /**\n     * Selects the results view with the given name. This method is asynchronous:\n     * - The selected results view might modify the query before being displayed\n     * - The view selection works with a navigation via the router (adding the view name to the URL)\n     * @param viewName \n     */\n    public selectResultsViewName(viewName: string){\n        const view = this.getView(viewName);\n        if (view) {\n            this.selectResultsView(view);\n        }\n    }\n\n    /**\n     * Returns the results view with the given name\n     * @param viewName \n     */\n    public getView(viewName): ResultsView | undefined {\n        return this.views.find(v => v.name === viewName);\n    }\n\n    /**\n     * Returns the list of results views compatible with a given tab\n     * @param tab \n     */\n    public getIncludedViews(tab?: string): ResultsView[] {\n        const views: ResultsView[] = [];\n        for (const view of this.views) {\n            const included = !!view.includedTabs\n                ? view.includedTabs.includes(tab || \"\")\n                : !view.excludedTabs || !view.excludedTabs.includes(tab || \"\");\n\n            if (included) {\n                views.push(view);\n            }\n        }\n        return views;\n    }\n\n}","import {Component, Input, OnChanges, SimpleChanges} from \"@angular/core\";\nimport {Utils} from \"@sinequa/core/base\";\nimport {AppService, FormatService} from \"@sinequa/core/app-utils\";\nimport {CCColumn, Results} from \"@sinequa/core/web-services\";\nimport {SelectionService} from \"@sinequa/components/selection\";\nimport {SearchService} from \"@sinequa/components/search\";\nimport {ResultsView} from \"../../results-view.service\";\n\nexport interface GridView extends ResultsView {\n    columns: Column[];\n}\n\nexport interface Column {\n    active: boolean;\n    title: string;\n    field: string;\n    sortable: boolean;\n    renderAsHtml: boolean;\n}\n\nexport interface ColumnData {\n    config: Column;\n    column: CCColumn | undefined;\n    // Sorting data\n    sortIndex?: number;\n    ascending?: boolean;\n    sortIcon?: string;\n    sortIndicator?: string;\n}\n\n@Component({\n    selector: \"sq-results-grid-view\",\n    templateUrl: \"./results-grid-view.html\",\n    standalone: false\n})\nexport class BsResultsGridView implements OnChanges {\n    @Input() results: Results;\n    @Input() view: GridView;\n    private orderBy: string | undefined;\n    columnsData: ColumnData[] | undefined;\n\n    constructor(\n        public appService: AppService,\n        public searchService: SearchService,\n        public formatService: FormatService,\n        private selectionService: SelectionService) {\n    }\n\n    observeQueryFields() {\n        this.initSorts();\n    }\n\n    ngOnChanges(changes: SimpleChanges) {\n        if (!this.columnsData) {\n            if (!!this.view.columns) {\n                this.columnsData = this.view.columns.filter(config => config.active).map(config => ({\n                    config: config,\n                    column: this.appService.getColumn(config.field)\n                }));\n                this.clearSorts();\n            }\n            else {\n                this.columnsData = [];\n            }\n        }\n        if (!!changes[\"query\"]) {\n            this.observeQueryFields();\n        }\n    }\n\n\n    toggleSelectedRecords() {\n        this.selectionService.toggleSelectedRecords();\n    }\n\n    get haveSelectedRecords(){\n        return this.selectionService.haveSelectedRecords;\n    }\n\n    getSortIndicator(columnData: ColumnData): string | undefined {\n        if (columnData.sortIndex === -1) {\n            return undefined;\n        }\n        if (this.maxSortIndex === 0) {\n            return undefined;\n        }\n        switch (columnData.sortIndex || -1 + 1) {\n            case 1: return \"\\u00B9\";\n            case 2: return \"\\u00B2\";\n            case 3: return \"\\u00B3\";\n            case 4: return \"\\u2074\";\n            case 5: return \"\\u2075\";\n            case 6: return \"\\u2076\";\n            case 7: return \"\\u2077\";\n            case 8: return \"\\u2078\";\n            case 9: return \"\\u2079\";\n            default: return \"\\u207A\";\n        }\n    }\n\n    ascendingFirst(column: Column): boolean {\n        //return this.appService.isNumber(column.field);\n        return false;\n    }\n\n    get maxSortIndex(): number {\n        let sortIndex = -1;\n        if (this.columnsData) {\n            for (const columnData of this.columnsData) {\n                if (columnData.sortIndex !== undefined && columnData.sortIndex > sortIndex) {\n                    sortIndex = columnData.sortIndex;\n                }\n            }\n        }\n        return sortIndex;\n    }\n\n    _setSort(columnData: ColumnData, ascending: boolean) {\n        const previousSortIndex = columnData.sortIndex;\n        if (previousSortIndex === -1) {\n            columnData.sortIndex = this.maxSortIndex + 1;\n        }\n        columnData.ascending = ascending;\n        columnData.sortIcon = columnData.ascending ? \"fas fa-caret-up\" : \"fas fa-caret-down\";\n        columnData.sortIndicator = this.getSortIndicator(columnData);\n        if (previousSortIndex === -1) {\n            if (this.columnsData) {\n                for (const columnData1 of this.columnsData) {\n                    columnData1.sortIndicator = this.getSortIndicator(columnData1);\n                }\n            }\n        }\n    }\n\n    _clearSort(columnData: ColumnData) {\n        const previousSortIndex = columnData.sortIndex || -1;\n        columnData.sortIndex = -1;\n        columnData.ascending = false;\n        columnData.sortIcon = \"fas fa-sort\";\n        columnData.sortIndicator = undefined;\n        if (previousSortIndex !== -1) {\n            if (this.columnsData) {\n                for (const columnData1 of this.columnsData) {\n                    if (columnData1.sortIndex !== undefined && columnData1.sortIndex > previousSortIndex) {\n                        columnData1.sortIndex--;\n                    }\n                    columnData1.sortIndicator = this.getSortIndicator(columnData1);\n                }\n            }\n        }\n    }\n\n    clearSorts() {\n        if (this.columnsData) {\n            for (const columnData of this.columnsData) {\n                this._clearSort(columnData);\n            }\n        }\n    }\n\n    isSortable(columnData: ColumnData): boolean {\n        return !!columnData && columnData.config.sortable && this.appService.isSortable(columnData.config.field);\n    }\n\n    initSorts() {\n        if (this.searchService.query.orderBy === this.orderBy) {\n            return;\n        }\n        this.orderBy = this.searchService.query.orderBy;\n        this.clearSorts();\n        if (!!this.orderBy) {\n            const parts = Utils.split(this.orderBy, \",\");\n            for (const part of parts) {\n                const tokens = Utils.split(part, \" \");\n                if (tokens.length > 0) {\n                    const field = tokens[0];\n                    if (this.columnsData) {\n                        const columnData = this.columnsData.find(value => Utils.eqNC(field, value.config.field));\n                        if (columnData && this.isSortable(columnData)) {\n                            this._setSort(columnData, tokens.length > 1 ? Utils.eqNC(tokens[1], \"asc\") : true);\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    setSort(columnData: ColumnData) {\n        if (this.isSortable(columnData)) {\n            if (columnData.sortIndex !== -1) {\n                if (this.ascendingFirst(columnData.config)) {\n                    if (columnData.ascending) {\n                        this._setSort(columnData, false);\n                    }\n                    else {\n                        this._clearSort(columnData);\n                    }\n                }\n                else {\n                    if (columnData.ascending) {\n                        this._clearSort(columnData);\n                    }\n                    else {\n                        this._setSort(columnData, true);\n                    }\n                }\n            }\n            else {\n                this._setSort(columnData, this.ascendingFirst(columnData.config));\n            }\n            const orderBy: string[] = [];\n            if (this.columnsData) {\n                for (let sortIndex = 0; ; sortIndex++) {\n                    const columnData = this.columnsData.find(columnData => columnData.sortIndex === sortIndex);\n                    if (!columnData) {\n                        break;\n                    }\n                    if (orderBy.length !== 0) {\n                        orderBy.push(\",\");\n                    }\n                    orderBy.push(columnData.config.field);\n                    if (!columnData.ascending) {\n                        orderBy.push(\" desc\");\n                    }\n                }\n            }\n            if (orderBy.length === 0) {\n                this.searchService.query.orderBy = this.orderBy = undefined;\n            }\n            else {\n                this.searchService.query.orderBy = this.orderBy = orderBy.join(\"\");\n            }\n            this.searchService.search();\n        }\n    }\n\n}","<table class=\"sq-results-grid-view\">\n    <thead>\n        <tr>\n            <th class=\"sq-grid-view-checkbox\">\n                <div class=\"form-check\" title=\"{{(haveSelectedRecords ? 'msg#results.resultsGridView.unselectDocuments' : 'msg#results.resultsGridView.selectDocuments') | sqMessage}}\">\n                    <input class=\"form-check-input\" type=\"checkbox\" id=\"selected_document\" [checked]=\"haveSelectedRecords\" (change)=\"toggleSelectedRecords()\">\n                    <label role=\"button\" for=\"selected_documents\" class=\"form-check-label\">&#8203;</label>\n                </div>            \n            </th>\n            <th *ngFor=\"let columnData of columnsData\" scope=\"col\" [ngClass]=\"{'sq-clickable': isSortable(columnData)}\" (click)=\"setSort(columnData)\">{{columnData.config.title | sqMessage}}{{columnData.sortIndicator}}<span *ngIf=\"isSortable(columnData)\" class=\"{{columnData.sortIcon}}\"></span></th>\n        </tr>\n    </thead>\n    <tbody>\n        <tr *ngFor=\"let record of results.records\">\n            <td class=\"sq-grid-view-checkbox\">\n                <sq-result-selector [record]=\"record\"></sq-result-selector>\n            </td>\n            <ng-container *ngFor=\"let columnData of columnsData; let $index = index\">\n                <td *ngIf=\"columnData.config.renderAsHtml\" [attr.scope]=\"$index === 0 ? 'row' : null\" [innerHTML]=\"record[columnData.config.field] | sqValue:columnData.column\"></td>\n                <td *ngIf=\"!columnData.config.renderAsHtml\" [attr.scope]=\"$index === 0 ? 'row' : null\">{{record[columnData.config.field] | sqValue:columnData.column}}</td>\n            </ng-container>\n        </tr>\n    </tbody>\n</table>","import {Component, Input, OnChanges, SimpleChanges, OnDestroy} from \"@angular/core\";\nimport {Utils} from \"@sinequa/core/base\";\nimport {Query} from \"@sinequa/core/app-utils\";\nimport {Results} from \"@sinequa/core/web-services\";\nimport {ResultsViewService, ResultsView} from \"../../results-view.service\";\nimport {Action} from \"@sinequa/components/action\";\nimport {Subscription} from 'rxjs';\n\n\n@Component({\n    selector: \"sq-results-view-selector\",\n    templateUrl: \"./results-view-selector.html\",\n    standalone: false\n})\nexport class BsResultsViewSelector implements OnChanges, OnDestroy {\n    @Input() query: Query;  // Needed to get tab, and possibly include/exclude results views\n    @Input() results: Results;  // Needed to detect Changes\n    // UI inputs\n    @Input() rightAligned: boolean;\n    @Input() useDropdownMenu: boolean = true;\n    @Input() size: string;\n\n    private viewAction: Action | Action[] | undefined;\n    items: Action[];\n\n    constructor(\n        public resultsViewService : ResultsViewService\n    ) {\n        this._subscription = this.resultsViewService.resultsViewSelected.subscribe(\n            (view : ResultsView) => {\n                this.setCurrentViewAction();\n        });\n    }\n\n    private _subscription: Subscription;\n    ngOnDestroy(){\n        if(this._subscription){\n            this._subscription.unsubscribe();\n        }\n    }\n\n    private setCurrentViewAction() {\n        if (!!this.viewAction && !!this.resultsViewService.resultsView) {\n            if (!Array.isArray(this.viewAction)) {\n                const view = this.resultsViewService.views.find(view => Utils.eqNC(this.resultsViewService.resultsView.name, view.name));\n                if (view) {\n                    this.viewAction.text = view.display || view.name;\n                    this.viewAction.icon = view.icon || 'fas fa-list';\n                }\n                else {\n                    this.viewAction.text = \"msg#results.unselectableViewDisplay\";\n                    this.viewAction.icon = \"far fa-square fa-fw\";\n                }\n                this.viewAction.messageParams = {values: {text: this.viewAction.text}}; // for title\n            }\n            else {\n                this.viewAction.forEach(action => {\n                    action.selected = Utils.eqNC(action.data.name, this.resultsViewService.resultsView.name);\n                });\n            }\n        }\n    }\n\n    private buildViewAction() {\n        if (this.resultsViewService.views.length <= 1) {\n            this.viewAction = undefined;\n            this.items = [];\n            return;\n        }\n        const includedViews = this.resultsViewService.getIncludedViews(this.query.tab);\n        if (includedViews.length <= 1) {\n            this.viewAction = undefined;\n            this.items = [];\n            return;\n        }\n        if (this.useDropdownMenu) {\n            this.viewAction = new Action({\n                title: \"msg#results.viewTitle\",\n                children: includedViews.map(view => new Action({\n                    text: view.display,\n                    icon: view.icon,\n                    data: view,\n                    action: (item: Action, event: Event) => {\n                        this.selectView(item.data);\n                    }\n                }))\n            });\n            this.items = [this.viewAction];\n        }\n        else {\n            this.viewAction = [];\n            for (const view of includedViews) {\n                this.viewAction.push(new Action({\n                    icon: view.icon,\n                    title: view.display,\n                    data: view,\n                    action: (item: Action, event: Event) => {\n                        this.selectView(item.data);\n                    }\n                }));\n            }\n            this.items = this.viewAction;\n        }\n        this.setCurrentViewAction();\n    }\n\n    ngOnChanges(changes: SimpleChanges) {\n        this.buildViewAction();\n    }\n\n    selectView(view: ResultsView) {\n        this.resultsViewService.selectResultsView(view);\n    }\n}\n","<div [sq-action-buttons]=\"{items: items, autoAdjust: true, rightAligned: rightAligned, size: size}\"></div>","import {NgModule, ModuleWithProviders} from \"@angular/core\";\nimport {CommonModule} from \"@angular/common\";\n\nimport {IntlModule} from \"@sinequa/core/intl\";\nimport {LoadComponentModule} from \"@sinequa/core/load-component\";\nimport {ValidationModule} from \"@sinequa/core/validation\";\n\nimport {UtilsModule} from \"@sinequa/components/utils\";\nimport {BsActionModule} from \"@sinequa/components/action\";\nimport {BsSelectionModule} from \"@sinequa/components/selection\";\n\nimport {RESULTS_VIEWS, DEFAULT_VIEW, ResultsView} from \"../results-view.service\";\n\nimport {BsResultsViewSelector} from \"./results-view-selector/results-view-selector\";\nimport {BsResultsGridView} from \"./results-grid-view/results-grid-view\";\n\n@NgModule({\n    imports: [\n        CommonModule,\n\n        LoadComponentModule,\n        IntlModule,\n        ValidationModule,\n\n        UtilsModule,\n        BsActionModule,\n        BsSelectionModule\n    ],\n    declarations: [\n        BsResultsViewSelector,\n        BsResultsGridView,\n    ],\n    exports: [\n        BsResultsViewSelector,\n        BsResultsGridView,\n    ],\n})\nexport class BsResultsViewModule {\n    public static forRoot(resultsViews: ResultsView[], defaultView: ResultsView): ModuleWithProviders<BsResultsViewModule> {\n        return {\n            ngModule: BsResultsViewModule,\n            providers: [\n                {\n                    provide: RESULTS_VIEWS,\n                    useValue: resultsViews\n                },\n                {\n                    provide: DEFAULT_VIEW,\n                    useValue: defaultView\n                }\n            ]\n        };\n    }\n}\n","export default {\n    \"results\": {\n        \"viewTitle\": \"View: {text}\",\n        \"unselectableViewDisplay\": \"<Other>\",\n        \"resultsListView\": {\n            \"display\": \"List\",\n            \"selectDocument\": \"Select document\",\n            \"unselectDocument\": \"Unselect document\",\n            \"previewPopup\": \"Document Navigator\",\n            \"previewInCurrentPage\": \"Document Navigator (in current page)\",\n            \"previewInNewTab\": \"Document Navigator (in new tab)\",\n            \"showMetadata\": \"Details\",\n            \"showLabels\": \"Labels\"\n        },\n        \"resultsGridView\": {\n            \"display\": \"Grid\",\n            \"selectDocument\": \"Select document\",\n            \"unselectDocument\": \"Unselect document\",\n            \"selectDocuments\": \"Select documents\",\n            \"unselectDocuments\": \"Unselect documents\"\n        },\n        \"viewPageSize\": \"Number of results per page\",\n        \"viewUpdateApply\": \"Apply\",\n        \"warningNoViewForTab\": \"The '{tab}' tab has no associated result views.\",\n        \"warningCannotDisplayTabOnView\": \"The '{tab}' tab cannot be displayed using '{view}' view because it is not included in the view configuration.\",\n\n        \"resultsAllTab\": \"All\",\n        \"resultsTextTab\": \"Text\",\n        \"results_all_tab\": \"All\",\n        \"results_text_tab\": \"Text\",\n    }\n};\n","export default {\n    \"results\": {\n        \"viewTitle\": \"Vue : {text}\",\n        \"unselectableViewDisplay\": \"<Autre>\",\n        \"resultsListView\": {\n            \"display\": \"Liste\",\n            \"selectDocument\": \"Sélectionner le document\",\n            \"unselectDocument\": \"Désélectionner le document\",\n            \"previewPopup\": \"Document Navigator\",\n            \"previewInCurrentPage\": \"Document Navigator (dans la page courante)\",\n            \"previewInNewTab\": \"Document Navigator (dans un nouvel onglet)\",\n            \"showMetadata\": \"Détails\",\n            \"showLabels\": \"Libellés\"\n        },\n        \"resultsGridView\": {\n            \"display\": \"Grille\",\n            \"selectDocument\": \"Sélectionner le document\",\n            \"unselectDocument\": \"Désélectionner le document\",\n            \"selectDocuments\": \"Sélectionner les documents\",\n            \"unselectDocuments\": \"Désélectionner les documents \"\n        },\n        \"viewPageSize\": \"Nombre de résultats par page\",\n        \"viewUpdateApply\": \"Appliquer\",\n        \"warningNoViewForTab\": \"L'onglet '{tab}' n'est associé à aucune vue.\",\n        \"warningCannotDisplayTabOnView\": \"L'onglet '{tab}' ne peut pas être affiché dans la vue '{view}' car il n'est pas inclus dans la configuration de la vue.\",\n\n        \"resultsAllTab\": \"Tous\",\n        \"resultsTextTab\": \"Texte\",\n        \"results_all_tab\": \"Tous\",\n        \"results_text_tab\": \"Texte\",\n    }\n};\n","export default {\n    \"results\": {\n        \"viewTitle\": \"Anzeige: {text}\",\n        \"unselectableViewDisplay\": \"<Andere>\",\n        \"resultsListView\": {\n            \"display\": \"Liste\",\n            \"selectDocument\": \"Dokument auswählen\",\n            \"unselectDocument\": \"Dokumentauswahl aufheben\",\n            \"previewPopup\": \"[Dokument-Navigator]\",\n            \"previewInCurrentPage\": \"[Dokument-Navigator (auf der aktuellen Seite)]\",\n            \"previewInNewTab\": \"[Dokument-Navigator (in einem neuen Reiter)]\",\n            \"showMetadata\": \"[Metadaten]\",\n            \"showLabels\": \"[Etiketten]\"\n        },\n        \"resultsGridView\": {\n            \"display\": \"Tabelle\",\n            \"selectDocument\": \"Dokument auswählen\",\n            \"unselectDocument\": \"Dokumentauswahl aufheben\",\n            \"selectDocuments\": \"Dokumente auswählen\",\n            \"unselectDocuments\": \"Dokumentauswahl aufheben\"\n        },\n        \"viewPageSize\": \"Anzahl der Ergebnisse pro Seite\",\n        \"viewUpdateApply\": \"Anwenden\",\n        \"warningNoViewForTab\": \"Der Reiter '{tab}' hat keine zugewiesenen Ergebnisansichten.\",\n        \"warningCannotDisplayTabOnView\": \"Der Reiter '{tab}' kann nicht mit der Ansicht '{view}' angezeigt werden, da diese nicht in der Ansichtskonfiguration enthalten ist.\",\n\n        \"resultsAllTab\": \"Alle\",\n        \"resultsTextTab\": \"Text\",\n        \"results_all_tab\": \"Alle\",\n        \"results_text_tab\": \"Text\",\n    }\n};\n","import {Utils} from \"@sinequa/core/base\";\nimport {enSearch, frSearch, deSearch} from \"@sinequa/components/search\";\nimport {enSelection, frSelection, deSelection} from \"@sinequa/components/selection\";\n\nimport _enResultsView from \"./en\";\nimport _frResultsView from \"./fr\";\nimport _deResultsView from \"./de\";\n\nconst enResultsView = Utils.merge({}, _enResultsView, enSearch, enSelection);\nconst frResultsView = Utils.merge({}, _frResultsView, frSearch, frSelection);\nconst deResultsView = Utils.merge({}, _deResultsView, deSearch, deSelection);\n\nexport { enResultsView, frResultsView, deResultsView };\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i1.ResultsViewService","i2"],"mappings":"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"}