{"version":3,"file":"sinequa-components-slide-builder.mjs","sources":["../../../projects/components/slide-builder/slide-builder.component.ts","../../../projects/components/slide-builder/slide-builder.component.html","../../../projects/components/slide-builder/slide-tile.component.ts","../../../projects/components/slide-builder/slide-tile.component.html","../../../projects/components/slide-builder/slide-list.component.ts","../../../projects/components/slide-builder/slide-list.component.html","../../../projects/components/slide-builder/slide-builder.module.ts","../../../projects/components/slide-builder/messages/en.ts","../../../projects/components/slide-builder/messages/fr.ts","../../../projects/components/slide-builder/messages/de.ts","../../../projects/components/slide-builder/messages/index.ts","../../../projects/components/slide-builder/sinequa-components-slide-builder.ts"],"sourcesContent":["import { Component, ContentChild, Inject, Input, OnDestroy, OnInit, TemplateRef } from \"@angular/core\";\nimport { Action } from \"@sinequa/components/action\";\nimport { BasketsService } from \"@sinequa/components/baskets\";\nimport { AbstractFacet } from \"@sinequa/components/facet\";\nimport { SelectionService } from \"@sinequa/components/selection\";\nimport { UIService } from \"@sinequa/components/utils\";\nimport { NotificationsService } from \"@sinequa/core/notification\";\nimport { DownloadWebService, DocBuilderWebService, StartConfig, START_CONFIG } from \"@sinequa/core/web-services\";\n\n@Component({\n    selector: 'sq-slide-builder',\n    templateUrl: './slide-builder.component.html',\n    styleUrls: ['./slide-builder.component.scss'],\n    standalone: false\n})\nexport class SlideBuilderComponent extends AbstractFacet implements OnInit, OnDestroy {\n    @ContentChild(TemplateRef, {static: false}) recordTpl: TemplateRef<any>;\n    @Input() enableSaveAsBasket = true;\n    \n    public exportInProgress = false;\n    \n    public clearSlidesAction: Action;\n    public exportSlidesAction: Action;\n    public saveAsBasketAction: Action;\n\n    constructor(\n        @Inject(START_CONFIG) public startConfig: StartConfig,\n        public selectionService: SelectionService,\n        public notificationsService: NotificationsService,\n        public downloadWebService: DownloadWebService,\n        public docBuilderWebService: DocBuilderWebService,\n        public basketService: BasketsService,\n        public ui: UIService\n    ){\n        super();\n    }\n\n    ngOnInit() {\n        // Clear selection to avoid non-slide selected documents\n        this.selectionService.clearSelectedRecords(\"presentation-builder\");\n\n        this.clearSlidesAction = new Action({\n            icon: \"fas fa-times\",\n            title: \"msg#slideCollection.clear\",\n            action: () => this.selectionService.clearSelectedRecords(\"presentation-builder\")\n        });\n      \n        this.exportSlidesAction = new Action({\n            icon: \"fas fa-file-download\",\n            title: \"msg#slideCollection.exportSlides\",\n            action: () => this.exportSlideCollection()\n        });\n\n        this.saveAsBasketAction = new Action({\n            icon: \"fas fa-inbox\",\n            title: \"msg#slideCollection.collection\",\n            action: () => this.basketService.addToBasketModal(\n                this.selectionService.getSelectedIds()\n            )\n        });\n    }\n\n    ngOnDestroy() {\n        this.selectionService.clearSelectedRecords();\n    }\n\n    public override get actions(): Action[] {\n        const actions: Action[] = [];\n        if(this.selectionService.haveSelectedRecords) {\n            actions.push(this.exportSlidesAction);\n            if(this.enableSaveAsBasket){\n                actions.push(this.saveAsBasketAction);\n            }\n            actions.push(this.clearSlidesAction);\n        }\n        return actions;\n    }\n\n    // Export slide deck to Powerpoint\n    exportSlideCollection() {\n        \n        let ids = this.selectionService.getSelectedIds();\n        \n        this.exportInProgress = true;\n        \n        const auditEvent = {\n            type: \"SlideCollectionExport\",\n            detail: {\n                detail: ids.join(';')\n            }\n        }\n\n        this.docBuilderWebService.downloadSlides(ids, auditEvent).subscribe(() => {\n            this.notificationsService.info(\"msg#slideCollection.exportSucceeded\");\n            this.selectionService.clearSelectedRecords(\"presentation-builder\");\n            this.exportInProgress = false;\n        });\n    }\n}","<sq-loading-bar [active]=\"exportInProgress\"></sq-loading-bar>\n<sq-selection-arranger>\n    <ng-template let-record>\n        <!-- Use a template passed by transclusion -->\n        <ng-container *ngTemplateOutlet=\"recordTpl; context: {$implicit: record}\">\n        </ng-container>\n\n        <!-- Or use the default template below -->\n        <div class=\"slide-builder d-flex justify-content-around my-3 pe-3\" *ngIf=\"!recordTpl\">\n            <div class=\"col-6 slide-thumbnail text-center\">\n                <img *ngIf=\"!record['thumbnailImgError']\"\n                    class=\"rounded shadow bg-white\"\n                    src=\"{{startConfig.url}}{{record.thumbnailUrl}}\"\n                    (error)=\"record['thumbnailImgError'] = true\"/>\n                <span *ngIf=\"record['thumbnailImgError']\"\n                    class=\"fas fa-file fa-2x\"\n                    title=\"{{record.title}}\">\n                </span>\n            </div>\n\n            <div class=\"col-6 slide-metadata\">\n                <div class=\"slide-date\">{{record.modified|date}}</div>\n                <div class=\"slide-title d-flex flex-nowrap align-items-center mt-2\">\n                    <sq-result-title class=\"slide-title me-auto\" [record]=\"record\"></sq-result-title>\n                    <span class=\"badge bg-secondary ms-1\" title=\"Slide Number\">{{record.id.split('#')[1]}}</span>\n                </div>\n                <div *ngIf=\"ui.screenSizeIsGreater('md')\" class=\"slide-treepath mt-2\">{{record.treepath}}</div>\n            </div>\n        </div>\n    </ng-template>\n</sq-selection-arranger>\n","import { Component, Input } from \"@angular/core\";\nimport { SearchService } from \"@sinequa/components/search\";\nimport { Record } from \"@sinequa/core/web-services\";\n\n@Component({\n    selector: 'sq-slide-tile',\n    templateUrl: './slide-tile.component.html',\n    styleUrls: ['./slide-tile.component.scss'],\n    standalone: false\n})\nexport class SlideTileComponent {\n    @Input() record: Record;\n    @Input() dateFormat: Intl.DateTimeFormatOptions = {year: 'numeric', month: 'short', day: 'numeric'};\n\n    constructor(\n        public searchService: SearchService\n    ) {}\n\n    onSlideFilterClick(record:Record, event: Event) {\n        event.stopPropagation(); // stop progation to avoid adding this slide to the slide deck\n        const tab = this.searchService.query.tab;\n        this.searchService.query.clear();\n        this.searchService.query.tab = tab; // Stay on same tab\n        this.searchService.query.addFilter({\n          field: 'title',\n          value: record.title,\n          display: record.filename || record.title\n        });\n        this.searchService.query.sort = \"id\";\n        this.searchService.search();\n    }\n\n}\n","<div class=\"mt-2 text-center\">\n    <sq-result-thumbnail\n        class=\"result-slide-thumbnail\"\n        [ngClass]=\"{'selected': record.$selected}\"\n        [record]=\"record\"\n        [linkBehavior]=\"false\"\n        title=\"{{record?.treepath[0]}}\"\n    >\n    </sq-result-thumbnail>\n</div>\n\n<div class=\"mt-2\">\n    <span>{{record.modified | sqDate:dateFormat}}</span>\n</div>\n\n<div class=\"d-flex mt-1 align-items-center\">\n    <sq-result-title class=\"slide-title me-auto\" [record]=\"record\"></sq-result-title>\n    <span class=\"badge bg-light me-2 ms-1\" [title]=\"'msg#slideCollection.slideNumber' | sqMessage\">{{record.id.split('#')[1]}}</span>\n    <i class=\"fas fa-filter ms-2\" [title]=\"'msg#slideCollection.filterSlideDeck' | sqMessage\" (click)=\"onSlideFilterClick(record,$event)\"></i>\n</div>\n","import { Component, Input, EventEmitter, Output } from '@angular/core';\nimport { Results, Record } from '@sinequa/core/web-services';\nimport { SelectionService } from '@sinequa/components/selection';\n\n@Component({\n    selector: 'sq-slide-list',\n    templateUrl: './slide-list.component.html',\n    styleUrls: ['./slide-list.component.scss'],\n    standalone: false\n})\nexport class SlideListComponent {\n    @Input() results: Results;\n    @Input() selectedRecord: Record;\n    @Input() colClass = \"col-6\";\n\n    /** Event emitters for keyboard navigation in the results list */\n    @Output() recordSelect = new EventEmitter<{index: number}>();\n    @Output() recordKeydown = new EventEmitter<{record: Record, event: KeyboardEvent}>();\n    \n    constructor(\n        public selectionService: SelectionService\n    ) {}\n\n    get selectedIndex() {\n        return this.selectedRecord ? this.results.records.indexOf(this.selectedRecord) : -1;\n    }\n\n    onRecordSelect(index: number) {\n        this.recordSelect.next({index});\n    }\n\n    onRecordKeydown(record: Record, event: KeyboardEvent) {\n        this.recordKeydown.next({record, event});\n    }\n\n    onSlideClick(record: Record) {\n        this.selectionService.toggleSelectedRecords(record);\n    }\n\n}","\n<div class=\"sq-slide-list row justify-content-around\"\n    sqFocusKeyList\n    [activeItem]=\"selectedIndex\"\n    (itemSelect)=\"onRecordSelect($event)\">\n    <sq-slide-tile *ngFor=\"let record of results.records\"\n        class=\"record py-2 {{colClass}}\"\n        sqFocusKeyListItem\n        [ngClass]=\"{'selected': record.$selected || record === selectedRecord}\"\n        [record]=\"record\"\n        (click)=\"onSlideClick(record)\"\n        (keydown)=\"onRecordKeydown(record, $event)\">\n    </sq-slide-tile>\n</div>","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { ResultModule } from \"@sinequa/components/result\";\nimport { BsSearchModule } from \"@sinequa/components/search\";\nimport { BsSelectionModule } from \"@sinequa/components/selection\";\nimport { UtilsModule } from \"@sinequa/components/utils\";\nimport { IntlModule } from \"@sinequa/core/intl\";\nimport { SlideBuilderComponent } from \"./slide-builder.component\";\nimport { SlideListComponent } from \"./slide-list.component\";\nimport { SlideTileComponent } from \"./slide-tile.component\";\n\n@NgModule({\n    imports: [\n        CommonModule,\n\n        IntlModule,\n\n        ResultModule,\n        BsSearchModule,\n        BsSelectionModule,\n        UtilsModule,\n    ],\n    declarations:[\n        SlideBuilderComponent,\n        SlideTileComponent,\n        SlideListComponent\n    ],\n    exports: [\n        SlideBuilderComponent,\n        SlideListComponent\n    ]\n})\nexport class SlideBuilderModule {}","export default {\n    \"slideCollection\": {\n        \"exportSlides\": \"Export this presentation to Powerpoint\",\n        \"exportSucceeded\": \"Presentation successfully exported.\",\n        \"clear\": \"Clear presentation\",\n        \"collection\": \"Save the presentation as a collection\",\n        \"slideNumber\": \"Slide Number\",\n        \"filterSlideDeck\": \"Select all slides from this presentation\"\n\t}\n};\n","export default {\n    \"slideCollection\": {\n        \"exportSlides\": \"Exporter les slides dans un Powerpoint\",\n        \"exportSucceeded\": \"Présentation exportée avec succès\",\n        \"clear\": \"Effacer la sélection\",\n        \"collection\": \"Sauvegarder la présentation dans une collection\",\n        \"slideNumber\": \"Numéro de slide\",\n        \"filterSlideDeck\": \"Voir toutes les slides de cette présentation\"\n\t}\n};\n","export default {\n    \"slideCollection\": {\n        \"exportSlides\": \"Diese Präsentation nach Powerpoint exportieren\",\n        \"exportSucceeded\": \"Präsentation erfolgreich exportiert\",\n        \"clear\": \"Clear Präsentation\",\n        \"collection\": \"Zum Ablagekorb hinzufügen\",\n        \"slideNumber\": \"Foliennummer\",\n        \"filterSlideDeck\": \"Alle Folien dieser Präsentation auswählen\"\n    }\n};\n","import {Utils} from \"@sinequa/core/base\";\n\nimport _enSlideBuilder from \"./en\";\nimport _frSlideBuilder from \"./fr\";\nimport _deSlideBuilder from \"./de\";\n\nconst enSlideBuilder = Utils.merge({}, _enSlideBuilder);\nconst frSlideBuilder = Utils.merge({}, _frSlideBuilder);\nconst deSlideBuilder = Utils.merge({}, _deSlideBuilder);\n\nexport { enSlideBuilder, frSlideBuilder, deSlideBuilder };\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i7","i8","i1","i2","i3","i4","i4.SlideTileComponent"],"mappings":"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"}