c3-components 0.15.0 → 0.15.1

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,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { input, signal, viewChild, TemplateRef, inject, ChangeDetectorRef, effect, Component, forwardRef, model, HostListener, Directive, NgModule, Inject, Injector, Injectable, Pipe, output, ViewEncapsulation, Optional, computed, InjectionToken, contentChild, contentChildren, ViewContainerRef, HostBinding, ElementRef, DestroyRef } from '@angular/core';
2
+ import { input, signal, viewChild, TemplateRef, inject, ChangeDetectorRef, effect, Component, forwardRef, model, HostListener, Directive, NgModule, Inject, ViewContainerRef, Injector, Injectable, Pipe, output, ViewEncapsulation, Optional, computed, InjectionToken, contentChild, contentChildren, HostBinding, ElementRef, DestroyRef } from '@angular/core';
3
3
  import * as i1 from '@angular/common';
4
4
  import { CommonModule } from '@angular/common';
5
5
  import * as i2 from '@angular/forms';
@@ -380,14 +380,21 @@ class C3DialogEmbedChildComponent {
380
380
  this.dialogRef = dialogRef;
381
381
  this.data = data;
382
382
  this._cdr = _cdr;
383
- this.target = viewChild.required('target');
383
+ this.target = viewChild('target', ...(ngDevMode ? [{ debugName: "target", read: ViewContainerRef }] : [{
384
+ read: ViewContainerRef,
385
+ }]));
384
386
  // On utilise un signal pour stocker la référence du composant créé
385
387
  this.createdComponent = signal(null, ...(ngDevMode ? [{ debugName: "createdComponent" }] : []));
386
388
  }
387
389
  ngAfterViewInit() {
388
390
  // Si on a un composant, on le crée dynamiquement
389
391
  if (this.data.component && !this.data.templateRef) {
390
- const compRef = this.target().createComponent(this.data.component);
392
+ const targetRef = this.target();
393
+ if (!targetRef) {
394
+ console.error('ViewContainerRef not found');
395
+ return;
396
+ }
397
+ const compRef = targetRef.createComponent(this.data.component);
391
398
  this.createdComponent.set(compRef);
392
399
  // Injecter les inputs dans le composant
393
400
  if (this.data.inputs) {
@@ -432,7 +439,7 @@ class C3DialogEmbedChildComponent {
432
439
  }
433
440
  }
434
441
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: C3DialogEmbedChildComponent, deps: [{ token: i1$2.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
435
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: C3DialogEmbedChildComponent, isStandalone: false, selector: "C3DialogEmbedChildComponent", viewQueries: [{ propertyName: "target", first: true, predicate: ["target"], descendants: true, isSignal: true }], ngImport: i0, template: `
442
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: C3DialogEmbedChildComponent, isStandalone: false, selector: "C3DialogEmbedChildComponent", viewQueries: [{ propertyName: "target", first: true, predicate: ["target"], descendants: true, read: ViewContainerRef, isSignal: true }], ngImport: i0, template: `
436
443
  <div [class]="'dialog-content-container ' + (data.classContainer || '')">
437
444
  @if (data.toolbar) {
438
445
  <mat-toolbar [color]="data.toolbar.color || 'default'" class="py-1">
@@ -445,17 +452,17 @@ class C3DialogEmbedChildComponent {
445
452
  }
446
453
  </mat-toolbar>
447
454
  }
448
-
455
+
449
456
  <div [class]="'dialog-content ' + (data.classContent || '')">
450
457
  <!-- Si templateRef est présent, on l'affiche directement,
451
458
  sinon on laisse la place au composant dynamique -->
452
459
  @if (data.templateRef) {
453
460
  <ng-container *ngTemplateOutlet="data.templateRef"></ng-container>
454
461
  } @else {
455
- <ng-template #target></ng-template>
462
+ <ng-container #target></ng-container>
456
463
  }
457
464
  </div>
458
-
465
+
459
466
  @if (data.actions && data.actions.length > 0) {
460
467
  <div [class]="'dialog-actions ' + (data.classActions || '')">
461
468
  @for (action of data.actions; track action.label) {
@@ -490,7 +497,7 @@ class C3DialogEmbedChildComponent {
490
497
  </div>
491
498
  }
492
499
  </div>
493
- `, isInline: true, styles: [".dialog-content-container{display:flex;flex-direction:column;height:100%;padding:1rem;overflow:auto}.dialog-content-container .dialog-content{display:flex;flex-direction:column;height:100%;overflow:auto;flex-grow:1}.dialog-content-container .mat-toolbar{display:flex;justify-content:space-between;align-items:center;border-radius:.25rem}.dialog-content-container .mat-toolbar span{color:inherit}.dialog-content-container .spacer{flex:1 1 auto;min-width:16px}.dialog-actions{display:flex;justify-content:flex-end;gap:.5rem}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: i1$2.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "component", type: i2$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5$1.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }] }); }
500
+ `, isInline: true, styles: [".dialog-content-container{display:flex;flex-direction:column;height:100%;padding:1rem;overflow:auto}.dialog-content-container .dialog-content{display:flex;flex-direction:column;height:100%;overflow:auto;flex-grow:1}.dialog-content-container .mat-toolbar{display:flex;justify-content:space-between;align-items:center;border-radius:.25rem}.dialog-content-container .mat-toolbar span{color:inherit}.dialog-content-container .spacer{flex:1 1 auto;min-width:16px}.dialog-actions{display:flex;justify-content:flex-end;gap:.5rem}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.MatButton, selector: " button[matButton], a[matButton], button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button], a[mat-button], a[mat-raised-button], a[mat-flat-button], a[mat-stroked-button] ", inputs: ["matButton"], exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: i1$2.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "component", type: i2$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5$1.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }] }); }
494
501
  }
495
502
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: C3DialogEmbedChildComponent, decorators: [{
496
503
  type: Component,
@@ -507,17 +514,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
507
514
  }
508
515
  </mat-toolbar>
509
516
  }
510
-
517
+
511
518
  <div [class]="'dialog-content ' + (data.classContent || '')">
512
519
  <!-- Si templateRef est présent, on l'affiche directement,
513
520
  sinon on laisse la place au composant dynamique -->
514
521
  @if (data.templateRef) {
515
522
  <ng-container *ngTemplateOutlet="data.templateRef"></ng-container>
516
523
  } @else {
517
- <ng-template #target></ng-template>
524
+ <ng-container #target></ng-container>
518
525
  }
519
526
  </div>
520
-
527
+
521
528
  @if (data.actions && data.actions.length > 0) {
522
529
  <div [class]="'dialog-actions ' + (data.classActions || '')">
523
530
  @for (action of data.actions; track action.label) {
@@ -552,11 +559,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
552
559
  </div>
553
560
  }
554
561
  </div>
555
- `, standalone: false, styles: [".dialog-content-container{display:flex;flex-direction:column;height:100%;padding:1rem;overflow:auto}.dialog-content-container .dialog-content{display:flex;flex-direction:column;height:100%;overflow:auto;flex-grow:1}.dialog-content-container .mat-toolbar{display:flex;justify-content:space-between;align-items:center;border-radius:.25rem}.dialog-content-container .mat-toolbar span{color:inherit}.dialog-content-container .spacer{flex:1 1 auto;min-width:16px}.dialog-actions{display:flex;justify-content:flex-end;gap:.5rem}\n"] }]
562
+ `, standalone: false, styles: [".dialog-content-container{display:flex;flex-direction:column;height:100%;padding:1rem;overflow:auto}.dialog-content-container .dialog-content{display:flex;flex-direction:column;height:100%;overflow:auto;flex-grow:1}.dialog-content-container .mat-toolbar{display:flex;justify-content:space-between;align-items:center;border-radius:.25rem}.dialog-content-container .mat-toolbar span{color:inherit}.dialog-content-container .spacer{flex:1 1 auto;min-width:16px}.dialog-actions{display:flex;justify-content:flex-end;gap:.5rem}\n"] }]
556
563
  }], ctorParameters: () => [{ type: i1$2.MatDialogRef }, { type: undefined, decorators: [{
557
564
  type: Inject,
558
565
  args: [MAT_DIALOG_DATA]
559
- }] }, { type: i0.ChangeDetectorRef }], propDecorators: { target: [{ type: i0.ViewChild, args: ['target', { isSignal: true }] }] } });
566
+ }] }, { type: i0.ChangeDetectorRef }], propDecorators: { target: [{ type: i0.ViewChild, args: ['target', { ...{
567
+ read: ViewContainerRef,
568
+ }, isSignal: true }] }] } });
560
569
 
561
570
  class C3DialogTemplateComponent {
562
571
  constructor() {
@@ -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-alert.component.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-template/c3-dialog-template.component.ts","../../../projects/c3-components/src/lib/c3-dialog/components/c3-dialog-template/c3-dialog-template.component.html","../../../projects/c3-components/src/lib/c3-dialog/services/c3-dialog.service.ts","../../../projects/c3-components/src/lib/c3-dialog/directives/c3-open-dialog.directive.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/c3-file-viewer-default/c3-file-viewer-default.component.ts","../../../projects/c3-components/src/lib/c3-file-viewer/components/c3-file-viewer-default/c3-file-viewer-default.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/consts/supported-type.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-prevent-event/c3-prevent-click-event.directive.ts","../../../projects/c3-components/src/lib/c3-prevent-event/c3-prevent-keyboard-event.directive.ts","../../../projects/c3-components/src/lib/c3-prevent-event/c3-stop-click-propagation.directive.ts","../../../projects/c3-components/src/lib/c3-file-displayer/c3-file-display-list/tokens.ts","../../../projects/c3-components/src/lib/c3-file-displayer/c3-file-display-list/c3-file-display-list-column-def.directive.ts","../../../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-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/lib/c3-menu/services/c3-menu.service.ts","../../../projects/c3-components/src/lib/c3-menu/components/c3-menu/c3-menu.component.ts","../../../projects/c3-components/src/lib/c3-menu/components/c3-menu/c3-menu.component.html","../../../projects/c3-components/src/lib/c3-menu/components/c3-nav-item/c3-nav-item.component.ts","../../../projects/c3-components/src/lib/c3-menu/components/c3-nav-item/c3-nav-item.component.html","../../../projects/c3-components/src/lib/c3-menu/c3-menu.module.ts","../../../projects/c3-components/src/public-api.ts","../../../projects/c3-components/src/c3-components.ts"],"sourcesContent":["import {\n Component,\n TemplateRef,\n viewChild,\n input,\n inject,\n ChangeDetectorRef,\n effect,\n signal,\n} from '@angular/core';\n\n@Component({\n selector: 'c3-dropdown',\n template: `\n <ng-template>\n <div class=\"c3-dropdown-panel\" [ngClass]=\"panelClass()\">\n <ng-content></ng-content>\n </div>\n </ng-template>\n `,\n standalone: false,\n})\nexport class C3DropdownComponent {\n public readonly panelClass = input<\n string | string[] | Set<string> | { [key: string]: any }\n >();\n\n public readonly isOpen = signal(false);\n\n public readonly template = viewChild.required(TemplateRef<unknown>);\n\n private readonly _changeDetectorRef = inject(ChangeDetectorRef);\n\n constructor() {\n effect(() => {\n if (this.panelClass()) {\n this._changeDetectorRef.markForCheck();\n }\n });\n }\n}\n","import {\n Directive,\n forwardRef,\n ElementRef,\n ViewContainerRef,\n OnDestroy,\n HostListener,\n input,\n model,\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 { 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: '[c3DropdownTrigger]',\n providers: [MAT_DROPDOWN_VALUE_ACCESSOR],\n standalone: false,\n})\nexport class C3DropdownTrigger implements OnDestroy {\n private overlayRef?: OverlayRef | null;\n private _closingActionsSubscription: Subscription = Subscription.EMPTY;\n private _destroyed = new Subject<void>();\n\n /** The dropdown menu instance */\n public readonly dropdown = model.required<C3DropdownComponent>({\n alias: 'c3DropdownTrigger',\n });\n\n /** Whether the dropdown is disabled. */\n public readonly dropdownDisabled = input<boolean>(false);\n\n /** Classes to be passed to the dropdown menu. Supports the same syntax as `ngClass`. */\n public readonly dropdownClass = input<\n string | string[] | Set<string> | { [key: string]: any }\n >('');\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 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().template()) return;\n\n this.dropdown().isOpen.set(true);\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 this.dropdown().isOpen.set(false);\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';\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 standalone: false\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 { 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({\n selector: 'ConfirmDialogComponent',\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 `,\n standalone: false\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({\n selector: 'PrompDialogComponent',\n template: `\n <div mat-dialog-title>{{ data.text }}</div>\n <mat-dialog-content>\n <mat-form-field>\n @if (data.placeholder) {\n <mat-label>{{ data.placeholder }}</mat-label>\n }\n @if (!data.multiline) {\n <input\n matInput\n [formControl]=\"result\"\n (keydown.enter)=\"dialogRef.close(result.value)\"\n />\n }\n @if (data.multiline) {\n <textarea\n matInput\n [formControl]=\"result\"\n cdkTextareaAutosize\n ></textarea>\n }\n </mat-form-field>\n </mat-dialog-content>\n <mat-dialog-actions align=\"center\">\n <button mat-raised-button mat-dialog-close [class]=\"data.reject?.color\">\n {{ data.reject?.text }}\n </button>\n <button\n mat-raised-button\n [disabled]=\"result.invalid || (data.required && !result.value)\"\n [class]=\"data.accept?.color\"\n [mat-dialog-close]=\"result.value\"\n >\n {{ data.accept?.text }}\n </button>\n </mat-dialog-actions>\n `,\n styles: [\n `\r\n mat-form-field {\r\n width: 100%;\r\n }\r\n `,\n ],\n standalone: false\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 Signal,\n TemplateRef,\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: `\n <div [class]=\"'dialog-content-container ' + (data.classContainer || '')\">\n @if (data.toolbar) {\n <mat-toolbar [color]=\"data.toolbar.color || 'default'\" class=\"py-1\">\n <span>{{ data.toolbar.title }}</span>\n <span class=\"spacer\"></span>\n @if (data.toolbar.closeBtn) {\n <button mat-icon-button mat-dialog-close color=\"{{ data.toolbar.closeColor }}\">\n <mat-icon>close</mat-icon>\n </button>\n }\n </mat-toolbar>\n }\n \n <div [class]=\"'dialog-content ' + (data.classContent || '')\">\n <!-- Si templateRef est présent, on l'affiche directement,\n sinon on laisse la place au composant dynamique -->\n @if (data.templateRef) {\n <ng-container *ngTemplateOutlet=\"data.templateRef\"></ng-container>\n } @else {\n <ng-template #target></ng-template>\n }\n </div>\n \n @if (data.actions && data.actions.length > 0) {\n <div [class]=\"'dialog-actions ' + (data.classActions || '')\">\n @for (action of data.actions; track action.label) {\n @switch (action.apperance) {\n @case ('basic') {\n <button [class]=\"action.class\" (click)=\"action.action()\">\n {{ action.label }}\n </button>\n }\n @case ('raised') {\n <button mat-raised-button [class]=\"action.class\" (click)=\"action.action()\">\n {{ action.label }}\n </button>\n }\n @case ('stroked') {\n <button mat-stroked-button [class]=\"action.class\" (click)=\"action.action()\">\n {{ action.label }}\n </button>\n }\n @case ('flat') {\n <button mat-flat-button [class]=\"action.class\" (click)=\"action.action()\">\n {{ action.label }}\n </button>\n }\n @default {\n <button mat-button [class]=\"action.class\" (click)=\"action.action()\">\n {{ action.label }}\n </button>\n }\n }\n }\n </div>\n }\n </div>\n `,\n styles: [\n `\n .dialog-content-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n padding: 1rem;\n overflow: auto;\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 .dialog-actions {\n display: flex;\n justify-content: flex-end;\n gap: 0.5rem;\n }\n `,\n ],\n standalone: false,\n})\nexport class C3DialogEmbedChildComponent<C> implements AfterViewInit {\n public readonly target = viewChild.required<ViewContainerRef>('target');\n\n // On utilise un signal pour stocker la référence du composant créé\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 // Soit component, soit templateRef, ou les deux (mais on utilise en priorité un templateRef si fourni)\n component?: ComponentType<C>;\n templateRef?: TemplateRef<any>;\n\n // Pour les inputs du composant\n inputs?: Partial<Record<keyof C, unknown>>;\n\n // Classes CSS\n classActions?: string;\n classContainer?: string;\n classContent?: string;\n\n // Toolbar\n toolbar?: {\n title: string;\n closeBtn?: boolean;\n closeColor?: string;\n color?: string;\n };\n\n // Boutons d’action\n actions?: {\n label: string;\n apperance?: 'basic' | 'raised' | 'stroked' | 'flat';\n class?: string;\n action: () => void;\n }[];\n },\n private _cdr: ChangeDetectorRef,\n ) {}\n\n ngAfterViewInit() {\n // Si on a un composant, on le crée dynamiquement\n if (this.data.component && !this.data.templateRef) {\n const compRef = this.target().createComponent(this.data.component);\n this.createdComponent.set(compRef);\n\n // Injecter les inputs dans le composant\n if (this.data.inputs) {\n this._setInputs(this.data.component, this.data.inputs, compRef);\n }\n }\n // Si on a juste un templateRef, on ne crée pas de composant :\n // l'affichage est déjà géré dans le template via <ng-template *ngTemplateOutlet=\"...\">\n else if (this.data.templateRef) {\n this.createdComponent.set(null);\n }\n // Si on n'a rien, on ferme le dialog\n else {\n this.dialogRef.close(false);\n }\n\n // Déclenche manuellement le cycle de détection pour actualiser l'affichage\n this._cdr.detectChanges();\n }\n\n /**\n * Retourne la référence du composant créé (s’il y en a un),\n * utile pour le service ou l’appelant.\n */\n public createdComponentInstance(): ComponentRef<C> | null {\n return this.createdComponent();\n }\n\n // Récupère la liste des @Input déclarés sur le composant\n private _getInputProperties<C>(component: Type<C>) {\n const inputs: string[] = [];\n const declaredInputs: Partial<Record<keyof C, string>> = component.prototype?.constructor['ɵcmp']?.declaredInputs;\n for (const input of Object.keys(declaredInputs)) {\n inputs.push(input);\n }\n return inputs;\n }\n\n // Assigne les inputs passés en configuration au composant dynamique\n private _setInputs<C>(component: Type<C>, inputs: Partial<Record<keyof C, unknown>>, componentRef: ComponentRef<C>) {\n const inputProperties = this._getInputProperties(component);\n for (const key of inputProperties) {\n if (inputs[key as keyof C] !== undefined) {\n componentRef.setInput(key, inputs[key as keyof C]);\n }\n }\n }\n}\n","import { Component, signal, TemplateRef, viewChild } from '@angular/core';\nimport { C3CreateDialogFromComponentResult } from '../../services/c3-dialog.service';\n\n@Component({\n selector: 'c3-dialog-template',\n standalone: false,\n templateUrl: './c3-dialog-template.component.html',\n styleUrl: './c3-dialog-template.component.scss',\n})\nexport class C3DialogTemplateComponent {\n public readonly templateRef = viewChild('internalTemplate', {\n read: TemplateRef,\n });\n\n public readonly dialogRef = signal<C3CreateDialogFromComponentResult<unknown> | null>(null)\n}\n","<ng-template #internalTemplate>\n <ng-content></ng-content>\n</ng-template>\n","import {\n ComponentRef,\n Injectable,\n Injector,\n TemplateRef,\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 { 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 classActions?: string;\n classContainer?: string;\n classContent?: string;\n actions?: {\n label: string;\n class?: string;\n apperance?: 'basic' | 'raised' | 'stroked' | 'flat';\n action: () => void;\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 classContainer,\n classContent,\n classActions,\n actions,\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 classActions,\n classContainer,\n classContent,\n actions\n },\n });\n\n return this.createC3DialogResult(dialog);\n }\n\n /**\n * Ouvre un dialog à partir d'un TemplateRef.\n * @param templateRef Le TemplateRef à afficher dans la boîte de dialogue.\n * @param config (optionnel) Configuration pour le MatDialog (dimensions, position, etc.).\n */\n public createDialogFromTemplate(\n templateRef: TemplateRef<any>,\n config?: MatDialogConfig\n ): C3CreateDialogFromComponentResult<unknown> {\n // On ouvre le même composant hôte (C3DialogEmbedChildComponent)\n // mais on lui passe un paramètre templateRef plutôt qu'un component.\n const dialogRef = this.#dialog.open(C3DialogEmbedChildComponent<unknown>, {\n ...config,\n data: {\n templateRef,\n },\n });\n\n // On réutilise la méthode générique pour envelopper le MatDialogRef\n return this.createC3DialogResult(dialogRef);\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 { Directive, inject, input } from '@angular/core';\nimport { C3DialogTemplateComponent } from '../components/c3-dialog-template/c3-dialog-template.component';\nimport { C3DialogService } from '../services/c3-dialog.service';\nimport { MatDialogConfig } from '@angular/material/dialog';\n\n@Directive({\n selector: '[c3-dialog]',\n standalone: false,\n host: {\n '(click)': 'openDialog($event)'\n }\n})\nexport class C3OpenDialogDirective {\n public readonly template = input<C3DialogTemplateComponent>(undefined, {\n alias: 'c3-dialog'\n });\n public readonly config = input<MatDialogConfig>(undefined, {\n alias: 'c3-dialog-config'\n });\n\n private readonly _dialog = inject(C3DialogService)\n\n\n private openDialog($event: MouseEvent) {\n if (!this.template()?.templateRef()) return;\n\n const dialog = this._dialog.createDialogFromTemplate(this.template()!.templateRef()!, this.config())\n this.template()?.dialogRef.set(dialog)\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';\nimport { C3DialogTemplateComponent } from './components/c3-dialog-template/c3-dialog-template.component';\nimport { C3OpenDialogDirective } from './directives/c3-open-dialog.directive';\n\n@NgModule({\n declarations: [\n C3AlertDialogComponent,\n ConfirmDialogComponent,\n C3PromptDialogComponent,\n C3DialogEmbedChildComponent,\n C3DialogTemplateComponent,\n C3OpenDialogDirective,\n ],\n imports: [\n CommonModule,\n FormsModule,\n MatButtonModule,\n MatDialogModule,\n MatFormFieldModule,\n MatIconModule,\n MatInputModule,\n MatToolbarModule,\n ReactiveFormsModule,\n ],\n exports: [\n C3DialogTemplateComponent,\n C3OpenDialogDirective\n ],\n providers: [C3DialogService],\n})\nexport class C3DialogModule { }\n","import { Directive, ElementRef, input, effect } from '@angular/core';\nimport { BehaviorSubject, debounceTime, filter, skip } from 'rxjs';\n\n@Directive({\n selector: '[C3FullScreen], [c3-full-screen]',\n standalone: false\n})\nexport class FullScreenDirective {\n public readonly fullscreenState = input<Boolean | null>(null, { alias: 'c3Screenfull' });\n public readonly fullscreenStateSetter = input<Boolean | null>(null, { alias: 'c3-full-screen' });\n\n private _fullscreenState = new BehaviorSubject(false);\n\n constructor(private el: ElementRef) {\n // Effect to handle fullscreenState changes\n effect(() => {\n const state = this.fullscreenState();\n if (state !== null) {\n this._fullscreenState.next(state.valueOf() || false);\n }\n });\n\n // Effect to handle fullscreenStateSetter changes (alias for fullscreenState)\n effect(() => {\n const state = this.fullscreenStateSetter();\n if (state !== null) {\n this._fullscreenState.next(state.valueOf() || false);\n }\n });\n\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 standalone: false\n})\nexport class C3FileViewerActionsComponent {\n public readonly fileViewer = input.required<C3FileViewer>();\n\n get config() {\n return this.fileViewer().config;\n }\n}\n","<div class=\"nav-button-container\">\n @if (config.btnShow?.prev) {\n <button\n type=\"button\"\n [class]=\"config.btnClass\"\n (click)=\"fileViewer().previousImage($event)\"\n [disabled]=\"fileViewer().currentIndex === 0\"\n >\n @if (config.btnIcons?.prev?.classes) {\n <span [class]=\"config.btnIcons?.prev?.classes\"></span>\n }\n </button>\n @if (config.btnIcons?.prev?.text) {\n <a\n [class]=\"config.btnClass\"\n (click)=\"fileViewer().previousImage($event)\"\n >\n <span [class]=\"config.btnSubClass\">{{ config.btnIcons?.prev?.text }}</span>\n </a>\n }\n }\n @if (config.btnShow?.next) {\n <button\n type=\"button\"\n [class]=\"config.btnClass\"\n (click)=\"fileViewer().nextImage($event)\"\n [disabled]=\"fileViewer().currentIndex === fileViewer().files.length - 1\"\n >\n <span [class]=\"config.btnIcons?.next?.classes\"></span>\n </button>\n }\n\n @if (config.btnIcons?.next?.text) {\n <a\n [class]=\"config.btnClass\"\n (click)=\"fileViewer().nextImage($event)\"\n >\n <span [class]=\"config.btnSubClass\">{{ config.btnIcons?.next?.text }}</span>\n </a>\n }\n</div>\n\n@if (fileViewer().currentFile.type.startsWith('image')) {\n <!-- Button Container -->\n <div\n class=\"btn-container\"\n [class]=\"config.btnContainerClass\"\n >\n <!-- Rotate Counter Clockwise -->\n @if (config.btnShow?.rotateCounterClockwise) {\n @if (config.btnIcons?.rotateCounterClockwise?.classes) {\n <button\n type=\"button\"\n [class]=\"config.btnClass\"\n (click)=\"fileViewer().rotateCounterClockwise()\"\n >\n <span [class]=\"config.btnIcons?.rotateCounterClockwise?.classes\"></span>\n </button>\n }\n @if (config.btnIcons?.rotateCounterClockwise?.text) {\n <a\n [class]=\"config.btnClass\"\n (click)=\"fileViewer().rotateCounterClockwise()\"\n >\n <span [class]=\"config.btnSubClass\">{{\n config.btnIcons?.rotateCounterClockwise?.text\n }}</span>\n </a>\n }\n }\n\n <!-- Rotate Clockwise -->\n @if (config.btnShow?.rotateClockwise) {\n @if (config.btnIcons?.rotateClockwise?.classes) {\n <button\n type=\"button\"\n [class]=\"config.btnClass\"\n (click)=\"fileViewer().rotateClockwise()\"\n >\n <span [class]=\"config.btnIcons?.rotateClockwise?.classes\"></span>\n </button>\n }\n @if (config.btnIcons?.rotateClockwise?.text) {\n <a\n [class]=\"config.btnClass\"\n (click)=\"fileViewer().rotateClockwise()\"\n >\n <span [class]=\"config.btnSubClass\">{{\n config.btnIcons?.rotateClockwise?.text\n }}</span>\n </a>\n }\n }\n\n <!-- Zoom Out -->\n @if (config.btnShow?.zoomOut) {\n @if (config.btnIcons?.zoomOut?.classes) {\n <button\n type=\"button\"\n [class]=\"config.btnClass\"\n (click)=\"fileViewer().zoomOut()\"\n >\n <span [class]=\"config.btnIcons?.zoomOut?.classes\"></span>\n </button>\n <a\n [class]=\"config.btnClass\"\n (click)=\"fileViewer().zoomOut()\"\n >\n <span [class]=\"config.btnSubClass\">{{\n config.btnIcons?.zoomOut?.text\n }}</span>\n </a>\n }\n }\n\n <!-- Zoom In -->\n @if (config.btnShow?.zoomIn) {\n @if (config.btnIcons?.zoomIn?.classes) {\n <button\n type=\"button\"\n [class]=\"config.btnClass\"\n (click)=\"fileViewer().zoomIn()\"\n >\n <span [class]=\"config.btnIcons?.zoomIn?.classes\"></span>\n </button>\n }\n @if (config.btnIcons?.zoomIn?.text) {\n <a\n [class]=\"config.btnClass\"\n (click)=\"fileViewer().zoomIn()\"\n >\n <span [class]=\"config.btnSubClass\">{{\n config.btnIcons?.zoomIn?.text\n }}</span>\n </a>\n }\n }\n\n <!-- Fullscreen -->\n @if (config.allowFullscreen) {\n @if (config.btnIcons?.fullscreen?.classes) {\n <button\n type=\"button\"\n [class]=\"config.btnClass\"\n (click)=\"fileViewer().toggleFullscreen()\"\n >\n <span [class]=\"config.btnIcons?.fullscreen?.classes\"></span>\n </button>\n }\n @if (config.btnIcons?.fullscreen?.text) {\n <a\n [class]=\"config.btnClass\"\n (click)=\"fileViewer().toggleFullscreen()\"\n >\n <span [class]=\"config.btnSubClass\">{{\n config.btnIcons?.fullscreen?.text\n }}</span>\n </a>\n }\n }\n\n <!-- Reset -->\n @if (config.btnShow?.reset) {\n @if (config.btnIcons?.reset?.classes) {\n <button\n type=\"button\"\n [class]=\"config.btnClass\"\n (click)=\"fileViewer().reset()\"\n >\n <span [class]=\"config.btnIcons?.reset?.classes\"></span>\n </button>\n }\n @if (config.btnIcons?.reset?.text) {\n <a\n [class]=\"config.btnClass\"\n (click)=\"fileViewer().reset()\"\n >\n <span [class]=\"config.btnSubClass\">{{\n config.btnIcons?.reset?.text\n }}</span>\n </a>\n }\n }\n\n <!-- Download -->\n @if (config.btnShow?.download) {\n @if (config.btnIcons?.download?.classes) {\n <button type=\"button\" [class]=\"config.btnClass\" (click)=\"fileViewer().download()\">\n <span [class]=\"config.btnIcons?.download?.classes\"></span>\n </button>\n }\n @if (config.btnIcons?.download?.text) {\n <a [class]=\"config.btnClass\" (click)=\"fileViewer().download()\">\n <span [class]=\"config.btnSubClass\">{{ config.btnIcons?.download?.text }}</span>\n </a>\n }\n }\n\n <!-- Custom Buttons -->\n @for (cBtn of config.customBtns; track cBtn.icon.text) {\n @if (cBtn.icon.classes) {\n <button type=\"button\" [class]=\"config.btnClass\">\n <span [class]=\"cBtn.icon.classes\"></span>\n </button>\n }\n @if (cBtn.icon.text) {\n <a [class]=\"config.btnClass\">\n <span [class]=\"config.btnSubClass\">{{ cBtn.icon.text }}</span>\n </a>\n }\n }\n </div>\n}\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, 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 standalone: false\n})\nexport class C3FileViewerImageComponent {\n public readonly fileViewer = input.required<C3FileViewer>();\n\n public readonly dragstart = output<DragEvent>();\n}\n","@if (fileViewer().currentFile.objectUrl) {\n <img\n [src]=\"fileViewer().currentFile.objectUrl | async | c3SafeUrl\"\n [ngStyle]=\"fileViewer().style\"\n alt=\"Image not found...\"\n (dragstart)=\"dragstart.emit($event)\"\n />\n}\n","import {\n Component,\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 standalone: false\n})\nexport class C3FileViewerPdfComponent {\n public readonly fileViewer = input.required<C3FileViewer>();\n\n public readonly dragstart = output<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<!-- floating download button -->\n<button mat-icon-button class=\"download-button\" (click)=\"fileViewer().download()\">\n <mat-icon>download</mat-icon>\n</button>\n","import { Component, input } from '@angular/core';\nimport { C3FileViewer } from '../../models/file-viewer';\n\n@Component({\n selector: 'c3-file-viewer-video',\n templateUrl: './c3-file-viewer-video.component.html',\n standalone: false,\n})\nexport class C3FileViewerVideoComponent {\n public readonly fileViewer = input.required<C3FileViewer>();\n}\n","<video controls [src]=\"fileViewer().currentFile.objectUrl | async | c3SafeUrl\" crossorigin=\"*\"></video>\n","import { Component, input } from '@angular/core';\nimport { C3FileViewer } from '../../models/file-viewer';\n\n@Component({\n selector: 'c3-file-viewer-default',\n templateUrl: './c3-file-viewer-default.component.html',\n styleUrl: './c3-file-viewer-default.component.scss',\n standalone: false,\n})\nexport class C3FileViewerDefaultComponent {\n public readonly fileViewer = input.required<C3FileViewer>();\n}\n","<ng-container>\n <button (click)=\"fileViewer().download()\">Download {{ fileViewer().getOriginalName() }}</button>\n</ng-container>\n","import {\n Component,\n HostListener,\n Inject,\n input,\n OnInit,\n Optional,\n output,\n SimpleChanges,\n ViewEncapsulation,\n effect,\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: ['./c3-file-viewer.component.scss'],\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'c3-file-viewer',\n },\n standalone: false\n})\nexport class C3FileViewerComponent implements OnInit {\n public readonly screenHeightOccupied = input<number | undefined>(0); // In Px\n\n public readonly fileViewer = input.required<C3FileViewer>();\n\n public readonly indexChange = output<number>();\n\n public readonly configChange = output<C3FileViewerConfig>();\n\n public readonly customFileEvent = output<CustomFileEvent>();\n\n constructor(\n @Optional() @Inject('config') public moduleConfig: C3FileViewerConfig,\n public _http: HttpClient\n ) {\n // Setup subscriptions in constructor using effect\n effect(() => {\n const viewer = this.fileViewer();\n\n viewer.customFile$.subscribe((event) => {\n this.customFileEvent.emit(event);\n });\n\n viewer.index$.subscribe((index) => {\n this.indexChange.emit(index);\n });\n\n viewer.config$.subscribe((config) => {\n this.configChange.emit(config);\n });\n });\n }\n\n ngOnInit() {\n this.defineStyleHeight();\n }\n\n @HostListener('mouseover')\n onMouseOver() {\n const viewer = this.fileViewer();\n if (viewer) viewer.hovered = true;\n }\n\n @HostListener('mouseleave')\n onMouseLeave() {\n const viewer = this.fileViewer();\n if (viewer) viewer.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","@if (fileViewer(); as viewer) {\n<div\n class=\"c3-file-container\"\n [c3-full-screen]=\"viewer.fullscreen$ | async\"\n [style.height]=\"viewer.styleHeight\"\n [style.backgroundColor]=\"viewer.config.containerBackgroundColor\"\n (wheel)=\"viewer.scrollZoom($event)\"\n (dragover)=\"viewer.onDragOver($event)\"\n>\n @if (viewer.currentFile.type.startsWith('image')) {\n <c3-file-viewer-image\n [fileViewer]=\"viewer\"\n [style]=\"viewer.style\"\n (dragstart)=\"viewer.onDragStart($event)\"\n />\n } @else if (viewer.currentFile.type.startsWith('video')) {\n <c3-file-viewer-video\n [fileViewer]=\"viewer\"\n />\n } @else if (viewer.currentFile.type.startsWith('application/pdf')) {\n <c3-file-viewer-pdf\n [fileViewer]=\"viewer\"\n />\n } @else {\n <c3-file-viewer-default\n [fileViewer]=\"viewer\"\n />\n }\n\n <!-- Div below will be used to hide the 'ghost' image when dragging -->\n <div></div>\n @if (viewer.loading) {\n <div class=\"spinner-container\">\n <div class=\"spinner\"></div>\n </div>\n }\n\n <c3-file-viewer-actions [fileViewer]=\"viewer\" />\n </div>\n}\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 download: 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 download: {\n text: 'download',\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","export const SUPPORTED_MIME_TYPES: string[] = [\n // Documents et Applications\n // 'text/html',\n // 'text/css',\n // 'text/plain',\n // 'application/javascript',\n // 'application/json',\n // 'application/xml',\n 'application/pdf',\n\n // Images\n 'image/jpeg',\n 'image/png',\n 'image/gif',\n 'image/svg+xml',\n 'image/webp',\n 'image/avif',\n 'image/bmp',\n 'image/x-icon',\n\n // Audio et Vidéo\n // 'audio/mpeg',\n // 'audio/ogg',\n // 'audio/wav',\n // 'audio/webm',\n 'video/mp4',\n 'video/webm',\n 'video/ogg',\n\n // Polices de Caractères\n // 'font/woff',\n // 'font/woff2',\n // 'font/ttf',\n // 'font/otf',\n];\n\nexport function isMimeTypeSupported(mimeType: string): boolean {\n return SUPPORTED_MIME_TYPES.includes(mimeType);\n}\n","import { BehaviorSubject, Observable, map, mergeMap, of, 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, VariantFile } from './file-metadata';\nimport { isMimeTypeSupported } from '../consts/supported-type';\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(newFiles: FileMetadata[]) {\n this._files = newFiles;\n this.currentIndex = 0;\n this.index$.next(this.currentIndex);\n\n for (const file of newFiles) {\n this.filesObjectUrl.push({\n ...file,\n objectUrl: file.objectUrl || this.createObjectURL(file),\n });\n\n if (file.alternativeVersions)\n for (const alternativeVersion of file.alternativeVersions) {\n this.filesObjectUrl.push({\n ...file,\n ...alternativeVersion,\n objectUrl: this.createObjectURL(alternativeVersion),\n });\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 locationBlobMap = new Map<string, string>();\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({ config, files, client }: { config?: C3FileViewerConfig; files?: FileMetadata[]; client: HttpClient }) {\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 } = 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 | VariantFile) {\n this.onLoadStart();\n const fileType = isFileMetadata(file) ? file.type : file.contentType;\n if (!isMimeTypeSupported(fileType)) {\n this.onLoaded();\n return;\n }\n return of(file.location).pipe(\n mergeMap((location) =>\n this.locationBlobMap.has(location)\n ? of(this.locationBlobMap.get(location)!)\n : this.getFile(location).pipe(\n map((response) => URL.createObjectURL(response)),\n tap((url) => this.locationBlobMap.set(location, url)),\n ),\n ),\n tap(() => this.onLoaded()),\n );\n }\n\n /**\n * Encode une URL de manière sûre pour éviter les problèmes avec les caractères spéciaux\n * comme +, espaces, etc.\n * Cette fonction encode correctement les segments du chemin et les paramètres de requête.\n */\n private encodeUrl(url: string): string {\n try {\n // Si l'URL est relative, on doit encoder manuellement\n if (!url.includes('://')) {\n // Pour les URLs relatives, on sépare le chemin et les paramètres de requête\n const [path, query] = url.split('?');\n // Encoder chaque segment du chemin (sauf les séparateurs /)\n const encodedPath = path\n .split('/')\n .map((segment) => (segment ? encodeURIComponent(segment) : ''))\n .join('/');\n\n if (query) {\n // Pour les paramètres de requête, encoder chaque clé et valeur\n const params = query.split('&');\n const encodedParams = params.map((param) => {\n const [key, ...valueParts] = param.split('=');\n const value = valueParts.join('=');\n return `${encodeURIComponent(key)}=${encodeURIComponent(value)}`;\n });\n return `${encodedPath}?${encodedParams.join('&')}`;\n }\n\n return encodedPath;\n }\n\n // Pour les URLs absolues, utiliser le constructeur URL pour parser\n const urlObj = new URL(url);\n\n // Encoder chaque segment du chemin\n const encodedPath = urlObj.pathname\n .split('/')\n .map((segment) => (segment ? encodeURIComponent(segment) : ''))\n .join('/');\n\n // Les searchParams sont déjà gérés correctement par URLSearchParams\n // mais on doit s'assurer que les valeurs sont encodées\n const searchParams = new URLSearchParams();\n urlObj.searchParams.forEach((value, key) => {\n searchParams.append(key, value);\n });\n const encodedSearch = searchParams.toString() ? `?${searchParams.toString()}` : '';\n\n return `${urlObj.protocol}//${urlObj.host}${encodedPath}${encodedSearch}${urlObj.hash}`;\n } catch (e) {\n // Si le parsing échoue (URL malformée ou relative sans base),\n // encoder avec encodeURI qui préserve la structure de l'URL\n return encodeURI(url);\n }\n }\n\n getFile(location: string) {\n const client = this.config.customClient || this.client;\n if (!client) {\n throw new Error('No http client provided. Please provide a custom client or import HttpClientModule');\n }\n\n const encodedLocation = this.encodeUrl(location);\n return client(encodedLocation, {\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 onLoaded() {\n this.loading = false;\n }\n\n onLoadStart() {\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) 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 getOriginalName(file: FileMetadata = this.currentFile) {\n return file.metadata?.['originalName'] || file.name;\n }\n\n private canNavigate(event: any) {\n return event == null || (this.config.allowKeyboardNavigation && this.hovered);\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(defaultValues: C3FileViewerConfig, overrideValues: C3FileViewerConfig): 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 download(file: FileMetadata = this.currentFile) {\n const client = this.config.customClient || this.client;\n\n const originalName = this.getOriginalName(file);\n\n // Si le fichier est déjà en blob (petit fichier déjà chargé)\n if (file.objectUrl && this.locationBlobMap.has(file.location)) {\n const url = this.locationBlobMap.get(file.location)!;\n this.downloadFromUrl(url, originalName);\n }\n // Pour les gros fichiers, on utilise le client fourni avec streaming\n else if (client) {\n this.downloadWithClient(file, client, originalName);\n } else {\n console.error('No http client available for download');\n }\n }\n\n private downloadFromUrl(url: string, filename: string) {\n const a = document.createElement('a');\n a.href = url;\n a.download = filename;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n }\n\n private downloadWithClient(file: FileMetadata, client: HttpClient['get'], originalName: string) {\n // Utiliser le client fourni pour récupérer le fichier\n const encodedLocation = this.encodeUrl(file.location);\n client(encodedLocation, {\n responseType: 'blob',\n }).subscribe({\n next: (blob: Blob) => {\n // Créer une URL blob temporaire pour le téléchargement\n const url = URL.createObjectURL(blob);\n this.downloadFromUrl(url, originalName);\n\n // Nettoyer l'URL après un délai\n setTimeout(() => {\n URL.revokeObjectURL(url);\n }, 1000);\n },\n error: (error) => {\n console.error('Download failed:', error);\n // Fallback: essayer de créer un lien direct vers l'URL\n // (peut fonctionner si l'URL est accessible directement)\n const a = document.createElement('a');\n a.href = file.location;\n a.download = originalName;\n a.target = '_blank';\n a.click();\n },\n });\n }\n}\n\nfunction isFileMetadata(file: FileMetadata | VariantFile): file is FileMetadata {\n return 'type' in file;\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 standalone: false\n})\nexport class C3FileViewerDialog {\n constructor(@Inject(MAT_DIALOG_DATA) public fileViewer: C3FileViewer) {}\n}\n","import { Component, HostListener, input } from '@angular/core';\nimport { MatDialog, MatDialogConfig } 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 standalone: false\n})\nexport class C3FileViewerDialogComponent {\n public readonly fileViewer = input.required<C3FileViewer>();\n\n public readonly dialogConfig = input<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 { provideHttpClient, withInterceptorsFromDi } 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';\nimport { C3FileViewerDefaultComponent } from './components/c3-file-viewer-default/c3-file-viewer-default.component';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\n\n@NgModule({\n declarations: [\n FullScreenDirective,\n C3FileViewerComponent,\n C3FileViewerActionsComponent,\n C3FileViewerImageComponent,\n C3FileViewerPdfComponent,\n C3FileViewerVideoComponent,\n C3FileViewerDialogComponent,\n C3FileViewerDialog,\n C3FileViewerDefaultComponent,\n ],\n exports: [FullScreenDirective, C3FileViewerComponent, C3FileViewerDialogComponent],\n imports: [CommonModule, C3SafeUrlPipe, MatDialogModule, MatIconModule, MatButtonModule],\n providers: [provideHttpClient(withInterceptorsFromDi())],\n})\nexport class C3FileViewerModule {}\n","import { CommonModule } from '@angular/common';\nimport { Component, computed, 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 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>((file) => file.name);\n\n public readonly deletable = input<boolean>(false);\n public readonly size = input<C3FileCardSize>('32');\n public readonly onDelete = output();\n public readonly onDownload = output();\n\n public readonly getFileType = computed(() => {\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 public readonly getFileObjectUrl = computed((): Observable<string> | null => {\n const file = this.fileObjectUrl();\n return file && file.objectUrl ? file.objectUrl : null;\n });\n\n public readonly getFileName = computed((): string => {\n const file = this.fileObjectUrl();\n return file ? this.displayFn()(file) : '';\n });\n\n public readonly getDisplayName = computed((): 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 (click)=\"onDownload.emit()\">\n <mat-icon>download</mat-icon>\n </button>\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","\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 imports: [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\n effect(\n () => {\n if (this.config()) this.fileViewer.config = this.config()!;\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 (onDownload)=\"fileViewer.download(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 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 { Directive, HostListener } from '@angular/core';\n/**\n * A directive that prevents the default action and stops event propagation on click events.\n */\n@Directive({\n selector: '[c3-prevent-click]',\n standalone: true,\n})\nexport class C3PreventClickDirective {\n /**\n * HostListener for the 'click' event.\n * @param {MouseEvent} event - The MouseEvent object representing the click event.\n */\n @HostListener('click', ['$event'])\n public onClick(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n }\n}\n","import { Directive, HostListener, input } from '@angular/core';\n\n/**\n * A directive that prevents the default action and stops event propagation on specified keyboard events.\n */\n@Directive({\n selector: '[c3-prevent-keyboard-event]',\n standalone: true,\n})\nexport class C3PreventKeyboardEventDirective {\n /**\n * The keyboard key to prevent the default action and stop event propagation for. Defaults to 'enter'.\n */\n public readonly key = input<string>('enter');\n\n /**\n * HostListener for the 'keydown' event.\n * @param {KeyboardEvent} event - The KeyboardEvent object representing the keydown event.\n */\n @HostListener('keydown', ['$event'])\n public onKeyDown(event: KeyboardEvent): void {\n // Check if the key pressed matches the input key.\n if (event.key?.toLocaleLowerCase() === this.key().toLocaleLowerCase()) {\n // Prevent the default action associated with the event.\n event.preventDefault();\n // Stop the event from bubbling up the event chain.\n event.stopPropagation();\n }\n }\n}\n","import { Directive, HostListener } from '@angular/core';\n\n@Directive({\n selector: '[c3-stop-click-propagation]',\n standalone: true,\n})\nexport class C3StopPropagationDirective {\n @HostListener('click', ['$event'])\n public onClick(event: MouseEvent): void {\n event.stopImmediatePropagation();\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const C3_FILE_DISPLAY_LIST = new InjectionToken<any>('C3_FILE_DISPLAY_LIST');\n","import { contentChild, Directive, inject, input, TemplateRef } from '@angular/core';\nimport { C3_FILE_DISPLAY_LIST } from './tokens';\n\n@Directive({\n selector: '[c3FileDisplayListColumnDef]',\n})\nexport class C3FileDisplayListColumnDefDirective {\n public readonly title = input.required<string>({\n alias: 'c3FileDisplayListColumnDef',\n });\n public readonly classList = input<string[]>([]);\n private readonly _table = inject(C3_FILE_DISPLAY_LIST, { optional: true });\n\n public readonly headerCellDef = contentChild(C3FileDisplayListHeaderCellDefDirective);\n public readonly cellDef = contentChild(C3FileDisplayListCellDefDirective);\n}\n\n@Directive({\n selector: '[c3FileDisplayListHeaderCellDef]',\n})\nexport class C3FileDisplayListHeaderCellDefDirective {\n template = inject<TemplateRef<any>>(TemplateRef);\n}\n\n@Directive({\n selector: '[c3FileDisplayListCellDef]',\n})\nexport class C3FileDisplayListCellDefDirective {\n template = inject<TemplateRef<any>>(TemplateRef);\n}\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 contentChildren,\n QueryList,\n TemplateRef,\n ViewContainerRef,\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';\nimport { C3StopPropagationDirective } from '../../c3-prevent-event';\nimport { C3_FILE_DISPLAY_LIST } from './tokens';\nimport { C3FileDisplayListColumnDefDirective } from './c3-file-display-list-column-def.directive';\n@Component({\n selector: 'c3-file-display-list',\n imports: [\n C3StopPropagationDirective,\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 providers: [\n {\n provide: C3_FILE_DISPLAY_LIST,\n useExisting: C3FileDisplayListComponent,\n },\n ],\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<(file: FileMetadata & { location: string }) => string>((file) => file.name);\n public readonly columns = input<string[]>(['icon', 'name', 'date']);\n\n public readonly deletable = input<boolean>(false);\n public readonly onDelete = output<FileMetadata>();\n public readonly dialog = viewChild(C3FileViewerDialogComponent);\n\n private readonly _columnDefs = contentChildren(C3FileDisplayListColumnDefDirective);\n private readonly _viewContainer = inject(ViewContainerRef);\n\n public fileViewer = new C3FileViewer({\n client: inject(HttpClient),\n });\n\n constructor() {\n effect(() => {\n this.fileViewer.files = this.files();\n });\n\n effect(() => {\n if (this.config()) this.fileViewer.config = this.config()!;\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 getColumnDef(columnName: string): C3FileDisplayListColumnDefDirective | undefined {\n return this._columnDefs().find((col) => col.title() === columnName);\n }\n}\n","<c3-file-viewer-dialog [fileViewer]=\"fileViewer\">\n<!-- header -->\n <table class=\"file-table\">\n <thead>\n <tr>\n @for (columnName of columns(); track columnName) {\n <th [class.full]=\"columnName === 'name'\" [class.icon]=\"columnName === 'icon'\">\n @if (getColumnDef(columnName)?.headerCellDef()) {\n <ng-container *ngTemplateOutlet=\"getColumnDef(columnName)!.headerCellDef()!.template\"></ng-container>\n } @else {\n @if (columnName === 'icon') {\n <span></span>\n } @else if (columnName === 'name') {\n <span>Nom</span>\n } @else if (columnName === 'date') {\n <span>Date d'ajout</span>\n }\n }\n </th>\n }\n <th class=\"actions\">\n <ng-content></ng-content>\n </th>\n </tr>\n </thead>\n <tbody>\n @for (file of files(); track $index) {\n <tr (click)=\"openDialog($event, $index)\">\n @for (columnName of columns(); track columnName) {\n @if (columnName === 'name') {\n <td class=\"name full\">\n @if (getColumnDef(columnName)?.cellDef()) {\n <ng-container *ngTemplateOutlet=\"getColumnDef(columnName)!.cellDef()!.template; context: { $implicit: file }\"></ng-container>\n } @else {\n <span>{{ displayFn()(file) }}</span>\n }\n </td>\n } @else if (columnName === 'icon') {\n <td class=\"icon\">\n @if (getColumnDef(columnName)?.cellDef()) {\n <ng-container *ngTemplateOutlet=\"getColumnDef(columnName)!.cellDef()!.template; context: { $implicit: file }\"></ng-container>\n } @else {\n <c3-file-display-icon [fileType]=\"file.type\" />\n }\n </td>\n } @else {\n <td [classList]=\"getColumnDef(columnName)?.classList()\">\n @if (getColumnDef(columnName)?.cellDef()) {\n <ng-container *ngTemplateOutlet=\"getColumnDef(columnName)!.cellDef()!.template; context: { $implicit: file }\"></ng-container>\n } @else {\n @if (columnName === 'date') {\n <span>{{ file.lastModified ? (file.lastModified | date:'medium') : '-' }}</span>\n }\n }\n </td>\n }\n }\n <td class=\"actions\">\n <button mat-icon-button [matMenuTriggerFor]=\"menu\" c3-stop-click-propagation>\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 <button mat-menu-item (click)=\"fileViewer.download(file)\">Télécharger</button>\n @if (deletable()) {\n <button mat-menu-item (click)=\"onDelete.emit(file)\">Supprimer</button>\n }\n </mat-menu>\n </td>\n </tr>\n }\n </tbody>\n </table>\n</c3-file-viewer-dialog>\n\n<!-- <div class=\"file-display-list\">\n @for (file of files(); track $index) {\n <button>\n @for (columnName of columns(); track columnName) {\n @if (columnName === 'name') {\n <div class=\"name\">\n @if (getColumnDef(columnName)?.cellDef()) {\n <ng-container *ngTemplateOutlet=\"getColumnDef(columnName)!.cellDef()!.template; context: { $implicit: file }\"></ng-container>\n } @else {\n <span>{{ displayFn()(file) }}</span>\n }\n </div>\n } @else if (columnName === 'icon') {\n <div class=\"icon-cell\">\n @if (getColumnDef(columnName)?.cellDef()) {\n <ng-container *ngTemplateOutlet=\"getColumnDef(columnName)!.cellDef()!.template; context: { $implicit: file }\"></ng-container>\n } @else {\n <div class=\"icon\">\n <c3-file-display-icon [fileType]=\"file.type\" />\n </div>\n }\n </div>\n } @else {\n <div class=\"cell\">\n @if (getColumnDef(columnName)?.cellDef()) {\n <ng-container *ngTemplateOutlet=\"getColumnDef(columnName)!.cellDef()!.template; context: { $implicit: file }\"></ng-container>\n } @else {\n @if (columnName === 'date') {\n <div class=\"date-label\">\n <span>{{ file.lastModified ? (file.lastModified | date:'medium') : '-' }}</span>\n </div>\n }\n }\n </div>\n }\n }\n <button mat-icon-button [matMenuTriggerFor]=\"menu\" c3-stop-click-propagation>\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","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';\nimport {\n C3FileDisplayListCellDefDirective,\n C3FileDisplayListColumnDefDirective,\n} from './c3-file-display-list/c3-file-display-list-column-def.directive';\nimport { C3FileDisplayListHeaderCellDefDirective } from './c3-file-display-list/c3-file-display-list-column-def.directive';\n\n@NgModule({\n declarations: [],\n imports: [\n CommonModule,\n C3FileDisplayGridComponent,\n C3FileDisplayListComponent,\n C3FileDisplayCardComponent,\n C3FileDisplayIconComponent,\n C3FileDisplayListColumnDefDirective,\n C3FileDisplayListHeaderCellDefDirective,\n C3FileDisplayListCellDefDirective,\n ],\n exports: [\n C3FileDisplayGridComponent,\n C3FileDisplayListComponent,\n C3FileDisplayCardComponent,\n C3FileDisplayIconComponent,\n C3FileDisplayListColumnDefDirective,\n C3FileDisplayListHeaderCellDefDirective,\n C3FileDisplayListCellDefDirective,\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 standalone: false\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 public readonly options = input<Partial<AutoAnimateOptions> | AutoAnimationPlugin | undefined>(undefined);\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 standalone: false\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@if (isExpanded()) {\n <div>\n <ng-content></ng-content>\n </div>\n}\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 { FlatTreeControl } from '@angular/cdk/tree';\r\n\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({\n selector: 'c3-tree',\n imports: [\n MatTreeModule,\n MatIconModule,\n MatRippleModule,\n MatProgressSpinnerModule\n],\n templateUrl: './c3-tree.component.html',\n styleUrls: ['./c3-tree.component.scss']\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 standalone: false\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 standalone: false\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 standalone: false\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 standalone: false\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 standalone: false\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 standalone: false\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","import { inject, Injectable, signal } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { filter, map, Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class C3MenuService {\n public selectedElement: HTMLElement | null = null;\n public currentRouteChange: Observable<string>;\n public readonly currentRoute = signal('');\n\n public readonly isHeadless = signal(false);\n private readonly _router = inject(Router);\n private readonly _ar = inject(ActivatedRoute);\n\n constructor() {\n this.currentRoute.set(this._router.routerState.snapshot.url);\n this.currentRouteChange = this._router.events.pipe(\n filter(\n (status: any) =>\n status.urlAfterRedirects !== undefined && status.state === undefined\n ),\n map((status: any) => {\n this.currentRoute.set(status.urlAfterRedirects);\n return status.urlAfterRedirects;\n })\n );\n this.isHeadless.set(this._ar.snapshot.queryParams['headless'] === 'true');\n }\n\n public setSelectedItem(element: HTMLElement) {\n if (this.selectedElement)\n this.selectedElement.classList.remove(\"active-item\");\n this.selectedElement = element;\n this.selectedElement.classList.add(\"active-item\");\n }\n}\n","import { Component, inject } from '@angular/core';\nimport { C3MenuService } from '../../services/c3-menu.service';\n\n@Component({\n selector: 'c3-menu',\n standalone: false,\n templateUrl: './c3-menu.component.html',\n styleUrl: './c3-menu.component.scss',\n})\nexport class C3MenuComponent {\n public readonly _c3Menu = inject(C3MenuService);\n}\n","@if(!_c3Menu.isHeadless()) {\n <div id=\"app-menu\">\n <div class=\"ui-scroll\">\n <ul>\n <ng-content></ng-content>\n </ul>\n </div>\n </div>\n}\n<div class=\"layout-main\" [class.headless]=\"_c3Menu.isHeadless()\">\n <router-outlet></router-outlet>\n</div>\n","import { Component, DestroyRef, effect, ElementRef, inject, input, signal, viewChild } from '@angular/core';\nimport { C3MenuService } from '../../services/c3-menu.service';\nimport { map, startWith, Subscription } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'c3-nav-item',\n standalone: false,\n templateUrl: './c3-nav-item.component.html',\n styleUrl: './c3-nav-item.component.scss',\n})\nexport class C3NavItemComponent {\n public readonly route = input.required<string>();\n public readonly itemTitle = input.required<string>();\n public readonly check = input<string | null>(null);\n public readonly isExternal = input<boolean>(false);\n\n private readonly element = viewChild('button', {\n read: ElementRef<HTMLButtonElement>,\n });\n private readonly _menu = inject(C3MenuService);\n private readonly destroyRef = inject(DestroyRef);\n\n private readonly currentRouteChangeSubscription = signal<Subscription | null>(null);\n\n constructor() {\n effect(() => {\n if (!this.currentRouteChangeSubscription() && this.element()) {\n const subscribtion = this._menu.currentRouteChange\n .pipe(\n startWith(this._menu.currentRoute()),\n map((url) => url),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe((url) => {\n const _regex = new RegExp(this.check() || this.route());\n if (_regex.exec(url) && this.element())\n this._menu.setSelectedItem(this.element()!.nativeElement);\n })\n this.currentRouteChangeSubscription.set(subscribtion);\n }\n })\n\n }\n}\n","<li #button>\n <a matRipple matRippleColor=\"#ffffff66\" [routerLink]=\"isExternal() ? null : route()\" [href]=\"isExternal() ? route() : null\">\n <ng-content></ng-content>\n <span> {{ itemTitle() }} </span>\n </a>\n</li>\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { C3MenuComponent } from \"./components/c3-menu/c3-menu.component\";\nimport { RouterModule } from \"@angular/router\";\nimport { MatRippleModule } from \"@angular/material/core\";\nimport { C3NavItemComponent } from \"./components/c3-nav-item/c3-nav-item.component\";\n\n@NgModule({\n imports: [CommonModule, RouterModule, MatRippleModule],\n declarations: [C3MenuComponent, C3NavItemComponent],\n exports: [C3MenuComponent, C3NavItemComponent],\n providers: [],\n})\nexport class C3MenuModule { }\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-alert.component';\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/components/c3-dialog-template/c3-dialog-template.component';\nexport * from './lib/c3-dialog/services/c3-dialog.service';\nexport * from './lib/c3-dialog/directives/c3-open-dialog.directive';\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';\nexport * from './lib/c3-file-displayer/c3-file-display-list/c3-file-display-list-column-def.directive';\nexport * from './lib/c3-file-displayer/c3-file-display-list/tokens';\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 * 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/**\n * C3 Prevent Event\n */\nexport * from './lib/c3-prevent-event/index';\n\n/**\n * C3 Menu\n */\nexport * from './lib/c3-menu/c3-menu.module';\nexport * from './lib/c3-menu/components/c3-menu/c3-menu.component';\nexport * from './lib/c3-menu/components/c3-nav-item/c3-nav-item.component';\n\n/**\n * C3 PDF Viewer\n */\n// export * from './lib/c3-pdf-viewer/pdf-viewer-container/pdf-viewer-container.component';\n// export * from './lib/c3-pdf-viewer/pdf-viewer-content/pdf-viewer-content.component';\n// export * from './lib/c3-pdf-viewer/pdf-viewer-header/pdf-viewer-header.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i4","i5","i2.C3SafeUrlPipe","i3","i4.C3SafeUrlPipe","i2.FullScreenDirective","i3.C3FileViewerActionsComponent","i4.C3FileViewerImageComponent","i5.C3FileViewerPdfComponent","i6.C3FileViewerVideoComponent","i7.C3FileViewerDefaultComponent","i8","i1.C3FileViewerComponent","i1.C3FileViewerDialogComponent","i1.C3AutoAnimateDirective","i2.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-alert.component.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-template/c3-dialog-template.component.ts","../../../projects/c3-components/src/lib/c3-dialog/components/c3-dialog-template/c3-dialog-template.component.html","../../../projects/c3-components/src/lib/c3-dialog/services/c3-dialog.service.ts","../../../projects/c3-components/src/lib/c3-dialog/directives/c3-open-dialog.directive.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/c3-file-viewer-default/c3-file-viewer-default.component.ts","../../../projects/c3-components/src/lib/c3-file-viewer/components/c3-file-viewer-default/c3-file-viewer-default.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/consts/supported-type.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-prevent-event/c3-prevent-click-event.directive.ts","../../../projects/c3-components/src/lib/c3-prevent-event/c3-prevent-keyboard-event.directive.ts","../../../projects/c3-components/src/lib/c3-prevent-event/c3-stop-click-propagation.directive.ts","../../../projects/c3-components/src/lib/c3-file-displayer/c3-file-display-list/tokens.ts","../../../projects/c3-components/src/lib/c3-file-displayer/c3-file-display-list/c3-file-display-list-column-def.directive.ts","../../../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-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/lib/c3-menu/services/c3-menu.service.ts","../../../projects/c3-components/src/lib/c3-menu/components/c3-menu/c3-menu.component.ts","../../../projects/c3-components/src/lib/c3-menu/components/c3-menu/c3-menu.component.html","../../../projects/c3-components/src/lib/c3-menu/components/c3-nav-item/c3-nav-item.component.ts","../../../projects/c3-components/src/lib/c3-menu/components/c3-nav-item/c3-nav-item.component.html","../../../projects/c3-components/src/lib/c3-menu/c3-menu.module.ts","../../../projects/c3-components/src/public-api.ts","../../../projects/c3-components/src/c3-components.ts"],"sourcesContent":["import {\n Component,\n TemplateRef,\n viewChild,\n input,\n inject,\n ChangeDetectorRef,\n effect,\n signal,\n} from '@angular/core';\n\n@Component({\n selector: 'c3-dropdown',\n template: `\n <ng-template>\n <div class=\"c3-dropdown-panel\" [ngClass]=\"panelClass()\">\n <ng-content></ng-content>\n </div>\n </ng-template>\n `,\n standalone: false,\n})\nexport class C3DropdownComponent {\n public readonly panelClass = input<\n string | string[] | Set<string> | { [key: string]: any }\n >();\n\n public readonly isOpen = signal(false);\n\n public readonly template = viewChild.required(TemplateRef<unknown>);\n\n private readonly _changeDetectorRef = inject(ChangeDetectorRef);\n\n constructor() {\n effect(() => {\n if (this.panelClass()) {\n this._changeDetectorRef.markForCheck();\n }\n });\n }\n}\n","import {\n Directive,\n forwardRef,\n ElementRef,\n ViewContainerRef,\n OnDestroy,\n HostListener,\n input,\n model,\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 { 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: '[c3DropdownTrigger]',\n providers: [MAT_DROPDOWN_VALUE_ACCESSOR],\n standalone: false,\n})\nexport class C3DropdownTrigger implements OnDestroy {\n private overlayRef?: OverlayRef | null;\n private _closingActionsSubscription: Subscription = Subscription.EMPTY;\n private _destroyed = new Subject<void>();\n\n /** The dropdown menu instance */\n public readonly dropdown = model.required<C3DropdownComponent>({\n alias: 'c3DropdownTrigger',\n });\n\n /** Whether the dropdown is disabled. */\n public readonly dropdownDisabled = input<boolean>(false);\n\n /** Classes to be passed to the dropdown menu. Supports the same syntax as `ngClass`. */\n public readonly dropdownClass = input<\n string | string[] | Set<string> | { [key: string]: any }\n >('');\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 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().template()) return;\n\n this.dropdown().isOpen.set(true);\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 this.dropdown().isOpen.set(false);\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';\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 standalone: false\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 { 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({\n selector: 'ConfirmDialogComponent',\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 `,\n standalone: false\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({\n selector: 'PrompDialogComponent',\n template: `\n <div mat-dialog-title>{{ data.text }}</div>\n <mat-dialog-content>\n <mat-form-field>\n @if (data.placeholder) {\n <mat-label>{{ data.placeholder }}</mat-label>\n }\n @if (!data.multiline) {\n <input\n matInput\n [formControl]=\"result\"\n (keydown.enter)=\"dialogRef.close(result.value)\"\n />\n }\n @if (data.multiline) {\n <textarea\n matInput\n [formControl]=\"result\"\n cdkTextareaAutosize\n ></textarea>\n }\n </mat-form-field>\n </mat-dialog-content>\n <mat-dialog-actions align=\"center\">\n <button mat-raised-button mat-dialog-close [class]=\"data.reject?.color\">\n {{ data.reject?.text }}\n </button>\n <button\n mat-raised-button\n [disabled]=\"result.invalid || (data.required && !result.value)\"\n [class]=\"data.accept?.color\"\n [mat-dialog-close]=\"result.value\"\n >\n {{ data.accept?.text }}\n </button>\n </mat-dialog-actions>\n `,\n styles: [\n `\r\n mat-form-field {\r\n width: 100%;\r\n }\r\n `,\n ],\n standalone: false\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 Signal,\n TemplateRef,\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: `\n <div [class]=\"'dialog-content-container ' + (data.classContainer || '')\">\n @if (data.toolbar) {\n <mat-toolbar [color]=\"data.toolbar.color || 'default'\" class=\"py-1\">\n <span>{{ data.toolbar.title }}</span>\n <span class=\"spacer\"></span>\n @if (data.toolbar.closeBtn) {\n <button mat-icon-button mat-dialog-close color=\"{{ data.toolbar.closeColor }}\">\n <mat-icon>close</mat-icon>\n </button>\n }\n </mat-toolbar>\n }\n\n <div [class]=\"'dialog-content ' + (data.classContent || '')\">\n <!-- Si templateRef est présent, on l'affiche directement,\n sinon on laisse la place au composant dynamique -->\n @if (data.templateRef) {\n <ng-container *ngTemplateOutlet=\"data.templateRef\"></ng-container>\n } @else {\n <ng-container #target></ng-container>\n }\n </div>\n\n @if (data.actions && data.actions.length > 0) {\n <div [class]=\"'dialog-actions ' + (data.classActions || '')\">\n @for (action of data.actions; track action.label) {\n @switch (action.apperance) {\n @case ('basic') {\n <button [class]=\"action.class\" (click)=\"action.action()\">\n {{ action.label }}\n </button>\n }\n @case ('raised') {\n <button mat-raised-button [class]=\"action.class\" (click)=\"action.action()\">\n {{ action.label }}\n </button>\n }\n @case ('stroked') {\n <button mat-stroked-button [class]=\"action.class\" (click)=\"action.action()\">\n {{ action.label }}\n </button>\n }\n @case ('flat') {\n <button mat-flat-button [class]=\"action.class\" (click)=\"action.action()\">\n {{ action.label }}\n </button>\n }\n @default {\n <button mat-button [class]=\"action.class\" (click)=\"action.action()\">\n {{ action.label }}\n </button>\n }\n }\n }\n </div>\n }\n </div>\n `,\n styles: [\n `\n .dialog-content-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n padding: 1rem;\n overflow: auto;\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 .dialog-actions {\n display: flex;\n justify-content: flex-end;\n gap: 0.5rem;\n }\n `,\n ],\n standalone: false,\n})\nexport class C3DialogEmbedChildComponent<C> implements AfterViewInit {\n public readonly target = viewChild('target', {\n read: ViewContainerRef,\n });\n\n // On utilise un signal pour stocker la référence du composant créé\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 // Soit component, soit templateRef, ou les deux (mais on utilise en priorité un templateRef si fourni)\n component?: ComponentType<C>;\n templateRef?: TemplateRef<any>;\n\n // Pour les inputs du composant\n inputs?: Partial<Record<keyof C, unknown>>;\n\n // Classes CSS\n classActions?: string;\n classContainer?: string;\n classContent?: string;\n\n // Toolbar\n toolbar?: {\n title: string;\n closeBtn?: boolean;\n closeColor?: string;\n color?: string;\n };\n\n // Boutons d’action\n actions?: {\n label: string;\n apperance?: 'basic' | 'raised' | 'stroked' | 'flat';\n class?: string;\n action: () => void;\n }[];\n },\n private _cdr: ChangeDetectorRef,\n ) {}\n\n ngAfterViewInit() {\n // Si on a un composant, on le crée dynamiquement\n if (this.data.component && !this.data.templateRef) {\n const targetRef = this.target();\n if (!targetRef) {\n console.error('ViewContainerRef not found');\n return;\n }\n const compRef = targetRef.createComponent(this.data.component);\n this.createdComponent.set(compRef);\n\n // Injecter les inputs dans le composant\n if (this.data.inputs) {\n this._setInputs(this.data.component, this.data.inputs, compRef);\n }\n }\n // Si on a juste un templateRef, on ne crée pas de composant :\n // l'affichage est déjà géré dans le template via <ng-template *ngTemplateOutlet=\"...\">\n else if (this.data.templateRef) {\n this.createdComponent.set(null);\n }\n // Si on n'a rien, on ferme le dialog\n else {\n this.dialogRef.close(false);\n }\n\n // Déclenche manuellement le cycle de détection pour actualiser l'affichage\n this._cdr.detectChanges();\n }\n\n /**\n * Retourne la référence du composant créé (s’il y en a un),\n * utile pour le service ou l’appelant.\n */\n public createdComponentInstance(): ComponentRef<C> | null {\n return this.createdComponent();\n }\n\n // Récupère la liste des @Input déclarés sur le composant\n private _getInputProperties<C>(component: Type<C>) {\n const inputs: string[] = [];\n const declaredInputs: Partial<Record<keyof C, string>> = component.prototype?.constructor['ɵcmp']?.declaredInputs;\n for (const input of Object.keys(declaredInputs)) {\n inputs.push(input);\n }\n return inputs;\n }\n\n // Assigne les inputs passés en configuration au composant dynamique\n private _setInputs<C>(component: Type<C>, inputs: Partial<Record<keyof C, unknown>>, componentRef: ComponentRef<C>) {\n const inputProperties = this._getInputProperties(component);\n for (const key of inputProperties) {\n if (inputs[key as keyof C] !== undefined) {\n componentRef.setInput(key, inputs[key as keyof C]);\n }\n }\n }\n}\n","import { Component, signal, TemplateRef, viewChild } from '@angular/core';\nimport { C3CreateDialogFromComponentResult } from '../../services/c3-dialog.service';\n\n@Component({\n selector: 'c3-dialog-template',\n standalone: false,\n templateUrl: './c3-dialog-template.component.html',\n styleUrl: './c3-dialog-template.component.scss',\n})\nexport class C3DialogTemplateComponent {\n public readonly templateRef = viewChild('internalTemplate', {\n read: TemplateRef,\n });\n\n public readonly dialogRef = signal<C3CreateDialogFromComponentResult<unknown> | null>(null)\n}\n","<ng-template #internalTemplate>\n <ng-content></ng-content>\n</ng-template>\n","import {\n ComponentRef,\n Injectable,\n Injector,\n TemplateRef,\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 { 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 classActions?: string;\n classContainer?: string;\n classContent?: string;\n actions?: {\n label: string;\n class?: string;\n apperance?: 'basic' | 'raised' | 'stroked' | 'flat';\n action: () => void;\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 classContainer,\n classContent,\n classActions,\n actions,\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 classActions,\n classContainer,\n classContent,\n actions\n },\n });\n\n return this.createC3DialogResult(dialog);\n }\n\n /**\n * Ouvre un dialog à partir d'un TemplateRef.\n * @param templateRef Le TemplateRef à afficher dans la boîte de dialogue.\n * @param config (optionnel) Configuration pour le MatDialog (dimensions, position, etc.).\n */\n public createDialogFromTemplate(\n templateRef: TemplateRef<any>,\n config?: MatDialogConfig\n ): C3CreateDialogFromComponentResult<unknown> {\n // On ouvre le même composant hôte (C3DialogEmbedChildComponent)\n // mais on lui passe un paramètre templateRef plutôt qu'un component.\n const dialogRef = this.#dialog.open(C3DialogEmbedChildComponent<unknown>, {\n ...config,\n data: {\n templateRef,\n },\n });\n\n // On réutilise la méthode générique pour envelopper le MatDialogRef\n return this.createC3DialogResult(dialogRef);\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 { Directive, inject, input } from '@angular/core';\nimport { C3DialogTemplateComponent } from '../components/c3-dialog-template/c3-dialog-template.component';\nimport { C3DialogService } from '../services/c3-dialog.service';\nimport { MatDialogConfig } from '@angular/material/dialog';\n\n@Directive({\n selector: '[c3-dialog]',\n standalone: false,\n host: {\n '(click)': 'openDialog($event)'\n }\n})\nexport class C3OpenDialogDirective {\n public readonly template = input<C3DialogTemplateComponent>(undefined, {\n alias: 'c3-dialog'\n });\n public readonly config = input<MatDialogConfig>(undefined, {\n alias: 'c3-dialog-config'\n });\n\n private readonly _dialog = inject(C3DialogService)\n\n\n private openDialog($event: MouseEvent) {\n if (!this.template()?.templateRef()) return;\n\n const dialog = this._dialog.createDialogFromTemplate(this.template()!.templateRef()!, this.config())\n this.template()?.dialogRef.set(dialog)\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';\nimport { C3DialogTemplateComponent } from './components/c3-dialog-template/c3-dialog-template.component';\nimport { C3OpenDialogDirective } from './directives/c3-open-dialog.directive';\n\n@NgModule({\n declarations: [\n C3AlertDialogComponent,\n ConfirmDialogComponent,\n C3PromptDialogComponent,\n C3DialogEmbedChildComponent,\n C3DialogTemplateComponent,\n C3OpenDialogDirective,\n ],\n imports: [\n CommonModule,\n FormsModule,\n MatButtonModule,\n MatDialogModule,\n MatFormFieldModule,\n MatIconModule,\n MatInputModule,\n MatToolbarModule,\n ReactiveFormsModule,\n ],\n exports: [\n C3DialogTemplateComponent,\n C3OpenDialogDirective\n ],\n providers: [C3DialogService],\n})\nexport class C3DialogModule { }\n","import { Directive, ElementRef, input, effect } from '@angular/core';\nimport { BehaviorSubject, debounceTime, filter, skip } from 'rxjs';\n\n@Directive({\n selector: '[C3FullScreen], [c3-full-screen]',\n standalone: false\n})\nexport class FullScreenDirective {\n public readonly fullscreenState = input<Boolean | null>(null, { alias: 'c3Screenfull' });\n public readonly fullscreenStateSetter = input<Boolean | null>(null, { alias: 'c3-full-screen' });\n\n private _fullscreenState = new BehaviorSubject(false);\n\n constructor(private el: ElementRef) {\n // Effect to handle fullscreenState changes\n effect(() => {\n const state = this.fullscreenState();\n if (state !== null) {\n this._fullscreenState.next(state.valueOf() || false);\n }\n });\n\n // Effect to handle fullscreenStateSetter changes (alias for fullscreenState)\n effect(() => {\n const state = this.fullscreenStateSetter();\n if (state !== null) {\n this._fullscreenState.next(state.valueOf() || false);\n }\n });\n\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 standalone: false\n})\nexport class C3FileViewerActionsComponent {\n public readonly fileViewer = input.required<C3FileViewer>();\n\n get config() {\n return this.fileViewer().config;\n }\n}\n","<div class=\"nav-button-container\">\n @if (config.btnShow?.prev) {\n <button\n type=\"button\"\n [class]=\"config.btnClass\"\n (click)=\"fileViewer().previousImage($event)\"\n [disabled]=\"fileViewer().currentIndex === 0\"\n >\n @if (config.btnIcons?.prev?.classes) {\n <span [class]=\"config.btnIcons?.prev?.classes\"></span>\n }\n </button>\n @if (config.btnIcons?.prev?.text) {\n <a\n [class]=\"config.btnClass\"\n (click)=\"fileViewer().previousImage($event)\"\n >\n <span [class]=\"config.btnSubClass\">{{ config.btnIcons?.prev?.text }}</span>\n </a>\n }\n }\n @if (config.btnShow?.next) {\n <button\n type=\"button\"\n [class]=\"config.btnClass\"\n (click)=\"fileViewer().nextImage($event)\"\n [disabled]=\"fileViewer().currentIndex === fileViewer().files.length - 1\"\n >\n <span [class]=\"config.btnIcons?.next?.classes\"></span>\n </button>\n }\n\n @if (config.btnIcons?.next?.text) {\n <a\n [class]=\"config.btnClass\"\n (click)=\"fileViewer().nextImage($event)\"\n >\n <span [class]=\"config.btnSubClass\">{{ config.btnIcons?.next?.text }}</span>\n </a>\n }\n</div>\n\n@if (fileViewer().currentFile.type.startsWith('image')) {\n <!-- Button Container -->\n <div\n class=\"btn-container\"\n [class]=\"config.btnContainerClass\"\n >\n <!-- Rotate Counter Clockwise -->\n @if (config.btnShow?.rotateCounterClockwise) {\n @if (config.btnIcons?.rotateCounterClockwise?.classes) {\n <button\n type=\"button\"\n [class]=\"config.btnClass\"\n (click)=\"fileViewer().rotateCounterClockwise()\"\n >\n <span [class]=\"config.btnIcons?.rotateCounterClockwise?.classes\"></span>\n </button>\n }\n @if (config.btnIcons?.rotateCounterClockwise?.text) {\n <a\n [class]=\"config.btnClass\"\n (click)=\"fileViewer().rotateCounterClockwise()\"\n >\n <span [class]=\"config.btnSubClass\">{{\n config.btnIcons?.rotateCounterClockwise?.text\n }}</span>\n </a>\n }\n }\n\n <!-- Rotate Clockwise -->\n @if (config.btnShow?.rotateClockwise) {\n @if (config.btnIcons?.rotateClockwise?.classes) {\n <button\n type=\"button\"\n [class]=\"config.btnClass\"\n (click)=\"fileViewer().rotateClockwise()\"\n >\n <span [class]=\"config.btnIcons?.rotateClockwise?.classes\"></span>\n </button>\n }\n @if (config.btnIcons?.rotateClockwise?.text) {\n <a\n [class]=\"config.btnClass\"\n (click)=\"fileViewer().rotateClockwise()\"\n >\n <span [class]=\"config.btnSubClass\">{{\n config.btnIcons?.rotateClockwise?.text\n }}</span>\n </a>\n }\n }\n\n <!-- Zoom Out -->\n @if (config.btnShow?.zoomOut) {\n @if (config.btnIcons?.zoomOut?.classes) {\n <button\n type=\"button\"\n [class]=\"config.btnClass\"\n (click)=\"fileViewer().zoomOut()\"\n >\n <span [class]=\"config.btnIcons?.zoomOut?.classes\"></span>\n </button>\n <a\n [class]=\"config.btnClass\"\n (click)=\"fileViewer().zoomOut()\"\n >\n <span [class]=\"config.btnSubClass\">{{\n config.btnIcons?.zoomOut?.text\n }}</span>\n </a>\n }\n }\n\n <!-- Zoom In -->\n @if (config.btnShow?.zoomIn) {\n @if (config.btnIcons?.zoomIn?.classes) {\n <button\n type=\"button\"\n [class]=\"config.btnClass\"\n (click)=\"fileViewer().zoomIn()\"\n >\n <span [class]=\"config.btnIcons?.zoomIn?.classes\"></span>\n </button>\n }\n @if (config.btnIcons?.zoomIn?.text) {\n <a\n [class]=\"config.btnClass\"\n (click)=\"fileViewer().zoomIn()\"\n >\n <span [class]=\"config.btnSubClass\">{{\n config.btnIcons?.zoomIn?.text\n }}</span>\n </a>\n }\n }\n\n <!-- Fullscreen -->\n @if (config.allowFullscreen) {\n @if (config.btnIcons?.fullscreen?.classes) {\n <button\n type=\"button\"\n [class]=\"config.btnClass\"\n (click)=\"fileViewer().toggleFullscreen()\"\n >\n <span [class]=\"config.btnIcons?.fullscreen?.classes\"></span>\n </button>\n }\n @if (config.btnIcons?.fullscreen?.text) {\n <a\n [class]=\"config.btnClass\"\n (click)=\"fileViewer().toggleFullscreen()\"\n >\n <span [class]=\"config.btnSubClass\">{{\n config.btnIcons?.fullscreen?.text\n }}</span>\n </a>\n }\n }\n\n <!-- Reset -->\n @if (config.btnShow?.reset) {\n @if (config.btnIcons?.reset?.classes) {\n <button\n type=\"button\"\n [class]=\"config.btnClass\"\n (click)=\"fileViewer().reset()\"\n >\n <span [class]=\"config.btnIcons?.reset?.classes\"></span>\n </button>\n }\n @if (config.btnIcons?.reset?.text) {\n <a\n [class]=\"config.btnClass\"\n (click)=\"fileViewer().reset()\"\n >\n <span [class]=\"config.btnSubClass\">{{\n config.btnIcons?.reset?.text\n }}</span>\n </a>\n }\n }\n\n <!-- Download -->\n @if (config.btnShow?.download) {\n @if (config.btnIcons?.download?.classes) {\n <button type=\"button\" [class]=\"config.btnClass\" (click)=\"fileViewer().download()\">\n <span [class]=\"config.btnIcons?.download?.classes\"></span>\n </button>\n }\n @if (config.btnIcons?.download?.text) {\n <a [class]=\"config.btnClass\" (click)=\"fileViewer().download()\">\n <span [class]=\"config.btnSubClass\">{{ config.btnIcons?.download?.text }}</span>\n </a>\n }\n }\n\n <!-- Custom Buttons -->\n @for (cBtn of config.customBtns; track cBtn.icon.text) {\n @if (cBtn.icon.classes) {\n <button type=\"button\" [class]=\"config.btnClass\">\n <span [class]=\"cBtn.icon.classes\"></span>\n </button>\n }\n @if (cBtn.icon.text) {\n <a [class]=\"config.btnClass\">\n <span [class]=\"config.btnSubClass\">{{ cBtn.icon.text }}</span>\n </a>\n }\n }\n </div>\n}\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, 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 standalone: false\n})\nexport class C3FileViewerImageComponent {\n public readonly fileViewer = input.required<C3FileViewer>();\n\n public readonly dragstart = output<DragEvent>();\n}\n","@if (fileViewer().currentFile.objectUrl) {\n <img\n [src]=\"fileViewer().currentFile.objectUrl | async | c3SafeUrl\"\n [ngStyle]=\"fileViewer().style\"\n alt=\"Image not found...\"\n (dragstart)=\"dragstart.emit($event)\"\n />\n}\n","import {\n Component,\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 standalone: false\n})\nexport class C3FileViewerPdfComponent {\n public readonly fileViewer = input.required<C3FileViewer>();\n\n public readonly dragstart = output<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<!-- floating download button -->\n<button mat-icon-button class=\"download-button\" (click)=\"fileViewer().download()\">\n <mat-icon>download</mat-icon>\n</button>\n","import { Component, input } from '@angular/core';\nimport { C3FileViewer } from '../../models/file-viewer';\n\n@Component({\n selector: 'c3-file-viewer-video',\n templateUrl: './c3-file-viewer-video.component.html',\n standalone: false,\n})\nexport class C3FileViewerVideoComponent {\n public readonly fileViewer = input.required<C3FileViewer>();\n}\n","<video controls [src]=\"fileViewer().currentFile.objectUrl | async | c3SafeUrl\" crossorigin=\"*\"></video>\n","import { Component, input } from '@angular/core';\nimport { C3FileViewer } from '../../models/file-viewer';\n\n@Component({\n selector: 'c3-file-viewer-default',\n templateUrl: './c3-file-viewer-default.component.html',\n styleUrl: './c3-file-viewer-default.component.scss',\n standalone: false,\n})\nexport class C3FileViewerDefaultComponent {\n public readonly fileViewer = input.required<C3FileViewer>();\n}\n","<ng-container>\n <button (click)=\"fileViewer().download()\">Download {{ fileViewer().getOriginalName() }}</button>\n</ng-container>\n","import {\n Component,\n HostListener,\n Inject,\n input,\n OnInit,\n Optional,\n output,\n SimpleChanges,\n ViewEncapsulation,\n effect,\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: ['./c3-file-viewer.component.scss'],\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'c3-file-viewer',\n },\n standalone: false\n})\nexport class C3FileViewerComponent implements OnInit {\n public readonly screenHeightOccupied = input<number | undefined>(0); // In Px\n\n public readonly fileViewer = input.required<C3FileViewer>();\n\n public readonly indexChange = output<number>();\n\n public readonly configChange = output<C3FileViewerConfig>();\n\n public readonly customFileEvent = output<CustomFileEvent>();\n\n constructor(\n @Optional() @Inject('config') public moduleConfig: C3FileViewerConfig,\n public _http: HttpClient\n ) {\n // Setup subscriptions in constructor using effect\n effect(() => {\n const viewer = this.fileViewer();\n\n viewer.customFile$.subscribe((event) => {\n this.customFileEvent.emit(event);\n });\n\n viewer.index$.subscribe((index) => {\n this.indexChange.emit(index);\n });\n\n viewer.config$.subscribe((config) => {\n this.configChange.emit(config);\n });\n });\n }\n\n ngOnInit() {\n this.defineStyleHeight();\n }\n\n @HostListener('mouseover')\n onMouseOver() {\n const viewer = this.fileViewer();\n if (viewer) viewer.hovered = true;\n }\n\n @HostListener('mouseleave')\n onMouseLeave() {\n const viewer = this.fileViewer();\n if (viewer) viewer.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","@if (fileViewer(); as viewer) {\n<div\n class=\"c3-file-container\"\n [c3-full-screen]=\"viewer.fullscreen$ | async\"\n [style.height]=\"viewer.styleHeight\"\n [style.backgroundColor]=\"viewer.config.containerBackgroundColor\"\n (wheel)=\"viewer.scrollZoom($event)\"\n (dragover)=\"viewer.onDragOver($event)\"\n>\n @if (viewer.currentFile.type.startsWith('image')) {\n <c3-file-viewer-image\n [fileViewer]=\"viewer\"\n [style]=\"viewer.style\"\n (dragstart)=\"viewer.onDragStart($event)\"\n />\n } @else if (viewer.currentFile.type.startsWith('video')) {\n <c3-file-viewer-video\n [fileViewer]=\"viewer\"\n />\n } @else if (viewer.currentFile.type.startsWith('application/pdf')) {\n <c3-file-viewer-pdf\n [fileViewer]=\"viewer\"\n />\n } @else {\n <c3-file-viewer-default\n [fileViewer]=\"viewer\"\n />\n }\n\n <!-- Div below will be used to hide the 'ghost' image when dragging -->\n <div></div>\n @if (viewer.loading) {\n <div class=\"spinner-container\">\n <div class=\"spinner\"></div>\n </div>\n }\n\n <c3-file-viewer-actions [fileViewer]=\"viewer\" />\n </div>\n}\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 download: 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 download: {\n text: 'download',\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","export const SUPPORTED_MIME_TYPES: string[] = [\n // Documents et Applications\n // 'text/html',\n // 'text/css',\n // 'text/plain',\n // 'application/javascript',\n // 'application/json',\n // 'application/xml',\n 'application/pdf',\n\n // Images\n 'image/jpeg',\n 'image/png',\n 'image/gif',\n 'image/svg+xml',\n 'image/webp',\n 'image/avif',\n 'image/bmp',\n 'image/x-icon',\n\n // Audio et Vidéo\n // 'audio/mpeg',\n // 'audio/ogg',\n // 'audio/wav',\n // 'audio/webm',\n 'video/mp4',\n 'video/webm',\n 'video/ogg',\n\n // Polices de Caractères\n // 'font/woff',\n // 'font/woff2',\n // 'font/ttf',\n // 'font/otf',\n];\n\nexport function isMimeTypeSupported(mimeType: string): boolean {\n return SUPPORTED_MIME_TYPES.includes(mimeType);\n}\n","import { BehaviorSubject, Observable, map, mergeMap, of, 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, VariantFile } from './file-metadata';\nimport { isMimeTypeSupported } from '../consts/supported-type';\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(newFiles: FileMetadata[]) {\n this._files = newFiles;\n this.currentIndex = 0;\n this.index$.next(this.currentIndex);\n\n for (const file of newFiles) {\n this.filesObjectUrl.push({\n ...file,\n objectUrl: file.objectUrl || this.createObjectURL(file),\n });\n\n if (file.alternativeVersions)\n for (const alternativeVersion of file.alternativeVersions) {\n this.filesObjectUrl.push({\n ...file,\n ...alternativeVersion,\n objectUrl: this.createObjectURL(alternativeVersion),\n });\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 locationBlobMap = new Map<string, string>();\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({ config, files, client }: { config?: C3FileViewerConfig; files?: FileMetadata[]; client: HttpClient }) {\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 } = 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 | VariantFile) {\n this.onLoadStart();\n const fileType = isFileMetadata(file) ? file.type : file.contentType;\n if (!isMimeTypeSupported(fileType)) {\n this.onLoaded();\n return;\n }\n return of(file.location).pipe(\n mergeMap((location) =>\n this.locationBlobMap.has(location)\n ? of(this.locationBlobMap.get(location)!)\n : this.getFile(location).pipe(\n map((response) => URL.createObjectURL(response)),\n tap((url) => this.locationBlobMap.set(location, url)),\n ),\n ),\n tap(() => this.onLoaded()),\n );\n }\n\n /**\n * Encode une URL de manière sûre pour éviter les problèmes avec les caractères spéciaux\n * comme +, espaces, etc.\n * Cette fonction encode correctement les segments du chemin et les paramètres de requête.\n */\n private encodeUrl(url: string): string {\n try {\n // Si l'URL est relative, on doit encoder manuellement\n if (!url.includes('://')) {\n // Pour les URLs relatives, on sépare le chemin et les paramètres de requête\n const [path, query] = url.split('?');\n // Encoder chaque segment du chemin (sauf les séparateurs /)\n const encodedPath = path\n .split('/')\n .map((segment) => (segment ? encodeURIComponent(segment) : ''))\n .join('/');\n\n if (query) {\n // Pour les paramètres de requête, encoder chaque clé et valeur\n const params = query.split('&');\n const encodedParams = params.map((param) => {\n const [key, ...valueParts] = param.split('=');\n const value = valueParts.join('=');\n return `${encodeURIComponent(key)}=${encodeURIComponent(value)}`;\n });\n return `${encodedPath}?${encodedParams.join('&')}`;\n }\n\n return encodedPath;\n }\n\n // Pour les URLs absolues, utiliser le constructeur URL pour parser\n const urlObj = new URL(url);\n\n // Encoder chaque segment du chemin\n const encodedPath = urlObj.pathname\n .split('/')\n .map((segment) => (segment ? encodeURIComponent(segment) : ''))\n .join('/');\n\n // Les searchParams sont déjà gérés correctement par URLSearchParams\n // mais on doit s'assurer que les valeurs sont encodées\n const searchParams = new URLSearchParams();\n urlObj.searchParams.forEach((value, key) => {\n searchParams.append(key, value);\n });\n const encodedSearch = searchParams.toString() ? `?${searchParams.toString()}` : '';\n\n return `${urlObj.protocol}//${urlObj.host}${encodedPath}${encodedSearch}${urlObj.hash}`;\n } catch (e) {\n // Si le parsing échoue (URL malformée ou relative sans base),\n // encoder avec encodeURI qui préserve la structure de l'URL\n return encodeURI(url);\n }\n }\n\n getFile(location: string) {\n const client = this.config.customClient || this.client;\n if (!client) {\n throw new Error('No http client provided. Please provide a custom client or import HttpClientModule');\n }\n\n const encodedLocation = this.encodeUrl(location);\n return client(encodedLocation, {\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 onLoaded() {\n this.loading = false;\n }\n\n onLoadStart() {\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) 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 getOriginalName(file: FileMetadata = this.currentFile) {\n return file.metadata?.['originalName'] || file.name;\n }\n\n private canNavigate(event: any) {\n return event == null || (this.config.allowKeyboardNavigation && this.hovered);\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(defaultValues: C3FileViewerConfig, overrideValues: C3FileViewerConfig): 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 download(file: FileMetadata = this.currentFile) {\n const client = this.config.customClient || this.client;\n\n const originalName = this.getOriginalName(file);\n\n // Si le fichier est déjà en blob (petit fichier déjà chargé)\n if (file.objectUrl && this.locationBlobMap.has(file.location)) {\n const url = this.locationBlobMap.get(file.location)!;\n this.downloadFromUrl(url, originalName);\n }\n // Pour les gros fichiers, on utilise le client fourni avec streaming\n else if (client) {\n this.downloadWithClient(file, client, originalName);\n } else {\n console.error('No http client available for download');\n }\n }\n\n private downloadFromUrl(url: string, filename: string) {\n const a = document.createElement('a');\n a.href = url;\n a.download = filename;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n }\n\n private downloadWithClient(file: FileMetadata, client: HttpClient['get'], originalName: string) {\n // Utiliser le client fourni pour récupérer le fichier\n const encodedLocation = this.encodeUrl(file.location);\n client(encodedLocation, {\n responseType: 'blob',\n }).subscribe({\n next: (blob: Blob) => {\n // Créer une URL blob temporaire pour le téléchargement\n const url = URL.createObjectURL(blob);\n this.downloadFromUrl(url, originalName);\n\n // Nettoyer l'URL après un délai\n setTimeout(() => {\n URL.revokeObjectURL(url);\n }, 1000);\n },\n error: (error) => {\n console.error('Download failed:', error);\n // Fallback: essayer de créer un lien direct vers l'URL\n // (peut fonctionner si l'URL est accessible directement)\n const a = document.createElement('a');\n a.href = file.location;\n a.download = originalName;\n a.target = '_blank';\n a.click();\n },\n });\n }\n}\n\nfunction isFileMetadata(file: FileMetadata | VariantFile): file is FileMetadata {\n return 'type' in file;\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 standalone: false\n})\nexport class C3FileViewerDialog {\n constructor(@Inject(MAT_DIALOG_DATA) public fileViewer: C3FileViewer) {}\n}\n","import { Component, HostListener, input } from '@angular/core';\nimport { MatDialog, MatDialogConfig } 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 standalone: false\n})\nexport class C3FileViewerDialogComponent {\n public readonly fileViewer = input.required<C3FileViewer>();\n\n public readonly dialogConfig = input<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 { provideHttpClient, withInterceptorsFromDi } 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';\nimport { C3FileViewerDefaultComponent } from './components/c3-file-viewer-default/c3-file-viewer-default.component';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\n\n@NgModule({\n declarations: [\n FullScreenDirective,\n C3FileViewerComponent,\n C3FileViewerActionsComponent,\n C3FileViewerImageComponent,\n C3FileViewerPdfComponent,\n C3FileViewerVideoComponent,\n C3FileViewerDialogComponent,\n C3FileViewerDialog,\n C3FileViewerDefaultComponent,\n ],\n exports: [FullScreenDirective, C3FileViewerComponent, C3FileViewerDialogComponent],\n imports: [CommonModule, C3SafeUrlPipe, MatDialogModule, MatIconModule, MatButtonModule],\n providers: [provideHttpClient(withInterceptorsFromDi())],\n})\nexport class C3FileViewerModule {}\n","import { CommonModule } from '@angular/common';\nimport { Component, computed, 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 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>((file) => file.name);\n\n public readonly deletable = input<boolean>(false);\n public readonly size = input<C3FileCardSize>('32');\n public readonly onDelete = output();\n public readonly onDownload = output();\n\n public readonly getFileType = computed(() => {\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 public readonly getFileObjectUrl = computed((): Observable<string> | null => {\n const file = this.fileObjectUrl();\n return file && file.objectUrl ? file.objectUrl : null;\n });\n\n public readonly getFileName = computed((): string => {\n const file = this.fileObjectUrl();\n return file ? this.displayFn()(file) : '';\n });\n\n public readonly getDisplayName = computed((): 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 (click)=\"onDownload.emit()\">\n <mat-icon>download</mat-icon>\n </button>\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","\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 imports: [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\n effect(\n () => {\n if (this.config()) this.fileViewer.config = this.config()!;\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 (onDownload)=\"fileViewer.download(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 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 { Directive, HostListener } from '@angular/core';\n/**\n * A directive that prevents the default action and stops event propagation on click events.\n */\n@Directive({\n selector: '[c3-prevent-click]',\n standalone: true,\n})\nexport class C3PreventClickDirective {\n /**\n * HostListener for the 'click' event.\n * @param {MouseEvent} event - The MouseEvent object representing the click event.\n */\n @HostListener('click', ['$event'])\n public onClick(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n }\n}\n","import { Directive, HostListener, input } from '@angular/core';\n\n/**\n * A directive that prevents the default action and stops event propagation on specified keyboard events.\n */\n@Directive({\n selector: '[c3-prevent-keyboard-event]',\n standalone: true,\n})\nexport class C3PreventKeyboardEventDirective {\n /**\n * The keyboard key to prevent the default action and stop event propagation for. Defaults to 'enter'.\n */\n public readonly key = input<string>('enter');\n\n /**\n * HostListener for the 'keydown' event.\n * @param {KeyboardEvent} event - The KeyboardEvent object representing the keydown event.\n */\n @HostListener('keydown', ['$event'])\n public onKeyDown(event: KeyboardEvent): void {\n // Check if the key pressed matches the input key.\n if (event.key?.toLocaleLowerCase() === this.key().toLocaleLowerCase()) {\n // Prevent the default action associated with the event.\n event.preventDefault();\n // Stop the event from bubbling up the event chain.\n event.stopPropagation();\n }\n }\n}\n","import { Directive, HostListener } from '@angular/core';\n\n@Directive({\n selector: '[c3-stop-click-propagation]',\n standalone: true,\n})\nexport class C3StopPropagationDirective {\n @HostListener('click', ['$event'])\n public onClick(event: MouseEvent): void {\n event.stopImmediatePropagation();\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const C3_FILE_DISPLAY_LIST = new InjectionToken<any>('C3_FILE_DISPLAY_LIST');\n","import { contentChild, Directive, inject, input, TemplateRef } from '@angular/core';\nimport { C3_FILE_DISPLAY_LIST } from './tokens';\n\n@Directive({\n selector: '[c3FileDisplayListColumnDef]',\n})\nexport class C3FileDisplayListColumnDefDirective {\n public readonly title = input.required<string>({\n alias: 'c3FileDisplayListColumnDef',\n });\n public readonly classList = input<string[]>([]);\n private readonly _table = inject(C3_FILE_DISPLAY_LIST, { optional: true });\n\n public readonly headerCellDef = contentChild(C3FileDisplayListHeaderCellDefDirective);\n public readonly cellDef = contentChild(C3FileDisplayListCellDefDirective);\n}\n\n@Directive({\n selector: '[c3FileDisplayListHeaderCellDef]',\n})\nexport class C3FileDisplayListHeaderCellDefDirective {\n template = inject<TemplateRef<any>>(TemplateRef);\n}\n\n@Directive({\n selector: '[c3FileDisplayListCellDef]',\n})\nexport class C3FileDisplayListCellDefDirective {\n template = inject<TemplateRef<any>>(TemplateRef);\n}\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 contentChildren,\n QueryList,\n TemplateRef,\n ViewContainerRef,\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';\nimport { C3StopPropagationDirective } from '../../c3-prevent-event';\nimport { C3_FILE_DISPLAY_LIST } from './tokens';\nimport { C3FileDisplayListColumnDefDirective } from './c3-file-display-list-column-def.directive';\n@Component({\n selector: 'c3-file-display-list',\n imports: [\n C3StopPropagationDirective,\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 providers: [\n {\n provide: C3_FILE_DISPLAY_LIST,\n useExisting: C3FileDisplayListComponent,\n },\n ],\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<(file: FileMetadata & { location: string }) => string>((file) => file.name);\n public readonly columns = input<string[]>(['icon', 'name', 'date']);\n\n public readonly deletable = input<boolean>(false);\n public readonly onDelete = output<FileMetadata>();\n public readonly dialog = viewChild(C3FileViewerDialogComponent);\n\n private readonly _columnDefs = contentChildren(C3FileDisplayListColumnDefDirective);\n private readonly _viewContainer = inject(ViewContainerRef);\n\n public fileViewer = new C3FileViewer({\n client: inject(HttpClient),\n });\n\n constructor() {\n effect(() => {\n this.fileViewer.files = this.files();\n });\n\n effect(() => {\n if (this.config()) this.fileViewer.config = this.config()!;\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 getColumnDef(columnName: string): C3FileDisplayListColumnDefDirective | undefined {\n return this._columnDefs().find((col) => col.title() === columnName);\n }\n}\n","<c3-file-viewer-dialog [fileViewer]=\"fileViewer\">\n<!-- header -->\n <table class=\"file-table\">\n <thead>\n <tr>\n @for (columnName of columns(); track columnName) {\n <th [class.full]=\"columnName === 'name'\" [class.icon]=\"columnName === 'icon'\">\n @if (getColumnDef(columnName)?.headerCellDef()) {\n <ng-container *ngTemplateOutlet=\"getColumnDef(columnName)!.headerCellDef()!.template\"></ng-container>\n } @else {\n @if (columnName === 'icon') {\n <span></span>\n } @else if (columnName === 'name') {\n <span>Nom</span>\n } @else if (columnName === 'date') {\n <span>Date d'ajout</span>\n }\n }\n </th>\n }\n <th class=\"actions\">\n <ng-content></ng-content>\n </th>\n </tr>\n </thead>\n <tbody>\n @for (file of files(); track $index) {\n <tr (click)=\"openDialog($event, $index)\">\n @for (columnName of columns(); track columnName) {\n @if (columnName === 'name') {\n <td class=\"name full\">\n @if (getColumnDef(columnName)?.cellDef()) {\n <ng-container *ngTemplateOutlet=\"getColumnDef(columnName)!.cellDef()!.template; context: { $implicit: file }\"></ng-container>\n } @else {\n <span>{{ displayFn()(file) }}</span>\n }\n </td>\n } @else if (columnName === 'icon') {\n <td class=\"icon\">\n @if (getColumnDef(columnName)?.cellDef()) {\n <ng-container *ngTemplateOutlet=\"getColumnDef(columnName)!.cellDef()!.template; context: { $implicit: file }\"></ng-container>\n } @else {\n <c3-file-display-icon [fileType]=\"file.type\" />\n }\n </td>\n } @else {\n <td [classList]=\"getColumnDef(columnName)?.classList()\">\n @if (getColumnDef(columnName)?.cellDef()) {\n <ng-container *ngTemplateOutlet=\"getColumnDef(columnName)!.cellDef()!.template; context: { $implicit: file }\"></ng-container>\n } @else {\n @if (columnName === 'date') {\n <span>{{ file.lastModified ? (file.lastModified | date:'medium') : '-' }}</span>\n }\n }\n </td>\n }\n }\n <td class=\"actions\">\n <button mat-icon-button [matMenuTriggerFor]=\"menu\" c3-stop-click-propagation>\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 <button mat-menu-item (click)=\"fileViewer.download(file)\">Télécharger</button>\n @if (deletable()) {\n <button mat-menu-item (click)=\"onDelete.emit(file)\">Supprimer</button>\n }\n </mat-menu>\n </td>\n </tr>\n }\n </tbody>\n </table>\n</c3-file-viewer-dialog>\n\n<!-- <div class=\"file-display-list\">\n @for (file of files(); track $index) {\n <button>\n @for (columnName of columns(); track columnName) {\n @if (columnName === 'name') {\n <div class=\"name\">\n @if (getColumnDef(columnName)?.cellDef()) {\n <ng-container *ngTemplateOutlet=\"getColumnDef(columnName)!.cellDef()!.template; context: { $implicit: file }\"></ng-container>\n } @else {\n <span>{{ displayFn()(file) }}</span>\n }\n </div>\n } @else if (columnName === 'icon') {\n <div class=\"icon-cell\">\n @if (getColumnDef(columnName)?.cellDef()) {\n <ng-container *ngTemplateOutlet=\"getColumnDef(columnName)!.cellDef()!.template; context: { $implicit: file }\"></ng-container>\n } @else {\n <div class=\"icon\">\n <c3-file-display-icon [fileType]=\"file.type\" />\n </div>\n }\n </div>\n } @else {\n <div class=\"cell\">\n @if (getColumnDef(columnName)?.cellDef()) {\n <ng-container *ngTemplateOutlet=\"getColumnDef(columnName)!.cellDef()!.template; context: { $implicit: file }\"></ng-container>\n } @else {\n @if (columnName === 'date') {\n <div class=\"date-label\">\n <span>{{ file.lastModified ? (file.lastModified | date:'medium') : '-' }}</span>\n </div>\n }\n }\n </div>\n }\n }\n <button mat-icon-button [matMenuTriggerFor]=\"menu\" c3-stop-click-propagation>\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","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';\nimport {\n C3FileDisplayListCellDefDirective,\n C3FileDisplayListColumnDefDirective,\n} from './c3-file-display-list/c3-file-display-list-column-def.directive';\nimport { C3FileDisplayListHeaderCellDefDirective } from './c3-file-display-list/c3-file-display-list-column-def.directive';\n\n@NgModule({\n declarations: [],\n imports: [\n CommonModule,\n C3FileDisplayGridComponent,\n C3FileDisplayListComponent,\n C3FileDisplayCardComponent,\n C3FileDisplayIconComponent,\n C3FileDisplayListColumnDefDirective,\n C3FileDisplayListHeaderCellDefDirective,\n C3FileDisplayListCellDefDirective,\n ],\n exports: [\n C3FileDisplayGridComponent,\n C3FileDisplayListComponent,\n C3FileDisplayCardComponent,\n C3FileDisplayIconComponent,\n C3FileDisplayListColumnDefDirective,\n C3FileDisplayListHeaderCellDefDirective,\n C3FileDisplayListCellDefDirective,\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 standalone: false\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 public readonly options = input<Partial<AutoAnimateOptions> | AutoAnimationPlugin | undefined>(undefined);\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 standalone: false\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@if (isExpanded()) {\n <div>\n <ng-content></ng-content>\n </div>\n}\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 { FlatTreeControl } from '@angular/cdk/tree';\r\n\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({\n selector: 'c3-tree',\n imports: [\n MatTreeModule,\n MatIconModule,\n MatRippleModule,\n MatProgressSpinnerModule\n],\n templateUrl: './c3-tree.component.html',\n styleUrls: ['./c3-tree.component.scss']\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 standalone: false\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 standalone: false\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 standalone: false\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 standalone: false\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 standalone: false\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 standalone: false\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","import { inject, Injectable, signal } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { filter, map, Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class C3MenuService {\n public selectedElement: HTMLElement | null = null;\n public currentRouteChange: Observable<string>;\n public readonly currentRoute = signal('');\n\n public readonly isHeadless = signal(false);\n private readonly _router = inject(Router);\n private readonly _ar = inject(ActivatedRoute);\n\n constructor() {\n this.currentRoute.set(this._router.routerState.snapshot.url);\n this.currentRouteChange = this._router.events.pipe(\n filter(\n (status: any) =>\n status.urlAfterRedirects !== undefined && status.state === undefined\n ),\n map((status: any) => {\n this.currentRoute.set(status.urlAfterRedirects);\n return status.urlAfterRedirects;\n })\n );\n this.isHeadless.set(this._ar.snapshot.queryParams['headless'] === 'true');\n }\n\n public setSelectedItem(element: HTMLElement) {\n if (this.selectedElement)\n this.selectedElement.classList.remove(\"active-item\");\n this.selectedElement = element;\n this.selectedElement.classList.add(\"active-item\");\n }\n}\n","import { Component, inject } from '@angular/core';\nimport { C3MenuService } from '../../services/c3-menu.service';\n\n@Component({\n selector: 'c3-menu',\n standalone: false,\n templateUrl: './c3-menu.component.html',\n styleUrl: './c3-menu.component.scss',\n})\nexport class C3MenuComponent {\n public readonly _c3Menu = inject(C3MenuService);\n}\n","@if(!_c3Menu.isHeadless()) {\n <div id=\"app-menu\">\n <div class=\"ui-scroll\">\n <ul>\n <ng-content></ng-content>\n </ul>\n </div>\n </div>\n}\n<div class=\"layout-main\" [class.headless]=\"_c3Menu.isHeadless()\">\n <router-outlet></router-outlet>\n</div>\n","import { Component, DestroyRef, effect, ElementRef, inject, input, signal, viewChild } from '@angular/core';\nimport { C3MenuService } from '../../services/c3-menu.service';\nimport { map, startWith, Subscription } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'c3-nav-item',\n standalone: false,\n templateUrl: './c3-nav-item.component.html',\n styleUrl: './c3-nav-item.component.scss',\n})\nexport class C3NavItemComponent {\n public readonly route = input.required<string>();\n public readonly itemTitle = input.required<string>();\n public readonly check = input<string | null>(null);\n public readonly isExternal = input<boolean>(false);\n\n private readonly element = viewChild('button', {\n read: ElementRef<HTMLButtonElement>,\n });\n private readonly _menu = inject(C3MenuService);\n private readonly destroyRef = inject(DestroyRef);\n\n private readonly currentRouteChangeSubscription = signal<Subscription | null>(null);\n\n constructor() {\n effect(() => {\n if (!this.currentRouteChangeSubscription() && this.element()) {\n const subscribtion = this._menu.currentRouteChange\n .pipe(\n startWith(this._menu.currentRoute()),\n map((url) => url),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe((url) => {\n const _regex = new RegExp(this.check() || this.route());\n if (_regex.exec(url) && this.element())\n this._menu.setSelectedItem(this.element()!.nativeElement);\n })\n this.currentRouteChangeSubscription.set(subscribtion);\n }\n })\n\n }\n}\n","<li #button>\n <a matRipple matRippleColor=\"#ffffff66\" [routerLink]=\"isExternal() ? null : route()\" [href]=\"isExternal() ? route() : null\">\n <ng-content></ng-content>\n <span> {{ itemTitle() }} </span>\n </a>\n</li>\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { C3MenuComponent } from \"./components/c3-menu/c3-menu.component\";\nimport { RouterModule } from \"@angular/router\";\nimport { MatRippleModule } from \"@angular/material/core\";\nimport { C3NavItemComponent } from \"./components/c3-nav-item/c3-nav-item.component\";\n\n@NgModule({\n imports: [CommonModule, RouterModule, MatRippleModule],\n declarations: [C3MenuComponent, C3NavItemComponent],\n exports: [C3MenuComponent, C3NavItemComponent],\n providers: [],\n})\nexport class C3MenuModule { }\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-alert.component';\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/components/c3-dialog-template/c3-dialog-template.component';\nexport * from './lib/c3-dialog/services/c3-dialog.service';\nexport * from './lib/c3-dialog/directives/c3-open-dialog.directive';\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';\nexport * from './lib/c3-file-displayer/c3-file-display-list/c3-file-display-list-column-def.directive';\nexport * from './lib/c3-file-displayer/c3-file-display-list/tokens';\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 * 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/**\n * C3 Prevent Event\n */\nexport * from './lib/c3-prevent-event/index';\n\n/**\n * C3 Menu\n */\nexport * from './lib/c3-menu/c3-menu.module';\nexport * from './lib/c3-menu/components/c3-menu/c3-menu.component';\nexport * from './lib/c3-menu/components/c3-nav-item/c3-nav-item.component';\n\n/**\n * C3 PDF Viewer\n */\n// export * from './lib/c3-pdf-viewer/pdf-viewer-container/pdf-viewer-container.component';\n// export * from './lib/c3-pdf-viewer/pdf-viewer-content/pdf-viewer-content.component';\n// export * from './lib/c3-pdf-viewer/pdf-viewer-header/pdf-viewer-header.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i4","i5","i2.C3SafeUrlPipe","i3","i4.C3SafeUrlPipe","i2.FullScreenDirective","i3.C3FileViewerActionsComponent","i4.C3FileViewerImageComponent","i5.C3FileViewerPdfComponent","i6.C3FileViewerVideoComponent","i7.C3FileViewerDefaultComponent","i8","i1.C3FileViewerComponent","i1.C3FileViewerDialogComponent","i1.C3AutoAnimateDirective","i2.C3ExpansionHeaderComponent"],"mappings":"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"}
package/index.d.ts CHANGED
@@ -183,7 +183,7 @@ declare class C3DialogEmbedChildComponent<C> implements AfterViewInit {
183
183
  }[];
184
184
  };
185
185
  private _cdr;
186
- readonly target: Signal<ViewContainerRef>;
186
+ readonly target: Signal<ViewContainerRef | undefined>;
187
187
  createdComponent: i0.WritableSignal<ComponentRef<C> | null>;
188
188
  constructor(dialogRef: MatDialogRef<C3DialogEmbedChildComponent<C>>, data: {
189
189
  component?: ComponentType<C>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "c3-components",
3
- "version": "0.15.0",
3
+ "version": "0.15.1",
4
4
  "description": "C3 Components Library",
5
5
  "author": "c3ulnta0rk",
6
6
  "license": "MIT",