{"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})\nexport class AfrilinsGedLibService {\n\n  protected resourceUrlGateway = this.getEndpointFor('int/ged', 'INTGEDERP');\n\n  constructor() { }\n\n\n  async getDocumentsFromGed(numeroDossier: string): Promise<Document[]> {\n\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\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  public getEndpointFor(api: string, microservice?: string): string {\n    const baseUrl = 'http://54.39.243.220:8888/';\n    if (microservice) {\n      return `${baseUrl}${microservice}/${api}`;\n    }\n    return `${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, 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  // --- 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 (from app.component.ts) ---\n  isPanelOpen = false;\n  isFullScreen = false;\n  isGedDataLoaded = !!localStorage.getItem(\"root_path\"); // Simplified boolean conversion\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  /**\n   * Listen for changes in localStorage from other browser tabs/windows.\n   * If 'root_path' changes, reload the folder data.\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    this.afrilinsGedLibService.featureSwitchAside();\n    this.loadInitialFolder(); // Centralized method to load data on init\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  /**\n   * Centralized method to get the root path from localStorage and load documents.\n   * This is called on initialization and whenever the storage key changes.\n   */\n  private async loadInitialFolder(): Promise<void> {\n    const rootPathFromStorage = localStorage.getItem(\"root_path\");\n    this.isGedDataLoaded = !!rootPathFromStorage;\n\n    if (this.isGedDataLoaded) {\n      this.root_path = rootPathFromStorage as string;\n      console.log(\"Loading folder for root_path:\", this.root_path);\n      await this.getFolder(this.root_path);\n      // Update the first breadcrumb to reflect the root folder's name\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      // Clear existing data if any\n      this.currentDocuments = [];\n      this.filteredDocuments = [];\n    }\n  }\n\n  async getFolder(folderPath: string): Promise<void> {\n    this.loading = true\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\n    this.loading = false\n    // Ensure UI updates after async operation\n    this._detectChangeRef.detectChanges();\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) {\n        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; // Clear on error\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\") || ''); // Fallback to original 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  // --- Panel Management Methods ---\n\n  togglePanel(): void {\n    this.isGedDataLoaded = !!localStorage.getItem(\"root_path\");\n    if (!this.isGedDataLoaded) {\n      this.isPanelOpen = false;\n    } else {\n      this.isPanelOpen = !this.isPanelOpen;\n    }\n    \n    if (this.isPanelOpen) {\n      this.isFullScreen = false;\n      this.mainPanelWidth = 70;\n      this.gedPanelWidth = 30;\n      // Refresh data when panel is opened\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    \n    const newGedWidthPercent = (newGedWidthPx / totalWidth) * 100;\n\n    const minWidth = 20; // Min width in percent\n    const maxWidth = 80; // Max width in percent\n\n    if (newGedWidthPercent >= minWidth && newGedWidthPercent <= maxWidth) {\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\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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"}