@arsedizioni/ars-utils 18.2.71 → 18.2.72

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -229,18 +229,18 @@ class HelpViewerComponent {
229
229
  * Resize
230
230
  */
231
231
  resize() {
232
- let elem = document.getElementById('helpviewer-scrollable');
233
- if (elem) {
234
- const height = this.dialogService.getCurrentDialogScrollableHeight(['helpviewer-fixed'], window.innerHeight);
235
- if (height != elem.clientHeight) {
236
- elem.setAttribute('style', 'padding:0 0 0 10px;height:' + height + 'px !important;max-height:' + height + 'px !important');
232
+ setTimeout(() => {
233
+ let elem = document.getElementById('helpviewer-scrollable');
234
+ if (elem) {
235
+ const height = this.dialogService.getCurrentDialogScrollableHeight(['helpviewer-fixed'], window.innerHeight);
236
+ if (height != elem.clientHeight) {
237
+ elem.setAttribute('style', 'padding:0 0 0 10px;height:' + height + 'px !important;max-height:' + height + 'px !important');
238
+ }
237
239
  }
238
- }
239
- else {
240
- setTimeout(() => {
240
+ else {
241
241
  this.resize();
242
- }, 100);
243
- }
242
+ }
243
+ }, 0);
244
244
  }
245
245
  /**
246
246
  * Handle filter pane visibility
@@ -1 +1 @@
1
- {"version":3,"file":"arsedizioni-ars-utils-help.mjs","sources":["../../../projects/ars-utils/help/components/help-viewer/help-viewer.component.ts","../../../projects/ars-utils/help/components/help-viewer/help-viewer.component.html","../../../projects/ars-utils/help/services/help.service.ts","../../../projects/ars-utils/help/help.module.ts","../../../projects/ars-utils/help/public_api.ts","../../../projects/ars-utils/help/arsedizioni-ars-utils-help.ts"],"sourcesContent":["import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\r\nimport { FlatTreeControl } from '@angular/cdk/tree';\r\nimport { NgClass, NgStyle } from '@angular/common';\r\nimport { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, Injectable, OnDestroy, OnInit, Signal, ViewChild, ViewEncapsulation, computed, inject, signal } from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MAT_DIALOG_DATA, MatDialogContent, MatDialogRef, MatDialogTitle } from '@angular/material/dialog';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\r\nimport { MatSidenav, MatSidenavModule } from '@angular/material/sidenav';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatTreeFlatDataSource, MatTreeFlattener, MatTreeModule } from '@angular/material/tree';\r\nimport { SafeHtmlPipe, SystemUtils } from '@arsedizioni/ars-utils/core';\r\nimport { DialogService } from '@arsedizioni/ars-utils/ui';\r\nimport { ExtendedModule } from '@ngbracket/ngx-layout/extended';\r\nimport { FlexModule } from '@ngbracket/ngx-layout/flex';\r\nimport { BehaviorSubject, Observable, Subject, fromEvent, of as observableOf } from 'rxjs';\r\nimport { debounceTime, takeUntil } from 'rxjs/operators';\r\nimport { HelpService } from '../../services/help.service';\r\n\r\nexport interface HelpViewerDialogData {\r\n id?: string | null;\r\n}\r\n\r\nexport class IndexInfo {\r\n id: string;\r\n parent?: IndexInfo | null;\r\n name: string;\r\n itemsCount?: number | null;\r\n subFolders?: IndexInfo[] | null;\r\n}\r\n\r\nexport class IndexNode extends IndexInfo {\r\n expandable: boolean;\r\n level: number;\r\n\r\n constructor(item: IndexInfo, level: number) {\r\n super();\r\n\r\n // Flattened implementation\r\n this.expandable = item.subFolders && item.subFolders.length > 0;\r\n this.level = level;\r\n\r\n // Data\r\n this.id = item.id;\r\n this.name = item.name;\r\n this.itemsCount = item.itemsCount;\r\n this.parent = item.parent;\r\n }\r\n}\r\n\r\n@Injectable()\r\nexport class IndexTreeDataSource implements OnDestroy {\r\n dataChange = new BehaviorSubject<IndexInfo[]>([]);\r\n\r\n get data(): IndexInfo[] {\r\n return this.dataChange.value;\r\n }\r\n\r\n ngOnDestroy() {\r\n this.dataChange.unsubscribe();\r\n }\r\n\r\n /**\r\n * Initialzie the data source\r\n * @param data : data\r\n */\r\n initialize(data: IndexInfo[]) {\r\n this.dataChange.next(data);\r\n }\r\n\r\n /**\r\n * Find a node by id recursively\r\n * @param node: the source node\r\n * @param id : the id to search for\r\n */\r\n findNode(node: IndexInfo, id: string): IndexInfo {\r\n let children;\r\n if (node && node.id === id) return node;\r\n if (node) children = node.subFolders;\r\n else children = this.data;\r\n if (children) {\r\n let _n = null;\r\n children.some(n => {\r\n n.parent = node;\r\n _n = this.findNode(n, id);\r\n if (_n) return true;\r\n return false;\r\n });\r\n return _n;\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Remove a node\r\n * @param id : the node id to remove\r\n */\r\n removeNode(id: string) {\r\n let n = this.findNode(null, id);\r\n if (!n) return;\r\n if (n.parent) {\r\n let i = SystemUtils.arrayFindIndexByKey(n.parent.subFolders, 'id', id);\r\n if (i !== -1) {\r\n n.parent.subFolders.splice(i, 1);\r\n n.parent.itemsCount--;\r\n }\r\n } else {\r\n let i = SystemUtils.arrayFindIndexByKey(this.data, 'id', id);\r\n if (i !== -1) {\r\n this.data.splice(i, 1);\r\n }\r\n }\r\n\r\n this.dataChange.next(this.data);\r\n }\r\n\r\n /**\r\n * Insert a new node\r\n * @param node : the new node\r\n */\r\n insertNode(node: IndexInfo) {\r\n if (node.parent) {\r\n node.parent.subFolders.unshift(node);\r\n node.parent.itemsCount++;\r\n } else this.data.unshift(node);\r\n\r\n this.dataChange.next(this.data);\r\n }\r\n\r\n /**\r\n * Rename a node\r\n * @param id : the node id\r\n * @param name : the new node name\r\n */\r\n renameNode(id: string, name: string) {\r\n let n = this.findNode(null, id);\r\n if (n) {\r\n n.name = name;\r\n this.dataChange.next(this.data);\r\n }\r\n }\r\n\r\n /**\r\n * Update data\r\n */\r\n update() {\r\n this.dataChange.next(this.data);\r\n }\r\n}\r\n\r\n@Component({\r\n host: { 'Bind': SystemUtils.generateUUID() },\r\n templateUrl: './help-viewer.component.html',\r\n styleUrls: ['./help-viewer.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [IndexTreeDataSource],\r\n standalone: true,\r\n imports: [FlexModule, MatButtonModule, MatTooltipModule, MatIconModule, MatProgressBarModule, MatDialogTitle, MatDialogContent,\r\n NgStyle, ExtendedModule, MatSidenavModule, MatTreeModule, NgClass, SafeHtmlPipe]\r\n})\r\nexport class HelpViewerComponent implements OnInit, OnDestroy, AfterViewInit {\r\n @ViewChild('indexPane') indexPane!: MatSidenav;\r\n\r\n private unsubscribe: Subject<void> = new Subject<void>();\r\n protected changeDetector = inject(ChangeDetectorRef);\r\n private dialogRef = inject(MatDialogRef<HelpViewerComponent>);\r\n protected dialogData: HelpViewerDialogData = inject(MAT_DIALOG_DATA) ?? { id: \"1\" };\r\n private dialogService = inject(DialogService);\r\n private helpService = inject(HelpService);\r\n protected breakpointObserver = inject(BreakpointObserver);\r\n protected busy = signal<boolean>(false);\r\n protected page = signal<string>(null);\r\n private indexId: string = null;\r\n private indexPaneClosed: boolean = false;\r\n protected indexNode: IndexInfo = null;\r\n private history = signal([]);\r\n protected canGoBack: Signal<boolean> = computed(() => {\r\n return this.history()?.length > 1;\r\n })\r\n\r\n /**\r\n * Manage flat tree view\r\n */\r\n private tree = inject(IndexTreeDataSource);\r\n private treeFlattener: MatTreeFlattener<IndexInfo, IndexNode>;\r\n protected treeControl: FlatTreeControl<IndexNode>;\r\n protected treeData: MatTreeFlatDataSource<IndexInfo, IndexNode>;\r\n private folders: any = null;\r\n private getChildren = (node: IndexInfo): Observable<IndexInfo[]> =>\r\n observableOf(node.subFolders);\r\n private getLevel = (node: IndexNode) => node.level;\r\n private isExpandable = (node: IndexNode) => node.expandable;\r\n protected hasChild = (_: number, _node: IndexNode) => _node.expandable;\r\n protected transformer = (item: IndexInfo, level: number) => {\r\n return new IndexNode(item, level);\r\n };\r\n\r\n ngOnInit(): void {\r\n\r\n // Setup tree structure\r\n this.treeFlattener = new MatTreeFlattener(\r\n this.transformer,\r\n this.getLevel,\r\n this.isExpandable,\r\n this.getChildren\r\n );\r\n this.treeControl = new FlatTreeControl<IndexNode>(\r\n this.getLevel,\r\n this.isExpandable\r\n );\r\n this.treeData = new MatTreeFlatDataSource(\r\n this.treeControl,\r\n this.treeFlattener\r\n );\r\n\r\n // Subscribe data change\r\n this.tree.dataChange\r\n .pipe(takeUntil(this.unsubscribe))\r\n .subscribe(data => (this.treeData.data = data));\r\n\r\n // Observe layout changes\r\n this.breakpointObserver\r\n .observe([\r\n Breakpoints.XSmall,\r\n Breakpoints.Small,\r\n Breakpoints.Medium,\r\n Breakpoints.Large,\r\n Breakpoints.XLarge,\r\n ])\r\n .pipe(takeUntil(this.unsubscribe))\r\n .subscribe((result: any) => {\r\n for (const query of Object.keys(result.breakpoints)) {\r\n if (result.breakpoints[query]) {\r\n this.handleFilterPaneVisibility();\r\n }\r\n }\r\n });\r\n\r\n\r\n // React to window size change\r\n fromEvent(window, 'resize')\r\n .pipe(takeUntil(this.unsubscribe), debounceTime(250))\r\n .subscribe(() => {\r\n this.resize();\r\n });\r\n\r\n this.getToc();\r\n\r\n this.indexId = this.dialogData.id;\r\n if (this.indexId) {\r\n this.getChapter(this.indexId);\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.unsubscribe.next();\r\n this.unsubscribe.complete();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n setTimeout(() => {\r\n this.handleFilterPaneVisibility();\r\n this.indexPaneClosed = !this.indexPane.opened;\r\n }, 0);\r\n this.resize();\r\n this.changeDetector.detectChanges();\r\n }\r\n\r\n /**\r\n * Resize \r\n */\r\n private resize() {\r\n let elem = document.getElementById('helpviewer-scrollable');\r\n if (elem) {\r\n const height = this.dialogService.getCurrentDialogScrollableHeight(\r\n ['helpviewer-fixed'],\r\n window.innerHeight\r\n );\r\n if (height != elem.clientHeight) {\r\n elem.setAttribute('style', 'padding:0 0 0 10px;height:' + height + 'px !important;max-height:' + height + 'px !important');\r\n }\r\n } else {\r\n setTimeout(() => {\r\n this.resize();\r\n }, 100)\r\n }\r\n }\r\n\r\n\r\n /**\r\n* Handle filter pane visibility\r\n*/\r\n private handleFilterPaneVisibility() {\r\n if (this.indexPane) {\r\n if (this.breakpointObserver.isMatched(Breakpoints.XSmall) ||\r\n this.breakpointObserver.isMatched(Breakpoints.Small) ||\r\n this.breakpointObserver.isMatched(Breakpoints.Medium)) {\r\n if (this.indexPane.opened) {\r\n this.indexPane.close();\r\n }\r\n } else {\r\n if (!this.indexPane.opened && !this.indexPaneClosed) {\r\n this.indexPane.open();\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Show hide index pane manually\r\n */\r\n protected toggleIndexPane() {\r\n this.indexPaneClosed = !this.indexPaneClosed;\r\n this.indexPane?.toggle();\r\n }\r\n\r\n\r\n /**\r\n * Close dialog\r\n */\r\n protected close(): void {\r\n this.dialogRef.close();\r\n }\r\n\r\n /**\r\n * Get the toc\r\n */\r\n protected getToc(): void {\r\n this.busy.set(true);\r\n this.helpService\r\n .getToc()\r\n .subscribe({\r\n next: (r: any) => {\r\n if (!r.success) {\r\n this.dialogService.error(r.message);\r\n } else {\r\n this.folders = r.value.subFolders;\r\n this.tree.initialize(r.value.subFolders);\r\n }\r\n },\r\n complete: () => {\r\n this.busy.set(false);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * React to click event and find new help target to go to\r\n * @param event : the click event\r\n * @returns : always false, to stop navigation\r\n */\r\n protected gotoChapter(event: any): boolean {\r\n if (event.srcElement.nodeName !== 'A') return false;\r\n let tag = event.srcElement.outerHTML;\r\n let id = '';\r\n let p = tag.indexOf('help-target=\"');\r\n if (p !== -1) {\r\n p += 13;\r\n while (tag[p] !== '\"') {\r\n id += tag[p];\r\n p++;\r\n }\r\n }\r\n if (id) this.getChapter(id);\r\n return false;\r\n }\r\n\r\n /**\r\n * Find a node by id\r\n * @param id : folder id\r\n * @returns: the folder info\r\n */\r\n private findFolder(id: string): IndexInfo {\r\n let node = null;\r\n if (this.folders) {\r\n this.folders.some((n: any) => {\r\n node = this.tree.findNode(n, id);\r\n if (node) return true;\r\n return false;\r\n });\r\n }\r\n return node;\r\n }\r\n\r\n /**\r\n * Expand current fodler node\r\n */\r\n private expandCurrentFolder(): void {\r\n if (this.indexNode) {\r\n this.treeControl.expand(\r\n SystemUtils.arrayFindByKey(\r\n this.treeControl.dataNodes,\r\n 'id',\r\n this.indexNode.id\r\n )\r\n );\r\n if (this.indexNode.parent) {\r\n // Apply previous selection\r\n let n = this.indexNode.parent;\r\n while (n) {\r\n this.treeControl.expand(\r\n SystemUtils.arrayFindByKey(this.treeControl.dataNodes, 'id', n.id)\r\n );\r\n n = n.parent;\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Retrieve a new chapter\r\n * @param id the chapter id#anchor\r\n * @param position : the position to scroll to\r\n */\r\n protected getChapter(id: string, position: number = 0): void {\r\n // Detect anchor if exists\r\n let anchor: string = null;\r\n let p = id.indexOf('#');\r\n if (p !== -1) {\r\n anchor = id.substring(p + 1);\r\n id = id.substring(0, p);\r\n }\r\n if (id !== '.') {\r\n this.busy.set(true);\r\n this.helpService.getChapter(id)\r\n .subscribe({\r\n next: (r: any) => {\r\n let found = false;\r\n if (!r.success) {\r\n this.dialogService.error(\"Capitolo non trovato.\");\r\n } else {\r\n if (!position)\r\n this.history().push({ id: this.indexId, position: this.getPosition() });\r\n this.indexId = id;\r\n this.page.set(r.value.data);\r\n found = r.value.chapter?.name?.length > 0;\r\n if (found) {\r\n // Update folder\r\n this.indexNode = this.findFolder(id);\r\n this.expandCurrentFolder();\r\n // Handle positioning\r\n this.gotoPosition(anchor, position);\r\n }\r\n }\r\n\r\n if (!found) {\r\n this.getChapter(\"1\");\r\n }\r\n },\r\n complete: () => {\r\n this.busy.set(false);\r\n }\r\n });\r\n } else {\r\n if (!position)\r\n this.history().push({ id: this.indexId, position: this.getPosition() });\r\n // Move on the same chapter\r\n this.gotoPosition(anchor, position);\r\n }\r\n }\r\n\r\n /**\r\n * Goto position\r\n * @param anchor the anchor to go to\r\n * @param position the offset to go to\r\n */\r\n protected gotoPosition(anchor: string, position: number = 0): void {\r\n // Handle positioning\r\n setTimeout(() => {\r\n // Handle anchor first\r\n if (anchor) {\r\n let elms = document.getElementsByName(anchor.toUpperCase());\r\n if (elms) position = elms[0].offsetTop;\r\n }\r\n // Then position\r\n if (position > 0) this.setPosition(position - 1);\r\n else this.setPosition(0);\r\n }, 50);\r\n }\r\n\r\n /**\r\n * Get scroll position\r\n * @returns: the new scroll top\r\n */\r\n protected getPosition(): number {\r\n let elem = document.getElementById('helpviewer-scroller');\r\n if (elem) {\r\n return elem.scrollTop;\r\n }\r\n return 0;\r\n }\r\n\r\n /**\r\n * Set scroll position\r\n * @param position : the position to go to\r\n */\r\n protected setPosition(position: number): void {\r\n let elem = document.getElementById('helpviewer-scroller');\r\n if (elem) {\r\n elem.scrollTo(0, position);\r\n }\r\n }\r\n\r\n /**\r\n * Go back\r\n */\r\n protected back(): void {\r\n if (!this.history || this.history.length === 0) return;\r\n let n = this.history().pop();\r\n this.getChapter(n.id, n.position + 1);\r\n }\r\n\r\n\r\n\r\n\r\n\r\n}\r\n","<div class=\"helpviewer-fixed\">\r\n <div style=\"height:6px\">\r\n @if (busy()) {\r\n <mat-progress-bar z-index=\"11\" mode=\"indeterminate\"></mat-progress-bar>\r\n }\r\n </div>\r\n <div class=\"dialog-header\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"10px\" fxFill>\r\n <div class=\"dialog-menu\">\r\n <button type=\"button\" mat-icon-button matTooltip=\"Mostra menu\" [attr.aria-label]=\"'Mostra indice'\"\r\n (click)=\"toggleIndexPane()\">\r\n <mat-icon>menu</mat-icon>\r\n </button>\r\n </div>\r\n <div fxFlex=\"*\">\r\n <h2 mat-dialog-title>Guida</h2>\r\n </div>\r\n <div fxFlex=\"100px\" fxLayoutAlign=\"end\" class=\"dialog-close\">\r\n @if (canGoBack()) {\r\n <button fxFlexAlign=\"start\" type=\"button\" mat-icon-button matTooltip=\"Indietro\" (click)=\"back()\">\r\n <mat-icon>arrow_back</mat-icon>\r\n </button>\r\n }\r\n <button fxFlexAlign=\"start\" type=\"button\" mat-icon-button matTooltip=\"Chiudi\" (click)=\"close()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n</div>\r\n<div mat-dialog-content id=\"helpviewer-scrollable\">\r\n <mat-drawer-container class=\"fill\">\r\n <mat-drawer #indexPane mode=\"side\" [autoFocus]=\"false\" class=\"drawer-small drawer-transparent\">\r\n <div fxLayout=\"column\" fxFill>\r\n <div fxFlex=\"*\">\r\n <mat-tree [dataSource]=\"treeData\" [treeControl]=\"treeControl\" class=\"tree \" style=\"max-width:310px\">\r\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodeToggle matTreeNodePadding\r\n [matTreeNodePaddingIndent]=\"20\" class=\"tree-node tree-node-simple tree-node-style\"\r\n (click)=\"getChapter(node.id);\" [ngClass]=\"{'tree-node-activated': indexNode && indexNode.id === node.id}\"\r\n [disabled]=\"busy()\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill class=\"small uppercase\">\r\n <button type=\"button\" fxFlexAlign=\"center\" mat-icon-button disabled class=\"small-icon-button\"></button>\r\n <div fxFlex=\"*\" fxFlexAlign=\"center\">{{node.name}}</div>\r\n </div>\r\n </mat-tree-node>\r\n <mat-tree-node *matTreeNodeDef=\"let node;when: hasChild\" matTreeNodePadding [matTreeNodePaddingIndent]=\"20\"\r\n class=\"tree-node tree-node-simple tree-node-style\"\r\n [ngClass]=\"{'tree-node-activated': indexNode && indexNode.id === node.id }\" (click)=\"getChapter(node.id)\"\r\n [disabled]=\"busy()\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill class=\"small uppercase\">\r\n <button type=\"button\" fxFlexAlign=\"center\" mat-icon-button matTreeNodeToggle\r\n [attr.aria-label]=\"'Apri/chiudi ' + node.name\" class=\"small-icon-button\">\r\n <mat-icon class=\"mat-icon-rtl-mirror\">\r\n {{treeControl.isExpanded(node) ? 'expand_more' : 'chevron_right'}}\r\n </mat-icon>\r\n </button>\r\n <div fxFlex=\"*\" fxFlexAlign=\"center\">{{node.name}}</div>\r\n </div>\r\n </mat-tree-node>\r\n </mat-tree>\r\n </div>\r\n </div>\r\n </mat-drawer>\r\n <div style=\"padding: 0 24px;\">\r\n <div fxLayout=\"column\" fxFill>\r\n <div class=\"fill\" id=\"helpviewer-scroller\" (click)=\"gotoChapter($event)\"\r\n [innerHtml]=\"(page() ?? '') | safeHtml\"></div>\r\n </div>\r\n </div>\r\n </mat-drawer-container>\r\n</div>","import { Injectable, inject } from '@angular/core';\r\nimport { DialogService } from '@arsedizioni/ars-utils/ui';\r\nimport { ApiResult } from '@arsedizioni/ars-utils/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { HelpViewerComponent } from '../components/help-viewer/help-viewer.component';\r\nimport { Chapter, ChapterBag, ChapterTree } from '../definitions';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class HelpService {\r\n \r\n private httpClient = inject(HttpClient); \r\n private dialogService = inject(DialogService);\r\n private serviceUri: string;\r\n\r\n /**\r\n * Initialize help service\r\n * @param serviceUri : the service uri\r\n */\r\n initialize(serviceUri: string) {\r\n this.serviceUri = serviceUri;\r\n }\r\n\r\n /**\r\n * Retrieve an help chapter\r\n * @param id the chapter id\r\n * @param query the search query\r\n */\r\n getChapter(id: string, query: string = null) {\r\n return this.httpClient.get<ApiResult<ChapterBag>>(\r\n this.serviceUri +\r\n '/help/chapter/' +\r\n id +\r\n '/?query=' +\r\n (query == null ? '' : query)\r\n );\r\n }\r\n\r\n /**\r\n * Retrieve an help chapater info\r\n * @param id the chapter id\r\n */\r\n getChapterInfo(id: string) {\r\n return this.httpClient.get<ApiResult<Chapter>>(\r\n this.serviceUri + '/help/chapter/info/' + id\r\n );\r\n }\r\n\r\n /**\r\n * Retrieve a repository item\r\n * @param id the file id\r\n */\r\n getRepo(id: string) {\r\n return this.httpClient.get<ApiResult<any>>(\r\n this.serviceUri + '/help/repo/' + id\r\n );\r\n }\r\n\r\n /**\r\n * Retrieve an help toc\r\n */\r\n getToc() {\r\n return this.httpClient.get<ApiResult<ChapterTree>>(\r\n this.serviceUri + '/help/toc'\r\n );\r\n }\r\n\r\n\r\n /**\r\n * Open help viewer\r\n */\r\n show(id: string = '1') {\r\n this.dialogService.open(HelpViewerComponent, {\r\n ariaLabel: 'guida',\r\n autoFocus: false,\r\n restoreFocus: false,\r\n disableClose: true,\r\n data: {\r\n id: id\r\n },\r\n minWidth: '375px',\r\n maxWidth: '1100px',\r\n width: '99%',\r\n height: '99%'\r\n });\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\n\r\n@NgModule()\r\nexport class ArsHelpModule { }\r\n\r\nexport * from './services/help.service';\r\n","/*\r\n * Public API Surface \r\n */\r\nexport * from './help.module';\r\nexport * from './definitions';\r\nexport * from './components/help-viewer/help-viewer.component';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["observableOf"],"mappings":"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"}
1
+ {"version":3,"file":"arsedizioni-ars-utils-help.mjs","sources":["../../../projects/ars-utils/help/components/help-viewer/help-viewer.component.ts","../../../projects/ars-utils/help/components/help-viewer/help-viewer.component.html","../../../projects/ars-utils/help/services/help.service.ts","../../../projects/ars-utils/help/help.module.ts","../../../projects/ars-utils/help/public_api.ts","../../../projects/ars-utils/help/arsedizioni-ars-utils-help.ts"],"sourcesContent":["import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\r\nimport { FlatTreeControl } from '@angular/cdk/tree';\r\nimport { NgClass, NgStyle } from '@angular/common';\r\nimport { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, Injectable, OnDestroy, OnInit, Signal, ViewChild, ViewEncapsulation, computed, inject, signal } from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MAT_DIALOG_DATA, MatDialogContent, MatDialogRef, MatDialogTitle } from '@angular/material/dialog';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\r\nimport { MatSidenav, MatSidenavModule } from '@angular/material/sidenav';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatTreeFlatDataSource, MatTreeFlattener, MatTreeModule } from '@angular/material/tree';\r\nimport { SafeHtmlPipe, SystemUtils } from '@arsedizioni/ars-utils/core';\r\nimport { DialogService } from '@arsedizioni/ars-utils/ui';\r\nimport { ExtendedModule } from '@ngbracket/ngx-layout/extended';\r\nimport { FlexModule } from '@ngbracket/ngx-layout/flex';\r\nimport { BehaviorSubject, Observable, Subject, fromEvent, of as observableOf } from 'rxjs';\r\nimport { debounceTime, takeUntil } from 'rxjs/operators';\r\nimport { HelpService } from '../../services/help.service';\r\n\r\nexport interface HelpViewerDialogData {\r\n id?: string | null;\r\n}\r\n\r\nexport class IndexInfo {\r\n id: string;\r\n parent?: IndexInfo | null;\r\n name: string;\r\n itemsCount?: number | null;\r\n subFolders?: IndexInfo[] | null;\r\n}\r\n\r\nexport class IndexNode extends IndexInfo {\r\n expandable: boolean;\r\n level: number;\r\n\r\n constructor(item: IndexInfo, level: number) {\r\n super();\r\n\r\n // Flattened implementation\r\n this.expandable = item.subFolders && item.subFolders.length > 0;\r\n this.level = level;\r\n\r\n // Data\r\n this.id = item.id;\r\n this.name = item.name;\r\n this.itemsCount = item.itemsCount;\r\n this.parent = item.parent;\r\n }\r\n}\r\n\r\n@Injectable()\r\nexport class IndexTreeDataSource implements OnDestroy {\r\n dataChange = new BehaviorSubject<IndexInfo[]>([]);\r\n\r\n get data(): IndexInfo[] {\r\n return this.dataChange.value;\r\n }\r\n\r\n ngOnDestroy() {\r\n this.dataChange.unsubscribe();\r\n }\r\n\r\n /**\r\n * Initialzie the data source\r\n * @param data : data\r\n */\r\n initialize(data: IndexInfo[]) {\r\n this.dataChange.next(data);\r\n }\r\n\r\n /**\r\n * Find a node by id recursively\r\n * @param node: the source node\r\n * @param id : the id to search for\r\n */\r\n findNode(node: IndexInfo, id: string): IndexInfo {\r\n let children;\r\n if (node && node.id === id) return node;\r\n if (node) children = node.subFolders;\r\n else children = this.data;\r\n if (children) {\r\n let _n = null;\r\n children.some(n => {\r\n n.parent = node;\r\n _n = this.findNode(n, id);\r\n if (_n) return true;\r\n return false;\r\n });\r\n return _n;\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Remove a node\r\n * @param id : the node id to remove\r\n */\r\n removeNode(id: string) {\r\n let n = this.findNode(null, id);\r\n if (!n) return;\r\n if (n.parent) {\r\n let i = SystemUtils.arrayFindIndexByKey(n.parent.subFolders, 'id', id);\r\n if (i !== -1) {\r\n n.parent.subFolders.splice(i, 1);\r\n n.parent.itemsCount--;\r\n }\r\n } else {\r\n let i = SystemUtils.arrayFindIndexByKey(this.data, 'id', id);\r\n if (i !== -1) {\r\n this.data.splice(i, 1);\r\n }\r\n }\r\n\r\n this.dataChange.next(this.data);\r\n }\r\n\r\n /**\r\n * Insert a new node\r\n * @param node : the new node\r\n */\r\n insertNode(node: IndexInfo) {\r\n if (node.parent) {\r\n node.parent.subFolders.unshift(node);\r\n node.parent.itemsCount++;\r\n } else this.data.unshift(node);\r\n\r\n this.dataChange.next(this.data);\r\n }\r\n\r\n /**\r\n * Rename a node\r\n * @param id : the node id\r\n * @param name : the new node name\r\n */\r\n renameNode(id: string, name: string) {\r\n let n = this.findNode(null, id);\r\n if (n) {\r\n n.name = name;\r\n this.dataChange.next(this.data);\r\n }\r\n }\r\n\r\n /**\r\n * Update data\r\n */\r\n update() {\r\n this.dataChange.next(this.data);\r\n }\r\n}\r\n\r\n@Component({\r\n host: { 'Bind': SystemUtils.generateUUID() },\r\n templateUrl: './help-viewer.component.html',\r\n styleUrls: ['./help-viewer.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [IndexTreeDataSource],\r\n standalone: true,\r\n imports: [FlexModule, MatButtonModule, MatTooltipModule, MatIconModule, MatProgressBarModule, MatDialogTitle, MatDialogContent,\r\n NgStyle, ExtendedModule, MatSidenavModule, MatTreeModule, NgClass, SafeHtmlPipe]\r\n})\r\nexport class HelpViewerComponent implements OnInit, OnDestroy, AfterViewInit {\r\n @ViewChild('indexPane') indexPane!: MatSidenav;\r\n\r\n private unsubscribe: Subject<void> = new Subject<void>();\r\n protected changeDetector = inject(ChangeDetectorRef);\r\n private dialogRef = inject(MatDialogRef<HelpViewerComponent>);\r\n protected dialogData: HelpViewerDialogData = inject(MAT_DIALOG_DATA) ?? { id: \"1\" };\r\n private dialogService = inject(DialogService);\r\n private helpService = inject(HelpService);\r\n protected breakpointObserver = inject(BreakpointObserver);\r\n protected busy = signal<boolean>(false);\r\n protected page = signal<string>(null);\r\n private indexId: string = null;\r\n private indexPaneClosed: boolean = false;\r\n protected indexNode: IndexInfo = null;\r\n private history = signal([]);\r\n protected canGoBack: Signal<boolean> = computed(() => {\r\n return this.history()?.length > 1;\r\n })\r\n\r\n /**\r\n * Manage flat tree view\r\n */\r\n private tree = inject(IndexTreeDataSource);\r\n private treeFlattener: MatTreeFlattener<IndexInfo, IndexNode>;\r\n protected treeControl: FlatTreeControl<IndexNode>;\r\n protected treeData: MatTreeFlatDataSource<IndexInfo, IndexNode>;\r\n private folders: any = null;\r\n private getChildren = (node: IndexInfo): Observable<IndexInfo[]> =>\r\n observableOf(node.subFolders);\r\n private getLevel = (node: IndexNode) => node.level;\r\n private isExpandable = (node: IndexNode) => node.expandable;\r\n protected hasChild = (_: number, _node: IndexNode) => _node.expandable;\r\n protected transformer = (item: IndexInfo, level: number) => {\r\n return new IndexNode(item, level);\r\n };\r\n\r\n ngOnInit(): void {\r\n\r\n // Setup tree structure\r\n this.treeFlattener = new MatTreeFlattener(\r\n this.transformer,\r\n this.getLevel,\r\n this.isExpandable,\r\n this.getChildren\r\n );\r\n this.treeControl = new FlatTreeControl<IndexNode>(\r\n this.getLevel,\r\n this.isExpandable\r\n );\r\n this.treeData = new MatTreeFlatDataSource(\r\n this.treeControl,\r\n this.treeFlattener\r\n );\r\n\r\n // Subscribe data change\r\n this.tree.dataChange\r\n .pipe(takeUntil(this.unsubscribe))\r\n .subscribe(data => (this.treeData.data = data));\r\n\r\n // Observe layout changes\r\n this.breakpointObserver\r\n .observe([\r\n Breakpoints.XSmall,\r\n Breakpoints.Small,\r\n Breakpoints.Medium,\r\n Breakpoints.Large,\r\n Breakpoints.XLarge,\r\n ])\r\n .pipe(takeUntil(this.unsubscribe))\r\n .subscribe((result: any) => {\r\n for (const query of Object.keys(result.breakpoints)) {\r\n if (result.breakpoints[query]) {\r\n this.handleFilterPaneVisibility();\r\n }\r\n }\r\n });\r\n\r\n\r\n // React to window size change\r\n fromEvent(window, 'resize')\r\n .pipe(takeUntil(this.unsubscribe), debounceTime(250))\r\n .subscribe(() => {\r\n this.resize();\r\n });\r\n\r\n this.getToc();\r\n\r\n this.indexId = this.dialogData.id;\r\n if (this.indexId) {\r\n this.getChapter(this.indexId);\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.unsubscribe.next();\r\n this.unsubscribe.complete();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n setTimeout(() => {\r\n this.handleFilterPaneVisibility();\r\n this.indexPaneClosed = !this.indexPane.opened;\r\n }, 0);\r\n this.resize();\r\n this.changeDetector.detectChanges();\r\n }\r\n\r\n /**\r\n * Resize \r\n */\r\n private resize() {\r\n setTimeout(() => {\r\n let elem = document.getElementById('helpviewer-scrollable');\r\n if (elem) {\r\n const height = this.dialogService.getCurrentDialogScrollableHeight(\r\n ['helpviewer-fixed'],\r\n window.innerHeight\r\n );\r\n if (height != elem.clientHeight) {\r\n elem.setAttribute('style', 'padding:0 0 0 10px;height:' + height + 'px !important;max-height:' + height + 'px !important');\r\n }\r\n } else {\r\n this.resize();\r\n }\r\n }, 0);\r\n }\r\n\r\n\r\n /**\r\n* Handle filter pane visibility\r\n*/\r\n private handleFilterPaneVisibility() {\r\n if (this.indexPane) {\r\n if (this.breakpointObserver.isMatched(Breakpoints.XSmall) ||\r\n this.breakpointObserver.isMatched(Breakpoints.Small) ||\r\n this.breakpointObserver.isMatched(Breakpoints.Medium)) {\r\n if (this.indexPane.opened) {\r\n this.indexPane.close();\r\n }\r\n } else {\r\n if (!this.indexPane.opened && !this.indexPaneClosed) {\r\n this.indexPane.open();\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Show hide index pane manually\r\n */\r\n protected toggleIndexPane() {\r\n this.indexPaneClosed = !this.indexPaneClosed;\r\n this.indexPane?.toggle();\r\n }\r\n\r\n\r\n /**\r\n * Close dialog\r\n */\r\n protected close(): void {\r\n this.dialogRef.close();\r\n }\r\n\r\n /**\r\n * Get the toc\r\n */\r\n protected getToc(): void {\r\n this.busy.set(true);\r\n this.helpService\r\n .getToc()\r\n .subscribe({\r\n next: (r: any) => {\r\n if (!r.success) {\r\n this.dialogService.error(r.message);\r\n } else {\r\n this.folders = r.value.subFolders;\r\n this.tree.initialize(r.value.subFolders);\r\n }\r\n },\r\n complete: () => {\r\n this.busy.set(false);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * React to click event and find new help target to go to\r\n * @param event : the click event\r\n * @returns : always false, to stop navigation\r\n */\r\n protected gotoChapter(event: any): boolean {\r\n if (event.srcElement.nodeName !== 'A') return false;\r\n let tag = event.srcElement.outerHTML;\r\n let id = '';\r\n let p = tag.indexOf('help-target=\"');\r\n if (p !== -1) {\r\n p += 13;\r\n while (tag[p] !== '\"') {\r\n id += tag[p];\r\n p++;\r\n }\r\n }\r\n if (id) this.getChapter(id);\r\n return false;\r\n }\r\n\r\n /**\r\n * Find a node by id\r\n * @param id : folder id\r\n * @returns: the folder info\r\n */\r\n private findFolder(id: string): IndexInfo {\r\n let node = null;\r\n if (this.folders) {\r\n this.folders.some((n: any) => {\r\n node = this.tree.findNode(n, id);\r\n if (node) return true;\r\n return false;\r\n });\r\n }\r\n return node;\r\n }\r\n\r\n /**\r\n * Expand current fodler node\r\n */\r\n private expandCurrentFolder(): void {\r\n if (this.indexNode) {\r\n this.treeControl.expand(\r\n SystemUtils.arrayFindByKey(\r\n this.treeControl.dataNodes,\r\n 'id',\r\n this.indexNode.id\r\n )\r\n );\r\n if (this.indexNode.parent) {\r\n // Apply previous selection\r\n let n = this.indexNode.parent;\r\n while (n) {\r\n this.treeControl.expand(\r\n SystemUtils.arrayFindByKey(this.treeControl.dataNodes, 'id', n.id)\r\n );\r\n n = n.parent;\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Retrieve a new chapter\r\n * @param id the chapter id#anchor\r\n * @param position : the position to scroll to\r\n */\r\n protected getChapter(id: string, position: number = 0): void {\r\n // Detect anchor if exists\r\n let anchor: string = null;\r\n let p = id.indexOf('#');\r\n if (p !== -1) {\r\n anchor = id.substring(p + 1);\r\n id = id.substring(0, p);\r\n }\r\n if (id !== '.') {\r\n this.busy.set(true);\r\n this.helpService.getChapter(id)\r\n .subscribe({\r\n next: (r: any) => {\r\n let found = false;\r\n if (!r.success) {\r\n this.dialogService.error(\"Capitolo non trovato.\");\r\n } else {\r\n if (!position)\r\n this.history().push({ id: this.indexId, position: this.getPosition() });\r\n this.indexId = id;\r\n this.page.set(r.value.data);\r\n found = r.value.chapter?.name?.length > 0;\r\n if (found) {\r\n // Update folder\r\n this.indexNode = this.findFolder(id);\r\n this.expandCurrentFolder();\r\n // Handle positioning\r\n this.gotoPosition(anchor, position);\r\n }\r\n }\r\n\r\n if (!found) {\r\n this.getChapter(\"1\");\r\n }\r\n },\r\n complete: () => {\r\n this.busy.set(false);\r\n }\r\n });\r\n } else {\r\n if (!position)\r\n this.history().push({ id: this.indexId, position: this.getPosition() });\r\n // Move on the same chapter\r\n this.gotoPosition(anchor, position);\r\n }\r\n }\r\n\r\n /**\r\n * Goto position\r\n * @param anchor the anchor to go to\r\n * @param position the offset to go to\r\n */\r\n protected gotoPosition(anchor: string, position: number = 0): void {\r\n // Handle positioning\r\n setTimeout(() => {\r\n // Handle anchor first\r\n if (anchor) {\r\n let elms = document.getElementsByName(anchor.toUpperCase());\r\n if (elms) position = elms[0].offsetTop;\r\n }\r\n // Then position\r\n if (position > 0) this.setPosition(position - 1);\r\n else this.setPosition(0);\r\n }, 50);\r\n }\r\n\r\n /**\r\n * Get scroll position\r\n * @returns: the new scroll top\r\n */\r\n protected getPosition(): number {\r\n let elem = document.getElementById('helpviewer-scroller');\r\n if (elem) {\r\n return elem.scrollTop;\r\n }\r\n return 0;\r\n }\r\n\r\n /**\r\n * Set scroll position\r\n * @param position : the position to go to\r\n */\r\n protected setPosition(position: number): void {\r\n let elem = document.getElementById('helpviewer-scroller');\r\n if (elem) {\r\n elem.scrollTo(0, position);\r\n }\r\n }\r\n\r\n /**\r\n * Go back\r\n */\r\n protected back(): void {\r\n if (!this.history || this.history.length === 0) return;\r\n let n = this.history().pop();\r\n this.getChapter(n.id, n.position + 1);\r\n }\r\n\r\n\r\n\r\n\r\n\r\n}\r\n","<div class=\"helpviewer-fixed\">\r\n <div style=\"height:6px\">\r\n @if (busy()) {\r\n <mat-progress-bar z-index=\"11\" mode=\"indeterminate\"></mat-progress-bar>\r\n }\r\n </div>\r\n <div class=\"dialog-header\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"10px\" fxFill>\r\n <div class=\"dialog-menu\">\r\n <button type=\"button\" mat-icon-button matTooltip=\"Mostra menu\" [attr.aria-label]=\"'Mostra indice'\"\r\n (click)=\"toggleIndexPane()\">\r\n <mat-icon>menu</mat-icon>\r\n </button>\r\n </div>\r\n <div fxFlex=\"*\">\r\n <h2 mat-dialog-title>Guida</h2>\r\n </div>\r\n <div fxFlex=\"100px\" fxLayoutAlign=\"end\" class=\"dialog-close\">\r\n @if (canGoBack()) {\r\n <button fxFlexAlign=\"start\" type=\"button\" mat-icon-button matTooltip=\"Indietro\" (click)=\"back()\">\r\n <mat-icon>arrow_back</mat-icon>\r\n </button>\r\n }\r\n <button fxFlexAlign=\"start\" type=\"button\" mat-icon-button matTooltip=\"Chiudi\" (click)=\"close()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n</div>\r\n<div mat-dialog-content id=\"helpviewer-scrollable\">\r\n <mat-drawer-container class=\"fill\">\r\n <mat-drawer #indexPane mode=\"side\" [autoFocus]=\"false\" class=\"drawer-small drawer-transparent\">\r\n <div fxLayout=\"column\" fxFill>\r\n <div fxFlex=\"*\">\r\n <mat-tree [dataSource]=\"treeData\" [treeControl]=\"treeControl\" class=\"tree \" style=\"max-width:310px\">\r\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodeToggle matTreeNodePadding\r\n [matTreeNodePaddingIndent]=\"20\" class=\"tree-node tree-node-simple tree-node-style\"\r\n (click)=\"getChapter(node.id);\" [ngClass]=\"{'tree-node-activated': indexNode && indexNode.id === node.id}\"\r\n [disabled]=\"busy()\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill class=\"small uppercase\">\r\n <button type=\"button\" fxFlexAlign=\"center\" mat-icon-button disabled class=\"small-icon-button\"></button>\r\n <div fxFlex=\"*\" fxFlexAlign=\"center\">{{node.name}}</div>\r\n </div>\r\n </mat-tree-node>\r\n <mat-tree-node *matTreeNodeDef=\"let node;when: hasChild\" matTreeNodePadding [matTreeNodePaddingIndent]=\"20\"\r\n class=\"tree-node tree-node-simple tree-node-style\"\r\n [ngClass]=\"{'tree-node-activated': indexNode && indexNode.id === node.id }\" (click)=\"getChapter(node.id)\"\r\n [disabled]=\"busy()\">\r\n <div fxLayout=\"row\" fxLayoutGap=\"10px\" fxFill class=\"small uppercase\">\r\n <button type=\"button\" fxFlexAlign=\"center\" mat-icon-button matTreeNodeToggle\r\n [attr.aria-label]=\"'Apri/chiudi ' + node.name\" class=\"small-icon-button\">\r\n <mat-icon class=\"mat-icon-rtl-mirror\">\r\n {{treeControl.isExpanded(node) ? 'expand_more' : 'chevron_right'}}\r\n </mat-icon>\r\n </button>\r\n <div fxFlex=\"*\" fxFlexAlign=\"center\">{{node.name}}</div>\r\n </div>\r\n </mat-tree-node>\r\n </mat-tree>\r\n </div>\r\n </div>\r\n </mat-drawer>\r\n <div style=\"padding: 0 24px;\">\r\n <div fxLayout=\"column\" fxFill>\r\n <div class=\"fill\" id=\"helpviewer-scroller\" (click)=\"gotoChapter($event)\"\r\n [innerHtml]=\"(page() ?? '') | safeHtml\"></div>\r\n </div>\r\n </div>\r\n </mat-drawer-container>\r\n</div>","import { Injectable, inject } from '@angular/core';\r\nimport { DialogService } from '@arsedizioni/ars-utils/ui';\r\nimport { ApiResult } from '@arsedizioni/ars-utils/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { HelpViewerComponent } from '../components/help-viewer/help-viewer.component';\r\nimport { Chapter, ChapterBag, ChapterTree } from '../definitions';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class HelpService {\r\n \r\n private httpClient = inject(HttpClient); \r\n private dialogService = inject(DialogService);\r\n private serviceUri: string;\r\n\r\n /**\r\n * Initialize help service\r\n * @param serviceUri : the service uri\r\n */\r\n initialize(serviceUri: string) {\r\n this.serviceUri = serviceUri;\r\n }\r\n\r\n /**\r\n * Retrieve an help chapter\r\n * @param id the chapter id\r\n * @param query the search query\r\n */\r\n getChapter(id: string, query: string = null) {\r\n return this.httpClient.get<ApiResult<ChapterBag>>(\r\n this.serviceUri +\r\n '/help/chapter/' +\r\n id +\r\n '/?query=' +\r\n (query == null ? '' : query)\r\n );\r\n }\r\n\r\n /**\r\n * Retrieve an help chapater info\r\n * @param id the chapter id\r\n */\r\n getChapterInfo(id: string) {\r\n return this.httpClient.get<ApiResult<Chapter>>(\r\n this.serviceUri + '/help/chapter/info/' + id\r\n );\r\n }\r\n\r\n /**\r\n * Retrieve a repository item\r\n * @param id the file id\r\n */\r\n getRepo(id: string) {\r\n return this.httpClient.get<ApiResult<any>>(\r\n this.serviceUri + '/help/repo/' + id\r\n );\r\n }\r\n\r\n /**\r\n * Retrieve an help toc\r\n */\r\n getToc() {\r\n return this.httpClient.get<ApiResult<ChapterTree>>(\r\n this.serviceUri + '/help/toc'\r\n );\r\n }\r\n\r\n\r\n /**\r\n * Open help viewer\r\n */\r\n show(id: string = '1') {\r\n this.dialogService.open(HelpViewerComponent, {\r\n ariaLabel: 'guida',\r\n autoFocus: false,\r\n restoreFocus: false,\r\n disableClose: true,\r\n data: {\r\n id: id\r\n },\r\n minWidth: '375px',\r\n maxWidth: '1100px',\r\n width: '99%',\r\n height: '99%'\r\n });\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\n\r\n@NgModule()\r\nexport class ArsHelpModule { }\r\n\r\nexport * from './services/help.service';\r\n","/*\r\n * Public API Surface \r\n */\r\nexport * from './help.module';\r\nexport * from './definitions';\r\nexport * from './components/help-viewer/help-viewer.component';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["observableOf"],"mappings":"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"}
@@ -63,13 +63,12 @@ class SupportNotificationComponent {
63
63
  const height = this.dialogService.getCurrentDialogScrollableHeight(['support-notification-fixed'], window.innerHeight);
64
64
  if (height != elem.clientHeight) {
65
65
  elem.setAttribute('style', 'height:' + height + 'px !important;max-height:' + height + 'px !important');
66
- this.resize();
67
66
  }
68
67
  }
69
68
  else {
70
69
  this.resize();
71
70
  }
72
- }, 100);
71
+ }, 0);
73
72
  }
74
73
  /**
75
74
  * Retrieve data
@@ -168,18 +167,18 @@ class SupportNotificationsBrowserComponent {
168
167
  * Resize dialog
169
168
  */
170
169
  resize() {
171
- let elem = document.getElementById('notifications-browser-scrollable');
172
- if (elem) {
173
- const height = this.dialogService.getCurrentDialogScrollableHeight(['notifications-browser-fixed'], window.innerHeight);
174
- if (height != elem.clientHeight) {
175
- elem.setAttribute('style', 'height:' + height + 'px !important;max-height:' + height + 'px !important');
170
+ setTimeout(() => {
171
+ let elem = document.getElementById('notifications-browser-scrollable');
172
+ if (elem) {
173
+ const height = this.dialogService.getCurrentDialogScrollableHeight(['notifications-browser-fixed'], window.innerHeight);
174
+ if (height != elem.clientHeight) {
175
+ elem.setAttribute('style', 'height:' + height + 'px !important;max-height:' + height + 'px !important');
176
+ }
176
177
  }
177
- }
178
- else {
179
- setTimeout(() => {
178
+ else {
180
179
  this.resize();
181
- }, 100);
182
- }
180
+ }
181
+ }, 0);
183
182
  }
184
183
  onContextMenu(event, item) {
185
184
  event.preventDefault();
@@ -1 +1 @@
1
- {"version":3,"file":"arsedizioni-ars-utils-support.ui.mjs","sources":["../../../projects/ars-utils/support.ui/ui/notifications-browser/notification/notification.component.ts","../../../projects/ars-utils/support.ui/ui/notifications-browser/notification/notification.component.html","../../../projects/ars-utils/support.ui/ui/notifications-browser/notifications-browser.component.ts","../../../projects/ars-utils/support.ui/ui/notifications-browser/notifications-browser.component.html","../../../projects/ars-utils/support.ui/public_api.ts","../../../projects/ars-utils/support.ui/arsedizioni-ars-utils-support.ui.ts"],"sourcesContent":["import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component, OnInit,\r\n inject\r\n} from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogTitle, MatDialogClose, MatDialogContent, MatDialogActions } from '@angular/material/dialog';\r\nimport { BroadcastService, ScreenService, SystemUtils } from '@arsedizioni/ars-utils/core';\r\nimport { SupportMessages, SupportService } from '@arsedizioni/ars-utils/support.common';\r\nimport {\r\n DialogService\r\n} from '@arsedizioni/ars-utils/ui';\r\nimport { saveAs } from 'file-saver';\r\nimport { SafeHtmlPipe } from '@arsedizioni/ars-utils/core';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { FlexModule } from '@ngbracket/ngx-layout/flex';\r\n\r\nexport interface SupportNotificationData {\r\n id?: number | null;\r\n}\r\n\r\n\r\n@Component({\r\n host: { 'Bind': SystemUtils.generateUUID() },\r\n templateUrl: './notification.component.html',\r\n styleUrls: ['./notification.component.scss'],\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [FlexModule, MatDialogTitle, MatButtonModule, MatTooltipModule, MatDialogClose, MatIconModule, MatDialogContent,\r\n MatDialogActions, MatMenuModule, SafeHtmlPipe]\r\n})\r\nexport class SupportNotificationComponent\r\n implements OnInit, AfterViewInit {\r\n\r\n protected screenService = inject(ScreenService);\r\n private supportService = inject(SupportService);\r\n private changeDetector = inject(ChangeDetectorRef);\r\n private broadcastService = inject(BroadcastService);\r\n private dialogService = inject(DialogService);\r\n private dialogData: SupportNotificationData = inject(MAT_DIALOG_DATA);\r\n\r\n protected id: number = -1;\r\n protected item: any | null = null;\r\n\r\n ngOnInit(): void {\r\n if (this.dialogData) {\r\n this.id = this.dialogData.id;\r\n }\r\n this.fetch();\r\n }\r\n ngAfterViewInit(): void {\r\n this.resize();\r\n }\r\n\r\n /**\r\n * Resize dialog\r\n */\r\n private resize() {\r\n setTimeout(() => {\r\n let elem = document.getElementById('notification-scrollable');\r\n if (elem) {\r\n const height = this.dialogService.getCurrentDialogScrollableHeight(\r\n ['support-notification-fixed'],\r\n window.innerHeight\r\n );\r\n if (height != elem.clientHeight) {\r\n elem.setAttribute('style', 'height:' + height + 'px !important;max-height:' + height + 'px !important');\r\n this.resize();\r\n }\r\n } else {\r\n this.resize();\r\n }\r\n }, 100);\r\n }\r\n\r\n\r\n /**\r\n * Retrieve data\r\n */\r\n private fetch() {\r\n if (!this.supportService.loggedIn()) return;\r\n this.dialogService.busy('Caricamento in corso...');\r\n this.supportService.getNotification(this.id)\r\n .subscribe({\r\n next: (r) => {\r\n if (!r.success) {\r\n this.dialogService.error(r.message);\r\n } else {\r\n this.item = r.value;\r\n this.broadcastService.sendMessage(SupportMessages.NOTIFICATION_READ, this.item.id);\r\n this.changeDetector.markForCheck();\r\n }\r\n },\r\n complete: () => {\r\n this.dialogService.clearBusy();\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Download a notification document or navigate to the url\r\n * @param item : the document item\r\n */\r\n protected downloadDocument(item: any) {\r\n if (!this.supportService.loggedIn()) return;\r\n if (item.isBinary) {\r\n this.supportService.dowloadNotificationDocument(item.id).subscribe({\r\n next: (r: any) => {\r\n saveAs(r);\r\n },\r\n });\r\n } else\r\n window.open(item.url, '_blank');\r\n }\r\n\r\n}\r\n","<div class=\"support-notification-fixed\">\r\n <div class=\"support-notification-header\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"10px\" fxFill >\r\n <div fxFlex=\"*\">\r\n <h2 mat-dialog-title>{{item?.title}}</h2>\r\n </div>\r\n <div fxLayoutAlign=\"end\">\r\n <button fxFlexAlign=\"start\" type=\"button\" mat-icon-button matTooltip=\"Chiudi\"\r\n aria-label=\"Chiudi\" [mat-dialog-close]=\"true\" class=\"dialog-close\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div mat-dialog-content id=\"notification-scrollable\">\r\n <div id=\"notification-scroller\">\r\n <div [innerHtml]=\"(item?.text ?? 'Caricamento in corso...') | safeHtml\"></div>\r\n </div>\r\n</div>\r\n<div mat-dialog-actions class=\"notification-fixed\">\r\n <div style=\"padding: 10px 0\">\r\n @if (item?.documents && item?.documents.length > 0) {\r\n <button type=\"button\" mat-button [attr.aria-label]=\"'Documenti scaricabili'\" [matMenuTriggerFor]=\"documentsMenu\"\r\n color=\"primary\">\r\n {{item?.documents.length}} @if (item?.documents.length === 1) {\r\n <span>Documento scaricabile</span>\r\n }\r\n @if (item?.documents.length !== 1) {\r\n <span>Documenti scaricabili</span>\r\n }\r\n <mat-icon class=\"icon-menu-drop-down\">arrow_drop_down</mat-icon>\r\n </button>\r\n }\r\n <mat-menu #documentsMenu=\"matMenu\">\r\n <ng-template matMenuContent>\r\n @for (doc of item?.documents; track doc) {\r\n <button mat-menu-item (click)=\"downloadDocument(doc)\">\r\n @if (doc.isBinary) {\r\n <mat-icon>attach_file</mat-icon>\r\n }\r\n @if (!doc.isBinary) {\r\n <mat-icon>link</mat-icon>\r\n }\r\n {{doc.name}}\r\n </button>\r\n }\r\n </ng-template>\r\n </mat-menu>\r\n </div>\r\n</div>","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component, OnDestroy,\r\n OnInit,\r\n ViewChild,\r\n inject,\r\n signal\r\n} from '@angular/core';\r\nimport { MatMenuTrigger, MatMenuModule } from '@angular/material/menu';\r\nimport { MatPaginator, MatPaginatorModule } from '@angular/material/paginator';\r\nimport { BroadcastService, ScreenService, SelectableModel, SystemUtils } from '@arsedizioni/ars-utils/core';\r\nimport { SupportService, SupportMessages, SupportNotificationsSearchParams } from '@arsedizioni/ars-utils/support.common';\r\nimport {\r\n DialogService\r\n} from '@arsedizioni/ars-utils/ui';\r\nimport { Subject, debounceTime, fromEvent, takeUntil } from 'rxjs';\r\nimport { SupportNotificationComponent } from './notification/notification.component';\r\nimport { FormatPipe } from '@arsedizioni/ars-utils/core';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { ExtendedModule } from '@ngbracket/ngx-layout/extended';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\nimport { MatBadgeModule } from '@angular/material/badge';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatDialogTitle, MatDialogClose, MatDialogContent, MatDialogActions } from '@angular/material/dialog';\r\nimport { FlexModule } from '@ngbracket/ngx-layout/flex';\r\n\r\n@Component({\r\n host: { 'Bind': SystemUtils.generateUUID() },\r\n templateUrl: './notifications-browser.component.html',\r\n styleUrls: ['./notifications-browser.component.scss'],\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [FlexModule, MatDialogTitle, MatButtonModule, MatTooltipModule, MatDialogClose,\r\n MatIconModule, MatFormFieldModule, MatInputModule, FormsModule, MatMenuModule, MatBadgeModule, MatDividerModule, MatDialogContent,\r\n ExtendedModule, MatCheckboxModule, MatDialogActions, MatPaginatorModule, FormatPipe, SupportNotificationComponent]\r\n})\r\nexport class SupportNotificationsBrowserComponent\r\n implements OnInit, OnDestroy, AfterViewInit {\r\n\r\n @ViewChild('paginator') paginator!: MatPaginator;\r\n @ViewChild('contextMenuTrigger') contextMenu!: MatMenuTrigger;\r\n\r\n\r\n protected screenService = inject(ScreenService);\r\n private supportService = inject(SupportService);\r\n private broadcastService = inject(BroadcastService);\r\n private dialogService = inject(DialogService);\r\n private unsubscribe: Subject<void> = new Subject<void>();\r\n\r\n protected selection = new SelectableModel<any, number>(true, 'id');\r\n protected searchParams: SupportNotificationsSearchParams = {\r\n first: 0,\r\n count: 25\r\n };\r\n protected total = signal<number>(-1);\r\n protected items = signal<any>(null);\r\n protected contextMenuPosition = { x: '0px', y: '0px' };\r\n\r\n\r\n ngOnInit(): void {\r\n // React to window size change\r\n fromEvent(window, 'resize')\r\n .pipe(takeUntil(this.unsubscribe), debounceTime(250))\r\n .subscribe(() => {\r\n this.resize();\r\n });\r\n\r\n // React to message broadcasting\r\n this.broadcastService.getMessage()\r\n .pipe(takeUntil(this.unsubscribe))\r\n .subscribe((message: any) => {\r\n if (message.id === SupportMessages.NOTIFICATION_READ) {\r\n const item = SystemUtils.arrayFindByKey(\r\n this.items,\r\n 'id',\r\n message.data\r\n );\r\n if (item) {\r\n item.isRead = true;\r\n }\r\n }\r\n });\r\n }\r\n\r\n\r\n ngOnDestroy(): void {\r\n this.unsubscribe.next();\r\n this.unsubscribe.complete();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.resize();\r\n this.find();\r\n }\r\n\r\n\r\n /**\r\n * Resize dialog\r\n */\r\n private resize() {\r\n let elem = document.getElementById('notifications-browser-scrollable');\r\n if (elem) {\r\n const height = this.dialogService.getCurrentDialogScrollableHeight(\r\n ['notifications-browser-fixed'],\r\n window.innerHeight\r\n );\r\n if (height != elem.clientHeight) {\r\n elem.setAttribute('style', 'height:' + height + 'px !important;max-height:' + height + 'px !important'); \r\n }\r\n } else {\r\n setTimeout(() => {\r\n this.resize();\r\n }, 100)\r\n }\r\n }\r\n\r\n protected onContextMenu(event: MouseEvent, item: any) {\r\n event.preventDefault();\r\n this.contextMenuPosition.x = event.clientX + 'px';\r\n this.contextMenuPosition.y = event.clientY + 'px';\r\n this.contextMenu.menuData = { item: item };\r\n this.contextMenu.openMenu();\r\n }\r\n\r\n /**\r\n * Update scroll\r\n */\r\n private updateScroll() {\r\n // Scroll to top\r\n let elem = document.getElementById('notifications-browser-scroller');\r\n if (elem) elem.parentElement.scrollTop = 0;\r\n }\r\n\r\n /**\r\n * Update menu buttons visibility when the menu is closed\r\n */\r\n protected updateMenuButtonsVisibility() {\r\n this.items()?.forEach((n: any) => {\r\n n.isMenuOpen = false;\r\n });\r\n }\r\n\r\n /**\r\n * Get all selected ids\r\n * @returns: the selected ids as an array\r\n */\r\n private getSeletectIds(): number[] {\r\n if (this.selection?.all?.length > 50) {\r\n this.dialogService.error('La selezione non può contenere più di 50 elementi.');\r\n return null;\r\n }\r\n let ids: number[] = [];\r\n if (this.selection?.all?.length > 0) {\r\n this.selection?.all?.forEach((n: any) => {\r\n ids.push(n.id);\r\n });\r\n }\r\n return ids;\r\n }\r\n\r\n /**\r\n* Return item state css class\r\n* @param item : the item to evaluate\r\n*/\r\n protected getItemStateCssClass(item: any) {\r\n if (!item.isRead) return 'unread-bg';\r\n return null;\r\n }\r\n\r\n /**\r\n * Return the item state tooltip text\r\n * @param item : the item to evaluate\r\n */\r\n protected getItemStateTooltip(item: any): string {\r\n if (!item.isRead) return 'Non letto';\r\n return '';\r\n }\r\n\r\n /**\r\n * Perform a new search\r\n */\r\n protected find() {\r\n this.searchParams.first = 0;\r\n if (this.paginator) {\r\n this.paginator.pageIndex = 0;\r\n }\r\n this.fetch();\r\n }\r\n\r\n /**\r\n * Retrieve data\r\n */\r\n private fetch() {\r\n if (!this.supportService.loggedIn()) return;\r\n this.dialogService.busy('Caricamento in corso...');\r\n this.supportService.queryNotifications(this.searchParams)\r\n .subscribe({\r\n next: (r: any) => {\r\n if (!r.success) {\r\n this.dialogService.error(r.message);\r\n } else {\r\n this.items.set(r.value?.items ?? []);\r\n this.total.set(r.value?.total ?? 0);\r\n this.updateScroll();\r\n }\r\n },\r\n complete: () => {\r\n this.dialogService.clearBusy();\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Show a new page result\r\n * @param e : the MatPaginator PageEvent data\r\n */\r\n protected fetchMore(e: any) {\r\n let first = e.pageIndex * this.searchParams.count;\r\n this.searchParams.first = first;\r\n this.fetch();\r\n }\r\n\r\n\r\n /**\r\n * Mark a notification as read or unread\r\n * @param item : the item to set or null to use selection\r\n * @param unmark : true to set as unread or false to set as read\r\n */\r\n protected mark(item: any = null, unmark: boolean = false) {\r\n if (!this.supportService.loggedIn()) return;\r\n if (!item && !this.selection?.all?.length) return;\r\n const ids: number[] = item ? [item.id] : this.getSeletectIds();\r\n this.dialogService.busy('Aggiornamento in corso...');\r\n this.supportService.markNotifications({\r\n ids: ids,\r\n unmark: unmark\r\n })\r\n .subscribe({\r\n next: (r: any) => {\r\n if (!r.success) {\r\n this.dialogService.error(r.message);\r\n } else {\r\n ids.forEach((id: number) => {\r\n const i = SystemUtils.arrayFindIndexByKey(\r\n this.items,\r\n 'id',\r\n id\r\n );\r\n if (i !== -1) {\r\n this.items()[i].isRead = !unmark;\r\n }\r\n });\r\n this.selection.clear();\r\n this.supportService.countUnreadNotifications();\r\n }\r\n },\r\n complete: () => {\r\n this.dialogService.clearBusy();\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Display a notification\r\n * @param item : the item to display\r\n */\r\n protected show(item: any) {\r\n this.dialogService.open(SupportNotificationComponent, {\r\n ariaLabel: 'visualizza notifica',\r\n autoFocus: false,\r\n restoreFocus: false,\r\n disableClose: true,\r\n data: { id: item.id },\r\n minWidth: '375px',\r\n maxWidth: '900px',\r\n width: '99%',\r\n height: '99%'\r\n });\r\n }\r\n\r\n}\r\n","<div class=\"notifications-browser-fixed\">\r\n <div class=\"notifications-browser-header\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"10px\" fxFill >\r\n <div fxFlex=\"*\">\r\n <h2 mat-dialog-title>Novità e informazioni</h2>\r\n </div>\r\n <div fxLayoutAlign=\"end\">\r\n <button fxFlexAlign=\"start\" type=\"button\" mat-icon-button matTooltip=\"Chiudi\" aria-label=\"Chiudi\"\r\n [mat-dialog-close]=\"true\" class=\"dialog-close\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div style=\"padding-left: 24px; padding-right: 24px; padding-bottom: 10px;\">\r\n <div fxLayout=\"row wrap\" fxFill fxLayoutAlign=\"space-between\">\r\n <div fxFlex=\"200px\" fxFlexAlign=\"end\">\r\n <mat-form-field style=\"width:200px\" subscriptSizing=\"dynamic\" appearance=\"outline\">\r\n <mat-label>Cerca</mat-label>\r\n <input matInput #searchInput=\"matInput\" type=\"text\" [(ngModel)]=\"searchParams.any\" maxlength=\"200\"\r\n (keyup.Enter)=\"find()\" autofocus placeholder=\"Inserisci testo + INVIO...\" />\r\n @if (searchParams.any) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\"\r\n (click)=\"searchParams.any = ''\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n </mat-form-field>\r\n </div>\r\n <div fxFlex=\"*\" fxLayoutAlign=\"end\">\r\n <div fxFlexAlign=\"center\">\r\n @if (selection?.hasValue()) {\r\n <button type=\"button\" mat-button matTooltip=\"Azioni da eseguire sugli elementi selezionati\"\r\n [attr.aria-label]=\"'Menu opzioni per elementi selezionati'\" [matMenuTriggerFor]=\"menuSelections\">\r\n <mat-icon aria-hidden=\"false\" [matBadge]=\"selection?.all.length\">checklist</mat-icon>\r\n </button>\r\n }\r\n <mat-menu #menuSelections=\"matMenu\">\r\n <button mat-menu-item (click)=\"selection?.clear()\" [attr.aria-label]=\"'Deseleziona tutti'\">\r\n <mat-icon>clear</mat-icon>Deseleziona tutti\r\n </button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item [attr.aria-label]=\"'Segna come da leggere'\" (click)=\"mark(null, true)\">\r\n <mat-icon>outlined_flag</mat-icon>Segna come da leggere\r\n </button>\r\n <button mat-menu-item [attr.aria-label]=\"'Segna come già letto'\" (click)=\"mark(null)\">\r\n <mat-icon>flag</mat-icon>Segna come già letto\r\n </button>\r\n </mat-menu>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div mat-dialog-content id=\"notifications-browser-scrollable\">\r\n <div id=\"notifications-browser-scroller\">\r\n @if (total() === 0) {\r\n <div>\r\n <p class=\"message\"><i>Nessun elemento da visualizzare.</i></p>\r\n </div>\r\n } @else {\r\n <div>\r\n @for (item of items(); track item.id; let i = $index) {\r\n <div (mouseenter)=\"item.isOver = true;\" (mouseleave)=\"item.isOver = false\"\r\n (contextmenu)=\"onContextMenu($event, item)\">\r\n <div class=\"news\" fxLayout=\"row\" fxLayoutGap=\"6px\" fxFill [ngClass]=\"{'news-selected': selection?.isSelected(item.id), \r\n 'news-read': item.isRead}\">\r\n <div fxFlex=\"6px\" [ngClass]=\"getItemStateCssClass(item)\" [matTooltip]=\"getItemStateTooltip(item)\">\r\n </div>\r\n <div fxFlex=\"48px\" fxFlexAlign=\"center\" fxLayoutAlign=\"center\">\r\n @if (screenService.isTouchable || item.isOver || selection?.isSelected(item.id)) {\r\n <mat-checkbox (change)=\"$event ? selection?.toggle(item, item.id) : null\"\r\n [checked]=\"selection?.isSelected(item.id)\">\r\n </mat-checkbox>\r\n }\r\n </div>\r\n <div fxFlex=\"*\" fxFlexAlign=\"center\" (click)=\"show(item); $event.stopPropagation()\">\r\n <div class=\"info-1 uppercase\">\r\n {{ (item.publishingDate ?? item.created) | format:'D':'dd/MM/yyyy'}}</div>\r\n <div>{{item.title}}</div>\r\n <div class=\"info-2 uppercase\">\r\n {{item.productNames}}\r\n @if (item.productModulesNames) {\r\n <span> | {{item.productModulesNames}}</span>\r\n }\r\n </div>\r\n </div>\r\n <div fxFlex=\"50px\" fxFlexAlign=\"center\">\r\n @if (item.isOver || item.isMenuOpen || selection?.isSelected(item.id)) {\r\n <button type=\"button\" mat-icon-button matTooltip=\"Menu\" [attr.aria-label]=\"'Menu opzioni'\"\r\n [matMenuTriggerFor]=\"contextMenu\" [matMenuTriggerData]=\"{item: item}\" (click)=\"item.isMenuOpen = true\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n <div #contextMenuTrigger=\"matMenuTrigger\" style=\"position: fixed\" [style.left]=\"contextMenuPosition.x\"\r\n [style.top]=\"contextMenuPosition.y\" [matMenuTriggerFor]=\"contextMenu\">\r\n </div>\r\n <mat-menu #contextMenu=\"matMenu\" (closed)=\"updateMenuButtonsVisibility()\">\r\n <ng-template matMenuContent let-item=\"item\">\r\n @if (item.isRead) {\r\n <button mat-menu-item [attr.aria-label]=\"'Segna come da leggere'\" (click)=\"mark(item, true)\">\r\n <mat-icon>flag</mat-icon>Segna come da leggere\r\n </button>\r\n }\r\n @if (!item.isRead) {\r\n <button mat-menu-item [attr.aria-label]=\"'Segna come da già letto'\" (click)=\"mark(item)\">\r\n <mat-icon>outlined_flag</mat-icon>Segna come già letto\r\n </button>\r\n }\r\n </ng-template>\r\n </mat-menu>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n<div mat-dialog-actions class=\"notifications-browser-fixed\">\r\n <div fxLayout=\"row wrap\" fxLayoutGap=\"10px\" fxLayoutAlign=\"space-between\" fxFill>\r\n <!-- legend -->\r\n <div fxFlex.lt-md=\"100\" class=\"legend-container\">\r\n <div class=\"legend unread-bg\"></div>\r\n da leggere\r\n </div>\r\n <div fxFlex.lt-md=\"100\" fxLayoutAlign=\"end\">\r\n <mat-paginator #paginator [hidePageSize]=\"true\" [length]=\"total()\" [pageSize]=\"searchParams.count\"\r\n [showFirstLastButtons]=\"true\" (page)=\"fetchMore($event)\"></mat-paginator>\r\n </div>\r\n </div>\r\n</div>","/*\r\n * Public API Surface of ars-utils\r\n */\r\nexport * from './ui/notifications-browser/notifications-browser.component';\r\n\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i5","i8"],"mappings":"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"}
1
+ {"version":3,"file":"arsedizioni-ars-utils-support.ui.mjs","sources":["../../../projects/ars-utils/support.ui/ui/notifications-browser/notification/notification.component.ts","../../../projects/ars-utils/support.ui/ui/notifications-browser/notification/notification.component.html","../../../projects/ars-utils/support.ui/ui/notifications-browser/notifications-browser.component.ts","../../../projects/ars-utils/support.ui/ui/notifications-browser/notifications-browser.component.html","../../../projects/ars-utils/support.ui/public_api.ts","../../../projects/ars-utils/support.ui/arsedizioni-ars-utils-support.ui.ts"],"sourcesContent":["import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component, OnInit,\r\n inject\r\n} from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogTitle, MatDialogClose, MatDialogContent, MatDialogActions } from '@angular/material/dialog';\r\nimport { BroadcastService, ScreenService, SystemUtils } from '@arsedizioni/ars-utils/core';\r\nimport { SupportMessages, SupportService } from '@arsedizioni/ars-utils/support.common';\r\nimport {\r\n DialogService\r\n} from '@arsedizioni/ars-utils/ui';\r\nimport { saveAs } from 'file-saver';\r\nimport { SafeHtmlPipe } from '@arsedizioni/ars-utils/core';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { FlexModule } from '@ngbracket/ngx-layout/flex';\r\n\r\nexport interface SupportNotificationData {\r\n id?: number | null;\r\n}\r\n\r\n\r\n@Component({\r\n host: { 'Bind': SystemUtils.generateUUID() },\r\n templateUrl: './notification.component.html',\r\n styleUrls: ['./notification.component.scss'],\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [FlexModule, MatDialogTitle, MatButtonModule, MatTooltipModule, MatDialogClose, MatIconModule, MatDialogContent,\r\n MatDialogActions, MatMenuModule, SafeHtmlPipe]\r\n})\r\nexport class SupportNotificationComponent\r\n implements OnInit, AfterViewInit {\r\n\r\n protected screenService = inject(ScreenService);\r\n private supportService = inject(SupportService);\r\n private changeDetector = inject(ChangeDetectorRef);\r\n private broadcastService = inject(BroadcastService);\r\n private dialogService = inject(DialogService);\r\n private dialogData: SupportNotificationData = inject(MAT_DIALOG_DATA);\r\n\r\n protected id: number = -1;\r\n protected item: any | null = null;\r\n\r\n ngOnInit(): void {\r\n if (this.dialogData) {\r\n this.id = this.dialogData.id;\r\n }\r\n this.fetch();\r\n }\r\n ngAfterViewInit(): void {\r\n this.resize();\r\n }\r\n\r\n /**\r\n * Resize dialog\r\n */\r\n private resize() {\r\n setTimeout(() => {\r\n let elem = document.getElementById('notification-scrollable');\r\n if (elem) {\r\n const height = this.dialogService.getCurrentDialogScrollableHeight(\r\n ['support-notification-fixed'],\r\n window.innerHeight\r\n );\r\n if (height != elem.clientHeight) {\r\n elem.setAttribute('style', 'height:' + height + 'px !important;max-height:' + height + 'px !important');\r\n }\r\n } else {\r\n this.resize();\r\n }\r\n }, 0);\r\n }\r\n\r\n\r\n /**\r\n * Retrieve data\r\n */\r\n private fetch() {\r\n if (!this.supportService.loggedIn()) return;\r\n this.dialogService.busy('Caricamento in corso...');\r\n this.supportService.getNotification(this.id)\r\n .subscribe({\r\n next: (r) => {\r\n if (!r.success) {\r\n this.dialogService.error(r.message);\r\n } else {\r\n this.item = r.value;\r\n this.broadcastService.sendMessage(SupportMessages.NOTIFICATION_READ, this.item.id);\r\n this.changeDetector.markForCheck();\r\n }\r\n },\r\n complete: () => {\r\n this.dialogService.clearBusy();\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Download a notification document or navigate to the url\r\n * @param item : the document item\r\n */\r\n protected downloadDocument(item: any) {\r\n if (!this.supportService.loggedIn()) return;\r\n if (item.isBinary) {\r\n this.supportService.dowloadNotificationDocument(item.id).subscribe({\r\n next: (r: any) => {\r\n saveAs(r);\r\n },\r\n });\r\n } else\r\n window.open(item.url, '_blank');\r\n }\r\n\r\n}\r\n","<div class=\"support-notification-fixed\">\r\n <div class=\"support-notification-header\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"10px\" fxFill >\r\n <div fxFlex=\"*\">\r\n <h2 mat-dialog-title>{{item?.title}}</h2>\r\n </div>\r\n <div fxLayoutAlign=\"end\">\r\n <button fxFlexAlign=\"start\" type=\"button\" mat-icon-button matTooltip=\"Chiudi\"\r\n aria-label=\"Chiudi\" [mat-dialog-close]=\"true\" class=\"dialog-close\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div mat-dialog-content id=\"notification-scrollable\">\r\n <div id=\"notification-scroller\">\r\n <div [innerHtml]=\"(item?.text ?? 'Caricamento in corso...') | safeHtml\"></div>\r\n </div>\r\n</div>\r\n<div mat-dialog-actions class=\"notification-fixed\">\r\n <div style=\"padding: 10px 0\">\r\n @if (item?.documents && item?.documents.length > 0) {\r\n <button type=\"button\" mat-button [attr.aria-label]=\"'Documenti scaricabili'\" [matMenuTriggerFor]=\"documentsMenu\"\r\n color=\"primary\">\r\n {{item?.documents.length}} @if (item?.documents.length === 1) {\r\n <span>Documento scaricabile</span>\r\n }\r\n @if (item?.documents.length !== 1) {\r\n <span>Documenti scaricabili</span>\r\n }\r\n <mat-icon class=\"icon-menu-drop-down\">arrow_drop_down</mat-icon>\r\n </button>\r\n }\r\n <mat-menu #documentsMenu=\"matMenu\">\r\n <ng-template matMenuContent>\r\n @for (doc of item?.documents; track doc) {\r\n <button mat-menu-item (click)=\"downloadDocument(doc)\">\r\n @if (doc.isBinary) {\r\n <mat-icon>attach_file</mat-icon>\r\n }\r\n @if (!doc.isBinary) {\r\n <mat-icon>link</mat-icon>\r\n }\r\n {{doc.name}}\r\n </button>\r\n }\r\n </ng-template>\r\n </mat-menu>\r\n </div>\r\n</div>","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n Component, OnDestroy,\r\n OnInit,\r\n ViewChild,\r\n inject,\r\n signal\r\n} from '@angular/core';\r\nimport { MatMenuTrigger, MatMenuModule } from '@angular/material/menu';\r\nimport { MatPaginator, MatPaginatorModule } from '@angular/material/paginator';\r\nimport { BroadcastService, ScreenService, SelectableModel, SystemUtils } from '@arsedizioni/ars-utils/core';\r\nimport { SupportService, SupportMessages, SupportNotificationsSearchParams } from '@arsedizioni/ars-utils/support.common';\r\nimport {\r\n DialogService\r\n} from '@arsedizioni/ars-utils/ui';\r\nimport { Subject, debounceTime, fromEvent, takeUntil } from 'rxjs';\r\nimport { SupportNotificationComponent } from './notification/notification.component';\r\nimport { FormatPipe } from '@arsedizioni/ars-utils/core';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { ExtendedModule } from '@ngbracket/ngx-layout/extended';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\nimport { MatBadgeModule } from '@angular/material/badge';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatDialogTitle, MatDialogClose, MatDialogContent, MatDialogActions } from '@angular/material/dialog';\r\nimport { FlexModule } from '@ngbracket/ngx-layout/flex';\r\n\r\n@Component({\r\n host: { 'Bind': SystemUtils.generateUUID() },\r\n templateUrl: './notifications-browser.component.html',\r\n styleUrls: ['./notifications-browser.component.scss'],\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [FlexModule, MatDialogTitle, MatButtonModule, MatTooltipModule, MatDialogClose,\r\n MatIconModule, MatFormFieldModule, MatInputModule, FormsModule, MatMenuModule, MatBadgeModule, MatDividerModule, MatDialogContent,\r\n ExtendedModule, MatCheckboxModule, MatDialogActions, MatPaginatorModule, FormatPipe, SupportNotificationComponent]\r\n})\r\nexport class SupportNotificationsBrowserComponent\r\n implements OnInit, OnDestroy, AfterViewInit {\r\n\r\n @ViewChild('paginator') paginator!: MatPaginator;\r\n @ViewChild('contextMenuTrigger') contextMenu!: MatMenuTrigger;\r\n\r\n\r\n protected screenService = inject(ScreenService);\r\n private supportService = inject(SupportService);\r\n private broadcastService = inject(BroadcastService);\r\n private dialogService = inject(DialogService);\r\n private unsubscribe: Subject<void> = new Subject<void>();\r\n\r\n protected selection = new SelectableModel<any, number>(true, 'id');\r\n protected searchParams: SupportNotificationsSearchParams = {\r\n first: 0,\r\n count: 25\r\n };\r\n protected total = signal<number>(-1);\r\n protected items = signal<any>(null);\r\n protected contextMenuPosition = { x: '0px', y: '0px' };\r\n\r\n\r\n ngOnInit(): void {\r\n // React to window size change\r\n fromEvent(window, 'resize')\r\n .pipe(takeUntil(this.unsubscribe), debounceTime(250))\r\n .subscribe(() => {\r\n this.resize();\r\n });\r\n\r\n // React to message broadcasting\r\n this.broadcastService.getMessage()\r\n .pipe(takeUntil(this.unsubscribe))\r\n .subscribe((message: any) => {\r\n if (message.id === SupportMessages.NOTIFICATION_READ) {\r\n const item = SystemUtils.arrayFindByKey(\r\n this.items,\r\n 'id',\r\n message.data\r\n );\r\n if (item) {\r\n item.isRead = true;\r\n }\r\n }\r\n });\r\n }\r\n\r\n\r\n ngOnDestroy(): void {\r\n this.unsubscribe.next();\r\n this.unsubscribe.complete();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.resize();\r\n this.find();\r\n }\r\n\r\n\r\n /**\r\n * Resize dialog\r\n */\r\n private resize() {\r\n setTimeout(() => {\r\n let elem = document.getElementById('notifications-browser-scrollable');\r\n if (elem) {\r\n const height = this.dialogService.getCurrentDialogScrollableHeight(\r\n ['notifications-browser-fixed'],\r\n window.innerHeight\r\n );\r\n if (height != elem.clientHeight) {\r\n elem.setAttribute('style', 'height:' + height + 'px !important;max-height:' + height + 'px !important');\r\n }\r\n } else {\r\n this.resize();\r\n }\r\n }, 0);\r\n }\r\n\r\n protected onContextMenu(event: MouseEvent, item: any) {\r\n event.preventDefault();\r\n this.contextMenuPosition.x = event.clientX + 'px';\r\n this.contextMenuPosition.y = event.clientY + 'px';\r\n this.contextMenu.menuData = { item: item };\r\n this.contextMenu.openMenu();\r\n }\r\n\r\n /**\r\n * Update scroll\r\n */\r\n private updateScroll() {\r\n // Scroll to top\r\n let elem = document.getElementById('notifications-browser-scroller');\r\n if (elem) elem.parentElement.scrollTop = 0;\r\n }\r\n\r\n /**\r\n * Update menu buttons visibility when the menu is closed\r\n */\r\n protected updateMenuButtonsVisibility() {\r\n this.items()?.forEach((n: any) => {\r\n n.isMenuOpen = false;\r\n });\r\n }\r\n\r\n /**\r\n * Get all selected ids\r\n * @returns: the selected ids as an array\r\n */\r\n private getSeletectIds(): number[] {\r\n if (this.selection?.all?.length > 50) {\r\n this.dialogService.error('La selezione non può contenere più di 50 elementi.');\r\n return null;\r\n }\r\n let ids: number[] = [];\r\n if (this.selection?.all?.length > 0) {\r\n this.selection?.all?.forEach((n: any) => {\r\n ids.push(n.id);\r\n });\r\n }\r\n return ids;\r\n }\r\n\r\n /**\r\n* Return item state css class\r\n* @param item : the item to evaluate\r\n*/\r\n protected getItemStateCssClass(item: any) {\r\n if (!item.isRead) return 'unread-bg';\r\n return null;\r\n }\r\n\r\n /**\r\n * Return the item state tooltip text\r\n * @param item : the item to evaluate\r\n */\r\n protected getItemStateTooltip(item: any): string {\r\n if (!item.isRead) return 'Non letto';\r\n return '';\r\n }\r\n\r\n /**\r\n * Perform a new search\r\n */\r\n protected find() {\r\n this.searchParams.first = 0;\r\n if (this.paginator) {\r\n this.paginator.pageIndex = 0;\r\n }\r\n this.fetch();\r\n }\r\n\r\n /**\r\n * Retrieve data\r\n */\r\n private fetch() {\r\n if (!this.supportService.loggedIn()) return;\r\n this.dialogService.busy('Caricamento in corso...');\r\n this.supportService.queryNotifications(this.searchParams)\r\n .subscribe({\r\n next: (r: any) => {\r\n if (!r.success) {\r\n this.dialogService.error(r.message);\r\n } else {\r\n this.items.set(r.value?.items ?? []);\r\n this.total.set(r.value?.total ?? 0);\r\n this.updateScroll();\r\n }\r\n },\r\n complete: () => {\r\n this.dialogService.clearBusy();\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Show a new page result\r\n * @param e : the MatPaginator PageEvent data\r\n */\r\n protected fetchMore(e: any) {\r\n let first = e.pageIndex * this.searchParams.count;\r\n this.searchParams.first = first;\r\n this.fetch();\r\n }\r\n\r\n\r\n /**\r\n * Mark a notification as read or unread\r\n * @param item : the item to set or null to use selection\r\n * @param unmark : true to set as unread or false to set as read\r\n */\r\n protected mark(item: any = null, unmark: boolean = false) {\r\n if (!this.supportService.loggedIn()) return;\r\n if (!item && !this.selection?.all?.length) return;\r\n const ids: number[] = item ? [item.id] : this.getSeletectIds();\r\n this.dialogService.busy('Aggiornamento in corso...');\r\n this.supportService.markNotifications({\r\n ids: ids,\r\n unmark: unmark\r\n })\r\n .subscribe({\r\n next: (r: any) => {\r\n if (!r.success) {\r\n this.dialogService.error(r.message);\r\n } else {\r\n ids.forEach((id: number) => {\r\n const i = SystemUtils.arrayFindIndexByKey(\r\n this.items,\r\n 'id',\r\n id\r\n );\r\n if (i !== -1) {\r\n this.items()[i].isRead = !unmark;\r\n }\r\n });\r\n this.selection.clear();\r\n this.supportService.countUnreadNotifications();\r\n }\r\n },\r\n complete: () => {\r\n this.dialogService.clearBusy();\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Display a notification\r\n * @param item : the item to display\r\n */\r\n protected show(item: any) {\r\n this.dialogService.open(SupportNotificationComponent, {\r\n ariaLabel: 'visualizza notifica',\r\n autoFocus: false,\r\n restoreFocus: false,\r\n disableClose: true,\r\n data: { id: item.id },\r\n minWidth: '375px',\r\n maxWidth: '900px',\r\n width: '99%',\r\n height: '99%'\r\n });\r\n }\r\n\r\n}\r\n","<div class=\"notifications-browser-fixed\">\r\n <div class=\"notifications-browser-header\">\r\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"10px\" fxFill >\r\n <div fxFlex=\"*\">\r\n <h2 mat-dialog-title>Novità e informazioni</h2>\r\n </div>\r\n <div fxLayoutAlign=\"end\">\r\n <button fxFlexAlign=\"start\" type=\"button\" mat-icon-button matTooltip=\"Chiudi\" aria-label=\"Chiudi\"\r\n [mat-dialog-close]=\"true\" class=\"dialog-close\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <div style=\"padding-left: 24px; padding-right: 24px; padding-bottom: 10px;\">\r\n <div fxLayout=\"row wrap\" fxFill fxLayoutAlign=\"space-between\">\r\n <div fxFlex=\"200px\" fxFlexAlign=\"end\">\r\n <mat-form-field style=\"width:200px\" subscriptSizing=\"dynamic\" appearance=\"outline\">\r\n <mat-label>Cerca</mat-label>\r\n <input matInput #searchInput=\"matInput\" type=\"text\" [(ngModel)]=\"searchParams.any\" maxlength=\"200\"\r\n (keyup.Enter)=\"find()\" autofocus placeholder=\"Inserisci testo + INVIO...\" />\r\n @if (searchParams.any) {\r\n <button type=\"button\" tabindex=\"-1\" matSuffix mat-icon-button aria-label=\"Pulisci\"\r\n (click)=\"searchParams.any = ''\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n </mat-form-field>\r\n </div>\r\n <div fxFlex=\"*\" fxLayoutAlign=\"end\">\r\n <div fxFlexAlign=\"center\">\r\n @if (selection?.hasValue()) {\r\n <button type=\"button\" mat-button matTooltip=\"Azioni da eseguire sugli elementi selezionati\"\r\n [attr.aria-label]=\"'Menu opzioni per elementi selezionati'\" [matMenuTriggerFor]=\"menuSelections\">\r\n <mat-icon aria-hidden=\"false\" [matBadge]=\"selection?.all.length\">checklist</mat-icon>\r\n </button>\r\n }\r\n <mat-menu #menuSelections=\"matMenu\">\r\n <button mat-menu-item (click)=\"selection?.clear()\" [attr.aria-label]=\"'Deseleziona tutti'\">\r\n <mat-icon>clear</mat-icon>Deseleziona tutti\r\n </button>\r\n <mat-divider></mat-divider>\r\n <button mat-menu-item [attr.aria-label]=\"'Segna come da leggere'\" (click)=\"mark(null, true)\">\r\n <mat-icon>outlined_flag</mat-icon>Segna come da leggere\r\n </button>\r\n <button mat-menu-item [attr.aria-label]=\"'Segna come già letto'\" (click)=\"mark(null)\">\r\n <mat-icon>flag</mat-icon>Segna come già letto\r\n </button>\r\n </mat-menu>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n<div mat-dialog-content id=\"notifications-browser-scrollable\">\r\n <div id=\"notifications-browser-scroller\">\r\n @if (total() === 0) {\r\n <div>\r\n <p class=\"message\"><i>Nessun elemento da visualizzare.</i></p>\r\n </div>\r\n } @else {\r\n <div>\r\n @for (item of items(); track item.id; let i = $index) {\r\n <div (mouseenter)=\"item.isOver = true;\" (mouseleave)=\"item.isOver = false\"\r\n (contextmenu)=\"onContextMenu($event, item)\">\r\n <div class=\"news\" fxLayout=\"row\" fxLayoutGap=\"6px\" fxFill [ngClass]=\"{'news-selected': selection?.isSelected(item.id), \r\n 'news-read': item.isRead}\">\r\n <div fxFlex=\"6px\" [ngClass]=\"getItemStateCssClass(item)\" [matTooltip]=\"getItemStateTooltip(item)\">\r\n </div>\r\n <div fxFlex=\"48px\" fxFlexAlign=\"center\" fxLayoutAlign=\"center\">\r\n @if (screenService.isTouchable || item.isOver || selection?.isSelected(item.id)) {\r\n <mat-checkbox (change)=\"$event ? selection?.toggle(item, item.id) : null\"\r\n [checked]=\"selection?.isSelected(item.id)\">\r\n </mat-checkbox>\r\n }\r\n </div>\r\n <div fxFlex=\"*\" fxFlexAlign=\"center\" (click)=\"show(item); $event.stopPropagation()\">\r\n <div class=\"info-1 uppercase\">\r\n {{ (item.publishingDate ?? item.created) | format:'D':'dd/MM/yyyy'}}</div>\r\n <div>{{item.title}}</div>\r\n <div class=\"info-2 uppercase\">\r\n {{item.productNames}}\r\n @if (item.productModulesNames) {\r\n <span> | {{item.productModulesNames}}</span>\r\n }\r\n </div>\r\n </div>\r\n <div fxFlex=\"50px\" fxFlexAlign=\"center\">\r\n @if (item.isOver || item.isMenuOpen || selection?.isSelected(item.id)) {\r\n <button type=\"button\" mat-icon-button matTooltip=\"Menu\" [attr.aria-label]=\"'Menu opzioni'\"\r\n [matMenuTriggerFor]=\"contextMenu\" [matMenuTriggerData]=\"{item: item}\" (click)=\"item.isMenuOpen = true\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n <div #contextMenuTrigger=\"matMenuTrigger\" style=\"position: fixed\" [style.left]=\"contextMenuPosition.x\"\r\n [style.top]=\"contextMenuPosition.y\" [matMenuTriggerFor]=\"contextMenu\">\r\n </div>\r\n <mat-menu #contextMenu=\"matMenu\" (closed)=\"updateMenuButtonsVisibility()\">\r\n <ng-template matMenuContent let-item=\"item\">\r\n @if (item.isRead) {\r\n <button mat-menu-item [attr.aria-label]=\"'Segna come da leggere'\" (click)=\"mark(item, true)\">\r\n <mat-icon>flag</mat-icon>Segna come da leggere\r\n </button>\r\n }\r\n @if (!item.isRead) {\r\n <button mat-menu-item [attr.aria-label]=\"'Segna come da già letto'\" (click)=\"mark(item)\">\r\n <mat-icon>outlined_flag</mat-icon>Segna come già letto\r\n </button>\r\n }\r\n </ng-template>\r\n </mat-menu>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n<div mat-dialog-actions class=\"notifications-browser-fixed\">\r\n <div fxLayout=\"row wrap\" fxLayoutGap=\"10px\" fxLayoutAlign=\"space-between\" fxFill>\r\n <!-- legend -->\r\n <div fxFlex.lt-md=\"100\" class=\"legend-container\">\r\n <div class=\"legend unread-bg\"></div>\r\n da leggere\r\n </div>\r\n <div fxFlex.lt-md=\"100\" fxLayoutAlign=\"end\">\r\n <mat-paginator #paginator [hidePageSize]=\"true\" [length]=\"total()\" [pageSize]=\"searchParams.count\"\r\n [showFirstLastButtons]=\"true\" (page)=\"fetchMore($event)\"></mat-paginator>\r\n </div>\r\n </div>\r\n</div>","/*\r\n * Public API Surface of ars-utils\r\n */\r\nexport * from './ui/notifications-browser/notifications-browser.component';\r\n\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i5","i8"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAmCa,4BAA4B,CAAA;AATzC,IAAA,WAAA,GAAA;AAYY,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;AACxC,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AACxC,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAC3C,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAC5C,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;AACtC,QAAA,IAAA,CAAA,UAAU,GAA4B,MAAM,CAAC,eAAe,CAAC,CAAC;QAE5D,IAAE,CAAA,EAAA,GAAW,CAAC,CAAC,CAAC;QAChB,IAAI,CAAA,IAAA,GAAe,IAAI,CAAC;AAwEnC,KAAA;IAtEC,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;SAC9B;QACD,IAAI,CAAC,KAAK,EAAE,CAAC;KACd;IACD,eAAe,GAAA;QACb,IAAI,CAAC,MAAM,EAAE,CAAC;KACf;AAED;;AAEG;IACK,MAAM,GAAA;QACZ,UAAU,CAAC,MAAK;YACd,IAAI,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,yBAAyB,CAAC,CAAC;YAC9D,IAAI,IAAI,EAAE;AACR,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,gCAAgC,CAChE,CAAC,4BAA4B,CAAC,EAC9B,MAAM,CAAC,WAAW,CACnB,CAAC;AACF,gBAAA,IAAI,MAAM,IAAI,IAAI,CAAC,YAAY,EAAE;AAC/B,oBAAA,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,SAAS,GAAG,MAAM,GAAG,2BAA2B,GAAG,MAAM,GAAG,eAAe,CAAC,CAAC;iBACzG;aACF;iBAAM;gBACL,IAAI,CAAC,MAAM,EAAE,CAAC;aACf;SACF,EAAE,CAAC,CAAC,CAAC;KACP;AAGD;;AAEG;IACK,KAAK,GAAA;AACX,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;YAAE,OAAO;AAC5C,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACnD,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;AACzC,aAAA,SAAS,CAAC;AACT,YAAA,IAAI,EAAE,CAAC,CAAC,KAAI;AACV,gBAAA,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE;oBACd,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;iBACrC;qBAAM;AACL,oBAAA,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC;AACpB,oBAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,eAAe,CAAC,iBAAiB,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACnF,oBAAA,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;iBACpC;aACF;YACD,QAAQ,EAAE,MAAK;AACb,gBAAA,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC;aAChC;AACF,SAAA,CAAC,CAAC;KACN;AAED;;;AAGG;AACO,IAAA,gBAAgB,CAAC,IAAS,EAAA;AAClC,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;YAAE,OAAO;AAC5C,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,cAAc,CAAC,2BAA2B,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC;AACjE,gBAAA,IAAI,EAAE,CAAC,CAAM,KAAI;oBACf,MAAM,CAAC,CAAC,CAAC,CAAC;iBACX;AACF,aAAA,CAAC,CAAC;SACJ;;YACC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;KACnC;8GAjFU,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA5B,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EARvB,WAAW,CAAC,YAAY,EAAE,EC3B5C,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,w7DAkDM,EDlBM,MAAA,EAAA,CAAA,i3GAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,UAAU,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,4OAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,sRAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,2BAAA,EAAA,QAAA,EAAA,kTAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,sRAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,gNAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,WAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,cAAc,EAAE,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,wUAAE,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,cAAc,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,8DAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACtH,gBAAgB,EAAA,QAAA,EAAA,8DAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,4BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,YAAY,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAEpC,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBATxC,SAAS;2BACF,EAAE,MAAM,EAAE,WAAW,CAAC,YAAY,EAAE,EAAE,EAGhC,UAAA,EAAA,IAAI,EACC,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACtC,OAAA,EAAA,CAAC,UAAU,EAAE,cAAc,EAAE,eAAe,EAAE,gBAAgB,EAAE,cAAc,EAAE,aAAa,EAAE,gBAAgB;AACtH,wBAAA,gBAAgB,EAAE,aAAa,EAAE,YAAY,CAAC,EAAA,QAAA,EAAA,w7DAAA,EAAA,MAAA,EAAA,CAAA,i3GAAA,CAAA,EAAA,CAAA;;;MESrC,oCAAoC,CAAA;AAVjD,IAAA,WAAA,GAAA;AAiBY,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;AACxC,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AACxC,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAC5C,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;AACtC,QAAA,IAAA,CAAA,WAAW,GAAkB,IAAI,OAAO,EAAQ,CAAC;QAE/C,IAAS,CAAA,SAAA,GAAG,IAAI,eAAe,CAAc,IAAI,EAAE,IAAI,CAAC,CAAC;AACzD,QAAA,IAAA,CAAA,YAAY,GAAqC;AACzD,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,KAAK,EAAE,EAAE;SACV,CAAC;AACQ,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAS,CAAC,CAAC,CAAC,CAAC;AAC3B,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAM,IAAI,CAAC,CAAC;QAC1B,IAAmB,CAAA,mBAAA,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC;AAgOxD,KAAA;IA7NC,QAAQ,GAAA;;AAEN,QAAA,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC;AACxB,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC;aACpD,SAAS,CAAC,MAAK;YACd,IAAI,CAAC,MAAM,EAAE,CAAC;AAChB,SAAC,CAAC,CAAC;;AAGL,QAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE;AAC/B,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACjC,aAAA,SAAS,CAAC,CAAC,OAAY,KAAI;YAC1B,IAAI,OAAO,CAAC,EAAE,KAAK,eAAe,CAAC,iBAAiB,EAAE;AACpD,gBAAA,MAAM,IAAI,GAAG,WAAW,CAAC,cAAc,CACrC,IAAI,CAAC,KAAK,EACV,IAAI,EACJ,OAAO,CAAC,IAAI,CACb,CAAC;gBACF,IAAI,IAAI,EAAE;AACR,oBAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;iBACpB;aACF;AACH,SAAC,CAAC,CAAC;KACN;IAGD,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;KAC7B;IAED,eAAe,GAAA;QACb,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,IAAI,CAAC,IAAI,EAAE,CAAC;KACb;AAGD;;AAEG;IACK,MAAM,GAAA;QACZ,UAAU,CAAC,MAAK;YACd,IAAI,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,kCAAkC,CAAC,CAAC;YACvE,IAAI,IAAI,EAAE;AACR,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,gCAAgC,CAChE,CAAC,6BAA6B,CAAC,EAC/B,MAAM,CAAC,WAAW,CACnB,CAAC;AACF,gBAAA,IAAI,MAAM,IAAI,IAAI,CAAC,YAAY,EAAE;AAC/B,oBAAA,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,SAAS,GAAG,MAAM,GAAG,2BAA2B,GAAG,MAAM,GAAG,eAAe,CAAC,CAAC;iBACzG;aACF;iBAAM;gBACL,IAAI,CAAC,MAAM,EAAE,CAAC;aACf;SACF,EAAE,CAAC,CAAC,CAAC;KACP;IAES,aAAa,CAAC,KAAiB,EAAE,IAAS,EAAA;QAClD,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,IAAI,CAAC,mBAAmB,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;QAClD,IAAI,CAAC,mBAAmB,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;QAClD,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAC3C,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;KAC7B;AAED;;AAEG;IACK,YAAY,GAAA;;QAElB,IAAI,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,gCAAgC,CAAC,CAAC;AACrE,QAAA,IAAI,IAAI;AAAE,YAAA,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,CAAC,CAAC;KAC5C;AAED;;AAEG;IACO,2BAA2B,GAAA;QACnC,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC,CAAM,KAAI;AAC/B,YAAA,CAAC,CAAC,UAAU,GAAG,KAAK,CAAC;AACvB,SAAC,CAAC,CAAC;KACJ;AAED;;;AAGK;IACG,cAAc,GAAA;QACpB,IAAI,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,EAAE,EAAE;AACpC,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;AAC/E,YAAA,OAAO,IAAI,CAAC;SACb;QACD,IAAI,GAAG,GAAa,EAAE,CAAC;QACvB,IAAI,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE;YACnC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAM,KAAI;AACtC,gBAAA,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACjB,aAAC,CAAC,CAAC;SACJ;AACD,QAAA,OAAO,GAAG,CAAC;KACZ;AAED;;;AAGA;AACU,IAAA,oBAAoB,CAAC,IAAS,EAAA;QACtC,IAAI,CAAC,IAAI,CAAC,MAAM;AAAE,YAAA,OAAO,WAAW,CAAC;AACrC,QAAA,OAAO,IAAI,CAAC;KACb;AAED;;;AAGG;AACO,IAAA,mBAAmB,CAAC,IAAS,EAAA;QACrC,IAAI,CAAC,IAAI,CAAC,MAAM;AAAE,YAAA,OAAO,WAAW,CAAC;AACrC,QAAA,OAAO,EAAE,CAAC;KACX;AAED;;AAEG;IACO,IAAI,GAAA;AACZ,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,CAAC,CAAC;AAC5B,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC,CAAC;SAC9B;QACD,IAAI,CAAC,KAAK,EAAE,CAAC;KACd;AAED;;AAEG;IACK,KAAK,GAAA;AACX,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;YAAE,OAAO;AAC5C,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACnD,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC;AACtD,aAAA,SAAS,CAAC;AACT,YAAA,IAAI,EAAE,CAAC,CAAM,KAAI;AACf,gBAAA,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE;oBACd,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;iBACrC;qBAAM;AACL,oBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;AACrC,oBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC;oBACpC,IAAI,CAAC,YAAY,EAAE,CAAC;iBACrB;aACF;YACD,QAAQ,EAAE,MAAK;AACb,gBAAA,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC;aAChC;AACF,SAAA,CAAC,CAAC;KACN;AAED;;;AAGG;AACO,IAAA,SAAS,CAAC,CAAM,EAAA;QACxB,IAAI,KAAK,GAAG,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;AAClD,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,KAAK,CAAC;QAChC,IAAI,CAAC,KAAK,EAAE,CAAC;KACd;AAGD;;;;AAIG;AACO,IAAA,IAAI,CAAC,IAAA,GAAY,IAAI,EAAE,SAAkB,KAAK,EAAA;AACtD,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;YAAE,OAAO;QAC5C,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,MAAM;YAAE,OAAO;AAClD,QAAA,MAAM,GAAG,GAAa,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AAC/D,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;AACrD,QAAA,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC;AACpC,YAAA,GAAG,EAAE,GAAG;AACR,YAAA,MAAM,EAAE,MAAM;SACf,CAAC;AACC,aAAA,SAAS,CAAC;AACT,YAAA,IAAI,EAAE,CAAC,CAAM,KAAI;AACf,gBAAA,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE;oBACd,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;iBACrC;qBAAM;AACL,oBAAA,GAAG,CAAC,OAAO,CAAC,CAAC,EAAU,KAAI;AACzB,wBAAA,MAAM,CAAC,GAAG,WAAW,CAAC,mBAAmB,CACvC,IAAI,CAAC,KAAK,EACV,IAAI,EACJ,EAAE,CACH,CAAC;AACF,wBAAA,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;4BACZ,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC;yBAClC;AACH,qBAAC,CAAC,CAAC;AACH,oBAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;AACvB,oBAAA,IAAI,CAAC,cAAc,CAAC,wBAAwB,EAAE,CAAC;iBAChD;aACF;YACD,QAAQ,EAAE,MAAK;AACb,gBAAA,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC;aAChC;AACF,SAAA,CAAC,CAAC;KACN;AAED;;;AAGG;AACO,IAAA,IAAI,CAAC,IAAS,EAAA;AACtB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,4BAA4B,EAAE;AACpD,YAAA,SAAS,EAAE,qBAAqB;AAChC,YAAA,SAAS,EAAE,KAAK;AAChB,YAAA,YAAY,EAAE,KAAK;AACnB,YAAA,YAAY,EAAE,IAAI;AAClB,YAAA,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE;AACrB,YAAA,QAAQ,EAAE,OAAO;AACjB,YAAA,QAAQ,EAAE,OAAO;AACjB,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,MAAM,EAAE,KAAK;AACd,SAAA,CAAC,CAAC;KACJ;8GAlPU,oCAAoC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oCAAoC,8EAT/B,WAAW,CAAC,YAAY,EAAE,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjC5C,shNAmIM,ED7FM,MAAA,EAAA,CAAA,6xIAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,UAAU,giGAAE,cAAc,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,gBAAgB,6TAAE,cAAc,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACrF,aAAa,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,kBAAkB,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,+CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,cAAc,0WAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,4EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,4BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,cAAc,2PAAE,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EACjI,QAAA,EAAA,8DAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,cAAc,kiBAAE,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,eAAA,EAAA,MAAA,EAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAE,QAAA,EAAA,8DAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,kBAAkB,gSAAE,UAAU,EAAA,IAAA,EAAA,QAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAE1E,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBAVhD,SAAS;2BACF,EAAE,MAAM,EAAE,WAAW,CAAC,YAAY,EAAE,EAAE,EAGhC,UAAA,EAAA,IAAI,EACC,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,UAAU,EAAE,cAAc,EAAE,eAAe,EAAE,gBAAgB,EAAE,cAAc;AACrF,wBAAA,aAAa,EAAE,kBAAkB,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,gBAAgB;wBACjI,cAAc,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,UAAU,EAAE,4BAA4B,CAAC,EAAA,QAAA,EAAA,shNAAA,EAAA,MAAA,EAAA,CAAA,6xIAAA,CAAA,EAAA,CAAA;8BAK5F,SAAS,EAAA,CAAA;sBAAhC,SAAS;uBAAC,WAAW,CAAA;gBACW,WAAW,EAAA,CAAA;sBAA3C,SAAS;uBAAC,oBAAoB,CAAA;;;AE9CjC;;AAEG;;ACFH;;AAEG;;;;"}
@@ -1582,18 +1582,18 @@ class FilePreviewComponent {
1582
1582
  * Resize
1583
1583
  */
1584
1584
  resize() {
1585
- let elem = document.getElementById('filepreview-scrollable');
1586
- if (elem) {
1587
- const height = this.dialogService.getCurrentDialogScrollableHeight(['filepreview-fixed'], window.innerHeight);
1588
- if (height != elem.clientHeight) {
1589
- elem.setAttribute('style', 'height:' + height + 'px !important;max-height:' + height + 'px !important');
1585
+ setTimeout(() => {
1586
+ let elem = document.getElementById('filepreview-scrollable');
1587
+ if (elem) {
1588
+ const height = this.dialogService.getCurrentDialogScrollableHeight(['filepreview-fixed'], window.innerHeight);
1589
+ if (height != elem.clientHeight) {
1590
+ elem.setAttribute('style', 'height:' + height + 'px !important;max-height:' + height + 'px !important');
1591
+ }
1590
1592
  }
1591
- }
1592
- else {
1593
- setTimeout(() => {
1593
+ else {
1594
1594
  this.resize();
1595
- }, 100);
1596
- }
1595
+ }
1596
+ }, 0);
1597
1597
  }
1598
1598
  /**
1599
1599
  * Download manually