{"version":3,"file":"afrilins-ged-lib.mjs","sources":["../../../projects/afrilins-ged-lib/src/lib/afrilins-ged-lib.service.ts","../../../projects/afrilins-ged-lib/src/lib/afrilins-ged-lib.component.ts","../../../projects/afrilins-ged-lib/src/lib/afrilins-ged-lib.component.html","../../../projects/afrilins-ged-lib/src/lib/afrilins-ged-lib.module.ts","../../../projects/afrilins-ged-lib/src/lib/configs/afrilins-ged.config.ts","../../../projects/afrilins-ged-lib/src/lib/tokens/tokens.ts","../../../projects/afrilins-ged-lib/src/public-api.ts","../../../projects/afrilins-ged-lib/src/afrilins-ged-lib.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { Document } from './types/document.interface'; // Ensure this type definition exists\n\n@Injectable({\n  providedIn: 'root'\n})\n\nexport class AfrilinsGedLibService {\n\n  // URL de base sera initialisée dynamiquement par le composant\n  private _baseUrl: string = '';\n  // La ressource gateway est maintenant une propriété calculée (getter)\n  // pour s'assurer que _baseUrl est défini avant d'être utilisée\n  protected get resourceUrlGateway(): string {\n    return this.getEndpointFor('int/ged', 'INTGEDERP');\n  }\n\n  constructor() { }\n\n  /**\n   * Définit l'URL de base du backend API.\n   * Cette méthode est appelée par le composant conteneur (@Input()).\n   * @param url L'URL de base (ex: 'http://localhost:5789/')\n   */\n  public setBaseUrl(url: string): void {\n    if (!url || this._baseUrl) {\n      // Ne pas écraser l'URL si elle est déjà définie, ou si la nouvelle est vide\n      return;\n    }\n    // Assurer que l'URL se termine par un slash pour une concaténation propre\n    this._baseUrl = url.endsWith('/') ? url : `${url}/`;\n    console.log('AfrilinsGedLibService initialized with base URL:', this._baseUrl);\n  }\n\n\n  async getDocumentsFromGed(numeroDossier: string): Promise<Document[]> {\n    // Vérification de sécurité avant l'appel\n    if (!this._baseUrl) {\n      console.error('GED Service Base URL is not set. Cannot fetch documents.');\n      // Lancer une erreur pour bloquer l'opération\n      throw new Error('Configuration error: Base URL for GED service is missing.');\n    }\n    \n    // Utilisation de la propriété calculée resourceUrlGateway\n    const url = new URL(`${this.resourceUrlGateway}/folders/by`);\n    url.searchParams.append('numeroDossier', numeroDossier);\n\n    try {\n      const response = await fetch(url.toString());\n\n      if (!response.ok) {\n        await this.handleHttpError(response);\n      }\n\n      return await response.json();\n\n    } catch (error) {\n\n      console.error('Fetch operation failed:', error);\n      throw error;\n    }\n  }\n\n\n  private async handleHttpError(response: Response): Promise<void> {\n    let errorBody;\n    try {\n\n      errorBody = await response.json();\n    } catch {\n      errorBody = await response.text();\n    }\n    \n    const errorMessage = `HTTP Error: ${response.status} ${response.statusText}. Details: ${JSON.stringify(errorBody)}`;\n    throw new Error(errorMessage);\n  }\n\n\n  /**\n   * Construit l'endpoint complet en utilisant l'URL de base dynamique.\n   * @param api Le chemin de l'API (ex: 'int/ged').\n   * @param microservice Le nom du microservice (ex: 'INTGEDERP').\n   * @returns L'URL complète de l'endpoint.\n   */\n  public getEndpointFor(api: string, microservice?: string): string {\n    // On utilise _baseUrl qui est maintenant une propriété de classe\n    if (!this._baseUrl) {\n      console.error('getEndpointFor called before _baseUrl was set.');\n      return ''; // Retourne une chaîne vide si non configuré\n    }\n    console.log(`Constructing endpoint for API: ${api}, Microservice: ${microservice}`);\n    return `${this._baseUrl}${api}`;\n  }\n\n    public featureEnabled(): boolean {\n    return false;\n  }\n\n  public featureSwitchAside(): void {\n    console.log(\"Feature aside toggled\");\n  }\n}","import { ChangeDetectorRef, Component, EventEmitter, HostListener, Input, OnInit, Output } from '@angular/core';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\nimport { Document } from './types/document.interface';\nimport { AfrilinsGedLibService } from './afrilins-ged-lib.service';\n\n@Component({\n  selector: 'afrilins-ged-lib',\n  templateUrl: './afrilins-ged-lib.component.html',\n  styleUrls: ['./afrilins-ged-lib.component.css']\n})\nexport class AfrilinsGedLibComponent implements OnInit {\n\n  /**\n   * Input for the Host URL.\n   * Can be used as a static attribute: host=\"http://api...\"\n   * Or as a binding: [host]=\"apiUrl\"\n   */\n  @Input('host')\n  set hostUrl(value: string) {\n    this._hostUrl = value;\n    if (value) {\n      this.afrilinsGedLibService.setBaseUrl(value);\n      // If the panel is already open and we get a new URL, we might want to reload\n      if (this.isPanelOpen) {\n        this.loadInitialFolder();\n      }\n    }\n  }\n\n  get hostUrl(): string {\n    return this._hostUrl;\n  }\n\n  private _hostUrl: string = '';\n\n  // --- Outputs ---\n  @Output() fullScreenToggled = new EventEmitter<void>();\n\n  // --- PDF Viewer State ---\n  selectedDocumentBlobUrl: SafeResourceUrl | null = null;\n  selectedDocumentTitle = '';\n  selectedDocument: Document | null = null;\n  loading: boolean = false;\n\n  // --- Document List and Navigation State ---\n  private allDocuments: Document[] = [];\n  currentDocuments: Document[] = [];\n  filteredDocuments: Document[] = [];\n  breadcrumbs: Document[] = [{ id: 'root', title: 'Accueil', type: 'DOSSIER', date: '', isFolder: true }];\n  root_path: string = \"\";\n\n  // --- UI/Panel State ---\n  isPanelOpen = false;\n  isFullScreen = false;\n  isGedDataLoaded = !!localStorage.getItem(\"root_path\");\n  activeTab = 'DÉCLARATION AVEC DÉTAILS';\n  tabs = [\n    'DÉCLARATION SANS DÉTAILS',\n    'DÉCLARATION AVEC DÉTAILS',\n    'COMPLEMENT SANS DÉTAILS',\n    'COMPLEMENT AVEC DÉTAILS'\n  ];\n\n  // --- Resizing State ---\n  isResizing = false;\n  startPositionX = 0;\n  mainPanelWidth = 70;\n  gedPanelWidth = 30;\n\n  constructor(\n    private afrilinsGedLibService: AfrilinsGedLibService,\n    private sanitizer: DomSanitizer,\n    private _detectChangeRef: ChangeDetectorRef\n  ) { }\n\n  @HostListener('window:storage', ['$event'])\n  onStorageChange(event: StorageEvent): void {\n    if (event.key === 'root_path') {\n      console.log(\"Storage change detected for 'root_path'. Reloading folder.\");\n      this.isGedDataLoaded = !!localStorage.getItem(\"root_path\");\n      this.loadInitialFolder();\n    }\n  }\n\n  ngOnInit(): void {\n    // If hostUrl was set statically, the setter has already run. \n    // If not, we warn.\n    if (!this.hostUrl) {\n      console.warn('AfrilinsGedLibComponent: host URL is missing. Please provide it via the [host] attribute.');\n    }\n    \n    this.afrilinsGedLibService.featureSwitchAside();\n    this.loadInitialFolder(); \n  }\n\n  extractHomeFolderName(path: string): string {\n    const segments = path.split('/');\n    return segments.length > 0 ? segments[segments.length - 1] : path;\n  }\n\n  private async loadInitialFolder(): Promise<void> {\n    const rootPathFromStorage = localStorage.getItem(\"root_path\");\n    this.isGedDataLoaded = !!rootPathFromStorage;\n\n    if (!this.hostUrl) {\n      // Don't error immediately if loading implicitly, just wait for input\n      return;\n    }\n\n    if (this.isGedDataLoaded) {\n      this.root_path = rootPathFromStorage as string;\n      await this.getFolder(this.root_path);\n      if (this.breadcrumbs.length > 0) {\n        this.breadcrumbs[0].title = this.extractHomeFolderName(this.root_path);\n      }\n    } else {\n      console.warn(\"'root_path' not found in localStorage. GED will not load data.\");\n      this.currentDocuments = [];\n      this.filteredDocuments = [];\n    }\n  }\n\n  async getFolder(folderPath: string): Promise<void> {\n    if (!this.hostUrl) return; \n\n    this.loading = true;\n    try {\n      const docs = await this.afrilinsGedLibService.getDocumentsFromGed(folderPath);\n\n      this.allDocuments = docs.map((doc: any): Document => ({\n        id: doc.id ?? '',\n        title: doc.title ?? '',\n        type: doc.type ?? '',\n        date: doc.date ?? '',\n        isFolder: doc.isFolder ?? doc.type === 'DOSSIER',\n        path: doc.path ?? '',\n        filePath: doc.filePath ?? '',\n        children: doc.children ?? [],\n      }));\n\n      this.currentDocuments = this.allDocuments;\n      this.filteredDocuments = this.allDocuments;\n    } catch (error) {\n      console.error(\"Error loading folder:\", error);\n    } finally {\n      this.loading = false;\n      this._detectChangeRef.detectChanges();\n    }\n  }\n\n  async openPdf(doc: Document): Promise<void> {\n    if (!doc.filePath) return;\n\n    this.selectedDocumentTitle = doc.title;\n    this.selectedDocument = doc;\n\n    try {\n      const response = await fetch(doc.filePath);\n      if (!response.ok) throw new Error(\"Failed to fetch GED file\");\n      \n      const blob = await response.blob();\n      const base64String = await this.blobToBase64(blob);\n      \n      this.selectedDocumentBlobUrl = this.sanitizer.bypassSecurityTrustResourceUrl(\n        `data:application/pdf;base64,${base64String}#toolbar=0&navpanes=0&view=FitH`\n      );\n    } catch (error) {\n      console.error(\"Error opening PDF: \", error);\n      this.selectedDocumentBlobUrl = null;\n    }\n  }\n\n  onSearch(event: Event): void {\n    const searchTerm = (event.target as HTMLInputElement).value.toLowerCase();\n    this.filteredDocuments = this.currentDocuments.filter(doc =>\n      doc.title.toLowerCase().includes(searchTerm)\n    );\n  }\n\n  goBackToList(): void {\n    this.selectedDocumentBlobUrl = null;\n    this.selectedDocumentTitle = '';\n    this.selectedDocument = null;\n  }\n\n  handleSelection(doc: Document): void {\n    this.selectedDocument = doc;\n    if (doc.type === \"DOSSIER\") {\n      this.navigateToFolder(doc);\n    } else {\n      this.openPdf(doc);\n    }\n  }\n\n  navigateToFolder(folder: Document): void {\n    this.breadcrumbs.push(folder);\n    this.root_path = folder.path ?? '';\n    this.getFolder(this.root_path);\n  }\n\n  navigateToBreadcrumb(index: number): void {\n    const targetFolder = this.breadcrumbs[index];\n    this.breadcrumbs.splice(index + 1);\n    this.root_path = targetFolder.path ?? (localStorage.getItem(\"root_path\") || '');\n    this.getFolder(this.root_path);\n  }\n\n  blobToBase64(blob: Blob): Promise<string> {\n    return new Promise((resolve, reject) => {\n      const reader = new FileReader();\n      reader.onloadend = () => {\n        if (typeof reader.result === 'string') {\n          resolve(reader.result.split(',')[1]);\n        } else {\n          reject(new Error(\"Failed to read blob as string\"));\n        }\n      };\n      reader.onerror = (error) => reject(error);\n      reader.readAsDataURL(blob);\n    });\n  }\n\n  toggleFullScreen(): void {\n    this.isFullScreen = !this.isFullScreen;\n    this.fullScreenToggled.emit();\n    this._detectChangeRef.detectChanges();\n  }\n\n  togglePanel(): void {\n    this.isGedDataLoaded = !!localStorage.getItem(\"root_path\");\n\n    if (!this.isGedDataLoaded || !this.hostUrl) {\n      if (!this.hostUrl) console.warn('Cannot open panel: Host URL is not set.');\n      return;\n    } \n    \n    this.isPanelOpen = !this.isPanelOpen;\n    \n    if (this.isPanelOpen) {\n      this.isFullScreen = false;\n      this.mainPanelWidth = 70;\n      this.gedPanelWidth = 30;\n      this.loadInitialFolder();\n    } else {\n      this.mainPanelWidth = 100;\n      this.gedPanelWidth = 0;\n    }\n  }\n\n  selectTab(tab: string): void {\n    this.activeTab = tab;\n  }\n\n  startResize(event: MouseEvent): void {\n    if (this.isFullScreen) return;\n    this.isResizing = true;\n    this.startPositionX = event.clientX;\n    event.preventDefault();\n  }\n\n  @HostListener('window:mousemove', ['$event'])\n  onMouseMove(event: MouseEvent): void {\n    if (!this.isResizing) return;\n    \n    const deltaX = event.clientX - this.startPositionX;\n    const totalWidth = window.innerWidth;\n    const currentGedWidthPx = (this.gedPanelWidth * totalWidth) / 100;\n    const newGedWidthPx = currentGedWidthPx - deltaX;\n    const newGedWidthPercent = (newGedWidthPx / totalWidth) * 100;\n\n    if (newGedWidthPercent >= 20 && newGedWidthPercent <= 80) {\n      this.gedPanelWidth = newGedWidthPercent;\n      this.mainPanelWidth = 100 - newGedWidthPercent;\n      this.startPositionX = event.clientX;\n    }\n  }\n\n  @HostListener('window:mouseup')\n  onMouseUp(): void {\n    this.isResizing = false;\n  }\n}","<section class=\"relative afrilins-ged-lib-component relative flex h-screen w-screen overflow-hidden font-sans\">\n\n  <div class=\"z-20 relative min-h-screen bg-slate-100 transition-all duration-500 ease-in-out\" style=\"flex: 1\"\n    [style.width.%]=\"mainPanelWidth\" [ngClass]=\"{\n      'hidden lg:block': isPanelOpen && isFullScreen,\n      'w-full': !isPanelOpen\n    }\">\n    <main class=\"h-screen w-full overflow-y-auto bg-white pb-5\">\n      <div class=\"flex h-full w-full\">\n        <div class=\"w-full transition-all duration-500 ease-in-out\">\n          <ng-content></ng-content>\n        </div>\n      </div>\n    </main>\n\n    <button (click)=\"togglePanel()\" class=\"ged-toggle-button ged-toggle-button--circular\" [ngClass]=\"{\n    'border-1 border-red-700 ': !isGedDataLoaded,\n    'text-[#2D4072]': !isGedDataLoaded,\n    'text-white': isGedDataLoaded\n  }\" [attr.aria-label]=\"isPanelOpen ? 'Fermer le panneau GED' : 'Ouvrir le panneau GED'\">\n      <svg class=\"h-5 w-5 flex-shrink-0 transition-transform duration-300\" [ngClass]=\"{'rotate-180': isPanelOpen}\"\n        fill=\"currentColor\" viewBox=\"0 0 24 24\">\n        <path d=\"M15 19l-7-7 7-7\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"3\" />\n      </svg>\n      <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"\n        class=\"mr-2 h-6 w-6 flex-shrink-0\">\n        <path\n          d=\"M19.5 21a3 3 0 0 0 3-3v-4.5a3 3 0 0 0-3-3h-15a3 3 0 0 0-3 3V18a3 3 0 0 0 3 3h15ZM1.5 10.146V6a3 3 0 0 1 3-3h5.379a2.25 2.25 0 0 1 1.59.659l2.122 2.121c.14.141.331.22.53.22H19.5a3 3 0 0 1 3 3v1.146A4.483 4.483 0 0 0 19.5 9h-15a4.483 4.483 0 0 0-3 1.146Z\" />\n      </svg>\n    </button>\n  </div>\n\n\n\n<div *ngIf=\"isPanelOpen && !isFullScreen\" class=\"relative z-5 mx-1 w-2 cursor-ew-resize transition-colors group\"\n    (mousedown)=\"startResize($event)\">\n    \n    <div class=\"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2\">\n      <svg class=\"h-6 w-6 text-gray-400 group-hover:text-[#2D4072]\" fill=\"none\" viewBox=\"0 0 24 24\"\n        stroke=\"currentColor\">\n        <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"\n          d=\"M8 7h12m0 0l-4-4m4 4l-4 4m0 6H4m0 0l4 4m-4-4l4-4\" />\n      </svg>\n    </div>\n\n</div>\n\n  <div *ngIf=\"isPanelOpen\" class=\"min-h-screen overflow-x-auto z-5 transition-transform transition-opacity duration-800 ease-in-out\" [ngClass]=\"{\n      'h-screen w-screen opacity-100 translate-x-0': isFullScreen,\n      'opacity-100 translate-x-0': !isFullScreen,\n      'translate-x-full opacity-0': !isPanelOpen\n    }\" [ngStyle]=\"{'width.%': !isFullScreen ? gedPanelWidth : null}\">\n    <div (fullScreenToggled)=\"toggleFullScreen()\">\n\n      <div *ngIf=\"loading\"  class=\"bg-[#c4e7f3] w-full h-screen  grid z-10 place-content-center place-items-center\">\n\n        <section  class=\"relative place-items-center grid h-full z-full gap-4\">   \n          <!--   ITEM 2 -->\n          <div class=\"bg-[#c4e7f3] w-32 h-32 absolute w-50 animate-ping rounded-full \"></div>\n          <!--   ITEM 3 -->\n          <div class=\"w-24 h-24  absolute animate-pulse rounded-full \"></div>\n          <!--   SVG LOGO -->\n\n          <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" class=\"text-[#2D4072] h-10 w-10 animate-spin\">\n            <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0 3.181 3.183a8.25 8.25 0 0 0 13.803-3.7M4.031 9.865a8.25 8.25 0 0 1 13.803-3.7l3.181 3.182m0-4.991v4.99\" />\n          </svg>\n\n        </section>\n      </div>\n\n\n\n\n\n\n\n      <div *ngIf=\"!loading\" class=\"flex w-full flex-col rounded-b-3xl bg-[#f4f4f4] bg-opacity-50 p-2 pb-5 pt-2\">\n        <ng-container *ngIf=\"!selectedDocumentBlobUrl; else pdfViewer\">\n          <div class=\"mb-3 flex w-full items-center justify-between p-4\">\n\n        <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" class=\"w-4 h-4 mr-1\">\n          <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M8.25 21v-4.875c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125V21m0 0h4.5V3.545M12.75 21h7.5V10.75M2.25 21h1.5m18 0h-18M2.25 9l4.5-1.636M18.75 3l-1.5.545m0 6.205 3 1m1.5.5-1.5-.5M6.75 7.364V3h-3v18m3-13.636 10.5-3.819\" />\n        </svg>\n\n            <nav class=\"flex w-full items-center overflow-hidden text-sm text-gray-700 font-italic\">\n\n              <ng-container *ngFor=\"let crumb of breadcrumbs; let i = index; let last = last\">\n                <span class=\"truncate\"\n                  [ngClass]=\"{'cursor-pointer hover:text-[#2d4072]': !last, 'text-gray-800 font-semibold': last}\"\n                  (click)=\"!last && navigateToBreadcrumb(i)\">\n                  {{ crumb.title }}\n                </span>\n                <svg *ngIf=\"!last\" class=\"mx-1 h-4 w-4 flex-shrink-0\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\"\n                  stroke=\"currentColor\">\n                  <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"m9 20.247 6-16.5\" />\n                </svg>\n              </ng-container>\n            </nav>\n          </div>\n          <div class=\"border-y border-[#4EAAD8] p-4 pb-2\">\n            <div class=\"flex items-center justify-between\">\n              <button (click)=\"toggleFullScreen()\"\n                class=\"flex items-center rounded-md p-1 text-sm text-gray-800 hover:text-[#2D4072]\">\n                <svg class=\"mr-2 h-5 w-5\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n                  <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"\n                    d=\"M4 8V4m0 0h4M4 4l5 5m11-1V4m0 0h-4m4 0l-5 5M4 16v4m0 0h4m-4 0l5-5m11 1v4m0 0h-4m4 0l-5-5\" />\n                </svg>\n                Plein écran\n              </button>\n              <div class=\"relative\">\n                <input (keyup)=\"onSearch($event)\" type=\"text\" placeholder=\"Trouver un fichier...\"\n                  class=\"w-48 rounded-md border py-1 pl-8 pr-2 text-sm focus:outline-none focus:ring-1 focus:ring-[#2D4072]\" />\n                <svg class=\"absolute left-2 top-1/2 h-4 w-4 -translate-y-1/2 text-gray-400\" fill=\"none\"\n                  viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n                  <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"\n                    d=\"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z\" />\n                </svg>\n              </div>\n            </div>\n          </div>\n          <div class=\"custom-scrollbar flex-grow overflow-y-auto rounded-b-3xl bg-white bg-opacity-50 p-2 h-full\">\n            <div *ngFor=\"let doc of filteredDocuments\" (click)=\"handleSelection(doc)\"\n              class=\"my-2 flex cursor-pointer items-center rounded-lg bg-gray-100 p-3 gap-2\">\n              <div class=\"grid place-items-center rounded-full w-8 h-8 place-content-center bg-white p-1\">\n                <ng-container *ngIf=\"doc.type === 'DOSSIER'\">\n                  <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"\n                    class=\"h-4 w-4 flex-shrink-0 text-[#2D4072] opacity-80\">\n                    <path\n                      d=\"M19.5 21a3 3 0 0 0 3-3v-4.5a3 3 0 0 0-3-3h-15a3 3 0 0 0-3 3V18a3 3 0 0 0 3 3h15ZM1.5 10.146V6a3 3 0 0 1 3-3h5.379a2.25 2.25 0 0 1 1.59.659l2.122 2.121c.14.141.331.22.53.22H19.5a3 3 0 0 1 3 3v1.146A4.483 4.483 0 0 0 19.5 9h-15a4.483 4.483 0 0 0-3 1.146Z\" />\n                  </svg>\n                </ng-container>\n\n                <ng-container *ngIf=\"doc.type !== 'DOSSIER'\">\n                  <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\"\n                    stroke=\"currentColor\" class=\"h-4 w-4 flex-shrink-0 text-[#2D4072] opacity-90\">\n                    <path stroke-linecap=\"round\" stroke-linejoin=\"round\"\n                      d=\"M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m2.25 0H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z\" />\n                  </svg>\n                </ng-container>\n              </div>\n              <div class=\"flex-grow overflow-hidden\">\n                <p class=\"mb-1  font-semibold text-md text-gray-800 truncate line-clamp-1\">{{ doc.title }}</p>\n                <p class=\"flex items-center space-x-2\">\n                  <span class=\" text-[#2D4072] text-xs opacity-90\">{{ doc.type }}</span>\n                  <span class=\"h-2 w-px bg-gray-400\"></span>\n                  <span class=\"text-xs text-gray-500\">{{ doc.date }}</span>\n                </p>\n              </div>\n              <button class=\"ml-4 text-gray-400 hover:text-[#2D4072]\">\n                <svg class=\"h-6 w-6\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n                  <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"\n                    d=\"M15 12a3 3 0 11-6 0 3 3 0 016 0z\" />\n                  <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"\n                    d=\"M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z\" />\n                </svg>\n              </button>\n            </div>\n            <div *ngIf=\"!filteredDocuments.length\"\n              class=\"my-2 flex cursor-pointer items-center rounded-lg  p-3\">\n              <div class=\"grid h-[5rem] flex-grow place-content-center place-items-center overflow-hidden\">\n                <p\n                  class=\"mb-1 pb-1 font-semibold text-md text-gray-800 truncate grid place-content-center place-items-center\">\n                  <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\"\n                    stroke=\"currentColor\" style=\"width: 1.5rem\">\n                    <path stroke-linecap=\"round\" stroke-linejoin=\"round\"\n                      d=\"M18.364 18.364A9 9 0 0 0 5.636 5.636m12.728 12.728A9 9 0 0 1 5.636 5.636m12.728 12.728L5.636 5.636\" />\n                  </svg>\n                  <span class=\"my-2 text-sm text-gray-500\">\n                    Aucun élément trouvé\n                  </span>\n                </p>\n              </div>\n            </div>\n          </div>\n        </ng-container>\n\n        <ng-template #pdfViewer>\n          <div class=\"flex flex-col h-full w-full\">\n            <div class=\"flex items-center justify-between p-3 border-b border-gray-200\">\n              <button (click)=\"goBackToList()\"\n                class=\"flex items-center text-sm font-semibold text-[#2D4072] hover:text-[#4EAAD8] transition-colors\">\n                <svg class=\"h-4 w-4 mr-1\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n                  <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M15 19l-7-7 7-7\" />\n                </svg>\n                Retour vers la liste\n              </button>\n              <div class=\"w-20\"></div>\n            </div>\n\n            <div class=\"flex items-center p-3 my-2 rounded-lg bg-gray-100 cursor-pointer gap-2\">\n              <div class=\"grid place-items-center rounded-full w-12 h-12 place-content-center bg-white p-1\">\n                <ng-container *ngIf=\"selectedDocument?.type === 'DOSSIER'\">\n                  <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"\n                    class=\"h-7 w-7 flex-shrink-0 text-[#2D4072] opacity-80\">\n                    <path\n                      d=\"M19.5 21a3 3 0 0 0 3-3v-4.5a3 3 0 0 0-3-3h-15a3 3 0 0 0-3 3V18a3 3 0 0 0 3 3h15ZM1.5 10.146V6a3 3 0 0 1 3-3h5.379a2.25 2.25 0 0 1 1.59.659l2.122 2.121c.14.141.331.22.53.22H19.5a3 3 0 0 1 3 3v1.146A4.483 4.483 0 0 0 19.5 9h-15a4.483 4.483 0 0 0-3 1.146Z\" />\n                  </svg>\n                </ng-container>\n\n                <ng-container *ngIf=\"selectedDocument?.type !== 'DOSSIER'\">\n                  <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\"\n                    stroke=\"currentColor\" class=\"h-7 w-7 flex-shrink-0 text-[#2D4072] opacity-90\">\n                    <path stroke-linecap=\"round\" stroke-linejoin=\"round\"\n                      d=\"M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m2.25 0H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z\" />\n                  </svg>\n                </ng-container>\n              </div>\n\n              <div class=\"flex-grow overflow-hidden\">\n                <p class=\"mb-1 pb-1 font-semibold text-sm text-gray-800 truncate\">{{ selectedDocumentTitle }}</p>\n                <p class=\"flex items-center space-x-2\">\n                  <span class=\"font-bold text-[#2D4072] text-xs\">{{ selectedDocument?.type }}</span>\n                  <span class=\"h-2 w-px bg-gray-400\"></span>\n                  <span class=\"text-xs text-gray-500\">{{ selectedDocument?.date }}</span>\n                </p>\n              </div>\n\n              <button class=\"text-gray-400 hover:text-[#2D4072] ml-4 hidden\">\n                <svg class=\"h-6 w-6\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n                  <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"\n                    d=\"M15 12a3 3 0 11-6 0 3 3 0 016 0z\" />\n                  <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\"\n                    d=\"M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z\" />\n                </svg>\n              </button>\n            </div>\n\n            <div class=\"flex-grow mt-2 z-fit h-full\">\n              <div class=\"w-full min-h-screen\">\n                <iframe allowtransparency=\"true\" style=\"height: 100vh; background: #FFFFFF\" frameborder=\"0\"\n                  *ngIf=\"selectedDocumentBlobUrl\" [src]=\"selectedDocumentBlobUrl\" type=\"application/pdf\"\n                  class=\"w-full min-h-screen border-none\"></iframe>\n              </div>\n            </div>\n          </div>\n        </ng-template>\n      </div>\n    </div>\n  </div>\n</section>","import {  NgModule } from '@angular/core';\nimport { AfrilinsGedLibComponent } from './afrilins-ged-lib.component';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n  declarations: [\n    AfrilinsGedLibComponent\n  ],\n  imports: [\n    CommonModule\n  ],\n  exports: [\n    AfrilinsGedLibComponent\n  ]\n})\nexport class AfrilinsGedLibModule {\n\n }\n","import { InjectionToken } from '@angular/core';\nimport { AfrilinsGedConfigInterface } from '../types/afrilins-ged-config.interface';\n\nexport const AFRILINS_GED_CONFIG = new InjectionToken<AfrilinsGedConfigInterface>('AFRILINS_GED_CONFIG');","import { InjectionToken } from '@angular/core';\n\nexport const FERMETURE_MENU_SERVICE = new InjectionToken<any>('FermetureMenuService');","/*\n * Public API Surface of afrilins-ged-lib\n */\n\nexport * from './lib/afrilins-ged-lib.service';\nexport * from './lib/afrilins-ged-lib.component';\nexport * from './lib/afrilins-ged-lib.module';\nexport * from './lib/types/afrilins-ged-config.interface';\nexport * from './lib/configs/afrilins-ged.config';\nexport * from './lib/types/document.interface';\nexport * from './lib/tokens/tokens';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.AfrilinsGedLibService"],"mappings":"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"}