c3-components 0.8.4 → 0.8.6

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.
@@ -1 +1 @@
1
- {"version":3,"file":"c3-components.mjs","sources":["../../../projects/c3-components/src/lib/c3-dropdown/components/c3-dropdown.component.ts","../../../projects/c3-components/src/lib/c3-dropdown/directives/c3-dropdown.trigger.ts","../../../projects/c3-components/src/lib/c3-dropdown/c3-dropdown.module.ts","../../../projects/c3-components/src/lib/c3-dialog/components/c3-dialog-confirm.component.ts","../../../projects/c3-components/src/lib/c3-dialog/components/c3-dialog-prompt.component.ts","../../../projects/c3-components/src/lib/c3-dialog/components/c3-dialog-embed-child.component.ts","../../../projects/c3-components/src/lib/c3-dialog/services/c3-dialog.service.ts","../../../projects/c3-components/src/lib/c3-dialog/c3-dialog.module.ts","../../../projects/c3-components/src/lib/c3-file-viewer/directives/full-screen.directive.ts","../../../projects/c3-components/src/lib/c3-file-viewer/components/c3-file-viewer-actions/c3-file-viewer-actions.component.ts","../../../projects/c3-components/src/lib/c3-file-viewer/components/c3-file-viewer-actions/c3-file-viewer-actions.component.html","../../../projects/c3-components/src/lib/c3-safe-url/pipes/c3-safe-url.pipe.ts","../../../projects/c3-components/src/lib/c3-file-viewer/components/c3-file-viewer-image/c3-file-viewer-image.component.ts","../../../projects/c3-components/src/lib/c3-file-viewer/components/c3-file-viewer-image/c3-file-viewer-image.component.html","../../../projects/c3-components/src/lib/c3-file-viewer/components/c3-file-viewer-pdf/c3-file-viewer-pdf.component.ts","../../../projects/c3-components/src/lib/c3-file-viewer/components/c3-file-viewer-pdf/c3-file-viewer-pdf.component.html","../../../projects/c3-components/src/lib/c3-file-viewer/components/c3-file-viewer-video/c3-file-viewer-video.component.ts","../../../projects/c3-components/src/lib/c3-file-viewer/components/c3-file-viewer-video/c3-file-viewer-video.component.html","../../../projects/c3-components/src/lib/c3-file-viewer/components/public/c3-file-viewer/c3-file-viewer.component.ts","../../../projects/c3-components/src/lib/c3-file-viewer/components/public/c3-file-viewer/c3-file-viewer.component.html","../../../projects/c3-components/src/lib/c3-file-viewer/consts/default.config.ts","../../../projects/c3-components/src/lib/c3-file-viewer/models/custom-file-event.model.ts","../../../projects/c3-components/src/lib/c3-file-viewer/models/file-viewer.ts","../../../projects/c3-components/src/lib/c3-file-viewer/components/public/c3-file-viewer-dialog/c3-file-viewer-dialog.ts","../../../projects/c3-components/src/lib/c3-file-viewer/components/public/c3-file-viewer-dialog/c3-file-viewer-dialog.component.ts","../../../projects/c3-components/src/lib/c3-file-viewer/c3-file-viewer.module.ts","../../../projects/c3-components/src/lib/c3-file-displayer/c3-file-display-card/c3-file-display-card.component.ts","../../../projects/c3-components/src/lib/c3-file-displayer/c3-file-display-card/c3-file-display-card.component.html","../../../projects/c3-components/src/lib/c3-file-displayer/c3-file-display-grid/c3-file-display-grid.component.ts","../../../projects/c3-components/src/lib/c3-file-displayer/c3-file-display-grid/c3-file-display-grid.component.html","../../../projects/c3-components/src/lib/c3-file-displayer/c3-file-display-icon/c3-file-display-icon.component.ts","../../../projects/c3-components/src/lib/c3-file-displayer/c3-file-display-icon/c3-file-display-icon.component.html","../../../projects/c3-components/src/lib/c3-file-displayer/c3-file-display-list/c3-file-display-list.component.ts","../../../projects/c3-components/src/lib/c3-file-displayer/c3-file-display-list/c3-file-display-list.component.html","../../../projects/c3-components/src/lib/c3-file-displayer/c3-file-displayer.module.ts","../../../projects/c3-components/src/lib/c3-expansion/components/c3-expansion-header/c3-expansion-header.component.ts","../../../projects/c3-components/src/lib/c3-expansion/components/c3-expansion-header/c3-expansion-header.component.html","../../../projects/c3-components/src/lib/c3-auto-animate/c3-auto-animate.directive.ts","../../../projects/c3-components/src/lib/c3-expansion/components/c3-expansion/c3-expansion.component.ts","../../../projects/c3-components/src/lib/c3-expansion/components/c3-expansion/c3-expansion.component.html","../../../projects/c3-components/src/lib/c3-expansion/c3-expansion.module.ts","../../../projects/c3-components/src/lib/c3-select-on-focus/c3-select-on-focus.directive.ts","../../../projects/c3-components/src/lib/c3-signals/c3-boolean-signal.ts","../../../projects/c3-components/src/lib/c3-tree/c3-tree.component.ts","../../../projects/c3-components/src/lib/c3-tree/c3-tree.component.html","../../../projects/c3-components/src/lib/c3-flowing-menu/components/c3-flowing-menu-item/c3-flowing-menu-item.component.ts","../../../projects/c3-components/src/lib/c3-flowing-menu/components/c3-flowing-menu-item/c3-flowing-menu-item.component.html","../../../projects/c3-components/src/lib/c3-flowing-menu/components/c3-flowing-menu/c3-flowing-menu.component.ts","../../../projects/c3-components/src/lib/c3-flowing-menu/components/c3-flowing-menu/c3-flowing-menu.component.html","../../../projects/c3-components/src/lib/c3-flowing-menu/components/c3-flowing-menu-item-content/c3-flowing-menu-item-content.component.ts","../../../projects/c3-components/src/lib/c3-flowing-menu/components/c3-flowing-menu-item-content/c3-flowing-menu-item-content.component.html","../../../projects/c3-components/src/lib/c3-flowing-menu/c3-flowing-menu.module.ts","../../../projects/c3-components/src/lib/c3-trace-card/components/c3-trace-card/c3-trace-card.component.ts","../../../projects/c3-components/src/lib/c3-trace-card/components/c3-trace-card/c3-trace-card.component.html","../../../projects/c3-components/src/lib/c3-trace-card/components/c3-trace-card-title/c3-trace-card-title.component.ts","../../../projects/c3-components/src/lib/c3-trace-card/components/c3-trace-card-title/c3-trace-card-title.component.html","../../../projects/c3-components/src/lib/c3-trace-card/components/c3-trace-card-content/c3-trace-card-content.component.ts","../../../projects/c3-components/src/lib/c3-trace-card/components/c3-trace-card-content/c3-trace-card-content.component.html","../../../projects/c3-components/src/lib/c3-trace-card/directives/align-left.directive.ts","../../../projects/c3-components/src/lib/c3-trace-card/directives/align-right.directive.ts","../../../projects/c3-components/src/lib/c3-trace-card/c3-trace-card.module.ts","../../../projects/c3-components/src/public-api.ts","../../../projects/c3-components/src/c3-components.ts"],"sourcesContent":["import {\n ChangeDetectorRef,\n Component,\n TemplateRef,\n ViewChild,\n Input,\n OnChanges,\n SimpleChanges,\n} from '@angular/core';\n\n@Component({\n selector: 'c3-dropdown',\n template: `\n <ng-template>\n <div class=\"c3-dropdown-panel\" [ngClass]=\"dropdownClass\">\n <ng-content></ng-content>\n </div>\n </ng-template>\n `,\n})\nexport class C3DropdownComponent implements OnChanges {\n @ViewChild(TemplateRef) template!: TemplateRef<any>;\n\n /** Classes to be added to the container of the content. Supports the same syntax as `ngClass`. */\n @Input()\n dropdownClass: string | string[] | Set<string> | { [key: string]: any } = '';\n\n constructor(private _changeDetectorRef: ChangeDetectorRef) {}\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['dropdownClass']) {\n this._markForCheck();\n }\n }\n\n _markForCheck(): void {\n this._changeDetectorRef.markForCheck();\n }\n}\n","import {\n Directive,\n forwardRef,\n ElementRef,\n ViewContainerRef,\n Input,\n OnDestroy,\n HostListener,\n OnChanges,\n SimpleChanges,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\n Overlay,\n OverlayRef,\n OverlayConfig,\n ConnectedPosition,\n} from '@angular/cdk/overlay';\nimport { C3DropdownComponent } from '../components/c3-dropdown.component';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { merge, Subject, Subscription, takeUntil } from 'rxjs';\n\nexport const MAT_DROPDOWN_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => C3DropdownTrigger),\n multi: true,\n};\n\n/**\n * @description The C3DropdownTrigger directive is used to display or hide a dropdown menu\n * C3DropdownComponent when an item is clicked.\n * @selector [c3Dropdown]\n * @exportAs c3DropdownTrigger\n * @input c3Dropdown - A reference to an instance of C3DropdownComponent.\n * @input c3DropdownDisabled - A boolean indicating whether the directive should be disabled.\n * @input c3DropdownClass - A string, an array of strings, a set of strings or a\n * object representing the CSS classes to be applied to the dropdown menu.\n */\n@Directive({\n selector: '[c3Dropdown]',\n exportAs: 'c3DropdownTrigger',\n providers: [MAT_DROPDOWN_VALUE_ACCESSOR],\n})\nexport class C3DropdownTrigger implements OnChanges, OnDestroy {\n private overlayRef?: OverlayRef | null;\n private _closingActionsSubscription: Subscription = Subscription.EMPTY;\n private _destroyed = new Subject<void>();\n\n private _dropdownClass:\n | string\n | string[]\n | Set<string>\n | { [key: string]: any } = '';\n\n private _dropdownDisabled: boolean = false;\n\n /** The dropdown menu instance */\n @Input('c3Dropdown')\n dropdown?: C3DropdownComponent;\n\n /** Whether the dropdown is disabled. */\n @Input('c3DropdownDisabled')\n get dropdownDisabled(): boolean {\n return this._dropdownDisabled;\n }\n set dropdownDisabled(value: boolean) {\n this._dropdownDisabled = coerceBooleanProperty(value);\n }\n\n /** Classes to be passed to the dropdown menu. Supports the same syntax as `ngClass`. */\n @Input('c3DropdownClass')\n dropdownClass: string | string[] | Set<string> | { [key: string]: any } = '';\n\n constructor(\n private _element: ElementRef<HTMLElement>,\n private _overlay: Overlay,\n private _viewContainerRef: ViewContainerRef\n ) {}\n\n @HostListener('click')\n onClick() {\n this.show();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['dropdownClass'] && this.dropdown) {\n this.dropdown.dropdownClass = this._dropdownClass;\n this.dropdown._markForCheck();\n }\n }\n\n ngOnDestroy() {\n this._destroyed.next();\n this._destroyed.complete();\n this._closingActionsSubscription.unsubscribe();\n this.close();\n }\n\n public show(): void {\n if (!this.dropdown) return;\n\n const overlayRef = this._overlay.create(this._getOverlayConfig());\n const portal = new TemplatePortal(\n this.dropdown.template,\n this._viewContainerRef\n );\n overlayRef.attach(portal);\n\n this.overlayRef = overlayRef;\n\n this._closingActionsSubscription = this._menuClosingActions().subscribe(\n () => this.close()\n );\n }\n\n public close(): void {\n if (this.overlayRef && this.overlayRef.hasAttached())\n this.overlayRef.detach();\n }\n\n private _getOverlayConfig(): OverlayConfig {\n const belowPosition: ConnectedPosition = {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n };\n const abovePosition: ConnectedPosition = {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n\n // The overlay edge connected to the trigger should have squared corners, while\n // the opposite end has rounded corners. We apply a CSS class to swap the\n // border-radius based on the overlay position.\n panelClass: 'mat-autocomplete-panel-above',\n };\n\n const positionStrategy = this._overlay\n .position()\n .flexibleConnectedTo(this._element)\n .withLockedPosition()\n .withPositions([belowPosition, abovePosition]);\n\n return new OverlayConfig({\n positionStrategy,\n backdropClass: 'cdk-overlay-transparent-backdrop',\n hasBackdrop: true,\n });\n }\n\n /** Returns a stream that emits whenever an action that should close the menu occurs. */\n private _menuClosingActions() {\n const backdrop = this.overlayRef!.backdropClick();\n const detachments = this.overlayRef!.detachments();\n\n return merge(backdrop, detachments).pipe(takeUntil(this._destroyed));\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { C3DropdownComponent } from './components/c3-dropdown.component';\nimport { C3DropdownTrigger } from './directives/c3-dropdown.trigger';\nimport { OverlayModule } from '@angular/cdk/overlay';\n\n@NgModule({\n imports: [CommonModule, OverlayModule],\n declarations: [C3DropdownComponent, C3DropdownTrigger],\n exports: [C3DropdownComponent, C3DropdownTrigger],\n})\nexport class C3DropdownModule {}\n","import { Component, Inject } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\n\r\nexport interface ConfirmConfig {\r\n text: string;\r\n placeholder?: string;\r\n reject?: {\r\n color?: string;\r\n text?: string;\r\n };\r\n accept?: {\r\n color?: string;\r\n text: string;\r\n };\r\n width?: string;\r\n}\r\n\r\n@Component({\r\n selector: 'ConfirmDialogComponent',\r\n template: `\r\n <mat-dialog-content>\r\n <div [innerHtml]=\"data.text\"></div>\r\n </mat-dialog-content>\r\n <mat-dialog-actions class=\"flex flex-row justify-end items-center\">\r\n <button mat-button mat-dialog-close [color]=\"data.reject?.color\">\r\n {{ data.reject?.text }}\r\n </button>\r\n <button mat-button [color]=\"data.accept?.color\" [mat-dialog-close]=\"true\">\r\n {{ data.accept?.text }}\r\n </button>\r\n </mat-dialog-actions>\r\n `,\r\n})\r\nexport class ConfirmDialogComponent {\r\n constructor(\r\n public dialogRef: MatDialogRef<ConfirmDialogComponent>,\r\n @Inject(MAT_DIALOG_DATA)\r\n public data: ConfirmConfig\r\n ) {}\r\n\r\n onNoClick(): void {\r\n this.dialogRef.close();\r\n }\r\n}\r\n","import { Component, Inject } from '@angular/core';\r\nimport { FormBuilder, FormControl, ValidatorFn } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\n\r\nexport interface PromptConfig {\r\n text: string;\r\n defaultValue?: string;\r\n placeholder?: string;\r\n multiline?: boolean;\r\n validators?: ValidatorFn | ValidatorFn[];\r\n required?: boolean;\r\n reject?: {\r\n color: string;\r\n text: string;\r\n };\r\n accept?: {\r\n color: string;\r\n text: string;\r\n };\r\n width?: string;\r\n maxWidth?: string;\r\n}\r\n\r\n@Component({\r\n selector: 'PrompDialogComponent',\r\n template: `\r\n <div mat-dialog-title>{{ data.text }}</div>\r\n <mat-dialog-content>\r\n <mat-form-field>\r\n <mat-label *ngIf=\"data.placeholder\">{{ data.placeholder }}</mat-label>\r\n <input\r\n *ngIf=\"!data.multiline\"\r\n matInput\r\n [formControl]=\"result\"\r\n (keydown.enter)=\"dialogRef.close(result.value)\"\r\n />\r\n <textarea\r\n *ngIf=\"data.multiline\"\r\n matInput\r\n [formControl]=\"result\"\r\n cdkTextareaAutosize\r\n ></textarea>\r\n </mat-form-field>\r\n </mat-dialog-content>\r\n <mat-dialog-actions align=\"center\">\r\n <button mat-raised-button mat-dialog-close [class]=\"data.reject?.color\">\r\n {{ data.reject?.text }}\r\n </button>\r\n <button\r\n mat-raised-button\r\n [disabled]=\"result.invalid || (data.required && !result.value)\"\r\n [class]=\"data.accept?.color\"\r\n [mat-dialog-close]=\"result.value\"\r\n >\r\n {{ data.accept?.text }}\r\n </button>\r\n </mat-dialog-actions>\r\n `,\r\n styles: [\r\n `\r\n mat-form-field {\r\n width: 100%;\r\n }\r\n `,\r\n ],\r\n})\r\nexport class C3PromptDialogComponent {\r\n result: FormControl;\r\n constructor(\r\n public dialogRef: MatDialogRef<C3PromptDialogComponent>,\r\n @Inject(MAT_DIALOG_DATA)\r\n public data: PromptConfig,\r\n private _fb: FormBuilder\r\n ) {\r\n this.result = this._fb.control(data.defaultValue, data.validators);\r\n }\r\n\r\n onNoClick(): void {\r\n this.dialogRef.close();\r\n }\r\n}\r\n","import { ComponentType } from '@angular/cdk/portal';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n Inject,\n Type,\n ViewChild,\n ViewContainerRef,\n signal,\n} from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\n@Component({\n selector: 'C3DialogEmbedChildComponent',\n template: `<mat-dialog-content>\n <mat-toolbar\n *ngIf=\"data.toolbar\"\n [color]=\"data.toolbar.color || 'default'\"\n class=\"py-1\"\n >\n <span>{{ data.toolbar.title }}</span>\n <span class=\"spacer\"></span>\n <button\n *ngIf=\"data.toolbar.closeBtn\"\n mat-icon-button\n mat-dialog-close\n color=\"{{ data.toolbar.closeColor }}\"\n >\n <mat-icon>close</mat-icon>\n </button>\n </mat-toolbar>\n <div class=\"dialog-content\">\n <ng-template #target></ng-template>\n </div>\n </mat-dialog-content>`,\n styles: [\n `\n mat-dialog-content {\n display: flex;\n flex-direction: column;\n height: 100%;\n\n .dialog-content {\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: auto;\n flex-grow: 1;\n }\n .mat-toolbar {\n display: flex;\n justify-content: space-between;\n align-items: center;\n border-radius: 0.25rem;\n span {\n color: inherit;\n }\n }\n .spacer {\n flex: 1 1 auto;\n min-width: 16px;\n }\n }\n `,\n ],\n})\nexport class C3DialogEmbedChildComponent<C> implements AfterViewInit {\n @ViewChild('target', { read: ViewContainerRef }) target!: ViewContainerRef;\n\n createdComponent = signal<ComponentRef<C> | null>(null);\n\n constructor(\n public dialogRef: MatDialogRef<C3DialogEmbedChildComponent<C>>,\n @Inject(MAT_DIALOG_DATA)\n public data: {\n component: ComponentType<C>;\n inputs?: Partial<Record<keyof C, unknown>>;\n toolbar?: {\n title: string;\n closeBtn?: boolean;\n closeColor?: string;\n color?: string;\n };\n },\n private _cdr: ChangeDetectorRef\n ) {}\n\n ngAfterViewInit() {\n this.createdComponent.set(this.target.createComponent(this.data.component));\n\n // detect the inputs of the component\n if (!this.createdComponent) this.dialogRef.close(false);\n\n if (this.data.inputs)\n this._setInputs(\n this.data.component,\n this.data.inputs,\n this.createdComponent()!\n );\n\n this._cdr.detectChanges();\n }\n\n private _getInputProperties<C>(component: Type<C>) {\n const inputs: string[] = [];\n const declaredInputs: Partial<Record<keyof C, string>> =\n component.prototype?.constructor['ɵcmp']?.declaredInputs;\n for (const input of Object.keys(declaredInputs)) inputs.push(input);\n\n return inputs;\n }\n\n private _setInputs<C>(\n component: Type<C>,\n inputs: Partial<Record<keyof C, unknown>>,\n componentRef: ComponentRef<C>\n ) {\n const inputProperties = this._getInputProperties(component);\n for (const key of inputProperties) {\n if (inputs[key as keyof C]) {\n componentRef.setInput(key, inputs[key as keyof C]);\n }\n }\n return component;\n }\n}\n","import {\n ComponentRef,\n Injectable,\n Injector,\n Type,\n effect,\n inject,\n} from '@angular/core';\nimport {\n MatDialog,\n MatDialogConfig,\n MatDialogContainer,\n MatDialogRef,\n MatDialogState,\n} from '@angular/material/dialog';\nimport {\n ConfirmConfig,\n ConfirmDialogComponent,\n} from '../components/c3-dialog-confirm.component';\nimport {\n PromptConfig,\n C3PromptDialogComponent,\n} from '../components/c3-dialog-prompt.component';\nimport { ComponentType } from '@angular/cdk/portal';\nimport 'reflect-metadata';\nimport { C3DialogEmbedChildComponent } from '../components/c3-dialog-embed-child.component';\nimport { Observable, Subject } from 'rxjs';\n\nexport type C3CreateDialogFromComponentConfig<C> = MatDialogConfig<\n Partial<Record<keyof C, unknown>>\n> & {\n component: ComponentType<C>;\n toolbar?: {\n title: string;\n closeBtn?: boolean;\n closeColor?: string;\n color?: string;\n };\n};\n\nexport type C3CreateDialogFromComponentResult<C> = {\n _containerInstance: MatDialogContainer;\n rootComponentRef: ComponentRef<C3DialogEmbedChildComponent<C>> | null;\n rootComponentInstance: C3DialogEmbedChildComponent<C>;\n componentRef: ComponentRef<C> | null;\n componentInstance: C | undefined;\n id: string;\n disableClose: boolean;\n close: (dialogResult?: C) => void;\n afterClosed: () => Observable<C | null>;\n afterOpened: () => Observable<void>;\n beforeClosed: () => Observable<C | null>;\n backdropClick: () => Observable<MouseEvent>;\n getState: () => MatDialogState;\n keydownEvents: () => Observable<KeyboardEvent>;\n updateSize: () => void;\n updatePosition: () => void;\n addPanelClass: (className: string) => void;\n removePanelClass: (className: string) => void;\n afterComponentMounted: () => Observable<C3CreateDialogFromComponentResult<C>>;\n};\n\n@Injectable({\n providedIn: 'root',\n})\nexport class C3DialogService {\n readonly #dialog = inject(MatDialog);\n private readonly _injector = inject(Injector);\n\n /**\n * Opens a confirm dialog and returns a promise that resolves to a boolean indicating whether the user accepted or rejected the confirmation.\n *\n * @param {ConfirmConfig} data Configuration options for the confirm dialog. See ConfirmConfig below.\n * @returns {C3ExtendedPromise<boolean>} A promise that resolves to `true` if the user accepted the confirmation, and `false` otherwise.\n */\n public confirm(data: ConfirmConfig) {\n const dialogRef = this.#dialog.open(ConfirmDialogComponent, {\n width: data.width || '250px',\n data: {\n text: data.text,\n reject: {\n color:\n data.reject && data.reject.color ? data.reject.color : undefined,\n text: (data.reject && data.reject.text) || 'Annuler',\n },\n accept: {\n color: (data.accept && data.accept.color) || 'primary',\n text: (data.accept && data.accept.text) || 'Accepter',\n },\n },\n });\n\n return new Promise<boolean>((resolve, reject) => {\n dialogRef.afterClosed().subscribe({\n next: (value) => {\n resolve(value);\n },\n error: reject,\n });\n });\n }\n\n /**\n * Opens a prompt dialog and returns a promise that resolves to the value entered by the user, or `false` if the user cancelled the prompt.\n *\n * @param {PromptConfig} data Configuration options for the prompt dialog. See PromptConfig below.\n * @returns {C3ExtendedPromise<false | T>} A promise that resolves to the value entered by the user, or `false` if the user cancelled the prompt.\n */\n public prompt(data: PromptConfig): Promise<false | string> {\n const dialogRef = this.#dialog.open<C3PromptDialogComponent, any, string>(\n C3PromptDialogComponent,\n {\n width: data.width || '250px',\n maxWidth: data.maxWidth || '100vw',\n data: {\n text: data.text,\n defaultValue: data.defaultValue,\n placeholder: data.placeholder,\n multiline: data.multiline,\n validators: data.validators,\n required: data.required,\n reject: {\n color:\n data.reject && data.reject.color ? data.reject.color : undefined,\n text: (data.reject && data.reject.text) || 'Annuler',\n },\n accept: {\n color: (data.accept && data.accept.color) || 'primary',\n text: (data.accept && data.accept.text) || 'Accepter',\n },\n },\n },\n );\n\n return new Promise<string | false>((resolve, reject) => {\n dialogRef.afterClosed().subscribe({\n next: (value) => {\n if (value === undefined) {\n resolve(false);\n } else {\n resolve(value);\n }\n },\n error: reject,\n });\n });\n }\n\n /**\n * Opens a dialog with the provided component and inputs.\n * @param {C3CreateDialogFromComponentConfig<C>} config Configuration options for the dialog. See MatDialogConfig below.\n * @returns {MatDialogRef<C> & {component: ComponentRef<C> | undefined}} The dialog reference.\n */\n createDialogFromComponent<C>({\n component,\n toolbar,\n data,\n ...config\n }: C3CreateDialogFromComponentConfig<C>) {\n if (!component) throw new Error('No component provided');\n\n const dialog = this.#dialog.open(C3DialogEmbedChildComponent<C>, {\n ...config,\n data: {\n component,\n toolbar,\n inputs: data,\n },\n });\n\n return this.createC3DialogResult(dialog);\n }\n\n private createC3DialogResult<C>(\n dialog: MatDialogRef<C3DialogEmbedChildComponent<C>>,\n ) {\n const _afterComponentMounted = new Subject<\n C3CreateDialogFromComponentResult<C>\n >();\n\n const result: C3CreateDialogFromComponentResult<C> = {\n _containerInstance: dialog._containerInstance,\n rootComponentRef: dialog.componentRef,\n rootComponentInstance: dialog.componentInstance,\n componentRef: dialog.componentInstance.createdComponent(),\n componentInstance: dialog.componentInstance.createdComponent()?.instance,\n id: dialog.id,\n disableClose: dialog.disableClose || false,\n close: dialog.close.bind(dialog),\n afterClosed: dialog.afterClosed.bind(dialog),\n afterOpened: dialog.afterOpened.bind(dialog),\n beforeClosed: dialog.beforeClosed.bind(dialog),\n backdropClick: dialog.backdropClick.bind(dialog),\n getState: dialog.getState.bind(dialog),\n keydownEvents: dialog.keydownEvents.bind(dialog),\n updateSize: dialog.updateSize.bind(dialog),\n updatePosition: dialog.updatePosition.bind(dialog),\n addPanelClass: dialog.addPanelClass.bind(dialog),\n removePanelClass: dialog.removePanelClass.bind(dialog),\n afterComponentMounted: () => _afterComponentMounted.asObservable(),\n };\n\n effect(\n () => {\n if (dialog.componentInstance.createdComponent()) {\n result.componentRef = dialog.componentInstance.createdComponent();\n result.componentInstance =\n dialog.componentInstance.createdComponent()?.instance;\n _afterComponentMounted.next(result);\n }\n },\n {\n injector: this._injector,\n },\n );\n\n return result;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatInputModule } from '@angular/material/input';\nimport { ConfirmDialogComponent } from './components/c3-dialog-confirm.component';\nimport { C3DialogEmbedChildComponent } from './components/c3-dialog-embed-child.component';\nimport { C3PromptDialogComponent } from './components/c3-dialog-prompt.component';\nimport { C3DialogService } from './services/c3-dialog.service';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatIconModule } from '@angular/material/icon';\n\n@NgModule({\n declarations: [\n ConfirmDialogComponent,\n C3PromptDialogComponent,\n C3DialogEmbedChildComponent,\n ],\n imports: [\n CommonModule,\n FormsModule,\n MatButtonModule,\n MatDialogModule,\n MatFormFieldModule,\n MatIconModule,\n MatInputModule,\n MatToolbarModule,\n ReactiveFormsModule,\n ],\n providers: [C3DialogService],\n})\nexport class C3DialogModule {}\n","import { Directive, ElementRef, Input } from '@angular/core';\nimport { BehaviorSubject, debounceTime, filter, skip } from 'rxjs';\n\n@Directive({\n selector: '[C3FullScreen], [c3-full-screen]',\n})\nexport class FullScreenDirective {\n @Input('c3Screenfull')\n set fullscreenState(value: Boolean | null) {\n this._fullscreenState.next(value?.valueOf() || false);\n }\n\n @Input('c3-full-screen')\n set fullscreenStateSetter(value: Boolean | null) {\n this.fullscreenState = value;\n }\n\n private _fullscreenState = new BehaviorSubject(false);\n\n constructor(private el: ElementRef) {\n this._fullscreenState\n .pipe(\n filter((value) => value !== null),\n skip(2),\n debounceTime(100)\n )\n .subscribe(() => {\n this.defineState();\n });\n }\n\n private defineState() {\n if (this._fullscreenState.getValue()) {\n const element: any = this.el.nativeElement;\n\n const requestMethod =\n element.requestFullscreen ||\n element.webkitRequestFullScreen ||\n element.mozRequestFullScreen ||\n element.msRequestFullScreen;\n\n if (requestMethod) {\n // Native full screen.\n requestMethod.call(element);\n } else {\n console.log('FullScreen Request Method Not Supported on this browser.');\n }\n } else {\n const element: any = document;\n\n const requestMethod =\n element.cancelFullscreen ||\n element.webkitExitFullscreen ||\n element.webkitCancelFullScreen ||\n element.mozCancelFullScreen ||\n element.msExitFullScreen;\n\n if (requestMethod) {\n // Native Cancel full screen.\n requestMethod.call(element);\n } else {\n console.log(\n 'FullScreen Cancel Request Method Not Supported on this browser.'\n );\n }\n }\n }\n}\n","import { Component, Host, Input } from '@angular/core';\nimport { C3FileViewer } from '../../models/file-viewer';\n\n@Component({\n selector: 'c3-file-viewer-actions',\n templateUrl: './c3-file-viewer-actions.component.html',\n})\nexport class C3FileViewerActionsComponent {\n @Input()\n fileViewer!: C3FileViewer;\n\n get config() {\n return this.fileViewer.config;\n }\n}\n","<div class=\"nav-button-container\">\n <button\n *ngIf=\"config.btnShow?.prev\"\n type=\"button\"\n [class]=\"config.btnClass\"\n (click)=\"fileViewer.previousImage($event)\"\n [disabled]=\"fileViewer.currentIndex === 0\"\n >\n <span\n *ngIf=\"config.btnIcons?.prev?.classes\"\n [class]=\"config.btnIcons?.prev?.classes\"\n ></span>\n </button>\n <a\n [class]=\"config.btnClass\"\n *ngIf=\"config.btnIcons?.prev?.text\"\n (click)=\"fileViewer.previousImage($event)\"\n >\n <span [class]=\"config.btnSubClass\">{{ config.btnIcons?.prev?.text }}</span>\n </a>\n <button\n *ngIf=\"config.btnShow?.next\"\n type=\"button\"\n [class]=\"config.btnClass\"\n (click)=\"fileViewer.nextImage($event)\"\n [disabled]=\"fileViewer.currentIndex === fileViewer.files.length - 1\"\n >\n <span\n *ngIf=\"config.btnIcons?.next?.classes\"\n [class]=\"config.btnIcons?.next?.classes\"\n ></span>\n </button>\n <a\n [class]=\"config.btnClass\"\n *ngIf=\"config.btnIcons?.next?.text\"\n (click)=\"fileViewer.nextImage($event)\"\n >\n <span [class]=\"config.btnSubClass\">{{ config.btnIcons?.next?.text }}</span>\n </a>\n</div>\n\n<!-- Button Container -->\n<div\n class=\"btn-container\"\n [class]=\"config.btnContainerClass\"\n *ngIf=\"fileViewer.currentFile.type.startsWith('image')\"\n>\n <!-- Rotate Counter Clockwise -->\n <ng-container *ngIf=\"config.btnShow?.rotateCounterClockwise\">\n <button\n type=\"button\"\n [class]=\"config.btnClass\"\n (click)=\"fileViewer.rotateCounterClockwise()\"\n *ngIf=\"config.btnIcons?.rotateCounterClockwise?.classes\"\n >\n <span [class]=\"config.btnIcons?.rotateCounterClockwise?.classes\"></span>\n </button>\n <a\n [class]=\"config.btnClass\"\n *ngIf=\"config.btnIcons?.rotateCounterClockwise?.text\"\n (click)=\"fileViewer.rotateCounterClockwise()\"\n >\n <span [class]=\"config.btnSubClass\">{{\n config.btnIcons?.rotateCounterClockwise?.text\n }}</span>\n </a>\n </ng-container>\n\n <!-- Rotate Clockwise -->\n <ng-container *ngIf=\"config.btnShow?.rotateClockwise\">\n <button\n type=\"button\"\n [class]=\"config.btnClass\"\n (click)=\"fileViewer.rotateClockwise()\"\n *ngIf=\"config.btnIcons?.rotateClockwise?.classes\"\n >\n <span [class]=\"config.btnIcons?.rotateClockwise?.classes\"></span>\n </button>\n <a\n [class]=\"config.btnClass\"\n *ngIf=\"config.btnIcons?.rotateClockwise?.text\"\n (click)=\"fileViewer.rotateClockwise()\"\n >\n <span [class]=\"config.btnSubClass\">{{\n config.btnIcons?.rotateClockwise?.text\n }}</span>\n </a>\n </ng-container>\n\n <!-- Zoom Out -->\n <ng-container *ngIf=\"config.btnShow?.zoomOut\">\n <button\n type=\"button\"\n [class]=\"config.btnClass\"\n (click)=\"fileViewer.zoomOut()\"\n *ngIf=\"config.btnIcons?.zoomOut?.classes\"\n >\n <span [class]=\"config.btnIcons?.zoomOut?.classes\"></span>\n </button>\n <a\n [class]=\"config.btnClass\"\n *ngIf=\"config.btnIcons?.zoomOut?.text\"\n (click)=\"fileViewer.zoomOut()\"\n >\n <span [class]=\"config.btnSubClass\">{{\n config.btnIcons?.zoomOut?.text\n }}</span>\n </a>\n </ng-container>\n\n <!-- Zoom In -->\n <ng-container *ngIf=\"config.btnShow?.zoomIn\">\n <button\n type=\"button\"\n [class]=\"config.btnClass\"\n (click)=\"fileViewer.zoomIn()\"\n *ngIf=\"config.btnIcons?.zoomIn?.classes\"\n >\n <span [class]=\"config.btnIcons?.zoomIn?.classes\"></span>\n </button>\n <a\n [class]=\"config.btnClass\"\n *ngIf=\"config.btnIcons?.zoomIn?.text\"\n (click)=\"fileViewer.zoomIn()\"\n >\n <span [class]=\"config.btnSubClass\">{{\n config.btnIcons?.zoomIn?.text\n }}</span>\n </a>\n </ng-container>\n\n <!-- Fullscreen -->\n <ng-container *ngIf=\"config.allowFullscreen\">\n <button\n type=\"button\"\n [class]=\"config.btnClass\"\n (click)=\"fileViewer.toggleFullscreen()\"\n *ngIf=\"config.btnIcons?.fullscreen?.classes\"\n >\n <span [class]=\"config.btnIcons?.fullscreen?.classes\"></span>\n </button>\n <a\n [class]=\"config.btnClass\"\n *ngIf=\"config.btnIcons?.fullscreen?.text\"\n (click)=\"fileViewer.toggleFullscreen()\"\n >\n <span [class]=\"config.btnSubClass\">{{\n config.btnIcons?.fullscreen?.text\n }}</span>\n </a>\n </ng-container>\n\n <!-- Reset -->\n <ng-container *ngIf=\"config.btnShow?.reset\">\n <button\n type=\"button\"\n [class]=\"config.btnClass\"\n (click)=\"fileViewer.reset()\"\n *ngIf=\"config.btnIcons?.reset?.classes\"\n >\n <span [class]=\"config.btnIcons?.reset?.classes\"></span>\n </button>\n <a\n [class]=\"config.btnClass\"\n *ngIf=\"config.btnIcons?.reset?.text\"\n (click)=\"fileViewer.reset()\"\n >\n <span [class]=\"config.btnSubClass\">{{\n config.btnIcons?.reset?.text\n }}</span>\n </a>\n </ng-container>\n\n <!-- Custom Buttons -->\n <ng-container *ngFor=\"let cBtn of config.customBtns\">\n <button *ngIf=\"cBtn.icon.classes\" type=\"button\" [class]=\"config.btnClass\">\n <span *ngIf=\"cBtn.icon.classes\" [class]=\"cBtn.icon.classes\"></span>\n </button>\n <ng-container *ngIf=\"cBtn.icon.text\">\n <a [class]=\"config.btnClass\" *ngIf=\"cBtn.icon.text\">\n <span [class]=\"config.btnSubClass\">{{ cBtn.icon.text }}</span>\n </a>\n </ng-container>\n </ng-container>\n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Pipe({\n name: 'c3SafeUrl',\n standalone: true,\n})\nexport class C3SafeUrlPipe implements PipeTransform {\n constructor(private sanitizer: DomSanitizer) {}\n transform(url: string | null) {\n return url ? this.sanitizer.bypassSecurityTrustResourceUrl(url) : '';\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { C3FileViewer } from '../../models/file-viewer';\n\n@Component({\n selector: 'c3-file-viewer-image, [c3-file-viewer-image]',\n templateUrl: './c3-file-viewer-image.component.html',\n})\nexport class C3FileViewerImageComponent {\n @Input()\n public fileViewer!: C3FileViewer;\n\n @Output()\n dragstart = new EventEmitter<DragEvent>();\n}\n","<img\n *ngIf=\"fileViewer.currentFile.objectUrl\"\n [src]=\"fileViewer.currentFile.objectUrl | async | c3SafeUrl\"\n [ngStyle]=\"fileViewer.style\"\n alt=\"Image not found...\"\n (dragstart)=\"dragstart.emit($event)\"\n/>\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\nimport { C3FileViewer } from '../../models/file-viewer';\n\n@Component({\n selector: 'c3-file-viewer-pdf',\n templateUrl: './c3-file-viewer-pdf.component.html',\n encapsulation: ViewEncapsulation.None,\n host: {\n style: 'display: block',\n class: 'c3-file-viewer-pdf',\n },\n})\nexport class C3FileViewerPdfComponent {\n @Input()\n public fileViewer!: C3FileViewer;\n\n @Output()\n dragstart = new EventEmitter<DragEvent>();\n}\n","<!-- pdf viewer -->\n<embed\n type=\"application/pdf\"\n [src]=\"fileViewer.currentFile.objectUrl | async | c3SafeUrl\"\n [style.height]=\"'100%'\"\n [style.width]=\"'100%'\"\n/>\n","import { Component, Input } from '@angular/core';\nimport { FileMetadata } from '../../models/file-metadata';\nimport { Subject, filter, mergeMap, tap } from 'rxjs';\nimport { C3FileViewer } from '../../models/file-viewer';\n\n@Component({\n selector: 'c3-file-viewer-video',\n templateUrl: './c3-file-viewer-video.component.html',\n})\nexport class C3FileViewerVideoComponent {\n @Input('file')\n set _srcUpdated({ location }: FileMetadata) {\n this.src$.next(location);\n }\n src = '';\n private src$ = new Subject<string>();\n\n @Input()\n public fileViewer!: C3FileViewer;\n\n constructor() {\n this.src$\n .pipe(\n mergeMap((src) => this.fileViewer.getFile(src)),\n filter((blob) => blob.type.startsWith('application/pdf')),\n tap((blob) => (this.src = URL.createObjectURL(blob)))\n )\n .subscribe({\n next: () => null,\n error: (error) => {\n console.log(error);\n },\n });\n }\n}\n","<video controls [src]=\"src\" crossorigin=\"*\"></video>\n","import {\n Component,\n EventEmitter,\n HostListener,\n Inject,\n Input,\n OnInit,\n Optional,\n Output,\n SimpleChanges,\n ViewEncapsulation,\n} from '@angular/core';\nimport { C3FileViewerConfig } from '../../../models/file-viewer-config.model';\nimport { CustomFileEvent } from '../../../models/custom-file-event.model';\nimport { HttpClient } from '@angular/common/http';\nimport { C3FileViewer } from '../../../models/file-viewer';\n\n@Component({\n selector: 'c3-file-viewer',\n templateUrl: './c3-file-viewer.component.html',\n styleUrls: [],\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'c3-file-viewer',\n },\n})\nexport class C3FileViewerComponent implements OnInit {\n @Input()\n public screenHeightOccupied?: 0; // In Px\n\n @Input()\n public fileViewer!: C3FileViewer;\n\n @Output()\n public indexChange: EventEmitter<number> = new EventEmitter();\n\n @Output()\n public configChange: EventEmitter<C3FileViewerConfig> = new EventEmitter();\n\n @Output()\n public customFileEvent: EventEmitter<CustomFileEvent> = new EventEmitter();\n\n constructor(\n @Optional() @Inject('config') public moduleConfig: C3FileViewerConfig,\n public _http: HttpClient\n ) {}\n\n ngOnInit() {\n this.defineStyleHeight();\n\n this.fileViewer.customFile$.subscribe((event) => {\n this.customFileEvent.emit(event);\n });\n\n this.fileViewer.index$.subscribe((index) => {\n this.indexChange.emit(index);\n });\n\n this.fileViewer.config$.subscribe((config) => {\n this.configChange.emit(config);\n });\n }\n\n @HostListener('mouseover')\n onMouseOver() {\n this.fileViewer.hovered = true;\n }\n\n @HostListener('mouseleave')\n onMouseLeave() {\n this.fileViewer.hovered = false;\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['screenHeightOccupied'] && this.fileViewer)\n this.defineStyleHeight();\n }\n\n @HostListener('window:keyup.ArrowRight', ['$event'])\n next(event: KeyboardEvent) {\n this.fileViewer.nextImage(event);\n }\n\n @HostListener('window:keyup.ArrowLeft', ['$event'])\n previous(event: KeyboardEvent) {\n this.fileViewer.previousImage(event);\n }\n\n defineStyleHeight() {\n this.fileViewer.styleHeight =\n 'calc(100% - ' + this.screenHeightOccupied + 'px)';\n }\n}\n","<div\n class=\"container\"\n *ngIf=\"fileViewer\"\n [c3-full-screen]=\"fileViewer.fullscreen$ | async\"\n [style.height]=\"fileViewer.styleHeight\"\n [style.backgroundColor]=\"fileViewer.config.containerBackgroundColor\"\n (wheel)=\"fileViewer.scrollZoom($event)\"\n (dragover)=\"fileViewer.onDragOver($event)\"\n>\n <c3-file-viewer-image\n *ngIf=\"fileViewer.currentFile.type.startsWith('image')\"\n [fileViewer]=\"fileViewer\"\n [style]=\"fileViewer.style\"\n (dragstart)=\"fileViewer.onDragStart($event)\"\n />\n\n <c3-file-viewer-video\n *ngIf=\"fileViewer.currentFile.type.startsWith('video')\"\n />\n\n <c3-file-viewer-pdf\n *ngIf=\"fileViewer.currentFile.type.startsWith('application/pdf')\"\n [fileViewer]=\"fileViewer\"\n />\n <!-- Div below will be used to hide the 'ghost' image when dragging -->\n <div></div>\n <div class=\"spinner-container\" *ngIf=\"fileViewer.loading\">\n <div class=\"spinner\"></div>\n </div>\n\n <c3-file-viewer-actions [fileViewer]=\"fileViewer\" />\n</div>\n","import { C3FileViewerConfig } from '../models/file-viewer-config.model';\n\nexport const DEFAULT_CONFIG: C3FileViewerConfig = {\n btnContainerClass: 'btn-container',\n btnClass: 'default',\n btnSubClass: 'material-icons',\n zoomFactor: 0.1,\n containerBackgroundColor: '#00000000',\n wheelZoom: false,\n allowFullscreen: true,\n allowKeyboardNavigation: true,\n btnShow: {\n zoomIn: true,\n zoomOut: true,\n rotateClockwise: true,\n rotateCounterClockwise: true,\n next: true,\n prev: true,\n reset: true,\n },\n btnIcons: {\n zoomIn: {\n text: 'zoom_in',\n },\n zoomOut: {\n text: 'zoom_out',\n },\n rotateClockwise: {\n text: 'rotate_right',\n },\n rotateCounterClockwise: {\n text: 'rotate_left',\n },\n fullscreen: {\n text: 'fullscreen',\n },\n reset: {\n text: 'restore',\n },\n },\n};\n","export class CustomFileEvent {\n public name: string;\n public fileUrl: string;\n\n constructor(name: string, fileUrl: string) {\n this.name = name;\n this.fileUrl = fileUrl;\n }\n}\n","import { BehaviorSubject, Observable, map, tap } from 'rxjs';\nimport { DEFAULT_CONFIG } from '../consts/default.config';\nimport { C3FileViewerConfig } from './file-viewer-config.model';\nimport { HttpClient } from '@angular/common/http';\nimport { CustomFileEvent } from './custom-file-event.model';\nimport { FileMetadata } from './file-metadata';\n\nexport class C3FileViewer {\n private _config: C3FileViewerConfig = DEFAULT_CONFIG;\n private client: HttpClient['get'] | undefined;\n get config(): C3FileViewerConfig {\n return this._config;\n }\n\n set config(value: C3FileViewerConfig) {\n this._config = this.mergeConfig(DEFAULT_CONFIG, value);\n this.config$.next(this._config);\n }\n public config$ = new BehaviorSubject<C3FileViewerConfig>(DEFAULT_CONFIG);\n\n public fullscreen$ = new BehaviorSubject<Boolean>(false);\n\n public customFile$ = new BehaviorSubject<any>(null);\n public index$ = new BehaviorSubject<number>(0);\n public loading: boolean = true;\n public currentIndex: number = 0;\n\n get currentFile(): FileMetadata {\n return this.filesObjectUrl[this.currentIndex];\n }\n\n public style = {\n transform: '',\n msTransform: '',\n oTransform: '',\n webkitTransform: '',\n minHeight: 'auto',\n maxHeight: 'auto',\n height: 'auto',\n minWidth: 'auto',\n maxWidth: 'auto',\n width: 'auto',\n };\n public styleHeight = '100%';\n public hovered = false;\n\n public set files(value: FileMetadata[]) {\n this._files = value;\n this.currentIndex = 0;\n this.index$.next(this.currentIndex);\n\n this.filesObjectUrl = value.map((file) => {\n const objectUrl = file.objectUrl || this.createObjectURL(file);\n return {\n ...file,\n objectUrl,\n };\n });\n }\n\n public get files(): FileMetadata[] {\n return this._files;\n }\n\n private _files: FileMetadata[] = [];\n\n public filesObjectUrl: Array<\n FileMetadata & {\n objectUrl: Observable<string>;\n }\n > = [];\n\n private scale = 1;\n private rotation = 0;\n private translateX = 0;\n private translateY = 0;\n private prevX: number = 0;\n private prevY: number = 0;\n\n constructor({\n config,\n files,\n client,\n }: {\n config?: C3FileViewerConfig;\n files?: FileMetadata[];\n client: HttpClient;\n }) {\n if (config) this.config = config;\n if (client) this.client = client.get.bind(client);\n if (files) this.files = files;\n\n this.config$.subscribe((config) => {\n const { minHeight, maxHeight, minWidth, maxWidth, height, width } =\n config;\n this.style.minHeight = this.valueToCss(minHeight);\n this.style.height = this.valueToCss(height);\n this.style.width = this.valueToCss(width);\n this.style.maxHeight = this.valueToCss(maxHeight);\n this.style.minWidth = this.valueToCss(minWidth);\n this.style.maxWidth = this.valueToCss(maxWidth);\n this.styleHeight = this.valueToCss(height);\n\n this.updateStyle();\n });\n }\n\n createObjectURL(file: FileMetadata) {\n this.onLoadStart(file);\n return this.getFile(file.location).pipe(\n map((response) => URL.createObjectURL(response)),\n tap(() => this.onLoad(file))\n );\n }\n\n getFile(location: string) {\n const client = this.config.customClient || this.client;\n if (!client) {\n throw new Error(\n 'No http client provided. Please provide a custom client or import HttpClientModule'\n );\n }\n\n return client(location, {\n responseType: 'blob',\n });\n }\n\n previousImage(event: KeyboardEvent | MouseEvent) {\n if (this.canNavigate(event)) {\n this.loading = true;\n if (this.currentIndex > 0) this.currentIndex--;\n else this.currentIndex = this.files.length - 1;\n this.index$.next(this.currentIndex);\n this.reset();\n }\n }\n\n nextImage(event: KeyboardEvent | MouseEvent) {\n if (this.canNavigate(event)) {\n this.loading = true;\n if (this.currentIndex < this.files.length - 1) this.currentIndex++;\n else this.currentIndex = 0;\n this.index$.next(this.currentIndex);\n this.reset();\n }\n }\n\n zoomIn() {\n this.scale *= 1 + (this.config.zoomFactor || 0);\n this.updateStyle();\n }\n\n zoomOut() {\n if (this.scale > (this.config.zoomFactor || 0)) {\n this.scale /= 1 + (this.config.zoomFactor || 0);\n }\n this.updateStyle();\n }\n\n scrollZoom(evt: WheelEvent) {\n if (this.config.wheelZoom) {\n evt.deltaY > 0 ? this.zoomOut() : this.zoomIn();\n return false;\n } else {\n return true;\n }\n }\n\n rotateClockwise() {\n this.rotation += 90;\n this.updateStyle();\n }\n\n rotateCounterClockwise() {\n this.rotation -= 90;\n this.updateStyle();\n }\n\n onLoad(file: FileMetadata) {\n this.loading = false;\n }\n\n onLoadStart(file: FileMetadata) {\n this.loading = true;\n }\n\n imageNotFound(file: FileMetadata) {\n this.loading = false;\n this.customFile$.next(new CustomFileEvent('imageNotFound', file.location));\n }\n\n onDragOver(evt: DragEvent) {\n this.translateX += evt.clientX - this.prevX;\n this.translateY += evt.clientY - this.prevY;\n this.prevX = evt.clientX;\n this.prevY = evt.clientY;\n this.updateStyle();\n }\n\n onDragStart(evt: DragEvent) {\n if (evt.target && evt.dataTransfer && evt.dataTransfer.setDragImage) {\n const target = evt.target as HTMLDivElement;\n const nextElementSibling = target.nextElementSibling as HTMLDivElement;\n\n if (nextElementSibling)\n evt.dataTransfer.setDragImage(nextElementSibling, 0, 0);\n }\n this.prevX = evt.clientX;\n this.prevY = evt.clientY;\n }\n\n toggleFullscreen() {\n const fullScreenValue = this.fullscreen$.getValue();\n this.fullscreen$.next(!fullScreenValue);\n if (fullScreenValue) this.reset();\n }\n\n reset() {\n this.scale = 1;\n this.rotation = 0;\n this.translateX = 0;\n this.translateY = 0;\n this.updateStyle();\n }\n\n private canNavigate(event: any) {\n return (\n event == null || (this.config.allowKeyboardNavigation && this.hovered)\n );\n }\n\n private updateStyle() {\n this.style.transform = `translate(${this.translateX}px, ${this.translateY}px) rotate(${this.rotation}deg) scale(${this.scale})`;\n this.style.msTransform = this.style.transform;\n this.style.webkitTransform = this.style.transform;\n this.style.oTransform = this.style.transform;\n }\n\n private valueToCss(value: number | string | undefined) {\n return value ? (typeof value === 'string' ? value : value + 'px') : 'auto';\n }\n\n private mergeConfig(\n defaultValues: C3FileViewerConfig,\n overrideValues: C3FileViewerConfig\n ): C3FileViewerConfig {\n let result: C3FileViewerConfig = { ...defaultValues };\n if (overrideValues) {\n result = { ...defaultValues, ...overrideValues };\n\n if (overrideValues.btnIcons) {\n result.btnIcons = {\n ...defaultValues.btnIcons,\n ...overrideValues.btnIcons,\n };\n }\n }\n return result;\n }\n}\n","import { Component, Inject } from '@angular/core';\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { C3FileViewer } from '../../../models/file-viewer';\n\n@Component({\n template: `\n <c3-file-viewer [fileViewer]=\"fileViewer\" [screenHeightOccupied]=\"0\" />\n `,\n})\nexport class C3FileViewerDialog {\n constructor(@Inject(MAT_DIALOG_DATA) public fileViewer: C3FileViewer) {}\n}\n","import { Component, HostListener, Inject, Input } from '@angular/core';\nimport {\n MAT_DIALOG_DATA,\n MatDialog,\n MatDialogConfig,\n} from '@angular/material/dialog';\nimport { C3FileViewer } from '../../../models/file-viewer';\nimport { C3FileViewerDialog } from './c3-file-viewer-dialog';\n\n@Component({\n selector: 'c3-file-viewer-dialog',\n template: ` <ng-content /> `,\n host: {\n class: 'c3-file-viewer-dialog',\n },\n})\nexport class C3FileViewerDialogComponent {\n @Input()\n public fileViewer!: C3FileViewer;\n\n @Input()\n public dialogConfig: Partial<MatDialogConfig> = {\n panelClass: 'c3-file-viewer-dialog',\n width: '80%',\n height: '80%',\n };\n\n constructor(private _dialog: MatDialog) {}\n\n @HostListener('click')\n openDialog() {\n this._dialog.open(C3FileViewerDialog, {\n data: this.fileViewer,\n ...this.dialogConfig,\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { FullScreenDirective } from './directives/full-screen.directive';\nimport { C3FileViewerComponent } from './components/public/c3-file-viewer/c3-file-viewer.component';\nimport { CommonModule } from '@angular/common';\nimport { C3FileViewerActionsComponent } from './components/c3-file-viewer-actions/c3-file-viewer-actions.component';\nimport { C3FileViewerImageComponent } from './components/c3-file-viewer-image/c3-file-viewer-image.component';\nimport { C3FileViewerPdfComponent } from './components/c3-file-viewer-pdf/c3-file-viewer-pdf.component';\nimport { C3FileViewerVideoComponent } from './components/c3-file-viewer-video/c3-file-viewer-video.component';\nimport {\n provideHttpClient,\n withInterceptorsFromDi,\n} from '@angular/common/http';\nimport { C3SafeUrlPipe } from '../../public-api';\nimport { C3FileViewerDialogComponent } from './components/public/c3-file-viewer-dialog/c3-file-viewer-dialog.component';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { C3FileViewerDialog } from './components/public/c3-file-viewer-dialog/c3-file-viewer-dialog';\n\n@NgModule({\n declarations: [\n FullScreenDirective,\n C3FileViewerComponent,\n C3FileViewerActionsComponent,\n C3FileViewerImageComponent,\n C3FileViewerPdfComponent,\n C3FileViewerVideoComponent,\n C3FileViewerDialogComponent,\n C3FileViewerDialog,\n ],\n exports: [\n FullScreenDirective,\n C3FileViewerComponent,\n C3FileViewerDialogComponent,\n ],\n imports: [CommonModule, C3SafeUrlPipe, MatDialogModule],\n providers: [provideHttpClient(withInterceptorsFromDi())],\n})\nexport class C3FileViewerModule {}\n","import { CommonModule } from '@angular/common';\nimport { Component, input, output } from '@angular/core';\nimport { FileMetadata } from '../../c3-file-viewer/models/file-metadata';\nimport { Observable } from 'rxjs';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\n\nexport type C3FileCardSize = '16' | '32' | '64' | '128' | '256';\n\n@Component({\n selector: 'c3-file-display-card',\n standalone: true,\n imports: [CommonModule, MatButtonModule, MatIconModule],\n templateUrl: './c3-file-display-card.component.html',\n styleUrl: './c3-file-display-card.component.scss',\n})\nexport class C3FileDisplayCardComponent {\n public readonly fileObjectUrl = input.required<\n | (FileMetadata & {\n objectUrl?: Observable<string>;\n })\n | null\n >();\n public readonly displayFn = input<(file: FileMetadata) => string>(\n (file) => file.name\n );\n\n public readonly deletable = input<boolean>(false);\n public readonly size = input<C3FileCardSize>('32');\n public readonly onDelete = output();\n\n getFileType(): string {\n const file = this.fileObjectUrl();\n if (file && file.type) {\n if (file.type.startsWith('image')) return 'image';\n if (file.type.startsWith('application')) return 'application';\n if (file.type.startsWith('video')) return 'video';\n }\n return 'unknown';\n }\n\n getFileObjectUrl(): Observable<string> | null {\n const file = this.fileObjectUrl();\n return file && file.objectUrl ? file.objectUrl : null;\n }\n\n getFileName(): string {\n const file = this.fileObjectUrl();\n return file ? this.displayFn()(file) : '';\n }\n\n getDisplayName(): string {\n const file = this.fileObjectUrl();\n return file ? this.displayFn()(file) : '';\n }\n}\n","<button\n class=\"file-card border\"\n [class.size-16]=\"size() === '16'\"\n [class.size-32]=\"size() === '32'\"\n [class.size-64]=\"size() === '64'\"\n [class.size-128]=\"size() === '128'\"\n [class.size-256]=\"size() === '256'\"\n>\n @if(deletable()) {\n <div class=\"actions\">\n <button mat-icon-button color=\"red\" (click)=\"onDelete.emit()\">\n <mat-icon>delete</mat-icon>\n </button>\n </div>\n } @if(fileObjectUrl()) {\n @switch (getFileType()) { @case ('image') {\n <img\n class=\"h-full w-full object-cover\"\n [src]=\"(getFileObjectUrl() | async) || '/default-image.svg'\"\n [alt]=\"getFileName()\"\n />\n } @case ('application') {\n <mat-icon> file-pdf-box </mat-icon>\n } @case ('video') {\n <mat-icon> video </mat-icon>\n }\n }\n\n <div class=\"informations flex justify-between items-center\">\n <span class=\"text-xs text-white\">\n {{ getDisplayName() }}\n </span>\n </div>\n }\n</button>\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n effect,\n inject,\n input,\n output,\n viewChild,\n} from '@angular/core';\nimport { FileMetadata } from '../../c3-file-viewer/models/file-metadata';\nimport {\n C3FileCardSize,\n C3FileDisplayCardComponent,\n} from '../c3-file-display-card/c3-file-display-card.component';\nimport { C3FileViewerModule } from '../../c3-file-viewer/c3-file-viewer.module';\nimport { C3FileViewer } from '../../c3-file-viewer/models/file-viewer';\nimport { HttpClient } from '@angular/common/http';\nimport { C3FileViewerDialogComponent } from '../../c3-file-viewer/components/public/c3-file-viewer-dialog/c3-file-viewer-dialog.component';\nimport { C3FileViewerConfig } from '../../c3-file-viewer/models/file-viewer-config.model';\n\n@Component({\n selector: 'c3-file-display-grid',\n standalone: true,\n imports: [CommonModule, C3FileDisplayCardComponent, C3FileViewerModule],\n templateUrl: './c3-file-display-grid.component.html',\n styleUrl: './c3-file-display-grid.component.scss',\n})\nexport class C3FileDisplayGridComponent {\n public readonly files = input.required<\n Array<\n FileMetadata & {\n location: string;\n }\n >\n >();\n public readonly config = input<C3FileViewerConfig>();\n public readonly cardSize = input<C3FileCardSize>('32');\n public readonly displayFn = input<\n (file: FileMetadata & { location: string }) => string\n >((file) => file.name);\n\n public readonly deletable = input<boolean>(false);\n public readonly onDelete = output<FileMetadata>();\n public readonly dialog = viewChild(C3FileViewerDialogComponent);\n\n public fileViewer = new C3FileViewer({\n client: inject(HttpClient),\n });\n\n constructor() {\n effect(\n () => {\n this.fileViewer.files = this.files();\n },\n {\n allowSignalWrites: true,\n }\n );\n\n effect(\n () => {\n if (this.config()) this.fileViewer.config = this.config()!;\n },\n {\n allowSignalWrites: true,\n }\n );\n }\n\n openDialog($event: MouseEvent, index: number): void {\n $event.stopPropagation();\n this.fileViewer.currentIndex = index;\n this.dialog()?.openDialog();\n }\n}\n","<c3-file-viewer-dialog [fileViewer]=\"fileViewer\">\n <div class=\"c3-file-display-grid\">\n @for (file of files(); track $index) {\n <c3-file-display-card\n [fileObjectUrl]=\"fileViewer.filesObjectUrl[$index]\"\n [size]=\"cardSize()\"\n (click)=\"openDialog($event, $index)\"\n (onDelete)=\"onDelete.emit(file)\"\n />\n }\n </div>\n</c3-file-viewer-dialog>\n","import { CommonModule } from '@angular/common';\nimport { Component, computed, input } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n selector: 'c3-file-display-icon',\n standalone: true,\n imports: [CommonModule, MatIconModule],\n templateUrl: './c3-file-display-icon.component.html',\n styleUrl: './c3-file-display-icon.component.scss',\n})\nexport class C3FileDisplayIconComponent {\n public readonly fileType = input.required<string>();\n\n public readonly displayedIcon = computed(() => {\n switch (this.fileType()) {\n case 'image/webp':\n case 'image/png':\n case 'image/jpeg':\n case 'image/jpg':\n return 'image';\n case 'video/mp4':\n case 'video/webm':\n return 'play_circle';\n case 'application/pdf':\n return 'picture_as_pdf';\n case 'application/msword':\n case 'application/vnd.openxmlformats-officedocument.wordprocessingml.document':\n return 'description';\n default:\n return 'content_copy';\n }\n });\n\n public readonly color = computed(() => {\n switch (this.fileType()) {\n case 'image/webp':\n case 'image/png':\n case 'image/jpeg':\n case 'image/jpg':\n return 'text-primary';\n case 'video/mp4':\n case 'video/webm':\n return 'text-secondary';\n case 'application/pdf':\n return 'text-error';\n case 'application/msword':\n case 'application/vnd.openxmlformats-officedocument.wordprocessingml.document':\n return 'text-success';\n default:\n return 'text-gray';\n }\n });\n}\n","<mat-icon [ngClass]=\"color()\">{{ displayedIcon() }}</mat-icon>\n","import { CommonModule } from '@angular/common';\nimport { HttpClient } from '@angular/common/http';\nimport {\n Component,\n effect,\n inject,\n input,\n output,\n viewChild,\n} from '@angular/core';\nimport { C3FileViewerDialogComponent } from '../../c3-file-viewer/components/public/c3-file-viewer-dialog/c3-file-viewer-dialog.component';\nimport { FileMetadata } from '../../c3-file-viewer/models/file-metadata';\nimport { C3FileViewer } from '../../c3-file-viewer/models/file-viewer';\nimport { C3FileViewerConfig } from '../../c3-file-viewer/models/file-viewer-config.model';\nimport { MatIconModule } from '@angular/material/icon';\nimport { C3FileViewerModule } from '../../c3-file-viewer/c3-file-viewer.module';\nimport { C3FileDisplayIconComponent } from '../c3-file-display-icon/c3-file-display-icon.component';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'c3-file-display-list',\n standalone: true,\n imports: [\n C3FileViewerModule,\n C3FileDisplayIconComponent,\n CommonModule,\n MatButtonModule,\n MatIconModule,\n MatNativeDateModule,\n MatMenuModule,\n ],\n templateUrl: './c3-file-display-list.component.html',\n styleUrl: './c3-file-display-list.component.scss',\n})\nexport class C3FileDisplayListComponent {\n public readonly files = input.required<\n Array<\n FileMetadata & {\n location: string;\n }\n >\n >();\n public readonly config = input<C3FileViewerConfig>();\n public readonly displayFn = input<\n (file: FileMetadata & { location: string }) => string\n >((file) => file.name);\n\n public readonly deletable = input<boolean>(false);\n public readonly onDelete = output<FileMetadata>();\n public readonly dialog = viewChild(C3FileViewerDialogComponent);\n\n public fileViewer = new C3FileViewer({\n client: inject(HttpClient),\n });\n\n constructor() {\n effect(\n () => {\n this.fileViewer.files = this.files();\n },\n {\n allowSignalWrites: true,\n }\n );\n\n effect(\n () => {\n if (this.config()) this.fileViewer.config = this.config()!;\n },\n {\n allowSignalWrites: true,\n }\n );\n }\n\n openDialog($event: MouseEvent, index: number): void {\n $event.stopPropagation();\n this.fileViewer.currentIndex = index;\n this.dialog()?.openDialog();\n }\n}\n","<!-- header -->\n<div class=\"header\">\n <div class=\"title full\">\n <span>Nom</span>\n </div>\n <div class=\"title\">\n <span>Date d'ajout</span>\n </div>\n <div class=\"icon\">\n <mat-icon>more_vert</mat-icon>\n </div>\n</div>\n<c3-file-viewer-dialog [fileViewer]=\"fileViewer\">\n <div class=\"file-display-list\">\n @for (file of files(); track $index) {\n <button>\n <div class=\"icon\">\n <c3-file-display-icon [fileType]=\"file.type\" />\n </div>\n <div class=\"name\">\n <span>{{ displayFn()(file) }}</span>\n </div>\n <div class=\"date-label\">\n <span>{{\n file.lastModified ? (file.lastModified | date : \"medium\") : \"-\"\n }}</span>\n </div>\n <button mat-icon-button>\n <mat-icon>more_vert</mat-icon>\n </button>\n <mat-menu #menu=\"matMenu\">\n <button mat-menu-item (click)=\"openDialog($event, $index)\">\n Ouvrir\n </button>\n @if (deletable()) {\n <button mat-menu-item (click)=\"onDelete.emit(file)\">Supprimer</button>\n }\n </mat-menu>\n </button>\n }\n </div>\n</c3-file-viewer-dialog>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { C3FileDisplayGridComponent } from './c3-file-display-grid/c3-file-display-grid.component';\nimport { C3FileDisplayListComponent } from './c3-file-display-list/c3-file-display-list.component';\nimport { C3FileDisplayCardComponent } from './c3-file-display-card/c3-file-display-card.component';\nimport { C3FileDisplayIconComponent } from './c3-file-display-icon/c3-file-display-icon.component';\n\n@NgModule({\n declarations: [],\n imports: [\n CommonModule,\n C3FileDisplayGridComponent,\n C3FileDisplayListComponent,\n C3FileDisplayCardComponent,\n C3FileDisplayIconComponent,\n ],\n exports: [\n C3FileDisplayGridComponent,\n C3FileDisplayListComponent,\n C3FileDisplayCardComponent,\n C3FileDisplayIconComponent,\n ],\n})\nexport class C3FileDisplayerModule {}\n","import {\n Component,\n HostBinding,\n ViewEncapsulation,\n input,\n output,\n} from '@angular/core';\n\n@Component({\n selector: 'c3-expansion-header',\n templateUrl: './c3-expansion-header.component.html',\n encapsulation: ViewEncapsulation.None,\n})\nexport class C3ExpansionHeaderComponent {\n public title = input<string>();\n public isExpanded = input<boolean>(false);\n public toggleExpand = output();\n\n @HostBinding('class') get hostClass() {\n return 'c3-expansion-header';\n }\n}\n","<ng-content>\n @if(title()) {\n <h4 class=\"text-lg\">\n {{ title() }}\n </h4>\n }\n <button\n mat-icon-button\n (click)=\"toggleExpand.emit()\"\n [matTooltip]=\"isExpanded() ? 'Réduire' : 'Développer'\"\n >\n <mat-icon>{{\n isExpanded() ? \"expand_less\" : \"expand_more\"\n }}</mat-icon>\n </button>\n</ng-content>\n","import { AfterViewInit, Directive, ElementRef, Input } from '@angular/core';\nimport autoAnimate, {\n AutoAnimateOptions,\n AutoAnimationPlugin,\n} from '@formkit/auto-animate';\n\n@Directive({\n selector: '[c3AutoAnimate]',\n standalone: true,\n})\nexport class C3AutoAnimateDirective implements AfterViewInit {\n @Input() options?: Partial<AutoAnimateOptions> | AutoAnimationPlugin;\n constructor(private el: ElementRef) {}\n\n ngAfterViewInit(): void {\n autoAnimate(this.el.nativeElement, this.options);\n }\n}\n","import {\n Component,\n contentChild,\n effect,\n ElementRef,\n HostBinding,\n inject,\n input,\n model,\n OnDestroy,\n} from '@angular/core';\nimport { C3AutoAnimateDirective } from '../../../c3-auto-animate/c3-auto-animate.directive';\nimport { C3ExpansionHeaderComponent } from '../c3-expansion-header/c3-expansion-header.component';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'c3-expansion',\n templateUrl: './c3-expansion.component.html',\n hostDirectives: [\n {\n directive: C3AutoAnimateDirective,\n inputs: ['options'],\n },\n ],\n})\nexport class C3ExpansionComponent implements OnDestroy {\n public headerClass = input<string>('c3-expansion-header');\n public isExpanded = model<boolean>(false);\n\n @HostBinding('class') get hostClass() {\n return 'c3-expansion';\n }\n\n public readonly _elementRef = inject(ElementRef);\n public readonly header = contentChild(C3ExpansionHeaderComponent);\n\n private expandSubsciption: Subscription | undefined;\n\n constructor() {\n effect(() => {\n this.expandSubsciption?.unsubscribe();\n\n this.header()?.toggleExpand.subscribe(() => this.toggleExpand());\n });\n }\n\n ngOnDestroy() {\n this.expandSubsciption?.unsubscribe();\n }\n\n toggleExpand() {\n this.isExpanded.set(!this.isExpanded());\n }\n}\n","<div [class]=\"headerClass()\">\n <ng-content select=\"c3-expansion-header\">\n <c3-expansion-header />\n </ng-content>\n</div>\n\n<div *ngIf=\"isExpanded()\">\n <ng-content></ng-content>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { C3ExpansionHeaderComponent } from './components/c3-expansion-header/c3-expansion-header.component';\nimport { C3ExpansionComponent } from './components/c3-expansion/c3-expansion.component';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { C3AutoAnimateDirective } from '../c3-auto-animate/c3-auto-animate.directive';\n\n@NgModule({\n declarations: [C3ExpansionComponent, C3ExpansionHeaderComponent],\n imports: [\n CommonModule,\n C3AutoAnimateDirective,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n MatButtonModule,\n MatToolbarModule,\n ],\n exports: [C3ExpansionComponent, C3ExpansionHeaderComponent],\n})\nexport class C3ExpansionModule {}\n","import { Directive, HostListener } from '@angular/core';\n\n@Directive({\n selector: '[c3SelectOnFocus]',\n standalone: true,\n})\nexport class C3SelectOnFocusDirective {\n @HostListener('focus', ['$event.target'])\n onFocus(target: HTMLInputElement) {\n setTimeout(() => target.select());\n }\n}\n","import { signal, WritableSignal } from '@angular/core';\n\nclass BooleanSignal {\n private _signal: WritableSignal<boolean>;\n\n constructor(initialValue: boolean) {\n this._signal = signal<boolean>(initialValue);\n }\n\n get value() {\n return this._signal();\n }\n\n set value(newValue: boolean) {\n this._signal.set(newValue);\n }\n\n toggle() {\n this._signal.set(!this._signal());\n }\n\n reset() {\n this._signal.set(false);\n }\n\n setToTrue() {\n this._signal.set(true);\n }\n\n setToFalse() {\n this._signal.set(false);\n }\n}\n\nexport function booleanSignal(value: boolean) {\n return new BooleanSignal(value);\n}\n","import { FlatTreeControl } from '@angular/cdk/tree';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Component, effect, model, output } from '@angular/core';\r\nimport { MatRippleModule } from '@angular/material/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport {\r\n MatTreeFlatDataSource,\r\n MatTreeFlattener,\r\n MatTreeModule,\r\n} from '@angular/material/tree';\r\n\r\nexport interface TreeType<T> {\r\n id: number;\r\n level: number;\r\n name: string;\r\n ancestorId?: number;\r\n ancestor?: TreeType<T>;\r\n children: TreeType<T>[];\r\n rawData: T;\r\n}\r\n\r\nexport interface FileNode<RawData> extends TreeType<RawData> {\r\n expandable: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'c3-tree',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n MatTreeModule,\r\n MatIconModule,\r\n MatRippleModule,\r\n MatProgressSpinnerModule,\r\n ],\r\n templateUrl: './c3-tree.component.html',\r\n styleUrls: ['./c3-tree.component.scss'],\r\n})\r\nexport class C3TreeComponent<\r\n RawData,\r\n T extends TreeType<RawData> = TreeType<RawData>\r\n> {\r\n public readonly treeData = model.required<T[]>();\r\n public readonly isLoading = model<boolean>(false);\r\n public readonly treeDataSelected = output<T>();\r\n\r\n private _transformer = (\r\n node: TreeType<RawData>,\r\n level: number\r\n ): FileNode<RawData> => ({\r\n expandable: !!node.children && node.children.length > 0,\r\n children: node.children,\r\n id: node.id,\r\n level,\r\n name: node.name,\r\n rawData: node.rawData,\r\n });\r\n\r\n constructor() {\r\n effect(() => {\r\n this.dataSource.data = this.treeData();\r\n });\r\n }\r\n\r\n public hasChild = (_: number, node: T) => node.children.length > 0;\r\n\r\n public treeControl = new FlatTreeControl<FileNode<RawData>>(\r\n (node) => node.level,\r\n (node) => node.expandable\r\n );\r\n\r\n public treeFlattener = new MatTreeFlattener(\r\n this._transformer,\r\n (node) => node.level,\r\n (node) => node.expandable,\r\n (node) => node.children\r\n );\r\n\r\n public dataSource = new MatTreeFlatDataSource(\r\n this.treeControl,\r\n this.treeFlattener\r\n );\r\n}\r\n","@if(isLoading()) {\r\n<div class=\"c3-tree-loader\">\r\n <mat-spinner diameter=\"50\"></mat-spinner>\r\n</div>\r\n}\r\n\r\n<mat-tree [dataSource]=\"dataSource\" [treeControl]=\"treeControl\">\r\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodePadding class=\"children\">\r\n <button mat-ripple (click)=\"treeDataSelected.emit(node)\">\r\n {{ node.name }}\r\n </button>\r\n </mat-tree-node>\r\n <mat-tree-node\r\n *matTreeNodeDef=\"let node; when: hasChild\"\r\n matTreeNodePadding\r\n class=\"has-children\"\r\n >\r\n <button matTreeNodeToggle [attr.aria-label]=\"'Toggle ' + node.name\">\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 class=\"mat-tree-node-content\">\r\n <ng-content>\r\n <span>{{ node.name }}</span>\r\n </ng-content>\r\n </div>\r\n </mat-tree-node>\r\n</mat-tree>\r\n","import { Component, signal, TemplateRef, viewChild } from '@angular/core';\n\n@Component({\n selector: 'c3-flowing-menu-item',\n templateUrl: './c3-flowing-menu-item.component.html',\n})\nexport class C3FlowingMenuItemComponent {\n public readonly menuTpl = viewChild('menuTpl', {\n read: TemplateRef,\n });\n public readonly contentTpl = viewChild('contentTpl', {\n read: TemplateRef,\n });\n\n public readonly active = signal(false);\n}\n","<ng-template #menuTpl>\n <ng-content select=\"[menu-title]\"></ng-content>\n</ng-template>\n<ng-template #contentTpl>\n <ng-content select=\"c3-flowing-menu-item-content\"></ng-content>\n</ng-template>\n","import {\n Component,\n contentChildren,\n effect,\n model,\n viewChild,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { C3FlowingMenuItemComponent } from '../c3-flowing-menu-item/c3-flowing-menu-item.component';\n\n@Component({\n selector: 'c3-flowing-menu',\n templateUrl: './c3-flowing-menu.component.html',\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'c3-flowing-menu',\n ngSkipHydration: 'true',\n },\n})\nexport class C3FlowingMenuComponent {\n public readonly c3FlowingMenu = contentChildren(C3FlowingMenuItemComponent);\n private readonly targetContentRef = viewChild('targetContent', {\n read: ViewContainerRef,\n });\n\n public readonly selectedIndex = model(0);\n\n constructor() {\n effect(() => {\n if (this.targetContentRef()) {\n this.updateView();\n }\n });\n }\n\n public selectMenu(index: number) {\n this.selectedIndex.set(index);\n this.updateView();\n }\n\n private updateView() {\n if (!this.targetContentRef()) return;\n\n this.targetContentRef()!.clear();\n const selectedMenu = this.c3FlowingMenu()[this.selectedIndex()];\n if (selectedMenu) {\n this.targetContentRef()!.createEmbeddedView(selectedMenu.contentTpl()!);\n }\n }\n}\n","<aside class=\"menu\">\n @for(menu of c3FlowingMenu(); track menu; let i = $index) {\n @if(menu.menuTpl()) {\n <button (click)=\"selectMenu(i)\" [class.active]=\"i === selectedIndex()\">\n <ng-container *ngTemplateOutlet=\"menu.menuTpl()!\"></ng-container>\n </button>\n }\n }\n</aside>\n\n<section class=\"contenu\">\n <ng-container #targetContent></ng-container>\n</section>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'c3-flowing-menu-item-content',\n templateUrl: './c3-flowing-menu-item-content.component.html',\n})\nexport class C3FlowingMenuItemContentComponent {}\n","<ng-content></ng-content>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { C3FlowingMenuComponent } from './components/c3-flowing-menu/c3-flowing-menu.component';\nimport { C3FlowingMenuItemComponent } from './components/c3-flowing-menu-item/c3-flowing-menu-item.component';\nimport { C3FlowingMenuItemContentComponent } from './components/c3-flowing-menu-item-content/c3-flowing-menu-item-content.component';\n\n@NgModule({\n declarations: [\n C3FlowingMenuComponent,\n C3FlowingMenuItemComponent,\n C3FlowingMenuItemContentComponent,\n ],\n imports: [CommonModule],\n exports: [\n C3FlowingMenuComponent,\n C3FlowingMenuItemComponent,\n C3FlowingMenuItemContentComponent,\n ],\n})\nexport class C3FlowingMenuModule {}\n","import {\n Component,\n HostBinding,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\n\n@Component({\n selector: 'c3-trace-card',\n templateUrl: './c3-trace-card.component.html',\n styleUrl: './c3-trace-card.component.scss',\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'c3-trace-card',\n },\n})\nexport class C3TraceCardComponent {\n public readonly align = signal<'left' | 'right'>('left');\n\n @HostBinding('class.align-left')\n get alignLeft() {\n return this.align() === 'left';\n }\n @HostBinding('class.align-right')\n get alignRight() {\n return this.align() === 'right';\n }\n}\n","<div class=\"content\">\n <div class=\"horizontal-line\"></div>\n <ng-content select=\"c3-trace-card-content\"></ng-content>\n</div>\n\n<ng-content select=\"c3-trace-card-title\"></ng-content>\n\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'c3-trace-card-title',\n templateUrl: './c3-trace-card-title.component.html',\n styleUrl: './c3-trace-card-title.component.scss',\n})\nexport class C3TraceCardTitleComponent {}\n","<ng-content></ng-content>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'c3-trace-card-content',\n templateUrl: './c3-trace-card-content.component.html',\n styleUrl: './c3-trace-card-content.component.scss',\n})\nexport class C3TraceCardContentComponent {}\n","<ng-content></ng-content>\n","import { Directive, inject } from '@angular/core';\nimport { C3TraceCardComponent } from '../components/c3-trace-card/c3-trace-card.component';\n\n@Directive({\n selector: 'c3-trace-card[align-left]',\n standalone: true,\n})\nexport class C3TraceCardAlignLeftDirective {\n private readonly c3CardTitle = inject(C3TraceCardComponent, {\n self: true,\n });\n\n constructor() {\n this.c3CardTitle.align.set('left');\n }\n}\n","import { Directive, inject } from '@angular/core';\nimport { C3TraceCardComponent } from '../components/c3-trace-card/c3-trace-card.component';\n\n@Directive({\n selector: 'c3-trace-card[align-right]',\n standalone: true,\n})\nexport class C3TraceCardAlignRightDirective {\n private readonly c3CardTitle = inject(C3TraceCardComponent, {\n self: true,\n });\n\n constructor() {\n this.c3CardTitle.align.set('right');\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { C3TraceCardComponent } from './components/c3-trace-card/c3-trace-card.component';\nimport { C3TraceCardTitleComponent } from './components/c3-trace-card-title/c3-trace-card-title.component';\nimport { C3TraceCardContentComponent } from './components/c3-trace-card-content/c3-trace-card-content.component';\nimport { C3TraceCardAlignLeftDirective } from './directives/align-left.directive';\nimport { C3TraceCardAlignRightDirective } from './directives/align-right.directive';\n\n@NgModule({\n declarations: [\n C3TraceCardComponent,\n C3TraceCardTitleComponent,\n C3TraceCardContentComponent,\n ],\n imports: [\n CommonModule,\n C3TraceCardAlignLeftDirective,\n C3TraceCardAlignRightDirective,\n ],\n exports: [\n C3TraceCardComponent,\n C3TraceCardTitleComponent,\n C3TraceCardContentComponent,\n C3TraceCardAlignLeftDirective,\n C3TraceCardAlignRightDirective,\n ],\n})\nexport class C3TraceCardModule {}\n","/*\n * Public API Surface of c3-components\n */\n\nexport * from './lib/c3-file-viewer/models/http.client';\n\n/**\n * Dropdown\n */\nexport * from './lib/c3-dropdown/components/c3-dropdown.component';\nexport * from './lib/c3-dropdown/directives/c3-dropdown.trigger';\nexport * from './lib/c3-dropdown/c3-dropdown.module';\n\n/**\n * Dialog\n */\nexport * from './lib/c3-dialog/components/c3-dialog-confirm.component';\nexport * from './lib/c3-dialog/components/c3-dialog-prompt.component';\nexport * from './lib/c3-dialog/components/c3-dialog-embed-child.component';\nexport * from './lib/c3-dialog/services/c3-dialog.service';\nexport * from './lib/c3-dialog/c3-dialog.module';\n\n/**\n * File Viewer\n */\nexport * from './lib/c3-file-viewer/components/public/c3-file-viewer/c3-file-viewer.component';\nexport * from './lib/c3-file-viewer/components/public/c3-file-viewer-dialog/c3-file-viewer-dialog.component';\nexport * from './lib/c3-file-viewer/components/public/c3-file-viewer-dialog/c3-file-viewer-dialog';\nexport * from './lib/c3-file-viewer/directives/full-screen.directive';\nexport * from './lib/c3-file-viewer/models/custom-file-event.model';\nexport * from './lib/c3-file-viewer/models/file-viewer-config.model';\nexport * from './lib/c3-file-viewer/models/file-viewer';\nexport * from './lib/c3-file-viewer/models/file-metadata';\nexport * from './lib/c3-file-viewer/c3-file-viewer.module';\n\n/**\n * File Displayer\n */\nexport * from './lib/c3-file-displayer/c3-file-displayer.module';\nexport * from './lib/c3-file-displayer/c3-file-display-list/c3-file-display-list.component';\nexport * from './lib/c3-file-displayer/c3-file-display-icon/c3-file-display-icon.component';\nexport * from './lib/c3-file-displayer/c3-file-display-grid/c3-file-display-grid.component';\nexport * from './lib/c3-file-displayer/c3-file-display-card/c3-file-display-card.component';\n\n/**\n * Safe Url\n */\nexport * from './lib/c3-safe-url/pipes/c3-safe-url.pipe';\n\n/**\n * Expansion\n */\nexport * from './lib/c3-expansion/c3-expansion.module';\nexport * from './lib/c3-expansion/components/c3-expansion/c3-expansion.component';\nexport * from './lib/c3-expansion/components/c3-expansion-header/c3-expansion-header.component';\n\n/**\n * Auto Animate\n */\nexport * from './lib/c3-auto-animate/c3-auto-animate.directive';\n\n/**\n * Select on Focus\n */\nexport * from './lib/c3-select-on-focus/c3-select-on-focus.directive';\n\n/**\n * Toggle Signal\n */\nexport * from './lib/c3-signals/c3-boolean-signal';\n\n/**\n * C3 Tree\n */\nexport * from './lib/c3-tree/c3-tree.component';\n\n/**\n * C3 flowing menu\n */\nexport * from './lib/c3-flowing-menu/c3-flowing-menu.module';\nexport * from './lib/c3-flowing-menu/components/c3-flowing-menu/c3-flowing-menu.component';\nexport * from './lib/c3-flowing-menu/components/c3-flowing-menu-item/c3-flowing-menu-item.component';\nexport * from './lib/c3-flowing-menu/components/c3-flowing-menu-item-content/c3-flowing-menu-item-content.component';\n\n/**\n * C3 Trace Card\n */\nexport * from './lib/c3-trace-card/c3-trace-card.module';\nexport * from './lib/c3-trace-card/components/c3-trace-card/c3-trace-card.component';\nexport * from './lib/c3-trace-card/components/c3-trace-card-content/c3-trace-card-content.component';\nexport * from './lib/c3-trace-card/components/c3-trace-card-title/c3-trace-card-title.component';\nexport * from './lib/c3-trace-card/directives/align-left.directive';\nexport * from './lib/c3-trace-card/directives/align-right.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3","i4","i5","i2.C3SafeUrlPipe","i3.FullScreenDirective","i4.C3FileViewerActionsComponent","i5.C3FileViewerImageComponent","i6.C3FileViewerPdfComponent","i7.C3FileViewerVideoComponent","i1.C3FileViewerComponent","i1.C3FileViewerDialogComponent","i1.C3AutoAnimateDirective","i3.C3ExpansionHeaderComponent"],"mappings":"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"}
1
+ {"version":3,"file":"c3-components.mjs","sources":["../../../projects/c3-components/src/lib/c3-dropdown/components/c3-dropdown.component.ts","../../../projects/c3-components/src/lib/c3-dropdown/directives/c3-dropdown.trigger.ts","../../../projects/c3-components/src/lib/c3-dropdown/c3-dropdown.module.ts","../../../projects/c3-components/src/lib/c3-dialog/components/c3-dialog-confirm.component.ts","../../../projects/c3-components/src/lib/c3-dialog/components/c3-dialog-prompt.component.ts","../../../projects/c3-components/src/lib/c3-dialog/components/c3-dialog-embed-child.component.ts","../../../projects/c3-components/src/lib/c3-dialog/components/c3-dialog-alert.component.ts","../../../projects/c3-components/src/lib/c3-dialog/services/c3-dialog.service.ts","../../../projects/c3-components/src/lib/c3-dialog/c3-dialog.module.ts","../../../projects/c3-components/src/lib/c3-file-viewer/directives/full-screen.directive.ts","../../../projects/c3-components/src/lib/c3-file-viewer/components/c3-file-viewer-actions/c3-file-viewer-actions.component.ts","../../../projects/c3-components/src/lib/c3-file-viewer/components/c3-file-viewer-actions/c3-file-viewer-actions.component.html","../../../projects/c3-components/src/lib/c3-safe-url/pipes/c3-safe-url.pipe.ts","../../../projects/c3-components/src/lib/c3-file-viewer/components/c3-file-viewer-image/c3-file-viewer-image.component.ts","../../../projects/c3-components/src/lib/c3-file-viewer/components/c3-file-viewer-image/c3-file-viewer-image.component.html","../../../projects/c3-components/src/lib/c3-file-viewer/components/c3-file-viewer-pdf/c3-file-viewer-pdf.component.ts","../../../projects/c3-components/src/lib/c3-file-viewer/components/c3-file-viewer-pdf/c3-file-viewer-pdf.component.html","../../../projects/c3-components/src/lib/c3-file-viewer/components/c3-file-viewer-video/c3-file-viewer-video.component.ts","../../../projects/c3-components/src/lib/c3-file-viewer/components/c3-file-viewer-video/c3-file-viewer-video.component.html","../../../projects/c3-components/src/lib/c3-file-viewer/components/public/c3-file-viewer/c3-file-viewer.component.ts","../../../projects/c3-components/src/lib/c3-file-viewer/components/public/c3-file-viewer/c3-file-viewer.component.html","../../../projects/c3-components/src/lib/c3-file-viewer/consts/default.config.ts","../../../projects/c3-components/src/lib/c3-file-viewer/models/custom-file-event.model.ts","../../../projects/c3-components/src/lib/c3-file-viewer/models/file-viewer.ts","../../../projects/c3-components/src/lib/c3-file-viewer/components/public/c3-file-viewer-dialog/c3-file-viewer-dialog.ts","../../../projects/c3-components/src/lib/c3-file-viewer/components/public/c3-file-viewer-dialog/c3-file-viewer-dialog.component.ts","../../../projects/c3-components/src/lib/c3-file-viewer/c3-file-viewer.module.ts","../../../projects/c3-components/src/lib/c3-file-displayer/c3-file-display-card/c3-file-display-card.component.ts","../../../projects/c3-components/src/lib/c3-file-displayer/c3-file-display-card/c3-file-display-card.component.html","../../../projects/c3-components/src/lib/c3-file-displayer/c3-file-display-grid/c3-file-display-grid.component.ts","../../../projects/c3-components/src/lib/c3-file-displayer/c3-file-display-grid/c3-file-display-grid.component.html","../../../projects/c3-components/src/lib/c3-file-displayer/c3-file-display-icon/c3-file-display-icon.component.ts","../../../projects/c3-components/src/lib/c3-file-displayer/c3-file-display-icon/c3-file-display-icon.component.html","../../../projects/c3-components/src/lib/c3-file-displayer/c3-file-display-list/c3-file-display-list.component.ts","../../../projects/c3-components/src/lib/c3-file-displayer/c3-file-display-list/c3-file-display-list.component.html","../../../projects/c3-components/src/lib/c3-file-displayer/c3-file-displayer.module.ts","../../../projects/c3-components/src/lib/c3-expansion/components/c3-expansion-header/c3-expansion-header.component.ts","../../../projects/c3-components/src/lib/c3-expansion/components/c3-expansion-header/c3-expansion-header.component.html","../../../projects/c3-components/src/lib/c3-auto-animate/c3-auto-animate.directive.ts","../../../projects/c3-components/src/lib/c3-expansion/components/c3-expansion/c3-expansion.component.ts","../../../projects/c3-components/src/lib/c3-expansion/components/c3-expansion/c3-expansion.component.html","../../../projects/c3-components/src/lib/c3-expansion/c3-expansion.module.ts","../../../projects/c3-components/src/lib/c3-select-on-focus/c3-select-on-focus.directive.ts","../../../projects/c3-components/src/lib/c3-signals/c3-boolean-signal.ts","../../../projects/c3-components/src/lib/c3-tree/c3-tree.component.ts","../../../projects/c3-components/src/lib/c3-tree/c3-tree.component.html","../../../projects/c3-components/src/lib/c3-flowing-menu/components/c3-flowing-menu-item/c3-flowing-menu-item.component.ts","../../../projects/c3-components/src/lib/c3-flowing-menu/components/c3-flowing-menu-item/c3-flowing-menu-item.component.html","../../../projects/c3-components/src/lib/c3-flowing-menu/components/c3-flowing-menu/c3-flowing-menu.component.ts","../../../projects/c3-components/src/lib/c3-flowing-menu/components/c3-flowing-menu/c3-flowing-menu.component.html","../../../projects/c3-components/src/lib/c3-flowing-menu/components/c3-flowing-menu-item-content/c3-flowing-menu-item-content.component.ts","../../../projects/c3-components/src/lib/c3-flowing-menu/components/c3-flowing-menu-item-content/c3-flowing-menu-item-content.component.html","../../../projects/c3-components/src/lib/c3-flowing-menu/c3-flowing-menu.module.ts","../../../projects/c3-components/src/lib/c3-trace-card/components/c3-trace-card/c3-trace-card.component.ts","../../../projects/c3-components/src/lib/c3-trace-card/components/c3-trace-card/c3-trace-card.component.html","../../../projects/c3-components/src/lib/c3-trace-card/components/c3-trace-card-title/c3-trace-card-title.component.ts","../../../projects/c3-components/src/lib/c3-trace-card/components/c3-trace-card-title/c3-trace-card-title.component.html","../../../projects/c3-components/src/lib/c3-trace-card/components/c3-trace-card-content/c3-trace-card-content.component.ts","../../../projects/c3-components/src/lib/c3-trace-card/components/c3-trace-card-content/c3-trace-card-content.component.html","../../../projects/c3-components/src/lib/c3-trace-card/directives/align-left.directive.ts","../../../projects/c3-components/src/lib/c3-trace-card/directives/align-right.directive.ts","../../../projects/c3-components/src/lib/c3-trace-card/c3-trace-card.module.ts","../../../projects/c3-components/src/public-api.ts","../../../projects/c3-components/src/c3-components.ts"],"sourcesContent":["import {\n ChangeDetectorRef,\n Component,\n TemplateRef,\n ViewChild,\n Input,\n OnChanges,\n SimpleChanges,\n} from '@angular/core';\n\n@Component({\n selector: 'c3-dropdown',\n template: `\n <ng-template>\n <div class=\"c3-dropdown-panel\" [ngClass]=\"dropdownClass\">\n <ng-content></ng-content>\n </div>\n </ng-template>\n `,\n})\nexport class C3DropdownComponent implements OnChanges {\n @ViewChild(TemplateRef) template!: TemplateRef<any>;\n\n /** Classes to be added to the container of the content. Supports the same syntax as `ngClass`. */\n @Input()\n dropdownClass: string | string[] | Set<string> | { [key: string]: any } = '';\n\n constructor(private _changeDetectorRef: ChangeDetectorRef) {}\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['dropdownClass']) {\n this._markForCheck();\n }\n }\n\n _markForCheck(): void {\n this._changeDetectorRef.markForCheck();\n }\n}\n","import {\n Directive,\n forwardRef,\n ElementRef,\n ViewContainerRef,\n Input,\n OnDestroy,\n HostListener,\n OnChanges,\n SimpleChanges,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\n Overlay,\n OverlayRef,\n OverlayConfig,\n ConnectedPosition,\n} from '@angular/cdk/overlay';\nimport { C3DropdownComponent } from '../components/c3-dropdown.component';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { merge, Subject, Subscription, takeUntil } from 'rxjs';\n\nexport const MAT_DROPDOWN_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => C3DropdownTrigger),\n multi: true,\n};\n\n/**\n * @description The C3DropdownTrigger directive is used to display or hide a dropdown menu\n * C3DropdownComponent when an item is clicked.\n * @selector [c3Dropdown]\n * @exportAs c3DropdownTrigger\n * @input c3Dropdown - A reference to an instance of C3DropdownComponent.\n * @input c3DropdownDisabled - A boolean indicating whether the directive should be disabled.\n * @input c3DropdownClass - A string, an array of strings, a set of strings or a\n * object representing the CSS classes to be applied to the dropdown menu.\n */\n@Directive({\n selector: '[c3Dropdown]',\n exportAs: 'c3DropdownTrigger',\n providers: [MAT_DROPDOWN_VALUE_ACCESSOR],\n})\nexport class C3DropdownTrigger implements OnChanges, OnDestroy {\n private overlayRef?: OverlayRef | null;\n private _closingActionsSubscription: Subscription = Subscription.EMPTY;\n private _destroyed = new Subject<void>();\n\n private _dropdownClass:\n | string\n | string[]\n | Set<string>\n | { [key: string]: any } = '';\n\n private _dropdownDisabled: boolean = false;\n\n /** The dropdown menu instance */\n @Input('c3Dropdown')\n dropdown?: C3DropdownComponent;\n\n /** Whether the dropdown is disabled. */\n @Input('c3DropdownDisabled')\n get dropdownDisabled(): boolean {\n return this._dropdownDisabled;\n }\n set dropdownDisabled(value: boolean) {\n this._dropdownDisabled = coerceBooleanProperty(value);\n }\n\n /** Classes to be passed to the dropdown menu. Supports the same syntax as `ngClass`. */\n @Input('c3DropdownClass')\n dropdownClass: string | string[] | Set<string> | { [key: string]: any } = '';\n\n constructor(\n private _element: ElementRef<HTMLElement>,\n private _overlay: Overlay,\n private _viewContainerRef: ViewContainerRef\n ) {}\n\n @HostListener('click')\n onClick() {\n this.show();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['dropdownClass'] && this.dropdown) {\n this.dropdown.dropdownClass = this._dropdownClass;\n this.dropdown._markForCheck();\n }\n }\n\n ngOnDestroy() {\n this._destroyed.next();\n this._destroyed.complete();\n this._closingActionsSubscription.unsubscribe();\n this.close();\n }\n\n public show(): void {\n if (!this.dropdown) return;\n\n const overlayRef = this._overlay.create(this._getOverlayConfig());\n const portal = new TemplatePortal(\n this.dropdown.template,\n this._viewContainerRef\n );\n overlayRef.attach(portal);\n\n this.overlayRef = overlayRef;\n\n this._closingActionsSubscription = this._menuClosingActions().subscribe(\n () => this.close()\n );\n }\n\n public close(): void {\n if (this.overlayRef && this.overlayRef.hasAttached())\n this.overlayRef.detach();\n }\n\n private _getOverlayConfig(): OverlayConfig {\n const belowPosition: ConnectedPosition = {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n };\n const abovePosition: ConnectedPosition = {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n\n // The overlay edge connected to the trigger should have squared corners, while\n // the opposite end has rounded corners. We apply a CSS class to swap the\n // border-radius based on the overlay position.\n panelClass: 'mat-autocomplete-panel-above',\n };\n\n const positionStrategy = this._overlay\n .position()\n .flexibleConnectedTo(this._element)\n .withLockedPosition()\n .withPositions([belowPosition, abovePosition]);\n\n return new OverlayConfig({\n positionStrategy,\n backdropClass: 'cdk-overlay-transparent-backdrop',\n hasBackdrop: true,\n });\n }\n\n /** Returns a stream that emits whenever an action that should close the menu occurs. */\n private _menuClosingActions() {\n const backdrop = this.overlayRef!.backdropClick();\n const detachments = this.overlayRef!.detachments();\n\n return merge(backdrop, detachments).pipe(takeUntil(this._destroyed));\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { C3DropdownComponent } from './components/c3-dropdown.component';\nimport { C3DropdownTrigger } from './directives/c3-dropdown.trigger';\nimport { OverlayModule } from '@angular/cdk/overlay';\n\n@NgModule({\n imports: [CommonModule, OverlayModule],\n declarations: [C3DropdownComponent, C3DropdownTrigger],\n exports: [C3DropdownComponent, C3DropdownTrigger],\n})\nexport class C3DropdownModule {}\n","import { Component, Inject } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\n\r\nexport interface ConfirmConfig {\r\n text: string;\r\n placeholder?: string;\r\n reject?: {\r\n color?: string;\r\n text?: string;\r\n };\r\n accept?: {\r\n color?: string;\r\n text: string;\r\n };\r\n width?: string;\r\n}\r\n\r\n@Component({\r\n selector: 'ConfirmDialogComponent',\r\n template: `\r\n <mat-dialog-content>\r\n <div [innerHtml]=\"data.text\"></div>\r\n </mat-dialog-content>\r\n <mat-dialog-actions class=\"flex flex-row justify-end items-center\">\r\n <button mat-button mat-dialog-close [color]=\"data.reject?.color\">\r\n {{ data.reject?.text }}\r\n </button>\r\n <button mat-button [color]=\"data.accept?.color\" [mat-dialog-close]=\"true\">\r\n {{ data.accept?.text }}\r\n </button>\r\n </mat-dialog-actions>\r\n `,\r\n})\r\nexport class ConfirmDialogComponent {\r\n constructor(\r\n public dialogRef: MatDialogRef<ConfirmDialogComponent>,\r\n @Inject(MAT_DIALOG_DATA)\r\n public data: ConfirmConfig\r\n ) {}\r\n\r\n onNoClick(): void {\r\n this.dialogRef.close();\r\n }\r\n}\r\n","import { Component, Inject } from '@angular/core';\r\nimport { FormBuilder, FormControl, ValidatorFn } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\n\r\nexport interface PromptConfig {\r\n text: string;\r\n defaultValue?: string;\r\n placeholder?: string;\r\n multiline?: boolean;\r\n validators?: ValidatorFn | ValidatorFn[];\r\n required?: boolean;\r\n reject?: {\r\n color: string;\r\n text: string;\r\n };\r\n accept?: {\r\n color: string;\r\n text: string;\r\n };\r\n width?: string;\r\n maxWidth?: string;\r\n}\r\n\r\n@Component({\r\n selector: 'PrompDialogComponent',\r\n template: `\r\n <div mat-dialog-title>{{ data.text }}</div>\r\n <mat-dialog-content>\r\n <mat-form-field>\r\n <mat-label *ngIf=\"data.placeholder\">{{ data.placeholder }}</mat-label>\r\n <input\r\n *ngIf=\"!data.multiline\"\r\n matInput\r\n [formControl]=\"result\"\r\n (keydown.enter)=\"dialogRef.close(result.value)\"\r\n />\r\n <textarea\r\n *ngIf=\"data.multiline\"\r\n matInput\r\n [formControl]=\"result\"\r\n cdkTextareaAutosize\r\n ></textarea>\r\n </mat-form-field>\r\n </mat-dialog-content>\r\n <mat-dialog-actions align=\"center\">\r\n <button mat-raised-button mat-dialog-close [class]=\"data.reject?.color\">\r\n {{ data.reject?.text }}\r\n </button>\r\n <button\r\n mat-raised-button\r\n [disabled]=\"result.invalid || (data.required && !result.value)\"\r\n [class]=\"data.accept?.color\"\r\n [mat-dialog-close]=\"result.value\"\r\n >\r\n {{ data.accept?.text }}\r\n </button>\r\n </mat-dialog-actions>\r\n `,\r\n styles: [\r\n `\r\n mat-form-field {\r\n width: 100%;\r\n }\r\n `,\r\n ],\r\n})\r\nexport class C3PromptDialogComponent {\r\n result: FormControl;\r\n constructor(\r\n public dialogRef: MatDialogRef<C3PromptDialogComponent>,\r\n @Inject(MAT_DIALOG_DATA)\r\n public data: PromptConfig,\r\n private _fb: FormBuilder\r\n ) {\r\n this.result = this._fb.control(data.defaultValue, data.validators);\r\n }\r\n\r\n onNoClick(): void {\r\n this.dialogRef.close();\r\n }\r\n}\r\n","import { ComponentType } from '@angular/cdk/portal';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n Inject,\n Type,\n ViewChild,\n ViewContainerRef,\n signal,\n} from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\n@Component({\n selector: 'C3DialogEmbedChildComponent',\n template: `<mat-dialog-content>\n <mat-toolbar\n *ngIf=\"data.toolbar\"\n [color]=\"data.toolbar.color || 'default'\"\n class=\"py-1\"\n >\n <span>{{ data.toolbar.title }}</span>\n <span class=\"spacer\"></span>\n <button\n *ngIf=\"data.toolbar.closeBtn\"\n mat-icon-button\n mat-dialog-close\n color=\"{{ data.toolbar.closeColor }}\"\n >\n <mat-icon>close</mat-icon>\n </button>\n </mat-toolbar>\n <div class=\"dialog-content\">\n <ng-template #target></ng-template>\n </div>\n </mat-dialog-content>`,\n styles: [\n `\n mat-dialog-content {\n display: flex;\n flex-direction: column;\n height: 100%;\n\n .dialog-content {\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: auto;\n flex-grow: 1;\n }\n .mat-toolbar {\n display: flex;\n justify-content: space-between;\n align-items: center;\n border-radius: 0.25rem;\n span {\n color: inherit;\n }\n }\n .spacer {\n flex: 1 1 auto;\n min-width: 16px;\n }\n }\n `,\n ],\n})\nexport class C3DialogEmbedChildComponent<C> implements AfterViewInit {\n @ViewChild('target', { read: ViewContainerRef }) target!: ViewContainerRef;\n\n createdComponent = signal<ComponentRef<C> | null>(null);\n\n constructor(\n public dialogRef: MatDialogRef<C3DialogEmbedChildComponent<C>>,\n @Inject(MAT_DIALOG_DATA)\n public data: {\n component: ComponentType<C>;\n inputs?: Partial<Record<keyof C, unknown>>;\n toolbar?: {\n title: string;\n closeBtn?: boolean;\n closeColor?: string;\n color?: string;\n };\n },\n private _cdr: ChangeDetectorRef\n ) {}\n\n ngAfterViewInit() {\n this.createdComponent.set(this.target.createComponent(this.data.component));\n\n // detect the inputs of the component\n if (!this.createdComponent) this.dialogRef.close(false);\n\n if (this.data.inputs)\n this._setInputs(\n this.data.component,\n this.data.inputs,\n this.createdComponent()!\n );\n\n this._cdr.detectChanges();\n }\n\n private _getInputProperties<C>(component: Type<C>) {\n const inputs: string[] = [];\n const declaredInputs: Partial<Record<keyof C, string>> =\n component.prototype?.constructor['ɵcmp']?.declaredInputs;\n for (const input of Object.keys(declaredInputs)) inputs.push(input);\n\n return inputs;\n }\n\n private _setInputs<C>(\n component: Type<C>,\n inputs: Partial<Record<keyof C, unknown>>,\n componentRef: ComponentRef<C>\n ) {\n const inputProperties = this._getInputProperties(component);\n for (const key of inputProperties) {\n if (inputs[key as keyof C]) {\n componentRef.setInput(key, inputs[key as keyof C]);\n }\n }\n return component;\n }\n}\n","import { Component, Inject } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\nexport interface AlertConfig {\n text: string;\n width?: string;\n acceptText?: string;\n}\n\n@Component({\n selector: 'AlertDialogComponent',\n template: `\n <mat-dialog-content>\n <div [innerHtml]=\"data.text\"></div>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button mat-button [mat-dialog-close]=\"true\">\n {{ data.acceptText || 'ok' }}\n </button>\n </mat-dialog-actions>\n `,\n})\nexport class C3AlertDialogComponent {\n constructor(\n public dialogRef: MatDialogRef<C3AlertDialogComponent>,\n @Inject(MAT_DIALOG_DATA)\n public data: AlertConfig\n ) {}\n\n onNoClick(): void {\n this.dialogRef.close();\n }\n}\n","import {\n ComponentRef,\n Injectable,\n Injector,\n effect,\n inject,\n} from '@angular/core';\nimport {\n MatDialog,\n MatDialogConfig,\n MatDialogContainer,\n MatDialogRef,\n MatDialogState,\n} from '@angular/material/dialog';\nimport {\n ConfirmConfig,\n ConfirmDialogComponent,\n} from '../components/c3-dialog-confirm.component';\nimport {\n PromptConfig,\n C3PromptDialogComponent,\n} from '../components/c3-dialog-prompt.component';\nimport { ComponentType } from '@angular/cdk/portal';\nimport 'reflect-metadata';\nimport { C3DialogEmbedChildComponent } from '../components/c3-dialog-embed-child.component';\nimport { Observable, Subject } from 'rxjs';\nimport {\n AlertConfig,\n C3AlertDialogComponent,\n} from '../components/c3-dialog-alert.component';\n\nexport type C3CreateDialogFromComponentConfig<C> = MatDialogConfig<\n Partial<Record<keyof C, unknown>>\n> & {\n component: ComponentType<C>;\n toolbar?: {\n title: string;\n closeBtn?: boolean;\n closeColor?: string;\n color?: string;\n };\n};\n\nexport type C3CreateDialogFromComponentResult<C> = {\n _containerInstance: MatDialogContainer;\n rootComponentRef: ComponentRef<C3DialogEmbedChildComponent<C>> | null;\n rootComponentInstance: C3DialogEmbedChildComponent<C>;\n componentRef: ComponentRef<C> | null;\n componentInstance: C | undefined;\n id: string;\n disableClose: boolean;\n close: (dialogResult?: C) => void;\n afterClosed: () => Observable<C | null>;\n afterOpened: () => Observable<void>;\n beforeClosed: () => Observable<C | null>;\n backdropClick: () => Observable<MouseEvent>;\n getState: () => MatDialogState;\n keydownEvents: () => Observable<KeyboardEvent>;\n updateSize: () => void;\n updatePosition: () => void;\n addPanelClass: (className: string) => void;\n removePanelClass: (className: string) => void;\n afterComponentMounted: () => Observable<C3CreateDialogFromComponentResult<C>>;\n};\n\n@Injectable({\n providedIn: 'root',\n})\nexport class C3DialogService {\n readonly #dialog = inject(MatDialog);\n private readonly _injector = inject(Injector);\n\n /**\n * Opens a confirm dialog and returns a promise that resolves to a boolean indicating whether the user accepted or rejected the confirmation.\n *\n * @param {ConfirmConfig} data Configuration options for the confirm dialog. See ConfirmConfig below.\n * @returns {C3ExtendedPromise<boolean>} A promise that resolves to `true` if the user accepted the confirmation, and `false` otherwise.\n */\n public confirm(data: ConfirmConfig) {\n const dialogRef = this.#dialog.open(ConfirmDialogComponent, {\n width: data.width || '250px',\n data: {\n text: data.text,\n reject: {\n color:\n data.reject && data.reject.color ? data.reject.color : undefined,\n text: (data.reject && data.reject.text) || 'Annuler',\n },\n accept: {\n color: (data.accept && data.accept.color) || 'primary',\n text: (data.accept && data.accept.text) || 'Accepter',\n },\n },\n });\n\n return new Promise<boolean>((resolve, reject) => {\n dialogRef.afterClosed().subscribe({\n next: (value) => {\n resolve(value);\n },\n error: reject,\n });\n });\n }\n\n /**\n * Opens a prompt dialog and returns a promise that resolves to the value entered by the user, or `false` if the user cancelled the prompt.\n *\n * @param {PromptConfig} data Configuration options for the prompt dialog. See PromptConfig below.\n * @returns {C3ExtendedPromise<false | T>} A promise that resolves to the value entered by the user, or `false` if the user cancelled the prompt.\n */\n public prompt(data: PromptConfig): Promise<false | string> {\n const dialogRef = this.#dialog.open<C3PromptDialogComponent, any, string>(\n C3PromptDialogComponent,\n {\n width: data.width || '250px',\n maxWidth: data.maxWidth || '100vw',\n data: {\n text: data.text,\n defaultValue: data.defaultValue,\n placeholder: data.placeholder,\n multiline: data.multiline,\n validators: data.validators,\n required: data.required,\n reject: {\n color:\n data.reject && data.reject.color ? data.reject.color : undefined,\n text: (data.reject && data.reject.text) || 'Annuler',\n },\n accept: {\n color: (data.accept && data.accept.color) || 'primary',\n text: (data.accept && data.accept.text) || 'Accepter',\n },\n },\n }\n );\n\n return new Promise<string | false>((resolve, reject) => {\n dialogRef.afterClosed().subscribe({\n next: (value) => {\n if (value === undefined) {\n resolve(false);\n } else {\n resolve(value);\n }\n },\n error: reject,\n });\n });\n }\n\n /**\n * Opens a dialog with the provided component and inputs.\n * @param {C3CreateDialogFromComponentConfig<C>} config Configuration options for the dialog. See MatDialogConfig below.\n * @returns {MatDialogRef<C> & {component: ComponentRef<C> | undefined}} The dialog reference.\n */\n createDialogFromComponent<C>({\n component,\n toolbar,\n data,\n ...config\n }: C3CreateDialogFromComponentConfig<C>) {\n if (!component) throw new Error('No component provided');\n\n const dialog = this.#dialog.open(C3DialogEmbedChildComponent<C>, {\n ...config,\n data: {\n component,\n toolbar,\n inputs: data,\n },\n });\n\n return this.createC3DialogResult(dialog);\n }\n\n public alert(text: string, data?: AlertConfig) {\n const dialogRef = this.#dialog.open(C3AlertDialogComponent, {\n data: {\n ...data,\n text,\n },\n });\n\n return dialogRef.afterClosed();\n }\n\n private createC3DialogResult<C>(\n dialog: MatDialogRef<C3DialogEmbedChildComponent<C>>\n ) {\n const _afterComponentMounted = new Subject<\n C3CreateDialogFromComponentResult<C>\n >();\n\n const result: C3CreateDialogFromComponentResult<C> = {\n _containerInstance: dialog._containerInstance,\n rootComponentRef: dialog.componentRef,\n rootComponentInstance: dialog.componentInstance,\n componentRef: dialog.componentInstance.createdComponent(),\n componentInstance: dialog.componentInstance.createdComponent()?.instance,\n id: dialog.id,\n disableClose: dialog.disableClose || false,\n close: dialog.close.bind(dialog),\n afterClosed: dialog.afterClosed.bind(dialog),\n afterOpened: dialog.afterOpened.bind(dialog),\n beforeClosed: dialog.beforeClosed.bind(dialog),\n backdropClick: dialog.backdropClick.bind(dialog),\n getState: dialog.getState.bind(dialog),\n keydownEvents: dialog.keydownEvents.bind(dialog),\n updateSize: dialog.updateSize.bind(dialog),\n updatePosition: dialog.updatePosition.bind(dialog),\n addPanelClass: dialog.addPanelClass.bind(dialog),\n removePanelClass: dialog.removePanelClass.bind(dialog),\n afterComponentMounted: () => _afterComponentMounted.asObservable(),\n };\n\n effect(\n () => {\n if (dialog.componentInstance.createdComponent()) {\n result.componentRef = dialog.componentInstance.createdComponent();\n result.componentInstance =\n dialog.componentInstance.createdComponent()?.instance;\n _afterComponentMounted.next(result);\n }\n },\n {\n injector: this._injector,\n }\n );\n\n return result;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatInputModule } from '@angular/material/input';\nimport { ConfirmDialogComponent } from './components/c3-dialog-confirm.component';\nimport { C3DialogEmbedChildComponent } from './components/c3-dialog-embed-child.component';\nimport { C3PromptDialogComponent } from './components/c3-dialog-prompt.component';\nimport { C3DialogService } from './services/c3-dialog.service';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatIconModule } from '@angular/material/icon';\nimport { C3AlertDialogComponent } from './components/c3-dialog-alert.component';\n\n@NgModule({\n declarations: [\n C3AlertDialogComponent,\n ConfirmDialogComponent,\n C3PromptDialogComponent,\n C3DialogEmbedChildComponent,\n ],\n imports: [\n CommonModule,\n FormsModule,\n MatButtonModule,\n MatDialogModule,\n MatFormFieldModule,\n MatIconModule,\n MatInputModule,\n MatToolbarModule,\n ReactiveFormsModule,\n ],\n providers: [C3DialogService],\n})\nexport class C3DialogModule {}\n","import { Directive, ElementRef, Input } from '@angular/core';\nimport { BehaviorSubject, debounceTime, filter, skip } from 'rxjs';\n\n@Directive({\n selector: '[C3FullScreen], [c3-full-screen]',\n})\nexport class FullScreenDirective {\n @Input('c3Screenfull')\n set fullscreenState(value: Boolean | null) {\n this._fullscreenState.next(value?.valueOf() || false);\n }\n\n @Input('c3-full-screen')\n set fullscreenStateSetter(value: Boolean | null) {\n this.fullscreenState = value;\n }\n\n private _fullscreenState = new BehaviorSubject(false);\n\n constructor(private el: ElementRef) {\n this._fullscreenState\n .pipe(\n filter((value) => value !== null),\n skip(2),\n debounceTime(100)\n )\n .subscribe(() => {\n this.defineState();\n });\n }\n\n private defineState() {\n if (this._fullscreenState.getValue()) {\n const element: any = this.el.nativeElement;\n\n const requestMethod =\n element.requestFullscreen ||\n element.webkitRequestFullScreen ||\n element.mozRequestFullScreen ||\n element.msRequestFullScreen;\n\n if (requestMethod) {\n // Native full screen.\n requestMethod.call(element);\n } else {\n console.log('FullScreen Request Method Not Supported on this browser.');\n }\n } else {\n const element: any = document;\n\n const requestMethod =\n element.cancelFullscreen ||\n element.webkitExitFullscreen ||\n element.webkitCancelFullScreen ||\n element.mozCancelFullScreen ||\n element.msExitFullScreen;\n\n if (requestMethod) {\n // Native Cancel full screen.\n requestMethod.call(element);\n } else {\n console.log(\n 'FullScreen Cancel Request Method Not Supported on this browser.'\n );\n }\n }\n }\n}\n","import { Component, Host, Input } from '@angular/core';\nimport { C3FileViewer } from '../../models/file-viewer';\n\n@Component({\n selector: 'c3-file-viewer-actions',\n templateUrl: './c3-file-viewer-actions.component.html',\n})\nexport class C3FileViewerActionsComponent {\n @Input()\n fileViewer!: C3FileViewer;\n\n get config() {\n return this.fileViewer.config;\n }\n}\n","<div class=\"nav-button-container\">\n <button\n *ngIf=\"config.btnShow?.prev\"\n type=\"button\"\n [class]=\"config.btnClass\"\n (click)=\"fileViewer.previousImage($event)\"\n [disabled]=\"fileViewer.currentIndex === 0\"\n >\n <span\n *ngIf=\"config.btnIcons?.prev?.classes\"\n [class]=\"config.btnIcons?.prev?.classes\"\n ></span>\n </button>\n <a\n [class]=\"config.btnClass\"\n *ngIf=\"config.btnIcons?.prev?.text\"\n (click)=\"fileViewer.previousImage($event)\"\n >\n <span [class]=\"config.btnSubClass\">{{ config.btnIcons?.prev?.text }}</span>\n </a>\n <button\n *ngIf=\"config.btnShow?.next\"\n type=\"button\"\n [class]=\"config.btnClass\"\n (click)=\"fileViewer.nextImage($event)\"\n [disabled]=\"fileViewer.currentIndex === fileViewer.files.length - 1\"\n >\n <span\n *ngIf=\"config.btnIcons?.next?.classes\"\n [class]=\"config.btnIcons?.next?.classes\"\n ></span>\n </button>\n <a\n [class]=\"config.btnClass\"\n *ngIf=\"config.btnIcons?.next?.text\"\n (click)=\"fileViewer.nextImage($event)\"\n >\n <span [class]=\"config.btnSubClass\">{{ config.btnIcons?.next?.text }}</span>\n </a>\n</div>\n\n<!-- Button Container -->\n<div\n class=\"btn-container\"\n [class]=\"config.btnContainerClass\"\n *ngIf=\"fileViewer.currentFile.type.startsWith('image')\"\n>\n <!-- Rotate Counter Clockwise -->\n <ng-container *ngIf=\"config.btnShow?.rotateCounterClockwise\">\n <button\n type=\"button\"\n [class]=\"config.btnClass\"\n (click)=\"fileViewer.rotateCounterClockwise()\"\n *ngIf=\"config.btnIcons?.rotateCounterClockwise?.classes\"\n >\n <span [class]=\"config.btnIcons?.rotateCounterClockwise?.classes\"></span>\n </button>\n <a\n [class]=\"config.btnClass\"\n *ngIf=\"config.btnIcons?.rotateCounterClockwise?.text\"\n (click)=\"fileViewer.rotateCounterClockwise()\"\n >\n <span [class]=\"config.btnSubClass\">{{\n config.btnIcons?.rotateCounterClockwise?.text\n }}</span>\n </a>\n </ng-container>\n\n <!-- Rotate Clockwise -->\n <ng-container *ngIf=\"config.btnShow?.rotateClockwise\">\n <button\n type=\"button\"\n [class]=\"config.btnClass\"\n (click)=\"fileViewer.rotateClockwise()\"\n *ngIf=\"config.btnIcons?.rotateClockwise?.classes\"\n >\n <span [class]=\"config.btnIcons?.rotateClockwise?.classes\"></span>\n </button>\n <a\n [class]=\"config.btnClass\"\n *ngIf=\"config.btnIcons?.rotateClockwise?.text\"\n (click)=\"fileViewer.rotateClockwise()\"\n >\n <span [class]=\"config.btnSubClass\">{{\n config.btnIcons?.rotateClockwise?.text\n }}</span>\n </a>\n </ng-container>\n\n <!-- Zoom Out -->\n <ng-container *ngIf=\"config.btnShow?.zoomOut\">\n <button\n type=\"button\"\n [class]=\"config.btnClass\"\n (click)=\"fileViewer.zoomOut()\"\n *ngIf=\"config.btnIcons?.zoomOut?.classes\"\n >\n <span [class]=\"config.btnIcons?.zoomOut?.classes\"></span>\n </button>\n <a\n [class]=\"config.btnClass\"\n *ngIf=\"config.btnIcons?.zoomOut?.text\"\n (click)=\"fileViewer.zoomOut()\"\n >\n <span [class]=\"config.btnSubClass\">{{\n config.btnIcons?.zoomOut?.text\n }}</span>\n </a>\n </ng-container>\n\n <!-- Zoom In -->\n <ng-container *ngIf=\"config.btnShow?.zoomIn\">\n <button\n type=\"button\"\n [class]=\"config.btnClass\"\n (click)=\"fileViewer.zoomIn()\"\n *ngIf=\"config.btnIcons?.zoomIn?.classes\"\n >\n <span [class]=\"config.btnIcons?.zoomIn?.classes\"></span>\n </button>\n <a\n [class]=\"config.btnClass\"\n *ngIf=\"config.btnIcons?.zoomIn?.text\"\n (click)=\"fileViewer.zoomIn()\"\n >\n <span [class]=\"config.btnSubClass\">{{\n config.btnIcons?.zoomIn?.text\n }}</span>\n </a>\n </ng-container>\n\n <!-- Fullscreen -->\n <ng-container *ngIf=\"config.allowFullscreen\">\n <button\n type=\"button\"\n [class]=\"config.btnClass\"\n (click)=\"fileViewer.toggleFullscreen()\"\n *ngIf=\"config.btnIcons?.fullscreen?.classes\"\n >\n <span [class]=\"config.btnIcons?.fullscreen?.classes\"></span>\n </button>\n <a\n [class]=\"config.btnClass\"\n *ngIf=\"config.btnIcons?.fullscreen?.text\"\n (click)=\"fileViewer.toggleFullscreen()\"\n >\n <span [class]=\"config.btnSubClass\">{{\n config.btnIcons?.fullscreen?.text\n }}</span>\n </a>\n </ng-container>\n\n <!-- Reset -->\n <ng-container *ngIf=\"config.btnShow?.reset\">\n <button\n type=\"button\"\n [class]=\"config.btnClass\"\n (click)=\"fileViewer.reset()\"\n *ngIf=\"config.btnIcons?.reset?.classes\"\n >\n <span [class]=\"config.btnIcons?.reset?.classes\"></span>\n </button>\n <a\n [class]=\"config.btnClass\"\n *ngIf=\"config.btnIcons?.reset?.text\"\n (click)=\"fileViewer.reset()\"\n >\n <span [class]=\"config.btnSubClass\">{{\n config.btnIcons?.reset?.text\n }}</span>\n </a>\n </ng-container>\n\n <!-- Custom Buttons -->\n <ng-container *ngFor=\"let cBtn of config.customBtns\">\n <button *ngIf=\"cBtn.icon.classes\" type=\"button\" [class]=\"config.btnClass\">\n <span *ngIf=\"cBtn.icon.classes\" [class]=\"cBtn.icon.classes\"></span>\n </button>\n <ng-container *ngIf=\"cBtn.icon.text\">\n <a [class]=\"config.btnClass\" *ngIf=\"cBtn.icon.text\">\n <span [class]=\"config.btnSubClass\">{{ cBtn.icon.text }}</span>\n </a>\n </ng-container>\n </ng-container>\n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Pipe({\n name: 'c3SafeUrl',\n standalone: true,\n})\nexport class C3SafeUrlPipe implements PipeTransform {\n constructor(private sanitizer: DomSanitizer) {}\n transform(url: string | null) {\n return url ? this.sanitizer.bypassSecurityTrustResourceUrl(url) : '';\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { C3FileViewer } from '../../models/file-viewer';\n\n@Component({\n selector: 'c3-file-viewer-image, [c3-file-viewer-image]',\n templateUrl: './c3-file-viewer-image.component.html',\n})\nexport class C3FileViewerImageComponent {\n @Input()\n public fileViewer!: C3FileViewer;\n\n @Output()\n dragstart = new EventEmitter<DragEvent>();\n}\n","<img\n *ngIf=\"fileViewer.currentFile.objectUrl\"\n [src]=\"fileViewer.currentFile.objectUrl | async | c3SafeUrl\"\n [ngStyle]=\"fileViewer.style\"\n alt=\"Image not found...\"\n (dragstart)=\"dragstart.emit($event)\"\n/>\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\nimport { C3FileViewer } from '../../models/file-viewer';\n\n@Component({\n selector: 'c3-file-viewer-pdf',\n templateUrl: './c3-file-viewer-pdf.component.html',\n encapsulation: ViewEncapsulation.None,\n host: {\n style: 'display: block',\n class: 'c3-file-viewer-pdf',\n },\n})\nexport class C3FileViewerPdfComponent {\n @Input()\n public fileViewer!: C3FileViewer;\n\n @Output()\n dragstart = new EventEmitter<DragEvent>();\n}\n","<!-- pdf viewer -->\n<embed\n type=\"application/pdf\"\n [src]=\"fileViewer.currentFile.objectUrl | async | c3SafeUrl\"\n [style.height]=\"'100%'\"\n [style.width]=\"'100%'\"\n/>\n","import { Component, Input } from '@angular/core';\nimport { FileMetadata } from '../../models/file-metadata';\nimport { Subject, filter, mergeMap, tap } from 'rxjs';\nimport { C3FileViewer } from '../../models/file-viewer';\n\n@Component({\n selector: 'c3-file-viewer-video',\n templateUrl: './c3-file-viewer-video.component.html',\n})\nexport class C3FileViewerVideoComponent {\n @Input('file')\n set _srcUpdated({ location }: FileMetadata) {\n this.src$.next(location);\n }\n src = '';\n private src$ = new Subject<string>();\n\n @Input()\n public fileViewer!: C3FileViewer;\n\n constructor() {\n this.src$\n .pipe(\n mergeMap((src) => this.fileViewer.getFile(src)),\n filter((blob) => blob.type.startsWith('application/pdf')),\n tap((blob) => (this.src = URL.createObjectURL(blob)))\n )\n .subscribe({\n next: () => null,\n error: (error) => {\n console.log(error);\n },\n });\n }\n}\n","<video controls [src]=\"src\" crossorigin=\"*\"></video>\n","import {\n Component,\n EventEmitter,\n HostListener,\n Inject,\n Input,\n OnInit,\n Optional,\n Output,\n SimpleChanges,\n ViewEncapsulation,\n} from '@angular/core';\nimport { C3FileViewerConfig } from '../../../models/file-viewer-config.model';\nimport { CustomFileEvent } from '../../../models/custom-file-event.model';\nimport { HttpClient } from '@angular/common/http';\nimport { C3FileViewer } from '../../../models/file-viewer';\n\n@Component({\n selector: 'c3-file-viewer',\n templateUrl: './c3-file-viewer.component.html',\n styleUrls: [],\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'c3-file-viewer',\n },\n})\nexport class C3FileViewerComponent implements OnInit {\n @Input()\n public screenHeightOccupied?: 0; // In Px\n\n @Input()\n public fileViewer!: C3FileViewer;\n\n @Output()\n public indexChange: EventEmitter<number> = new EventEmitter();\n\n @Output()\n public configChange: EventEmitter<C3FileViewerConfig> = new EventEmitter();\n\n @Output()\n public customFileEvent: EventEmitter<CustomFileEvent> = new EventEmitter();\n\n constructor(\n @Optional() @Inject('config') public moduleConfig: C3FileViewerConfig,\n public _http: HttpClient\n ) {}\n\n ngOnInit() {\n this.defineStyleHeight();\n\n this.fileViewer.customFile$.subscribe((event) => {\n this.customFileEvent.emit(event);\n });\n\n this.fileViewer.index$.subscribe((index) => {\n this.indexChange.emit(index);\n });\n\n this.fileViewer.config$.subscribe((config) => {\n this.configChange.emit(config);\n });\n }\n\n @HostListener('mouseover')\n onMouseOver() {\n this.fileViewer.hovered = true;\n }\n\n @HostListener('mouseleave')\n onMouseLeave() {\n this.fileViewer.hovered = false;\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['screenHeightOccupied'] && this.fileViewer)\n this.defineStyleHeight();\n }\n\n @HostListener('window:keyup.ArrowRight', ['$event'])\n next(event: KeyboardEvent) {\n this.fileViewer.nextImage(event);\n }\n\n @HostListener('window:keyup.ArrowLeft', ['$event'])\n previous(event: KeyboardEvent) {\n this.fileViewer.previousImage(event);\n }\n\n defineStyleHeight() {\n this.fileViewer.styleHeight =\n 'calc(100% - ' + this.screenHeightOccupied + 'px)';\n }\n}\n","<div\n class=\"container\"\n *ngIf=\"fileViewer\"\n [c3-full-screen]=\"fileViewer.fullscreen$ | async\"\n [style.height]=\"fileViewer.styleHeight\"\n [style.backgroundColor]=\"fileViewer.config.containerBackgroundColor\"\n (wheel)=\"fileViewer.scrollZoom($event)\"\n (dragover)=\"fileViewer.onDragOver($event)\"\n>\n <c3-file-viewer-image\n *ngIf=\"fileViewer.currentFile.type.startsWith('image')\"\n [fileViewer]=\"fileViewer\"\n [style]=\"fileViewer.style\"\n (dragstart)=\"fileViewer.onDragStart($event)\"\n />\n\n <c3-file-viewer-video\n *ngIf=\"fileViewer.currentFile.type.startsWith('video')\"\n />\n\n <c3-file-viewer-pdf\n *ngIf=\"fileViewer.currentFile.type.startsWith('application/pdf')\"\n [fileViewer]=\"fileViewer\"\n />\n <!-- Div below will be used to hide the 'ghost' image when dragging -->\n <div></div>\n <div class=\"spinner-container\" *ngIf=\"fileViewer.loading\">\n <div class=\"spinner\"></div>\n </div>\n\n <c3-file-viewer-actions [fileViewer]=\"fileViewer\" />\n</div>\n","import { C3FileViewerConfig } from '../models/file-viewer-config.model';\n\nexport const DEFAULT_CONFIG: C3FileViewerConfig = {\n btnContainerClass: 'btn-container',\n btnClass: 'default',\n btnSubClass: 'material-icons',\n zoomFactor: 0.1,\n containerBackgroundColor: '#00000000',\n wheelZoom: false,\n allowFullscreen: true,\n allowKeyboardNavigation: true,\n btnShow: {\n zoomIn: true,\n zoomOut: true,\n rotateClockwise: true,\n rotateCounterClockwise: true,\n next: true,\n prev: true,\n reset: true,\n },\n btnIcons: {\n zoomIn: {\n text: 'zoom_in',\n },\n zoomOut: {\n text: 'zoom_out',\n },\n rotateClockwise: {\n text: 'rotate_right',\n },\n rotateCounterClockwise: {\n text: 'rotate_left',\n },\n fullscreen: {\n text: 'fullscreen',\n },\n reset: {\n text: 'restore',\n },\n },\n};\n","export class CustomFileEvent {\n public name: string;\n public fileUrl: string;\n\n constructor(name: string, fileUrl: string) {\n this.name = name;\n this.fileUrl = fileUrl;\n }\n}\n","import { BehaviorSubject, Observable, map, tap } from 'rxjs';\nimport { DEFAULT_CONFIG } from '../consts/default.config';\nimport { C3FileViewerConfig } from './file-viewer-config.model';\nimport { HttpClient } from '@angular/common/http';\nimport { CustomFileEvent } from './custom-file-event.model';\nimport { FileMetadata } from './file-metadata';\n\nexport class C3FileViewer {\n private _config: C3FileViewerConfig = DEFAULT_CONFIG;\n private client: HttpClient['get'] | undefined;\n get config(): C3FileViewerConfig {\n return this._config;\n }\n\n set config(value: C3FileViewerConfig) {\n this._config = this.mergeConfig(DEFAULT_CONFIG, value);\n this.config$.next(this._config);\n }\n public config$ = new BehaviorSubject<C3FileViewerConfig>(DEFAULT_CONFIG);\n\n public fullscreen$ = new BehaviorSubject<Boolean>(false);\n\n public customFile$ = new BehaviorSubject<any>(null);\n public index$ = new BehaviorSubject<number>(0);\n public loading: boolean = true;\n public currentIndex: number = 0;\n\n get currentFile(): FileMetadata {\n return this.filesObjectUrl[this.currentIndex];\n }\n\n public style = {\n transform: '',\n msTransform: '',\n oTransform: '',\n webkitTransform: '',\n minHeight: 'auto',\n maxHeight: 'auto',\n height: 'auto',\n minWidth: 'auto',\n maxWidth: 'auto',\n width: 'auto',\n };\n public styleHeight = '100%';\n public hovered = false;\n\n public set files(value: FileMetadata[]) {\n this._files = value;\n this.currentIndex = 0;\n this.index$.next(this.currentIndex);\n\n this.filesObjectUrl = value.map((file) => {\n const objectUrl = file.objectUrl || this.createObjectURL(file);\n return {\n ...file,\n objectUrl,\n };\n });\n }\n\n public get files(): FileMetadata[] {\n return this._files;\n }\n\n private _files: FileMetadata[] = [];\n\n public filesObjectUrl: Array<\n FileMetadata & {\n objectUrl: Observable<string>;\n }\n > = [];\n\n private scale = 1;\n private rotation = 0;\n private translateX = 0;\n private translateY = 0;\n private prevX: number = 0;\n private prevY: number = 0;\n\n constructor({\n config,\n files,\n client,\n }: {\n config?: C3FileViewerConfig;\n files?: FileMetadata[];\n client: HttpClient;\n }) {\n if (config) this.config = config;\n if (client) this.client = client.get.bind(client);\n if (files) this.files = files;\n\n this.config$.subscribe((config) => {\n const { minHeight, maxHeight, minWidth, maxWidth, height, width } =\n config;\n this.style.minHeight = this.valueToCss(minHeight);\n this.style.height = this.valueToCss(height);\n this.style.width = this.valueToCss(width);\n this.style.maxHeight = this.valueToCss(maxHeight);\n this.style.minWidth = this.valueToCss(minWidth);\n this.style.maxWidth = this.valueToCss(maxWidth);\n this.styleHeight = this.valueToCss(height);\n\n this.updateStyle();\n });\n }\n\n createObjectURL(file: FileMetadata) {\n this.onLoadStart(file);\n return this.getFile(file.location).pipe(\n map((response) => URL.createObjectURL(response)),\n tap(() => this.onLoad(file))\n );\n }\n\n getFile(location: string) {\n const client = this.config.customClient || this.client;\n if (!client) {\n throw new Error(\n 'No http client provided. Please provide a custom client or import HttpClientModule'\n );\n }\n\n return client(location, {\n responseType: 'blob',\n });\n }\n\n previousImage(event: KeyboardEvent | MouseEvent) {\n if (this.canNavigate(event)) {\n this.loading = true;\n if (this.currentIndex > 0) this.currentIndex--;\n else this.currentIndex = this.files.length - 1;\n this.index$.next(this.currentIndex);\n this.reset();\n }\n }\n\n nextImage(event: KeyboardEvent | MouseEvent) {\n if (this.canNavigate(event)) {\n this.loading = true;\n if (this.currentIndex < this.files.length - 1) this.currentIndex++;\n else this.currentIndex = 0;\n this.index$.next(this.currentIndex);\n this.reset();\n }\n }\n\n zoomIn() {\n this.scale *= 1 + (this.config.zoomFactor || 0);\n this.updateStyle();\n }\n\n zoomOut() {\n if (this.scale > (this.config.zoomFactor || 0)) {\n this.scale /= 1 + (this.config.zoomFactor || 0);\n }\n this.updateStyle();\n }\n\n scrollZoom(evt: WheelEvent) {\n if (this.config.wheelZoom) {\n evt.deltaY > 0 ? this.zoomOut() : this.zoomIn();\n return false;\n } else {\n return true;\n }\n }\n\n rotateClockwise() {\n this.rotation += 90;\n this.updateStyle();\n }\n\n rotateCounterClockwise() {\n this.rotation -= 90;\n this.updateStyle();\n }\n\n onLoad(file: FileMetadata) {\n this.loading = false;\n }\n\n onLoadStart(file: FileMetadata) {\n this.loading = true;\n }\n\n imageNotFound(file: FileMetadata) {\n this.loading = false;\n this.customFile$.next(new CustomFileEvent('imageNotFound', file.location));\n }\n\n onDragOver(evt: DragEvent) {\n this.translateX += evt.clientX - this.prevX;\n this.translateY += evt.clientY - this.prevY;\n this.prevX = evt.clientX;\n this.prevY = evt.clientY;\n this.updateStyle();\n }\n\n onDragStart(evt: DragEvent) {\n if (evt.target && evt.dataTransfer && evt.dataTransfer.setDragImage) {\n const target = evt.target as HTMLDivElement;\n const nextElementSibling = target.nextElementSibling as HTMLDivElement;\n\n if (nextElementSibling)\n evt.dataTransfer.setDragImage(nextElementSibling, 0, 0);\n }\n this.prevX = evt.clientX;\n this.prevY = evt.clientY;\n }\n\n toggleFullscreen() {\n const fullScreenValue = this.fullscreen$.getValue();\n this.fullscreen$.next(!fullScreenValue);\n if (fullScreenValue) this.reset();\n }\n\n reset() {\n this.scale = 1;\n this.rotation = 0;\n this.translateX = 0;\n this.translateY = 0;\n this.updateStyle();\n }\n\n private canNavigate(event: any) {\n return (\n event == null || (this.config.allowKeyboardNavigation && this.hovered)\n );\n }\n\n private updateStyle() {\n this.style.transform = `translate(${this.translateX}px, ${this.translateY}px) rotate(${this.rotation}deg) scale(${this.scale})`;\n this.style.msTransform = this.style.transform;\n this.style.webkitTransform = this.style.transform;\n this.style.oTransform = this.style.transform;\n }\n\n private valueToCss(value: number | string | undefined) {\n return value ? (typeof value === 'string' ? value : value + 'px') : 'auto';\n }\n\n private mergeConfig(\n defaultValues: C3FileViewerConfig,\n overrideValues: C3FileViewerConfig\n ): C3FileViewerConfig {\n let result: C3FileViewerConfig = { ...defaultValues };\n if (overrideValues) {\n result = { ...defaultValues, ...overrideValues };\n\n if (overrideValues.btnIcons) {\n result.btnIcons = {\n ...defaultValues.btnIcons,\n ...overrideValues.btnIcons,\n };\n }\n }\n return result;\n }\n}\n","import { Component, Inject } from '@angular/core';\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { C3FileViewer } from '../../../models/file-viewer';\n\n@Component({\n template: `\n <c3-file-viewer [fileViewer]=\"fileViewer\" [screenHeightOccupied]=\"0\" />\n `,\n})\nexport class C3FileViewerDialog {\n constructor(@Inject(MAT_DIALOG_DATA) public fileViewer: C3FileViewer) {}\n}\n","import { Component, HostListener, Inject, Input } from '@angular/core';\nimport {\n MAT_DIALOG_DATA,\n MatDialog,\n MatDialogConfig,\n} from '@angular/material/dialog';\nimport { C3FileViewer } from '../../../models/file-viewer';\nimport { C3FileViewerDialog } from './c3-file-viewer-dialog';\n\n@Component({\n selector: 'c3-file-viewer-dialog',\n template: ` <ng-content /> `,\n host: {\n class: 'c3-file-viewer-dialog',\n },\n})\nexport class C3FileViewerDialogComponent {\n @Input()\n public fileViewer!: C3FileViewer;\n\n @Input()\n public dialogConfig: Partial<MatDialogConfig> = {\n panelClass: 'c3-file-viewer-dialog',\n width: '80%',\n height: '80%',\n };\n\n constructor(private _dialog: MatDialog) {}\n\n @HostListener('click')\n openDialog() {\n this._dialog.open(C3FileViewerDialog, {\n data: this.fileViewer,\n ...this.dialogConfig,\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { FullScreenDirective } from './directives/full-screen.directive';\nimport { C3FileViewerComponent } from './components/public/c3-file-viewer/c3-file-viewer.component';\nimport { CommonModule } from '@angular/common';\nimport { C3FileViewerActionsComponent } from './components/c3-file-viewer-actions/c3-file-viewer-actions.component';\nimport { C3FileViewerImageComponent } from './components/c3-file-viewer-image/c3-file-viewer-image.component';\nimport { C3FileViewerPdfComponent } from './components/c3-file-viewer-pdf/c3-file-viewer-pdf.component';\nimport { C3FileViewerVideoComponent } from './components/c3-file-viewer-video/c3-file-viewer-video.component';\nimport {\n provideHttpClient,\n withInterceptorsFromDi,\n} from '@angular/common/http';\nimport { C3SafeUrlPipe } from '../../public-api';\nimport { C3FileViewerDialogComponent } from './components/public/c3-file-viewer-dialog/c3-file-viewer-dialog.component';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { C3FileViewerDialog } from './components/public/c3-file-viewer-dialog/c3-file-viewer-dialog';\n\n@NgModule({\n declarations: [\n FullScreenDirective,\n C3FileViewerComponent,\n C3FileViewerActionsComponent,\n C3FileViewerImageComponent,\n C3FileViewerPdfComponent,\n C3FileViewerVideoComponent,\n C3FileViewerDialogComponent,\n C3FileViewerDialog,\n ],\n exports: [\n FullScreenDirective,\n C3FileViewerComponent,\n C3FileViewerDialogComponent,\n ],\n imports: [CommonModule, C3SafeUrlPipe, MatDialogModule],\n providers: [provideHttpClient(withInterceptorsFromDi())],\n})\nexport class C3FileViewerModule {}\n","import { CommonModule } from '@angular/common';\nimport { Component, input, output } from '@angular/core';\nimport { FileMetadata } from '../../c3-file-viewer/models/file-metadata';\nimport { Observable } from 'rxjs';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\n\nexport type C3FileCardSize = '16' | '32' | '64' | '128' | '256';\n\n@Component({\n selector: 'c3-file-display-card',\n standalone: true,\n imports: [CommonModule, MatButtonModule, MatIconModule],\n templateUrl: './c3-file-display-card.component.html',\n styleUrl: './c3-file-display-card.component.scss',\n})\nexport class C3FileDisplayCardComponent {\n public readonly fileObjectUrl = input.required<\n | (FileMetadata & {\n objectUrl?: Observable<string>;\n })\n | null\n >();\n public readonly displayFn = input<(file: FileMetadata) => string>(\n (file) => file.name\n );\n\n public readonly deletable = input<boolean>(false);\n public readonly size = input<C3FileCardSize>('32');\n public readonly onDelete = output();\n\n getFileType(): string {\n const file = this.fileObjectUrl();\n if (file && file.type) {\n if (file.type.startsWith('image')) return 'image';\n if (file.type.startsWith('application')) return 'application';\n if (file.type.startsWith('video')) return 'video';\n }\n return 'unknown';\n }\n\n getFileObjectUrl(): Observable<string> | null {\n const file = this.fileObjectUrl();\n return file && file.objectUrl ? file.objectUrl : null;\n }\n\n getFileName(): string {\n const file = this.fileObjectUrl();\n return file ? this.displayFn()(file) : '';\n }\n\n getDisplayName(): string {\n const file = this.fileObjectUrl();\n return file ? this.displayFn()(file) : '';\n }\n}\n","<button\n class=\"file-card border\"\n [class.size-16]=\"size() === '16'\"\n [class.size-32]=\"size() === '32'\"\n [class.size-64]=\"size() === '64'\"\n [class.size-128]=\"size() === '128'\"\n [class.size-256]=\"size() === '256'\"\n>\n @if(deletable()) {\n <div class=\"actions\">\n <button mat-icon-button color=\"red\" (click)=\"onDelete.emit()\">\n <mat-icon>delete</mat-icon>\n </button>\n </div>\n } @if(fileObjectUrl()) {\n @switch (getFileType()) { @case ('image') {\n <img\n class=\"h-full w-full object-cover\"\n [src]=\"(getFileObjectUrl() | async) || '/default-image.svg'\"\n [alt]=\"getFileName()\"\n />\n } @case ('application') {\n <mat-icon> file-pdf-box </mat-icon>\n } @case ('video') {\n <mat-icon> video </mat-icon>\n }\n }\n\n <div class=\"informations flex justify-between items-center\">\n <span class=\"text-xs text-white\">\n {{ getDisplayName() }}\n </span>\n </div>\n }\n</button>\n","import { CommonModule } from '@angular/common';\nimport {\n Component,\n effect,\n inject,\n input,\n output,\n viewChild,\n} from '@angular/core';\nimport { FileMetadata } from '../../c3-file-viewer/models/file-metadata';\nimport {\n C3FileCardSize,\n C3FileDisplayCardComponent,\n} from '../c3-file-display-card/c3-file-display-card.component';\nimport { C3FileViewerModule } from '../../c3-file-viewer/c3-file-viewer.module';\nimport { C3FileViewer } from '../../c3-file-viewer/models/file-viewer';\nimport { HttpClient } from '@angular/common/http';\nimport { C3FileViewerDialogComponent } from '../../c3-file-viewer/components/public/c3-file-viewer-dialog/c3-file-viewer-dialog.component';\nimport { C3FileViewerConfig } from '../../c3-file-viewer/models/file-viewer-config.model';\n\n@Component({\n selector: 'c3-file-display-grid',\n standalone: true,\n imports: [CommonModule, C3FileDisplayCardComponent, C3FileViewerModule],\n templateUrl: './c3-file-display-grid.component.html',\n styleUrl: './c3-file-display-grid.component.scss',\n})\nexport class C3FileDisplayGridComponent {\n public readonly files = input.required<\n Array<\n FileMetadata & {\n location: string;\n }\n >\n >();\n public readonly config = input<C3FileViewerConfig>();\n public readonly cardSize = input<C3FileCardSize>('32');\n public readonly displayFn = input<\n (file: FileMetadata & { location: string }) => string\n >((file) => file.name);\n\n public readonly deletable = input<boolean>(false);\n public readonly onDelete = output<FileMetadata>();\n public readonly dialog = viewChild(C3FileViewerDialogComponent);\n\n public fileViewer = new C3FileViewer({\n client: inject(HttpClient),\n });\n\n constructor() {\n effect(\n () => {\n this.fileViewer.files = this.files();\n },\n {\n allowSignalWrites: true,\n }\n );\n\n effect(\n () => {\n if (this.config()) this.fileViewer.config = this.config()!;\n },\n {\n allowSignalWrites: true,\n }\n );\n }\n\n openDialog($event: MouseEvent, index: number): void {\n $event.stopPropagation();\n this.fileViewer.currentIndex = index;\n this.dialog()?.openDialog();\n }\n}\n","<c3-file-viewer-dialog [fileViewer]=\"fileViewer\">\n <div class=\"c3-file-display-grid\">\n @for (file of files(); track $index) {\n <c3-file-display-card\n [fileObjectUrl]=\"fileViewer.filesObjectUrl[$index]\"\n [size]=\"cardSize()\"\n (click)=\"openDialog($event, $index)\"\n (onDelete)=\"onDelete.emit(file)\"\n />\n }\n </div>\n</c3-file-viewer-dialog>\n","import { CommonModule } from '@angular/common';\nimport { Component, computed, input } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n selector: 'c3-file-display-icon',\n standalone: true,\n imports: [CommonModule, MatIconModule],\n templateUrl: './c3-file-display-icon.component.html',\n styleUrl: './c3-file-display-icon.component.scss',\n})\nexport class C3FileDisplayIconComponent {\n public readonly fileType = input.required<string>();\n\n public readonly displayedIcon = computed(() => {\n switch (this.fileType()) {\n case 'image/webp':\n case 'image/png':\n case 'image/jpeg':\n case 'image/jpg':\n return 'image';\n case 'video/mp4':\n case 'video/webm':\n return 'play_circle';\n case 'application/pdf':\n return 'picture_as_pdf';\n case 'application/msword':\n case 'application/vnd.openxmlformats-officedocument.wordprocessingml.document':\n return 'description';\n default:\n return 'content_copy';\n }\n });\n\n public readonly color = computed(() => {\n switch (this.fileType()) {\n case 'image/webp':\n case 'image/png':\n case 'image/jpeg':\n case 'image/jpg':\n return 'text-primary';\n case 'video/mp4':\n case 'video/webm':\n return 'text-secondary';\n case 'application/pdf':\n return 'text-error';\n case 'application/msword':\n case 'application/vnd.openxmlformats-officedocument.wordprocessingml.document':\n return 'text-success';\n default:\n return 'text-gray';\n }\n });\n}\n","<mat-icon [ngClass]=\"color()\">{{ displayedIcon() }}</mat-icon>\n","import { CommonModule } from '@angular/common';\nimport { HttpClient } from '@angular/common/http';\nimport {\n Component,\n effect,\n inject,\n input,\n output,\n viewChild,\n} from '@angular/core';\nimport { C3FileViewerDialogComponent } from '../../c3-file-viewer/components/public/c3-file-viewer-dialog/c3-file-viewer-dialog.component';\nimport { FileMetadata } from '../../c3-file-viewer/models/file-metadata';\nimport { C3FileViewer } from '../../c3-file-viewer/models/file-viewer';\nimport { C3FileViewerConfig } from '../../c3-file-viewer/models/file-viewer-config.model';\nimport { MatIconModule } from '@angular/material/icon';\nimport { C3FileViewerModule } from '../../c3-file-viewer/c3-file-viewer.module';\nimport { C3FileDisplayIconComponent } from '../c3-file-display-icon/c3-file-display-icon.component';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'c3-file-display-list',\n standalone: true,\n imports: [\n C3FileViewerModule,\n C3FileDisplayIconComponent,\n CommonModule,\n MatButtonModule,\n MatIconModule,\n MatNativeDateModule,\n MatMenuModule,\n ],\n templateUrl: './c3-file-display-list.component.html',\n styleUrl: './c3-file-display-list.component.scss',\n})\nexport class C3FileDisplayListComponent {\n public readonly files = input.required<\n Array<\n FileMetadata & {\n location: string;\n }\n >\n >();\n public readonly config = input<C3FileViewerConfig>();\n public readonly displayFn = input<\n (file: FileMetadata & { location: string }) => string\n >((file) => file.name);\n\n public readonly deletable = input<boolean>(false);\n public readonly onDelete = output<FileMetadata>();\n public readonly dialog = viewChild(C3FileViewerDialogComponent);\n\n public fileViewer = new C3FileViewer({\n client: inject(HttpClient),\n });\n\n constructor() {\n effect(\n () => {\n this.fileViewer.files = this.files();\n },\n {\n allowSignalWrites: true,\n }\n );\n\n effect(\n () => {\n if (this.config()) this.fileViewer.config = this.config()!;\n },\n {\n allowSignalWrites: true,\n }\n );\n }\n\n openDialog($event: MouseEvent, index: number): void {\n $event.stopPropagation();\n this.fileViewer.currentIndex = index;\n this.dialog()?.openDialog();\n }\n}\n","<!-- header -->\n<div class=\"header\">\n <div class=\"title full\">\n <span>Nom</span>\n </div>\n <div class=\"title\">\n <span>Date d'ajout</span>\n </div>\n <div class=\"icon\">\n <mat-icon>more_vert</mat-icon>\n </div>\n</div>\n<c3-file-viewer-dialog [fileViewer]=\"fileViewer\">\n <div class=\"file-display-list\">\n @for (file of files(); track $index) {\n <button>\n <div class=\"icon\">\n <c3-file-display-icon [fileType]=\"file.type\" />\n </div>\n <div class=\"name\">\n <span>{{ displayFn()(file) }}</span>\n </div>\n <div class=\"date-label\">\n <span>{{\n file.lastModified ? (file.lastModified | date : \"medium\") : \"-\"\n }}</span>\n </div>\n <button mat-icon-button>\n <mat-icon>more_vert</mat-icon>\n </button>\n <mat-menu #menu=\"matMenu\">\n <button mat-menu-item (click)=\"openDialog($event, $index)\">\n Ouvrir\n </button>\n @if (deletable()) {\n <button mat-menu-item (click)=\"onDelete.emit(file)\">Supprimer</button>\n }\n </mat-menu>\n </button>\n }\n </div>\n</c3-file-viewer-dialog>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { C3FileDisplayGridComponent } from './c3-file-display-grid/c3-file-display-grid.component';\nimport { C3FileDisplayListComponent } from './c3-file-display-list/c3-file-display-list.component';\nimport { C3FileDisplayCardComponent } from './c3-file-display-card/c3-file-display-card.component';\nimport { C3FileDisplayIconComponent } from './c3-file-display-icon/c3-file-display-icon.component';\n\n@NgModule({\n declarations: [],\n imports: [\n CommonModule,\n C3FileDisplayGridComponent,\n C3FileDisplayListComponent,\n C3FileDisplayCardComponent,\n C3FileDisplayIconComponent,\n ],\n exports: [\n C3FileDisplayGridComponent,\n C3FileDisplayListComponent,\n C3FileDisplayCardComponent,\n C3FileDisplayIconComponent,\n ],\n})\nexport class C3FileDisplayerModule {}\n","import {\n Component,\n HostBinding,\n ViewEncapsulation,\n input,\n output,\n} from '@angular/core';\n\n@Component({\n selector: 'c3-expansion-header',\n templateUrl: './c3-expansion-header.component.html',\n encapsulation: ViewEncapsulation.None,\n})\nexport class C3ExpansionHeaderComponent {\n public title = input<string>();\n public isExpanded = input<boolean>(false);\n public toggleExpand = output();\n\n @HostBinding('class') get hostClass() {\n return 'c3-expansion-header';\n }\n}\n","<ng-content>\n @if(title()) {\n <h4 class=\"text-lg\">\n {{ title() }}\n </h4>\n }\n <button\n mat-icon-button\n (click)=\"toggleExpand.emit()\"\n [matTooltip]=\"isExpanded() ? 'Réduire' : 'Développer'\"\n >\n <mat-icon>{{\n isExpanded() ? \"expand_less\" : \"expand_more\"\n }}</mat-icon>\n </button>\n</ng-content>\n","import { AfterViewInit, Directive, ElementRef, Input } from '@angular/core';\nimport autoAnimate, {\n AutoAnimateOptions,\n AutoAnimationPlugin,\n} from '@formkit/auto-animate';\n\n@Directive({\n selector: '[c3AutoAnimate]',\n standalone: true,\n})\nexport class C3AutoAnimateDirective implements AfterViewInit {\n @Input() options?: Partial<AutoAnimateOptions> | AutoAnimationPlugin;\n constructor(private el: ElementRef) {}\n\n ngAfterViewInit(): void {\n autoAnimate(this.el.nativeElement, this.options);\n }\n}\n","import {\n Component,\n contentChild,\n effect,\n ElementRef,\n HostBinding,\n inject,\n input,\n model,\n OnDestroy,\n} from '@angular/core';\nimport { C3AutoAnimateDirective } from '../../../c3-auto-animate/c3-auto-animate.directive';\nimport { C3ExpansionHeaderComponent } from '../c3-expansion-header/c3-expansion-header.component';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'c3-expansion',\n templateUrl: './c3-expansion.component.html',\n hostDirectives: [\n {\n directive: C3AutoAnimateDirective,\n inputs: ['options'],\n },\n ],\n})\nexport class C3ExpansionComponent implements OnDestroy {\n public headerClass = input<string>('c3-expansion-header');\n public isExpanded = model<boolean>(false);\n\n @HostBinding('class') get hostClass() {\n return 'c3-expansion';\n }\n\n public readonly _elementRef = inject(ElementRef);\n public readonly header = contentChild(C3ExpansionHeaderComponent);\n\n private expandSubsciption: Subscription | undefined;\n\n constructor() {\n effect(() => {\n this.expandSubsciption?.unsubscribe();\n\n this.header()?.toggleExpand.subscribe(() => this.toggleExpand());\n });\n }\n\n ngOnDestroy() {\n this.expandSubsciption?.unsubscribe();\n }\n\n toggleExpand() {\n this.isExpanded.set(!this.isExpanded());\n }\n}\n","<div [class]=\"headerClass()\">\n <ng-content select=\"c3-expansion-header\">\n <c3-expansion-header />\n </ng-content>\n</div>\n\n<div *ngIf=\"isExpanded()\">\n <ng-content></ng-content>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { C3ExpansionHeaderComponent } from './components/c3-expansion-header/c3-expansion-header.component';\nimport { C3ExpansionComponent } from './components/c3-expansion/c3-expansion.component';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { C3AutoAnimateDirective } from '../c3-auto-animate/c3-auto-animate.directive';\n\n@NgModule({\n declarations: [C3ExpansionComponent, C3ExpansionHeaderComponent],\n imports: [\n CommonModule,\n C3AutoAnimateDirective,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n MatButtonModule,\n MatToolbarModule,\n ],\n exports: [C3ExpansionComponent, C3ExpansionHeaderComponent],\n})\nexport class C3ExpansionModule {}\n","import { Directive, HostListener } from '@angular/core';\n\n@Directive({\n selector: '[c3SelectOnFocus]',\n standalone: true,\n})\nexport class C3SelectOnFocusDirective {\n @HostListener('focus', ['$event.target'])\n onFocus(target: HTMLInputElement) {\n setTimeout(() => target.select());\n }\n}\n","import { signal, WritableSignal } from '@angular/core';\n\nclass BooleanSignal {\n private _signal: WritableSignal<boolean>;\n\n constructor(initialValue: boolean) {\n this._signal = signal<boolean>(initialValue);\n }\n\n get value() {\n return this._signal();\n }\n\n set value(newValue: boolean) {\n this._signal.set(newValue);\n }\n\n toggle() {\n this._signal.set(!this._signal());\n }\n\n reset() {\n this._signal.set(false);\n }\n\n setToTrue() {\n this._signal.set(true);\n }\n\n setToFalse() {\n this._signal.set(false);\n }\n}\n\nexport function booleanSignal(value: boolean) {\n return new BooleanSignal(value);\n}\n","import { FlatTreeControl } from '@angular/cdk/tree';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Component, effect, model, output } from '@angular/core';\r\nimport { MatRippleModule } from '@angular/material/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport {\r\n MatTreeFlatDataSource,\r\n MatTreeFlattener,\r\n MatTreeModule,\r\n} from '@angular/material/tree';\r\n\r\nexport interface TreeType<T> {\r\n id: number;\r\n level: number;\r\n name: string;\r\n ancestorId?: number;\r\n ancestor?: TreeType<T>;\r\n children: TreeType<T>[];\r\n rawData: T;\r\n}\r\n\r\nexport interface FileNode<RawData> extends TreeType<RawData> {\r\n expandable: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'c3-tree',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n MatTreeModule,\r\n MatIconModule,\r\n MatRippleModule,\r\n MatProgressSpinnerModule,\r\n ],\r\n templateUrl: './c3-tree.component.html',\r\n styleUrls: ['./c3-tree.component.scss'],\r\n})\r\nexport class C3TreeComponent<\r\n RawData,\r\n T extends TreeType<RawData> = TreeType<RawData>\r\n> {\r\n public readonly treeData = model.required<T[]>();\r\n public readonly isLoading = model<boolean>(false);\r\n public readonly treeDataSelected = output<T>();\r\n\r\n private _transformer = (\r\n node: TreeType<RawData>,\r\n level: number\r\n ): FileNode<RawData> => ({\r\n expandable: !!node.children && node.children.length > 0,\r\n children: node.children,\r\n id: node.id,\r\n level,\r\n name: node.name,\r\n rawData: node.rawData,\r\n });\r\n\r\n constructor() {\r\n effect(() => {\r\n this.dataSource.data = this.treeData();\r\n });\r\n }\r\n\r\n public hasChild = (_: number, node: T) => node.children.length > 0;\r\n\r\n public treeControl = new FlatTreeControl<FileNode<RawData>>(\r\n (node) => node.level,\r\n (node) => node.expandable\r\n );\r\n\r\n public treeFlattener = new MatTreeFlattener(\r\n this._transformer,\r\n (node) => node.level,\r\n (node) => node.expandable,\r\n (node) => node.children\r\n );\r\n\r\n public dataSource = new MatTreeFlatDataSource(\r\n this.treeControl,\r\n this.treeFlattener\r\n );\r\n}\r\n","@if(isLoading()) {\r\n<div class=\"c3-tree-loader\">\r\n <mat-spinner diameter=\"50\"></mat-spinner>\r\n</div>\r\n}\r\n\r\n<mat-tree [dataSource]=\"dataSource\" [treeControl]=\"treeControl\">\r\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodePadding class=\"children\">\r\n <button mat-ripple (click)=\"treeDataSelected.emit(node)\">\r\n {{ node.name }}\r\n </button>\r\n </mat-tree-node>\r\n <mat-tree-node\r\n *matTreeNodeDef=\"let node; when: hasChild\"\r\n matTreeNodePadding\r\n class=\"has-children\"\r\n >\r\n <button matTreeNodeToggle [attr.aria-label]=\"'Toggle ' + node.name\">\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 class=\"mat-tree-node-content\">\r\n <ng-content>\r\n <span>{{ node.name }}</span>\r\n </ng-content>\r\n </div>\r\n </mat-tree-node>\r\n</mat-tree>\r\n","import { Component, signal, TemplateRef, viewChild } from '@angular/core';\n\n@Component({\n selector: 'c3-flowing-menu-item',\n templateUrl: './c3-flowing-menu-item.component.html',\n})\nexport class C3FlowingMenuItemComponent {\n public readonly menuTpl = viewChild('menuTpl', {\n read: TemplateRef,\n });\n public readonly contentTpl = viewChild('contentTpl', {\n read: TemplateRef,\n });\n\n public readonly active = signal(false);\n}\n","<ng-template #menuTpl>\n <ng-content select=\"[menu-title]\"></ng-content>\n</ng-template>\n<ng-template #contentTpl>\n <ng-content select=\"c3-flowing-menu-item-content\"></ng-content>\n</ng-template>\n","import {\n Component,\n contentChildren,\n effect,\n model,\n viewChild,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport { C3FlowingMenuItemComponent } from '../c3-flowing-menu-item/c3-flowing-menu-item.component';\n\n@Component({\n selector: 'c3-flowing-menu',\n templateUrl: './c3-flowing-menu.component.html',\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'c3-flowing-menu',\n ngSkipHydration: 'true',\n },\n})\nexport class C3FlowingMenuComponent {\n public readonly c3FlowingMenu = contentChildren(C3FlowingMenuItemComponent);\n private readonly targetContentRef = viewChild('targetContent', {\n read: ViewContainerRef,\n });\n\n public readonly selectedIndex = model(0);\n\n constructor() {\n effect(() => {\n if (this.targetContentRef()) {\n this.updateView();\n }\n });\n }\n\n public selectMenu(index: number) {\n this.selectedIndex.set(index);\n this.updateView();\n }\n\n private updateView() {\n if (!this.targetContentRef()) return;\n\n this.targetContentRef()!.clear();\n const selectedMenu = this.c3FlowingMenu()[this.selectedIndex()];\n if (selectedMenu) {\n this.targetContentRef()!.createEmbeddedView(selectedMenu.contentTpl()!);\n }\n }\n}\n","<aside class=\"menu\">\n @for(menu of c3FlowingMenu(); track menu; let i = $index) {\n @if(menu.menuTpl()) {\n <button (click)=\"selectMenu(i)\" [class.active]=\"i === selectedIndex()\">\n <ng-container *ngTemplateOutlet=\"menu.menuTpl()!\"></ng-container>\n </button>\n }\n }\n</aside>\n\n<section class=\"contenu\">\n <ng-container #targetContent></ng-container>\n</section>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'c3-flowing-menu-item-content',\n templateUrl: './c3-flowing-menu-item-content.component.html',\n})\nexport class C3FlowingMenuItemContentComponent {}\n","<ng-content></ng-content>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { C3FlowingMenuComponent } from './components/c3-flowing-menu/c3-flowing-menu.component';\nimport { C3FlowingMenuItemComponent } from './components/c3-flowing-menu-item/c3-flowing-menu-item.component';\nimport { C3FlowingMenuItemContentComponent } from './components/c3-flowing-menu-item-content/c3-flowing-menu-item-content.component';\n\n@NgModule({\n declarations: [\n C3FlowingMenuComponent,\n C3FlowingMenuItemComponent,\n C3FlowingMenuItemContentComponent,\n ],\n imports: [CommonModule],\n exports: [\n C3FlowingMenuComponent,\n C3FlowingMenuItemComponent,\n C3FlowingMenuItemContentComponent,\n ],\n})\nexport class C3FlowingMenuModule {}\n","import {\n Component,\n HostBinding,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\n\n@Component({\n selector: 'c3-trace-card',\n templateUrl: './c3-trace-card.component.html',\n styleUrl: './c3-trace-card.component.scss',\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'c3-trace-card',\n },\n})\nexport class C3TraceCardComponent {\n public readonly align = signal<'left' | 'right'>('left');\n\n @HostBinding('class.align-left')\n get alignLeft() {\n return this.align() === 'left';\n }\n @HostBinding('class.align-right')\n get alignRight() {\n return this.align() === 'right';\n }\n}\n","<div class=\"content\">\n <div class=\"horizontal-line\"></div>\n <ng-content select=\"c3-trace-card-content\"></ng-content>\n</div>\n\n<ng-content select=\"c3-trace-card-title\"></ng-content>\n\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'c3-trace-card-title',\n templateUrl: './c3-trace-card-title.component.html',\n styleUrl: './c3-trace-card-title.component.scss',\n})\nexport class C3TraceCardTitleComponent {}\n","<ng-content></ng-content>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'c3-trace-card-content',\n templateUrl: './c3-trace-card-content.component.html',\n styleUrl: './c3-trace-card-content.component.scss',\n})\nexport class C3TraceCardContentComponent {}\n","<ng-content></ng-content>\n","import { Directive, inject } from '@angular/core';\nimport { C3TraceCardComponent } from '../components/c3-trace-card/c3-trace-card.component';\n\n@Directive({\n selector: 'c3-trace-card[align-left]',\n standalone: true,\n})\nexport class C3TraceCardAlignLeftDirective {\n private readonly c3CardTitle = inject(C3TraceCardComponent, {\n self: true,\n });\n\n constructor() {\n this.c3CardTitle.align.set('left');\n }\n}\n","import { Directive, inject } from '@angular/core';\nimport { C3TraceCardComponent } from '../components/c3-trace-card/c3-trace-card.component';\n\n@Directive({\n selector: 'c3-trace-card[align-right]',\n standalone: true,\n})\nexport class C3TraceCardAlignRightDirective {\n private readonly c3CardTitle = inject(C3TraceCardComponent, {\n self: true,\n });\n\n constructor() {\n this.c3CardTitle.align.set('right');\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { C3TraceCardComponent } from './components/c3-trace-card/c3-trace-card.component';\nimport { C3TraceCardTitleComponent } from './components/c3-trace-card-title/c3-trace-card-title.component';\nimport { C3TraceCardContentComponent } from './components/c3-trace-card-content/c3-trace-card-content.component';\nimport { C3TraceCardAlignLeftDirective } from './directives/align-left.directive';\nimport { C3TraceCardAlignRightDirective } from './directives/align-right.directive';\n\n@NgModule({\n declarations: [\n C3TraceCardComponent,\n C3TraceCardTitleComponent,\n C3TraceCardContentComponent,\n ],\n imports: [\n CommonModule,\n C3TraceCardAlignLeftDirective,\n C3TraceCardAlignRightDirective,\n ],\n exports: [\n C3TraceCardComponent,\n C3TraceCardTitleComponent,\n C3TraceCardContentComponent,\n C3TraceCardAlignLeftDirective,\n C3TraceCardAlignRightDirective,\n ],\n})\nexport class C3TraceCardModule {}\n","/*\n * Public API Surface of c3-components\n */\n\nexport * from './lib/c3-file-viewer/models/http.client';\n\n/**\n * Dropdown\n */\nexport * from './lib/c3-dropdown/components/c3-dropdown.component';\nexport * from './lib/c3-dropdown/directives/c3-dropdown.trigger';\nexport * from './lib/c3-dropdown/c3-dropdown.module';\n\n/**\n * Dialog\n */\nexport * from './lib/c3-dialog/components/c3-dialog-confirm.component';\nexport * from './lib/c3-dialog/components/c3-dialog-prompt.component';\nexport * from './lib/c3-dialog/components/c3-dialog-embed-child.component';\nexport * from './lib/c3-dialog/services/c3-dialog.service';\nexport * from './lib/c3-dialog/c3-dialog.module';\n\n/**\n * File Viewer\n */\nexport * from './lib/c3-file-viewer/components/public/c3-file-viewer/c3-file-viewer.component';\nexport * from './lib/c3-file-viewer/components/public/c3-file-viewer-dialog/c3-file-viewer-dialog.component';\nexport * from './lib/c3-file-viewer/components/public/c3-file-viewer-dialog/c3-file-viewer-dialog';\nexport * from './lib/c3-file-viewer/directives/full-screen.directive';\nexport * from './lib/c3-file-viewer/models/custom-file-event.model';\nexport * from './lib/c3-file-viewer/models/file-viewer-config.model';\nexport * from './lib/c3-file-viewer/models/file-viewer';\nexport * from './lib/c3-file-viewer/models/file-metadata';\nexport * from './lib/c3-file-viewer/c3-file-viewer.module';\n\n/**\n * File Displayer\n */\nexport * from './lib/c3-file-displayer/c3-file-displayer.module';\nexport * from './lib/c3-file-displayer/c3-file-display-list/c3-file-display-list.component';\nexport * from './lib/c3-file-displayer/c3-file-display-icon/c3-file-display-icon.component';\nexport * from './lib/c3-file-displayer/c3-file-display-grid/c3-file-display-grid.component';\nexport * from './lib/c3-file-displayer/c3-file-display-card/c3-file-display-card.component';\n\n/**\n * Safe Url\n */\nexport * from './lib/c3-safe-url/pipes/c3-safe-url.pipe';\n\n/**\n * Expansion\n */\nexport * from './lib/c3-expansion/c3-expansion.module';\nexport * from './lib/c3-expansion/components/c3-expansion/c3-expansion.component';\nexport * from './lib/c3-expansion/components/c3-expansion-header/c3-expansion-header.component';\n\n/**\n * Auto Animate\n */\nexport * from './lib/c3-auto-animate/c3-auto-animate.directive';\n\n/**\n * Select on Focus\n */\nexport * from './lib/c3-select-on-focus/c3-select-on-focus.directive';\n\n/**\n * Toggle Signal\n */\nexport * from './lib/c3-signals/c3-boolean-signal';\n\n/**\n * C3 Tree\n */\nexport * from './lib/c3-tree/c3-tree.component';\n\n/**\n * C3 flowing menu\n */\nexport * from './lib/c3-flowing-menu/c3-flowing-menu.module';\nexport * from './lib/c3-flowing-menu/components/c3-flowing-menu/c3-flowing-menu.component';\nexport * from './lib/c3-flowing-menu/components/c3-flowing-menu-item/c3-flowing-menu-item.component';\nexport * from './lib/c3-flowing-menu/components/c3-flowing-menu-item-content/c3-flowing-menu-item-content.component';\n\n/**\n * C3 Trace Card\n */\nexport * from './lib/c3-trace-card/c3-trace-card.module';\nexport * from './lib/c3-trace-card/components/c3-trace-card/c3-trace-card.component';\nexport * from './lib/c3-trace-card/components/c3-trace-card-content/c3-trace-card-content.component';\nexport * from './lib/c3-trace-card/components/c3-trace-card-title/c3-trace-card-title.component';\nexport * from './lib/c3-trace-card/directives/align-left.directive';\nexport * from './lib/c3-trace-card/directives/align-right.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3","i4","i5","i2.C3SafeUrlPipe","i3.FullScreenDirective","i4.C3FileViewerActionsComponent","i5.C3FileViewerImageComponent","i6.C3FileViewerPdfComponent","i7.C3FileViewerVideoComponent","i1.C3FileViewerComponent","i1.C3FileViewerDialogComponent","i1.C3AutoAnimateDirective","i3.C3ExpansionHeaderComponent"],"mappings":"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"}