{"version":3,"file":"islandice.mjs","sources":["../../../projects/islandice/src/lib/pipes/split/split.pipe.ts","../../../projects/islandice/src/lib/pipes/date-range-class/date-range-class.pipe.ts","../../../projects/islandice/src/lib/components/card-windows/card-windows.component.ts","../../../projects/islandice/src/lib/components/card-windows/card-windows.component.html","../../../projects/islandice/src/lib/components/card-windows/card-windows-body/card-windows-body.component.ts","../../../projects/islandice/src/lib/components/card-windows/card-windows-body/card-windows-body.component.html","../../../projects/islandice/src/lib/components/card-windows/card-windows-header/card-windows-header.component.ts","../../../projects/islandice/src/lib/components/card-windows/card-windows-header/card-windows-header.component.html","../../../projects/islandice/src/lib/components/card-windows/card-windows-footer/card-windows-footer.component.ts","../../../projects/islandice/src/lib/components/card-windows/card-windows-footer/card-windows-footer.component.html","../../../projects/islandice/src/lib/components/card-drawer/card-drawer-content/card-drawer-content.component.ts","../../../projects/islandice/src/lib/components/card-drawer/card-drawer-content/card-drawer-content.component.html","../../../projects/islandice/src/lib/components/card-drawer/card-drawer-menu/card-drawer-menu.component.ts","../../../projects/islandice/src/lib/components/card-drawer/card-drawer-menu/card-drawer-menu.component.html","../../../projects/islandice/src/lib/components/card-drawer/card-drawer.component.ts","../../../projects/islandice/src/lib/components/card-drawer/card-drawer.component.html","../../../projects/islandice/src/lib/components/floating-action/floating-action.component.ts","../../../projects/islandice/src/lib/components/floating-action/floating-action.component.html","../../../projects/islandice/src/lib/components/timeline-card/timeline-card-time/timeline-card-time.component.ts","../../../projects/islandice/src/lib/components/timeline-card/timeline-card-time/timeline-card-time.component.html","../../../projects/islandice/src/lib/components/timeline-card/timeline-card-content/timeline-card-content.component.ts","../../../projects/islandice/src/lib/components/timeline-card/timeline-card-content/timeline-card-content.component.html","../../../projects/islandice/src/lib/components/timeline-card/timeline-card-info/timeline-card-info.component.ts","../../../projects/islandice/src/lib/components/timeline-card/timeline-card-info/timeline-card-info.component.html","../../../projects/islandice/src/lib/components/timeline-card/timeline-card-container/timeline-card-container.component.ts","../../../projects/islandice/src/lib/components/timeline-card/timeline-card-container/timeline-card-container.component.html","../../../projects/islandice/src/lib/components/timeline-card/timeline-card.component.ts","../../../projects/islandice/src/lib/components/timeline-card/timeline-card.component.html","../../../projects/islandice/src/lib/components/isi-modal/isi-modal.component.ts","../../../projects/islandice/src/lib/components/isi-modal/isi-modal.component.html","../../../projects/islandice/src/lib/components/timeline-calendar/timeline-calendar.component.ts","../../../projects/islandice/src/lib/components/timeline-calendar/timeline-calendar.component.html","../../../projects/islandice/src/lib/components/tabs/tab-title/tab-title.component.ts","../../../projects/islandice/src/lib/components/tabs/tab-title/tab-title.component.html","../../../projects/islandice/src/lib/components/tabs/tab-content/tab-content.component.ts","../../../projects/islandice/src/lib/components/tabs/tab-content/tab-content.component.html","../../../projects/islandice/src/lib/components/tabs/tab-container/tab-container.component.ts","../../../projects/islandice/src/lib/components/tabs/tab-container/tab-container.component.html","../../../projects/islandice/src/lib/components/tabs/tabs.component.ts","../../../projects/islandice/src/lib/components/tabs/tabs.component.html","../../../projects/islandice/src/lib/components/isi-paginator/isi-paginator.component.ts","../../../projects/islandice/src/lib/components/isi-paginator/isi-paginator.component.html","../../../projects/islandice/src/lib/components/isi-table/isi-table.component.ts","../../../projects/islandice/src/lib/components/isi-table/isi-table.component.html","../../../projects/islandice/src/lib/components/isi-splitter/isi-splitter.component.ts","../../../projects/islandice/src/lib/components/isi-splitter/isi-splitter.component.html","../../../projects/islandice/src/lib/islandice.service.ts","../../../projects/islandice/src/lib/islandice.component.ts","../../../projects/islandice/src/public-api.ts","../../../projects/islandice/src/islandice.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n  name: 'split',\r\n  standalone: true\r\n})\r\nexport class SplitPipe implements PipeTransform {\r\n\r\n  transform(text: string, by: string, index: number=0): unknown {\r\n    return text.split(by)[index];\r\n  }\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport moment from \"moment\";\r\n\r\n@Pipe({\r\n  name: 'dateRangeClass',\r\n  standalone: true\r\n})\r\nexport class DateRangeClassPipe implements PipeTransform {\r\n\r\n  transform(value: any, startDate: string, endDate: string,\r\n  passedColor: string,\r\n  notPassedColor: string): string {\r\n    // Convertir les dates en objets Moment\r\n    const date = moment(value, 'DD/MM/YYYY');\r\n    const start = moment(startDate, 'DD/MM/YYYY');\r\n    const end = moment(endDate, 'DD/MM/YYYY');\r\n\r\n    // Vérifier si la date est comprise entre les dates de début et de fin\r\n    if (date.isBetween(start, end, undefined, '[]')) {\r\n      const currentDate = moment();\r\n\r\n      // Vérifier si la date est passée ou non\r\n      if (date.isBefore(currentDate) && date.format('DD/MM/YYYY') !== currentDate.format('DD/MM/YYYY')) {\r\n        return passedColor; // Retourner la couleur pour une date passée\r\n      } else {\r\n        return notPassedColor; // Retourner la couleur pour une date non passée\r\n      }\r\n    }\r\n\r\n    // Retourne une chaîne vide si la date n'est pas comprise entre les deux dates\r\n    return 'white';\r\n  }\r\n\r\n}\r\n","import {AfterViewInit, Component, ElementRef, input, InputSignal, signal, viewChild, ViewChild} from '@angular/core';\r\nimport {NgClass, NgStyle, NgTemplateOutlet} from \"@angular/common\";\r\nimport {IsiCardDrawerComponent} from \"../card-drawer/card-drawer.component\";\r\n\r\n@Component({\r\n  selector: 'isi-card-windows',\r\n  standalone: true,\r\n  imports: [\r\n    NgClass,\r\n    NgTemplateOutlet,\r\n    NgStyle\r\n  ],\r\n  templateUrl: './card-windows.component.html',\r\n  styleUrl: './card-windows.component.css'\r\n})\r\nexport class IsiCardWindowsComponent implements AfterViewInit {\r\n\r\n  header = viewChild<ElementRef<HTMLElement>>('header');\r\n  footer = viewChild<ElementRef<HTMLElement>>('footer');\r\n  spacingValue = signal('10');\r\n\r\n  align: InputSignal<string> = input(\"horizontal\")\r\n\r\n  showHeader: InputSignal<boolean> = input(true);\r\n  bgHeader: InputSignal<string> = input('#9ca3af');\r\n  showBody: InputSignal<boolean> = input(true);\r\n  bgBody: InputSignal<string> = input('#fff');\r\n  showFooter: InputSignal<boolean> = input(true);\r\n  bgFooter: InputSignal<string> = input('#9ca3af');\r\n\r\n  ngAfterViewInit() {\r\n    this.updateSpacingValue('out')\r\n  }\r\n\r\n\r\n  updateSpacingValue(position: string) {\r\n    if(position=='out') {\r\n      const headerdHeight = (this.align() === 'vertical' ? this.header()?.nativeElement.offsetHeight : this.header()?.nativeElement.offsetWidth) ?? 0;\r\n      const footerdHeight = (this.align() === 'vertical' ? this.footer()?.nativeElement.offsetHeight : this.footer()?.nativeElement.offsetWidth) ?? 0;\r\n\r\n      this.spacingValue.set(`${(headerdHeight > 0 ? 1 : -1) * ((footerdHeight / 4) - (headerdHeight / 4)) }px`); // 25% de la hauteur réelle\r\n    } else if(position=='in') {\r\n      this.spacingValue.set(`0`);\r\n    }\r\n  }\r\n\r\n}\r\n","<div (mouseenter)=\"updateSpacingValue('in')\" (mouseleave)=\"updateSpacingValue('out')\"\r\n     [ngClass]=\"align() === 'vertical' ? 'flex flex-col' : align() === 'horizontal' ? 'flex flex-row' : ''\"\r\n     class=\"bg-white group rounded shadow transition duration-500 overflow-hidden\"\r\n     style=\"--spacing: 50%;\">\r\n\r\n  @if (showHeader()) {\r\n    <div #header\r\n         [ngStyle]=\"{'background-color': bgHeader()}\"\r\n         [ngClass]=\"align() === 'vertical' ? '-translate-y-1/2 group-hover:translate-y-0' : align() === 'horizontal' ? '-translate-x-1/2 group-hover:translate-x-0' : ''\"\r\n         class=\"flex justify-between hover:bg-yellow-300 overflow-hidden duration-500 transition\">\r\n      <div class=\"w-full h-full opacity-0 group-hover:opacity-100\">\r\n        <ng-content select=\"isi-card-windows-header\"/>\r\n      </div>\r\n    </div>\r\n  }\r\n\r\n  @if (showBody()) {\r\n    <div [ngStyle]=\"\r\n    {'transform': (align() === 'vertical' ? 'translateY(' : 'translateX(') + spacingValue() + ')', 'background-color': bgBody()}\"\r\n         [class.flex-1]=\"align() === 'horizontal'\" class=\"group-hover:translate-y-0 duration-500 transition\">\r\n      <ng-content select=\"isi-card-windows-body\"/>\r\n    </div>\r\n  }\r\n\r\n  @if (showFooter()) {\r\n    <div #footer\r\n         [ngStyle]=\"{'background-color': bgFooter()}\"\r\n         [ngClass]=\"align() === 'vertical' ? 'translate-y-1/2 group-hover:translate-y-0' : align() === 'horizontal' ? 'translate-x-1/2 group-hover:translate-x-0' : ''\"\r\n         class=\"bg-gray-400 flex justify-between overflow-hidden duration-500 transition\">\r\n      <div class=\"w-full h-full opacity-0 group-hover:opacity-100\">\r\n        <ng-content select=\"isi-card-windows-footer\"/>\r\n      </div>\r\n    </div>\r\n  }\r\n\r\n</div>\r\n","import {Component, computed, ElementRef, Signal} from '@angular/core';\r\nimport {IsiCardDrawerComponent} from \"../../card-drawer/card-drawer.component\";\r\n\r\n@Component({\r\n  selector: 'isi-card-windows-body',\r\n  standalone: true,\r\n  imports: [],\r\n  templateUrl: './card-windows-body.component.html',\r\n  styleUrl: './card-windows-body.component.css'\r\n})\r\nexport class IsiCardWindowsBodyComponent {\r\n  constructor(private el: ElementRef) {}\r\n\r\n  text: Signal<string> = computed(() => this.el.nativeElement.innerHTML.trim());\r\n}\r\n","<ng-content></ng-content>\r\n","import {Component, computed, ElementRef, Signal} from '@angular/core';\r\nimport {IsiCardDrawerComponent} from \"../../card-drawer/card-drawer.component\";\r\n\r\n@Component({\r\n  selector: 'isi-card-windows-header',\r\n  standalone: true,\r\n  imports: [],\r\n  templateUrl: './card-windows-header.component.html',\r\n  styleUrl: './card-windows-header.component.css'\r\n})\r\nexport class IsiCardWindowsHeaderComponent {\r\n  constructor(private el: ElementRef) {}\r\n\r\n  text: Signal<string> = computed(() => this.el.nativeElement.innerHTML.trim());\r\n}\r\n","<ng-content></ng-content>\r\n","import {Component, computed, ElementRef, Signal} from '@angular/core';\r\nimport {IsiCardDrawerComponent} from \"../../card-drawer/card-drawer.component\";\r\n\r\n@Component({\r\n  selector: 'isi-card-windows-footer',\r\n  standalone: true,\r\n  imports: [],\r\n  templateUrl: './card-windows-footer.component.html',\r\n  styleUrl: './card-windows-footer.component.css'\r\n})\r\nexport class IsiCardWindowsFooterComponent {\r\n  constructor(private el: ElementRef) {}\r\n\r\n  text: Signal<string> = computed(() => this.el.nativeElement.innerHTML.trim());\r\n}\r\n","<ng-content></ng-content>\r\n","import {Component, computed, ElementRef, Signal} from '@angular/core';\r\nimport {IsiCardDrawerComponent} from \"../card-drawer.component\";\r\n\r\n@Component({\r\n  selector: 'isi-card-drawer-content',\r\n  standalone: true,\r\n  imports: [],\r\n  templateUrl: './card-drawer-content.component.html',\r\n  styleUrl: './card-drawer-content.component.css'\r\n})\r\nexport class IsiCardDrawerContentComponent {\r\n  constructor(private el: ElementRef) {}\r\n\r\n  text: Signal<string> = computed(() => this.el.nativeElement.innerHTML.trim());\r\n}\r\n","<ng-content></ng-content>\r\n","import {Component, computed, ElementRef, Signal} from '@angular/core';\r\nimport {IsiCardDrawerComponent} from \"../card-drawer.component\";\r\n\r\n@Component({\r\n  selector: 'isi-card-drawer-menu',\r\n  standalone: true,\r\n  imports: [],\r\n  templateUrl: './card-drawer-menu.component.html',\r\n  styleUrl: './card-drawer-menu.component.css'\r\n})\r\nexport class IsiCardDrawerMenuComponent {\r\n  constructor(private el: ElementRef) {}\r\n\r\n  text: Signal<string> = computed(() => this.el.nativeElement.innerHTML.trim());\r\n}\r\n","<ng-content></ng-content>\r\n","import {AfterViewInit, Component, ContentChild, ElementRef, input, InputSignal, signal, viewChild} from '@angular/core';\r\nimport {NgClass, NgTemplateOutlet} from \"@angular/common\";\r\nimport {IsiCardDrawerContentComponent} from \"./card-drawer-content/card-drawer-content.component\";\r\nimport {IsiCardDrawerMenuComponent} from \"./card-drawer-menu/card-drawer-menu.component\";\r\n\r\n@Component({\r\n  selector: 'isi-card-drawer',\r\n  standalone: true,\r\n  imports: [\r\n    NgClass,\r\n    NgTemplateOutlet\r\n  ],\r\n  templateUrl: './card-drawer.component.html',\r\n  styleUrl: './card-drawer.component.css'\r\n})\r\nexport class IsiCardDrawerComponent implements AfterViewInit {\r\n\r\n  @ContentChild(IsiCardDrawerContentComponent) cardDrawerContentComponent?: IsiCardDrawerContentComponent;\r\n  @ContentChild(IsiCardDrawerMenuComponent) cardDrawerMenuComponent?: IsiCardDrawerMenuComponent;\r\n\r\n  drawer = viewChild<ElementRef<HTMLElement>>('drawer');\r\n  contentCard = viewChild<ElementRef<HTMLElement>>('contentCard');\r\n\r\n  orientationPosition: InputSignal<string> = input(\"horizontal-bottom\")\r\n\r\n  spacingValue = signal('0');\r\n  heightContentCard = signal(0);\r\n\r\n  private observer?: IntersectionObserver;\r\n\r\n  ngAfterViewInit(): void {\r\n    this.observer = new IntersectionObserver(([entry]) => {\r\n      if (entry.isIntersecting) {\r\n        this.initializeComponent();\r\n        this.observer?.disconnect(); // Désactive l'observer après l'initialisation\r\n      }\r\n    }, { threshold: 0.1 });\r\n\r\n    const contentCardElement = this.contentCard()?.nativeElement;\r\n\r\n    if (contentCardElement) {\r\n      this.observer.observe(contentCardElement);\r\n    }\r\n  }\r\n\r\n  private initializeComponent() {\r\n    this.updateSpacingValue('out');\r\n    const val = this.contentCard()?.nativeElement.offsetHeight ?? 0;\r\n    this.heightContentCard.set(val !== 0 ? (val - (val * 0.1)) : 0);\r\n  }\r\n\r\n  updateSpacingValue(position: string) {\r\n    if(position=='out') {\r\n      const value = (this.orientationPosition().includes('vertical') ? this.drawer()?.nativeElement.offsetWidth : this.drawer()?.nativeElement.offsetHeight) ?? 0;\r\n\r\n      this.spacingValue.set(`${ value / 2 }px`); // 25% de la hauteur réelle\r\n    } else if(position=='in') {\r\n      this.spacingValue.set(`0px`);\r\n    }\r\n  }\r\n\r\n}\r\n","<div\r\n  class=\"relative flex items-center justify-center h-full w-full\">\r\n\r\n  <div (mouseenter)=\"updateSpacingValue('in')\" (mouseleave)=\"updateSpacingValue('out')\"\r\n       [class.flex-col]=\"orientationPosition() === 'horizontal-bottom'\"\r\n       [class.flex-col-reverse]=\"orientationPosition() === 'horizontal-top'\"\r\n       [class.flex-row]=\"orientationPosition() === 'vertical-right'\"\r\n       [class.flex-row-reverse]=\"orientationPosition() === 'vertical-left'\"\r\n       class=\"relative group flex items-center w-full justify-center\">\r\n    @if (cardDrawerContentComponent) {\r\n      <div #contentCard\r\n        [style.transform]=\"orientationPosition().includes('horizontal') ?\r\n      (orientationPosition().includes('bottom') ? 'translateY('+ spacingValue() + ')' : 'translateY(-'+ spacingValue() + ')') :\r\n      (orientationPosition().includes('left') ? 'translateX(-'+ spacingValue() + ')' : 'translateX('+ spacingValue() + ')')\r\n      \"\r\n        class=\"card-drawer-content shadow-lg border-2 border-gray-400 cursor-pointer duration-500 transition bg-white rounded-lg\r\n        relative w-full flex flex-col z-10\">\r\n\r\n        <ng-content select=\"isi-card-drawer-content\"/>\r\n\r\n      </div>\r\n    }\r\n\r\n    @if (cardDrawerMenuComponent) {\r\n      <div #drawer\r\n           [ngClass]=\"orientationPosition().includes('horizontal') ?\r\n            (orientationPosition().includes('bottom') ? 'space-x-3 overflow-x-auto overflow-y-hidden -translate-y-full group-hover:-translate-y-[4px] w-[90%] h-auto' : 'space-x-3 overflow-x-auto overflow-y-hidden translate-y-full group-hover:translate-y-[4px] w-[90%] h-auto') :\r\n            (orientationPosition().includes('left') ? 'space-y-3 rtl overflow-x-hidden overflow-y-auto translate-x-full group-hover:translate-x-[4px] w-auto px-2' : 'py-2 space-y-3 overflow-x-hidden overflow-y-auto -translate-x-full group-hover:-translate-x-[4px] w-auto px-2')\r\n       \"\r\n           [style.height]=\"orientationPosition().includes('vertical') ? (heightContentCard() + 'px') : ''\"\r\n           [class.flex-row]=\"orientationPosition().includes('horizontal')\"\r\n           [class.flex-col]=\"orientationPosition().includes('vertical')\"\r\n           class=\"card-drawer group duration-700 px-5\r\n        transition z-0 opacity-0 group-hover:opacity-100 border-gray-400 border-2 flex justify-around items-center bg-white shadow-md rounded-lg\">\r\n\r\n        <ng-content select=\"isi-card-drawer-menu\"/>\r\n\r\n      </div>\r\n    }\r\n  </div>\r\n\r\n</div>\r\n\r\n\r\n","import {Component, input, InputSignal, OnInit, signal} from '@angular/core';\r\nimport {NgClass, NgStyle, NgTemplateOutlet} from \"@angular/common\";\r\nimport {IsiCardDrawerComponent} from \"../card-drawer/card-drawer.component\";\r\n\r\n@Component({\r\n  selector: 'isi-floating-action',\r\n  standalone: true,\r\n  imports: [\r\n    NgClass,\r\n    NgTemplateOutlet,\r\n    NgStyle\r\n  ],\r\n  templateUrl: './floating-action.component.html',\r\n  styleUrl: './floating-action.component.css'\r\n})\r\nexport class IsiFloatingActionComponent  implements OnInit{\r\n  icon = input('plus'); // Par défaut, l'icône principale est un \"+\"\r\n  listeActionTemplate: InputSignal<any> = input();\r\n  buttonActionTemplate: InputSignal<any> = input();\r\n  position = input('bottom-right');\r\n  orientation = input('vertical');\r\n  isOpen: boolean = false;\r\n  positionCss = input('fixed')\r\n\r\n  classListeButton = signal('');\r\n\r\n  ngOnInit() {\r\n    this.classListeButton.set(this.listeButtonClasses);\r\n  }\r\n\r\n  toggleActions() {\r\n    this.isOpen = !this.isOpen;\r\n    this.classListeButton.set(this.listeButtonClasses);\r\n  }\r\n\r\n  get positionClasses(): string {\r\n    // Classes CSS dynamiques basées sur la position\r\n    switch (this.position()) {\r\n      case 'top-left':\r\n        return 'top-4 left-4';\r\n      case 'top-right':\r\n        return 'top-4 right-4';\r\n      case 'bottom-left':\r\n        return 'bottom-4 left-4';\r\n      case 'bottom-right':\r\n        return 'bottom-4 right-4';\r\n      default:\r\n        return 'bottom-4 right-4'; // Position par défaut\r\n    }\r\n  }\r\n\r\n\r\n\r\n  get listeButtonClasses(): string {\r\n    let classe: string[] = [];\r\n\r\n    // Base classes for orientation\r\n    const orientation = this.orientation();\r\n    const position = this.position();\r\n    const isOpen = this.isOpen;\r\n\r\n    if (orientation === 'vertical') {\r\n      classe.push(\"left-1/2\", \"-translate-x-1/2\");\r\n      if (isOpen) {\r\n        if (position.includes('top')) {\r\n          classe.push(\"translate-y-[70px]\");\r\n        } else if (position.includes('bottom')) {\r\n          classe.push(\"-translate-y-[calc(100%+20px)]\");\r\n        }\r\n      } else {\r\n        if (position.includes('top')) {\r\n          classe.push(\"-translate-y-full\");\r\n        }\r\n        else if (position.includes('bottom')) {\r\n          classe.push(\"translate-y-full\");\r\n        }\r\n      }\r\n    } else if (orientation === 'horizontal') {\r\n      classe.push(\"top-1/2\", \"-translate-y-1/2\");\r\n      if (isOpen) {\r\n        if (position.includes('left')) {\r\n          classe.push(\"translate-x-[70px]\");\r\n        } else if (position.includes('right')) {\r\n          classe.push(\"-translate-x-[calc(100%+20px)]\");\r\n        }\r\n      } else {\r\n        if (position.includes('left')) {\r\n          classe.push(\"-translate-x-full\");\r\n        } else if (position.includes('right')) {\r\n          classe.push(\"translate-x-0\");\r\n        }\r\n      }\r\n    }\r\n\r\n    // Add classes based on the open/closed state\r\n    classe.push(isOpen ? \"h-auto w-auto scale-100\" : \"h-0 w-0 scale-0\");\r\n\r\n    // Combine all classes into a single string\r\n    return classe.join(\" \");\r\n  }\r\n\r\n}\r\n","<div [ngClass]=\"positionClasses\"\r\n     [class.flex-row]=\"orientation() === 'horizontal'\"\r\n     [class.flex-col]=\"orientation() === 'vertical'\"\r\n     [ngStyle]=\"{'position': positionCss()}\"\r\n     class=\"flex space-y-2 z-50\">\r\n  <!-- Liste des actions (ng-content) -->\r\n  <div\r\n    [ngClass]=\"classListeButton()\"\r\n    [class.flex-col]=\"orientation() === 'vertical'\"\r\n    [class.flex-row]=\"orientation() === 'horizontal'\"\r\n    [class.space-y-2]=\"orientation() === 'vertical'\"\r\n    [class.space-x-2]=\"orientation() === 'horizontal'\"\r\n    class=\"absolute flex justify-center items-center transition-all duration-300\"\r\n  >\r\n    <ng-container *ngTemplateOutlet=\"listeActionTemplate()\"/>\r\n  </div>\r\n\r\n  <!-- Bouton principal -->\r\n  <button (click)=\"toggleActions()\"\r\n          style=\"margin: 0!important\"\r\n          class=\"w-14 overflow-hidden h-14 flex items-center justify-center rounded-full\"\r\n  >\r\n    <ng-container *ngTemplateOutlet=\"buttonActionTemplate()\"/>\r\n  </button>\r\n</div>\r\n","import {Component, TemplateRef, ViewChild} from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'isi-timeline-card-time',\r\n  standalone: true,\r\n  imports: [],\r\n  templateUrl: './timeline-card-time.component.html',\r\n  styleUrl: './timeline-card-time.component.css'\r\n})\r\nexport class IsiTimelineCardTimeComponent {\r\n  @ViewChild(TemplateRef, { static: true }) templateRef!: TemplateRef<any>;\r\n}\r\n","<ng-template><ng-content></ng-content></ng-template>\r\n","import {Component, TemplateRef, ViewChild} from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'isi-timeline-card-content',\r\n  standalone: true,\r\n  imports: [],\r\n  templateUrl: './timeline-card-content.component.html',\r\n  styleUrl: './timeline-card-content.component.css'\r\n})\r\nexport class IsiTimelineCardContentComponent {\r\n  @ViewChild(TemplateRef, { static: true }) templateRef!: TemplateRef<any>;\r\n}\r\n","<ng-template><ng-content></ng-content></ng-template>\r\n","import {Component, TemplateRef, ViewChild} from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'isi-timeline-card-info',\r\n  standalone: true,\r\n  imports: [],\r\n  templateUrl: './timeline-card-info.component.html',\r\n  styleUrl: './timeline-card-info.component.css'\r\n})\r\nexport class IsiTimelineCardInfoComponent {\r\n  @ViewChild(TemplateRef, { static: true }) templateRef!: TemplateRef<any>;\r\n}\r\n","<ng-template><ng-content></ng-content></ng-template>\r\n","import {AfterContentInit, Component, ContentChild} from '@angular/core';\r\nimport {IsiTimelineCardTimeComponent} from \"../timeline-card-time/timeline-card-time.component\";\r\nimport {IsiTimelineCardContentComponent} from \"../timeline-card-content/timeline-card-content.component\";\r\nimport {IsiTimelineCardInfoComponent} from \"../timeline-card-info/timeline-card-info.component\";\r\n\r\n@Component({\r\n  selector: 'isi-timeline-card-container',\r\n  standalone: true,\r\n  imports: [],\r\n  templateUrl: './timeline-card-container.component.html',\r\n  styleUrl: './timeline-card-container.component.css'\r\n})\r\nexport class IsiTimelineCardContainerComponent implements AfterContentInit {\r\n  @ContentChild(IsiTimelineCardTimeComponent) timeComponent?: IsiTimelineCardTimeComponent;\r\n  @ContentChild(IsiTimelineCardInfoComponent) infoComponent?: IsiTimelineCardInfoComponent;\r\n  @ContentChild(IsiTimelineCardContentComponent) contentComponent?: IsiTimelineCardContentComponent;\r\n\r\n  timeTemplate: any;\r\n  infoTemplate: any;\r\n  contentTemplate: any;\r\n\r\n  ngAfterContentInit() {\r\n    this.timeTemplate = this.timeComponent?.templateRef;\r\n    this.infoTemplate = this.infoComponent?.templateRef;\r\n    this.contentTemplate = this.contentComponent?.templateRef;\r\n  }\r\n\r\n\r\n}\r\n","<ng-content></ng-content>\r\n","import {Component, ContentChildren, input, InputSignal, OnInit, QueryList, TemplateRef} from '@angular/core';\r\nimport {IsiConfigColor} from \"../../models\";\r\nimport {IsiDataTimelineGraph} from \"../../models\";\r\nimport {NgTemplateOutlet} from \"@angular/common\";\r\nimport {IsiTimelineCardContainerComponent} from \"./timeline-card-container/timeline-card-container.component\";\r\nimport {IsiCardDrawerComponent} from \"../card-drawer/card-drawer.component\";\r\n\r\n@Component({\r\n  selector: 'isi-timeline-card',\r\n  standalone: true,\r\n  imports: [\r\n    NgTemplateOutlet\r\n  ],\r\n  templateUrl: './timeline-card.component.html',\r\n  styleUrl: './timeline-card.component.css'\r\n})\r\nexport class IsiTimelineCardComponent implements OnInit{\r\n\r\n  @ContentChildren(IsiTimelineCardContainerComponent) containers!: QueryList<IsiTimelineCardContainerComponent>;\r\n\r\n  gap: InputSignal<number> = input(0);\r\n\r\n  heightCard: InputSignal<number> = input(100);\r\n  widthCard: InputSignal<number> = input(180);\r\n\r\n  widthTimeContent: InputSignal<number> = input(180);\r\n  configColor: InputSignal<IsiConfigColor[]> = input([\r\n    {\r\n      bgColor: \"#7c90ff\",\r\n      textColor: \"#000\"\r\n    },\r\n    {\r\n      bgColor: \"#fdc19b\",\r\n      textColor: \"#000\"\r\n    },\r\n    {\r\n      bgColor: \"#9bfdd7\",\r\n      textColor: \"#000\"\r\n    },\r\n  ]);\r\n\r\n  bgColor: InputSignal<string> = input(\"white\")\r\n\r\n  startCard : InputSignal<\"top\" | \"bottom\"> = input.required();\r\n  data : InputSignal<any[]> = input.required();\r\n  dataGraph : IsiDataTimelineGraph[] = [];\r\n\r\n/*  timeTemplate: InputSignal<TemplateRef<any>> = input.required();\r\n  cardTemplate: InputSignal<TemplateRef<any>> = input.required();\r\n  infoTemplate: InputSignal<any> = input();*/\r\n\r\n  ngOnInit() {\r\n    this.buildDataTimelineGraph();\r\n  }\r\n\r\n  private buildDataTimelineGraph() {\r\n    this.dataGraph = [];\r\n    let position: 'top' | 'bottom' = this.startCard();\r\n    this.data().forEach(\r\n      (data: any, index: number) => {\r\n        if(index > 0){position = (position == 'top') ? 'bottom' : 'top';}\r\n        this.dataGraph.push({data, position, configColorCard: this.configColor()[index % this.configColor().length]})\r\n      }\r\n    )\r\n  }\r\n\r\n}\r\n","<div class=\"ps-[5px] flex h-full items-center min-w-max content-timeline justify-center\"\r\n     [style]=\"{'--bg-color': bgColor()}\">\r\n\r\n  @for (container of containers; track container;) {\r\n\r\n    <div [class.flex-col]=\"dataGraph[$index].position === 'bottom'\" [class.flex-col-reverse]=\"dataGraph[$index].position === 'top'\"\r\n         class=\"flex justify-center items-center\">\r\n\r\n      <div [style]=\"{'height': (heightCard()+gap())+'px', 'width': widthCard()+'px'}\"></div>\r\n\r\n      <div class=\"h-[80px] py-0.5 w-[50px] flex-col flex items-center\"></div>\r\n\r\n      <!-- Arrow -->\r\n      <div\r\n        class=\" h-[40px]\">\r\n        <div [class.end]=\"$index != dataGraph.length - 1 && dataGraph.length > 1\"\r\n             [class.start]=\"$index === dataGraph.length - 1 && dataGraph.length > 1\"\r\n             [style]=\"{'width': widthTimeContent()+'px', 'height': '40px', 'border-width': '2px', 'background': dataGraph[$index].configColorCard.bgColor, 'color': dataGraph[$index].configColorCard.textColor}\"\r\n             class=\"text-sm flex items-center ps-2 relative shadow-inner shadow-gray-700\">\r\n          <div [class.start]=\"$index > 0 && $index < dataGraph.length -1\"\r\n               class=\"w-full flex items-center justify-center h-full ps-3 pe-5\">\r\n            <ng-container *ngTemplateOutlet=\"container.timeTemplate\"></ng-container>\r\n<!--            <ng-content select=\"isi-timeline-card-time\"/>-->\r\n<!--            <ng-container *ngTemplateOutlet=\"timeTemplate(); context: { $implicit: item }\"/>-->\r\n          </div>\r\n        </div>\r\n      </div>\r\n\r\n      <div class=\"h-[80px] w-[50px]\">\r\n        <div class=\"h-[80px] py-0.5 w-[50px] relative flex-col flex items-center\">\r\n          <span class=\"w-[8px] h-[8px] rounded-full border-[2px] border-gray-900\"></span>\r\n          <span class=\"w-[1px] h-[64px] border-[1px] border-dashed border-gray-900\"></span>\r\n          <span class=\"w-[8px] h-[8px] rounded-full border-[2px] border-gray-900\"></span>\r\n<!--          @if (infoTemplate() != undefined) {-->\r\n            <div [style]=\"{'max-width': (widthTimeContent() - 40)+'px'}\"\r\n                 class=\"absolute flex top-1/2 text-nowrap overflow-hidden overflow-ellipsis -translate-y-1/2 \">\r\n              <ng-container *ngTemplateOutlet=\"container.infoTemplate\"></ng-container>\r\n<!--              <ng-content select=\"isi-timeline-card-info\"/>-->\r\n<!--              <ng-container *ngTemplateOutlet=\"infoTemplate(); context: { $implicit: item }\"/>-->\r\n            </div>\r\n<!--          }-->\r\n        </div>\r\n      </div>\r\n\r\n      <div [style]=\"{'height': (heightCard())+'px', 'width': widthCard()+'px'}\"\r\n           class=\"bg-opacity-0\">\r\n        <ng-container *ngTemplateOutlet=\"container.contentTemplate\"></ng-container>\r\n<!--        <ng-content select=\"isi-timeline-card-content\"/>-->\r\n<!--        <ng-container *ngTemplateOutlet=\"cardTemplate(); context: { $implicit: item }\"/>-->\r\n      </div>\r\n\r\n    </div>\r\n\r\n  }\r\n\r\n</div>\r\n","import {Component, input, InputSignal, model, ModelSignal, output, OutputEmitterRef} from '@angular/core';\r\nimport {IsiConfigModal} from \"../../models/isi-config-modal\";\r\nimport {NgClass} from \"@angular/common\";\r\n\r\n@Component({\r\n  selector: 'isi-modal',\r\n  standalone: true,\r\n  imports: [\r\n    NgClass\r\n  ],\r\n  templateUrl: './isi-modal.component.html',\r\n  styleUrl: './isi-modal.component.css'\r\n})\r\nexport class IsiModalComponent {\r\n\r\n  style : InputSignal<any> = input({});\r\n\r\n  configModal: ModelSignal<IsiConfigModal> = model({\r\n    closeOnOverlayClick: true\r\n  } as IsiConfigModal);\r\n\r\n  isVisible: ModelSignal<boolean> = model(false);\r\n  close: OutputEmitterRef<void> = output();\r\n\r\n  closeModal() {\r\n    this.close.emit();\r\n  }\r\n\r\n  onOverlayClick() {\r\n    if (this.configModal().closeOnOverlayClick) {\r\n      this.closeModal();\r\n    }\r\n  }\r\n\r\n  onModalContentClick(event: MouseEvent) {\r\n    event.stopPropagation(); // Empêche le clic dans le contenu du modal de le fermer\r\n  }\r\n\r\n}\r\n","<!-- Overlay -->\r\n@if(isVisible()) {\r\n\r\n  <div\r\n    class=\"fixed top-0 left-0 w-full h-full bg-black bg-opacity-50 flex justify-center items-center z-50\"\r\n    (click)=\"onOverlayClick()\"\r\n  >\r\n    <!-- Modal -->\r\n    <div [style]=\"style()\"\r\n      class=\"bg-white rounded-lg shadow-lg max-w-md w-full p-6\"\r\n      (click)=\"onModalContentClick($event)\"\r\n    >\r\n      <ng-content></ng-content>\r\n    </div>\r\n\r\n  </div>\r\n\r\n}\r\n","import {\r\n  Component,\r\n  effect,\r\n  ElementRef,\r\n  input,\r\n  InputSignal,\r\n  model,\r\n  ModelSignal,\r\n  OnInit,\r\n  signal,\r\n  viewChild, WritableSignal\r\n} from '@angular/core';\r\nimport {IsiGanttDataItem} from \"../../models\";\r\nimport moment from \"moment\";\r\nimport {initDropdowns} from \"flowbite\";\r\nimport {FormsModule, ReactiveFormsModule} from \"@angular/forms\";\r\nimport {NgClass} from \"@angular/common\";\r\nimport {DateRangeClassPipe} from \"../../pipes\";\r\nimport {SplitPipe} from \"../../pipes\";\r\nimport {IsiFloatingActionComponent} from \"../floating-action/floating-action.component\";\r\nimport {IsiConfigTimelineCalendar} from \"../../models/isi-config-timeline-calendar\";\r\nimport {IsiModalComponent} from \"../isi-modal/isi-modal.component\";\r\n\r\n@Component({\r\n  selector: 'isi-timeline-calendar',\r\n  standalone: true,\r\n  imports: [\r\n    DateRangeClassPipe,\r\n    ReactiveFormsModule,\r\n    SplitPipe,\r\n    NgClass,\r\n    FormsModule,\r\n    IsiFloatingActionComponent,\r\n    IsiModalComponent\r\n  ],\r\n  templateUrl: './timeline-calendar.component.html',\r\n  styleUrl: './timeline-calendar.component.css'\r\n})\r\nexport class IsiTimelineCalendarComponent implements OnInit {\r\n\r\n  config: ModelSignal<IsiConfigTimelineCalendar> = model.required();\r\n\r\n  nbWeekForm: number = 0;\r\n  dateStartForm: string = \"\";\r\n  columnsNombre = 0;\r\n\r\n  fullscreenContainer = viewChild<ElementRef<HTMLElement>>('fullscreenContainer');\r\n\r\n  days = ['lu', 'ma', 'me', 'je', 've', 'sa', 'di']\r\n  showDropdown = false;\r\n\r\n  // yyyy-MM-DD\r\n  calendrier: any[] = [];\r\n  isModalVisible: WritableSignal<boolean> = signal(false);\r\n\r\n\r\n  constructor() {\r\n    effect(() => {\r\n      this.columnsNombre = this.config().columns.filter((col: any) => col.visible).length;\r\n    });\r\n    effect(() => {\r\n      this.nbWeekForm = this.config().nbWeek ?? 4;\r\n      this.dateStartForm = moment(this.config().dateStart.value, this.config().dateStart.format).format('YYYY-MM-DD');\r\n      this.runDateStart();\r\n    });\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.verifProperties();\r\n    initDropdowns();\r\n  }\r\n\r\n  verifProperties() {\r\n\r\n    if (!this.validateDateFormat(this.config().dateStart.value)) {\r\n      throw new Error(`La valeur de la dateStart ( ${this.config().dateStart.value} ) n'est pas au bon format ${this.config().dateStart.format}.`);\r\n    }\r\n\r\n    // si on a un parent avec des enfants\r\n    if (this.config().withChild) {\r\n      // verifier que la keyParent != ''\r\n      if (this.config().keyParent.trim() === '') {\r\n        throw new Error(\"Quand la data contient des enfants \\\"[withChild]=true\\\" il faut définir le paramètre \\\"keyParent\\\"  \")\r\n      } else {\r\n        // si keyParent est present\r\n        // verifier si tout les items de data contient cette key\r\n        this.config().datas.forEach((item: any) => {\r\n          if (item[this.config().keyParent] === undefined) {\r\n            throw new Error(\"La valeur \\\"keyParent\\\" n'existe pas dans la data passée \");\r\n          }\r\n        })\r\n      }\r\n      // verifier que la keyChild != ''\r\n      if (this.config().keyChild != undefined && this.config().keyChild?.trim() === '') {\r\n        throw new Error(\"Quand la data contient des enfants \\\"[withChild]=true\\\" il faut définir le paramètre \\\"keyChild\\\"  \");\r\n      }\r\n\r\n      //verifier le format de startDate && endDate dans la data\r\n      this.config().datas.forEach((item: IsiGanttDataItem) => {\r\n        item[this.config().keyChild ?? ''].forEach((itemChild: IsiGanttDataItem) => {\r\n          if (!this.validateDateFormat(itemChild[this.config().keyDateStart])) {\r\n            throw new Error(`La propriété startDate ( ${itemChild[this.config().keyDateStart]} ) n'est pas au bon format.`);\r\n          } else if (!this.validateDateFormat(itemChild[this.config().keyDateEnd])) {\r\n            throw new Error(`La propriété endDate ( ${itemChild[this.config().keyDateEnd]} ) n'est pas au bon format.`);\r\n          }\r\n        });\r\n      })\r\n    } else {\r\n\r\n      //verifier le format de startDate && endDate dans la data\r\n      this.config().datas.forEach((item: IsiGanttDataItem) => {\r\n        if (!this.validateDateFormat(item[this.config().keyDateStart])) {\r\n          throw new Error(`La propriété startDate ( ${item[this.config().keyDateStart]} ) n'est pas au bon format.`);\r\n        } else if (!this.validateDateFormat(item[this.config().keyDateEnd])) {\r\n          throw new Error(`La propriété endDate ( ${item[this.config().keyDateEnd]} ) n'est pas au bon format.`);\r\n        }\r\n      })\r\n\r\n    }\r\n\r\n  }\r\n\r\n  validateDateFormat(date: string): boolean {\r\n    // Expression régulière pour vérifier le format \"dd/MM/yyyy\"\r\n    const regex = /^(0[1-9]|[12][0-9]|3[01])\\/(0[1-9]|1[0-2])\\/\\d{4}$/;\r\n    return regex.test(date);\r\n  }\r\n\r\n  /*getDynamicProperty(item: any, key: string): any {\r\n    return item[key];\r\n  }*/\r\n\r\n  resetRunDateStart() {\r\n    this.config.set({\r\n      ...this.config(),\r\n      nbWeek: this.nbWeekForm,\r\n      dateStart: {\r\n        ...this.config().dateStart,\r\n        value: moment(this.dateStartForm, 'YYYY-MM-DD').format(this.config().dateStart.format)\r\n      }\r\n    })\r\n  }\r\n\r\n  runDateStart() {\r\n    this.calendrier = [];\r\n    // revoir\r\n    const startDate1String = moment(this.config().dateStart.value, this.config().dateStart.format).format('DD/MM/YYYY');\r\n    const startDate1 = moment(startDate1String, 'DD/MM/YYYY');\r\n    this.calendrier = this.getDaysByWeekForSixWeeks(startDate1);\r\n  }\r\n\r\n  getDaysByWeekForSixWeeks(startDate: any) {\r\n    let weeks = [];\r\n    let calendrier: any[] = [];\r\n    // revoir\r\n    const nbWeek = this.config().nbWeek ?? 4;\r\n\r\n    // Aller au lundi de la semaine de la date de départ\r\n    startDate.startOf('isoWeek');\r\n\r\n    for (let i = 0; i < nbWeek; i++) {\r\n      let week = [];\r\n      for (let j = 0; j < 7; j++) {\r\n        week.push(moment(startDate, 'DD/MM/YYYY').add(i * 7 + j, 'days').format('DD/MM/YYYY'));\r\n      }\r\n      weeks.push(week);\r\n    }\r\n\r\n    weeks.forEach(\r\n      (week) => {\r\n        let date = moment(week[0], 'DD/MM/YYYY');\r\n        let day = date.format('DD');\r\n        let month = date.format('MMMM');\r\n        let year = date.format('YYYY');\r\n        calendrier.push({\r\n          title: day + ' ' + month + ' ' + year,\r\n          date: week\r\n        })\r\n      }\r\n    )\r\n\r\n    return calendrier;\r\n  }\r\n\r\n\r\n  toggleFullscreen() {\r\n    if (!document.fullscreenElement) {\r\n      this.fullscreenContainer()?.nativeElement.requestFullscreen().catch((err: any) => {\r\n        console.error(`Erreur lors de l'activation du plein écran : ${err.message}`);\r\n      });\r\n    } else {\r\n      document.exitFullscreen().catch(err => {\r\n        console.error(`Erreur lors de la sortie du plein écran : ${err.message}`);\r\n      });\r\n    }\r\n  }\r\n\r\n  /*getMinDateOfAllTask() {\r\n\r\n    const minTask: any = this.myData().reduce(\r\n      (minObj: any, currentObj: any) => {\r\n        const currentDate = moment(currentObj[this.config().keyDateStart], 'DD/MM/YYYY');\r\n        const minDate = moment(minObj[this.config().keyDateStart], 'DD/MM/YYYY');\r\n        return currentDate.isBefore(minDate) ? currentObj : minObj;\r\n      }\r\n    );\r\n\r\n    return minTask[this.config().keyDateStart];\r\n\r\n  }*/\r\n\r\n  hideColunm(col: { name: string; key: string; visible: boolean }) {\r\n    if (this.columnsNombre > 1) {\r\n      col.visible = false\r\n      this.columnsNombre--;\r\n    }\r\n  }\r\n\r\n  addColumn(col: { name: string; key: string; visible: boolean }) {\r\n    col.visible = true;\r\n    this.columnsNombre++;\r\n  }\r\n\r\n  toogleDropdown() {\r\n    this.showDropdown = !this.showDropdown;\r\n  }\r\n\r\n  syncScroll(source: HTMLElement, target: HTMLElement): void {\r\n    target.scrollTop = source.scrollTop; // Synchronise le défilement vertical\r\n  }\r\n\r\n  previousPage(week: any) {\r\n    this.config.set({\r\n      ...this.config(),\r\n      dateStart: {\r\n        ...this.config().dateStart,\r\n        value: moment(week.date[0], 'DD/MM/YYYY')\r\n          .subtract(7 * (this.config().nbWeek ?? 4), 'days')\r\n          .format('DD/MM/YYYY')\r\n      }\r\n    });\r\n  }\r\n\r\n  nextPage(week: any) {\r\n    this.config.set({\r\n      ...this.config(),\r\n      dateStart: {\r\n        ...this.config().dateStart,\r\n        value: moment(week.date[week.date.length - 1], 'DD/MM/YYYY')\r\n          .add(1, 'days')\r\n          .format('DD/MM/YYYY')\r\n      }\r\n    });\r\n  }\r\n\r\n  dateFormatToRegex(format: string): RegExp {\r\n    // Remplacement des éléments du format par des regex correspondantes\r\n    const regexMap: Record<string, string> = {\r\n      'dd': '(0[1-9]|[12][0-9]|3[01])', // jours 01-31\r\n      'MM': '(0[1-9]|1[0-2])',           // mois 01-12\r\n      'yyyy': '\\\\d{4}',                  // année 4 chiffres\r\n      'yy': '\\\\d{2}',                    // année 2 chiffres\r\n      'HH': '([01][0-9]|2[0-3])',        // heures 00-23\r\n      'mm': '[0-5][0-9]',                // minutes 00-59\r\n      'ss': '[0-5][0-9]'                 // secondes 00-59\r\n    };\r\n\r\n    // Générer le motif regex\r\n    let regexPattern = format;\r\n\r\n    for (const [key, value] of Object.entries(regexMap)) {\r\n      regexPattern = regexPattern.replace(new RegExp(key, 'g'), value);\r\n    }\r\n\r\n    // Encadrer le motif final pour assurer une correspondance complète\r\n    return new RegExp(`^${regexPattern}$`);\r\n  }\r\n\r\n  openModal() {\r\n    this.isModalVisible.set(true);\r\n  }\r\n}\r\n","<div\r\n  class=\"overflow-y-hidden h-full relative flex items-start overflow-x-hidden border-[1px] border-[#ccc]\"\r\n  #fullscreenContainer>\r\n\r\n  <isi-modal\r\n    [isVisible]=\"isModalVisible()\">\r\n    <div class=\"flex justify-between items-center border-b pb-2 mb-4\">\r\n      <h2 class=\"text-xl font-bold\">Paramètres</h2>\r\n      <button (click)=\"isModalVisible.set(false)\" class=\"text-gray-600 hover:text-red-600\">\r\n        &times;\r\n      </button>\r\n    </div>\r\n\r\n    <div class=\"flex flex-col space-y-2\">\r\n\r\n      <label for=\"date-start\" class=\"w-full\">Date début visualisation</label>\r\n      <input\r\n        name=\"start\" type=\"date\"\r\n        id=\"date-start\"\r\n        [(ngModel)]=\"dateStartForm\"\r\n        class=\"w-full p-2 border-t-0 border-r-0 border-l-0 bg-gray-50 border-b-2\r\n            border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-gray-500\r\n            dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500\r\n            dark:focus:border-blue-500\"/>\r\n\r\n    </div>\r\n    <div class=\"flex flex-col space-y-2\">\r\n\r\n      <label for=\"nbWeek\" class=\"w-full\">Nombre de semaine</label>\r\n      <input\r\n        name=\"nbWeek\" type=\"number\"\r\n        id=\"nbWeek\"\r\n        [(ngModel)]=\"nbWeekForm\"\r\n        class=\"w-full border-t-0 border-r-0 border-l-0 bg-gray-50 border-b-2\r\n            border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-gray-500\r\n            dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500\r\n            dark:focus:border-blue-500\"/>\r\n\r\n    </div>\r\n\r\n    <button (click)=\"resetRunDateStart(); isModalVisible.set(false)\" type=\"button\"\r\n            class=\"mt-4 w-full flex justify-center btn-outline-primary border-2 border-primary\">\r\n      Valider\r\n    </button>\r\n  </isi-modal>\r\n\r\n  <div class=\"w-1/3 overflow-x-scroll relative bg-white h-full border-r-4 border-r-black\" #leftDiv\r\n       (scroll)=\"syncScroll(leftDiv, rightDiv)\">\r\n\r\n    <table class=\"fixed-columns z-10 table table-borderless table-bordered\">\r\n      <thead class=\"sticky z-10 bg-white top-0\">\r\n      <tr class=\"border-[1px]\">\r\n        <th [colSpan]=\"columnsNombre + 1\" class=\"bg-light text-dark border-0\">&nbsp;</th>\r\n      </tr>\r\n      <tr class=\"border-[1px]\">\r\n        <th [colSpan]=\"this.columnsNombre + 1\" class=\"bg-light text-dark border-0\">&nbsp;</th>\r\n      </tr>\r\n\r\n      <tr>\r\n        @for (col of config().columns; track col) {\r\n          @if (col.visible) {\r\n            <th class=\"border-[1px] relative border-gray-500 group\">\r\n              {{ col.name }}\r\n              <button (click)=\"hideColunm(col)\"\r\n                      class=\"btn-danger group-hover:scale-95 hidden group-hover:flex items-center\r\n                    justify-center absolute shadow-lg border-2 border-primary -top-1/2 right-0 w-[25px]\r\n                    p-0 h-[25px] rounded-full\">X\r\n              </button>\r\n            </th>\r\n          }\r\n        }\r\n        <th class=\"relative\" style=\"min-width: 30px; max-width: 30px; padding: 0\">\r\n          @if (config().columns.length - columnsNombre != 0) {\r\n            <button (click)=\"toogleDropdown()\"\r\n                    class=\"absolute -top-[12.5px] left-1/2 -translate-x-1/2 btn-danger group-hover:scale-95 flex items-center\r\n                    justify-center shadow-lg border-2 border-primary w-[25px]\r\n                    p-0 h-[25px] rounded-full\">+\r\n            </button>\r\n\r\n            <ul [class.hidden]=\"!showDropdown\" [class.opacity-0]=\"!showDropdown\" [class.opacity-100]=\"showDropdown\"\r\n                class=\"z-10 absolute py-2 bg-white overflow-hidden shadow-lg rounded-lg w-48 text-sm font-medium\r\n          text-gray-900 border border-gray-200 dark:bg-gray-700 dark:border-gray-600 dark:text-white\r\n          duration-1000 transition\">\r\n              @for (col of config().columns; track col) {\r\n                @if (!col.visible) {\r\n                  <li (click)=\"addColumn(col)\"\r\n                      class=\"cursor-pointer w-full px-4 py-2 border-b border-gray-200 rounded-t-lg dark:border-gray-600\">\r\n                    {{ col.name }}\r\n                  </li>\r\n                }\r\n              }\r\n            </ul>\r\n          }\r\n        </th>\r\n      </tr>\r\n      </thead>\r\n      <tbody class=\"z-0 relative\">\r\n        @for (item of config().datas; track item) {\r\n          @if (config().withChild) {\r\n            <tr>\r\n              <th [colSpan]=\"columnsNombre\"\r\n                  [style]=\"item.configColor ? {'background': item.configColor.bgColor, 'color': item.configColor.textColor} :  {'background': '#d6d6d6', 'color': 'black'}\"\r\n                  class=\"border-[1px] text-nowrap overflow-hidden overflow-ellipsis duration-200 group-hover:bg-[#6389b3] border-gray-500 h-10 p-0\">\r\n                {{ item[config().keyParent] }}\r\n              </th>\r\n            </tr>\r\n            @for (itemChild of item[config().keyChild ?? '']; track itemChild) {\r\n\r\n              <tr>\r\n                @for (col of config().columns; track col) {\r\n                  @if (col.visible) {\r\n                    <td\r\n                      class=\"border-[1px] text-nowrap overflow-hidden overflow-ellipsis duration-200 group-hover:bg-[#6389b3] border-gray-500 h-10 p-0\">\r\n                      {{ itemChild[col.key] }}\r\n                    </td>\r\n                  }\r\n                }\r\n              </tr>\r\n            }\r\n          } @else {\r\n            <tr>\r\n              @for (col of config().columns; track col) {\r\n                @if (col.visible) {\r\n                  <td\r\n                    [style]=\"item.configColor ? {'background': item.configColor.bgColor, 'color': item.configColor.textColor} : {'background': '#d6d6d6', 'color': 'black'}\"\r\n                    class=\"border-[1px] text-nowrap overflow-hidden overflow-ellipsis duration-200 group-hover:bg-[#6389b3] border-gray-500 h-10 p-0\">\r\n                    {{ item[col.key] }}\r\n                  </td>\r\n                }\r\n              }\r\n            </tr>\r\n          }\r\n        }\r\n      </tbody>\r\n    </table>\r\n  </div>\r\n\r\n  <div class=\"w-2/3 overflow-x-scroll bg-white flex h-full items-start\" #rightDiv\r\n       (scroll)=\"syncScroll(rightDiv, leftDiv)\">\r\n    @for (cal of calendrier; track cal) {\r\n      <table class=\"scrollable-table table table-borderless table-bordered\">\r\n        <thead>\r\n        <tr>\r\n          <th colspan=\"7\" class=\"text-center border-[1px] relative\">\r\n            {{ cal.title }}\r\n            @if ($index === 0) {\r\n              <button (click)=\"previousPage(cal)\"\r\n                      class=\"absolute top-1/2 -translate-y-1/2 left-2\">\r\n                <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n                     width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\r\n                  <path d=\"M13.293 6.293 7.586 12l5.707 5.707 1.414-1.414L10.414 12l4.293-4.293z\">\r\n                  </path>\r\n                </svg>\r\n              </button>\r\n            }\r\n            @if ($index === calendrier.length - 1) {\r\n              <button (click)=\"nextPage(cal)\"\r\n                      class=\"absolute top-1/2 -translate-y-1/2 right-2\">\r\n                <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n                     width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\r\n                  <path d=\"M10.707 17.707 16.414 12l-5.707-5.707-1.414 1.414L13.586 12l-4.293 4.293z\">\r\n                  </path>\r\n                </svg>\r\n              </button>\r\n            }\r\n          </th>\r\n        </tr>\r\n        <tr>\r\n          @for (day of cal.date; track day) {\r\n            <th class=\"th-day border-[1px]\">{{ day | split:'/':0 }}</th>\r\n          }\r\n        </tr>\r\n        <tr>\r\n          <th class=\"th-day border-[1px]\">lu</th>\r\n          <th class=\"th-day border-[1px]\">ma</th>\r\n          <th class=\"th-day border-[1px]\">me</th>\r\n          <th class=\"th-day border-[1px]\">je</th>\r\n          <th class=\"th-day border-[1px]\">ve</th>\r\n          <th class=\"th-day border-[1px]\">sa</th>\r\n          <th class=\"th-day border-[1px]\">di</th>\r\n        </tr>\r\n        </thead>\r\n        <tbody>\r\n          @for (item of config().datas; track item) {\r\n            @if (config().withChild) {\r\n              <tr>\r\n                <td\r\n                  [style]=\"item.configColor ? {'background': item.configColor.bgColor, filter: 'brightness(60%)', 'color': item.configColor.textColor} :  {'background': '#d6d6d6', 'color': 'black'}\"\r\n                  class=\"border-[1px]\" [colSpan]=\"7\">\r\n                  &nbsp;\r\n                </td>\r\n              </tr>\r\n              @for (itemChild of item[config().keyChild ?? '']; track itemChild) {\r\n                <tr>\r\n                  @for (day of cal.date; track day) {\r\n                    <td class=\"border-[1px]\"\r\n                        [style]=\"{'background-color': day | dateRangeClass:itemChild[config().keyDateStart]:itemChild[config().keyDateEnd]:'#969696':(item.configColor ? item.configColor.bgColor : '#33d8ff')}\">\r\n                      &nbsp;\r\n                    </td>\r\n                  }\r\n                </tr>\r\n              }\r\n\r\n            } @else {\r\n\r\n              <tr>\r\n                @for (day of cal.date; track day) {\r\n                  <td class=\"border-[1px]\"\r\n                      [style]=\"{'background-color': day | dateRangeClass:item[config().keyDateStart]:item[config().keyDateEnd]:'#969696':(item.configColor ? item.configColor.bgColor : '#33d8ff')}\">\r\n                    &nbsp;\r\n                  </td>\r\n                }\r\n              </tr>\r\n            }\r\n          }\r\n        </tbody>\r\n      </table>\r\n    }\r\n  </div>\r\n\r\n  @if(config().configActionFloating && config().configActionFloating?.show) {\r\n    <isi-floating-action\r\n      [position]=\"config().configActionFloating?.position ?? 'bottom-right'\"\r\n      [orientation]=\"config().configActionFloating?.orientation ?? 'vertical'\"\r\n      [listeActionTemplate]=\"listeAction\"\r\n      [buttonActionTemplate]=\"buttonAction\"\r\n      [positionCss]=\"'absolute'\"\r\n    >\r\n      <!-- Bouton d'action 1 -->\r\n      <ng-template #listeAction>\r\n\r\n        <button type=\"button\" (click)=\"toggleFullscreen()\"\r\n                class=\"bg-white shadow-2xl text-red-700 border border-red-700 hover:bg-red-700 hover:text-white focus:ring-4\r\n          focus:outline-none focus:ring-red-300 font-medium rounded-full text-sm p-2.5 text-center inline-flex\r\n          items-center dark:border-red-500 dark:text-red-500 dark:hover:text-white dark:focus:ring-red-800\r\n          dark:hover:bg-red-500\">\r\n          <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n               width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n            <path d=\"M5 5h5V3H3v7h2zm5 14H5v-5H3v7h7zm11-5h-2v5h-5v2h7zm-2-4h2V3h-7v2h5z\"></path>\r\n          </svg>\r\n          <span class=\"sr-only\">Icon description</span>\r\n        </button>\r\n\r\n        <button (click)=\"openModal()\"\r\n                type=\"button\"\r\n                data-dropdown-toggle=\"display-sprint-dropdown\"\r\n                class=\"bg-white shadow-2xl text-red-700 border border-red-700 hover:bg-red-700 hover:text-white focus:ring-4\r\n          focus:outline-none focus:ring-red-300 font-medium rounded-full text-sm p-2.5 text-center inline-flex\r\n          items-center dark:border-red-500 dark:text-red-500 dark:hover:text-white dark:focus:ring-red-800\r\n          dark:hover:bg-red-500\">\r\n          <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\"\r\n               width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\r\n            <path\r\n              d=\"M12 16c2.206 0 4-1.794 4-4s-1.794-4-4-4-4 1.794-4 4 1.794 4 4 4zm0-6c1.084 0 2 .916 2 2s-.916 2-2 2-2-.916-2-2 .916-2 2-2z\"></path>\r\n            <path\r\n              d=\"m2.845 16.136 1 1.73c.531.917 1.809 1.261 2.73.73l.529-.306A8.1 8.1 0 0 0 9 19.402V20c0 1.103.897 2 2 2h2c1.103 0 2-.897 2-2v-.598a8.132 8.132 0 0 0 1.896-1.111l.529.306c.923.53 2.198.188 2.731-.731l.999-1.729a2.001 2.001 0 0 0-.731-2.732l-.505-.292a7.718 7.718 0 0 0 0-2.224l.505-.292a2.002 2.002 0 0 0 .731-2.732l-.999-1.729c-.531-.92-1.808-1.265-2.731-.732l-.529.306A8.1 8.1 0 0 0 15 4.598V4c0-1.103-.897-2-2-2h-2c-1.103 0-2 .897-2 2v.598a8.132 8.132 0 0 0-1.896 1.111l-.529-.306c-.924-.531-2.2-.187-2.731.732l-.999 1.729a2.001 2.001 0 0 0 .731 2.732l.505.292a7.683 7.683 0 0 0 0 2.223l-.505.292a2.003 2.003 0 0 0-.731 2.733zm3.326-2.758A5.703 5.703 0 0 1 6 12c0-.462.058-.926.17-1.378a.999.999 0 0 0-.47-1.108l-1.123-.65.998-1.729 1.145.662a.997.997 0 0 0 1.188-.142 6.071 6.071 0 0 1 2.384-1.399A1 1 0 0 0 11 5.3V4h2v1.3a1 1 0 0 0 .708.956 6.083 6.083 0 0 1 2.384 1.399.999.999 0 0 0 1.188.142l1.144-.661 1 1.729-1.124.649a1 1 0 0 0-.47 1.108c.112.452.17.916.17 1.378 0 .461-.058.925-.171 1.378a1 1 0 0 0 .471 1.108l1.123.649-.998 1.729-1.145-.661a.996.996 0 0 0-1.188.142 6.071 6.071 0 0 1-2.384 1.399A1 1 0 0 0 13 18.7l.002 1.3H11v-1.3a1 1 0 0 0-.708-.956 6.083 6.083 0 0 1-2.384-1.399.992.992 0 0 0-1.188-.141l-1.144.662-1-1.729 1.124-.651a1 1 0 0 0 .471-1.108z\">\r\n            </path>\r\n          </svg>\r\n          <span class=\"sr-only\">Icon description</span>\r\n        </button>\r\n\r\n\r\n      </ng-template>\r\n\r\n      <ng-template #buttonAction>\r\n        <div class=\"h-full w-full text-3xl bg-red-800 bg-opacity-40 flex-col flex justify-center items-center\">\r\n          +\r\n        </div>\r\n      </ng-template>\r\n\r\n    </isi-floating-action>\r\n  }\r\n\r\n</div>\r\n\r\n\r\n","import {Component, TemplateRef, ViewChild} from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'isi-tab-title',\r\n  standalone: true,\r\n  imports: [],\r\n  templateUrl: './tab-title.component.html',\r\n  styleUrl: './tab-title.component.css'\r\n})\r\nexport class IsiTabTitleComponent {\r\n  @ViewChild(TemplateRef, { static: true }) templateRef!: TemplateRef<any>;\r\n}\r\n","<ng-template><ng-content></ng-content></ng-template>\r\n","import {Component, TemplateRef, ViewChild} from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'isi-tab-content',\r\n  standalone: true,\r\n  imports: [],\r\n  templateUrl: './tab-content.component.html',\r\n  styleUrl: './tab-content.component.css'\r\n})\r\nexport class IsiTabContentComponent {\r\n  @ViewChild(TemplateRef, { static: true }) templateRef!: TemplateRef<any>;\r\n}\r\n","<ng-template><ng-content></ng-content></ng-template>\r\n","import {AfterContentInit, Component, ContentChild} from '@angular/core';\r\nimport {IsiTabTitleComponent} from \"../tab-title/tab-title.component\";\r\nimport {IsiTabContentComponent} from \"../tab-content/tab-content.component\";\r\nimport {IsiCardDrawerComponent} from \"../../card-drawer/card-drawer.component\";\r\n\r\n@Component({\r\n  selector: 'isi-tab-container',\r\n  standalone: true,\r\n  imports: [],\r\n  templateUrl: './tab-container.component.html',\r\n  styleUrl: './tab-container.component.css'\r\n})\r\nexport class IsiTabContainerComponent implements AfterContentInit {\r\n\r\n  @ContentChild(IsiTabTitleComponent) titleComponent?: IsiTabTitleComponent;\r\n  @ContentChild(IsiTabContentComponent) contentComponent?: IsiTabContentComponent;\r\n\r\n  titleTemplate: any;\r\n  contentTemplate: any;\r\n\r\n  ngAfterContentInit(): void {\r\n    this.titleTemplate = this.titleComponent?.templateRef;\r\n    this.contentTemplate = this.contentComponent?.templateRef;\r\n  }\r\n\r\n}\r\n","<ng-content></ng-content>\r\n","import {\r\n  AfterContentInit, AfterViewInit,\r\n  Component,\r\n  ContentChildren, ElementRef,\r\n  input,\r\n  InputSignal, OnDestroy,\r\n  OnInit, output,\r\n  QueryList,\r\n  signal, viewChild\r\n} from '@angular/core';\r\nimport {IsiTabContainerComponent} from \"./tab-container/tab-container.component\";\r\nimport {IsiTabConfig} from \"../../models\";\r\nimport {NgClass, NgStyle, NgTemplateOutlet} from \"@angular/common\";\r\n\r\n@Component({\r\n  selector: 'isi-tabs',\r\n  standalone: true,\r\n  imports: [\r\n    NgTemplateOutlet,\r\n    NgClass,\r\n    NgStyle\r\n  ],\r\n  templateUrl: './tabs.component.html',\r\n  styleUrl: './tabs.component.css'\r\n})\r\nexport class IsiTabsComponent implements AfterContentInit, OnDestroy, OnInit {\r\n\r\n  tabConfig: InputSignal<IsiTabConfig> = input<IsiTabConfig>({})\r\n\r\n  tabNavConfig = signal({})\r\n  btnConfig = signal({});\r\n  btnActiveConfig = signal({});\r\n  selectTabEvent = output();\r\n\r\n  fullscreenContainer = viewChild<ElementRef<HTMLElement>>('IsiFullscreenContainer');\r\n\r\n  close = signal(false);\r\n  reduce = signal(false);\r\n  fullScreen = signal(false);\r\n\r\n  @ContentChildren(IsiTabContainerComponent) tabs!: QueryList<IsiTabContainerComponent>;\r\n  selectedIndex = 0;\r\n\r\n  ngOnInit(): void {\r\n    document.addEventListener('fullscreenchange', this.onFullScreenChange);\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    document.removeEventListener('fullscreenchange', this.onFullScreenChange);\r\n  }\r\n\r\n  private onFullScreenChange = (): void => {\r\n    this.fullScreen.set(!!document.fullscreenElement);\r\n  };\r\n\r\n  ngAfterContentInit() {\r\n    this.selectTab(0); // Sélectionne le premier onglet au démarrage\r\n    this.configurationTab();\r\n  }\r\n\r\n  selectTab(index: number) {\r\n    setTimeout(() =>\r\n      this.selectedIndex = index, 5);\r\n    this.selectTabEvent.emit();\r\n  }\r\n\r\n  configurationTab() {\r\n\r\n    const btnConfig: any = this.tabConfig().button;\r\n    this.btnConfig.set({\r\n      color: btnConfig ? btnConfig.textColor : 'black',\r\n      backgroundColor: btnConfig ? btnConfig.bgColor : 'white',\r\n      borderColor: btnConfig ? btnConfig.borderColor : 'gray',\r\n      borderWidth: btnConfig ? '0 0 ' + btnConfig.borderWidth + ' 0' : '0 0 2px 0',\r\n    })\r\n\r\n    const btnActiveConfig: any = this.tabConfig().buttonActive;\r\n    this.btnActiveConfig.set({\r\n      color: btnActiveConfig ? btnActiveConfig.textColor : 'white',\r\n      backgroundColor: btnActiveConfig ? btnActiveConfig.bgColor : '#22d0ff',\r\n      borderColor: btnActiveConfig ? btnActiveConfig.borderColor : '#000084',\r\n      borderWidth: btnActiveConfig ? '0 0 ' + btnActiveConfig.borderWidth + ' 0' : '0 0 4px 0',\r\n    })\r\n\r\n    const tabNavConfig: any = this.tabConfig().tabNavConfig;\r\n    this.tabNavConfig.set({\r\n      borderColor: tabNavConfig?.borderColor ? tabNavConfig.borderColor : '#454545',\r\n      borderWidth: tabNavConfig?.borderWidth ? '0 0 ' + tabNavConfig.borderWidth + ' 0' : '0 0 2px 0',\r\n    })\r\n\r\n  }\r\n\r\n  toggleReduce() {\r\n    this.reduce.set(!this.reduce())\r\n    if(this.reduce()) this.selectedIndex = -1;\r\n  }\r\n\r\n  eventClose() {\r\n    this.close.set(!this.close())\r\n  }\r\n\r\n  toggleFullscreen() {\r\n    if (!document.fullscreenElement) {\r\n      this.fullScreen.set(true);\r\n      this.fullscreenContainer()?.nativeElement.requestFullscreen().catch((err: any) => {\r\n        console.error(`Erreur lors de l'activation du plein écran : ${err.message}`);\r\n      });\r\n    } else {\r\n      this.fullScreen.set(false);\r\n      document.exitFullscreen().catch(err => {\r\n        console.error(`Erreur lors de la sortie du plein écran : ${err.message}`);\r\n      });\r\n    }\r\n  }\r\n\r\n}\r\n","@if (!close()) {\r\n  <div #IsiFullscreenContainer id=\"isi-fullscreenContainer\" class=\"bg-white overflow-y-auto\">\r\n\r\n    <div [ngClass]=\"(tabConfig()?.tabNavConfig?.action?.show ||\r\ntabConfig()?.tabNavConfig?.position) ?\r\n(tabConfig()?.tabNavConfig?.position === 'right' ? ' flex-row-reverse' : '') : ''\"\r\n         [ngStyle]=\"tabNavConfig()\"\r\n         class=\"tabs-header flex items-center justify-between group overflow-x-hidden\">\r\n\r\n      <div class=\"flex flex-1 overflow-x-auto\"\r\n           [ngClass]=\"tabConfig()?.tabNavConfig?.position === 'right' ? 'justify-end' : ''\">\r\n        @for (tab of tabs; track tab; let i = $index) {\r\n          <div [ngStyle]=\"selectedIndex === i ? btnActiveConfig() : btnConfig()\"\r\n            (click)=\"selectTab(i); reduce.set(false)\"\r\n            [class.active]=\"i === selectedIndex\"\r\n            class=\"tab-title flex justify-center items-center transition duration-700\">\r\n            <ng-container *ngTemplateOutlet=\"tab.titleTemplate\"></ng-container>\r\n          </div>\r\n        }\r\n      </div>\r\n\r\n      @if (tabConfig()?.tabNavConfig?.action?.show &&\r\n      (tabConfig()?.tabNavConfig?.action?.showClose || tabConfig()?.tabNavConfig?.action?.showReduce || tabConfig()?.tabNavConfig?.action?.showFullScreen)) {\r\n        <div\r\n          [ngClass]=\"tabConfig()?.tabNavConfig?.action?.show &&\r\n            tabConfig()?.tabNavConfig?.position && tabConfig()?.tabNavConfig?.action?.animation ?\r\n            (tabConfig()?.tabNavConfig?.position === 'right' ? '-translate-x-full' : 'translate-x-full') : ''\"\r\n          class=\"flex flex-row space-x-2 transition duration-700 group-hover:translate-x-0\">\r\n\r\n          @if (tabConfig()?.tabNavConfig?.action?.showClose && !fullScreen()) {\r\n            <button class=\"p-1 bg-[#f6635b] rounded-full\" (click)=\"eventClose()\">\r\n              <svg viewBox=\"-0.5 0 25 25\" fill=\"none\" width=\"15px\" height=\"15px\"\r\n                   xmlns=\"http://www.w3.org/2000/svg\">\r\n                <g id=\"SVGRepo_bgCarrier\" stroke-width=\"0\"></g>\r\n                <g id=\"SVGRepo_tracerCarrier\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></g>\r\n                <g id=\"SVGRepo_iconCarrier\">\r\n                  <path d=\"M3 21.32L21 3.32001\" stroke=\"#000000\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n                        stroke-linejoin=\"round\"></path>\r\n                  <path d=\"M3 3.32001L21 21.32\" stroke=\"#000000\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n                        stroke-linejoin=\"round\">\r\n                  </path>\r\n                </g>\r\n              </svg>\r\n            </button>\r\n          }\r\n\r\n          @if (tabConfig()?.tabNavConfig?.action?.showReduce && !reduce() && !fullScreen()) {\r\n            <button class=\"p-1 bg-[#ffc60e] rounded-full\" (click)=\"toggleReduce()\">\r\n              <svg viewBox=\"0 0 24 24\" fill=\"none\" width=\"15px\" height=\"15px\"\r\n                   xmlns=\"http://www.w3.org/2000/svg\">\r\n                <g id=\"SVGRepo_bgCarrier\" stroke-width=\"0\"></g>\r\n                <g id=\"SVGRepo_tracerCarrier\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></g>\r\n                <g id=\"SVGRepo_iconCarrier\">\r\n                  <path d=\"M3 12L21 12\" stroke=\"#000000\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n                        stroke-linejoin=\"round\"></path>\r\n                </g>\r\n              </svg>\r\n            </button>\r\n          }\r\n\r\n          @if (tabConfig()?.tabNavConfig?.action?.showFullScreen && !reduce()) {\r\n            <button class=\"p-1 bg-[#15ce36] rounded-full\" (click)=\"toggleFullscreen()\">\r\n              <svg viewBox=\"0 0 24 24\" width=\"15px\" height=\"15px\"\r\n                   version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\"\r\n                   fill=\"#000000\">\r\n                <g id=\"SVGRepo_bgCarrier\" stroke-width=\"0\"></g>\r\n                <g id=\"SVGRepo_tracerCarrier\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></g>\r\n                <g id=\"SVGRepo_iconCarrier\">\r\n                  <g id=\"🔍-Product-Icons\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n                    <g id=\"ic_fluent_full_screen_zoom_24_filled\" fill=\"#212121\" fill-rule=\"nonzero\">\r\n                      <path\r\n                        d=\"M20,15 C20.5522847,15 21,15.4477153 21,16 C21,16.5522847 20.5522847,17 20,17 L17,17 L17,20 C17,20.5522847 16.5522847,21 16,21 C15.4477153,21 15,20.5522847 15,20 L15,16 C15,15.4477153 15.4477153,15 16,15 L20,15 Z M4,15 L8,15 C8.51283584,15 8.93550716,15.3860402 8.99327227,15.8833789 L9,16 L9,20 C9,20.5522847 8.55228475,21 8,21 C7.48716416,21 7.06449284,20.6139598 7.00672773,20.1166211 L7,20 L7,17 L4,17 C3.44771525,17 3,16.5522847 3,16 C3,15.4871642 3.38604019,15.0644928 3.88337887,15.0067277 L4,15 L8,15 L4,15 Z M16,3 C16.5128358,3 16.9355072,3.38604019 16.9932723,3.88337887 L17,4 L17,7 L20,7 C20.5522847,7 21,7.44771525 21,8 C21,8.51283584 20.6139598,8.93550716 20.1166211,8.99327227 L20,9 L16,9 C15.4871642,9 15.0644928,8.61395981 15.0067277,8.11662113 L15,8 L15,4 C15,3.44771525 15.4477153,3 16,3 Z M8,3 C8.55228475,3 9,3.44771525 9,4 L9,8 C9,8.55228475 8.55228475,9 8,9 L4,9 C3.44771525,9 3,8.55228475 3,8 C3,7.44771525 3.44771525,7 4,7 L7,7 L7,4 C7,3.44771525 7.44771525,3 8,3 Z\"\r\n                        id=\"🎨-Color\">\r\n                      </path>\r\n                    </g>\r\n                  </g>\r\n                </g>\r\n              </svg>\r\n            </button>\r\n          }\r\n\r\n        </div>\r\n      }\r\n\r\n    </div>\r\n\r\n    @if (!reduce()) {\r\n      <div class=\"tabs-content\">\r\n        <ng-container *ngTemplateOutlet=\"tabs.get(selectedIndex)?.contentTemplate ?? null\"></ng-container>\r\n      </div>\r\n    }\r\n  </div>\r\n}\r\n","import {\r\n  AfterViewInit,\r\n  Component,\r\n  EventEmitter,\r\n  model,\r\n  ModelSignal,\r\n  output,\r\n  Output,\r\n  OutputEmitterRef\r\n} from '@angular/core';\r\nimport {NgStyle} from \"@angular/common\";\r\nimport {IsiConfigPaginator} from \"../../models\";\r\n\r\n@Component({\r\n  selector: 'isi-paginator',\r\n  standalone: true,\r\n  imports: [\r\n    NgStyle\r\n  ],\r\n  templateUrl: './isi-paginator.component.html',\r\n  styleUrl: './isi-paginator.component.scss'\r\n})\r\nexport class IsiPaginatorComponent implements AfterViewInit{\r\n\r\n  config: ModelSignal<IsiConfigPaginator> = model.required()\r\n\r\n  pageChange: OutputEmitterRef<number> = output<number>();\r\n  itemsPerPageChange = output<number>();\r\n\r\n  ngAfterViewInit() {\r\n    if(this.config().page.current == undefined) {\r\n      this.config.set({\r\n        ...this.config(),\r\n        page: {\r\n          ...this.config().page,\r\n          current: 1\r\n        }\r\n      })\r\n    }\r\n  }\r\n\r\n  get pages(): number[] {\r\n    const visiblePages = 3;\r\n    const half = Math.floor(visiblePages / 2);\r\n\r\n    let start = Math.max(1, (this.config().page.current || 1) - half);\r\n    let end = Math.min(this.config().page.total, start + visiblePages - 1);\r\n\r\n    // Ajuster si on est proche de la fin\r\n    if (end === this.config().page.total) {\r\n      start = Math.max(1, this.config().page.total - visiblePages + 1);\r\n    }\r\n\r\n    return Array.from({ length: end - start + 1 }, (_, i) => start + i);\r\n  }\r\n\r\n  changePage(page: number) {\r\n    if (page >= 1 && page <= this.config().page.total) {\r\n      this.pageChange.emit(page);\r\n\r\n      this.config.set({\r\n        ...this.config(),\r\n        page: {\r\n          ...this.config().page,\r\n          current: page\r\n        }\r\n      });\r\n    }\r\n  }\r\n\r\n  changeItemsPerPage(event: Event) {\r\n    const target = event.target as HTMLSelectElement;\r\n    if (target) {\r\n      const value = Number(target.value); // Convertir en nombre\r\n      this.config.set({\r\n        ...this.config(),\r\n        itemsPerPage: {\r\n          ...this.config().itemsPerPage,\r\n          value: value\r\n        }\r\n      });\r\n      this.itemsPerPageChange.emit(this.config().itemsPerPage.value);\r\n      this.changePage(1); // Revenir à la première page\r\n    }\r\n  }\r\n\r\n  get varStyles() {\r\n    return {\r\n      ...(this.config().styles?.paginator || {}),\r\n      '--btn-bg': this.config().styles?.button?.basic.bg || 'transparent',\r\n      '--btn-color': this.config().styles?.button?.basic.color || '#000',\r\n      '--btn-active-bg': this.config().styles?.button?.active.bg || '#000',\r\n      '--btn-active-color': this.config().styles?.button?.active.color || '#fff',\r\n      '--btn-hover-bg': this.config().styles?.button?.hover.bg || '#d5d2d2',\r\n      '--btn-hover-color': this.config().styles?.button?.hover.color || '#000',\r\n    };\r\n  }\r\n\r\n}\r\n\r\n","<div class=\"pagination-container\" [ngStyle]=\"varStyles\">\r\n  <button class=\"w-10 h-10 rounded-full \" (click)=\"changePage(1)\" [disabled]=\"(config().page.current || 1) === 1\">«\r\n  </button>\r\n  <button class=\"w-10 h-10 rounded-full \" (click)=\"changePage((config().page.current || 1) - 1)\"\r\n          [disabled]=\"(config().page.current || 1) === 1\">‹\r\n  </button>\r\n\r\n  @for (page of pages; track page) {\r\n    <button class=\"w-10 h-10 rounded-full transition duration-500\"\r\n            (click)=\"changePage(page)\"\r\n            [class.active]=\"page === (config().page.current || 1)\">\r\n      {{ page }}\r\n    </button>\r\n  }\r\n\r\n  <button class=\"w-10 h-10 rounded-full \" (click)=\"changePage((config().page.current || 1) + 1)\"\r\n          [disabled]=\"(config().page.current || 1) === config().page.total\">›\r\n  </button>\r\n  <button class=\"w-10 h-10 rounded-full \" (click)=\"changePage(config().page.total)\"\r\n          [disabled]=\"(config().page.current || 1) === config().page.total\">»\r\n  </button>\r\n\r\n  <select (change)=\"changeItemsPerPage($event)\"\r\n          class=\"rounded-lg cursor-pointer\">\r\n    @for (option of config().itemsPerPage.options; track option) {\r\n      <option [value]=\"option\" [selected]=\"option === config().itemsPerPage.value\">\r\n        {{ option }}\r\n      </option>\r\n    }\r\n  </select>\r\n\r\n</div>\r\n","import {\r\n  Component,\r\n  ContentChild,\r\n  effect,\r\n  model,\r\n  ModelSignal,\r\n  OnInit,\r\n  signal,\r\n  TemplateRef, untracked,\r\n  WritableSignal\r\n} from '@angular/core';\r\nimport {IsiConfigTable} from \"../../models\";\r\nimport {NgClass, NgStyle, NgTemplateOutlet} from \"@angular/common\";\r\nimport {IsiPaginatorComponent} from \"../isi-paginator/isi-paginator.component\";\r\n\r\n@Component({\r\n  selector: 'isi-table',\r\n  standalone: true,\r\n  imports: [\r\n    NgStyle,\r\n    NgClass,\r\n    NgTemplateOutlet,\r\n    IsiPaginatorComponent\r\n  ],\r\n  templateUrl: './isi-table.component.html',\r\n  styleUrl: './isi-table.component.scss'\r\n})\r\nexport class IsiTableComponent implements OnInit{\r\n\r\n  data: ModelSignal<any[]> = model.required();\r\n  config: ModelSignal<IsiConfigTable> = model({} as IsiConfigTable)\r\n\r\n  allData: any[] = [];\r\n  dataForPaginator: WritableSignal<any[]> = signal([]);\r\n\r\n  @ContentChild('header') header!: TemplateRef<any>;\r\n  @ContentChild('body') body!: TemplateRef<any>;\r\n\r\n  constructor() {\r\n\r\n    effect(() => {\r\n      this.allData = this.data();\r\n      untracked(() => {\r\n        this.beforePagination();\r\n      });\r\n\r\n    }, { allowSignalWrites: true });\r\n\r\n  }\r\n\r\n  ngOnInit() {\r\n\r\n  }\r\n\r\n  get varStyles() {\r\n    return {\r\n      '--striped-color-1': this.config().striped?.colors[0],\r\n      '--striped-color-2': this.config().striped?.colors[1],\r\n      ... this.config().border ? {\r\n        '--border-width-cell': this.config().border?.width,\r\n        '--border-type-cell': this.config().border?.type,\r\n        '--border-color-cell': this.config().border?.color,\r\n      } : {}\r\n    };\r\n  }\r\n\r\n  get mergedStyles() {\r\n    return {\r\n      ...(this.config().tableStyle || {}),\r\n      ...this.varStyles,\r\n      ...this.config().gridLine?.actif ? {\r\n        'border-collapse': 'separate',\r\n        'border-spacing': this.config().gridLine?.value || '0'\r\n      } : {}\r\n    };\r\n  }\r\n\r\n  beforePagination() {\r\n    if(this.config().allData && this.config().paginator) {\r\n      this.paginate(this.config().paginator?.page.current || 1, this.config().paginator?.itemsPerPage.value || 5);\r\n    }\r\n  }\r\n\r\n  paginate(currentPage: number, itemPerPage: number) {\r\n    const resultatPaginator: { paginatedData: any[], totalPages: number } = this.getPaginatedData(\r\n      this.allData, currentPage, itemPerPage\r\n    )\r\n\r\n    this.dataForPaginator.set(resultatPaginator.paginatedData);\r\n    this.config.set({\r\n      ...this.config(),\r\n      paginator: {\r\n        ...this.config().paginator,\r\n        page: {\r\n          ...this.config().paginator?.page,\r\n          total : resultatPaginator.totalPages,\r\n          current: currentPage\r\n        },\r\n        itemsPerPage: {\r\n          ...this.config().paginator?.itemsPerPage,\r\n          value: this.config().paginator?.itemsPerPage.value || 0,\r\n          options: this.config().paginator?.itemsPerPage.options || [10,20,50],\r\n        }\r\n      }\r\n    })\r\n  }\r\n\r\n  changeItemPerPage($event: number) {\r\n    this.config.set({\r\n      ...this.config(),\r\n      paginator: {\r\n        ...this.config().paginator,\r\n        page: {\r\n          ...this.config().paginator?.page,\r\n          total : this.config().paginator?.page.total || 5,\r\n          current: 1\r\n        },\r\n        itemsPerPage: {\r\n          ...this.config().paginator?.itemsPerPage,\r\n          value: $event,\r\n          options: this.config().paginator?.itemsPerPage.options || [10,20,50],\r\n        }\r\n      }\r\n    });\r\n    this.paginate(1, $event);\r\n  }\r\n\r\n  getPaginatedData<T>(data: any[], currentPage: number, itemsPerPage: number): { paginatedData: any[], totalPages: number } {\r\n    const totalItems = data.length;\r\n    const totalPages = Math.ceil(totalItems / itemsPerPage);\r\n\r\n    // Vérifier que la page est valide\r\n    if (currentPage < 1) currentPage = 1;\r\n    if (currentPage > totalPages) currentPage = totalPages;\r\n\r\n    const startIndex = (currentPage - 1) * itemsPerPage;\r\n    const endIndex = startIndex + itemsPerPage;\r\n    const paginatedData = data.slice(startIndex, endIndex);\r\n\r\n    return { paginatedData, totalPages };\r\n  }\r\n\r\n}\r\n","<div class=\"app-table\">\r\n  <table\r\n    [ngStyle]=\"mergedStyles\"\r\n    [ngClass]=\"{ 'gridlines': config().gridLine?.actif, 'striped': config().striped?.actif }\">\r\n    <thead>\r\n    <ng-container *ngTemplateOutlet=\"header\"></ng-container>\r\n    </thead>\r\n    <tbody>\r\n      @for (item of dataForPaginator(); track item) {\r\n        <ng-container *ngTemplateOutlet=\"body; context: { $implicit: item }\"></ng-container>\r\n      }\r\n    </tbody>\r\n  </table>\r\n\r\n  @if (config().paginator != undefined) {\r\n    <div class=\"w-full my-3\">\r\n      <isi-paginator\r\n        [config]=\"config().paginator!\"\r\n        (pageChange)=\"config().allData ? paginate($event, (this.config().paginator?.itemsPerPage?.value || 5)) : config().paginator?.pageChange\"\r\n        (itemsPerPageChange)=\"config().allData ? changeItemPerPage($event) : config().paginator?.itemsPerPageChange\"\r\n      />\r\n    </div>\r\n  }\r\n\r\n</div>\r\n","import {\r\n  AfterContentInit,\r\n  Component,\r\n  ContentChildren,\r\n  ElementRef,\r\n  input,\r\n  InputSignal, model, ModelSignal, OnInit,\r\n  QueryList,\r\n  Renderer2, TemplateRef,\r\n  ViewChild, ViewChildren\r\n} from '@angular/core';\r\nimport {NgTemplateOutlet} from \"@angular/common\";\r\n\r\n@Component({\r\n  selector: 'isi-splitter',\r\n  standalone: true,\r\n  imports: [\r\n    NgTemplateOutlet\r\n  ],\r\n  templateUrl: './isi-splitter.component.html',\r\n  styleUrl: './isi-splitter.component.css'\r\n})\r\nexport class IsiSplitterComponent implements OnInit, AfterContentInit{\r\n\r\n  // Correction : Utilisation de TemplateRef au lieu de ElementRef\r\n  @ContentChildren(TemplateRef) panels!: QueryList<TemplateRef<any>>;\r\n  panelSizes : ModelSignal<number[]> = model([50, 50]);\r\n  panelConditions : ModelSignal<boolean[]> = model([true, true] as boolean[]);\r\n  style : InputSignal<any> = input({height: '300px'});\r\n  orientation: InputSignal<'vertical' | 'horizontal'> = input('horizontal'  as ('vertical' | 'horizontal'));\r\n\r\n  @ViewChild('splitter', { static: false }) splitter!: ElementRef;\r\n\r\n  // Récupération des conteneurs des panneaux\r\n  @ViewChildren('panelContainer') panelContainers!: QueryList<ElementRef>;\r\n\r\n  constructor(private renderer: Renderer2) {}\r\n\r\n  ngOnInit() {\r\n  }\r\n\r\n  ngAfterContentInit() {\r\n    /*if (this.panels.length < 2) {\r\n      console.error('IsiSplitterComponent requires at least two panels.');\r\n      return;\r\n    }*/\r\n\r\n    // ✅ Si l'utilisateur ne passe pas `sizes`, répartir l'espace également\r\n    if (this.panelSizes().length !== this.panels.length) {\r\n      this.panelSizes.set(Array(this.panels.length).fill(100 / this.panels.length));\r\n    }\r\n\r\n    // ✅ Si l'utilisateur ne passe pas `sizes`, répartir l'espace également\r\n    if (this.panelConditions().length !== this.panels.length) {\r\n      this.panelConditions.set(Array(this.panels.length).fill(false));\r\n    }\r\n// ✅ Ajout d'un délai pour attendre que `panelContainers` soit bien initialisé\r\n    setTimeout(() => this.updatePanelSizes());\r\n  }\r\n\r\n  onDrag(event: MouseEvent, index: number) {\r\n    event.preventDefault();\r\n\r\n    const isHorizontal = this.orientation() === 'horizontal';\r\n    const startPos = isHorizontal ? event.clientX : event.clientY;\r\n    const panelArray = this.panelContainers.toArray();\r\n\r\n    const prevSize = this.panelSizes()[index];\r\n    const nextSize = this.panelSizes()[index + 1];\r\n    const totalSize = prevSize + nextSize;\r\n\r\n    const onMouseMove = (moveEvent: MouseEvent) => {\r\n      const delta = (isHorizontal ? moveEvent.clientX : moveEvent.clientY) - startPos;\r\n      const containerSize = isHorizontal\r\n        ? panelArray[index].nativeElement.parentElement.offsetWidth\r\n        : panelArray[index].nativeElement.parentElement.offsetHeight;\r\n\r\n      const deltaPercent = (delta / containerSize) * 100;\r\n\r\n      const newPrevSize = Math.max(5, prevSize + deltaPercent);  // ✅ Minimum 5%\r\n      const newNextSize = Math.max(5, totalSize - newPrevSize); // ✅ Minimum 5%\r\n\r\n      if (newPrevSize + newNextSize === totalSize) {\r\n        this.panelSizes()[index] = newPrevSize;\r\n        this.panelSizes()[index + 1] = newNextSize;\r\n\r\n        this.updatePanelSizes();\r\n      }\r\n    };\r\n\r\n    const onMouseUp = () => {\r\n      window.removeEventListener('mousemove', onMouseMove);\r\n      window.removeEventListener('mouseup', onMouseUp);\r\n    };\r\n\r\n    window.addEventListener('mousemove', onMouseMove);\r\n    window.addEventListener('mouseup', onMouseUp);\r\n  }\r\n\r\n  private updatePanelSizes() {\r\n    this.panelContainers.toArray().forEach((panel, i) => {\r\n      this.renderer.setStyle(panel.nativeElement, 'flex', `${this.panelSizes()[i]}%`);\r\n    });\r\n  }\r\n}\r\n","<div [style]=\"style()\" class=\"splitter-container w-full\" [class.horizontal]=\"orientation() === 'horizontal'\" [class.vertical]=\"orientation() === 'vertical'\">\r\n  @for(panel of panels; track panel; let i=$index) {\r\n    @if(panelConditions()[i]) {\r\n      <div #panelContainer class=\"panel\">\r\n        <ng-container *ngTemplateOutlet=\"panel\"></ng-container>\r\n      </div>\r\n    }\r\n\r\n    <!-- Ajouter un splitter entre les panneaux sauf après le dernier -->\r\n    @if(i < panels.length - 1) {\r\n      <div class=\"splitter\" (mousedown)=\"onDrag($event, i)\"></div>\r\n    }\r\n  }\r\n</div>\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class IslandiceService {\r\n\r\n  constructor() { }\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'lib-islandice',\r\n  standalone: true,\r\n  imports: [],\r\n  template: `\r\n    <p>\r\n      islandice works!\r\n    </p>\r\n  `,\r\n  styles: ``\r\n})\r\nexport class IslandiceComponent {\r\n\r\n}\r\n","/*\r\n * Public API Surface of islandice\r\n */\r\n\r\nexport * from './lib/models/index'\r\nexport * from './lib/pipes/index'\r\nexport * from './lib/components/index'\r\n// export * from './lib/directives/index'\r\nexport * from './lib/islandice.service';\r\nexport * from './lib/islandice.component';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}