{"version":3,"file":"cocori-ng.mjs","sources":["../../../projects/cocori-ng/src/feature-cms/core/service/adapter-page-cms.service.ts","../../../projects/cocori-ng/src/feature-cms/core/service/cms.service.ts","../../../projects/cocori-ng/src/feature-cms/shared/component-cms-editor/cocoring-cms-section/cocoring-cms-section.component.ts","../../../projects/cocori-ng/src/feature-cms/shared/component-cms-editor/cocoring-cms-section/cocoring-cms-section.component.html","../../../projects/cocori-ng/src/feature-cms/shared/component-cms-editor/cocoring-cms-blocks-catalog/cocoring-cms-blocks-catalog.component.ts","../../../projects/cocori-ng/src/feature-cms/shared/component-cms-editor/cocoring-cms-blocks-catalog/cocoring-cms-blocks-catalog.component.html","../../../projects/cocori-ng/src/feature-cms/shared/component-cms-editor/cocoring-preview-options/cocoring-preview-options.component.ts","../../../projects/cocori-ng/src/feature-cms/shared/component-cms-editor/cocoring-preview-options/cocoring-preview-options.component.html","../../../projects/cocori-ng/src/feature-cms/shared/component-cms-editor/cocoring-toolbar-cms/cocoring-toolbar-cms.component.ts","../../../projects/cocori-ng/src/feature-cms/shared/component-cms-editor/cocoring-toolbar-cms/cocoring-toolbar-cms.component.html","../../../projects/cocori-ng/src/feature-cms/shared/component-cms-editor/cocoring-cms/cocoring-cms.component.ts","../../../projects/cocori-ng/src/feature-cms/shared/component-cms-editor/cocoring-cms/cocoring-cms.component.html","../../../projects/cocori-ng/src/feature-cms/shared/extend-preview-actions.component.ts","../../../projects/cocori-ng/src/feature-cms/shared/section-tpl/section-tpl.component.ts","../../../projects/cocori-ng/src/feature-cms/shared/section-tpl/section-tpl.component.html","../../../projects/cocori-ng/src/feature-cms/shared/shared-cms.module.ts","../../../projects/cocori-ng/src/feature-cms/shared/component-cms-editor/cocoring-cms-image-upload/cocoring-cms-image-upload.component.ts","../../../projects/cocori-ng/src/feature-cms/shared/component-cms-editor/cocoring-cms-image-upload/cocoring-cms-image-upload.component.html","../../../projects/cocori-ng/src/feature-cms/shared/component-cms-editor/cocoring-cms-section-actions/cocoring-cms-section-actions.component.ts","../../../projects/cocori-ng/src/feature-cms/shared/component-cms-editor/cocoring-cms-section-actions/cocoring-cms-section-actions.component.html","../../../projects/cocori-ng/src/feature-cms/shared/component-cms-editor/cocoring-cms.module.ts","../../../projects/cocori-ng/src/feature-cms/shared/component-cms-readonly/cocoring-cms-readonly-section/cocoring-cms-readonly-section.component.ts","../../../projects/cocori-ng/src/feature-cms/shared/component-cms-readonly/cocoring-cms-readonly-section/cocoring-cms-readonly-section.component.html","../../../projects/cocori-ng/src/feature-cms/shared/component-cms-readonly/cocoring-cms-readonly/cocoring-cms-readonly.component.ts","../../../projects/cocori-ng/src/feature-cms/shared/component-cms-readonly/cocoring-cms-readonly/cocoring-cms-readonly.component.html","../../../projects/cocori-ng/src/feature-cms/shared/component-cms-readonly/cocoring-cms-readonly.module.ts","../../../projects/cocori-ng/src/feature-cms/shared/component-cms-editor/cocoring-cms-section/extend-section-tpl.component.ts","../../../projects/cocori-ng/src/feature-cms/shared/component-cms-readonly/cocoring-cms-readonly-section/extend-section-readonly-tpl.component.ts","../../../projects/cocori-ng/src/feature-form/core/config/config.components.ts","../../../projects/cocori-ng/src/feature-form/core/config/config.events.ts","../../../projects/cocori-ng/src/feature-form/shared/component/button/cocoring-button.component.ts","../../../projects/cocori-ng/src/feature-form/shared/component/button/cocoring-button.component.html","../../../projects/cocori-ng/src/feature-form/shared/component/button-link/cocoring-button-link.component.ts","../../../projects/cocori-ng/src/feature-form/shared/component/button-link/cocoring-button-link.component.html","../../../projects/cocori-ng/src/feature-form/shared/component/form/inputs/extend-inputs/extend-inputs.component.ts","../../../projects/cocori-ng/src/feature-form/shared/component/error-handler/input-error-handler/cocoring-input-error.component.ts","../../../projects/cocori-ng/src/feature-form/shared/component/form/inputs/input-checkbox-indeterminate/checkbox-indeterminate.component.ts","../../../projects/cocori-ng/src/feature-form/shared/component/form/inputs/input-checkbox-indeterminate/checkbox-indeterminate.component.html","../../../projects/cocori-ng/src/feature-form/shared/pipe/variable-html/cocoring-variable-html.pipe.ts","../../../projects/cocori-ng/src/feature-form/shared/component/form/inputs/input-checkbox/cocoring-checkbox.component.ts","../../../projects/cocori-ng/src/feature-form/shared/component/form/inputs/input-checkbox/cocoring-checkbox.component.html","../../../projects/cocori-ng/src/feature-form/shared/component/form/inputs/input-icon/input-icon.component.ts","../../../projects/cocori-ng/src/feature-form/shared/component/form/inputs/input-icon/input-icon.component.html","../../../projects/cocori-ng/src/feature-form/shared/component/form/inputs/input-date/cocoring-date.component.ts","../../../projects/cocori-ng/src/feature-form/shared/component/form/inputs/input-date/cocoring-date.component.html","../../../projects/cocori-ng/src/feature-form/shared/component/form/inputs/input-email/cocoring-email.component.ts","../../../projects/cocori-ng/src/feature-form/shared/component/form/inputs/input-email/cocoring-email.component.html","../../../projects/cocori-ng/src/feature-form/shared/component/form/inputs/input-number/cocoring-number.component.ts","../../../projects/cocori-ng/src/feature-form/shared/component/form/inputs/input-number/cocoring-number.component.html","../../../projects/cocori-ng/src/feature-form/shared/component/form/inputs/input-password/cocoring-password.component.ts","../../../projects/cocori-ng/src/feature-form/shared/component/form/inputs/input-password/cocoring-password.component.html","../../../projects/cocori-ng/src/feature-form/shared/component/form/inputs/input-select/cocoring-select.component.ts","../../../projects/cocori-ng/src/feature-form/shared/component/form/inputs/input-select/cocoring-select.component.html","../../../projects/cocori-ng/src/feature-form/shared/component/form/inputs/input-slide-toggle/cocoring-slide-toggle.component.ts","../../../projects/cocori-ng/src/feature-form/shared/component/form/inputs/input-slide-toggle/cocoring-slide-toggle.component.html","../../../projects/cocori-ng/src/feature-form/shared/component/form/inputs/input-text/cocoring-text.component.ts","../../../projects/cocori-ng/src/feature-form/shared/component/form/inputs/input-text/cocoring-text.component.html","../../../projects/cocori-ng/src/feature-form/shared/component/form/inputs/input-textarea/cocoring-textarea.component.ts","../../../projects/cocori-ng/src/feature-form/shared/component/form/inputs/input-textarea/cocoring-textarea.component.html","../../../projects/cocori-ng/src/feature-form/shared/component/form/inputs/input-viewer/cocoring-viewer.component.ts","../../../projects/cocori-ng/src/feature-form/shared/component/form/inputs/input-viewer/cocoring-viewer.component.html","../../../projects/cocori-ng/src/feature-form/shared/component/form/index.ts","../../../projects/cocori-ng/src/feature-form/core/service/form-builder/form-builder.service.ts","../../../projects/cocori-ng/src/feature-form/core/service/uploader/uploader.service.ts","../../../projects/cocori-ng/src/feature-form/core/service/toast-message.service.ts","../../../projects/cocori-ng/src/feature-form/core/service/datagrid/datagrid.service.ts","../../../projects/cocori-ng/src/feature-form/shared/component/modal/confirm-modal/cocoring-confirm-modal.component.ts","../../../projects/cocori-ng/src/feature-form/shared/component/modal/confirm-modal/cocoring-confirm-modal.component.html","../../../projects/cocori-ng/src/feature-form/core/service/confirm-modal.service.ts","../../../projects/cocori-ng/src/feature-form/core/service/flex-layout/flex-layout.service.ts","../../../projects/cocori-ng/src/feature-form/shared/directive/color-picker/cocoring-colorpicker.directive.ts","../../../projects/cocori-ng/src/feature-form/shared/directive/color-picker/cocoring-colorpicker.module.ts","../../../projects/cocori-ng/src/feature-form/shared/directive/default-image/cocoring-default-image.directive.ts","../../../projects/cocori-ng/src/feature-form/shared/directive/default-image/cocoring-default-image.module.ts","../../../projects/cocori-ng/src/feature-form/shared/directive/previous-page/cocoring-previous-page.directive.ts","../../../projects/cocori-ng/src/feature-form/shared/directive/previous-page/cocoring-previous-page.module.ts","../../../projects/cocori-ng/src/feature-form/shared/directive/datagrid/cocoring-datagrid-group.directive.ts","../../../projects/cocori-ng/src/feature-form/shared/pipe/variable-html/cocoring-variable-html.module.ts","../../../projects/cocori-ng/src/feature-form/shared/pipe/file-size/cocoring-file-size.pipe.ts","../../../projects/cocori-ng/src/feature-form/shared/pipe/file-size/cocoring-file-size.module.ts","../../../projects/cocori-ng/src/feature-form/shared/pipe/pretty-print/cocoring-pretty-print.pipe.ts","../../../projects/cocori-ng/src/feature-form/shared/pipe/pretty-print/cocoring-pretty-print.module.ts","../../../projects/cocori-ng/src/feature-form/shared/pipe/sanitize-url/cocoring-sanitize-url.pipe.ts","../../../projects/cocori-ng/src/feature-form/shared/pipe/sanitize-url/cocoring-sanitize-url.module.ts","../../../projects/cocori-ng/src/feature-form/shared/pipe/truncate/cocoring-truncate.pipe.ts","../../../projects/cocori-ng/src/feature-form/shared/pipe/truncate/cocoring-truncate.module.ts","../../../projects/cocori-ng/src/feature-form/shared/component/error-handler/input-error-handler/cocoring-input-error.module.ts","../../../projects/cocori-ng/src/feature-form/shared/component/wysiwyg/cocoring-wysiwyg.component.ts","../../../projects/cocori-ng/src/feature-form/shared/component/wysiwyg/cocoring-wysiwyg.component.html","../../../projects/cocori-ng/src/feature-form/shared/component/wysiwyg/cocoring-wysiwyg.module.ts","../../../projects/cocori-ng/src/feature-form/shared/component/toast-error-stacktrace/toast-error-stacktrace.component.ts","../../../projects/cocori-ng/src/feature-form/shared/component/toast-error-stacktrace/toast-error-stacktrace.component.html","../../../projects/cocori-ng/src/feature-form/shared/component/toast-error-stacktrace/toast-error-stacktrace.module.ts","../../../projects/cocori-ng/src/feature-form/shared/component/modal/confirm-modal/cocoring-confirm-modal.module.ts","../../../projects/cocori-ng/src/feature-form/shared/component/form/form-buttons/cocoring-buttons-group.component.ts","../../../projects/cocori-ng/src/feature-form/shared/component/form/form-buttons/cocoring-buttons-group.component.html","../../../projects/cocori-ng/src/feature-form/shared/component/form/form-buttons/cocoring-buttons-group.module.ts","../../../projects/cocori-ng/src/feature-form/shared/component/form/inputs/input-icon/input-icon.module.ts","../../../projects/cocori-ng/src/feature-form/shared/component/form/inputs/input-checkbox/cocoring-checkbox.module.ts","../../../projects/cocori-ng/src/feature-form/shared/component/form/inputs/input-checkbox-indeterminate/checkbox-indeterminate.module.ts","../../../projects/cocori-ng/src/feature-form/shared/component/form/inputs/input-date/cocoring-date.module.ts","../../../projects/cocori-ng/src/feature-form/shared/component/form/inputs/input-slide-toggle/cocoring-slide-toggle.module.ts","../../../projects/cocori-ng/src/feature-form/shared/component/form/inputs/input-email/cocoring-email.module.ts","../../../projects/cocori-ng/src/feature-form/shared/component/form/inputs/input-number/cocoring-number.module.ts","../../../projects/cocori-ng/src/feature-form/shared/component/form/inputs/input-password/cocoring-password.module.ts","../../../projects/cocori-ng/src/feature-form/shared/component/form/inputs/input-select/cocoring-select.module.ts","../../../projects/cocori-ng/src/feature-form/shared/component/form/inputs/input-text/cocoring-text.module.ts","../../../projects/cocori-ng/src/feature-form/shared/component/form/inputs/input-textarea/cocoring-textarea.module.ts","../../../projects/cocori-ng/src/feature-form/shared/component/form/inputs/input-viewer/cocoring-viewer.module.ts","../../../projects/cocori-ng/src/feature-form/shared/component/form/form-container/cocoring-form-container.component.ts","../../../projects/cocori-ng/src/feature-form/shared/component/form/form-container/cocoring-form-container.component.html","../../../projects/cocori-ng/src/feature-form/shared/component/form/form-container/cocoring-form-container.module.ts","../../../projects/cocori-ng/src/feature-form/shared/component/button/cocoring-button.module.ts","../../../projects/cocori-ng/src/feature-form/shared/component/button-link/cocoring-button-link.module.ts","../../../projects/cocori-ng/src/feature-form/shared/component/uploader/cocoring-uploader-bottom-sheet/cocoring-uploader-bottom-sheet.component.ts","../../../projects/cocori-ng/src/feature-form/shared/component/uploader/cocoring-uploader-bottom-sheet/cocoring-uploader-bottom-sheet.component.html","../../../projects/cocori-ng/src/feature-form/shared/component/uploader/cocoring-uploader-file-actions/cocoring-uploader-file-actions.component.ts","../../../projects/cocori-ng/src/feature-form/shared/component/uploader/cocoring-uploader-file-actions/cocoring-uploader-file-actions.component.html","../../../projects/cocori-ng/src/feature-form/shared/component/uploader/cocoring-uploader-list-file/cocoring-uploader-list-file.component.ts","../../../projects/cocori-ng/src/feature-form/shared/component/uploader/cocoring-uploader-list-file/cocoring-uploader-list-file.component.html","../../../projects/cocori-ng/src/feature-form/shared/component/uploader/cocoring-uploader.component.ts","../../../projects/cocori-ng/src/feature-form/shared/component/uploader/cocoring-uploader.component.html","../../../projects/cocori-ng/src/feature-form/shared/component/uploader/cocoring-uploader.module.ts","../../../projects/cocori-ng/src/feature-form/shared/component/datagrid/cocoring-datagrid-cell/cocoring-datagrid-cell.component.ts","../../../projects/cocori-ng/src/feature-form/shared/component/datagrid/cocoring-datagrid-cell/cocoring-datagrid-cell.component.html","../../../projects/cocori-ng/src/feature-form/shared/component/datagrid/cocoring-datagrid-row/cocoring-datagrid-row.component.ts","../../../projects/cocori-ng/src/feature-form/shared/component/datagrid/cocoring-datagrid-row/cocoring-datagrid-row.component.html","../../../projects/cocori-ng/src/feature-form/shared/component/datagrid/common-datagrid/sort-column-extend.component.ts","../../../projects/cocori-ng/src/feature-form/shared/component/datagrid/cocoring-datagrid-head/cocoring-datagrid-head.component.ts","../../../projects/cocori-ng/src/feature-form/shared/component/datagrid/cocoring-datagrid-head/cocoring-datagrid-head.component.html","../../../projects/cocori-ng/src/feature-form/shared/component/datagrid/cocoring-datagrid.component.ts","../../../projects/cocori-ng/src/feature-form/shared/component/datagrid/cocoring-datagrid.component.html","../../../projects/cocori-ng/src/feature-form/shared/component/datagrid/cocoring-datagrid-filter-modal/cocoring-datagrid-filter-column/cocoring-datagrid-filter-column.component.ts","../../../projects/cocori-ng/src/feature-form/shared/component/datagrid/cocoring-datagrid-filter-modal/cocoring-datagrid-filter-column/cocoring-datagrid-filter-column.component.html","../../../projects/cocori-ng/src/feature-form/shared/component/datagrid/cocoring-datagrid-filter-modal/cocoring-datagrid-filter-modal.component.ts","../../../projects/cocori-ng/src/feature-form/shared/component/datagrid/cocoring-datagrid-filter-modal/cocoring-datagrid-filter-modal.component.html","../../../projects/cocori-ng/src/feature-form/shared/component/datagrid/cocoring-datagrid-toolbar/cocoring-datagrid-searchbar/cocoring-datagrid-searchbar.component.ts","../../../projects/cocori-ng/src/feature-form/shared/component/datagrid/cocoring-datagrid-toolbar/cocoring-datagrid-searchbar/cocoring-datagrid-searchbar.component.html","../../../projects/cocori-ng/src/feature-form/shared/component/datagrid/cocoring-datagrid-toolbar/cocoring-datagrid-toolbar.component.ts","../../../projects/cocori-ng/src/feature-form/shared/component/datagrid/cocoring-datagrid-toolbar/cocoring-datagrid-toolbar.component.html","../../../projects/cocori-ng/src/feature-form/shared/component/datagrid/cocoring-datagrid.module.ts","../../../projects/cocori-ng/src/feature-form/shared/index.ts","../../../projects/cocori-ng/src/feature-core/service/http.service.ts","../../../projects/cocori-ng/src/feature-core/service/storage.service.ts","../../../projects/cocori-ng/src/feature-core/service/token.service.ts","../../../projects/cocori-ng/src/feature-core/service/broadcast-event.service.ts","../../../projects/cocori-ng/src/feature-core/service/interceptors/global-error-interceptor.service.ts","../../../projects/cocori-ng/src/feature-core/service/interceptors/loading-interceptor.service.ts","../../../projects/cocori-ng/src/feature-core/service/interceptors/request-interceptor.service.ts","../../../projects/cocori-ng/src/feature-core/service/sort/sort.service.ts","../../../projects/cocori-ng/src/feature-core/service/scroll.service.ts","../../../projects/cocori-ng/src/feature-core/service/inject-component.service.ts","../../../projects/cocori-ng/src/feature-core/service/helper/helper.service.ts","../../../projects/cocori-ng/src/feature-core/service/validators.service.ts","../../../projects/cocori-ng/src/feature-core/service/current-url-routing.service.ts","../../../projects/cocori-ng/src/feature-core/service/odata-query-builder/enums.ts","../../../projects/cocori-ng/src/feature-core/service/odata-query-builder/queryFragment.ts","../../../projects/cocori-ng/src/feature-core/service/odata-query-builder/queryBuilder.ts","../../../projects/cocori-ng/src/feature-core/service/file/file.service.ts","../../../projects/cocori-ng/src/feature-core/service/form-map-value/mapping.service.ts","../../../projects/cocori-ng/src/feature-core/service/helper/helper-form.service.ts","../../../projects/cocori-ng/src/feature-core/service/helper/url-helper.ts","../../../projects/cocori-ng/src/feature-core/service/helper/helper-uploader.service.ts","../../../projects/cocori-ng/src/feature-core/service/wysiwyg.service.ts","../../../projects/cocori-ng/src/feature-core/model/data-source.model.ts","../../../projects/cocori-ng/src/feature-core/service/datasource.service.ts","../../../projects/cocori-ng/src/feature-core/service/string.service.ts","../../../projects/cocori-ng/src/feature-core/model/odata.model.ts","../../../projects/cocori-ng/src/feature-core/model/form-input-components.model.ts","../../../projects/cocori-ng/src/feature-core/model/schema-datas.model.ts","../../../projects/cocori-ng/src/feature-core/model/component-inputs.model.ts","../../../projects/cocori-ng/src/feature-gallery/core/service/image-fullscreen-view.service.ts","../../../projects/cocori-ng/src/feature-gallery/shared/fullscreen-viewer/slider-custom-image/slider-custom-image.component.ts","../../../projects/cocori-ng/src/feature-gallery/shared/fullscreen-viewer/slider-custom-image/slider-custom-image.component.html","../../../projects/cocori-ng/src/feature-gallery/shared/fullscreen-viewer/image-fullscreen-view/image-fullscreen-view.component.ts","../../../projects/cocori-ng/src/feature-gallery/shared/fullscreen-viewer/image-fullscreen-view/image-fullscreen-view.html","../../../projects/cocori-ng/src/feature-gallery/shared/fullscreen-viewer/image-fullscreen-view/image-fullscreen-view.module.ts","../../../projects/cocori-ng/src/feature-gallery/public-api.ts","../../../projects/cocori-ng/src/public-api.ts","../../../projects/cocori-ng/src/cocori-ng.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\nimport { SectionModel, SectionModelCommand } from '../model/cms.model';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class AdapterPageCmsService {\r\n\r\n  /** Adapteur en écriture \r\n   *  on retourne au back les sections sans les propriétés component et componentReadonly (deconstruct) non utiles pour le back\r\n  */\r\n  public adapterCommand(sections: SectionModel[]): SectionModelCommand[] {\r\n    return sections.map(({ component, componentReadonly, ...attributes }) => attributes)\r\n  }\r\n}","import { Injectable } from '@angular/core';\r\nimport { HelperService } from 'cocori-ng/src/feature-core';\r\nimport { BehaviorSubject, Subject } from 'rxjs';\r\n\r\nimport {\r\n  InsertSectionAt,\r\n  MoveOrientationSectionActions,\r\n  SectionModel,\r\n  SectionModelCommand,\r\n  SectionMoveIndexes,\r\n} from '../model/cms.model';\r\nimport { AdapterPageCmsService } from './adapter-page-cms.service';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class CmsService {\r\n  public sectionAdded$: Subject<InsertSectionAt> = new Subject<InsertSectionAt>();\r\n  public catalogBlocksOpened$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\r\n  public backgroundColor$: Subject<string> = new Subject<string>();\r\n  public moveSection$: Subject<SectionMoveIndexes> = new Subject<SectionMoveIndexes>();\r\n  public onSaveCmsContent$: Subject<SectionModelCommand[]> = new Subject<SectionModelCommand[]>();\r\n  private sectionRemoved$: Subject<InsertSectionAt> = new Subject<InsertSectionAt>();\r\n\r\n  public sections: SectionModel[] = []\r\n\r\n  constructor(\r\n    private helperService: HelperService,\r\n    private adapterPageCmsService: AdapterPageCmsService) {\r\n    this.init()\r\n  }\r\n\r\n  public init() {\r\n    this.sections.splice(0, this.sections.length)\r\n  }\r\n\r\n  public onSectionRemoved(): Subject<InsertSectionAt> {\r\n    return this.sectionRemoved$\r\n  }\r\n\r\n  public sectionsPageDatas(): SectionModelCommand[] {\r\n    return this.adapterPageCmsService.adapterCommand(this.sections)\r\n  }\r\n\r\n  public addSection(newSection: SectionModel) {\r\n    this.sections.push(newSection)\r\n\r\n    this.sectionAdded$.next({ section: newSection })\r\n  }\r\n\r\n  public getIndexCurrentSection(sectionId: string): number {\r\n    return this.sections.findIndex((section: SectionModel) => section.id === sectionId)\r\n  }\r\n\r\n  public removeSection(sectionId: string) {\r\n    const index: number = this.sections.findIndex((section: SectionModel) => section.id === sectionId)\r\n\r\n    const sectionRemoved: SectionModel[] = this.sections.splice(index, 1)\r\n\r\n    this.sectionRemoved$.next(<InsertSectionAt>{ index: index, section: sectionRemoved[0] })\r\n  }\r\n\r\n  public duplicateSection(section: SectionModel) {\r\n    const index: number = this.sections.findIndex((s: SectionModel) => s.id === section.id)\r\n\r\n    const newIndex: number = index + 1\r\n\r\n    const sectionToDuplicate: SectionModel = this.sections[index]\r\n\r\n    const sectionDuplicated: SectionModel = JSON.parse(JSON.stringify(sectionToDuplicate));\r\n\r\n    sectionDuplicated.key = sectionToDuplicate.key\r\n    sectionDuplicated.id = this.helperService.generateGuid()\r\n\r\n    this.sections.splice(newIndex, 0, sectionDuplicated)\r\n\r\n    this.sectionAdded$.next({ section: sectionDuplicated, index: newIndex })\r\n  }\r\n\r\n  public changeBackgroundColorSection(idSection: string, value: string) {\r\n    const section: SectionModel = this.sections.find((s: SectionModel) => s.id === idSection)\r\n\r\n    section.backgroundColor = value\r\n\r\n    this.backgroundColor$.next(idSection)\r\n  }\r\n\r\n  public moveSection(idSection: string, orientation: MoveOrientationSectionActions) {\r\n    const previousIndex: number = this.sections.findIndex((s: SectionModel) => s.id === idSection)\r\n    let currentIndex: number = previousIndex\r\n\r\n    if (orientation === 'move-up' && previousIndex > 0) {\r\n      currentIndex = previousIndex - 1\r\n    } else if (orientation === 'move-down' && previousIndex < this.sections.length - 1) {\r\n      currentIndex = previousIndex + 1\r\n    }\r\n\r\n    this.moveSection$.next({ previousIndex: previousIndex, currentIndex: currentIndex })\r\n  }\r\n}\r\n","import {\r\n  ChangeDetectionStrategy,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  Input,\r\n  OnDestroy,\r\n  OnInit,\r\n  Output,\r\n  ViewChild,\r\n  ViewContainerRef,\r\n  ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { MatBottomSheet } from '@angular/material/bottom-sheet';\r\nimport { InjectComponentService } from 'cocori-ng/src/feature-core';\r\nimport { Subject } from 'rxjs';\r\nimport { filter, takeUntil, tap } from 'rxjs/operators';\r\n\r\nimport { ApisConfigCmsModel, InsertSectionAt as SectionIndex, SectionModel } from '../../../core/model/cms.model';\r\nimport { CmsService } from '../../../core/service/cms.service';\r\n\r\n@Component({\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  encapsulation: ViewEncapsulation.None,\r\n  selector: 'cocoring-cms-section',\r\n  templateUrl: './cocoring-cms-section.component.html',\r\n  styleUrls: ['../../section-styles/section-styles.component.scss', './cocoring-cms-section.component.scss'],\r\n  providers: [MatBottomSheet]\r\n})\r\nexport class CocoringCmsSectionComponent implements OnInit, OnDestroy {\r\n  @ViewChild('ContainerRef', { static: true, read: ViewContainerRef }) containerRef: ViewContainerRef;\r\n\r\n  @Input() section: SectionModel\r\n  @Input() apisConfig: ApisConfigCmsModel\r\n  @Output() afterRemoveAnimation = new EventEmitter();\r\n\r\n  readOnly: boolean = true;\r\n  indexSectionRemoved: number;\r\n\r\n  private readonly destroy$ = new Subject();\r\n\r\n  animationDone(event: AnimationEvent) {\r\n    if (event.animationName === 'sectionOut') {\r\n      this.afterRemoveAnimation.emit(this.indexSectionRemoved);\r\n    }\r\n  }\r\n\r\n  constructor(\r\n    private host: ElementRef<HTMLElement>,\r\n    private cdr: ChangeDetectorRef,\r\n    private cmsService: CmsService,\r\n    private injectComponentService: InjectComponentService,\r\n  ) { }\r\n\r\n  ngOnInit(): void {\r\n    this.addTemplateSectionComponent()\r\n\r\n    this.catalogBlocksOpenedEvent()\r\n\r\n    this.onSectionRemoved()\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.destroy$.next(undefined);\r\n    this.destroy$.complete();\r\n  }\r\n\r\n  get container(): HTMLElement {\r\n    return this.host.nativeElement.querySelector('.cms-section') as HTMLElement;\r\n  }\r\n\r\n  removeSection() {\r\n    this.container.style.animation = 'sectionOut 0.3s';\r\n  }\r\n\r\n  private onSectionRemoved() {\r\n    this.cmsService.onSectionRemoved().pipe(\r\n      takeUntil(this.destroy$),\r\n      filter((sectionRemoved: SectionIndex) => sectionRemoved.section.id === this.section.id),\r\n      tap((sectionRemoved: SectionIndex) => this.indexSectionRemoved = sectionRemoved.index),\r\n      tap(_ => this.removeSection()),\r\n    ).subscribe()\r\n  }\r\n\r\n  private catalogBlocksOpenedEvent() {\r\n    this.cmsService.catalogBlocksOpened$.pipe(\r\n      takeUntil(this.destroy$),\r\n      tap((isOpened: boolean) => {\r\n        this.readOnly = isOpened\r\n      }),\r\n      tap(_ => this.cdr.detectChanges())\r\n    ).subscribe()\r\n  }\r\n\r\n  private addTemplateSectionComponent() {\r\n    this.injectComponentService.loadAndAddComponentToContainer(this.section.component, this.containerRef,\r\n      { section: this.section, apisConfig: this.apisConfig }, null)\r\n  }\r\n}\r\n","<div class=\"cms-section\" (animationend)=\"animationDone($event)\">\r\n    <div cdkDrag [cdkDragDisabled]=\"!readOnly\" cdkDragLockAxis=\"y\" cdkDragBoundary=\".blocks\">\r\n        <ng-template #ContainerRef></ng-template>\r\n        <div class=\"example-custom-placeholder\" *cdkDragPlaceholder></div>\r\n        <div *cdkDragPreview></div>\r\n    </div>\r\n</div>","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\r\nimport { HelperService } from 'cocori-ng/src/feature-core';\r\n\r\nimport { SectionModel } from '../../../core/model/cms.model';\r\nimport { Block } from '../../../core/service/block';\r\nimport { CmsService } from '../../../core/service/cms.service';\r\n\r\n@Component({\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  selector: 'cocoring-cms-blocks-catalog',\r\n  templateUrl: './cocoring-cms-blocks-catalog.component.html',\r\n  styleUrls: ['./cocoring-cms-blocks-catalog.component.scss'],\r\n})\r\nexport class CocoringCmsBlocksCatalogComponent implements OnInit {\r\n\r\n  @Input() catalog: Block[] = []\r\n\r\n  constructor(\r\n    public cmsService: CmsService,\r\n    private helperService: HelperService\r\n  ) { }\r\n\r\n  ngOnInit(): void { }\r\n\r\n  selectBlock(block: Block) {\r\n    const newSection: SectionModel = {\r\n      id: this.helperService.generateGuid(),\r\n      key: block.key,\r\n      component: block.data.component,\r\n      componentReadonly: null,\r\n      backgroundColor: block.data.backgroundColor,\r\n      values: block.data.content\r\n    }\r\n\r\n    this.cmsService.addSection(newSection)\r\n  }\r\n\r\n  trackBy(index: number) {\r\n    return index;\r\n  }\r\n}\r\n","<div class=\"catalogue-sections\">\r\n    <div class=\"c1\">Catalogue de templates</div>\r\n    <div class=\"c2\">cliquez & composez votre page</div>\r\n\r\n</div>\r\n<div class=\"blocks-container\">\r\n    <ng-container *ngFor=\"let block of catalog; let i = index; trackBy: trackBy\">\r\n        <img src=\"assets/images/cms/design-blocks/{{block.data.filename}}\" (click)=\"selectBlock(block)\" />\r\n    </ng-container>\r\n</div>","import { Component, OnInit } from '@angular/core';\r\nimport { BroadcastEventService } from 'cocori-ng/src/feature-core';\r\nimport { ConfigEvents } from 'cocori-ng/src/feature-form';\r\n\r\nimport { ResponsiveOrientation } from '../../../core/model/cms.model';\r\n\r\n@Component({\r\n  selector: 'cocoring-preview-options',\r\n  templateUrl: './cocoring-preview-options.component.html',\r\n  styleUrls: ['./cocoring-preview-options.component.scss']\r\n})\r\nexport class CocoringPreviewOptionsComponent implements OnInit {\r\n\r\n  responsive: string = 'computer'\r\n\r\n  orientationComputer: ResponsiveOrientation = 'computer'\r\n  orientationTabletLand: ResponsiveOrientation = 'tablet-land'\r\n  orientationTabletPort: ResponsiveOrientation = 'tablet-port'\r\n  orientationMobile: ResponsiveOrientation = 'mobile'\r\n\r\n  constructor(\r\n    private broadcastEventService: BroadcastEventService,\r\n  ) { }\r\n\r\n  ngOnInit(): void {\r\n  }\r\n\r\n  reset() {\r\n    this.responsive = this.orientationComputer\r\n\r\n    this.broadcastEventService.broadcast({ eventKeys: [ConfigEvents.CMS_RESPONSIVE_ORIENTATION_CHANGED], eventData: this.responsive })\r\n  }\r\n\r\n  onResponsiveChange($event) {\r\n    this.broadcastEventService.broadcast({ eventKeys: [ConfigEvents.CMS_RESPONSIVE_ORIENTATION_CHANGED], eventData: $event })\r\n  }\r\n}\r\n","<mat-button-toggle-group [(ngModel)]=\"responsive\" (ngModelChange)=\"onResponsiveChange($event)\" class=\"resolutions-group\"\r\n    #group=\"matButtonToggleGroup\">\r\n    <mat-button-toggle [value]=\"orientationComputer\" title=\"Vision ordinateur\" aria-label=\"Ordinateur\">\r\n        <mat-icon>computer</mat-icon>\r\n    </mat-button-toggle>\r\n    <mat-button-toggle [value]=\"orientationTabletLand\" title=\"Vision tablette en mode paysage\"\r\n        aria-label=\"Tablette paysage\">\r\n        <mat-icon>tablet</mat-icon>\r\n    </mat-button-toggle>\r\n    <mat-button-toggle [value]=\"orientationTabletPort\" title=\"Vision tablette en mode portrait\"\r\n        aria-label=\"Tablette portrait\">\r\n        <mat-icon>tablet_mac</mat-icon>\r\n    </mat-button-toggle>\r\n    <mat-button-toggle [value]=\"orientationMobile\" title=\"Vision téléphone\" aria-label=\"Téléphone\">\r\n        <mat-icon>phone_iphone</mat-icon>\r\n    </mat-button-toggle>\r\n</mat-button-toggle-group>","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n\r\nimport { CmsService } from '../../../core/service/cms.service';\r\n\r\n@Component({\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  selector: 'cocoring-toolbar-cms',\r\n  templateUrl: './cocoring-toolbar-cms.component.html',\r\n  styleUrls: ['./cocoring-toolbar-cms.component.scss']\r\n})\r\nexport class CocoringToolbarCmsComponent implements OnInit {\r\n  @Input() showSaveBtn: boolean = false;\r\n  @Output() toggleSidenav: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n  constructor(\r\n    private cmsService: CmsService) { }\r\n\r\n  ngOnInit(): void { }\r\n\r\n  saveContentPage() {\r\n    this.cmsService.onSaveCmsContent$.next(this.cmsService.sectionsPageDatas())\r\n  }\r\n}\r\n","<div class=\"sidenav-header\" style=\"z-index: 9;\">\r\n    <div class=\"group-left\">\r\n        <cocoring-preview-options></cocoring-preview-options>\r\n    </div>\r\n    <div class=\"group-right\">\r\n        <div *ngIf=\"showSaveBtn\" class=\"toggle-sidenav\" (click)=\"saveContentPage()\">\r\n            <mat-icon>save_alt</mat-icon>\r\n        </div>\r\n        <div class=\"toggle-sidenav\" (click)=\"toggleSidenav.emit()\">\r\n            <mat-icon>widgets</mat-icon>\r\n        </div>\r\n    </div>\r\n</div>","import { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport {\r\n  ChangeDetectionStrategy,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  EventEmitter,\r\n  Input,\r\n  OnDestroy,\r\n  OnInit,\r\n  Output,\r\n  ViewChild,\r\n  ViewContainerRef,\r\n} from '@angular/core';\r\nimport { MediaObserver } from '@angular/flex-layout';\r\nimport { MatSidenav } from '@angular/material/sidenav';\r\nimport { InjectComponentService } from 'cocori-ng/src/feature-core';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil, tap } from 'rxjs/operators';\r\n\r\nimport {\r\n  ConfigCmsModel,\r\n  InsertSectionAt,\r\n  SectionModel,\r\n  SectionModelCommand,\r\n  SectionMoveIndexes,\r\n} from '../../../core/model/cms.model';\r\nimport { Block } from '../../../core/service/block';\r\nimport { CmsService } from '../../../core/service/cms.service';\r\nimport { CocoringCmsSectionComponent } from '../cocoring-cms-section/cocoring-cms-section.component';\r\n\r\n// import { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\n// import { MediaChange, MediaObserver } from '@angular/flex-layout';\r\n@Component({\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  selector: 'cocoring-cms',\r\n  templateUrl: './cocoring-cms.component.html',\r\n  styleUrls: ['./cocoring-cms.component.scss'],\r\n  providers: [InjectComponentService]\r\n})\r\nexport class CocoringCmsComponent implements OnInit, OnDestroy {\r\n  @ViewChild('sidenav') sidenav: MatSidenav;\r\n  @ViewChild('ContainerRef', { static: false, read: ViewContainerRef }) containerRef: ViewContainerRef;\r\n\r\n  configCms: ConfigCmsModel;\r\n  catalog: Block[] = []\r\n  orientation = 'column'\r\n  _showSaveBtn: boolean = false;\r\n  importSections: SectionModel[] = [];\r\n\r\n  private readonly destroy$ = new Subject();\r\n\r\n  @Input()\r\n  set config(config: ConfigCmsModel) {\r\n    if (!config) {\r\n      throw new Error(`La config du composant CMS n'est pas correcte... config: ${config}`);\r\n    }\r\n\r\n    this.configCms = config\r\n\r\n    this.catalog = config.catalog\r\n\r\n    this.cmsService.init()\r\n  }\r\n\r\n  @Input()\r\n  set datas(sectionDatas: SectionModel[]) {\r\n    this.importSections = sectionDatas\r\n  }\r\n\r\n  @Input()\r\n  set showSaveBtn(data: boolean) {\r\n    this._showSaveBtn = data\r\n\r\n    if (data) {\r\n      this.onPageSaved()\r\n    }\r\n  }\r\n\r\n  @Output() onSaveBtn: EventEmitter<SectionModel[]> = new EventEmitter<SectionModel[]>();\r\n\r\n  responsive: string = 'computer'\r\n  activeMediaQuery = '';\r\n  sidenavMode: string = 'side'\r\n  isSidenavOpen: boolean = false;\r\n  totalSections: number = 0;\r\n\r\n  constructor(\r\n    private mediaObserver: MediaObserver,\r\n    private cdr: ChangeDetectorRef,\r\n    private cmsService: CmsService,\r\n    private injectComponentService: InjectComponentService,\r\n  ) {\r\n    this.eventSizeScreen();\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.addSectionEvent()\r\n\r\n    this.onSectionMoved()\r\n\r\n    /** on dessine les sections chargées ! */\r\n    if (this.importSections.length) {\r\n      this.importSections.forEach((section: SectionModel) => {\r\n        this.cmsService.addSection(section)\r\n      })\r\n    }\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.destroy$.next(undefined);\r\n    this.destroy$.complete();\r\n  }\r\n\r\n  private onPageSaved() {\r\n    this.cmsService.onSaveCmsContent$.pipe(\r\n      takeUntil(this.destroy$)\r\n    ).subscribe((contentPage: SectionModel[]) => {\r\n      this.onSaveBtn.emit(contentPage)\r\n    })\r\n  }\r\n\r\n  private eventSizeScreen() {\r\n    this.mediaObserver\r\n      .asObservable()\r\n      .pipe(\r\n        takeUntil(this.destroy$)\r\n      ).subscribe((change) => {\r\n        change.forEach((item) => {\r\n          this.activeMediaQuery = item ? `'${item.mqAlias}' = (${item.mediaQuery})` : '';\r\n\r\n          if (item.mqAlias === 'xs') {\r\n            this.sidenavMode = 'over';\r\n          } else {\r\n            this.sidenavMode = 'side';\r\n          }\r\n        })\r\n      })\r\n  }\r\n\r\n  toggleSidenavBlocks() {\r\n    this.sidenav.toggle()\r\n\r\n    this.isSidenavOpen = this.sidenav.opened\r\n\r\n    this.cmsService.catalogBlocksOpened$.next(this.isSidenavOpen)\r\n  }\r\n\r\n  public getPageCMSDatas(): SectionModelCommand[] {\r\n    return this.cmsService.sectionsPageDatas()\r\n  }\r\n\r\n  private addSectionEvent() {\r\n    this.cmsService.sectionAdded$.pipe(\r\n      takeUntil(this.destroy$),\r\n      tap(_ => this.refreshNumberSection()),\r\n      tap((datas: InsertSectionAt) => {\r\n        this.injectComponentService.loadAndAddComponentToContainer(CocoringCmsSectionComponent, this.containerRef,\r\n          { section: datas.section, apisConfig: this.configCms.wysiwygOptions },\r\n          { afterRemoveAnimation: (sectionIndexRemoved: number) => this.onSectionRemovedAfterAnimation(sectionIndexRemoved) }, datas.index\r\n        )\r\n      }),\r\n    ).subscribe()\r\n  }\r\n\r\n  private onSectionRemovedAfterAnimation(indexSectionRemoved: number) {\r\n    this.injectComponentService.removeComponentFromViewContainer(indexSectionRemoved, this.containerRef)\r\n\r\n    this.refreshNumberSection()\r\n  }\r\n\r\n  private onSectionMoved() {\r\n    this.cmsService.moveSection$.pipe(\r\n      takeUntil(this.destroy$),\r\n      tap((values: any) => {\r\n        this.moveSectionContainer({ previousIndex: values.previousIndex, currentIndex: values.currentIndex })\r\n      }),\r\n    ).subscribe()\r\n  }\r\n\r\n  private refreshNumberSection() {\r\n    this.totalSections = this.cmsService.sections.length\r\n\r\n    this.cdr.detectChanges()\r\n  }\r\n\r\n  public dropSection(event: CdkDragDrop<any[]>) {\r\n    this.moveSectionContainer({ previousIndex: event.previousIndex, currentIndex: event.currentIndex })\r\n  }\r\n\r\n  private moveSectionContainer(moveIndexes: SectionMoveIndexes) {\r\n    moveItemInArray(this.cmsService.sections, moveIndexes.previousIndex, moveIndexes.currentIndex);\r\n\r\n    this.injectComponentService.moveComponentFromViewContainer(moveIndexes.currentIndex, moveIndexes.previousIndex, this.containerRef)\r\n  }\r\n}\r\n","<div class=\"page\">\r\n    <cocoring-toolbar-cms [showSaveBtn]=\"_showSaveBtn\" (toggleSidenav)=\"toggleSidenavBlocks()\"></cocoring-toolbar-cms>\r\n\r\n    <div class=\"sidenav-container\">\r\n        <mat-sidenav-container class=\"layout-container\" [hasBackdrop]=\"false\" fullscreen>\r\n            <mat-sidenav class=\"sidenav-blocks-catalog\" #sidenav [mode]=\"sidenavMode\" position=\"end\" opened=\"false\">\r\n                <cocoring-cms-blocks-catalog [catalog]=\"catalog\"></cocoring-cms-blocks-catalog>\r\n            </mat-sidenav>\r\n            <mat-sidenav-content [ngClass]=\"{'no-margin-right': isSidenavOpen && totalSections}\">\r\n                <div class=\"sidenav-content\" [ngClass]=\"{'sidenav-openned': isSidenavOpen}\">\r\n                    <div *ngIf=\"!totalSections && !isSidenavOpen\" class=\"no-section\" (click)=\"toggleSidenavBlocks()\">\r\n                        <div>\r\n                            <h1>Customisez votre page facilement 👌 </h1>\r\n                            <p>(cliquez ici pour composer votre page)</p>\r\n                        </div>\r\n                    </div>\r\n                    <div *ngIf=\"isSidenavOpen && !totalSections\" class=\"col-elements\">\r\n                        <div class=\"texte-preview\">\r\n                            Aperçu de votre page\r\n                        </div>\r\n                        <div class=\"new-block\">\r\n                            <h1>Aucune section</h1>\r\n                            <p>cliquez sur un template pour l'ajouter</p>\r\n                        </div>\r\n                    </div>\r\n\r\n                    <div *ngIf=\"totalSections\" class=\"container-sections\" [ngClass]=\"{'col-elements': isSidenavOpen}\">\r\n                        <div class=\"blocks\" cdkDropList (cdkDropListDropped)=\"dropSection($event)\">\r\n                            <ng-template #ContainerRef></ng-template>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </mat-sidenav-content>\r\n        </mat-sidenav-container>\r\n    </div>\r\n</div>","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Injector, OnDestroy } from '@angular/core';\r\nimport { BroadcastEventService } from 'cocori-ng/src/feature-core';\r\nimport { ConfigEvents } from 'cocori-ng/src/feature-form';\r\nimport { Subject, takeUntil } from 'rxjs';\r\n\r\nimport { OrientationParamsTpl, ResponsiveOrientation } from '../core/model/cms.model';\r\n\r\n\r\n@Component({\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    selector: 'extend-preview-tpl',\r\n    template: ''\r\n})\r\n\r\nexport abstract class ExtendPreviewActionsComponent implements OnDestroy {\r\n\r\n    broadcastEventService: BroadcastEventService;\r\n    orientation: string = 'row'\r\n    orientationWidth: string = '100%';\r\n    flexWidth: string;\r\n    cdr: any;\r\n    readonly destroy$ = new Subject();\r\n\r\n    constructor(injector: Injector) {\r\n        this.cdr = injector.get(ChangeDetectorRef);\r\n        this.broadcastEventService = injector.get(BroadcastEventService);\r\n\r\n        this.onOrientationChanged()\r\n    }\r\n\r\n    ngOnDestroy(): void {\r\n        this.destroy$.next(undefined);\r\n        this.destroy$.complete();\r\n    }\r\n\r\n    private onOrientationChanged() {\r\n        this.broadcastEventService.listen([ConfigEvents.CMS_RESPONSIVE_ORIENTATION_CHANGED]).pipe(\r\n            takeUntil(this.destroy$)\r\n        ).subscribe((orientation: ResponsiveOrientation) => {\r\n            this.getOrientationParams(orientation)\r\n\r\n            this.cdr.detectChanges()\r\n        })\r\n    }\r\n\r\n    getOrientationParams(type: ResponsiveOrientation) {\r\n        this.flexWidth = null\r\n\r\n        var orientations: OrientationParamsTpl = {\r\n            'mobile': () => {\r\n                this.orientation = 'column'\r\n                this.orientationWidth = '375px'\r\n                this.flexWidth = '100%'\r\n            },\r\n            'tablet-port': () => {\r\n                this.orientation = 'column'\r\n                this.orientationWidth = '768px'\r\n            },\r\n            'tablet-land': () => {\r\n                this.orientation = 'row'\r\n                this.orientationWidth = '1024px'\r\n            },\r\n            'computer': () => {\r\n                this.orientation = 'row'\r\n                this.orientationWidth = '100%'\r\n            }\r\n        };\r\n\r\n        (orientations[type] || orientations['default'])();\r\n    }\r\n}\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Injector, Input, OnInit, Output } from '@angular/core';\r\n\r\nimport { ExtendPreviewActionsComponent } from '../extend-preview-actions.component';\r\n\r\n@Component({\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  selector: 'section-tpl',\r\n  templateUrl: './section-tpl.component.html',\r\n  styleUrls: []\r\n})\r\nexport class SectionTplComponent extends ExtendPreviewActionsComponent implements OnInit {\r\n\r\n  @Input() backgroundColor: string\r\n  @Input() readOnly: boolean = false\r\n\r\n  @Output() openBottomSheet: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n  constructor(injector: Injector) {\r\n    super(injector);\r\n  }\r\n\r\n  ngOnInit(): void { }\r\n}\r\n","<section class=\"cms-block\" [style.background-color]=\"backgroundColor\" [style.max-width]=\"orientationWidth\"\r\n    [ngClass]=\"{'sidenav-openned': readOnly, 'orientation-column': orientation === 'column'}\"\r\n    (click)=\"openBottomSheet.emit()\">\r\n    <div class=\"container\" fxFlex=\"100%\" [fxLayout]=\"orientation\" [fxFlex.gt-lg]=\"flexWidth || '75%'\"\r\n        [fxFlex.gt-md]=\"flexWidth || '80%'\" [fxFlex.gt-sm]=\"flexWidth || '90%'\" fxFlex.gt-xs=\"100%\">\r\n        <div class=\"row justify-content-center\" [fxLayout]=\"orientation\" fxFlex=\"100%\" [ngClass.lt-md]=\"'row-mobile'\" [ngClass]=\"{'row-mobile': orientation === 'column'}\">\r\n            <ng-content></ng-content>\r\n        </div>\r\n    </div>\r\n</section>","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\n\r\nimport { SectionTplComponent } from './section-tpl/section-tpl.component';\r\n\r\n@NgModule({\r\n  declarations: [\r\n    SectionTplComponent,\r\n  ],\r\n  imports: [\r\n    CommonModule,\r\n    FlexLayoutModule\r\n  ],\r\n  exports: [SectionTplComponent]\r\n})\r\nexport class SharedCMSModule { }\r\n","import {\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  HostListener,\r\n  Input,\r\n  OnDestroy,\r\n  OnInit,\r\n  Output,\r\n  ViewChild,\r\n} from '@angular/core';\r\nimport { FileModel } from 'cocori-ng/src/feature-core';\r\nimport { UploaderService } from 'cocori-ng/src/feature-form';\r\nimport { Subject } from 'rxjs';\r\nimport { filter, takeUntil, tap } from 'rxjs/operators';\r\n\r\nimport { ApisConfigCmsModel, SectionModel } from '../../../core/model/cms.model';\r\n\r\n@Component({\r\n  selector: 'cocoring-cms-image-upload',\r\n  templateUrl: './cocoring-cms-image-upload.component.html',\r\n  styleUrls: ['./cocoring-cms-image-upload.component.scss'],\r\n  providers: [UploaderService]\r\n})\r\nexport class CocoringCmsImageUploadComponent implements OnInit, OnDestroy {\r\n  @ViewChild('uploader') uploaderInputRef: ElementRef;\r\n  @ViewChild('progressCircle') progressCircleRef: ElementRef;\r\n\r\n  @Input() section: SectionModel\r\n  @Input() nameBackgroundImage: string\r\n  @Input() apisConfig: ApisConfigCmsModel\r\n\r\n  @Output() apiFileUploaded: EventEmitter<string> = new EventEmitter<string>();\r\n  @Output() removeBackgroundImage: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n  isUploading: boolean = false;\r\n  uploadProgress: number;\r\n  backgroundImageUpload: FileModel\r\n  fileUploaded: File;\r\n  onError: boolean = false;\r\n\r\n  private readonly destroy$ = new Subject();\r\n\r\n  constructor(\r\n    private cdr: ChangeDetectorRef,\r\n    public uploaderService: UploaderService,\r\n  ) { }\r\n\r\n  ngOnInit(): void {\r\n    this.uploaderService.apisFile = this.apisConfig\r\n\r\n    this.eventsFileUpload()\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.destroy$.next(undefined);\r\n    this.destroy$.complete();\r\n  }\r\n\r\n  @HostListener('change', ['$event.target.files']) emitFiles(event: FileList) {\r\n    const file = event && event.item(0);\r\n\r\n    if (!file) return;\r\n\r\n    this.isUploading = true\r\n    this.onError = false\r\n\r\n    this.backgroundImageUpload = { description: null }\r\n\r\n    this.fileUploaded = file;\r\n\r\n    this.backgroundImageUpload.size = this.fileUploaded.size\r\n\r\n    this.uploaderService.uploadFile(this.fileUploaded)\r\n  }\r\n\r\n  browseFile() {\r\n    let el: HTMLElement = this.uploaderInputRef.nativeElement;\r\n    el.click();\r\n  }\r\n\r\n  private eventsFileUpload() {\r\n    this.uploaderService.fileUploaded$.pipe(\r\n      takeUntil(this.destroy$),\r\n      tap((id: string) => this.getFileId(id)),\r\n      tap(_ => this.isUploading = false),\r\n      tap(_ => this.setFileApi()),\r\n      tap(_ => this.cdr.detectChanges())\r\n    ).subscribe()\r\n\r\n    this.uploaderService.fileOnError$.pipe(\r\n      takeUntil(this.destroy$),\r\n      tap(_ => this.errorFile()),\r\n    ).subscribe()\r\n\r\n    this.uploaderService.progressSource.pipe(\r\n      takeUntil(this.destroy$),\r\n      filter(_ => !!this.fileUploaded),\r\n      tap((progress: number) => {\r\n        this.uploadProgress = progress\r\n\r\n        const circumference = this.progressCircleRef.nativeElement.getTotalLength()\r\n\r\n        this.progressCircleRef.nativeElement.style.strokeDashoffset = circumference - (progress / 100) * circumference;\r\n\r\n        this.cdr.detectChanges()\r\n      })\r\n    ).subscribe()\r\n  }\r\n\r\n  private getFileId(id: string) {\r\n    this.backgroundImageUpload.id = id\r\n  }\r\n\r\n  /** on récupère l'api du fichier pour la transmettre au composant parent */\r\n  private setFileApi() {\r\n    const apiFile = this.apisConfig.apiFile(this.backgroundImageUpload.id);\r\n\r\n    this.apiFileUploaded.emit(apiFile)\r\n  }\r\n\r\n  onBackgroundImageRemoved(event) {\r\n    event.stopPropagation()\r\n\r\n    this.removeBackgroundImage.emit()\r\n  }\r\n\r\n  private errorFile() {\r\n    this.isUploading = false\r\n\r\n    this.deleteFile()\r\n\r\n    this.onError = true\r\n  }\r\n\r\n  private deleteFile() {\r\n    this.fileUploaded = null\r\n    this.backgroundImageUpload.id = null\r\n\r\n    this.uploaderInputRef.nativeElement.value = ''\r\n  }\r\n}\r\n","<div class=\"background-image-full\" (click)=\"browseFile()\"\r\n    [ngStyle]=\"{'background-image': 'url(' + (section.values[nameBackgroundImage] ?  section.values[nameBackgroundImage] : '') + ')'}\">\r\n</div>\r\n<div class=\"addNewFile\">\r\n    <div class=\"badges-actions\" *ngIf=\"!isUploading\">\r\n        <div class=\"badge\" (click)=\"browseFile()\">\r\n            <mat-icon>wallpaper</mat-icon>\r\n        </div>\r\n        <div class=\"badge badge-delete\" (click)=\"onBackgroundImageRemoved($event)\">\r\n            <mat-icon>delete_outline</mat-icon>\r\n        </div>\r\n    </div>\r\n    <svg *ngIf=\"isUploading\" class=\"progress\" width=\"59\" height=\"59\">\r\n        <circle #progressCircle class=\"progress-circle\" cx=\"30\" cy=\"30\" r=\"28\" fill=\"white\" />\r\n        <text class=\"text-progress\" x=\"30\" y=\"30\" alignment-baseline=\"middle\" text-anchor=\"middle\">\r\n            {{uploadProgress}} %\r\n        </text>\r\n    </svg>\r\n</div>\r\n<div *ngIf=\"onError\" class=\"error-upload\">\r\n    <div class=\"badge badge-delete error\" title=\"Une erreur est survenue, veuillez réessayer\">\r\n        <mat-icon>error</mat-icon>\r\n    </div>\r\n</div>\r\n<input #uploader hidden class=\"browse-file\" type=\"file\" name=\"fileUpload\" accept=\"image/*\" />","import { ChangeDetectionStrategy, Component, Inject, OnInit } from '@angular/core';\r\nimport { MAT_BOTTOM_SHEET_DATA, MatBottomSheetRef } from '@angular/material/bottom-sheet';\r\n\r\nimport { BottomSheetSectionReturnAction, SectionModel } from '../../../core/model/cms.model';\r\nimport { CmsService } from '../../../core/service/cms.service';\r\n\r\n@Component({\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  selector: 'cocoring-cms-section-actions',\r\n  templateUrl: './cocoring-cms-section-actions.component.html',\r\n  styleUrls: ['./cocoring-cms-section-actions.component.scss']\r\n})\r\nexport class CocoringCmsSectionActionsComponent implements OnInit {\r\n  color: string;\r\n  section: SectionModel;\r\n\r\n  constructor(\r\n    private cmsService: CmsService,\r\n    private _bottomSheetRef: MatBottomSheetRef<CocoringCmsSectionActionsComponent>,\r\n    @Inject(MAT_BOTTOM_SHEET_DATA) public data: { section: SectionModel }) {\r\n    this.section = data.section\r\n\r\n    this.color = this.section.backgroundColor\r\n  }\r\n\r\n  ngOnInit(): void {\r\n  }\r\n\r\n  close(event) {\r\n    this._bottomSheetRef.dismiss();\r\n\r\n    event.preventDefault();\r\n  }\r\n\r\n  removeSection(event) {\r\n    this._bottomSheetRef.dismiss(<BottomSheetSectionReturnAction>{ action: 'remove' });\r\n\r\n    event.preventDefault();\r\n  }\r\n  \r\n  moveUpSection(event) {\r\n    this.cmsService.moveSection(this.section.id, 'move-up');\r\n\r\n    event.preventDefault();\r\n  }\r\n\r\n  moveDownSection(event) {\r\n    this.cmsService.moveSection(this.section.id, 'move-down');\r\n\r\n    event.preventDefault();\r\n  }\r\n\r\n  duplicateSection(event) {\r\n    this._bottomSheetRef.dismiss(<BottomSheetSectionReturnAction>{ action: 'duplicate' });\r\n\r\n    event.preventDefault();\r\n  }\r\n\r\n  selectColor(event) {\r\n    this._bottomSheetRef.dismiss(<BottomSheetSectionReturnAction>{ action: 'backgroundColor', value: this.color });\r\n  }\r\n\r\n  onColorChange(color: any) {\r\n    this.color = color.hexa\r\n\r\n    this.cmsService.changeBackgroundColorSection(this.section.id, color.hexa)\r\n  }\r\n}\r\n","<div class=\"bottom-sheet-header\">\r\n    <button class=\"actions-header-modal\" mat-icon-button aria-label=\"Fermer la fenêtre\" (click)=\"close($event)\">\r\n        <mat-icon>keyboard_arrow_down</mat-icon>\r\n    </button>\r\n    <div class=\"header-part-right\">\r\n        <div class=\"description-file\">Section</div>\r\n    </div>\r\n</div>\r\n<mat-nav-list class=\"bottom-sheet-list\">\r\n    <a mat-list-item (click)=\"selectColor($event)\">\r\n        <mat-icon mat-list-icon>format_color_fill</mat-icon>\r\n        <div class=\"circle-color\" [cocoring-colorpicker]=\"color\" (onColorChange)=\"onColorChange($event)\"></div>\r\n        <span mat-line>Changer la couleur de fond</span>\r\n    </a>\r\n    \r\n    <a href=\"#\" mat-list-item (click)=\"moveUpSection($event)\">\r\n        <mat-icon mat-list-icon>keyboard_arrow_up</mat-icon>\r\n        <span mat-line>Déplacer vers le haut</span>\r\n    </a>\r\n    \r\n    <a href=\"#\" mat-list-item (click)=\"moveDownSection($event)\">\r\n        <mat-icon mat-list-icon>keyboard_arrow_down</mat-icon>\r\n        <span mat-line>Déplacer vers le bas</span>\r\n    </a>\r\n\r\n    <a href=\"#\" mat-list-item (click)=\"duplicateSection($event)\">\r\n        <mat-icon mat-list-icon>content_copy</mat-icon>\r\n        <span mat-line>Dupliquer</span>\r\n    </a>\r\n\r\n    <a href=\"#\" target=\"_blank\" mat-list-item (click)=\"removeSection($event)\">\r\n        <mat-icon mat-list-icon>delete_outline</mat-icon>\r\n        <span mat-line>Supprimer</span>\r\n    </a>\r\n\r\n</mat-nav-list>\r\n","import { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatBottomSheetModule } from '@angular/material/bottom-sheet';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatSidenavModule } from '@angular/material/sidenav';\r\nimport { CocoringColorpickerModule, CocoringVariableHtmlModule, CocoringWysiwygModule } from 'cocori-ng/src/feature-form';\r\n\r\nimport { SharedCMSModule } from '../shared-cms.module';\r\nimport { CocoringCmsBlocksCatalogComponent } from './cocoring-cms-blocks-catalog/cocoring-cms-blocks-catalog.component';\r\nimport { CocoringCmsImageUploadComponent } from './cocoring-cms-image-upload/cocoring-cms-image-upload.component';\r\nimport { CocoringCmsSectionActionsComponent } from './cocoring-cms-section-actions/cocoring-cms-section-actions.component';\r\nimport { CocoringCmsSectionComponent } from './cocoring-cms-section/cocoring-cms-section.component';\r\nimport { CocoringCmsComponent } from './cocoring-cms/cocoring-cms.component';\r\nimport { CocoringPreviewOptionsComponent } from './cocoring-preview-options/cocoring-preview-options.component';\r\nimport { CocoringToolbarCmsComponent } from './cocoring-toolbar-cms/cocoring-toolbar-cms.component';\r\n\r\n@NgModule({\r\n    declarations: [\r\n        CocoringCmsComponent,\r\n        CocoringCmsBlocksCatalogComponent,\r\n        CocoringCmsSectionComponent,\r\n        CocoringCmsSectionActionsComponent,\r\n        CocoringToolbarCmsComponent,\r\n        CocoringPreviewOptionsComponent,\r\n        CocoringCmsImageUploadComponent,\r\n    ],\r\n    imports: [\r\n        CommonModule,\r\n        FormsModule,\r\n        SharedCMSModule,\r\n        DragDropModule,\r\n        MatSidenavModule,\r\n        MatBottomSheetModule,\r\n        MatButtonToggleModule,\r\n        MatListModule,\r\n        MatButtonModule,\r\n        MatIconModule,\r\n        FlexLayoutModule,\r\n        CocoringVariableHtmlModule,\r\n        CocoringWysiwygModule,\r\n        CocoringColorpickerModule\r\n    ],\r\n    exports: [\r\n        CocoringCmsComponent,\r\n        CocoringPreviewOptionsComponent\r\n    ]\r\n})\r\nexport class CocoringCMSModule { }","import {\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  Input,\r\n  OnInit,\r\n  ViewChild,\r\n  ViewContainerRef,\r\n  ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { InjectComponentService } from 'cocori-ng/src/feature-core';\r\n\r\nimport { SectionModel } from '../../../core/model/cms.model';\r\n\r\n@Component({\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  encapsulation: ViewEncapsulation.None,\r\n  selector: 'cocoring-cms-readonly-section',\r\n  templateUrl: './cocoring-cms-readonly-section.component.html',\r\n  styleUrls: ['../../section-styles/section-styles.component.scss', './cocoring-cms-readonly-section.component.scss']\r\n})\r\nexport class CocoringCmsReadonlySectionComponent implements OnInit {\r\n  @ViewChild('ContainerRef', { static: true, read: ViewContainerRef }) containerRef: ViewContainerRef;\r\n  private section: SectionModel;\r\n\r\n  @Input()\r\n  set config(datas: SectionModel) {\r\n\r\n    this.section = datas\r\n\r\n    this.containerRef.clear()\r\n\r\n    this.addTemplateSectionComponent()\r\n  }\r\n\r\n  constructor(\r\n    private injectComponentService: InjectComponentService,\r\n  ) { }\r\n\r\n  ngOnInit(): void { }\r\n\r\n  private addTemplateSectionComponent() {\r\n    this.injectComponentService.loadAndAddComponentToContainer(this.section.componentReadonly, this.containerRef,\r\n      { section: this.section }, null)\r\n  }\r\n}\r\n","<ng-template #ContainerRef></ng-template>","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\r\n\r\nimport { SectionModel } from '../../../core/model/cms.model';\r\n\r\n@Component({\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  selector: 'cocoring-cms-readonly',\r\n  templateUrl: './cocoring-cms-readonly.component.html',\r\n  styleUrls: ['./cocoring-cms-readonly.component.scss']\r\n})\r\nexport class CocoringCmsReadonlyComponent implements OnInit {\r\n  sectionPageDatas: SectionModel[];\r\n\r\n  @Input()\r\n  set config(datas: SectionModel[]) {\r\n    if (!datas) {\r\n      throw new Error(`La config du composant uploader n'est pas correcte... config: ${datas}`);\r\n    }\r\n\r\n    this.sectionPageDatas = datas\r\n\r\n\r\n    console.log(\"sectionPageDatas>>>\", this.sectionPageDatas)\r\n  }\r\n\r\n  constructor() { }\r\n\r\n  ngOnInit(): void {\r\n  }\r\n\r\n  trackBy(index: number) {\r\n    return index;\r\n  }\r\n}\r\n","<ng-container *ngFor=\"let section of sectionPageDatas; let i = index; trackBy: trackBy\">\r\n    <cocoring-cms-readonly-section [config]=\"section\"></cocoring-cms-readonly-section>\r\n</ng-container>","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { CocoringVariableHtmlModule } from 'cocori-ng/src/feature-form';\r\n\r\nimport { SharedCMSModule } from '../shared-cms.module';\r\nimport {\r\n    CocoringCmsReadonlySectionComponent,\r\n} from './cocoring-cms-readonly-section/cocoring-cms-readonly-section.component';\r\nimport { CocoringCmsReadonlyComponent } from './cocoring-cms-readonly/cocoring-cms-readonly.component';\r\n\r\n@NgModule({\r\n    declarations: [\r\n        CocoringCmsReadonlyComponent,\r\n        CocoringCmsReadonlySectionComponent,\r\n    ],\r\n    imports: [\r\n        CommonModule,\r\n        FormsModule,\r\n        CocoringVariableHtmlModule,\r\n        SharedCMSModule,\r\n        FlexLayoutModule,\r\n        MatIconModule\r\n    ],\r\n    exports: [\r\n        CocoringCmsReadonlyComponent,\r\n    ]\r\n})\r\nexport class CocoringCmsReadonlyModule { }","import {\r\n    ChangeDetectionStrategy,\r\n    ChangeDetectorRef,\r\n    Component,\r\n    Injector,\r\n    Input,\r\n    OnDestroy,\r\n    ViewContainerRef,\r\n} from '@angular/core';\r\nimport { UntypedFormBuilder, UntypedFormControl, UntypedFormGroup } from '@angular/forms';\r\nimport { MatBottomSheet } from '@angular/material/bottom-sheet';\r\nimport {\r\n    FileModel,\r\n    FormHelperService,\r\n    InitWysiwyg,\r\n    InjectComponentService,\r\n    WysiwygConfigSection,\r\n} from 'cocori-ng/src/feature-core';\r\nimport { CocoringWysiwygComponent } from 'cocori-ng/src/feature-form';\r\nimport { debounceTime, filter, takeUntil, tap } from 'rxjs/operators';\r\n\r\nimport {\r\n    ApisConfigCmsModel,\r\n    BottomSheetSectionReturnAction,\r\n    EditorValues,\r\n    SectionModel,\r\n} from '../../../core/model/cms.model';\r\nimport { CmsService } from '../../../core/service/cms.service';\r\nimport { ExtendPreviewActionsComponent } from '../../extend-preview-actions.component';\r\nimport { CocoringCmsImageUploadComponent } from '../cocoring-cms-image-upload/cocoring-cms-image-upload.component';\r\nimport { CocoringCmsSectionActionsComponent } from '../cocoring-cms-section-actions/cocoring-cms-section-actions.component';\r\n\r\n@Component({\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    selector: 'extend-section-tpl',\r\n    template: '',\r\n    host: { 'class': 'input-form' },\r\n})\r\n\r\nexport abstract class ExtendSectionTplComponent extends ExtendPreviewActionsComponent implements OnDestroy {\r\n    @Input() section: SectionModel\r\n    @Input() apisConfig: ApisConfigCmsModel\r\n\r\n    private fb: UntypedFormBuilder;\r\n    private _bottomSheet: MatBottomSheet;\r\n    public cdr: any;\r\n    public cmsService: CmsService;\r\n\r\n    formulaire: UntypedFormGroup\r\n    nbEditorView: number\r\n    nbBackgroundImage: number;\r\n\r\n    nameControl: string = 'editor'\r\n    backgroundImageControl: string = 'backgroundImage'\r\n    backgroundImageUpload: FileModel\r\n    uploadProgress: number;\r\n    isUploading: boolean = false;\r\n\r\n    configsWysiwyg: WysiwygConfigSection[];\r\n    readOnly: boolean = false;\r\n    value: any;\r\n    formHelper: FormHelperService;\r\n    injectComponentService: InjectComponentService;\r\n\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n\r\n        this.injectComponentService = injector.get(InjectComponentService);\r\n        this.fb = injector.get(UntypedFormBuilder);\r\n        this._bottomSheet = injector.get(MatBottomSheet);\r\n        this.cdr = injector.get(ChangeDetectorRef);\r\n        this.cmsService = injector.get(CmsService);\r\n        this.formHelper = injector.get(FormHelperService);\r\n    }\r\n\r\n    init(nbEditorView: number, nbBackgroundImage: number = 0) {\r\n        this.nbEditorView = nbEditorView\r\n        this.nbBackgroundImage = nbBackgroundImage\r\n\r\n        this.buildForm();\r\n\r\n        this.catalogBlocksOpenedEvent()\r\n\r\n        this.onBackgroundColorEvent()\r\n    }\r\n\r\n    private buildForm() {\r\n        this.formulaire = this.fb.group({});\r\n        this.configsWysiwyg = []\r\n\r\n        for (let i = 1; i <= this.nbEditorView; i++) {\r\n            const nameControl: string = `${this.nameControl}${i}`\r\n\r\n            this.formulaire.addControl(nameControl, new UntypedFormControl(this.initSectionValue(nameControl)))\r\n\r\n            this.configsWysiwyg[nameControl] = this.configComponent(nameControl)\r\n        }\r\n\r\n        for (let i = 1; i <= this.nbBackgroundImage; i++) {\r\n            const nameControl: string = `${this.backgroundImageControl}${i}`\r\n\r\n            this.formulaire.addControl(nameControl, new UntypedFormControl(this.initSectionValue(nameControl)))\r\n        }\r\n\r\n        this.saveSectionValues()\r\n\r\n        this.onSectionValuesChanged()\r\n    }\r\n\r\n    onBackgroundFileUploadedCallback(nameControl: string, apiFileUploaded: string,) {\r\n        this.formulaire.get(nameControl).setValue(apiFileUploaded)\r\n    }\r\n\r\n    removeBackgroundFileCallback(nameControl: string) {\r\n        this.formulaire.get(nameControl).reset()\r\n\r\n        this.saveSectionValues()\r\n\r\n        this.cdr.detectChanges()\r\n    }\r\n\r\n    /** ex valeur du formulaire : {editor1: \"<h1>coucou</h1>\", editor2: \"<h1>hello</h1>\"} */\r\n    private onSectionValuesChanged() {\r\n        this.formulaire.valueChanges.pipe(\r\n            takeUntil(this.destroy$),\r\n            debounceTime(500),\r\n            tap((values: any) => {\r\n                this.section.values = values\r\n\r\n                this.cdr.detectChanges()\r\n            })\r\n        ).subscribe()\r\n    }\r\n\r\n    private saveSectionValues() {\r\n        this.section.values = this.formulaire.value\r\n    }\r\n\r\n    private initSectionValue(nameControl: string) {\r\n        const blockContent: EditorValues = this.section.values\r\n\r\n        const blockValue: string = blockContent?.hasOwnProperty(nameControl) ? blockContent[nameControl] : null\r\n        const sectionValue: string = this.section.values?.hasOwnProperty(nameControl) ? this.section.values[nameControl] : null\r\n\r\n        return sectionValue || blockValue\r\n    }\r\n\r\n    private configComponent(nameControl: string) {\r\n        let config = {\r\n            apiFile: this.apisConfig.apiFile,\r\n            apiFileDownload: this.apisConfig.apiFileDownload,\r\n            apiKey: this.apisConfig.apiKey,\r\n            params: <InitWysiwyg>{\r\n                inline: true\r\n            },\r\n            nameLabel: '',\r\n            formGroup: this.formulaire,\r\n            nameControl: nameControl,\r\n            validators: []\r\n        }\r\n\r\n        return config\r\n    }\r\n\r\n    private catalogBlocksOpenedEvent() {\r\n        this.cmsService.catalogBlocksOpened$.pipe(\r\n            takeUntil(this.destroy$),\r\n            tap((isOpened: boolean) => {\r\n                this.readOnly = isOpened\r\n\r\n                if (isOpened && this.formHelper.countControlsForm(this.formulaire) > 0) {\r\n                    this.value = this.formulaire.value\r\n                }\r\n            }),\r\n            tap(_ => this.cdr.detectChanges())\r\n        ).subscribe()\r\n    }\r\n\r\n    /** @param : tableau des références où seront ajouter le composant Wysiwyg */\r\n    public addWysiwygComponentToViewEvent(refs: ViewContainerRef[]) {\r\n        for (let i = 1; i <= refs.length; i++) {\r\n            const nameControl: string = `${this.nameControl}${i}`\r\n\r\n            this.injectComponentService.loadAndAddComponentToContainer(CocoringWysiwygComponent, refs[i - 1],\r\n                { config: this.configsWysiwyg[nameControl] }, null)\r\n        }\r\n    }\r\n\r\n    public addImageUploadComponentToViewEvent(refs: ViewContainerRef[]) {\r\n        for (let i = 1; i <= refs.length; i++) {\r\n            const nameControl: string = `${this.backgroundImageControl}${i}`\r\n\r\n            this.injectComponentService.loadAndAddComponentToContainer(CocoringCmsImageUploadComponent, refs[i - 1],\r\n                { section: this.section, apisConfig: this.apisConfig, nameBackgroundImage: nameControl },\r\n                {\r\n                    apiFileUploaded: (apiFile: string) => this.onBackgroundFileUploadedCallback(nameControl, apiFile),\r\n                    removeBackgroundImage: () => this.removeBackgroundFileCallback(nameControl)\r\n                })\r\n        }\r\n    }\r\n\r\n    private onBackgroundColorEvent() {\r\n        this.cmsService.backgroundColor$.pipe(\r\n            takeUntil(this.destroy$),\r\n            filter((idSection: string) => idSection === this.section.id),\r\n            tap(_ => this.cdr.detectChanges()),\r\n        ).subscribe()\r\n    }\r\n\r\n    openBottomSheet() {\r\n        if (!this.readOnly) return;\r\n\r\n        const bottomSheet = this._bottomSheet.open(CocoringCmsSectionActionsComponent, {\r\n            panelClass: 'bottom-sheet-container',\r\n            data: <any>{\r\n                section: this.section,\r\n            }\r\n        });\r\n\r\n        bottomSheet.afterDismissed().pipe(\r\n            takeUntil(this.destroy$)\r\n        ).subscribe((datas: BottomSheetSectionReturnAction) => {\r\n            if (!datas) return;\r\n\r\n            switch (datas.action) {\r\n                case 'remove':\r\n                    this.cmsService.removeSection(this.section.id)\r\n\r\n                    break;\r\n\r\n                case 'duplicate':\r\n                    this.cmsService.duplicateSection(this.section)\r\n\r\n                    break;\r\n\r\n                case 'backgroundColor':\r\n                    this.saveSectionBackgroundColor(datas.value)\r\n\r\n                    break;\r\n\r\n                default:\r\n                    break;\r\n            }\r\n        })\r\n    }\r\n\r\n    private saveSectionBackgroundColor(color: string) {\r\n        this.section.backgroundColor = color\r\n    }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Injector, Input } from '@angular/core';\r\n\r\nimport { SectionModel } from '../../../core/model/cms.model';\r\nimport { ExtendPreviewActionsComponent } from '../../extend-preview-actions.component';\r\n\r\n@Component({\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    selector: 'extend-section-ro-tpl',\r\n    template: '',\r\n    host: { 'class': 'input-form' },\r\n})\r\n\r\nexport abstract class ExtendSectionReadonlyTplComponent extends ExtendPreviewActionsComponent {\r\n    @Input() section: SectionModel\r\n\r\n    public cdr: any;\r\n\r\n    nbEditorView: number\r\n    readOnly: boolean = true;\r\n    value: any;\r\n    uploadProgress: number;\r\n    isUploading: boolean;\r\n\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n    }\r\n\r\n    init(nbEditorView: number) {\r\n        this.nbEditorView = nbEditorView\r\n        this.getValuesEditor();\r\n    }\r\n\r\n    private getValuesEditor() {\r\n        this.value = this.section.values\r\n    }\r\n\r\n    openBottomSheet() { }\r\n\r\n    removeBackground(event, nameControl) { }\r\n}\r\n","\r\nexport const DefaultConfigComponent = {\r\n    form: {\r\n        keyId: \"formId\",\r\n        appearance: 'outline',\r\n        styleCompact: false\r\n    },\r\n    button: {\r\n        text: \"Valider\"\r\n    },\r\n    date: {\r\n        dateTimeSeparator: ' à '\r\n    },\r\n    upload: {\r\n        chunkSize: 2 * 1048576\r\n    },\r\n    wysiwyg: {\r\n        plugins: [\r\n            'quickbars',\r\n            'advlist',\r\n            'autolink',\r\n            'lists',\r\n            'link',\r\n            'image',\r\n            'media',\r\n            'imagetools',\r\n            'emoticons',\r\n            'preview',\r\n            'searchreplace',\r\n            'media',\r\n            'table',\r\n            'paste',\r\n            'code',\r\n            'help',\r\n        ],\r\n        toolbar: 'undo redo | bullist | imageoptions | quicklink | outdent | indent | emoticons',\r\n        quickbarsInsert: 'bullist numlist | imageoptions media | quicklink | quicktable | emoticons'\r\n    }\r\n}\r\n","export const ConfigEvents = {\r\n    FORM_SUBMITTED: \"FORM_SUBMITTED\",\r\n    CMS_RESPONSIVE_ORIENTATION_CHANGED: \"CMS_RESPONSIVE_ORIENTATION_CHANGED\",\r\n};\r\n","import { ChangeDetectorRef, Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\r\nimport { ButtonComponentInputs, ButtonIconPositon, LoadingService, TypeButtonEnum } from 'cocori-ng/src/feature-core';\r\nimport { Subject, takeUntil } from 'rxjs';\r\n\r\n@Component({\r\n    selector: 'cocoring-button',\r\n    templateUrl: 'cocoring-button.component.html',\r\n    styleUrls: ['./cocoring-button.component.scss']\r\n})\r\nexport class CocoringButtonComponent implements OnInit, OnDestroy {\r\n    @Output() callback: EventEmitter<string> = new EventEmitter<string>();\r\n    @Output() click: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n    @Input() disabled: boolean = false;\r\n    @Input() text: string;\r\n    @Input() type: string = TypeButtonEnum.SUBMIT;\r\n    @Input() class: string = 'primary';\r\n\r\n    onClickSubmit: Function;\r\n    isLoading: boolean = false;\r\n    icon: string;\r\n    iconPosition: ButtonIconPositon;\r\n\r\n    private readonly destroy$ = new Subject();\r\n\r\n    constructor(\r\n        private loadingService: LoadingService,\r\n        private cdr: ChangeDetectorRef,) {\r\n    }\r\n\r\n    @Input()\r\n    set config(config: ButtonComponentInputs) {\r\n        if (!config) return;\r\n\r\n        this.text = config.text;\r\n        this.icon = config.icon;\r\n        this.class = config.className || this.class;\r\n        this.iconPosition = config.iconPosition;\r\n        this.type = config.type;\r\n        this.onClickSubmit = config.onClickSubmit;\r\n    }\r\n\r\n    ngOnInit() {\r\n        this.loadingService.subject.pipe(\r\n            takeUntil(this.destroy$)\r\n        ).subscribe((isLoading: boolean) => {\r\n            this.isLoading = isLoading\r\n            this.cdr.detectChanges()\r\n        })\r\n\r\n        this.callback.emit(this.text);\r\n    }\r\n\r\n    ngOnDestroy(): void {\r\n        this.destroy$.next(undefined);\r\n        this.destroy$.complete();\r\n    }\r\n\r\n    onClick() {\r\n        if (this.type === TypeButtonEnum.SUBMIT && this.onClickSubmit) {\r\n            this.onClickSubmit()\r\n        } else if (this.type === TypeButtonEnum.BUTTON && this.onClickSubmit) {\r\n            this.click.emit()\r\n        }\r\n    }\r\n}\r\n","<button class=\"btn\" mat-raised-button [ngClass]=\"class\" [class.spinner]=\"isLoading\" type=\"{{type}}\"\r\n    [disabled]=\"isLoading || disabled\" (click)=\"onClick()\">\r\n    <mat-icon *ngIf=\"icon && iconPosition === 'start' \">{{icon}}</mat-icon>\r\n    {{text}}\r\n    <ng-content></ng-content>\r\n    <mat-icon *ngIf=\"icon && iconPosition === 'end'\">{{icon}}</mat-icon>\r\n</button>","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { ButtonComponentInputs, TypeButtonEnum } from 'cocori-ng/src/feature-core';\r\n\r\n@Component({\r\n    selector: 'cocoring-button-link',\r\n    templateUrl: 'cocoring-button-link.component.html',\r\n    styleUrls: ['./cocoring-button-link.component.scss']\r\n})\r\nexport class CocoringButtonLinkComponent implements OnInit, OnDestroy {\r\n    public btnConfig: ButtonComponentInputs\r\n    public url: string = '/bo/home'\r\n    public openNewTab: boolean = false\r\n\r\n    /** Mettre les bons Inputs de base comme ceux utilisé dans le projet atlantX */\r\n\r\n    constructor() { }\r\n\r\n    @Input()\r\n    set config(config: ButtonComponentInputs) {\r\n        if (!config) return;\r\n\r\n        config.type = TypeButtonEnum.BUTTON;\r\n\r\n        this.url = config.url\r\n        this.openNewTab = config.openNewTab || false\r\n        this.btnConfig = config\r\n    }\r\n\r\n    ngOnInit() { }\r\n\r\n    ngOnDestroy(): void { }\r\n}\r\n","<a [routerLink]=\"url ? url : null\" target=\"{{openNewTab ? '_blank' : '_self'}}\">\r\n    <cocoring-button [config]=\"btnConfig\"></cocoring-button>\r\n</a>","import { Component, EventEmitter, Injector, Input, OnDestroy, Output } from '@angular/core';\r\nimport { UntypedFormArray, UntypedFormControl, UntypedFormGroup, ValidatorFn } from '@angular/forms';\r\nimport {\r\n    ConfigInputComponent,\r\n    DataSourceInput,\r\n    DatasourceService,\r\n    HttpService,\r\n    InputFieldAppearance,\r\n    OutputCallback,\r\n    ValidatorsService,\r\n} from 'cocori-ng/src/feature-core';\r\nimport { Observable, Subject, takeUntil } from 'rxjs';\r\n\r\n@Component({\r\n    selector: 'extend-inputs',\r\n    template: '',\r\n    host: { 'class': 'input-form' }\r\n})\r\n\r\nexport abstract class ExtendInputsComponent implements OnDestroy {\r\n    @Input() formGroup: UntypedFormGroup\r\n    @Input() nameControl: string\r\n    @Input() nameLabel: string\r\n    @Input() color: string = 'primary' /** à factoriser dans le helper pour la construction de form */\r\n\r\n    /** méthode appelée lorsque que le contrôle a été ajouté au formulaire avec en paramètre le nom du contrôle créé */\r\n    @Output() callback: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n    public readonly destroy$ = new Subject();\r\n\r\n    dataSource$: Observable<any>;\r\n    dataSourceNameProperty: string\r\n    inRelationWith: string;\r\n    validators: ValidatorFn[];\r\n    appearance: InputFieldAppearance;\r\n    httpService: HttpService;\r\n    datasourceService: DatasourceService;\r\n    styleCompact: boolean;\r\n    maxlength: number;\r\n    icon: string;\r\n    callbackComponent: OutputCallback;\r\n\r\n    constructor(injector: Injector) {\r\n        this.httpService = injector.get(HttpService);\r\n        this.datasourceService = injector.get(DatasourceService);\r\n    }\r\n\r\n    ngOnDestroy() {\r\n        this.destroy$.next(undefined);\r\n        this.destroy$.complete();\r\n    }\r\n\r\n    configInput(config: ConfigInputComponent) {\r\n        this.nameLabel = config.nameLabel;\r\n        this.nameControl = config.nameControl;\r\n        this.formGroup = config.formGroup;\r\n        this.styleCompact = config.styleCompact;\r\n        this.maxlength = config.maxlength;\r\n        this.icon = config.icon;\r\n        this.appearance = config.appearance;\r\n        this.dataSource$ = this.loadDataSource(config.dataSource)\r\n        this.inRelationWith = config.inRelationWith\r\n        this.validators = config.validators\r\n        this.callbackComponent = config.callbackComponent\r\n\r\n        this.nameLabel += this.isControlRequired() ? ' *' : ''\r\n    }\r\n\r\n    emitEvent() {\r\n        if (!this.formGroup || !this.nameControl) {\r\n            throw new Error(`Données formulaire manquantes, formGroup : ${this.formGroup} - nameControl : ${this.nameControl}`);\r\n        }\r\n\r\n        this.inRelatioNWith()\r\n\r\n        if (this.callbackComponent) {\r\n            this.callbackComponent.callback(this.nameControl)\r\n        } else {\r\n            this.callback.emit(this.nameControl);\r\n        }\r\n    }\r\n\r\n    clearValue(event?: any) {\r\n        this.formGroup.get(this.nameControl).reset()\r\n        this.formGroup.get(this.nameControl).markAsUntouched()\r\n\r\n        if(event) event.stopPropagation();\r\n    }\r\n\r\n    addControlForm() {\r\n        if (this.controlAlreadyAdded()) return;\r\n\r\n        this.formGroup.addControl(this.nameControl, new UntypedFormControl(null, this.validators))\r\n\r\n        this.emitEvent()\r\n    }\r\n\r\n    addArrayForm() {\r\n        if (this.controlAlreadyAdded()) return;\r\n\r\n        this.formGroup.addControl(this.nameControl, new UntypedFormArray([], this.validators))\r\n\r\n        this.emitEvent()\r\n    }\r\n\r\n    private controlAlreadyAdded(): boolean {\r\n        return this.formGroup.contains(this.nameControl)\r\n    }\r\n\r\n    loadDataSource(configDataSource: DataSourceInput): Observable<any> {\r\n        if (!configDataSource) return;\r\n\r\n        this.dataSourceNameProperty = configDataSource.dataSourceNameProperty || 'name'\r\n\r\n        return this.datasourceService.loadDataSource(configDataSource)\r\n    }\r\n\r\n    private inRelatioNWith() {\r\n        if (this.inRelationWith && typeof this.inRelationWith !== 'undefined') {\r\n\r\n            console.log(\"inRelationWith>>\", this.inRelationWith, this.formGroup)\r\n\r\n            this.formGroup.get(this.inRelationWith).valueChanges.pipe(\r\n                takeUntil(this.destroy$),\r\n            ).subscribe((parentValue) => {\r\n                console.log(\"Parent Value \", parentValue);\r\n            })\r\n        }\r\n    }\r\n\r\n    private isControlRequired(): boolean {\r\n        if (!this.validators) return;\r\n\r\n        const d = this.validators.find((validatorFn: Function) => validatorFn.name === ValidatorsService.require.name)\r\n\r\n        return typeof d === 'undefined' ? false : true\r\n    }\r\n}\r\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { UntypedFormGroup, ValidationErrors } from '@angular/forms';\r\nimport { BroadcastEventService, ValidatorsService, ValidtionError } from 'cocori-ng/src/feature-core';\r\nimport { merge, Observable } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\n\r\nimport { DefaultConfigComponent } from '../../../../core/config/config.components';\r\nimport { ConfigEvents } from '../../../../core/config/config.events';\r\n\r\n@Component({\r\n    selector: '[error-handler]',\r\n    template: `\r\n        <ng-container *ngIf=\"(errorMessage$ | async) as errorMessage\">\r\n            <mat-error>{{errorMessage}}</mat-error>\r\n        </ng-container>\r\n    `,\r\n    styleUrls: ['./cocoring-input-error.component.scss']\r\n})\r\n\r\nexport class CocoringInputErrorComponent implements OnInit, OnDestroy {\r\n    @Input() form: UntypedFormGroup;\r\n    @Input() controlName: string;\r\n\r\n    private formId: string;\r\n\r\n    errorMessage$: any;\r\n\r\n    constructor(\r\n        private broadcastEventService: BroadcastEventService,\r\n        private validatorsService: ValidatorsService) { }\r\n\r\n    ngOnInit() {\r\n\r\n        if (!this.form.get(DefaultConfigComponent.form.keyId)) return;\r\n\r\n        this.formId = this.form.get(DefaultConfigComponent.form.keyId).value as string\r\n\r\n        const onSubmitObs: Observable<unknown> = this.broadcastEventService.listen([ConfigEvents.FORM_SUBMITTED, this.formId])\r\n        const valueChangesObs: Observable<unknown> = this.form.get(this.controlName).valueChanges\r\n\r\n        this.mergeObservables(onSubmitObs, valueChangesObs)\r\n    }\r\n\r\n    ngOnDestroy() { }\r\n\r\n    private mergeObservables(onSubmitObs: Observable<unknown>, valueChangesObs: Observable<unknown>) {\r\n        this.errorMessage$ = merge(\r\n            onSubmitObs,\r\n            valueChangesObs\r\n        )\r\n            .pipe(\r\n                filter((value: any) => this.form.get(this.controlName).errors !== null),\r\n                map((value: any) => this.form.get(this.controlName).errors),\r\n                map((formError: ValidationErrors) => {\r\n                    const errorKey: string = Object.keys(formError)[0]\r\n\r\n                    /** pour déclencher l'erreur angular material */\r\n                    this.form.get(this.controlName).markAsTouched()\r\n\r\n                    return this.validatorsService.getValidationErrorMessage(<ValidtionError>{ key: errorKey, value: formError[errorKey] })\r\n                })\r\n            )\r\n    }\r\n}\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Injector, Input } from '@angular/core';\r\nimport { UntypedFormBuilder, UntypedFormControl, UntypedFormGroup } from '@angular/forms';\r\nimport { ConfigInputComponent } from 'cocori-ng/src/feature-core';\r\nimport { takeUntil } from 'rxjs';\r\n\r\nimport { ExtendInputsComponent } from '../extend-inputs/extend-inputs.component';\r\n\r\n@Component({\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    selector: 'cocoring-checkbox-indeterminate',\r\n    templateUrl: 'checkbox-indeterminate.component.html',\r\n    styleUrls: ['./checkbox-indeterminate.component.scss'],\r\n})\r\n\r\nexport class CocoringCheckboxIndeterminateComponent extends ExtendInputsComponent {\r\n    @Input()\r\n    set config(config: ConfigInputComponent) {\r\n        this.configInput(config)\r\n\r\n        this.addControlForm();\r\n\r\n        this.dataSource$.pipe(\r\n            takeUntil(this.destroy$),\r\n        ).subscribe((datasource: any[]) => {\r\n            this.addNestedForm(datasource)\r\n        })\r\n    }\r\n\r\n    nestedNameForm: string = 'nestedValues'\r\n    someComplete: boolean = false;\r\n\r\n    constructor(\r\n        private fb: UntypedFormBuilder,\r\n        private cdr: ChangeDetectorRef,\r\n        injector: Injector) {\r\n        super(injector);\r\n    }\r\n\r\n    private addNestedForm(datasource: any[]) {\r\n\r\n        if (!datasource.length) return;\r\n\r\n        const nestedFrom = this.fb.group({});\r\n\r\n        datasource.forEach((datas: any) => {\r\n            nestedFrom.addControl(datas.id, new UntypedFormControl(false))\r\n        })\r\n\r\n        this.formGroup.addControl(this.nestedNameForm, nestedFrom)\r\n\r\n        this.formChangeEvent()\r\n\r\n        this.nestedFormChangeEvent()\r\n    }\r\n\r\n    private formChangeEvent() {\r\n        this.formGroup.get(this.nameControl).valueChanges.pipe(\r\n            takeUntil(this.destroy$),\r\n        ).subscribe((value: boolean) => {\r\n            this.setValueControls(value)\r\n        })\r\n    }\r\n\r\n    private setValueControls(value: boolean) {\r\n        Object.keys(this.nestedForm['controls']).forEach(key => {\r\n            this.nestedForm['controls'][key].setValue(value, { emitEvent: false })\r\n        });\r\n    }\r\n\r\n    private nestedFormChangeEvent() {\r\n        // const nestedFormPropertiesLength: number = this.formHelperService.countControlsForm(this.nestedForm)\r\n        const nestedFormPropertiesLength: number = 3\r\n\r\n        this.nestedForm.valueChanges.pipe(\r\n            takeUntil(this.destroy$),\r\n        ).subscribe((values) => {\r\n            const completed: any[] = Object.entries(values).filter(([key, value]) => <boolean>value === true)\r\n\r\n            if (completed.length === nestedFormPropertiesLength) {\r\n                this.formGroup.get(this.nameControl).setValue(true, { emitEvent: false })\r\n\r\n                setTimeout(() => {\r\n                    this.someComplete = false\r\n                    this.cdr.detectChanges()\r\n                });\r\n            } else if (completed.length > 0 && completed.length < nestedFormPropertiesLength) {\r\n                this.formGroup.get(this.nameControl).setValue(false, { emitEvent: false })\r\n\r\n                setTimeout(() => {\r\n                    this.someComplete = true\r\n                    this.cdr.detectChanges()\r\n                });\r\n            } else {\r\n                this.someComplete = false\r\n                this.formGroup.get(this.nameControl).setValue(false, { emitEvent: false })\r\n            }\r\n        })\r\n    }\r\n\r\n    private get nestedForm(): UntypedFormGroup {\r\n        return <UntypedFormGroup>this.formGroup.get(this.nestedNameForm)\r\n    }\r\n}\r\n","<ng-container [formGroup]=\"formGroup\">\r\n    <mat-checkbox\r\n            class=\"optionSelectAll\"\r\n            [formControlName]=\"nameControl\" \r\n            [indeterminate]=\"someComplete\"\r\n            color=\"primary\"\r\n            (click)=\"$event.stopPropagation()\">\r\n        {{nameLabel}}\r\n    </mat-checkbox>\r\n\r\n    <ng-container [formGroupName]=\"nestedNameForm\">\r\n        <mat-checkbox *ngFor=\"let item of (dataSource$ | async)\" \r\n                [formControlName]=\"item.id\"\r\n                color=\"primary\">\r\n                {{item[dataSourceNameProperty]}}\r\n        </mat-checkbox>\r\n    </ng-container>\r\n\r\n    <mat-error error-handler [form]=\"formGroup\" [controlName]=\"nameControl\"></mat-error>\r\n</ng-container>","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\n\r\n@Pipe({\r\n    name: 'variableHtml',\r\n    pure: false\r\n})\r\nexport class CocoringVariableHtmlPipe implements PipeTransform {\r\n    constructor(private sanitizer: DomSanitizer) {\r\n    }\r\n    transform(texteHtml: string): SafeHtml {\r\n        if (!texteHtml) return ''\r\n\r\n        return this.sanitizer.bypassSecurityTrustHtml(texteHtml);\r\n    }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Injector, Input, OnInit } from '@angular/core';\r\nimport { ConfigInputComponent } from 'cocori-ng/src/feature-core';\r\n\r\nimport { ExtendInputsComponent } from '../extend-inputs/extend-inputs.component';\r\n\r\n@Component({\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    selector: 'cocoring-checkbox',\r\n    templateUrl: 'cocoring-checkbox.component.html',\r\n})\r\n\r\nexport class CocoringCheckboxComponent extends ExtendInputsComponent implements OnInit {\r\n    @Input()\r\n    set config(config: ConfigInputComponent) {\r\n        this.configInput(config)\r\n\r\n        this.addControlForm();\r\n    }\r\n\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n    }\r\n\r\n    ngOnInit() { }\r\n}\r\n","<ng-container [formGroup]=\"formGroup\">\r\n    <mat-checkbox (click)=\"$event.stopPropagation()\" [formControlName]=\"nameControl\" [color]=\"color\">\r\n        <div [innerHtml]=\"nameLabel | variableHtml\"></div>\r\n    </mat-checkbox>\r\n    <mat-error error-handler [form]=\"formGroup\" [controlName]=\"nameControl\"></mat-error>\r\n</ng-container>","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n\r\n\r\n@Component({\r\n  selector: 'input-icon',\r\n  templateUrl: './input-icon.component.html',\r\n  styleUrls: ['./input-icon.component.scss']\r\n})\r\nexport class InputIconComponent implements OnInit {\r\n  @Input() icon: string\r\n  @Output() clickEvent: EventEmitter<boolean> = new EventEmitter();\r\n\r\n  constructor() { }\r\n\r\n  ngOnInit(): void {\r\n  }\r\n\r\n  emitClickEvent() {\r\n    this.clickEvent.emit(true);\r\n  }\r\n\r\n}\r\n","<button type=\"button\" tabindex=\"-1\" *ngIf=\"icon\" (click)=\"emitClickEvent()\" mat-icon-button aria-label=\"Icone dans le champ de saisi\">\r\n    <mat-icon>\r\n        {{icon}}\r\n    </mat-icon>\r\n</button>","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, Injector, Input, OnInit } from '@angular/core';\r\nimport { UntypedFormControl } from '@angular/forms';\r\nimport { MAT_DATE_LOCALE } from '@angular/material/core';\r\nimport { ConfigInputComponent, HelperService, ValidatorsService } from 'cocori-ng/src/feature-core';\r\nimport { DateTime } from 'luxon';\r\nimport { takeUntil } from 'rxjs';\r\n\r\nimport { ExtendInputsComponent } from '../extend-inputs/extend-inputs.component';\r\n\r\n@Component({\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    selector: 'cocoring-date',\r\n    templateUrl: 'cocoring-date.component.html',\r\n    styleUrls: ['./cocoring-date.component.scss'],\r\n})\r\n\r\nexport class CocoringDateComponent extends ExtendInputsComponent implements OnInit {\r\n    @Input()\r\n    set config(config: ConfigInputComponent) {\r\n\r\n        config.validators.push(ValidatorsService.dateValidator)\r\n\r\n        this.configInput(config)\r\n\r\n        this.addControlForm();\r\n\r\n        this.maskInputControlName = `m${this.nameControl}`\r\n\r\n        /** le masque de saisie ne fonctionne pas avec le composant de material datepicker */\r\n        this.addDateMaskControl()\r\n\r\n        this.valueChangeEvent()\r\n\r\n    }\r\n\r\n    // dateMask: any = { guide: false, showMask : false, mask: [/\\d/, /\\d/, '/', /\\d/, /\\d/, '/', /\\d/, /\\d/, /\\d/, /\\d/], placeholderChar: '\\u2000' };\r\n\r\n    maskInputControlName: string = null\r\n\r\n    constructor(\r\n        @Inject(MAT_DATE_LOCALE) public locale: string,\r\n        private cdr: ChangeDetectorRef,\r\n        injector: Injector) {\r\n        super(injector);\r\n    }\r\n\r\n    ngOnInit() { }\r\n\r\n    /** Value from datepicker changed event */\r\n    valueChangeEvent() {\r\n        this.formGroup.get(this.nameControl).valueChanges.pipe(\r\n            takeUntil(this.destroy$)\r\n        ).subscribe((val) => {\r\n            let d = null;\r\n\r\n            if (!val) return;\r\n\r\n            if (typeof val.getMonth === 'function' || typeof val === 'string') {\r\n                d = DateTime.fromJSDate(new Date(val)).setLocale(this.locale).toLocaleString() // sous la forme de 21/12/2021\r\n            } else if ((<Object>val).hasOwnProperty(\"isLuxonDateTime\")) {\r\n                d = DateTime.fromISO(val).setLocale(this.locale).toLocaleString() // sous la forme de 21/12/2021\r\n            }\r\n\r\n            if (d) {\r\n                this.formGroup.get(this.maskInputControlName).setValue(HelperService.replaceAll(d, '/', ''))\r\n\r\n                setTimeout(() => { // bogue dans le rendu sinon...\r\n                    this.cdr.detectChanges()\r\n                });\r\n            }\r\n        })\r\n    }\r\n\r\n    private maskInputChangeEvent() {\r\n        this.formGroup.get(this.maskInputControlName).valueChanges.pipe(\r\n            takeUntil(this.destroy$)\r\n        ).subscribe((dateInput: string) => {\r\n            this.dispatchValueInput(dateInput)\r\n        })\r\n    }\r\n\r\n    private dispatchValueInput(dateInput: string) {\r\n        if (dateInput && dateInput.length === 8) {\r\n            const day = dateInput.substring(0, 2)\r\n            const month = dateInput.substring(2, 4)\r\n            const year = dateInput.substring(4)\r\n\r\n            const dateFormated: DateTime = DateTime.fromISO(year + month + day)\r\n\r\n            if (dateFormated.isValid) {\r\n                this.formGroup.get(this.nameControl).setValue(DateTime.fromISO(year + month + day), { emitEvent: false })\r\n            } else this.clearDateMaskValue()\r\n        } else {\r\n            this.clearValue()\r\n        }\r\n    }\r\n\r\n    onBlur() {\r\n        const dateInput: string = this.formGroup.get(this.maskInputControlName).value\r\n\r\n        if (!dateInput || dateInput.length !== 8) {\r\n            this.clearDateMaskValue()\r\n        }\r\n    }\r\n\r\n    private addDateMaskControl() {\r\n        this.formGroup.addControl(this.maskInputControlName, new UntypedFormControl(null, this.validators))\r\n\r\n        this.maskInputChangeEvent()\r\n\r\n        this.emitEvent()\r\n    }\r\n\r\n    clearDateMaskValue(event?: any) {\r\n        this.formGroup.get(this.maskInputControlName).reset()\r\n        this.formGroup.get(this.maskInputControlName).markAsUntouched()\r\n\r\n        this.clearValue(event)\r\n\r\n        if (event) event.stopPropagation();\r\n    }\r\n}\r\n","<ng-container [formGroup]=\"formGroup\">\r\n    <mat-form-field [appearance]=\"appearance\" [ngClass]=\"{'mat-form-compact': styleCompact}\">\r\n        <mat-label>{{nameLabel}}</mat-label>\r\n        <!-- <input matInput [matDatepicker]=\"picker\" [formControlName]=\"nameControl\"> -->\r\n        <input [attr.data-cy]=\"nameControl\" matInput type=\"text\" mask=\"d0/M0/0000\" [leadZeroDateTime]=\"true\" [formControlName]=\"maskInputControlName\" (blur)=\"onBlur()\"/>\r\n        <input [matDatepicker]=\"picker\" [formControlName]=\"nameControl\">\r\n        <div matSuffix style=\"display:flex\">\r\n            <mat-datepicker-toggle tabindex=\"-1\" matSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n            <input-icon icon=\"close\" *ngIf=\"formGroup.get(maskInputControlName).value\" (click)=\"clearDateMaskValue($event)\"></input-icon>\r\n        </div>\r\n        <mat-datepicker #picker></mat-datepicker>\r\n        <mat-error error-handler [form]=\"formGroup\" [controlName]=\"maskInputControlName\"></mat-error>\r\n    </mat-form-field>\r\n</ng-container>","import { ChangeDetectionStrategy, Component, Injector, Input, OnInit } from '@angular/core';\r\nimport { ConfigInputComponent, ValidatorsService } from 'cocori-ng/src/feature-core';\r\n\r\nimport { ExtendInputsComponent } from '../extend-inputs/extend-inputs.component';\r\n\r\n@Component({\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    selector: 'cocoring-email',\r\n    templateUrl: 'cocoring-email.component.html',\r\n})\r\n\r\nexport class CocoringEmailComponent extends ExtendInputsComponent implements OnInit {\r\n    @Input()\r\n    set config(config: ConfigInputComponent) {\r\n\r\n        config.validators.push(ValidatorsService.emailValidator)\r\n\r\n        this.configInput(config)\r\n\r\n        this.addControlForm();\r\n    }\r\n\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n    }\r\n\r\n    ngOnInit() { }\r\n}\r\n","<ng-container [formGroup]=\"formGroup\">\r\n    <mat-form-field [appearance]=\"appearance\" [ngClass]=\"{'mat-form-compact': styleCompact}\">\r\n        <mat-label>{{nameLabel}}</mat-label>\r\n        <div matPrefix>\r\n            <input-icon [icon]=\"icon\"></input-icon>\r\n        </div>\r\n        <input [attr.data-cy]=\"nameControl\" type=\"email\" matInput [formControlName]=\"nameControl\" />\r\n        <div matSuffix style=\"display:flex\">\r\n            <input-icon icon=\"close\" *ngIf=\"formGroup.get(nameControl).value\" (click)=\"clearValue($event)\"></input-icon>\r\n        </div>\r\n        <mat-error error-handler [form]=\"formGroup\" [controlName]=\"nameControl\"></mat-error>\r\n    </mat-form-field>\r\n</ng-container>","import { ChangeDetectionStrategy, Component, Injector, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { ConfigInputComponent } from 'cocori-ng/src/feature-core';\r\nimport { filter, takeUntil } from 'rxjs/operators';\r\n\r\nimport { ExtendInputsComponent } from '../extend-inputs/extend-inputs.component';\r\n\r\n@Component({\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    selector: 'cocoring-number',\r\n    templateUrl: 'cocoring-number.component.html',\r\n})\r\n\r\nexport class CocoringNumberComponent extends ExtendInputsComponent implements OnInit, OnDestroy {\r\n    @Input()\r\n    set config(config: ConfigInputComponent) {\r\n        this.configInput(config)\r\n\r\n        this.addControlForm();\r\n    }\r\n\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n    }\r\n\r\n    ngOnInit() {\r\n        this.formGroup.get(this.nameControl).valueChanges.pipe(\r\n            takeUntil(this.destroy$),\r\n            filter(value => this.maxlength && String(value).length > this.maxlength && value > 0),\r\n        ).subscribe((value) => {\r\n            this.formGroup.get(this.nameControl).setValue(String(value).slice(0, this.maxlength), { emitEvent: false })\r\n        })\r\n    }\r\n}\r\n","<ng-container [formGroup]=\"formGroup\">\r\n    <mat-form-field [appearance]=\"appearance\" [ngClass]=\"{'mat-form-compact': styleCompact}\">\r\n        <mat-label>{{nameLabel}}</mat-label>\r\n        <div matPrefix>\r\n            <input-icon [icon]=\"icon\"></input-icon>\r\n        </div>\r\n        <input [attr.data-cy]=\"nameControl\" type=\"number\" matInput [formControlName]=\"nameControl\" [maxlength]=\"maxlength\" />\r\n        <div matSuffix style=\"display:flex\">\r\n            <input-icon icon=\"close\" *ngIf=\"formGroup.get(nameControl).value\" (click)=\"clearValue($event)\"></input-icon>\r\n        </div>\r\n        <mat-error error-handler [form]=\"formGroup\" [controlName]=\"nameControl\"></mat-error>\r\n    </mat-form-field>\r\n</ng-container>","import { ChangeDetectionStrategy, Component, Injector, Input, OnInit } from '@angular/core';\r\nimport { ConfigInputComponent } from 'cocori-ng/src/feature-core';\r\n\r\nimport { ExtendInputsComponent } from '../extend-inputs/extend-inputs.component';\r\n\r\n@Component({\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    selector: 'cocoring-password',\r\n    templateUrl: 'cocoring-password.component.html',\r\n})\r\n\r\nexport class CocoringPasswordComponent extends ExtendInputsComponent implements OnInit {\r\n\r\n    type: string = \"password\"\r\n    revealPasswordStatus: boolean = false;\r\n\r\n    @Input()\r\n    set config(config: ConfigInputComponent) {\r\n        this.configInput(config)\r\n\r\n        this.addControlForm();\r\n    }\r\n\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n    }\r\n\r\n    ngOnInit() { }\r\n\r\n    toggleRevealPassword() {\r\n        this.revealPasswordStatus = !this.revealPasswordStatus;\r\n\r\n        this.type = this.revealPasswordStatus ? 'text' : 'password'\r\n    }    \r\n}\r\n","<ng-container [formGroup]=\"formGroup\">\r\n    <mat-form-field [appearance]=\"appearance\" [ngClass]=\"{'mat-form-compact': styleCompact}\">\r\n        <mat-label>{{nameLabel}}</mat-label>\r\n        \r\n        <div matPrefix>\r\n            <input-icon [icon]=\"icon\"></input-icon>\r\n        </div>\r\n\r\n        <input [attr.data-cy]=\"nameControl\" matInput [type]=\"type\" [formControlName]=\"nameControl\" />\r\n\r\n        <div matSuffix style=\"display:flex\">\r\n            <button type=\"button\" tabindex=\"-1\" class=\"suffix-icon\" (click)=\"toggleRevealPassword()\" mat-icon-button\r\n                aria-label=\"Révéler / cacher le mot de passe\">\r\n                <mat-icon>\r\n                    <ng-container *ngIf=\"!revealPasswordStatus\">visibility</ng-container>\r\n                    <ng-container *ngIf=\"revealPasswordStatus\">visibility_off</ng-container>\r\n                </mat-icon>\r\n            </button>\r\n\r\n            <input-icon icon=\"close\" *ngIf=\"formGroup.get(nameControl).value\" (click)=\"clearValue($event)\">\r\n            </input-icon>\r\n        </div>\r\n\r\n        <mat-error error-handler [form]=\"formGroup\" [controlName]=\"nameControl\"></mat-error>\r\n    </mat-form-field>\r\n</ng-container>","import { ChangeDetectionStrategy, Component, Injector, Input, OnInit } from '@angular/core';\r\nimport { ConfigInputComponent } from 'cocori-ng/src/feature-core';\r\n\r\nimport { ExtendInputsComponent } from '../extend-inputs/extend-inputs.component';\r\n\r\n@Component({\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    selector: 'cocoring-select',\r\n    templateUrl: 'cocoring-select.component.html',\r\n    styleUrls: ['./cocoring-select.component.scss']\r\n})\r\n\r\nexport class CocoringSelectComponent extends ExtendInputsComponent implements OnInit {\r\n    @Input()\r\n    set config(config: ConfigInputComponent) {\r\n        this.configInput(config)\r\n\r\n        this.addControlForm()\r\n    }\r\n\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n    }\r\n\r\n    ngOnInit() { }\r\n}\r\n","<ng-container [formGroup]=\"formGroup\">\r\n    <mat-form-field [appearance]=\"appearance\" [ngClass]=\"{'mat-form-compact': styleCompact}\">\r\n        <div matPrefix>\r\n            <input-icon [icon]=\"icon\"></input-icon>\r\n        </div>\r\n        <mat-label>{{nameLabel}}</mat-label>\r\n        <mat-select [attr.data-cy]=\"nameControl\" [formControlName]=\"nameControl\">\r\n            <mat-option *ngFor=\"let item of (dataSource$ | async)\" [value]=\"item.id\">\r\n                {{item[dataSourceNameProperty]}}\r\n            </mat-option>\r\n        </mat-select>\r\n        <div matSuffix style=\"display:flex\">\r\n            <input-icon icon=\"close\" *ngIf=\"formGroup.get(nameControl).value\" (click)=\"clearValue($event)\"></input-icon>\r\n        </div>\r\n        <mat-error error-handler [form]=\"formGroup\" [controlName]=\"nameControl\"></mat-error>\r\n    </mat-form-field>\r\n</ng-container>","import { ChangeDetectionStrategy, Component, Injector, Input, OnInit } from '@angular/core';\r\nimport { ConfigInputComponent } from 'cocori-ng/src/feature-core';\r\n\r\nimport { ExtendInputsComponent } from '../extend-inputs/extend-inputs.component';\r\n\r\n@Component({\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    selector: 'cocoring-slide-toggle',\r\n    templateUrl: 'cocoring-slide-toggle.component.html',\r\n    styleUrls: ['./cocoring-slide-toggle.component.scss']\r\n})\r\n\r\nexport class CocoringSlideToggleComponent extends ExtendInputsComponent implements OnInit {\r\n    @Input()\r\n    set config(config: ConfigInputComponent) {\r\n        this.configInput(config)\r\n\r\n        this.addControlForm();\r\n    }\r\n\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n    }\r\n\r\n    ngOnInit() { }\r\n}\r\n","<ng-container [formGroup]=\"formGroup\">\r\n    <div class=\"slide-toggle-frm\">\r\n        <mat-label>{{nameLabel}}</mat-label>\r\n        <mat-slide-toggle [attr.data-cy]=\"nameControl\" [formControlName]=\"nameControl\"></mat-slide-toggle>\r\n    </div>\r\n    <mat-error error-handler [form]=\"formGroup\" [controlName]=\"nameControl\"></mat-error>\r\n</ng-container>","import { ChangeDetectionStrategy, Component, Injector, Input, OnInit } from '@angular/core';\r\nimport { ConfigInputComponent } from 'cocori-ng/src/feature-core';\r\n\r\nimport { ExtendInputsComponent } from '../extend-inputs/extend-inputs.component';\r\n\r\n@Component({\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    selector: 'cocoring-text',\r\n    templateUrl: 'cocoring-text.component.html',\r\n})\r\n\r\nexport class CocoringTextComponent extends ExtendInputsComponent implements OnInit {\r\n    @Input()\r\n    set config(config: ConfigInputComponent) {\r\n        this.configInput(config)\r\n\r\n        this.addControlForm();\r\n    }\r\n\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n    }\r\n\r\n    ngOnInit() { }\r\n}\r\n","<!-- utilier ngTemplateOutlet ex: https://blog.bitsrc.io/component-reusability-techniques-with-angular-727a6c603ad2 -->\r\n\r\n<!-- <input-container-ng [form]=\"formGroup\" [controlName]=\"nameControl\">\r\n    <ng-container [formGroup]=\"formGroup\">\r\n        <mat-form-field>\r\n            <mat-label>{{nameLabel}}</mat-label>\r\n            <input type=\"text\" matInput [formControlName]=\"nameControl\" />\r\n        </mat-form-field>\r\n    </ng-container>\r\n</input-container-ng> -->\r\n\r\n<!-- <input-container-ng [templateRef]=\"nestedComponentRef\" [form]=\"formGroup\" [controlName]=\"nameControl\">\r\n</input-container-ng>\r\n\r\n<ng-template #nestedComponentRef>\r\n    <ng-container [formGroup]=\"formGroup\">\r\n        <mat-form-field>\r\n            <mat-label>{{nameLabel}}</mat-label>\r\n            <input type=\"text\" matInput [formControlName]=\"nameControl\" />\r\n        </mat-form-field>\r\n    </ng-container>\r\n</ng-template> -->\r\n\r\n<ng-container [formGroup]=\"formGroup\">\r\n    <mat-form-field [appearance]=\"appearance\" [ngClass]=\"{'mat-form-compact': styleCompact}\">\r\n        <mat-label>{{nameLabel}}</mat-label>\r\n        <div matPrefix>\r\n            <input-icon [icon]=\"icon\"></input-icon>\r\n        </div>\r\n        <input type=\"text\" [attr.data-cy]=\"nameControl\" matInput [formControlName]=\"nameControl\" [maxlength]=\"maxlength\" />\r\n        <div matSuffix style=\"display:flex\">\r\n            <input-icon icon=\"close\" *ngIf=\"formGroup.get(nameControl).value\" (click)=\"clearValue($event)\">\r\n            </input-icon>\r\n        </div>\r\n        <mat-error error-handler [form]=\"formGroup\" [controlName]=\"nameControl\"></mat-error>\r\n    </mat-form-field>\r\n</ng-container>","import { ChangeDetectionStrategy, Component, Injector, Input, OnInit } from '@angular/core';\r\nimport { ConfigInputComponent } from 'cocori-ng/src/feature-core';\r\n\r\nimport { ExtendInputsComponent } from '../extend-inputs/extend-inputs.component';\r\n\r\n@Component({\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    selector: 'cocoring-textarea',\r\n    templateUrl: 'cocoring-textarea.component.html',\r\n    styleUrls: ['./cocoring-textarea.component.scss']\r\n})\r\n\r\nexport class CocoringTextareaComponent extends ExtendInputsComponent implements OnInit {\r\n    @Input()\r\n    set config(config: ConfigInputComponent) {\r\n        this.configInput(config)\r\n\r\n        this.addControlForm();\r\n    }\r\n\r\n    constructor(injector: Injector) {\r\n        super(injector);\r\n    }\r\n\r\n    ngOnInit() { }\r\n}\r\n","<ng-container [formGroup]=\"formGroup\">\r\n    <mat-form-field [appearance]=\"appearance\">\r\n        <mat-label>{{nameLabel}}</mat-label>\r\n        <textarea [attr.data-cy]=\"nameControl\" matInput [formControlName]=\"nameControl\" rows=\"10\"></textarea>\r\n        <div matSuffix style=\"display:flex\">\r\n            <input-icon icon=\"close\" *ngIf=\"formGroup.get(nameControl).value\" (click)=\"clearValue($event)\"></input-icon>\r\n        </div>\r\n        <mat-error error-handler [form]=\"formGroup\" [controlName]=\"nameControl\"></mat-error>\r\n    </mat-form-field>\r\n</ng-container>","import { ChangeDetectionStrategy, Component, EventEmitter, Injector, Input, OnInit, Output } from '@angular/core';\r\nimport { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';\r\nimport { ConfigInputComponent } from 'cocori-ng/src/feature-core';\r\n\r\nimport { ExtendInputsComponent } from '../extend-inputs/extend-inputs.component';\r\n\r\n@Component({\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    selector: 'cocoring-viewer-ng',\r\n    templateUrl: 'cocoring-viewer.component.html',\r\n})\r\n\r\nexport class CocoringViewerComponent extends ExtendInputsComponent implements OnInit {\r\n    @Output() callback: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n    nameLabel: string;\r\n    formGroup: UntypedFormGroup;\r\n    nameControl: string;\r\n\r\n    @Input()\r\n    set config(config: ConfigInputComponent) {\r\n        this.configInput(config)\r\n\r\n        this.addForm()\r\n    }\r\n\r\n    constructor(private fb: UntypedFormBuilder, injector: Injector) {\r\n        super(injector);\r\n    }\r\n\r\n    ngOnInit() {\r\n    }\r\n\r\n    private addForm() {\r\n        const nestedFrom: UntypedFormGroup = this.fb.group({\r\n            windowingMin: null,\r\n            windowingMax: null,\r\n            rangeMin: null,\r\n            rangeMax: null,\r\n            lut: null\r\n        })\r\n\r\n        this.formGroup.addControl(this.nameControl, nestedFrom)\r\n\r\n        this.emitEvent()\r\n    }\r\n}\r\n","<ng-container [formGroup]=\"formGroup\">\r\n    <mat-form-field>\r\n        <mat-label>{{nameLabel}}</mat-label>\r\n        <ng-container [formGroupName]=\"nameControl\">\r\n            <input type=\"text\" matInput formControlName=\"windowingMin\" />\r\n        </ng-container>\r\n        <!-- <mat-error error-handler [form]=\"formGroup\" [controlName]=\"nameControl\"></mat-error> -->\r\n    </mat-form-field>\r\n</ng-container>","import { FormInputComponents } from 'cocori-ng/src/feature-core';\r\n\r\nimport { CocoringButtonLinkComponent } from '../button-link/cocoring-button-link.component';\r\nimport { CocoringButtonComponent } from '../button/cocoring-button.component';\r\nimport {\r\n    CocoringCheckboxIndeterminateComponent,\r\n} from './inputs/input-checkbox-indeterminate/checkbox-indeterminate.component';\r\nimport { CocoringCheckboxComponent } from './inputs/input-checkbox/cocoring-checkbox.component';\r\nimport { CocoringDateComponent } from './inputs/input-date/cocoring-date.component';\r\nimport { CocoringEmailComponent } from './inputs/input-email/cocoring-email.component';\r\nimport { CocoringNumberComponent } from './inputs/input-number/cocoring-number.component';\r\nimport { CocoringPasswordComponent } from './inputs/input-password/cocoring-password.component';\r\nimport { CocoringSelectComponent } from './inputs/input-select/cocoring-select.component';\r\nimport { CocoringSlideToggleComponent } from './inputs/input-slide-toggle/cocoring-slide-toggle.component';\r\nimport { CocoringTextComponent } from './inputs/input-text/cocoring-text.component';\r\nimport { CocoringTextareaComponent } from './inputs/input-textarea/cocoring-textarea.component';\r\nimport { CocoringViewerComponent } from './inputs/input-viewer/cocoring-viewer.component';\r\n\r\n\r\nexport const ClasseComponents = {\r\n    [FormInputComponents.INPUT_TEXT]: CocoringTextComponent,\r\n    [FormInputComponents.INPUT_EMAIL]: CocoringEmailComponent,\r\n    [FormInputComponents.INPUT_CHECKBOX]: CocoringCheckboxComponent,\r\n    [FormInputComponents.INPUT_CHECKBOX_INDETERMINATE]: CocoringCheckboxIndeterminateComponent,\r\n    [FormInputComponents.INPUT_NUMBER]: CocoringNumberComponent,\r\n    [FormInputComponents.INPUT_PASSWORD]: CocoringPasswordComponent,\r\n    [FormInputComponents.INPUT_DATE]: CocoringDateComponent,\r\n    [FormInputComponents.INPUT_SLIDE_TOGGLE]: CocoringSlideToggleComponent,\r\n    [FormInputComponents.INPUT_TEXTAREA]: CocoringTextareaComponent,\r\n    [FormInputComponents.INPUT_VIEWER]: CocoringViewerComponent,\r\n    [FormInputComponents.INPUT_SELECT]: CocoringSelectComponent,\r\n    [FormInputComponents.BUTTON]: CocoringButtonComponent,\r\n    [FormInputComponents.LINK]: CocoringButtonLinkComponent,\r\n};","import { Injectable, ViewContainerRef } from '@angular/core';\r\nimport { UntypedFormBuilder, UntypedFormControl, UntypedFormGroup } from '@angular/forms';\r\nimport {\r\n    BroadcastEventService,\r\n    ButtonComponentInputs,\r\n    ButtonIconPositon,\r\n    ConfigComponentInputs,\r\n    ConfigInputComponent,\r\n    DataSourceInput,\r\n    FormInputComponents,\r\n    HelperService,\r\n    InjectComponentService,\r\n    InputFieldAppearance,\r\n    OutputCallback,\r\n    TypeButtonEnum,\r\n    ValidatorsService,\r\n} from 'cocori-ng/src/feature-core';\r\n\r\nimport { ClasseComponents } from '../../../shared/component/form';\r\nimport { DefaultConfigComponent } from '../../config/config.components';\r\nimport { ConfigEvents } from '../../config/config.events';\r\n\r\n\r\n/**\r\n * https://www.typescriptlang.org/play?#code/C4TwDgpgBAggTgcwK4FsIDtgBVwQM4A8WAfFALxRZQQAewGAJnlABQB0HUAhongFxQAlugBmEOFACqASnKlhYiQCUoAfikD0EAG7iA3AChQkKEohgANlwDGEM8CRx0OSAQDyAGigA5UhXYcXALwyGiYLvjuxLJkpN6GRrhQAEJIghYM4gQA0tR0jMwA1hAgAPYiUADCpejWcBD0qemZcH5QAN4GUFAA2pJC6FDZALoC-bT06ExQAOQARmkZM2pVNXUNEE0Z4n3DUAJmljZ2DY7OuARd3au19Y2LLbseV91bLQQAojTWFkiZOV5JKQJgUoFpdBJ1PMHssBF8fn8IACpMRiFc0QBfBIiJC1YCCGpQBbNcQsaQCN5ZeG-f7FMoVaq3DaUuBeaHNGaojpXO5nMEQADuN3W9xJcDJ3GYXHQIEMGIMBh+XDwzEZIs2D3E3O6XDJAmAAAtBMxOtcoLynFBDcbDN15Vc5nqrUaTS9zadLda8LaoPbusSMk68MA4MIENrrhbBjMRKVSjMffL7QGWmS2LrpGxHZmU2S9FAAPQFqClQoGFOknNpjNZh55wvF0vlzXinN16T5ovUOBwUpwZti6tp3Mdhvd3v9iutrPD9ud4viCcD7bTms1kfz8d95epqt72vNetdxfbqdD-fZg+B0fHnunlvn9PD2eHm8Lu9wIA\r\n * https://medium.com/@bensammons/building-a-fluent-interface-with-typescript-using-generics-in-typescript-3-4d206f00dba5\r\n */\r\n\r\ntype AddInput<Builder, InputName extends string> =\r\n    Builder extends FormBuilderService<infer InputNames, infer ButtonNames>\r\n    ? FormBuilderService<InputNames | InputName, ButtonNames>\r\n    : never\r\n\r\n// type AddButton<Builder, ButtonName extends string> =\r\n//     Builder extends FormBuilderService<infer InputNames, infer ButtonNames>\r\n//     ? FormBuilderService<InputNames, ButtonNames | ButtonName>\r\n//     : never\r\n\r\ntype InferInputNames<Builder> =\r\n    Builder extends FormBuilderService<infer InputNames>\r\n    ? InputNames\r\n    : never\r\n\r\nclass InputConfigBuilder<Builder> {\r\n\r\n    _isRequired: boolean;\r\n    _styleCompact: boolean;\r\n    _appearance: InputFieldAppearance;\r\n    _nameLabel: string;\r\n    _icon: string;\r\n    _maxlength: number;\r\n    _inRelationWith: string;\r\n    _type: FormInputComponents;\r\n    _dataSource: DataSourceInput;\r\n    _callbackComponent: OutputCallback;\r\n\r\n    isRequired() {\r\n        this._isRequired = true\r\n\r\n        return this\r\n    }\r\n\r\n    styleCompact() {\r\n        this._styleCompact = true\r\n\r\n        return this\r\n    }\r\n\r\n    appearance(appearance: InputFieldAppearance) {\r\n        this._appearance = appearance\r\n\r\n        return this\r\n    }\r\n\r\n    nameLabel(nameLabel: string) {\r\n        this._nameLabel = nameLabel\r\n\r\n        return this\r\n    }\r\n\r\n    inRelationWith<InputName extends InferInputNames<Builder>>(inputName: InputName) {\r\n        this._inRelationWith = inputName\r\n\r\n        return this\r\n    }\r\n\r\n    dataSource(dataSource: DataSourceInput) {\r\n        this._dataSource = dataSource\r\n\r\n        return this\r\n    }\r\n\r\n    maxlength(value: number) {\r\n        this._maxlength = value\r\n\r\n        return this\r\n    }\r\n\r\n    icon(materialIconName: string) {\r\n        this._icon = materialIconName\r\n\r\n        return this\r\n    }\r\n\r\n    typeInput(\r\n        type: FormInputComponents) {\r\n        this._type = type\r\n\r\n        return this\r\n    }\r\n\r\n    outputCallback(outputCallback: OutputCallback) {\r\n        this._callbackComponent = outputCallback\r\n\r\n        return this\r\n    }\r\n}\r\n\r\nclass ButtonConfigBuilder<Builder> {\r\n\r\n    _type: TypeButtonEnum;\r\n    _icon: string;\r\n    _className: string;\r\n    _iconPosition: ButtonIconPositon;\r\n    _callbackComponent: OutputCallback;\r\n    _url: string;\r\n    _openNewTab: boolean;\r\n\r\n    isTypeSubmit(is: boolean = true) {\r\n        this._type = is ? TypeButtonEnum.SUBMIT : TypeButtonEnum.BUTTON\r\n\r\n        return this\r\n    }\r\n\r\n    type(typeOfTheBtn: TypeButtonEnum = TypeButtonEnum.BUTTON) {\r\n        this._type = typeOfTheBtn\r\n\r\n        return this\r\n    }\r\n\r\n    icon(materialIconName: string, buttonIconPosition: ButtonIconPositon = ButtonIconPositon.START) {\r\n        this._icon = materialIconName\r\n        this._iconPosition = buttonIconPosition\r\n\r\n        return this\r\n    }\r\n\r\n    url(url: string) {\r\n        this._url = url\r\n\r\n        return this\r\n    }\r\n\r\n    openNewTab(openNewTab: boolean) {\r\n        this._openNewTab = openNewTab\r\n\r\n        return this\r\n    }\r\n\r\n    class(className: string) {\r\n        this._className = className\r\n\r\n        return this\r\n    }\r\n\r\n    outputCallback(outputCallback: OutputCallback) {\r\n        this._callbackComponent = outputCallback\r\n\r\n        return this\r\n    }\r\n}\r\n\r\n@Injectable({\r\n    providedIn: 'root',\r\n})\r\nexport class FormBuilderService<InputNames extends string = never, ButtonNames extends string = never, NodeNames extends string = never,> {\r\n    public formId: string; /** error handler */\r\n    public formName: string; /** mapping details */\r\n\r\n    private currentForm: UntypedFormGroup;\r\n    private _configInputsForm: ConfigInputComponent[] = [];\r\n    private _appearance: InputFieldAppearance = <InputFieldAppearance>DefaultConfigComponent.form.appearance\r\n    private _styleCompact: boolean = DefaultConfigComponent.form.styleCompact;\r\n\r\n    constructor(\r\n        private fb: UntypedFormBuilder,\r\n        private helperService: HelperService,\r\n        private broadcastEventService: BroadcastEventService,\r\n        public generateComponentViewService: GenerateComponentViewService\r\n    ) {\r\n        this.newForm()\r\n    }\r\n\r\n    set form(form: UntypedFormGroup) {\r\n        this.currentForm = form;\r\n    }\r\n\r\n    get form(): UntypedFormGroup {\r\n        return this.currentForm\r\n    }\r\n\r\n    get styleCompact(): boolean {\r\n        return this._styleCompact\r\n    }\r\n\r\n    getAppearance(): InputFieldAppearance {\r\n        return this._appearance\r\n    }\r\n\r\n    get configInputsForm(): ConfigInputComponent[] {\r\n        return this._configInputsForm\r\n    }\r\n\r\n    newForm() {\r\n        this.currentForm = this.fb.group({});\r\n\r\n        this._configInputsForm.splice(0, this._configInputsForm.length)\r\n\r\n        this.identityForm(this.helperService.generateGuid())\r\n\r\n        return this;\r\n    }\r\n\r\n    appearance(value: InputFieldAppearance) {\r\n        this._appearance = value\r\n\r\n        return this;\r\n    }\r\n\r\n    identityForm(id: string, name?: string) {\r\n        this.formId = id;\r\n\r\n        this.formName = name;\r\n\r\n        this.currentForm.addControl(DefaultConfigComponent.form.keyId, new UntypedFormControl(id))\r\n\r\n        return this;\r\n    }\r\n\r\n    setViewContainerRef(containerRef: ViewContainerRef) {\r\n        this.generateComponentViewService.setViewContainerRef(containerRef)\r\n\r\n        return this;\r\n    }\r\n\r\n    addInput<InputName extends string, ReturnType extends AddInput<this, InputName>>(\r\n        inputName: Exclude<InputName, InputNames>,\r\n        configBuilder: (b: InputConfigBuilder<this>) => InputConfigBuilder<this>\r\n    ): ReturnType {\r\n\r\n        const builder = configBuilder(new InputConfigBuilder);\r\n\r\n        /** on formalise la configuration du champ input */\r\n        const configInputComponent: ConfigInputComponent = {\r\n            type: builder._type,\r\n            formGroup: this.currentForm,\r\n            nameControl: inputName,\r\n            nameLabel: builder._nameLabel,\r\n            dataSource: builder._dataSource,\r\n            inRelationWith: builder._inRelationWith,\r\n            styleCompact: builder._styleCompact ? builder._styleCompact : this.styleCompact,\r\n            icon: builder._icon,\r\n            maxlength: builder._maxlength,\r\n            appearance: builder._appearance ? builder._appearance : this._appearance,\r\n            callbackComponent: builder._callbackComponent,\r\n            validators: []\r\n        };\r\n\r\n        /** on traite la validation du champ input */\r\n\r\n        if (builder._isRequired) {\r\n            configInputComponent.validators.push(ValidatorsService.require)\r\n        }\r\n\r\n        this._configInputsForm.push(configInputComponent)\r\n\r\n        this.generateComponentViewService.addComponentToView(configInputComponent.type, configInputComponent, builder._callbackComponent);\r\n\r\n        return this as FormBuilderService as ReturnType;\r\n    }\r\n\r\n    /** Déclenche manuellement la création des champs dans la vue */\r\n    generateFormInView() {\r\n        if (this.generateComponentViewService.getViewContainerRef()) {\r\n            this._configInputsForm.forEach((conf: ConfigInputComponent) => {\r\n                this.generateComponentViewService.addComponentToView(conf.type, conf, conf.callbackComponent);\r\n            })\r\n        }\r\n        return this\r\n    }\r\n\r\n    addButton<ButtonName extends string>(\r\n        buttonName: Exclude<ButtonName, ButtonNames>,\r\n        configBuilder: (b: ButtonConfigBuilder<this>) => ButtonConfigBuilder<this>\r\n    ) {\r\n\r\n        const builder = configBuilder(new ButtonConfigBuilder);\r\n\r\n        const configInputComponent: ButtonComponentInputs = {\r\n            text: buttonName,\r\n            type: builder._type,\r\n            icon: builder._icon,\r\n            url: builder._url,\r\n            openNewTab: builder._openNewTab,\r\n            className: builder._className,\r\n            iconPosition: builder._iconPosition,\r\n            onClickSubmit: this.onClickSubmit.bind(this)\r\n        };\r\n\r\n        if (builder._type === TypeButtonEnum.LINK) {\r\n            this.generateComponentViewService.addComponentToView(FormInputComponents.LINK, configInputComponent, builder._callbackComponent);\r\n        } else {\r\n            this.generateComponentViewService.addComponentToView(FormInputComponents.BUTTON, configInputComponent, builder._callbackComponent);\r\n        }\r\n\r\n        return this as FormBuilderService;\r\n    }\r\n\r\n    onClickSubmit() {\r\n        this.broadcastEventService.broadcast({ eventKeys: [ConfigEvents.FORM_SUBMITTED, this.formId], eventData: this.form })\r\n    }\r\n}\r\n\r\n@Injectable({\r\n    providedIn: 'root',\r\n})\r\nexport class GenerateComponentViewService {\r\n    private formContainerRef: ViewContainerRef;\r\n\r\n    constructor(private injectComponentService: InjectComponentService) {\r\n    }\r\n\r\n    setViewContainerRef(containerRef: ViewContainerRef) {\r\n        this.formContainerRef = containerRef;\r\n\r\n        return this;\r\n    }\r\n\r\n    getViewContainerRef(): ViewContainerRef {\r\n        return this.formContainerRef\r\n    }\r\n\r\n    addComponentToView(componentType: FormInputComponents, configComponent: ConfigComponentInputs, callback: OutputCallback) {\r\n\r\n        if (!this.getViewContainerRef()) return;\r\n\r\n        const componentToAdd = this.returnComponentClassFromType(componentType);\r\n\r\n        this.injectComponentService.loadAndAddComponentToContainer(componentToAdd, this.formContainerRef,\r\n            { config: configComponent }, callback\r\n        );\r\n    }\r\n\r\n    private returnComponentClassFromType(typeOfComponent: FormInputComponents) {\r\n        if (!ClasseComponents.hasOwnProperty(typeOfComponent)) {\r\n            const error: string = `This type of component : '${typeOfComponent}' doesn't exist`;\r\n            throw new Error(error);\r\n        } else {\r\n            return ClasseComponents[typeOfComponent];\r\n        }\r\n    }\r\n}\r\n","import { HttpEvent, HttpEventType } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport {\r\n  AssembleFilePartsCommand,\r\n  ConfigAPIsFile,\r\n  FilePartCommand,\r\n  HttpService,\r\n  NewFileCommand,\r\n} from 'cocori-ng/src/feature-core';\r\nimport { BehaviorSubject, Observable, of, Subject } from 'rxjs';\r\nimport { catchError, last, map, tap } from 'rxjs/operators';\r\nimport SparkMD5 from 'spark-md5';\r\n\r\nimport { DefaultConfigComponent } from '../../config/config.components';\r\n\r\n\r\ninterface FileReaderEventTarget extends EventTarget {\r\n  result: string;\r\n}\r\n\r\ninterface FileReaderEvent extends Event {\r\n  target: FileReaderEventTarget;\r\n  getMessage(): string;\r\n}\r\n\r\n@Injectable({\r\n  providedIn: \"root\"\r\n})\r\nexport class UploaderService {\r\n  public progressSource = new BehaviorSubject<number>(0);\r\n  public fileUploaded$: Subject<any> = new Subject<any>();\r\n  public fileOnError$: Subject<any> = new Subject<any>();\r\n  public apisFile: ConfigAPIsFile;\r\n  chunkSize: number;\r\n  file: File;\r\n\r\n  constructor(\r\n    private httpService: HttpService,) {\r\n    this.chunkSize = DefaultConfigComponent.upload.chunkSize;\r\n  }\r\n\r\n  uploadFile(file: File) {\r\n    this.file = file\r\n\r\n    const numberParts = this.getNumberPart(file);\r\n\r\n    this.convertFileToArrayBuffer(file).subscribe(\r\n      (fileArrayBuffer: ArrayBuffer) => {\r\n        if (numberParts === 1) {\r\n          this.handleFullFile(fileArrayBuffer, numberParts)\r\n        } else {\r\n          this.handlePartsFile(fileArrayBuffer, numberParts)\r\n        }\r\n      }\r\n    )\r\n  }\r\n\r\n  private handleFullFile(fileArrayBuffer: ArrayBuffer, numberParts: number) {\r\n    this.sendFull(fileArrayBuffer, numberParts).pipe(\r\n      tap((fileId: string) => {\r\n        this.fileUploaded$.next(fileId)\r\n      }),\r\n    ).subscribe()\r\n  }\r\n\r\n  private handlePartsFile(fileArrayBuffer: ArrayBuffer, numberParts: number) {\r\n    /** send first part then the others */\r\n    this.sendFull(this.getPart(fileArrayBuffer, 0), numberParts).subscribe((datas: any) => {\r\n      const fileId: string = datas.value\r\n\r\n      this.loopParts(numberParts, fileId, fileArrayBuffer).then(() => {\r\n        this.endCommand(fileId, fileArrayBuffer).subscribe(_ => {\r\n          this.fileUploaded$.next(fileId)\r\n        })\r\n      })\r\n    })\r\n  }\r\n\r\n  private async loopParts(numberParts: number, fileId: string, fileArrayBuffer: any) {\r\n    for (var iPart = 1; iPart < numberParts; iPart++) {\r\n      await this.sendPart(fileId, iPart, this.getPart(fileArrayBuffer, iPart), numberParts)\r\n    }\r\n  }\r\n\r\n\r\n  private sendFull(buffer: ArrayBuffer, numberParts: number): Observable<any> {\r\n    const command: NewFileCommand = {\r\n      fileName: this.file.name,\r\n      mimeType: this.file.type,\r\n      numberParts: numberParts,\r\n      base64Content: this.convertToBase64(buffer)\r\n    }\r\n\r\n    return this.sendFile(command, 1, numberParts)\r\n  }\r\n\r\n  private sendPart(fileId: string, partIndex: number, buffer: ArrayBuffer, numberParts: number): Promise<any> {\r\n    const command: FilePartCommand = {\r\n      fileId: fileId,\r\n      partIndex: partIndex,\r\n      mimeType: this.file.type,\r\n      base64Content: this.convertToBase64(buffer)\r\n    }\r\n    return this.sendFile(command, partIndex + 1, numberParts).toPromise()\r\n  }\r\n\r\n  private sendFile(command: NewFileCommand | FilePartCommand, partIndex: number, numberParts: number) {\r\n    return this.UploadFileAPI(command, partIndex, numberParts).pipe(\r\n      map(event => this.getEventMessage(event, partIndex, numberParts)),\r\n      last(),\r\n      catchError(error => {\r\n        this.fileOnError$.next(undefined)\r\n        return of(null)\r\n      })\r\n    );\r\n  }\r\n\r\n  private endCommand(fileId: string, buffer: ArrayBuffer) {\r\n    const command: AssembleFilePartsCommand = {\r\n      fileId: fileId,\r\n      checksum: this.getChecksum(buffer)\r\n    }\r\n    return this.EndUploadPartsFileAPI(command).pipe(\r\n      catchError(error => {\r\n        this.fileOnError$.next(undefined)\r\n        return of(null)\r\n      })\r\n    );\r\n  }\r\n\r\n  private getNumberPart(file: File) {\r\n    return this.chunkSize <= 0\r\n      ? 1\r\n      : Math.ceil(file.size / this.chunkSize);\r\n  }\r\n\r\n  convertFileToArrayBuffer(file: File): Observable<ArrayBuffer> {\r\n    return new Observable((observer) => {\r\n      const reader = new FileReader();\r\n\r\n      reader.readAsArrayBuffer(file);\r\n      reader.onload = function () {\r\n        const arraybuffer = <ArrayBuffer>reader.result;\r\n\r\n        observer.next(arraybuffer)\r\n        observer.complete();\r\n      }\r\n    })\r\n  }\r\n\r\n  convertToBase64(buffer: ArrayBuffer) {\r\n    let binary = \"\";\r\n    let bytes = new Uint8Array(buffer);\r\n    let len = bytes.byteLength;\r\n    for (let i = 0; i < len; i++) {\r\n      binary += String.fromCharCode(bytes[i]);\r\n    }\r\n    return window.btoa(binary);\r\n  }\r\n\r\n  getPart(data: ArrayBuffer, partIndex: number): ArrayBuffer {\r\n    const start = partIndex * this.chunkSize;\r\n    const end = start + this.chunkSize;\r\n\r\n    return data.slice(start, Math.min(end, data.byteLength));\r\n  }\r\n\r\n  getChecksum(data: ArrayBuffer) {\r\n    const spark = new SparkMD5.ArrayBuffer();\r\n    spark.append(data);\r\n    return btoa(spark.end(true));\r\n  }\r\n\r\n  private getEventMessage(event: HttpEvent<any>, partIndex: number, numberParts: number) {\r\n    switch (event.type) {\r\n      case HttpEventType.Sent:\r\n        return this.progressSource.next(Math.round((partIndex / numberParts) * 100));\r\n\r\n      case HttpEventType.UploadProgress:\r\n        return `progress...`;\r\n\r\n      case HttpEventType.Response:\r\n        return event.body;\r\n\r\n      default:\r\n        return `default...`;\r\n    }\r\n  }\r\n\r\n  /** APIs */\r\n\r\n  UploadFileAPI(datas: NewFileCommand | FilePartCommand, partIndex: number, numberParts: number): Observable<any> {\r\n    let apiFile: string = this.apisFile.apiFile()\r\n\r\n    if (numberParts > 1 && partIndex > 1) apiFile = `${apiFile}/${(<FilePartCommand>datas).fileId}/parts`\r\n\r\n    return this.httpService.upload(apiFile, datas)\r\n  }\r\n\r\n  EndUploadPartsFileAPI(datas: AssembleFilePartsCommand): Observable<any> {\r\n    const apiFile: string = this.apisFile.apiFile()\r\n\r\n    return this.httpService.patch(`${apiFile}/${datas.fileId}/parts`, datas)\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { MatSnackBar, MatSnackBarVerticalPosition } from '@angular/material/snack-bar';\r\nimport { NavigationStart, Router } from '@angular/router';\r\nimport { ErrorStacktraceModel, StacktraceModel } from 'cocori-ng/src/feature-core';\r\nimport { filter, Subscription } from 'rxjs';\r\n\r\n// import {\r\n//   ToastErrorStacktraceComponent,\r\n// } from '../../shared/component/toast-error-stacktrace/toast-error-stacktrace.component';\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class ToastMessageService {\r\n\r\n  private classCss: string[] = [\"succesToast\", \"errorToast\", \"infoToast\"];\r\n  private callback: Function;\r\n  private toastRef: any;\r\n  private buttonAction: string = 'Fermer'\r\n\r\n  defaultDuration: number = 5000;\r\n  defaultErrorDuration: number = 0;\r\n\r\n  subscription: Subscription;\r\n\r\n  constructor(\r\n    private toast: MatSnackBar,\r\n    public router: Router,) {\r\n    this.onChangeUrl()\r\n  }\r\n\r\n  private onChangeUrl() {\r\n    this.router.events\r\n      .pipe(\r\n        filter((event) => event instanceof NavigationStart),\r\n        filter(() => !!this.toastRef),\r\n      )\r\n      .subscribe(() => this.dismiss())\r\n  }\r\n\r\n  success(message: string, callback?: () => void, duration: number = this.defaultDuration) {\r\n    this.messageHandler(callback, message, 0, duration, null);\r\n  }\r\n\r\n  error(message: string, callback?: () => void, duration: number = this.defaultErrorDuration) {\r\n    this.messageHandler(callback, message, 1, duration, this.buttonAction);\r\n  }\r\n\r\n  // https://stackblitz.com/edit/snackbar-with-html-so?file=app%2Fhome-page%2Fhome-page.component.ts\r\n  errorStacktrace(message: string, stacktrace?: StacktraceModel, callback?: () => void, duration: number = this.defaultErrorDuration) {\r\n    const errorStacktrace: ErrorStacktraceModel = { message: message, stacktrace: stacktrace };\r\n\r\n    // const options = {\r\n    //   'panelClass': this.classCss[messageStyle],\r\n    //   'duration': !duration ? 0 : duration,\r\n    //   'verticalPosition': position\r\n    // }\r\n\r\n    // this.toastRef = this.toast.openFromComponent(ToastErrorStacktraceComponent, { data: errorStacktrace, 'panelClass': this.classCss[1] });\r\n\r\n    this.onDismiss();\r\n  }\r\n\r\n  info(message: string, callback?: () => void, duration: number = this.defaultDuration) {\r\n    this.messageHandler(callback, message, 2, duration, null);\r\n  }\r\n\r\n  private messageHandler(callback: () => void, message: string, messageStyle: number, duration: number, buttonActionText: string, position: MatSnackBarVerticalPosition = 'bottom') {\r\n    this.callback = callback;\r\n\r\n    const options = {\r\n      'panelClass': this.classCss[messageStyle],\r\n      'duration': !duration ? 0 : duration,\r\n      'verticalPosition': position\r\n    }\r\n\r\n    this.toastRef = this.toast.open(message, buttonActionText, options);\r\n\r\n    this.onDismiss();\r\n  }\r\n\r\n  private onDismiss() {\r\n    if (this.subscription) this.subscription.unsubscribe();\r\n\r\n    this.subscription = this.toastRef.afterDismissed().subscribe(() => {\r\n      if (this.callback) this.callback();\r\n    });\r\n  }\r\n\r\n  dismiss() {\r\n    this.toast.dismiss();\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { UntypedFormArray, UntypedFormBuilder, UntypedFormControl, UntypedFormGroup } from '@angular/forms';\r\nimport {\r\n  ColumnDatagridModel,\r\n  ConfigDatagridModel,\r\n  DatasourceService,\r\n  HelperService,\r\n  Odata,\r\n  OrderColumnModel,\r\n  PageIndicators,\r\n  QueryBuilder,\r\n} from 'cocori-ng/src/feature-core';\r\nimport { BehaviorSubject, from, Observable, of, Subject } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\nexport class DatagridService {\r\n  private _nextPage$: Subject<void> = new Subject<void>();\r\n  private _previousPage$: Subject<void> = new Subject<void>();\r\n  private _resetColumnExcept$: Subject<string> = new Subject<string>();\r\n  private _updateColumn$: Subject<ColumnDatagridModel> = new Subject<ColumnDatagridModel>();\r\n  private _reOrderColumns$: Subject<OrderColumnModel> = new Subject<OrderColumnModel>();\r\n  private _lengthDataSource$: BehaviorSubject<number> = new BehaviorSubject<number>(0);\r\n  public rowSelectedByClickEvent$: Subject<any> = new Subject<any>();\r\n  public rowCheckedEvent$: Subject<any> = new Subject<any>();\r\n  public rowsDeletedEvent$: Subject<any> = new Subject<any>();\r\n  public rowsRestoredEvent$: Subject<any> = new Subject<any>();\r\n  public allRowsChecked$: Subject<boolean> = new Subject<boolean>();\r\n  public refreshNeeded$: Subject<void> = new Subject<void>();\r\n\r\n  public checkboxesDatagridForm: UntypedFormGroup;\r\n  public rowsSelectedDatagrid: string[] = [] /** array avec tous les ids des lignes sélectionnées dans la grille */\r\n  public config: ConfigDatagridModel;\r\n\r\n  public itemsPerPage: number = 10\r\n  public currentPage: number = 1\r\n  public totalRows: number = 0;\r\n  public indicatorPage: PageIndicators;\r\n  public searchGlobal: string;\r\n\r\n  constructor(\r\n    private datasourceService: DatasourceService,\r\n    private helperService: HelperService,\r\n    private fb: UntypedFormBuilder,) {\r\n    this.onPaginatePage()\r\n  }\r\n\r\n  private onPaginatePage() {\r\n    this.onNextPage()\r\n\r\n    this.onPreviousPage()\r\n  }\r\n\r\n  private onNextPage() {\r\n    this.nextPage$.pipe(\r\n      tap(_ => this.currentPage = this.currentPage + 1),\r\n      tap(_ => this.refreshNeeded$.next()),\r\n    ).subscribe()\r\n  }\r\n\r\n  private onPreviousPage() {\r\n    this.previousPage$.pipe(\r\n      tap(_ => this.currentPage = this.currentPage - 1),\r\n      tap(_ => this.refreshNeeded$.next()),\r\n    ).subscribe()\r\n  }\r\n\r\n  get resetColumnExcept$() {\r\n    return this._resetColumnExcept$;\r\n  }\r\n\r\n  get updateColumn$() {\r\n    return this._updateColumn$;\r\n  }\r\n\r\n  get reOrderColumns$() {\r\n    return this._reOrderColumns$;\r\n  }\r\n\r\n  get nextPage$() {\r\n    return this._nextPage$;\r\n  }\r\n\r\n  get previousPage$() {\r\n    return this._previousPage$;\r\n  }\r\n\r\n  get lengthDataSource$() {\r\n    return this._lengthDataSource$;\r\n  }\r\n\r\n  lengthDataSource(rowsLength: number) {\r\n    this.totalRows = rowsLength\r\n\r\n    this.calculPaginationDatas();\r\n\r\n    this.lengthDataSource$.next(rowsLength)\r\n  }\r\n\r\n  initCheckboxesDatagridForm() {\r\n    this.checkboxesDatagridForm = this.fb.group({});\r\n\r\n    this.checkboxesDatagridForm.addControl(\"selectAllRowsCheckbox\", new UntypedFormControl(false))\r\n    this.checkboxesDatagridForm.addControl(\"rowsCheckbox\", new UntypedFormArray([]))\r\n  }\r\n\r\n  checkUncheckAllRows(value: boolean) {\r\n    this.allRowsChecked$.next(value)\r\n  }\r\n\r\n  getAllDatas(): Observable<Odata<any>> {\r\n    if (!this.config.dataSource) return <Observable<Odata<any>>>of(null);\r\n\r\n    const queryString: string = this.buildQueryStringOData();\r\n\r\n    // return this.httpService.get(api, {$filter: filter, $top: 20})\r\n    return this.datasourceService.loadDataSource(this.config.dataSource, queryString)\r\n\r\n    // switch (this.config.dataSource.type) {\r\n    //   case DataSourceType.BRUTE:\r\n    //     return <Observable<DatasourceOdata>>of(<DatasourceOdata>this.config.dataSource.value).pipe(delay(1000))\r\n    //     break;\r\n    //   case DataSourceType.API:\r\n    //     // return this.httpService.get(api, {$filter: filter, $top: 20})\r\n    //     return this.httpService.get(<string>this.config.dataSource.value)\r\n    //     break;\r\n    //   default:\r\n    //     return <Observable<DatasourceOdata>>of(null)\r\n    //     break;\r\n    // }\r\n  }\r\n\r\n  public storeIdsRowsSelected(rowValues: any, checkValue: boolean) {\r\n    const rowId: string = rowValues.id\r\n    const indexIdFound: number = this.rowsSelectedDatagrid.findIndex((id: string) => id === rowId)\r\n\r\n    if (checkValue && indexIdFound === -1) {\r\n      this.rowsSelectedDatagrid.push(rowId)\r\n      this.rowCheckedEvent$.next(rowValues)\r\n    } else if (!checkValue && indexIdFound !== -1) {\r\n      this.rowsSelectedDatagrid = this.helperService.removeValueFromArrayByIndex(this.rowsSelectedDatagrid, indexIdFound)\r\n      this.rowCheckedEvent$.next(rowValues)\r\n    }\r\n  }\r\n\r\n  private buildQueryStringOData(): string {\r\n\r\n    const orderByQuery: string = this.generateSortQuery()\r\n\r\n    this.calculPaginationDatas();\r\n\r\n    let queryBuider = new QueryBuilder()\r\n      .top(this.itemsPerPage)\r\n      .skip(this.indicatorPage.from)\r\n\r\n    if (orderByQuery) queryBuider = queryBuider.orderBy(orderByQuery)\r\n\r\n    queryBuider = this.generateFilterQuery(queryBuider)\r\n\r\n    const queryString = queryBuider.toQuery()\r\n\r\n    console.log(\"queryString : \", queryString);\r\n\r\n    return queryString;\r\n  }\r\n\r\n  private calculPaginationDatas() {\r\n    let valueTo: number = this.currentPage * this.itemsPerPage;\r\n\r\n    if (this.currentPage === 1 && this.totalRows < this.itemsPerPage) {\r\n      valueTo = this.totalRows;\r\n    }\r\n\r\n    this.indicatorPage = { from: (this.currentPage - 1) * this.itemsPerPage, to: valueTo };\r\n  }\r\n\r\n  private generateSortQuery() {\r\n    const sortQuery: string = this.config.columns\r\n      .filter((column: ColumnDatagridModel) => column.sort === 'ASC' || column.sort === 'DESC')\r\n      .map(function (elem: ColumnDatagridModel) {\r\n        return `${elem.dataField.toLowerCase()} ${elem.sort.toLowerCase()}`;\r\n      }).join(\",\");\r\n\r\n    return sortQuery\r\n  }\r\n\r\n  private generateFilterQuery(qb: QueryBuilder) {\r\n    /** OR */\r\n    // qb\r\n    //   .filter(\r\n    //     f => {\r\n    //       // for (let index = 0; index < 3; index++) {\r\n    //         f.filterPhrase(`contains('ferrari1') or contains('ferrari2')`)\r\n    //       // }\r\n    //       return f\r\n    //     }\r\n    //   )\r\n\r\n    /** AND */\r\n    // qb\r\n    //   .filter(\r\n    //     f => {\r\n    //       for (let index = 0; index < 3; index++) {\r\n    //         f.filterPhrase(`contains('ferrari1')`)\r\n    //       }\r\n    //       return f\r\n    //     }\r\n    //   )\r\n\r\n\r\n    let filterQuery: string = '';\r\n\r\n    let tabFilters: string[] = []\r\n    let cpt = 0\r\n\r\n    this.config.columns.forEach((column: ColumnDatagridModel) => {\r\n\r\n      let tabFiltersLength: number = tabFilters.length;\r\n\r\n      if (column.filters) {\r\n        \r\n        if (cpt === 1) {\r\n          tabFilters[0] = `(${tabFilters[0]})`\r\n        }\r\n\r\n        tabFilters = this.setBooleanColumnFilters(tabFilters, column, cpt)\r\n      }\r\n\r\n      if (tabFilters.length === tabFiltersLength + 1) cpt++\r\n    })\r\n\r\n    filterQuery = this.joinFiltersQuery(filterQuery, this.setBlocFilters(tabFilters))\r\n\r\n    if (this.searchGlobal) {\r\n      let filterSearchGlobal: string = this.config.columns\r\n        .filter((column: ColumnDatagridModel) => column.dataType === 'string')\r\n        .map((elem: ColumnDatagridModel) => {\r\n          return `(contains(${elem.dataField}, '${this.searchGlobal}'))`;\r\n        }).join(\" or \")\r\n\r\n      filterSearchGlobal = filterSearchGlobal ? `(${filterSearchGlobal})` : ''\r\n\r\n      filterQuery = this.joinFiltersQuery(filterQuery, filterSearchGlobal)\r\n    }\r\n\r\n    if (filterQuery) {\r\n      qb\r\n        .filter(\r\n          f => f.filterPhrase(filterQuery)\r\n        )\r\n    }\r\n\r\n    return qb\r\n  }\r\n\r\n  private joinFiltersQuery(filterQuery, newFilters: string): string {\r\n    if (filterQuery === '' || newFilters === '') return filterQuery || newFilters\r\n\r\n    return `${[filterQuery, newFilters].join(\" and \")}`\r\n  }\r\n\r\n  private setBlocFilters(tabFilters: string[]): string {\r\n\r\n    if (!tabFilters.length) return ''\r\n\r\n    const filtersToString: string = tabFilters.join(\" and \")\r\n\r\n    return `(${filtersToString})`\r\n  }\r\n\r\n  private setBooleanColumnFilters(tabFilters: string[], column: ColumnDatagridModel, cpt: number): string[] {\r\n\r\n    if (column.dataType === 'boolean') {\r\n\r\n      if (!column.filters.selectAll) {\r\n\r\n        if (column.filters.nestedValues.allSelected) {\r\n          tabFilters.push(`${column.dataField} eq true`)\r\n        } else if (column.filters.nestedValues.noSelected) {\r\n          tabFilters.push(`${column.dataField} eq false`)\r\n        }\r\n\r\n        if (cpt >= 1) {\r\n          tabFilters[cpt] = `(${tabFilters[cpt]})`\r\n        }\r\n      }\r\n    }\r\n\r\n    return tabFilters\r\n  }\r\n}\r\n","import {\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  HostListener,\r\n  Inject,\r\n  OnInit,\r\n  ViewChild,\r\n  ViewContainerRef,\r\n} from '@angular/core';\r\nimport { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { ModalOptionsModel } from 'cocori-ng/src/feature-core';\r\n\r\nimport { FormBuilderService } from '../../../../core/service/form-builder/form-builder.service';\r\n\r\n\r\n@Component({\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  selector: 'cocoring-confirm-modal',\r\n  templateUrl: './cocoring-confirm-modal.component.html',\r\n  styleUrls: ['./cocoring-confirm-modal.component.scss']\r\n})\r\nexport class CocoringConfirmModalComponent implements OnInit {\r\n  @ViewChild('FormContainerRef', { static: true, read: ViewContainerRef }) formContainerRef: ViewContainerRef;\r\n\r\n  formulaire: UntypedFormGroup;\r\n\r\n  constructor(\r\n    @Inject(MAT_DIALOG_DATA) public data: ModalOptionsModel,\r\n    private fb: UntypedFormBuilder,\r\n    private mdDialogRef: MatDialogRef<CocoringConfirmModalComponent>,\r\n    private formBuilderService: FormBuilderService) {\r\n    this.formulaire = this.fb.group({})\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    if (this.data.withForm) {\r\n      this.buildForm();\r\n    }\r\n  }\r\n\r\n  private buildForm() {\r\n    this.formulaire = this.formBuilderService\r\n      .setViewContainerRef(this.formContainerRef)\r\n      .generateFormInView()\r\n      .form;\r\n  }\r\n\r\n  public cancel() {\r\n    this.close(false);\r\n  }\r\n\r\n  public close(value) {\r\n    this.mdDialogRef.close(value);\r\n  }\r\n\r\n  public confirm() {\r\n    this.close(true);\r\n  }\r\n\r\n  @HostListener(\"keydown.esc\")\r\n  public onEsc() {\r\n    this.close(false);\r\n  }\r\n\r\n  public validateFrom({ value, valid }: { value: any, valid: boolean }) {\r\n\r\n    this.formBuilderService.onClickSubmit()\r\n\r\n    if (!valid) return;\r\n\r\n    console.log(\"values\", value);\r\n\r\n    this.close(value);\r\n  }\r\n}\r\n","<div class=\"header\">\r\n    <h1 mat-dialog-title>{{ data.title }}</h1>\r\n</div>\r\n<form [formGroup]=\"formulaire\" (ngSubmit)=\"validateFrom(formulaire)\">\r\n    <div mat-dialog-content>\r\n        <p class=\"dialog-message\" [innerHtml]=\"data.message | variableHtml\"></p>\r\n        <ng-template #FormContainerRef></ng-template>\r\n    </div>\r\n    <div mat-dialog-actions>\r\n        <button mat-button type=\"button\" (click)=\"cancel()\">{{ data.cancelText }}</button>\r\n        <button *ngIf=\"data.withForm === false\" mat-button type=\"button\" (click)=\"confirm()\" cdkFocusInitial>{{\r\n            data.confirmText }}</button>\r\n        <button *ngIf=\"data.withForm\" mat-button type=\"submit\" cdkFocusInitial>{{ data.confirmText }}</button>\r\n    </div>\r\n</form>","import { Injectable } from '@angular/core';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport { ModalOptionsModel } from 'cocori-ng/src/feature-core';\r\nimport { Observable } from 'rxjs';\r\nimport { map, take } from 'rxjs/operators';\r\n\r\nimport { CocoringConfirmModalComponent } from '../../shared/component/modal/confirm-modal/cocoring-confirm-modal.component';\r\n\r\n@Injectable({\r\n    providedIn: 'root',\r\n})\r\nexport class ConfirmModalService {\r\n    dialogRef: MatDialogRef<CocoringConfirmModalComponent>;\r\n\r\n    constructor(private dialog: MatDialog) { }\r\n\r\n    public open(options: ModalOptionsModel) {\r\n        this.dialogRef = this.dialog.open(CocoringConfirmModalComponent, {\r\n            data: <ModalOptionsModel>{\r\n                withForm: options.withForm,\r\n                title: options.title,\r\n                message: options.message,\r\n                cancelText: options.cancelText,\r\n                confirmText: options.confirmText\r\n            }\r\n        });\r\n    }\r\n\r\n    public confirmed<T>(): Observable<T> {\r\n        return this.dialogRef.afterClosed().pipe(\r\n            take(1),\r\n            map((res: T) => {\r\n                return res;\r\n            }\r\n            ));\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { MediaChange } from '@angular/flex-layout';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class FlexLayoutService {\r\n  public getAlias = (MediaChange: MediaChange[]) => {\r\n    return MediaChange[0].mqAlias;\r\n  }\r\n}\r\n","import { AfterViewInit, Directive, ElementRef, EventEmitter, HostListener, Input, Output, Renderer2 } from '@angular/core';\r\nimport { fromEvent } from 'rxjs';\r\nimport { debounceTime, map } from 'rxjs/operators';\r\n\r\ndeclare var ColorPicker: any\r\n\r\n/** doc du plugin Js : https://www.cssscript.com/chrome-devtools-color-picker/ */\r\n\r\n@Directive({\r\n    selector: '[cocoring-colorpicker]',\r\n})\r\nexport class CocoringColorpickerDirective implements AfterViewInit {\r\n\r\n    @Input('cocoring-colorpicker') color!: string\r\n\r\n    @Output('onColorChange') colorChangeEmitter: EventEmitter<string> = new EventEmitter();\r\n\r\n    defaultColor: string = '#1ddaf7';\r\n\r\n    /**\r\n     * The directive's constructor\r\n     */\r\n    public constructor(\r\n        private elementRef: ElementRef<HTMLElement>,\r\n        private renderer: Renderer2,\r\n    ) { }\r\n\r\n    ngAfterViewInit() {\r\n        const elem = this.elementRef.nativeElement;\r\n\r\n        let picker = new ColorPicker(elem, this.color ? this.color : this.defaultColor);\r\n\r\n        fromEvent(elem, 'colorChange').pipe(\r\n            debounceTime(400),\r\n            map((event: any) => event.detail.color)\r\n        ).subscribe((color: string) => {\r\n            this.colorChangeEmitter.emit(color);\r\n        });\r\n\r\n        // elem.addEventListener('colorChange', (event: any) => {\r\n        //     this.colorChangeEmitter.emit(event.detail.color);\r\n        // });\r\n    }\r\n\r\n    @HostListener(\"click\", [\"$event\"])\r\n    public onClick(event: any): void {\r\n        event.stopPropagation();\r\n    }\r\n}","import { NgModule } from '@angular/core';\r\n\r\nimport { CocoringColorpickerDirective } from './cocoring-colorpicker.directive';\r\n\r\n@NgModule({\r\n    declarations: [CocoringColorpickerDirective],\r\n    imports: [],\r\n    exports: [CocoringColorpickerDirective]\r\n})\r\nexport class CocoringColorpickerModule { }","import { Directive, HostBinding, HostListener, Input } from '@angular/core';\r\n\r\n@Directive({\r\n    selector: 'img[default]',\r\n})\r\nexport class CocoringDefaultImageDirective {\r\n    @Input()\r\n    default: string;\r\n\r\n    @HostListener('error')\r\n    onError() {\r\n        this.src = this.default || \"https://www.fortunehotels.in/images/404img.jpg\";\r\n    }\r\n\r\n    @HostBinding('src')\r\n    @Input()\r\n    src: string;\r\n}","import { NgModule } from '@angular/core';\r\n\r\nimport { CocoringDefaultImageDirective } from './cocoring-default-image.directive';\r\n\r\n@NgModule({\r\n    declarations: [CocoringDefaultImageDirective],\r\n    imports: [],\r\n    exports: [CocoringDefaultImageDirective]\r\n})\r\nexport class CocoringDefaultImageModule { }","import { Location } from '@angular/common';\r\nimport { Directive, HostListener } from '@angular/core';\r\n\r\n@Directive({\r\n    selector: '[cocoring-previousPage]'\r\n})\r\nexport class CocoringPreviousPageDirective {\r\n    constructor(private location: Location) { }\r\n\r\n    @HostListener('click')\r\n    onClick() {\r\n        this.location.back();\r\n    }\r\n}","import { NgModule } from '@angular/core';\r\n\r\nimport { CocoringPreviousPageDirective } from './cocoring-previous-page.directive';\r\n\r\n@NgModule({\r\n    declarations: [CocoringPreviousPageDirective],\r\n    imports: [],\r\n    exports: [CocoringPreviousPageDirective]\r\n})\r\nexport class CocoringPreviousPageModule { }","import { Directive } from '@angular/core';\r\n\r\nimport { DatagridService } from '../../../core';\r\n\r\n@Directive({\r\n    selector: '[cocoring-datagrid-group]',\r\n    providers: [DatagridService]\r\n})\r\nexport class CocoringDatagridGroupDirective { }","import { NgModule } from '@angular/core';\r\n\r\nimport { CocoringVariableHtmlPipe } from './cocoring-variable-html.pipe';\r\n\r\n@NgModule({\r\n    declarations: [CocoringVariableHtmlPipe],\r\n    imports: [],\r\n    exports: [CocoringVariableHtmlPipe]\r\n})\r\nexport class CocoringVariableHtmlModule { }","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n/** https://gist.github.com/JonCatmull/ecdf9441aaa37336d9ae2c7f9cb7289a */\r\n\r\ntype unit = 'octets' | 'Ko' | 'Mo' | 'Go' | 'To' | 'Po';\r\ntype unitPrecisionMap = {\r\n    [u in unit]: number;\r\n};\r\n\r\nconst defaultPrecisionMap: unitPrecisionMap = {\r\n    octets: 0,\r\n    Ko: 0,\r\n    Mo: 1,\r\n    Go: 1,\r\n    To: 2,\r\n    Po: 2\r\n};\r\n\r\n/*\r\n * Convert bytes into largest possible unit.\r\n * Takes an precision argument that can be a number or a map for each unit.\r\n * Usage:\r\n *   bytes | fileSize:precision\r\n * @example\r\n * // returns 1 KB\r\n * {{ 1500 | fileSize }}\r\n * @example\r\n * // returns 2.1 GB\r\n * {{ 2100000000 | fileSize }}\r\n * @example\r\n * // returns 1.46 KB\r\n * {{ 1500 | fileSize:2 }}\r\n */\r\n@Pipe({ name: 'fileSize' })\r\nexport class CocoringFileSizePipe implements PipeTransform {\r\n    private readonly units: unit[] = ['octets', 'Ko', 'Mo', 'Go', 'To', 'Po'];\r\n\r\n    transform(bytes: number = 0, precision: number | unitPrecisionMap = defaultPrecisionMap): string {\r\n        if (isNaN(parseFloat(String(bytes))) || !isFinite(bytes)) return '?';\r\n\r\n        let unitIndex = 0;\r\n\r\n        while (bytes >= 1024) {\r\n            bytes /= 1024;\r\n            unitIndex++;\r\n        }\r\n\r\n        const unit = this.units[unitIndex];\r\n\r\n        if (typeof precision === 'number') {\r\n            return `${bytes.toFixed(+precision)} ${unit}`;\r\n        }\r\n        return `${bytes.toFixed(precision[unit])} ${unit}`;\r\n    }\r\n}","import { NgModule } from '@angular/core';\r\n\r\nimport { CocoringFileSizePipe } from './cocoring-file-size.pipe';\r\n\r\n@NgModule({\r\n    declarations: [CocoringFileSizePipe],\r\n    imports: [],\r\n    exports: [CocoringFileSizePipe]\r\n})\r\nexport class CocoringFileSizeModule { }","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n    name: 'prettyprint'\r\n})\r\nexport class CocoringPrettyPrintPipe implements PipeTransform {\r\n    transform(val) {\r\n        return JSON.stringify(val, undefined, 4)\r\n            .replace(/ /g, '&nbsp;')\r\n            .replace(/\\n/g, '<br/>');\r\n    }\r\n}","import { NgModule } from '@angular/core';\r\n\r\nimport { CocoringPrettyPrintPipe } from './cocoring-pretty-print.pipe';\r\n\r\n@NgModule({\r\n    declarations: [CocoringPrettyPrintPipe],\r\n    imports: [],\r\n    exports: [CocoringPrettyPrintPipe]\r\n})\r\nexport class CocoringPrettyPrintModule { }","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\r\n\r\n@Pipe({\r\n    name: 'sanitizeUrl',\r\n    pure: false\r\n})\r\nexport class CocoringSanitizeUrlPipe implements PipeTransform {\r\n    constructor(private sanitizer: DomSanitizer) {\r\n    }\r\n    transform(url: string): SafeHtml {\r\n        return this.sanitizer.bypassSecurityTrustResourceUrl(url);\r\n    }\r\n}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { CocoringSanitizeUrlPipe } from './cocoring-sanitize-url.pipe';\r\n\r\n@NgModule({\r\n    declarations: [CocoringSanitizeUrlPipe],\r\n    imports: [],\r\n    exports: [CocoringSanitizeUrlPipe]\r\n})\r\nexport class CocoringSanitizeUrlModule { }","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n    name: 'truncate'\r\n})\r\nexport class CocoringTruncatePipe implements PipeTransform {\r\n    transform(value: string, args: any[]): string {\r\n        const limit = args.length > 0 ? parseInt(args[0], 10) : 20;\r\n        const trail = args.length > 1 ? args[1] : '...';\r\n        return value.length > limit ? value.substring(0, limit) + trail : value;\r\n    }\r\n}","import { NgModule } from '@angular/core';\r\n\r\nimport { CocoringTruncatePipe } from './cocoring-truncate.pipe';\r\n\r\n@NgModule({\r\n    declarations: [CocoringTruncatePipe],\r\n    imports: [],\r\n    exports: [CocoringTruncatePipe]\r\n})\r\nexport class CocoringTruncateModule { }","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\n\r\nimport { CocoringInputErrorComponent } from './cocoring-input-error.component';\r\n\r\n@NgModule({\r\n    declarations: [CocoringInputErrorComponent],\r\n    imports: [\r\n        CommonModule,\r\n        MatFormFieldModule\r\n    ],\r\n    exports: [CocoringInputErrorComponent]\r\n})\r\nexport class CocoringInputErrorModule { }","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Injector, Input, OnInit } from '@angular/core';\r\nimport {\r\n  ConfigAPIsFile,\r\n  ConfigWysiwygModel,\r\n  FileModel,\r\n  InitWysiwyg,\r\n  PluginsAvailable,\r\n  WysiwygService,\r\n} from 'cocori-ng/src/feature-core';\r\nimport { debounceTime, takeUntil, tap } from 'rxjs/operators';\r\n\r\nimport { DefaultConfigComponent, UploaderService } from '../../../core';\r\nimport { ExtendInputsComponent } from '../form/inputs/extend-inputs/extend-inputs.component';\r\n\r\n// Doc composant TinyMCE - Angular\r\n// https://www.tiny.cloud/docs/integrations/angular/#supportedangularversions\r\n// file : https://www.tiny.cloud/docs/demo/file-picker/\r\n\r\n@Component({\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  selector: 'cocoring-wysiwyg',\r\n  templateUrl: './cocoring-wysiwyg.component.html',\r\n  styleUrls: ['./cocoring-wysiwyg.component.scss'],\r\n  providers: [WysiwygService, UploaderService]\r\n})\r\nexport class CocoringWysiwygComponent extends ExtendInputsComponent implements OnInit {\r\n  initParams: any\r\n  editor: any\r\n  apisFile: ConfigAPIsFile\r\n  fileModel: FileModel = { fileName: null, description: null }\r\n\r\n  @Input() apiKey: string;\r\n  @Input() height: number = 500;\r\n  @Input() inline: boolean = false;\r\n  @Input() menubar: boolean = true;\r\n  @Input() plugins: PluginsAvailable[] = <PluginsAvailable[]>DefaultConfigComponent.wysiwyg.plugins;\r\n  @Input() toolbar: string = DefaultConfigComponent.wysiwyg.toolbar;\r\n  @Input() quickbarsInsert: string = DefaultConfigComponent.wysiwyg.quickbarsInsert;\r\n  callbackFileUplad: any;\r\n  fileUploaded: File;\r\n  uploadImageDialogInstance: any;\r\n\r\n\r\n  @Input()\r\n  set config(config: ConfigWysiwygModel) {\r\n    if (!config) {\r\n      throw new Error(`La config du composant uploader n'est pas correcte... config: ${config}`);\r\n    }\r\n\r\n    this.apiKey = config.apiKey\r\n\r\n    this.apisFile = { apiFile: config.apiFile, apiFileDownload: config.apiFileDownload }\r\n\r\n    this.configInput(config)\r\n\r\n    this.handleParamsWysiwyg(config.params)\r\n\r\n    this.addControlForm();\r\n  }\r\n\r\n  private handleParamsWysiwyg(params: InitWysiwyg) {\r\n    if (!params) return;\r\n\r\n    const height = params.height || this.height\r\n    const inline = params.inline || this.inline\r\n    const menubar = params.menubar || this.menubar\r\n    const plugins = params.plugins || this.plugins\r\n    const quickbars = params.quickbars || this.quickbarsInsert\r\n    const toolbar = params.toolbar ? this.wysiwygService.toolbarOptionsToString(params.toolbar) : this.toolbar\r\n\r\n    this.initParams = {\r\n      placeholder: 'Ecrivez quelque chose',\r\n      toolbar_mode: 'scrolling', // https://www.tiny.cloud/docs/configure/editor-appearance/#toolbar_sticky\r\n      language: 'fr_FR',\r\n      resize: false,\r\n      height: height,\r\n      inline: inline,\r\n      image_advtab: true,\r\n      menubar: 'file edit insert format table tools',\r\n      // menubar: false,\r\n      toolbar: toolbar,\r\n      // toolbar: false,\r\n      contextmenu: false,\r\n      plugins: plugins,\r\n      quickbars_selection_toolbar: 'bold italic underline forecolor backcolor | fontsizeselect | alignleft | aligncenter | alignright | quicklink | removeformat',\r\n      quickbars_insert_toolbar: quickbars,\r\n      image_title: true,\r\n      automatic_uploads: true,\r\n      paste_data_images: true,\r\n      setup: editor => {\r\n        this.editor = editor;\r\n\r\n        editor.on('OpenWindow', (eventDetails) => {\r\n          this.uploadImageDialogInstance = eventDetails.dialog;\r\n        });\r\n\r\n        editor.on('init', () => { });\r\n\r\n        editor.on('change', () => { });\r\n      },\r\n      file_picker_types: 'image',\r\n      // https://www.tiny.cloud/docs/configure/file-image-upload/\r\n      file_picker_callback: (cb, value, meta) => this.filePickerCallback(cb, value, meta)\r\n    }\r\n  }\r\n\r\n  constructor(\r\n    injector: Injector,\r\n    private wysiwygService: WysiwygService,\r\n    public uploaderService: UploaderService,\r\n    private cdr: ChangeDetectorRef) {\r\n    super(injector);\r\n  }\r\n\r\n  ngOnInit(): void {\r\n\r\n    this.uploaderService.apisFile = this.apisFile\r\n\r\n    this.onFileUploaded()\r\n\r\n    this.onError()\r\n\r\n    this.onValueEditorChanged()\r\n  }\r\n\r\n  private filePickerCallback(cb, value, meta) {\r\n    this.callbackFileUplad = cb\r\n\r\n    var input = document.createElement('input');\r\n\r\n    input.setAttribute('type', 'file');\r\n    input.setAttribute('accept', 'image/*');\r\n\r\n    input.onchange = () => {\r\n      this.uploadImageDialogInstance.block('Uploading file...');\r\n\r\n      this.fileUploaded = input.files[0];\r\n\r\n      this.fileModel.fileName = this.fileUploaded.name\r\n\r\n      this.cdr.detectChanges()\r\n\r\n      this.uploaderService.uploadFile(this.fileUploaded)\r\n    }\r\n\r\n    input.click();\r\n  }\r\n\r\n  private onFileUploaded() {\r\n    this.uploaderService.fileUploaded$.pipe(\r\n      takeUntil(this.destroy$),\r\n      tap((id: string) => this.validateFileValue(id)),\r\n      tap(_ => this.uploadImageDialogInstance.unblock()),\r\n    ).subscribe()\r\n  }\r\n  private onError() {\r\n    this.uploaderService.fileOnError$.pipe(\r\n      takeUntil(this.destroy$),\r\n      tap(_ => this.uploadImageDialogInstance.unblock()),\r\n      tap(_ => this.uploadImageDialogInstance.close()),\r\n      tap(_ => {\r\n        this.editor.notificationManager.open({\r\n          text: 'Une erreur est survenue, veuillez réessayer',\r\n          type: 'error'\r\n        });\r\n      }),\r\n    ).subscribe()\r\n  }\r\n\r\n  private onValueEditorChanged() {\r\n    this.formGroup.get(this.nameControl).valueChanges.pipe(\r\n      takeUntil(this.destroy$),\r\n      debounceTime(400),\r\n      tap(_ => this.cdr.detectChanges()),\r\n    ).subscribe()\r\n  }\r\n\r\n  private validateFileValue(id: string) {\r\n    this.fileModel.id = id\r\n\r\n    this.callbackFileUplad(this.apisFile.apiFile(id), { title: this.fileModel.fileName });\r\n  }\r\n}\r\n","<div [formGroup]=\"formGroup\">\r\n  <editor #tinymce [formControlName]=\"nameControl\" [apiKey]=\"apiKey\" [init]=\"initParams\"></editor>\r\n  <mat-error *ngIf=\"formGroup.get(nameControl).errors\" error-handler [form]=\"formGroup\" [controlName]=\"nameControl\">\r\n  </mat-error>\r\n</div>","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { EditorModule } from '@tinymce/tinymce-angular';\r\n\r\nimport { CocoringInputErrorModule } from '../error-handler/input-error-handler/cocoring-input-error.module';\r\nimport { CocoringWysiwygComponent } from './cocoring-wysiwyg.component';\r\n\r\n@NgModule({\r\n  declarations: [\r\n    CocoringWysiwygComponent\r\n  ],\r\n  imports: [\r\n    CommonModule,\r\n    ReactiveFormsModule,\r\n    CocoringInputErrorModule,\r\n    EditorModule,\r\n  ],\r\n  exports: [\r\n    CocoringWysiwygComponent\r\n  ],\r\n})\r\nexport class CocoringWysiwygModule { }","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { MAT_SNACK_BAR_DATA, MatSnackBar } from '@angular/material/snack-bar';\r\nimport { ErrorStacktraceModel } from 'cocori-ng/src/feature-core';\r\n\r\n// https://medium.com/@abshakekumar/snackbar-angular-material-component-with-multiple-actions-88ea3a9d3ddd\r\n@Component({\r\n  selector: 'toast-error-stacktrace',\r\n  styleUrls: ['./toast-error-stacktrace.component.scss'],\r\n  templateUrl: './toast-error-stacktrace.component.html'\r\n})\r\nexport class ToastErrorStacktraceComponent implements OnInit {\r\n\r\n  toggleVisibility : boolean = true;\r\n  errorDebugMessages: string[] = [];\r\n\r\n  constructor(\r\n    private matSnackBar: MatSnackBar,\r\n    @Inject(MAT_SNACK_BAR_DATA) public data: ErrorStacktraceModel\r\n  ) { }\r\n\r\n  ngOnInit() {\r\n    this.errorDebugMessages = <string[]>this.data.stacktrace?.httpError?.error?.debug?.messages\r\n  }\r\n\r\n  afficheCache(){\r\n    this.toggleVisibility = !this.toggleVisibility;\r\n  }\r\n\r\n  close(event): void {\r\n    this.matSnackBar.dismiss();\r\n\r\n    event.preventDefault();\r\n  }\r\n\r\n  trackBy(index: number) {\r\n    return index;\r\n  }\r\n}\r\n","<div class=\"notification-containeur\">\r\n    <div class=\"container-messages\">\r\n        <div>{{data.message}}</div>\r\n        <div *ngIf=\"data.stacktrace\" class=\"link-plus\" (click)=\"afficheCache()\" title=\"Afficher / masquer les détails techniques de l'erreur\">\r\n\r\n            <div class=\"__link-plus\" *ngIf=\"toggleVisibility; else templateMoins\">\r\n                <div>afficher plus de détails</div>\r\n                <mat-icon>expand_more</mat-icon>\r\n            </div>\r\n            <ng-template #templateMoins>\r\n                <div class=\"__link-plus\">\r\n                    <div>masquer les détails</div>\r\n                    <mat-icon>expand_less</mat-icon>\r\n                </div>\r\n            </ng-template>\r\n        </div>\r\n        <div *ngIf=\"!toggleVisibility\" class=\"stacktrace\">\r\n            <div>Date : {{data.stacktrace.dateError}}</div>\r\n            <div>Status : {{data.stacktrace.httpError?.status}} - Id : {{data.stacktrace.httpError?.error.id}}</div>\r\n            <div *ngIf=\"errorDebugMessages.length\">\r\n                <div *ngFor=\"let message of errorDebugMessages; let i = index; trackBy: trackBy\">{{message}}</div>\r\n            </div>\r\n            <div>\r\n                {{data.stacktrace.httpError?.message}}\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <button mat-button type=\"button\" class=\"mat-button\" (click)=\"close($event)\">\r\n        <span class=\"mat-button-wrapper\">Fermer</span>\r\n        <div class=\"mat-button-ripple mat-ripple\"></div>\r\n        <div class=\"mat-button-focus-overlay\"></div>\r\n    </button>\r\n</div>","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\n\r\nimport { ToastErrorStacktraceComponent } from './toast-error-stacktrace.component';\r\n\r\n@NgModule({\r\n    declarations: [ToastErrorStacktraceComponent],\r\n    imports: [\r\n        CommonModule,\r\n        MatIconModule,\r\n    ],\r\n    exports: [ToastErrorStacktraceComponent]\r\n})\r\nexport class ToastErrorStacktraceModule { }","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\n\r\nimport { CocoringVariableHtmlModule } from '../../../pipe/variable-html/cocoring-variable-html.module';\r\nimport { CocoringInputErrorModule } from '../../error-handler/input-error-handler/cocoring-input-error.module';\r\nimport { CocoringConfirmModalComponent } from './cocoring-confirm-modal.component';\r\n\r\n@NgModule({\r\n    declarations: [\r\n        CocoringConfirmModalComponent,\r\n    ],\r\n    imports: [\r\n        CommonModule,\r\n        ReactiveFormsModule,\r\n        MatFormFieldModule,\r\n        MatDialogModule,\r\n        MatButtonModule,\r\n        CocoringVariableHtmlModule,\r\n        CocoringInputErrorModule,\r\n    ],\r\n    exports: [\r\n        CocoringConfirmModalComponent,\r\n    ]\r\n})\r\nexport class CocoringConfirmModalModule { }","import { Component, Input, OnInit, ViewChild, ViewContainerRef } from '@angular/core';\r\nimport { ButtonSchema } from 'cocori-ng/src/feature-core';\r\n\r\nimport { FormBuilderService } from '../../../../core/service/form-builder/form-builder.service';\r\n\r\n@Component({\r\n    selector: 'cocoring-buttons-group',\r\n    templateUrl: 'cocoring-buttons-group.component.html',\r\n})\r\n\r\nexport class CocoringButtonsGroupComponent implements OnInit {\r\n    @ViewChild('ButtonsContainerRef', { static: true, read: ViewContainerRef }) buttonsContainerRef: ViewContainerRef;\r\n\r\n    @Input()\r\n    set config(buttonsSchema: ButtonSchema[]) {\r\n\r\n        this.buttonsContainerRef.clear();\r\n\r\n        if (!buttonsSchema) return;\r\n\r\n        console.log(\"current form\", this.formBuilderService.form);\r\n        console.log(\"schemaDatasButtons\", buttonsSchema);\r\n\r\n        if (buttonsSchema && buttonsSchema.length) {\r\n            this.buildView(buttonsSchema);\r\n        }\r\n    }\r\n\r\n    constructor(\r\n        public formBuilderService: FormBuilderService) { }\r\n\r\n    ngOnInit() {\r\n    }\r\n\r\n    buildView(buttons: ButtonSchema[]) {\r\n\r\n        const formBuilder: FormBuilderService = this.formBuilderService\r\n            .setViewContainerRef(this.buttonsContainerRef)\r\n\r\n        buttons.forEach((configSchema: ButtonSchema) => {\r\n\r\n            formBuilder\r\n                .addButton(configSchema.text, config => config\r\n                    .isTypeSubmit(configSchema.submit)\r\n                    .outputCallback(this.buttonAddCallback.bind(this)));\r\n        })\r\n    }\r\n\r\n    buttonAddCallback(nameControl: string) {\r\n        console.log(\"Bouton ajouté avec succès : \", nameControl);\r\n    }\r\n}\r\n","<ng-template #ButtonsContainerRef></ng-template>\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { CocoringButtonsGroupComponent } from './cocoring-buttons-group.component';\r\n\r\n@NgModule({\r\n    declarations: [CocoringButtonsGroupComponent],\r\n    imports: [],\r\n    exports: [CocoringButtonsGroupComponent]\r\n})\r\nexport class CocoringButtonsGroupModule { }","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\n\r\nimport { InputIconComponent } from './input-icon.component';\r\n\r\n@NgModule({\r\n    declarations: [\r\n        InputIconComponent\r\n    ],\r\n    imports: [\r\n        CommonModule,\r\n        MatButtonModule,\r\n        MatIconModule,\r\n    ],\r\n    exports: [\r\n        InputIconComponent\r\n    ]\r\n})\r\nexport class InputIconModule { }","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\n\r\nimport { CocoringVariableHtmlModule } from '../../../../pipe/variable-html/cocoring-variable-html.module';\r\nimport { CocoringInputErrorModule } from '../../../error-handler/input-error-handler/cocoring-input-error.module';\r\nimport { CocoringCheckboxComponent } from './cocoring-checkbox.component';\r\n\r\n@NgModule({\r\n    declarations: [\r\n        CocoringCheckboxComponent,\r\n    ],\r\n    imports: [\r\n        CommonModule,\r\n        ReactiveFormsModule,\r\n        MatCheckboxModule,\r\n        MatFormFieldModule,\r\n        CocoringInputErrorModule,\r\n        CocoringVariableHtmlModule,\r\n    ],\r\n    exports: [\r\n        CocoringCheckboxComponent,\r\n    ]\r\n})\r\nexport class CocoringCheckboxModule { }","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\n\r\nimport { CocoringInputErrorModule } from '../../../error-handler/input-error-handler/cocoring-input-error.module';\r\nimport { CocoringCheckboxIndeterminateComponent } from './checkbox-indeterminate.component';\r\n\r\n@NgModule({\r\n    declarations: [\r\n        CocoringCheckboxIndeterminateComponent,\r\n    ],\r\n    imports: [\r\n        CommonModule,\r\n        FormsModule,\r\n        ReactiveFormsModule,\r\n        MatCheckboxModule,\r\n        MatFormFieldModule,\r\n        CocoringInputErrorModule,\r\n    ],\r\n    exports: [\r\n        CocoringCheckboxIndeterminateComponent,\r\n    ]\r\n})\r\nexport class CocoringCheckboxIndeterminateModule { }","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { NgxMaskModule } from 'ngx-mask';\r\n\r\nimport { CocoringInputErrorModule } from '../../../error-handler/input-error-handler/cocoring-input-error.module';\r\nimport { InputIconModule } from '../input-icon/input-icon.module';\r\nimport { CocoringDateComponent } from './cocoring-date.component';\r\n\r\n@NgModule({\r\n    declarations: [\r\n        CocoringDateComponent,\r\n    ],\r\n    imports: [\r\n        CommonModule,\r\n        ReactiveFormsModule,\r\n        MatFormFieldModule,\r\n        MatInputModule,\r\n        MatDatepickerModule,\r\n        CocoringInputErrorModule,\r\n        InputIconModule,\r\n        NgxMaskModule.forRoot(),\r\n    ],\r\n    exports: [\r\n        CocoringDateComponent,\r\n    ]\r\n})\r\nexport class CocoringDateModule { }","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\n\r\nimport { CocoringInputErrorModule } from '../../../error-handler/input-error-handler/cocoring-input-error.module';\r\nimport { CocoringSlideToggleComponent } from './cocoring-slide-toggle.component';\r\n\r\n@NgModule({\r\n    declarations: [\r\n        CocoringSlideToggleComponent,\r\n    ],\r\n    imports: [\r\n        CommonModule,\r\n        ReactiveFormsModule,\r\n        MatFormFieldModule,\r\n        MatInputModule,\r\n        MatSlideToggleModule,\r\n        CocoringInputErrorModule,\r\n    ],\r\n    exports: [\r\n        CocoringSlideToggleComponent,\r\n    ]\r\n})\r\nexport class CocoringSlideToggleModule { }","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\n\r\nimport { CocoringInputErrorModule } from '../../../error-handler/input-error-handler/cocoring-input-error.module';\r\nimport { InputIconModule } from '../input-icon/input-icon.module';\r\nimport { CocoringEmailComponent } from './cocoring-email.component';\r\n\r\n@NgModule({\r\n    declarations: [\r\n        CocoringEmailComponent,\r\n    ],\r\n    imports: [\r\n        CommonModule,\r\n        ReactiveFormsModule,\r\n        MatFormFieldModule,\r\n        MatInputModule,\r\n        CocoringInputErrorModule,\r\n        InputIconModule,\r\n    ],\r\n    exports: [\r\n        CocoringEmailComponent,\r\n    ]\r\n})\r\nexport class CocoringEmailModule { }","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\n\r\nimport { CocoringInputErrorModule } from '../../../error-handler/input-error-handler/cocoring-input-error.module';\r\nimport { InputIconModule } from '../input-icon/input-icon.module';\r\nimport { CocoringNumberComponent } from './cocoring-number.component';\r\n\r\n@NgModule({\r\n    declarations: [\r\n        CocoringNumberComponent,\r\n    ],\r\n    imports: [\r\n        CommonModule,\r\n        ReactiveFormsModule,\r\n        MatFormFieldModule,\r\n        MatInputModule,\r\n        CocoringInputErrorModule,\r\n        InputIconModule,\r\n    ],\r\n    exports: [\r\n        CocoringNumberComponent,\r\n    ]\r\n})\r\nexport class CocoringNumberModule { }","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\n\r\nimport { CocoringInputErrorModule } from '../../../error-handler/input-error-handler/cocoring-input-error.module';\r\nimport { InputIconModule } from '../input-icon/input-icon.module';\r\nimport { CocoringPasswordComponent } from './cocoring-password.component';\r\n\r\n@NgModule({\r\n    declarations: [\r\n        CocoringPasswordComponent,\r\n    ],\r\n    imports: [\r\n        CommonModule,\r\n        ReactiveFormsModule,\r\n        InputIconModule,\r\n        MatFormFieldModule,\r\n        MatButtonModule,\r\n        MatIconModule,\r\n        MatInputModule,\r\n        CocoringInputErrorModule,\r\n    ],\r\n    exports: [\r\n        CocoringPasswordComponent\r\n    ]\r\n})\r\nexport class CocoringPasswordModule { }","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatSelectModule } from '@angular/material/select';\r\n\r\nimport { CocoringInputErrorModule } from '../../../error-handler/input-error-handler/cocoring-input-error.module';\r\nimport { InputIconModule } from '../input-icon/input-icon.module';\r\nimport { CocoringSelectComponent } from './cocoring-select.component';\r\n\r\n@NgModule({\r\n    declarations: [CocoringSelectComponent],\r\n    imports: [\r\n        CommonModule,\r\n        ReactiveFormsModule,\r\n        MatFormFieldModule,\r\n        MatSelectModule,\r\n        CocoringInputErrorModule,\r\n        InputIconModule,\r\n    ],\r\n    exports: [CocoringSelectComponent]\r\n})\r\nexport class CocoringSelectModule { }","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\n\r\nimport { CocoringInputErrorModule } from '../../../error-handler/input-error-handler/cocoring-input-error.module';\r\nimport { InputIconModule } from '../input-icon/input-icon.module';\r\nimport { CocoringTextComponent } from './cocoring-text.component';\r\n\r\n@NgModule({\r\n    declarations: [\r\n        CocoringTextComponent,\r\n    ],\r\n    imports: [\r\n        CommonModule,\r\n        ReactiveFormsModule,\r\n        MatFormFieldModule,\r\n        MatInputModule,\r\n        CocoringInputErrorModule,\r\n        InputIconModule\r\n    ],\r\n    exports: [CocoringTextComponent]\r\n})\r\nexport class CocoringTextModule { }","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\n\r\nimport { CocoringInputErrorModule } from '../../../error-handler/input-error-handler/cocoring-input-error.module';\r\nimport { InputIconModule } from '../input-icon/input-icon.module';\r\nimport { CocoringTextareaComponent } from './cocoring-textarea.component';\r\n\r\n@NgModule({\r\n    declarations: [CocoringTextareaComponent],\r\n    imports: [\r\n        CommonModule,\r\n        ReactiveFormsModule,\r\n        MatFormFieldModule,\r\n        MatInputModule,\r\n        CocoringInputErrorModule,\r\n        InputIconModule\r\n    ],\r\n    exports: [CocoringTextareaComponent]\r\n})\r\nexport class CocoringTextareaModule { }","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\n\r\nimport { CocoringInputErrorModule } from '../../../error-handler/input-error-handler/cocoring-input-error.module';\r\nimport { CocoringViewerComponent } from './cocoring-viewer.component';\r\n\r\n@NgModule({\r\n    declarations: [CocoringViewerComponent],\r\n    imports: [\r\n        CommonModule,\r\n        ReactiveFormsModule,\r\n        MatFormFieldModule,\r\n        MatInputModule,\r\n        CocoringInputErrorModule,\r\n    ],\r\n    exports: [CocoringViewerComponent]\r\n})\r\nexport class CocoringViewerModule { }","import { Component, EventEmitter, Input, OnDestroy, Output, ViewChild, ViewContainerRef } from '@angular/core';\r\nimport { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';\r\nimport {\r\n    ButtonSchema,\r\n    CommandMappings,\r\n    FieldSchema,\r\n    FormContainerInputs,\r\n    FormSchema,\r\n    MappingBuilderService,\r\n    SubmitDatas,\r\n} from 'cocori-ng/src/feature-core';\r\nimport { Subject, takeUntil } from 'rxjs';\r\n\r\nimport { FormBuilderService } from '../../../../core';\r\n\r\n@Component({\r\n    selector: 'cocoring-form-container',\r\n    templateUrl: 'cocoring-form-container.component.html',\r\n    providers: [FormBuilderService, MappingBuilderService]\r\n})\r\n\r\nexport class CocoringFormContainerComponent implements OnDestroy {\r\n    @ViewChild('FormContainerRef', { static: true, read: ViewContainerRef }) formContainerRef: ViewContainerRef;\r\n\r\n    currentForm: UntypedFormGroup;\r\n    schemaDatasForm: FormSchema;\r\n    formBuildedSubject: Subject<boolean>; /** tous les composants fields ont été ajoutés à la vue */\r\n    schemaDatasButtons: ButtonSchema[];\r\n    objectCommand: Object = {};\r\n\r\n    private readonly destroy$ = new Subject();\r\n\r\n    @Input()\r\n    set config(formSchema: FormContainerInputs) {\r\n        if (!formSchema) return;\r\n\r\n        this.schemaDatasForm = formSchema.form;\r\n\r\n        /** todo: filtrer les boutons associés au formulaire en entrée */\r\n        const schemaDatasButtons = formSchema.buttons || [];\r\n\r\n        this.schemaDatasButtons = this.filterButtonsAssociatedToForm(this.schemaDatasForm, \"name\", schemaDatasButtons, \"formName\");\r\n\r\n        this.formBuilderService.newForm();\r\n        this.formContainerRef.clear();\r\n\r\n        this.initEventFormBuilded();\r\n        this.buildCurrentForm();\r\n    }\r\n\r\n    @Output() onComponentReady: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n    @Output() onSubmit: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n    constructor(\r\n        public fb: UntypedFormBuilder,\r\n        public formBuilderService: FormBuilderService,\r\n        public mappingBuilderService: MappingBuilderService\r\n    ) {\r\n        this.formBuilderService.newForm();\r\n    }\r\n\r\n    ngOnDestroy(): void {\r\n        this.destroy$.next(undefined);\r\n        this.destroy$.complete();\r\n    }\r\n\r\n    private buildCurrentForm() {\r\n        const formBuilder: FormBuilderService =\r\n            this.formBuilderService\r\n                .identityForm(this.schemaDatasForm.id, this.schemaDatasForm.name)\r\n                .setViewContainerRef(this.formContainerRef);\r\n\r\n        this.schemaDatasForm.fields.forEach((field: FieldSchema) => {\r\n            formBuilder.addInput(field.name, config => config\r\n                .nameLabel(field.label)\r\n                .inRelationWith(<never>field.inRelationWith)\r\n                .dataSource(field.dataSource)\r\n                .typeInput(field.type)\r\n            );\r\n        });\r\n\r\n        /** todo: Utiliser une variable ou direct l'objet */\r\n        this.currentForm = this.formBuilderService.form;\r\n    }\r\n\r\n    /** lorsque tous les composants ont été initialisés avec succès */\r\n    private initEventFormBuilded() {\r\n        this.formBuildedSubject = new Subject<boolean>();\r\n        let formFieldsAdded: number = 0;\r\n\r\n        this.formBuildedSubject.pipe(\r\n            takeUntil(this.destroy$)\r\n        ).subscribe((isBuilded: boolean) => {\r\n            formFieldsAdded++;\r\n\r\n            if (formFieldsAdded === this.schemaDatasForm.fields.length) {\r\n                this.onComponentReady.emit(true);\r\n            }\r\n        })\r\n    }\r\n\r\n    /** composant aijouté au formulaire angular */\r\n    private childAdded(nameControl: string) {\r\n        console.log(\"input ajouté avec succès : \", nameControl)\r\n        this.formBuildedSubject.next(true);\r\n    }\r\n\r\n    validateForm({ value, valid }: { value: Object, valid: boolean }) {\r\n        if (valid) {\r\n            const mappedValues: Object = this.mapFormValues(value);\r\n\r\n            this.onSubmit.emit(<SubmitDatas>{ rawValues: value, mappedValues: mappedValues });\r\n        }\r\n    }\r\n\r\n    private filterButtonsAssociatedToForm<A, KA extends keyof A, B, KB extends keyof B>(objA: A, keyA: KA, objB: B[], keyB: KB): B[] {\r\n        const tabOfB: B[] = [];\r\n\r\n        objB.forEach((B) => {\r\n            if (<unknown>B[keyB] === <unknown>objA[keyA]) {\r\n                tabOfB.push(B);\r\n            }\r\n        })\r\n\r\n        return tabOfB;\r\n    }\r\n\r\n    private mapFormValues(valueForm: Object): Object {\r\n        const commandMappings: CommandMappings[] = this.schemaDatasButtons\r\n            .find((button: ButtonSchema) => button.submit === true)\r\n            ?.commandMappings\r\n\r\n        this.mappingBuilderService.init();\r\n        this.mappingBuilderService.setNameForm = this.schemaDatasForm.name;\r\n        this.mappingBuilderService.valuesForm = valueForm;\r\n\r\n        commandMappings.forEach((mapping: CommandMappings) => {\r\n            this.mappingBuilderService.map(mapping)\r\n        })\r\n\r\n        console.log(\"mapping result\", this.mappingBuilderService.getMapping())\r\n\r\n        return this.mappingBuilderService.getMapping();\r\n    }\r\n}\r\n","<!-- utilier ngTemplateOutlet ex: https://blog.bitsrc.io/component-reusability-techniques-with-angular-727a6c603ad2 -->\r\n\r\n<form [formGroup]=\"currentForm\" (ngSubmit)=\"validateForm(currentForm)\">\r\n    <h1>{{formBuilderService.formName}}</h1>\r\n    <ng-template #FormContainerRef></ng-template>\r\n    <cocoring-buttons-group *ngIf=\"schemaDatasButtons.length\" [config]=\"schemaDatasButtons\"></cocoring-buttons-group>\r\n</form>","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\n\r\nimport { CocoringButtonsGroupModule } from '../form-buttons/cocoring-buttons-group.module';\r\nimport { CocoringFormContainerComponent } from './cocoring-form-container.component';\r\n\r\n@NgModule({\r\n    declarations: [CocoringFormContainerComponent],\r\n    imports: [\r\n        CommonModule,\r\n        ReactiveFormsModule,\r\n        CocoringButtonsGroupModule\r\n    ],\r\n    exports: [CocoringFormContainerComponent]\r\n})\r\nexport class CocoringFormContainerModule { }","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\n\r\nimport { CocoringButtonComponent } from './cocoring-button.component';\r\n\r\n@NgModule({\r\n    declarations: [CocoringButtonComponent],\r\n    imports: [\r\n        CommonModule,\r\n        MatIconModule,\r\n        MatButtonModule\r\n    ],\r\n    exports: [CocoringButtonComponent]\r\n})\r\nexport class CocoringButtonModule { }","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { RouterModule } from '@angular/router';\r\n\r\nimport { CocoringButtonModule } from '../button/cocoring-button.module';\r\nimport { CocoringButtonLinkComponent } from './cocoring-button-link.component';\r\n\r\n@NgModule({\r\n    declarations: [CocoringButtonLinkComponent],\r\n    imports: [\r\n        CommonModule,\r\n        RouterModule,\r\n        MatIconModule,\r\n        MatButtonModule,\r\n        CocoringButtonModule,\r\n    ],\r\n    exports: [CocoringButtonLinkComponent]\r\n})\r\nexport class CocoringButtonLinkModule { }","import { Component, Inject, OnInit, ViewChild, ViewContainerRef } from '@angular/core';\r\nimport { MAT_BOTTOM_SHEET_DATA, MatBottomSheetRef } from '@angular/material/bottom-sheet';\r\nimport { FileActions, FileDetailsComponent, InjectComponentService } from 'cocori-ng/src/feature-core';\r\n\r\n@Component({\r\n  selector: 'cocoring-uploader-bottom-sheet',\r\n  templateUrl: './cocoring-uploader-bottom-sheet.component.html',\r\n  styleUrls: ['./cocoring-uploader-bottom-sheet.component.scss']\r\n})\r\nexport class CocoringUploaderBottomSheetComponent implements OnInit {\r\n  @ViewChild('ContainerRef', { static: true, read: ViewContainerRef }) containerRef: ViewContainerRef;\r\n\r\n  constructor(\r\n    private injectComponentService: InjectComponentService,\r\n    private _bottomSheetRef: MatBottomSheetRef<CocoringUploaderBottomSheetComponent>,\r\n    @Inject(MAT_BOTTOM_SHEET_DATA) public data: FileDetailsComponent) { }\r\n\r\n  ngOnInit(): void {\r\n    this.addContent()\r\n  }\r\n\r\n  addContent() {\r\n    if (!this.data.component) return;\r\n\r\n    this.injectComponentService.loadAndAddComponentToContainer(this.data.component, this.containerRef,\r\n      { file: this.data.file, apisFile: this.data.apisFile },\r\n      { callback: (action: FileActions) => this.callback(action) }\r\n    );\r\n  }\r\n\r\n  callback(action: FileActions): void {\r\n    this._bottomSheetRef.dismiss(action);\r\n  }\r\n\r\n  close() {\r\n    this._bottomSheetRef.dismiss();\r\n  }\r\n}\r\n","<!-- <div class=\"button-container\">\r\n    <button mat-fab color=\"accent\" aria-label=\"Ouvrir le fichier\" (click)=\"close()\">\r\n        <mat-icon>attach_file</mat-icon>\r\n    </button>\r\n</div> -->\r\n<div class=\"bottom-sheet-header\">\r\n    <button class=\"actions-header-modal\" mat-icon-button aria-label=\"Fermer le menu\" (click)=\"close()\">\r\n        <mat-icon>keyboard_arrow_down</mat-icon>\r\n    </button>\r\n    <div class=\"header-part-right\">\r\n        <div class=\"description-file\">{{data.file.description}}</div>\r\n        <div class=\"date-upload\" *ngIf=\"data.file.dateUpload\">\r\n            <span>{{data.file.dateUpload | date: 'dd/MM/yyyy, HH:mm':'':'fr-FR'}}</span>\r\n        </div>\r\n        <div class=\"description\">            \r\n            <div class=\"filename\">{{data.file.fileName}}</div>\r\n            <div class=\"description-size\">{{data.file.size | fileSize:2}}</div>\r\n        </div>\r\n    </div>\r\n</div>\r\n<ng-template #ContainerRef></ng-template>","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { ConfigAPIsFile, FileActions, FileModel } from 'cocori-ng/src/feature-core';\r\n\r\n@Component({\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  selector: 'cocoring-uploader-file-actions',\r\n  templateUrl: './cocoring-uploader-file-actions.component.html',\r\n  styleUrls: ['./cocoring-uploader-file-actions.component.scss']\r\n})\r\nexport class CocoringUploaderFileActionsComponent implements OnInit {\r\n\r\n  @Input() file: FileModel\r\n  @Input() apisFile: ConfigAPIsFile\r\n  @Output() callback: EventEmitter<FileActions> = new EventEmitter<FileActions>();\r\n\r\n  apiFile: string;\r\n  apiFileDownload: string;\r\n\r\n  constructor() { }\r\n\r\n  ngOnInit(): void {\r\n    this.setFileApi()\r\n    this.setFileDownloadApi()\r\n  }\r\n\r\n  private setFileApi() {\r\n    this.apiFile = this.apisFile.apiFile(this.file.id);\r\n  }\r\n\r\n  private setFileDownloadApi() {\r\n    this.apiFileDownload = this.apisFile.apiFileDownload(this.file.id);\r\n  }\r\n\r\n  actionFile(event: MouseEvent, action: FileActions) {\r\n    this.close(action)\r\n\r\n    event.preventDefault();\r\n  }\r\n\r\n  close(action?: FileActions) {\r\n    this.callback.emit(action)\r\n  }\r\n}\r\n","<mat-nav-list class=\"list\">\r\n    <a [href]=\"apiFile\" target=\"_blank\" mat-list-item (click)=\"close()\">\r\n        <mat-icon mat-list-icon>visibility</mat-icon>\r\n        <span mat-line>Ouvrir le fichier</span>\r\n    </a>\r\n\r\n    <a [href]=\"apiFileDownload\" mat-list-item (click)=\"close()\">\r\n        <mat-icon mat-list-icon>get_app</mat-icon>\r\n        <span mat-line>Télécharger le fichier</span>\r\n    </a>\r\n\r\n    <a href=\"#\" mat-list-item (click)=\"actionFile($event, 'browse')\">\r\n        <mat-icon mat-list-icon>upload_file</mat-icon>\r\n        <span mat-line>Sélectionner un nouveau fichier</span>\r\n    </a>\r\n\r\n    <a href=\"#\" mat-list-item (click)=\"actionFile($event, 'remove')\">\r\n        <mat-icon mat-list-icon>delete_outline</mat-icon>\r\n        <span mat-line>Supprimer le fichier</span>\r\n    </a>\r\n</mat-nav-list>","import {\r\n  ChangeDetectionStrategy,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ElementRef,\r\n  HostListener,\r\n  Input,\r\n  OnDestroy,\r\n  OnInit,\r\n  ViewChild,\r\n} from '@angular/core';\r\nimport { UntypedFormArray, UntypedFormControl, UntypedFormGroup } from '@angular/forms';\r\nimport { MatBottomSheet } from '@angular/material/bottom-sheet';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport {\r\n  ConfigAPIsFile,\r\n  FileActions,\r\n  FileDetailsComponent,\r\n  FileModel,\r\n  HelperUploaderService,\r\n} from 'cocori-ng/src/feature-core';\r\nimport { Subject } from 'rxjs';\r\nimport { debounceTime, filter, takeUntil, tap } from 'rxjs/operators';\r\n\r\nimport { UploaderService } from '../../../../core';\r\nimport {\r\n  CocoringUploaderBottomSheetComponent,\r\n} from '../cocoring-uploader-bottom-sheet/cocoring-uploader-bottom-sheet.component';\r\nimport {\r\n  CocoringUploaderFileActionsComponent,\r\n} from '../cocoring-uploader-file-actions/cocoring-uploader-file-actions.component';\r\n\r\n@Component({\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  selector: 'cocoring-uploader-list-file',\r\n  templateUrl: './cocoring-uploader-list-file.component.html',\r\n  styleUrls: ['./cocoring-uploader-list-file.component.scss'],\r\n  providers: [UploaderService]\r\n})\r\nexport class CocoringUploaderListFileComponent implements OnInit, OnDestroy {\r\n  @ViewChild('uploader') uploaderInputRef: ElementRef;\r\n  @ViewChild('progressCircle') progressCircleRef: ElementRef;\r\n\r\n  @Input() formGroup: UntypedFormGroup\r\n  @Input() nameControl: string\r\n  @Input() fileModel: FileModel\r\n  @Input() apisFile: ConfigAPIsFile\r\n\r\n  private fileUploaded: File;\r\n\r\n  fileFormControl: UntypedFormControl;\r\n  isUploading: boolean = false;\r\n  progress: number;\r\n  onError: boolean = false;\r\n  apiFile: string;\r\n  upoaderFormArray: UntypedFormArray;\r\n  fileType: string;\r\n\r\n  private readonly destroy$ = new Subject();\r\n\r\n  constructor(\r\n    public dialog: MatDialog,\r\n    public uploaderService: UploaderService,\r\n    private _bottomSheet: MatBottomSheet,\r\n    private cdr: ChangeDetectorRef,) { }\r\n\r\n  ngOnInit(): void {\r\n    this.addFileControl()\r\n\r\n    this.uploaderService.fileUploaded$.pipe(\r\n      takeUntil(this.destroy$),\r\n      tap((id: string) => this.validateFileValue(id)),\r\n      tap(_ => this.cdr.detectChanges()),\r\n      debounceTime(500),\r\n      tap(_ => this.isUploading = false),\r\n      tap(_ => this.setFileApi()),\r\n      tap(_ => this.cdr.detectChanges())\r\n    ).subscribe()\r\n\r\n    this.uploaderService.fileOnError$.pipe(\r\n      takeUntil(this.destroy$),\r\n      tap(_ => this.errorFile()),\r\n    ).subscribe()\r\n\r\n    this.uploaderService.progressSource.pipe(\r\n      takeUntil(this.destroy$),\r\n      filter(_ => !!this.fileUploaded),\r\n      tap((progress: number) => {\r\n        this.progress = progress\r\n\r\n        const circumference = this.progressCircleRef.nativeElement.getTotalLength()\r\n\r\n        this.progressCircleRef.nativeElement.style.strokeDashoffset = circumference - (progress / 100) * circumference;\r\n\r\n        this.cdr.detectChanges()\r\n      })\r\n    ).subscribe()\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.destroy$.next(undefined);\r\n    this.destroy$.complete();\r\n  }\r\n\r\n  private setFileApi() {\r\n    this.apiFile = this.apisFile.apiFile(this.fileModel.id);\r\n  }\r\n\r\n  @HostListener('change', ['$event.target.files']) emitFiles(event: FileList) {\r\n    const file = event && event.item(0);\r\n\r\n    if (!file) return;\r\n\r\n    this.isUploading = true\r\n    this.onError = false\r\n\r\n    this.fileUploaded = file;\r\n\r\n    this.fileModel.fileName = this.fileUploaded.name\r\n    this.fileModel.size = this.fileUploaded.size\r\n    this.fileModel.mimeType = this.fileUploaded.type\r\n\r\n    this.fileType = HelperUploaderService.checkTypeImage(this.fileUploaded.type) ? 'image' : 'doc'\r\n\r\n    this.cdr.detectChanges()\r\n\r\n    this.uploaderService.uploadFile(this.fileUploaded)\r\n  }\r\n\r\n  private errorFile() {\r\n    this.isUploading = false\r\n\r\n    this.removeFile()\r\n\r\n    this.onError = true\r\n\r\n    this.cdr.detectChanges()\r\n  }\r\n\r\n  openMenuOrBrowse() {\r\n    if (this.fileModel.id) {\r\n      this.openBottomSheet()\r\n    } else {\r\n      this.browseFile()\r\n    }\r\n  }\r\n\r\n  openBottomSheet() {\r\n    const bottomSheet = this._bottomSheet.open(CocoringUploaderBottomSheetComponent, {\r\n      panelClass: 'bottom-sheet-container',\r\n      data: <FileDetailsComponent>{\r\n        file: this.fileModel,\r\n        apisFile: this.apisFile,\r\n        component: CocoringUploaderFileActionsComponent\r\n      }\r\n    });\r\n\r\n    bottomSheet.afterDismissed().pipe(\r\n      takeUntil(this.destroy$)\r\n    ).subscribe((action: FileActions) => {\r\n      switch (action) {\r\n        case 'browse':\r\n          this.browseFile()\r\n          break;\r\n\r\n        case 'remove':\r\n          this.removeFile()\r\n          break;\r\n\r\n        default:\r\n          break;\r\n      }\r\n    })\r\n  }\r\n\r\n  browseFile() {\r\n    let el: HTMLElement = this.uploaderInputRef.nativeElement;\r\n    el.click();\r\n  }\r\n\r\n  removeFile() {\r\n\r\n    this.removeFromFormArray()\r\n\r\n    this.fileUploaded = null\r\n    this.fileModel.id = null\r\n    this.fileModel.fileName = null\r\n\r\n    this.fileType = null\r\n    this.uploaderInputRef.nativeElement.value = ''\r\n  }\r\n\r\n  private removeFromFormArray() {\r\n    /** supprime le formControl et donc sa valeur du tableau de fichier du formulaure */\r\n    if (this.fileModel.id) {\r\n      this.upoaderFormArray.removeAt(this.upoaderFormArray.value.findIndex(fileId => fileId === this.fileModel.id))\r\n    }\r\n  }\r\n\r\n  /** create control and add it to the formGroup. Will store id of the file */\r\n  private addFileControl() {\r\n    this.uploaderService.apisFile = this.apisFile\r\n\r\n    this.upoaderFormArray = <UntypedFormArray>this.formGroup.get(this.nameControl);\r\n\r\n    this.fileFormControl = new UntypedFormControl(null);\r\n\r\n    if (this.fileModel.id) {\r\n      // this.fileType = HelperUploaderService.checkTypeImage(this.fileModel.mimeType) ? 'image' : 'doc'\r\n\r\n      this.fileFormControl.setValue(this.fileModel.id)\r\n\r\n      this.upoaderFormArray.push(this.fileFormControl);\r\n\r\n      this.setFileApi()\r\n    }\r\n  }\r\n\r\n  /** store the file id */\r\n  private validateFileValue(id: string) {\r\n\r\n    this.removeFromFormArray()\r\n\r\n    this.fileModel.id = id\r\n    this.fileModel.dateUpload = new Date()\r\n\r\n    this.fileFormControl.setValue(id)\r\n\r\n    this.upoaderFormArray.push(this.fileFormControl);\r\n  }\r\n}\r\n","<mat-list-option id=\"optionList\" [value]=\"fileModel.id\" (click)=\"openMenuOrBrowse()\">\r\n    <ng-container *ngIf=\"!isUploading\">\r\n        <div *ngIf=\"!fileModel.id\">\r\n            <button class=\"file-doc\" mat-fab disableRipple=\"true\" aria-label=\"Joindre un fichier\">\r\n                <mat-icon [ngClass]=\"{'fileOnError error': onError}\">upload_file</mat-icon>\r\n            </button>\r\n        </div>\r\n\r\n        <div *ngIf=\"fileType === 'doc'\">\r\n            <button class=\"file-doc\" mat-fab disableRipple=\"true\" aria-label=\"\">\r\n                <mat-icon>attach_file</mat-icon>\r\n            </button>\r\n        </div>\r\n\r\n        <div *ngIf=\"fileType === 'image'\" class=\"file-image\"\r\n            [ngStyle]=\"{'background-image': 'url(' + apiFile}\">\r\n        </div>\r\n    </ng-container>\r\n\r\n    <ng-container *ngIf=\"isUploading\">\r\n        <div class=\"loading-container\">\r\n            <svg class=\"progress\" width=\"65\" height=\"60\">\r\n                <circle #progressCircle class=\"progress-circle\" cx=\"26\" cy=\"33\" r=\"25\" fill=\"transparent\" />\r\n                <text class=\"loading\" fill=\"blue\" x=\"50\" y=\"50\" alignment-baseline=\"middle\" text-anchor=\"middle\"></text>\r\n            </svg>\r\n        </div>\r\n    </ng-container>\r\n\r\n    <div class=\"mat-list-text\">\r\n        <div mat-line [ngClass]=\"{'fileOnError error': onError}\">\r\n            <span *ngIf=\"fileModel.id\" title=\"{{fileModel.fileName}}\">{{fileModel.fileName}}</span>\r\n            <span *ngIf=\"!fileModel.id\" title=\"{{fileModel.description}}\">{{fileModel.description}}</span>\r\n        </div>\r\n\r\n        <ng-template [ngIf]=\"!isUploading\" [ngIfElse]=\"uploadTpl\">\r\n            <div class=\"subtext\" mat-line>\r\n                <span *ngIf=\"fileModel?.id\">{{fileModel.size | fileSize:2}}</span>\r\n                <span *ngIf=\"!fileModel?.id && !onError\" title=\"Cliquez pour déposer votre fichier ici\"> Cliquez pour déposer votre fichier ici</span>\r\n                <span *ngIf=\"!fileModel?.id && onError\" class=\"fileOnError error\" title=\"Une erreur est survenue, veuillez\r\n                réessayer\">Une erreur est survenue, veuillez\r\n                    réessayer</span>\r\n            </div>\r\n        </ng-template>\r\n\r\n        <ng-template #uploadTpl>\r\n            <div mat-line class=\"progress-bar\">\r\n                <mat-progress-bar [value]=\"progress\"></mat-progress-bar>\r\n            </div>\r\n        </ng-template>\r\n    </div>\r\n\r\n</mat-list-option>\r\n\r\n<input #uploader hidden class=\"browse-file\" type=\"file\" name=\"fileUpload\" accept=\"*\" />","import { ChangeDetectionStrategy, Component, Injector, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { ConfigAPIsFile, ConfigUploaderModel } from 'cocori-ng/src/feature-core';\r\n\r\nimport { ExtendInputsComponent } from '../form/inputs/extend-inputs/extend-inputs.component';\r\n\r\nexport interface Section {\r\n  name: string;\r\n  updated: Date;\r\n}\r\n\r\n@Component({\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  selector: 'cocoring-uploader',\r\n  templateUrl: './cocoring-uploader.component.html',\r\n  styleUrls: ['./cocoring-uploader.component.scss'],\r\n})\r\nexport class CocoringUploaderComponent extends ExtendInputsComponent implements OnInit, OnDestroy {\r\n  apisFile: ConfigAPIsFile;\r\n\r\n  @Input()\r\n  set config(config: ConfigUploaderModel) {\r\n    if (!config) {\r\n      throw new Error(`La config du composant uploader n'est pas correcte... config: ${config}`);\r\n    }\r\n\r\n    this.configInput(config)\r\n\r\n    this.addArrayForm();\r\n\r\n    this.apisFile = { apiFile: config.apiFile, apiFileDownload: config.apiFileDownload }\r\n  }\r\n\r\n  constructor(injector: Injector) {\r\n    super(injector);\r\n  }\r\n\r\n  ngOnInit() { }\r\n\r\n  ngOnDestroy() { }\r\n}\r\n","<div class=\"upload-drop\">\r\n  <mat-selection-list [multiple]=\"false\">\r\n    <div mat-subheader>{{nameLabel}}</div>\r\n    <ng-container *ngIf=\"dataSource$ | async as files; else loadingTpl\">\r\n      <cocoring-uploader-list-file *ngFor=\"let file of files\" [formGroup]=\"formGroup\" [nameControl]=\"nameControl\"\r\n        [apisFile]=\"apisFile\" [fileModel]=\"file\">\r\n      </cocoring-uploader-list-file>\r\n    </ng-container>\r\n    <ng-template #loadingTpl>\r\n      <div class=\"fake-list-file\" *ngFor=\"let i of [].constructor(2)\">\r\n        <div class=\"fake-icon loading-animation\"></div>\r\n        <div class=\"fake-file-infos\">\r\n          <div class=\"fake-info info-name loading-animation\"></div>\r\n          <div class=\"fake-info loading-animation\"></div>\r\n        </div>\r\n      </div>\r\n    </ng-template>\r\n    <!-- #todo: normalement pas nécessaire ce ngIf, mais là le message ne disparaît pas... -->\r\n    <mat-error *ngIf=\"formGroup.get(nameControl).errors\" error-handler [form]=\"formGroup\" [controlName]=\"nameControl\">\r\n    </mat-error>\r\n  </mat-selection-list>\r\n  <!-- {{formGroup.get(nameControl).value | json}} -->\r\n</div>","import { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MatBottomSheetModule } from '@angular/material/bottom-sheet';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\r\n\r\nimport { CocoringFileSizeModule } from '../../pipe/file-size/cocoring-file-size.module';\r\nimport { CocoringButtonModule } from '../button/cocoring-button.module';\r\nimport { CocoringInputErrorModule } from '../error-handler/input-error-handler/cocoring-input-error.module';\r\nimport {\r\n  CocoringUploaderBottomSheetComponent,\r\n} from './cocoring-uploader-bottom-sheet/cocoring-uploader-bottom-sheet.component';\r\nimport {\r\n  CocoringUploaderFileActionsComponent,\r\n} from './cocoring-uploader-file-actions/cocoring-uploader-file-actions.component';\r\nimport { CocoringUploaderListFileComponent } from './cocoring-uploader-list-file/cocoring-uploader-list-file.component';\r\nimport { CocoringUploaderComponent } from './cocoring-uploader.component';\r\n\r\n@NgModule({\r\n  declarations: [\r\n    CocoringUploaderComponent,\r\n    CocoringUploaderListFileComponent,\r\n    CocoringUploaderFileActionsComponent,\r\n    CocoringUploaderBottomSheetComponent,\r\n  ],\r\n  imports: [\r\n    CommonModule,\r\n    DragDropModule,\r\n    CocoringFileSizeModule,\r\n    ReactiveFormsModule,\r\n    MatListModule,\r\n    MatFormFieldModule,\r\n    MatMenuModule,\r\n    MatProgressBarModule,\r\n    MatDialogModule,\r\n    MatBottomSheetModule,\r\n    MatInputModule,\r\n    MatIconModule,\r\n    MatButtonModule,\r\n    CocoringInputErrorModule,\r\n    CocoringButtonModule,\r\n  ],\r\n  exports: [\r\n    CocoringUploaderComponent\r\n  ],\r\n})\r\nexport class CocoringUploaderModule { }","import { formatDate } from '@angular/common';\r\nimport { Component, Inject, Input, LOCALE_ID, OnInit } from '@angular/core';\r\nimport { CellValueDatagridModel } from 'cocori-ng/src/feature-core';\r\n\r\nimport { DatagridService } from '../../../../core';\r\n\r\n@Component({\r\n  selector: 'cocoring-datagrid-cell',\r\n  templateUrl: './cocoring-datagrid-cell.component.html',\r\n  styleUrls: ['./cocoring-datagrid-cell.component.scss']\r\n})\r\nexport class CocoringDatagridCellComponent implements OnInit {\r\n  public _cell: CellValueDatagridModel;\r\n  cellIsArchived: boolean = false;\r\n\r\n  @Input()\r\n  set cell(value: CellValueDatagridModel) {\r\n    this._cell = value\r\n\r\n    this.formatCellValue();\r\n\r\n    this.checkIfCellIsArchived();\r\n  }\r\n\r\n  cellValue: string\r\n\r\n  constructor(\r\n    @Inject(LOCALE_ID) private locale: string,\r\n    private datagridService: DatagridService) { }\r\n\r\n  ngOnInit(): void { }\r\n\r\n  private formatCellValue() {\r\n    this.cellValue = this._cell.dataType === 'date' ? formatDate(this._cell.value, 'dd/MM/yyyy', this.locale) : this._cell.value;\r\n  }\r\n\r\n  private checkIfCellIsArchived() {\r\n    this.cellIsArchived =  this._cell.dataField === this.datagridService.config.propIsArchived\r\n  }\r\n}\r\n","<ng-container *ngIf=\"_cell && _cell.visible\">\r\n    <td [attr.data-label]=\"_cell.caption\" [title]=\"cellValue\" [ngSwitch]=\"_cell.dataType\">\r\n        <div *ngSwitchCase=\"'boolean'\" class=\"valTrue\">\r\n            <mat-icon *ngIf=\"cellValue\">check</mat-icon>\r\n        </div>\r\n        <div *ngSwitchDefault>{{cellValue}}</div>\r\n    </td>\r\n</ng-container>","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { UntypedFormArray, UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';\r\nimport { CellValueDatagridModel, ColumnDatagridModel, OrderColumnModel } from 'cocori-ng/src/feature-core';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil, tap } from 'rxjs/operators';\r\n\r\nimport { DatagridService } from '../../../../core';\r\n\r\n@Component({\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  selector: 'cocoring-datagrid-row',\r\n  templateUrl: './cocoring-datagrid-row.component.html',\r\n  styleUrls: ['./cocoring-datagrid-row.component.scss']\r\n})\r\nexport class CocoringDatagridRowComponent implements OnInit, OnDestroy {\r\n  @Input() columns: ColumnDatagridModel[] = []\r\n  @Input()\r\n  set datas(datas: any) {\r\n    this._datas = datas;\r\n\r\n    this.addCheckboxRow();\r\n\r\n    this.initCellsValues();\r\n  }\r\n  @Input() datagridService: DatagridService\r\n\r\n  _datas: any;\r\n  cellValues: CellValueDatagridModel[] = []\r\n  checkboxRowFormGroup: UntypedFormGroup;\r\n\r\n  private readonly destroy$ = new Subject();\r\n\r\n  constructor(\r\n    private fb: UntypedFormBuilder,\r\n    private cdr: ChangeDetectorRef,\r\n  ) { }\r\n\r\n  ngOnInit(): void {\r\n    this.eventAllCheckboxesChecked()\r\n\r\n    this.onUpdateColumn()\r\n\r\n    this.onReOrderColumns()\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.destroy$.next(undefined);\r\n    this.destroy$.complete();\r\n  }\r\n\r\n  /** ajouter le contrôle checkbox de la ligne dans le formulaire */\r\n  private addCheckboxRow() {\r\n    const checkboxesFormControlArray: UntypedFormArray = <UntypedFormArray>this.datagridService.checkboxesDatagridForm.get(\"rowsCheckbox\");\r\n\r\n    this.checkboxRowFormGroup = this.fb.group({});\r\n\r\n    this.checkboxRowFormGroup.addControl(this._datas.id, this.fb.control(false));\r\n\r\n    checkboxesFormControlArray.push(this.checkboxRowFormGroup);\r\n\r\n    this.checkboxRowFormGroup.get(this._datas.id).valueChanges.pipe(\r\n      takeUntil(this.destroy$)\r\n    ).subscribe((checkValue: boolean) => {\r\n      this.datagridService.storeIdsRowsSelected(this._datas, checkValue)\r\n    })\r\n  }\r\n\r\n  private initCellsValues() {\r\n    this.columns.forEach((column: ColumnDatagridModel) => {\r\n      this.cellValues.push({\r\n        dataField: column.dataField,\r\n        caption: column.caption,\r\n        visible: column.visible,\r\n        dataType: column.dataType,\r\n        value: this.getDatasourceValue(column.dataField)\r\n      });\r\n    });\r\n  }\r\n\r\n  private onUpdateColumn() {\r\n    this.datagridService.updateColumn$.pipe(\r\n      takeUntil(this.destroy$),\r\n      tap((columnUpdated: ColumnDatagridModel) => {\r\n        this.cellValues\r\n          .find((cell: CellValueDatagridModel) => cell.dataField === columnUpdated.dataField)\r\n          .visible = columnUpdated.visible\r\n      }),\r\n      tap(_ => this.cdr.detectChanges()),\r\n    ).subscribe()\r\n  }\r\n\r\n  private onReOrderColumns() {\r\n    this.datagridService.reOrderColumns$.pipe(\r\n      takeUntil(this.destroy$),\r\n      tap((columnUpdated: OrderColumnModel) => {\r\n        this.cellValues.splice(columnUpdated.currentIndex, 0, this.cellValues.splice(columnUpdated.previousIndex, 1)[0]);\r\n      }),\r\n      tap(_ => this.cdr.detectChanges()),\r\n    ).subscribe()\r\n  }\r\n\r\n  private eventAllCheckboxesChecked() {\r\n    this.datagridService.allRowsChecked$.pipe(\r\n      takeUntil(this.destroy$)\r\n    ).subscribe((value: boolean) => {\r\n      this.checkboxRowFormGroup.get(this._datas.id).setValue(value);\r\n    })\r\n  }\r\n\r\n  private getDatasourceValue(column: string) {\r\n    return this._datas.hasOwnProperty(column) ? this._datas[column] : null\r\n  }\r\n\r\n  selectRow() {\r\n    this.datagridService.rowSelectedByClickEvent$.next(this._datas)\r\n  }\r\n\r\n  trackBy(index: number) {\r\n    return index;\r\n  }\r\n}\r\n","<tr (click)=\"selectRow()\">\r\n    <ng-container *ngFor=\"let cell of cellValues; let i = index; trackBy: trackBy\">\r\n        <!-- <ng-container *ngIf=\"datagridService.config.withBatchProcessing\"> -->\r\n        <ng-container>\r\n            <td class=\"column-select\" *ngIf=\"i===0\">\r\n                <cocoring-checkbox [formGroup]=\"checkboxRowFormGroup\" [nameControl]=\"_datas.id\" color=\"warn\">\r\n                </cocoring-checkbox>\r\n            </td>\r\n        </ng-container>\r\n        <cocoring-datagrid-cell [cell]=\"cell\"></cocoring-datagrid-cell>\r\n    </ng-container>\r\n</tr>","import { ChangeDetectorRef, Component, HostListener, Injector, Input, OnDestroy } from '@angular/core';\r\nimport { BooleanFilters, ColumnDatagridModel, SortType } from 'cocori-ng/src/feature-core';\r\nimport { Subject } from 'rxjs';\r\nimport { filter, takeUntil, tap } from 'rxjs/operators';\r\n\r\nimport { DatagridService } from '../../../../core';\r\n\r\n@Component({\r\n    selector: '',\r\n    template: ''\r\n})\r\n\r\nexport abstract class SortColumnExtendComponent implements OnDestroy {\r\n    @Input() datagridService: DatagridService\r\n    @Input() column: ColumnDatagridModel\r\n\r\n    shiftKey: boolean = false;\r\n    cdr: ChangeDetectorRef;\r\n    colFiltered: boolean = false;\r\n\r\n    readonly destroy$ = new Subject();\r\n\r\n    constructor(injector: Injector) {\r\n        this.cdr = injector.get(ChangeDetectorRef);\r\n    }\r\n\r\n    ngOnDestroy(): void {\r\n        this.destroy$.next(undefined);\r\n        this.destroy$.complete();\r\n    }\r\n\r\n    onInitColumn() {\r\n\r\n        this.isFiltered()\r\n\r\n        this.datagridService.resetColumnExcept$.pipe(\r\n            takeUntil(this.destroy$),\r\n            filter((datafieldException: string) => datafieldException !== this.column.dataField),\r\n            tap(_ => this.column.sort = 'NONE'),\r\n            tap(_ => this.cdr.detectChanges()),\r\n        ).subscribe()\r\n\r\n        this.datagridService.updateColumn$.pipe(\r\n            takeUntil(this.destroy$),\r\n            filter((columnUpdated: ColumnDatagridModel) => columnUpdated.dataField === this.column.dataField),\r\n            tap((columnUpdated: ColumnDatagridModel) => this.column = columnUpdated),\r\n            tap(_ => this.isFiltered()),\r\n            tap(_ => this.cdr.detectChanges()),\r\n        ).subscribe()\r\n    }\r\n\r\n    private isFiltered() {\r\n\r\n        this.colFiltered = false\r\n\r\n        if (this.column.dataType === 'boolean') {\r\n            let filters: BooleanFilters = this.column.filters as BooleanFilters\r\n\r\n            if (!filters.selectAll && (filters.nestedValues.allSelected || filters.nestedValues.noSelected)) {\r\n                this.colFiltered = true\r\n            }\r\n        }\r\n    }\r\n\r\n    @HostListener('window:keydown', ['$event']) onShiftPressed($event: KeyboardEvent) {\r\n        if ($event.shiftKey) {\r\n            this.shiftKey = true\r\n        }\r\n    }\r\n\r\n    @HostListener('window:keyup', ['$event']) onShiftReleased($event: KeyboardEvent) {\r\n        if ($event.code === \"ShiftLeft\") {\r\n            this.shiftKey = false\r\n        }\r\n    }\r\n\r\n    sort() {\r\n        if (!this.shiftKey) this.datagridService.resetColumnExcept$.next(this.column.dataField)\r\n\r\n        let newSortValue: SortType = 'NONE'\r\n\r\n        if (!this.column.sort || this.column.sort === 'NONE') newSortValue = 'ASC'\r\n        else if (this.column.sort === 'ASC') newSortValue = 'DESC'\r\n        else newSortValue = 'NONE'\r\n\r\n        this.column.sort = newSortValue\r\n\r\n        this.datagridService.updateColumn$.next(this.column)\r\n\r\n        this.datagridService.refreshNeeded$.next()\r\n    }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Injector, Input, OnInit } from '@angular/core';\r\nimport { ColumnDatagridModel } from 'cocori-ng/src/feature-core';\r\n\r\nimport { DatagridService } from '../../../../core';\r\nimport { SortColumnExtendComponent } from '../common-datagrid/sort-column-extend.component';\r\n\r\n@Component({\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  selector: 'cocoring-datagrid-head',\r\n  templateUrl: './cocoring-datagrid-head.component.html',\r\n  styleUrls: ['./cocoring-datagrid-head.component.scss']\r\n})\r\nexport class CocoringDatagridHeadComponent extends SortColumnExtendComponent implements OnInit {\r\n  @Input() column: ColumnDatagridModel\r\n  @Input() datagridService: DatagridService\r\n\r\n  constructor(injector: Injector) {\r\n    super(injector)\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.onInitColumn()\r\n  }\r\n}\r\n","<ng-container *ngIf=\"column.visible\">\r\n  <th scope=\"col\" [title]=\"column.caption\" (click)=\"sort()\">\r\n    <div class=\"column-table-header\">\r\n      <mat-icon *ngIf=\"colFiltered\" class=\"isFiltered\">filter_alt</mat-icon>\r\n      <div class=\"column-caption\">{{column.caption}}</div>\r\n      <!-- <div *ngIf=\"column.sort && column.sort !== 'NONE'\"> -->\r\n        <!-- <button mat-icon-button title=\"Inverser le tri\" aria-label=\"Inverser le tri\"> -->\r\n          <ng-container *ngIf=\"column.sort && column.sort !== 'NONE'\">\r\n            <mat-icon *ngIf=\"column.sort === 'ASC'\">arrow_upward</mat-icon>\r\n            <mat-icon *ngIf=\"column.sort === 'DESC'\">arrow_downward</mat-icon>\r\n          </ng-container>\r\n        <!-- </button> -->\r\n      <!-- </div> -->\r\n    </div>\r\n  </th>\r\n</ng-container>","import {\r\n    ChangeDetectionStrategy,\r\n    ChangeDetectorRef,\r\n    Component,\r\n    EventEmitter,\r\n    HostBinding,\r\n    Input,\r\n    OnDestroy,\r\n    Output,\r\n    ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';\r\nimport { ConfigDatagridModel, Odata, OdataClass } from 'cocori-ng/src/feature-core';\r\nimport { merge, Subject } from 'rxjs';\r\nimport { debounceTime, map, switchMap, takeUntil, tap } from 'rxjs/operators';\r\n\r\nimport { DatagridService } from '../../../core';\r\n\r\n@Component({\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    encapsulation: ViewEncapsulation.None,\r\n    selector: 'cocoring-datagrid',\r\n    templateUrl: 'cocoring-datagrid.component.html',\r\n    styleUrls: ['./cocoring-datagrid.component.scss'],\r\n    providers: [OdataClass]\r\n})\r\nexport class CocoringDatagridComponent implements OnDestroy {\r\n    checkboxesGroup: UntypedFormGroup;\r\n\r\n    @HostBinding('class.table-full-width') forceFullWidth: boolean = true;\r\n\r\n    datagridDataSource: OdataClass;\r\n    totalRowsSaved: number = 5;\r\n\r\n    private readonly destroy$ = new Subject();\r\n\r\n    constructor(\r\n        private fb: UntypedFormBuilder,\r\n        private cdr: ChangeDetectorRef,\r\n        private odata: OdataClass,\r\n        public datagridService: DatagridService\r\n    ) { }\r\n\r\n    ngOnDestroy(): void {\r\n        this.destroy$.next(undefined);\r\n        this.destroy$.complete();\r\n    }\r\n\r\n    @Input()\r\n    set config(config: ConfigDatagridModel) {\r\n        if (!config) {\r\n            throw new Error(`La config du datgrid n'est pas correcte... config: ${config}`);\r\n        }\r\n\r\n        this.datagridService.config = config;\r\n\r\n        this.loadDataSource();\r\n\r\n        this.onReOrderColumns()\r\n\r\n        this.onRowSelected()\r\n\r\n        this.onRowsDeletedRestored()\r\n    }\r\n\r\n    @Output() eventClickRow: EventEmitter<void> = new EventEmitter<void>();\r\n    @Output() eventRowsDeleted: EventEmitter<string[]> = new EventEmitter<string[]>();\r\n    @Output() eventRowsRestored: EventEmitter<string[]> = new EventEmitter<string[]>();\r\n\r\n    refreshDatagrid() {\r\n        this.datagridService.refreshNeeded$.next()\r\n    }\r\n\r\n    private loadDataSource() {\r\n        const emptySearch$ = this.datagridService.refreshNeeded$.pipe(\r\n            debounceTime(400),\r\n            tap(_ => this.datagridDataSource = null),\r\n            tap(_ => {\r\n                /** on désactive la case à cocher qui permet de sélectionner / désélectionner toutes les lignes du tableau */\r\n                this.datagridService.checkboxesDatagridForm.get(\"selectAllRowsCheckbox\").setValue(false, { emitEvent: false })\r\n            }),\r\n            tap(_ => this.datagridService.checkUncheckAllRows(false)),\r\n            tap(_ => this.cdr.detectChanges()),\r\n            switchMap(() => this.datagridService.getAllDatas())\r\n        )\r\n\r\n        merge(this.datagridService.getAllDatas(), emptySearch$).pipe(\r\n            takeUntil(this.destroy$),\r\n            map((results: Odata<any>) => {\r\n                this.odata.setDatasource(results)\r\n\r\n                this.datagridDataSource = this.odata\r\n\r\n                this.cdr.detectChanges();\r\n            }),\r\n            // tap(_ => this.totalRowsSaved = this.datagridDataSource.getResults().length),\r\n            tap(_ => this.totalRowsSaved = this.datagridDataSource.getCount()),\r\n            tap(_ => this.datagridService.lengthDataSource(this.totalRowsSaved))\r\n        ).subscribe()\r\n    }\r\n\r\n    /** re order cellValues array */\r\n    private onReOrderColumns() {\r\n        this.datagridService.reOrderColumns$.pipe(\r\n            takeUntil(this.destroy$),\r\n            tap(_ => this.cdr.detectChanges()),\r\n        ).subscribe()\r\n    }\r\n\r\n    private onRowSelected() {\r\n        this.datagridService.rowSelectedByClickEvent$.pipe(\r\n            takeUntil(this.destroy$),\r\n            tap((rowDatas: any) => this.eventClickRow.emit(rowDatas)),\r\n        ).subscribe()\r\n    }\r\n\r\n    private onRowsDeletedRestored() {\r\n        this.datagridService.rowsDeletedEvent$.pipe(\r\n            takeUntil(this.destroy$),\r\n            tap(_ => this.eventRowsDeleted.emit(this.datagridService.rowsSelectedDatagrid)),\r\n        ).subscribe()\r\n\r\n        this.datagridService.rowsRestoredEvent$.pipe(\r\n            takeUntil(this.destroy$),\r\n            tap(_ => this.eventRowsRestored.emit(this.datagridService.rowsSelectedDatagrid)),\r\n        ).subscribe()\r\n    }\r\n\r\n    trackBy(item: any, index: number) {\r\n        return `${item.id}-${index}`\r\n    }\r\n}\r\n","<ng-container *ngIf=\"datagridService.config\">\r\n  <!-- <cocoring-datagrid-toolbar></cocoring-datagrid-toolbar> -->\r\n  <div class=\"datagrid-container\">\r\n    <table [formGroup]=\"datagridService.checkboxesDatagridForm\">\r\n      <thead>\r\n        <tr>\r\n          <!-- <ng-container *ngIf=\"datagridService.config.withBatchProcessing\"> -->\r\n          <ng-container>\r\n            <th class=\"column-select\" scope=\"col\"></th>\r\n          </ng-container>\r\n          <ng-container *ngFor=\"let column of datagridService.config.columns; let i = index; trackBy: trackBy\">\r\n            <cocoring-datagrid-head [column]=\"column\" [datagridService]=\"datagridService\"></cocoring-datagrid-head>\r\n          </ng-container>\r\n        </tr>\r\n      </thead>\r\n      <tbody *ngIf=\"datagridDataSource as data; else loadingTpl\">\r\n        <ng-container *ngFor=\"let rowDatas of data.getResults(); let i = index; trackBy: trackBy\">\r\n          <cocoring-datagrid-row class=\"table-line\" [datagridService]=\"datagridService\"\r\n            [columns]=\"datagridService.config.columns\" [datas]=\"rowDatas\"></cocoring-datagrid-row>\r\n        </ng-container>\r\n      </tbody>\r\n      <ng-template #loadingTpl>\r\n        <tr *ngFor=\"let i of [].constructor(totalRowsSaved)\">\r\n          <ng-container *ngFor=\"let column of datagridService.config.columns; let j = index; trackBy: trackBy\">\r\n            <td *ngIf=\"j === 0\" class=\"column-select table-cell-loader\">\r\n              <div class=\"row-loader loading-animation\"></div>\r\n            </td>\r\n            <td class=\"table-cell-loader\">\r\n              <div class=\"row-loader loading-animation\"></div>\r\n            </td>\r\n          </ng-container>\r\n        </tr>\r\n      </ng-template>\r\n    </table>\r\n    <!-- {{datagridService.checkboxesDatagridForm.get('rowsCheckbox').value | json}} -->\r\n  </div>\r\n</ng-container>","import { ChangeDetectionStrategy, Component, EventEmitter, Injector, OnDestroy, OnInit, Output } from '@angular/core';\r\nimport { ColumnDatagridModel } from 'cocori-ng/src/feature-core';\r\n\r\nimport { SortColumnExtendComponent } from '../../common-datagrid/sort-column-extend.component';\r\n\r\n@Component({\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  selector: 'cocoring-datagrid-filter-column',\r\n  templateUrl: './cocoring-datagrid-filter-column.component.html',\r\n  styleUrls: ['./cocoring-datagrid-filter-column.component.scss']\r\n})\r\nexport class CocoringDatagridFilterColumnComponent extends SortColumnExtendComponent implements OnInit, OnDestroy {\r\n  @Output() columnSelected = new EventEmitter<ColumnDatagridModel>();\r\n\r\n  constructor(injector: Injector) {\r\n    super(injector)\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.onInitColumn()\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.destroy$.next(undefined);\r\n    this.destroy$.complete();\r\n  }\r\n\r\n  selectColumn() {\r\n    this.columnSelected.emit(this.column)\r\n  }\r\n\r\n  visible() {\r\n    this.column.visible = !this.column.visible\r\n\r\n    this.datagridService.updateColumn$.next(this.column)\r\n  }\r\n}\r\n","<a class=\"list-item\" mat-list-item cdkDrag cdkDragLockAxis=\"y\" cdkDragBoundary=\".sidenav\">\r\n    <div class=\"list-item-part-left\" (click)=\"sort()\">\r\n        <button mat-icon-button type=\"button\" aria-label=\"Réordonner les colonnes\">\r\n            <mat-icon>drag_indicator</mat-icon>\r\n        </button>\r\n        <div class=\"column-caption\" [ngClass]=\"{'column-no-visible': !column.visible}\">\r\n            {{column.caption}}\r\n            <mat-icon *ngIf=\"colFiltered\" class=\"isFiltered\">filter_alt</mat-icon>\r\n        </div>\r\n        <button class=\"action-sort-column\" mat-icon-button type=\"button\" aria-label=\"Inverser le tri\">\r\n            <mat-icon *ngIf=\"column.sort === 'ASC'\">arrow_upward</mat-icon>\r\n            <mat-icon *ngIf=\"column.sort === 'DESC'\">arrow_downward</mat-icon>\r\n        </button>\r\n    </div>\r\n    <div class=\"list-item-part-right\">\r\n        <button (click)=\"visible()\" class=\"button-visibility\" mat-icon-button type=\"button\" aria-label=\"Réordonner les colonnes\">\r\n            <mat-icon *ngIf=\"column.visible\">visibility</mat-icon>\r\n            <mat-icon *ngIf=\"!column.visible\">visibility_off</mat-icon>\r\n        </button>\r\n        <button (click)=\"selectColumn()\" mat-icon-button type=\"button\" aria-label=\"Sélectionner cette colonne\">\r\n            <mat-icon>keyboard_arrow_right</mat-icon>\r\n        </button>\r\n    </div>\r\n</a>","import { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport {\r\n  ChangeDetectionStrategy,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  Inject,\r\n  OnInit,\r\n  ViewChild,\r\n  ViewContainerRef,\r\n} from '@angular/core';\r\nimport { UntypedFormGroup } from '@angular/forms';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { MatSidenav } from '@angular/material/sidenav';\r\nimport { BooleanFilters, ColumnDatagridModel, DataSourceType, FormInputComponents } from 'cocori-ng/src/feature-core';\r\n\r\nimport { DatagridService } from '../../../../core';\r\nimport { FormBuilderService } from '../../../../core/service/form-builder/form-builder.service';\r\n\r\n@Component({\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  selector: 'cocoring-datagrid-filter-modal',\r\n  templateUrl: './cocoring-datagrid-filter-modal.component.html',\r\n  styleUrls: ['./cocoring-datagrid-filter-modal.component.scss']\r\n})\r\nexport class CocoringDatagridFilterModalComponent implements OnInit {\r\n  @ViewChild('BooleanFilterFormContainerRef', { static: false, read: ViewContainerRef }) booleanFilterFormContainerRef: ViewContainerRef;\r\n  @ViewChild('ButtonFormContainerRef', { static: false, read: ViewContainerRef }) buttonFormContainerRef: ViewContainerRef;\r\n  @ViewChild('sidenav') sidenav: MatSidenav;\r\n\r\n  formulaire: UntypedFormGroup;\r\n  disabled = true\r\n  isSidenavOpen: boolean = false;\r\n\r\n  datagridService: DatagridService;\r\n  currentColumn: ColumnDatagridModel;\r\n\r\n  constructor(\r\n    @Inject(MAT_DIALOG_DATA) public data: { datagridService: DatagridService },\r\n    private cdr: ChangeDetectorRef,\r\n    private formBuilderService: FormBuilderService,\r\n    private mdDialogRef: MatDialogRef<CocoringDatagridFilterModalComponent>) {\r\n\r\n    this.datagridService = data.datagridService\r\n    this.formulaire = this.formBuilderService.newForm().form\r\n  }\r\n\r\n  ngOnInit(): void {\r\n  }\r\n\r\n  public close(value: any) {\r\n    this.mdDialogRef.close(value);\r\n  }\r\n\r\n  /** Reset le form des filtres selon le mode */\r\n  public toggleFiltersOrClose() {\r\n    if (this.currentColumn) {\r\n      // back to the list of columns\r\n      this.currentColumn = null\r\n\r\n      this.formulaire.reset()\r\n\r\n      this.sidenav.toggle()\r\n    } else {\r\n      this.close(null)\r\n    }\r\n  }\r\n\r\n  public columnSelected(column: ColumnDatagridModel) {\r\n    this.currentColumn = column\r\n\r\n    /** on fait apparaître le paneau détail de la colonne */\r\n    this.sidenav.toggle()\r\n\r\n    /** on mets à jour la vue comme ça les var booleanFilterFormContainerRef et buttonFormContainerRef sont définies */\r\n    this.cdr.detectChanges()\r\n\r\n    /** on init le form et on ajoute les éléments dans la vue dynamiquement 🖕 */\r\n    if (this.currentColumn.dataType == 'boolean') {\r\n      this.buildFormFiltersBoolean()\r\n    }\r\n  }\r\n\r\n  public trackBy(item: any, index: number) {\r\n    return `${item.id}-${index}`\r\n  }\r\n\r\n  public dropColumn(event: CdkDragDrop<ColumnDatagridModel[]>) {\r\n    moveItemInArray(this.datagridService.config.columns, event.previousIndex, event.currentIndex);\r\n\r\n    this.datagridService.reOrderColumns$.next({ previousIndex: event.previousIndex, currentIndex: event.currentIndex })\r\n  }\r\n\r\n  private buildFormFiltersBoolean() {\r\n    let formBuilderService = this.formBuilderService\r\n      .appearance('fill') // par défaut c'est outline\r\n      .setViewContainerRef(this.booleanFilterFormContainerRef)\r\n      .addInput('selectAll', config => config\r\n        .nameLabel('Tout sélectionner')\r\n        .typeInput(FormInputComponents.INPUT_CHECKBOX_INDETERMINATE)\r\n        .dataSource({\r\n          type: DataSourceType.BRUTE,\r\n          dataSourceNameProperty: 'name',\r\n          value: [{ id: \"noSelected\", name: \"non\" }, { id: \"allSelected\", name: \"oui\" }]\r\n        })\r\n      )\r\n      ;\r\n\r\n    formBuilderService = this.buildFormAddButtonsAction(formBuilderService, this.buttonFormContainerRef)\r\n\r\n    this.formulaire = formBuilderService.form\r\n\r\n    if (this.currentColumn.filters) {\r\n      this.formulaire.patchValue(this.currentColumn.filters)\r\n    }\r\n\r\n  }\r\n\r\n  private buildFormAddButtonsAction(formBuilderService: FormBuilderService, viewContainerRef: ViewContainerRef) {\r\n    return formBuilderService\r\n      .setViewContainerRef(viewContainerRef)\r\n      .addButton('Annuler', config => config\r\n        .isTypeSubmit(false)\r\n        .outputCallback({\r\n          click: () => this.toggleFiltersOrClose()\r\n        })\r\n      )\r\n      .addButton('Appliquer', config => config\r\n        .isTypeSubmit()\r\n        .icon('check')\r\n        .outputCallback({\r\n          callback: () => { }\r\n        })\r\n      )\r\n  }\r\n\r\n  public validateFilters({ value, valid }: { value: any, valid: boolean }) {\r\n    if (!valid) return;\r\n    \r\n    this.currentColumn.filters = <BooleanFilters>value\r\n    \r\n    this.datagridService.updateColumn$.next(this.currentColumn)\r\n\r\n    this.datagridService.refreshNeeded$.next()\r\n\r\n    this.toggleFiltersOrClose()\r\n  }\r\n}\r\n","<div class=\"modal-header\">\r\n    <button class=\"actions-header-modal\" (click)=\"toggleFiltersOrClose()\" mat-icon-button\r\n        aria-label=\"Afficher / cacher les colonnes\">\r\n        <mat-icon *ngIf=\"!currentColumn\">clear</mat-icon>\r\n        <mat-icon *ngIf=\"currentColumn\">keyboard_arrow_left</mat-icon>\r\n    </button>\r\n    <h1 class=\"header-title\" cdkDrag cdkDragRootElement=\".cdk-overlay-pane\" cdkDragHandle mat-dialog-title>\r\n        <span *ngIf=\"!currentColumn\">Options</span>\r\n        <span *ngIf=\"currentColumn\">{{currentColumn.caption}}</span>\r\n    </h1>\r\n</div>\r\n<form [formGroup]=\"formulaire\" (ngSubmit)=\"validateFilters(formulaire)\">\r\n    <div mat-dialog-content class=\"test\">\r\n        <mat-sidenav-container class=\"layout-container\" [hasBackdrop]=\"false\">\r\n            <mat-sidenav class=\"sidenav\" #sidenav mode=\"over\" position=\"end\" [opened]=\"isSidenavOpen\">\r\n                <ng-container *ngIf=\"currentColumn\">\r\n                    <div class=\"filters\">\r\n                        <ng-template #BooleanFilterFormContainerRef></ng-template>\r\n                    </div>\r\n                    <div class=\"filtersButton\">\r\n                        <ng-template #ButtonFormContainerRef></ng-template>\r\n                    </div>\r\n                </ng-container>\r\n            </mat-sidenav>\r\n            <mat-sidenav-content #sidenavContent>\r\n                <mat-nav-list cdkDropList (cdkDropListDropped)=\"dropColumn($event)\">\r\n                    <ng-container\r\n                        *ngFor=\"let column of datagridService.config.columns; let i = index; trackBy: trackBy\">\r\n                        <cocoring-datagrid-filter-column [column]=\"column\" [datagridService]=\"datagridService\"\r\n                            (columnSelected)=\"columnSelected($event)\"></cocoring-datagrid-filter-column>\r\n                    </ng-container>\r\n                </mat-nav-list>\r\n            </mat-sidenav-content>\r\n        </mat-sidenav-container>\r\n    </div>\r\n</form>","import { Component, EventEmitter, OnDestroy, OnInit, Output } from '@angular/core';\r\nimport { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nimport { debounceTime, takeUntil, tap } from 'rxjs/operators';\r\n\r\n@Component({\r\n  selector: 'cocoring-datagrid-searchbar',\r\n  templateUrl: './cocoring-datagrid-searchbar.component.html',\r\n  styleUrls: ['./cocoring-datagrid-searchbar.component.scss']\r\n})\r\nexport class CocoringDatagridSearchbarComponent implements OnInit, OnDestroy {\r\n  @Output() searchValue = new EventEmitter<string>();\r\n\r\n  searchForm: UntypedFormGroup;\r\n\r\n  private readonly destroy$ = new Subject();\r\n\r\n  constructor(private fb: UntypedFormBuilder) { }\r\n\r\n  ngOnInit(): void {\r\n    this.buildSearchForm()\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.destroy$.next(undefined);\r\n    this.destroy$.complete();\r\n  }\r\n\r\n  private buildSearchForm() {\r\n    this.searchForm = <UntypedFormGroup>this.fb.group({\r\n      'inputSearch': null\r\n    });\r\n\r\n    this.searchForm.get('inputSearch').valueChanges.pipe(\r\n      takeUntil(this.destroy$),\r\n      debounceTime(400),\r\n      tap((data: string) => this.searchValue.emit(data))\r\n    ).subscribe()\r\n  }\r\n\r\n  clearValue() {\r\n    this.searchForm.reset()\r\n  }\r\n}\r\n","<div class=\"datagrid-searchbar\" [formGroup]=\"searchForm\">\r\n    <mat-form-field>\r\n        <mat-label>Filtrer</mat-label>\r\n        <button class=\"iconSearch\" mat-button matPrefix mat-icon-button aria-label=\"Clear\">\r\n            <mat-icon>search</mat-icon>\r\n        </button>\r\n        <input class=\"input-filter\" matInput formControlName=\"inputSearch\">\r\n        <button class=\"button-reset\" mat-button *ngIf=\"searchForm.get('inputSearch').value\" matSuffix mat-icon-button aria-label=\"Clear\"\r\n            (click)=\"clearValue()\">\r\n            <mat-icon>close</mat-icon>\r\n        </button>\r\n    </mat-form-field>\r\n</div>","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil, tap } from 'rxjs/operators';\r\n\r\nimport { DatagridService } from '../../../../core';\r\nimport {\r\n    CocoringDatagridFilterModalComponent,\r\n} from '../cocoring-datagrid-filter-modal/cocoring-datagrid-filter-modal.component';\r\n\r\n@Component({\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  selector: 'cocoring-datagrid-toolbar',\r\n  templateUrl: './cocoring-datagrid-toolbar.component.html',\r\n  styleUrls: ['./cocoring-datagrid-toolbar.component.scss']\r\n})\r\nexport class CocoringDatagridToolbarComponent implements OnInit, OnDestroy {\r\n  totalRows: number\r\n  nbRowsChecked: number = 0;\r\n  rowRemoved: boolean = false;\r\n\r\n  private readonly destroy$ = new Subject();\r\n\r\n  // list: { id: number; name: string; }[];\r\n  // checkboxesFormControlArray: FormArray;\r\n\r\n  constructor(\r\n    public dialog: MatDialog,\r\n    private cdr: ChangeDetectorRef,\r\n    public datagridService: DatagridService) { }\r\n\r\n  ngOnInit(): void {\r\n    this.setCheckboxHeaderColumn()\r\n\r\n    this.onLengthDataSourceChange()\r\n\r\n    this.onRowsChecked()\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.destroy$.next(undefined);\r\n    this.destroy$.complete();\r\n  }\r\n\r\n  private onLengthDataSourceChange() {\r\n    this.datagridService.lengthDataSource$.pipe(\r\n      takeUntil(this.destroy$),\r\n      tap((nombre: number) => {\r\n        this.totalRows = nombre;\r\n        this.cdr.detectChanges();\r\n      })\r\n    ).subscribe()\r\n  }\r\n\r\n  refreshList() {\r\n    this.datagridService.refreshNeeded$.next();\r\n  }\r\n\r\n  deleteSelectedRows() {\r\n    this.datagridService.rowsDeletedEvent$.next(undefined);\r\n  }\r\n\r\n  restoreSelectedRows() {\r\n    this.datagridService.rowsRestoredEvent$.next(undefined);\r\n  }\r\n\r\n  onRowsChecked() {\r\n    this.datagridService.rowCheckedEvent$.pipe(\r\n      takeUntil(this.destroy$)\r\n    ).subscribe((rowValues: any) => {\r\n      this.rowRemoved = <boolean>rowValues[this.datagridService.config.propIsArchived]\r\n      this.nbRowsChecked = this.datagridService.rowsSelectedDatagrid.length\r\n      this.cdr.detectChanges()\r\n    })\r\n  }\r\n\r\n  filterModal() {\r\n    const dialogRef = this.dialog.open(CocoringDatagridFilterModalComponent, {\r\n      data: { datagridService: this.datagridService },\r\n      autoFocus: false,\r\n      width: '400px'\r\n    });\r\n\r\n    dialogRef.afterClosed().pipe(\r\n      takeUntil(this.destroy$)\r\n    ).subscribe((datas: any) => {\r\n      // console.log(\"modal fermée\", datas)\r\n    })\r\n  }\r\n\r\n  private setCheckboxHeaderColumn() {\r\n    this.datagridService.initCheckboxesDatagridForm()\r\n\r\n    this.datagridService.checkboxesDatagridForm.get(\"selectAllRowsCheckbox\").valueChanges.pipe(\r\n      takeUntil(this.destroy$)\r\n    ).subscribe((value: boolean) => {\r\n      this.datagridService.checkUncheckAllRows(value)\r\n    })\r\n  }\r\n\r\n  nextPage() {\r\n    this.datagridService.nextPage$.next()\r\n  }\r\n\r\n  previousPage() {\r\n    this.datagridService.previousPage$.next()\r\n  }\r\n\r\n  searchValue(searchValue: string) {\r\n    this.datagridService.searchGlobal = searchValue\r\n\r\n    this.datagridService.refreshNeeded$.next()\r\n  }\r\n\r\n  // private buildCheckboxesArray() {\r\n  //   this.list = [{ id: 1, name: \"golf\" }, { id: 2, name: \"tennis\" }, { id: 3, name: \"foot\" }];\r\n  //   this.checkboxesFormControlArray = <FormArray>this.datagridService.checkboxesDatagridForm.get(\"rowsCheckbox\")\r\n  //   this.list.forEach((item: any, i) => {\r\n  //     let fg = this.fb.group({});\r\n  //     fg.addControl(this.list[i].name, this.fb.control(true));\r\n  //     this.checkboxesFormControlArray.push(fg);\r\n  //   });\r\n  //   console.log(\"Test checkboxes\", this.checkboxesFormControlArray, this.datagridService.checkboxesDatagridForm.get(\"rowsCheckbox\"))\r\n  // }\r\n}\r\n","<cocoring-datagrid-searchbar (searchValue)=\"searchValue($event)\"></cocoring-datagrid-searchbar>\r\n<div class=\"datagrid-toolbar\">\r\n    <div class=\"datagrid-toolbar-part\">\r\n        <ng-container *ngIf=\"datagridService.config?.withBatchProcessing\">\r\n            <div class=\"toolbar-option select-all\">\r\n                <cocoring-checkbox [formGroup]=\"datagridService.checkboxesDatagridForm\"\r\n                    nameControl=\"selectAllRowsCheckbox\">\r\n                </cocoring-checkbox>\r\n            </div>\r\n        </ng-container>\r\n        <div class=\"toolbar-option\">\r\n            <button class=\"button-refresh\" mat-icon-button title=\"Rafraichir\" aria-label=\"Rafraichir les données du tableau\"\r\n                (click)=\"refreshList()\">\r\n                <mat-icon>refresh</mat-icon>\r\n            </button>\r\n        </div>\r\n        <div class=\"toolbar-option\">\r\n            <button class=\"button-filter\" mat-icon-button title=\"Rechercher / Filter / Trier\" aria-label=\"Rechercher / Filter / Trier\"\r\n                (click)=\"filterModal()\">\r\n                <mat-icon>filter_list</mat-icon>\r\n            </button>\r\n        </div>\r\n        <!-- <ng-container *ngIf=\"datagridService.config?.withBatchProcessing\"> -->\r\n        <ng-container>\r\n            <div class=\"toolbar-option\">\r\n                <!-- [disabled]=\"!nbRowsChecked || (!datagridService.config?.withBatchProcessing && nbRowsChecked > 1)\" -->\r\n                <ng-container *ngIf=\"!(!nbRowsChecked || (!datagridService.config?.withBatchProcessing && nbRowsChecked > 1))\" >\r\n                    <button mat-icon-button aria-label=\"supprimer les lignes sélectionnées\" (click)=\"deleteSelectedRows()\">\r\n                        <mat-icon title=\"supprimer les lignes sélectionnées\">delete_outline</mat-icon>\r\n                    </button>\r\n                    <button mat-icon-button aria-label=\"restaurer les lignes supprimées\" (click)=\"restoreSelectedRows()\">\r\n                        <mat-icon title=\"restaurer les lignes supprimées\">restore_from_trash</mat-icon>\r\n                    </button>\r\n                </ng-container>\r\n            </div>\r\n        </ng-container>\r\n    </div>\r\n    <div class=\"datagrid-toolbar-part right-part\">\r\n        <div class=\"currentPaginationText\">{{datagridService.indicatorPage?.from + 1}} - {{datagridService.indicatorPage?.to}} sur {{totalRows}}</div>\r\n        <div class=\"toolbar-option\">\r\n            <button class=\"button-previous\" mat-icon-button title=\"Précédent\" (click)=\"previousPage()\"\r\n                [disabled]=\"datagridService.currentPage === 1\" aria-label=\"Afficher la page précédente\">\r\n                <mat-icon>keyboard_arrow_left</mat-icon>\r\n            </button>\r\n        </div>\r\n        <div class=\"toolbar-option\">\r\n            <button class=\"button-next\" mat-icon-button title=\"Suivant\" (click)=\"nextPage()\"\r\n                [disabled]=\"datagridService.indicatorPage?.to === totalRows\" aria-label=\"Afficher la page suivante\">\r\n                <mat-icon>keyboard_arrow_right</mat-icon>\r\n            </button>\r\n        </div>\r\n    </div>\r\n</div>","import { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatSidenavModule } from '@angular/material/sidenav';\r\n\r\nimport { CocoringDatagridGroupDirective } from '../../directive/datagrid/cocoring-datagrid-group.directive';\r\nimport { CocoringButtonModule } from '../button/cocoring-button.module';\r\nimport { CocoringCheckboxModule } from '../form/inputs/input-checkbox/cocoring-checkbox.module';\r\nimport { CocoringDatagridCellComponent } from './cocoring-datagrid-cell/cocoring-datagrid-cell.component';\r\nimport {\r\n    CocoringDatagridFilterColumnComponent,\r\n} from './cocoring-datagrid-filter-modal/cocoring-datagrid-filter-column/cocoring-datagrid-filter-column.component';\r\nimport {\r\n    CocoringDatagridFilterModalComponent,\r\n} from './cocoring-datagrid-filter-modal/cocoring-datagrid-filter-modal.component';\r\nimport { CocoringDatagridHeadComponent } from './cocoring-datagrid-head/cocoring-datagrid-head.component';\r\nimport { CocoringDatagridRowComponent } from './cocoring-datagrid-row/cocoring-datagrid-row.component';\r\nimport {\r\n    CocoringDatagridSearchbarComponent,\r\n} from './cocoring-datagrid-toolbar/cocoring-datagrid-searchbar/cocoring-datagrid-searchbar.component';\r\nimport { CocoringDatagridToolbarComponent } from './cocoring-datagrid-toolbar/cocoring-datagrid-toolbar.component';\r\nimport { CocoringDatagridComponent } from './cocoring-datagrid.component';\r\n\r\n@NgModule({\r\n    declarations: [\r\n        CocoringDatagridComponent,\r\n        CocoringDatagridRowComponent,\r\n        CocoringDatagridCellComponent,\r\n        CocoringDatagridHeadComponent,\r\n        CocoringDatagridFilterModalComponent,\r\n        CocoringDatagridFilterColumnComponent,\r\n        CocoringDatagridToolbarComponent,\r\n        CocoringDatagridSearchbarComponent,\r\n        CocoringDatagridGroupDirective\r\n    ],\r\n    imports: [\r\n        CommonModule,\r\n        DragDropModule,\r\n        ReactiveFormsModule,\r\n        MatFormFieldModule,\r\n        MatSidenavModule,\r\n        MatListModule,\r\n        MatDialogModule,\r\n        MatInputModule,\r\n        MatIconModule,\r\n        MatButtonModule,\r\n        CocoringButtonModule,\r\n        CocoringCheckboxModule\r\n    ],\r\n    exports: [\r\n        CocoringDatagridComponent,\r\n        CocoringDatagridToolbarComponent,\r\n        CocoringDatagridGroupDirective\r\n    ],\r\n})\r\nexport class CocoringDatagridModule { }","\r\n/** DIRECTIVES */\r\n\r\nexport * from './directive/color-picker/cocoring-colorpicker.module';\r\nexport * from './directive/color-picker/cocoring-colorpicker.directive';\r\n\r\nexport * from './directive/default-image/cocoring-default-image.directive';\r\nexport * from './directive/default-image/cocoring-default-image.module';\r\n\r\nexport * from './directive/previous-page/cocoring-previous-page.module';\r\nexport * from './directive/previous-page/cocoring-previous-page.directive';\r\n\r\nexport * from './directive/datagrid/cocoring-datagrid-group.directive';\r\n\r\n/** PIPES */\r\n\r\nexport * from './pipe/variable-html/cocoring-variable-html.module';\r\nexport * from './pipe/variable-html/cocoring-variable-html.pipe';\r\n\r\nexport * from './pipe/file-size/cocoring-file-size.pipe';\r\nexport * from './pipe/file-size/cocoring-file-size.module';\r\n\r\nexport * from './pipe/pretty-print/cocoring-pretty-print.pipe';\r\nexport * from './pipe/pretty-print/cocoring-pretty-print.module';\r\n\r\nexport * from './pipe/sanitize-url/cocoring-sanitize-url.pipe';\r\nexport * from './pipe/sanitize-url/cocoring-sanitize-url.module';\r\n\r\nexport * from './pipe/truncate/cocoring-truncate.pipe';\r\nexport * from './pipe/truncate/cocoring-truncate.module';\r\n\r\n/** COMPONENTS */\r\n\r\nexport * from './component/error-handler/input-error-handler/cocoring-input-error.component';\r\nexport * from './component/error-handler/input-error-handler/cocoring-input-error.module';\r\n\r\nexport * from './component/wysiwyg/cocoring-wysiwyg.module';\r\nexport * from './component/wysiwyg/cocoring-wysiwyg.component';\r\n\r\nexport * from './component/toast-error-stacktrace/toast-error-stacktrace.module';\r\nexport * from './component/toast-error-stacktrace/toast-error-stacktrace.component';\r\n\r\nexport * from './component/modal/confirm-modal/cocoring-confirm-modal.component';\r\nexport * from './component/modal/confirm-modal/cocoring-confirm-modal.module';\r\n\r\nexport * from './component/form/form-buttons/cocoring-buttons-group.component';\r\nexport * from './component/form/form-buttons/cocoring-buttons-group.module';\r\n\r\nexport * from './component/form/inputs/input-icon/input-icon.component';\r\nexport * from './component/form/inputs/input-icon/input-icon.module';\r\n\r\nexport * from './component/form/inputs/input-checkbox/cocoring-checkbox.component';\r\nexport * from './component/form/inputs/input-checkbox/cocoring-checkbox.module';\r\n\r\nexport * from './component/form/inputs/input-checkbox-indeterminate/checkbox-indeterminate.component';\r\nexport * from './component/form/inputs/input-checkbox-indeterminate/checkbox-indeterminate.module';\r\n\r\nexport * from './component/form/inputs/input-date/cocoring-date.component';\r\nexport * from './component/form/inputs/input-date/cocoring-date.module';\r\n\r\nexport * from './component/form/inputs/input-slide-toggle/cocoring-slide-toggle.component';\r\nexport * from './component/form/inputs/input-slide-toggle/cocoring-slide-toggle.module';\r\n\r\nexport * from './component/form/inputs/input-email/cocoring-email.component';\r\nexport * from './component/form/inputs/input-email/cocoring-email.module';\r\n\r\nexport * from './component/form/inputs/input-number/cocoring-number.component';\r\nexport * from './component/form/inputs/input-number/cocoring-number.module';\r\n\r\nexport * from './component/form/inputs/input-password/cocoring-password.component';\r\nexport * from './component/form/inputs/input-password/cocoring-password.module';\r\n\r\nexport * from './component/form/inputs/input-select/cocoring-select.component';\r\nexport * from './component/form/inputs/input-select/cocoring-select.module';\r\n\r\nexport * from './component/form/inputs/input-text/cocoring-text.component';\r\nexport * from './component/form/inputs/input-text/cocoring-text.module';\r\n\r\nexport * from './component/form/inputs/input-textarea/cocoring-textarea.component';\r\nexport * from './component/form/inputs/input-textarea/cocoring-textarea.module';\r\n\r\nexport * from './component/form/inputs/input-viewer/cocoring-viewer.component';\r\nexport * from './component/form/inputs/input-viewer/cocoring-viewer.module';\r\n\r\nexport * from './component/form/form-container/cocoring-form-container.component';\r\nexport * from './component/form/form-container/cocoring-form-container.module';\r\n\r\nexport * from './component/form/index';\r\n\r\nexport * from './component/button-link/cocoring-button-link.module';\r\nexport * from './component/button-link/cocoring-button-link.component';\r\n\r\nexport * from './component/button/cocoring-button.module';\r\nexport * from './component/button/cocoring-button.component';\r\n\r\nexport * from './component/uploader/cocoring-uploader.module';\r\nexport * from './component/uploader/cocoring-uploader.component';\r\n\r\nexport * from './component/datagrid/cocoring-datagrid.component';\r\nexport * from './component/datagrid/cocoring-datagrid-toolbar/cocoring-datagrid-toolbar.component';\r\nexport * from './component/datagrid/cocoring-datagrid.module';\r\n","import { HttpBackend, HttpClient, HttpEvent, HttpHeaders, HttpParams } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\nexport enum SkipHeaders {\r\n    TRUE = 'true',\r\n    FALSE = 'false',\r\n}\r\n\r\n@Injectable({\r\n    providedIn: 'root',\r\n})\r\nexport class HttpService {\r\n    protected withCredentialsOption: boolean = false;\r\n    httpWithoutInterceptor: HttpClient;\r\n\r\n    private skip: SkipHeaders = SkipHeaders.FALSE;\r\n\r\n    constructor(\r\n        private http: HttpClient,\r\n        private httpBackend: HttpBackend\r\n    ) {\r\n        this.httpWithoutInterceptor = new HttpClient(httpBackend);\r\n    }\r\n\r\n    public set withCredentials(value: boolean) {\r\n        this.withCredentialsOption = value;\r\n    }\r\n\r\n    public get withCredentials() {\r\n        return this.withCredentialsOption;\r\n    }\r\n\r\n    /** TODO: à tester car pas sûr que cela fonctionne... */\r\n    delete<T>(path: string, params?: Object, skip: string = SkipHeaders.FALSE): Observable<T> {\r\n        let options = { params: this.buildUrlParams(params), withCredentials: this.withCredentialsOption }\r\n\r\n        if (skip === SkipHeaders.FALSE) {\r\n\r\n            options['headers'] = { skip: skip }\r\n\r\n            return this.http.delete(`${path}`, options)\r\n                .pipe(\r\n                    map(this.extractData.bind(this))\r\n                ) as Observable<T>;\r\n        } else {\r\n            return this.httpWithoutInterceptor.delete(`${path}`, options)\r\n                .pipe(\r\n                    map(this.extractData.bind(this))\r\n                ) as Observable<T>;\r\n        }\r\n    }\r\n\r\n    get<T>(path: string, params?: Object, skip: string = SkipHeaders.FALSE): Observable<T> {\r\n        let options = { params: this.buildUrlParams(params), withCredentials: this.withCredentialsOption }\r\n\r\n        if (skip === SkipHeaders.FALSE) {\r\n            options['headers'] = { skip: skip }\r\n\r\n            return this.http.get(`${path}`, options)\r\n                .pipe(map(this.extractData.bind(this)))\r\n        } else {\r\n            return this.httpWithoutInterceptor.get(`${path}`, options)\r\n                .pipe(map(this.extractData.bind(this)))\r\n        }\r\n    }\r\n\r\n    post<T>(path: string, body: Object = {}, skip: string = SkipHeaders.FALSE): Observable<T> {\r\n        let options: Object = { withCredentials: this.withCredentialsOption }\r\n\r\n        if (skip === SkipHeaders.FALSE) {\r\n            options['headers'] = new HttpHeaders().set('skip', skip)\r\n\r\n            return this.http.post(\r\n                `${path}`,\r\n                JSON.stringify(body),\r\n                options\r\n            ).pipe(map(this.extractData.bind(this)))\r\n        } else {\r\n            options['headers'] = new HttpHeaders()\r\n                .set('Content-Type', 'application/json; charset=utf-8')\r\n\r\n            return this.httpWithoutInterceptor.post(\r\n                `${path}`,\r\n                JSON.stringify(body),\r\n                options\r\n            ).pipe(map(this.extractData.bind(this)))\r\n        }\r\n    }\r\n\r\n    put<T>(path: string, body: Object = {}, skip: string = SkipHeaders.FALSE): Observable<any> {\r\n        let options = { withCredentials: this.withCredentialsOption }\r\n\r\n        if (skip === SkipHeaders.FALSE) {\r\n            options['headers'] = { skip: skip }\r\n\r\n            return this.http.put(\r\n                `${path}`,\r\n                JSON.stringify(body),\r\n                options\r\n            ).pipe(map(this.extractData.bind(this)))\r\n        } else {\r\n            return this.httpWithoutInterceptor.put(`${path}`, JSON.stringify(body))\r\n                .pipe(map(this.extractData.bind(this)))\r\n        }\r\n    }\r\n\r\n    patch<T>(path: string, body: Object = {}, skip: string = SkipHeaders.FALSE): Observable<T> {\r\n        let options: Object = { withCredentials: this.withCredentialsOption }\r\n\r\n        if (skip === SkipHeaders.FALSE) {\r\n            options['headers'] = new HttpHeaders().set('skip', skip)\r\n\r\n            return this.http.patch(\r\n                `${path}`,\r\n                JSON.stringify(body),\r\n                options\r\n            ).pipe(map(this.extractData.bind(this)))\r\n        } else {\r\n            options['headers'] = new HttpHeaders()\r\n                .set('Content-Type', 'application/json; charset=utf-8')\r\n\r\n            return this.httpWithoutInterceptor.patch(\r\n                `${path}`,\r\n                JSON.stringify(body),\r\n                options\r\n            ).pipe(map(this.extractData.bind(this)))\r\n        }\r\n    }\r\n\r\n    file<T>(path: string, params?: Object): Observable<T> {\r\n        return this.http.get(`${path}`, { params: this.buildUrlParams(params), withCredentials: this.withCredentialsOption, responseType: 'blob' })\r\n            .pipe(\r\n                map(this.extractData.bind(this))\r\n            ) as Observable<T>;\r\n    }\r\n\r\n    upload<T>(path: string, body: Object = {}, options: Object = { withCredentials: this.withCredentialsOption }): Observable<HttpEvent<T>> {\r\n        options['headers'] = new HttpHeaders().set('Content-Type', 'application/json; charset=utf-8');\r\n        options['reportProgress'] = true;\r\n        options['observe'] = \"events\";\r\n\r\n        return this.http.post(\r\n            `${path}`,\r\n            JSON.stringify(body),\r\n            options\r\n        ) as Observable<HttpEvent<T>>;\r\n    }\r\n\r\n    protected extractData(res: Response) {\r\n        if (!res) return res\r\n\r\n        const body: any = (<any>res.body);\r\n\r\n        if (res.status === 204) return res.body;\r\n\r\n        if (body) {\r\n            return typeof res.body === 'string' ? JSON.parse(<any>res.body) : res.body;\r\n        }\r\n\r\n        return res;\r\n    }\r\n\r\n    protected buildUrlParams(parameters: any): HttpParams {\r\n        let params = new HttpParams();\r\n        for (const property in parameters) {\r\n            if (parameters.hasOwnProperty(property)) {\r\n                params = params.append(property, parameters[property]);\r\n            }\r\n        }\r\n        return params;\r\n    }\r\n}\r\n\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n    providedIn: 'root'\r\n})\r\nexport class StorageService {\r\n    constructor() { }\r\n\r\n    public setSessionStorageItem(key: string, item: any) {\r\n        sessionStorage.setItem(key, JSON.stringify(item));\r\n    }\r\n\r\n    public getSessionStorageItem(key: string): any {\r\n        let a = null\r\n\r\n        try {\r\n            a = JSON.parse(sessionStorage.getItem(key));\r\n        } catch (e) {\r\n            console.error(`Session storage, erreur in parsing JSON : `, e)\r\n        } finally {\r\n            return a\r\n        }\r\n    }\r\n\r\n    public deleteSessionStorageItem(key: string) {\r\n        sessionStorage.removeItem(key);\r\n    }\r\n\r\n    public setLocalStorageItem(key: string, item: any) {\r\n        localStorage.setItem(key, JSON.stringify(item));\r\n    }\r\n\r\n    public getLocalStorageItem(key: string): any {\r\n        let a = null\r\n\r\n        try {\r\n            a = JSON.parse(localStorage.getItem(key));\r\n        } catch (e) {\r\n            console.error(`Local storage, erreur in parsing JSON : `, e)\r\n        } finally {\r\n            return a\r\n        }\r\n    }\r\n\r\n    public deleteLocalStorageItem(key: string) {\r\n        localStorage.removeItem(key);\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { StorageService } from './storage.service';\r\n\r\n@Injectable({\r\n    providedIn: 'root'\r\n})\r\nexport class TokenService {\r\n\r\n    constructor(private storageService: StorageService) { }\r\n\r\n    get accessToken(): string {\r\n        const token: string = this.storageService.getLocalStorageItem('accessToken');\r\n        return token || null;\r\n    }\r\n\r\n    set accessToken(token: string) {\r\n        this.storageService.setLocalStorageItem('accessToken', token);\r\n    }\r\n\r\n    get refreshToken(): string {\r\n        const token: string = this.storageService.getLocalStorageItem('refreshToken');\r\n\r\n        return token || null;\r\n    }\r\n\r\n    set refreshToken(token: string) {\r\n        this.storageService.setLocalStorageItem('refreshToken', token);\r\n    }\r\n\r\n    deleteTokens() {\r\n        this.storageService.deleteLocalStorageItem('refreshToken');\r\n        this.storageService.deleteLocalStorageItem('accessToken');\r\n    }\r\n\r\n    decryptAccessToken<T>(): T {\r\n        if (this.accessToken) {\r\n            const base64Array: string[] = this.accessToken.split('.');\r\n            const decodedToken = JSON.parse(window.atob(base64Array[1]));\r\n            return decodedToken;\r\n        }\r\n        return null;\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\n\r\ninterface BroadcastEvent {\r\n    eventKeys: EventKeys;\r\n    eventData?: any;\r\n}\r\n\r\ninterface Event<T> {\r\n    eventKey: string;\r\n    event: Observable<T>;\r\n}\r\n\r\ntype EventKeys = (string | number)[];\r\n\r\n@Injectable({\r\n    providedIn: 'root',\r\n})\r\nexport class BroadcastEventService {\r\n    private _eventBus: Subject<BroadcastEvent>;\r\n    private _broadcastedEvents: Event<any>[] = [];\r\n\r\n    constructor() {\r\n        this._eventBus = new Subject<BroadcastEvent>();\r\n    }\r\n\r\n    broadcast(event: BroadcastEvent) {\r\n        this._eventBus.next(event);\r\n    }\r\n\r\n    listen<T>(keys: EventKeys): Observable<T> {\r\n        const eventKey: string = keys.join(\"-\")\r\n\r\n        if (!this.isEventKnown(eventKey)) {\r\n            const newEvent: Observable<T> = this._eventBus.asObservable()\r\n                .pipe(\r\n                    filter(event => (event.eventKeys.join(\"-\")) === eventKey),\r\n                    map(event => event.eventData),\r\n                );\r\n\r\n            this._broadcastedEvents.push(<Event<T>>{ eventKey: eventKey, event: newEvent });\r\n\r\n            return newEvent;\r\n        } else {\r\n            return this.returnEvent(eventKey);\r\n        }\r\n    }\r\n\r\n    private isEventKnown(eventKey: string): boolean {\r\n        const index = this._broadcastedEvents.findIndex(entrée => entrée.eventKey === eventKey);\r\n\r\n        return index >= 0;\r\n    }\r\n\r\n    private returnEvent<T>(eventKey: string): Observable<T> {\r\n        const event = this._broadcastedEvents.find(event => event.eventKey === eventKey);\r\n\r\n        return event.event;\r\n    }\r\n}\r\n","import { ErrorHandler, Injectable, Injector } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\nimport { StorageService } from '../storage.service';\r\n\r\nconst LIMIT_MAX_RELOAD: number = 2\r\nconst TIME_MAX_RELOAD: number = 30 // secondes\r\n\r\nexport interface ReloadPageModel {\r\n  date: Date,\r\n  count: number,\r\n}\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class GlobalErrorInterceptorService implements ErrorHandler {\r\n  // public globalErrorsHandlerSubject: Subject<boolean> = new Subject<boolean>();\r\n\r\n  constructor(\r\n    private injector: Injector,\r\n    private storageService: StorageService) { }\r\n\r\n  handleError(error: any): void {\r\n    const chunkFailedMessage = /Loading chunk [\\d]+ failed/;\r\n\r\n    const router = this.injector.get(Router);\r\n\r\n    if (error.stack) {\r\n      console.error(\"details errors 😱 :\");\r\n      console.error(error.stack.toString());\r\n    } else {\r\n      console.error(\"error undefined 😡\");\r\n    }\r\n\r\n    if (chunkFailedMessage.test(error.message)) {\r\n      // this.globalErrorsHandlerSubject.next(true)\r\n      this.handleReloadPage(error.message.toString())\r\n    }\r\n  }\r\n\r\n  private handleReloadPage(message: string) {\r\n    console.log('%cPage reloaded : errors chunk versions', 'color: blue;')\r\n\r\n    const reloadPage: ReloadPageModel = this.storageService.getSessionStorageItem('reloadPage');\r\n\r\n    if (!reloadPage) {\r\n      this.storageService.setSessionStorageItem('reloadPage', <ReloadPageModel>{ date: new Date(), count: 1 })\r\n    } else if (reloadPage.count < LIMIT_MAX_RELOAD && (new Date().getTime() - new Date(reloadPage.date).getTime()) / 1000 < TIME_MAX_RELOAD) {\r\n      this.storageService.setSessionStorageItem('reloadPage', <ReloadPageModel>{ date: reloadPage.date, count: reloadPage.count + 1 })\r\n    } else {\r\n\r\n      message = `Veuillez communiquer cette erreur à l'administrateur du site : \\n\\n ${message}`\r\n\r\n      alert(message)\r\n\r\n      this.storageService.deleteSessionStorageItem('reloadPage')\r\n      return;\r\n    }\r\n\r\n    window.location.reload();\r\n  }\r\n}","import { HttpEvent, HttpHandler, HttpRequest } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { finalize } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\nexport class LoadingService {\r\n  subject: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\r\n\r\n  constructor() { }\r\n\r\n  startLoading() {\r\n    this.subject.next(true);\r\n  }\r\n\r\n  stopLoading() {\r\n    this.subject.next(false);\r\n  }\r\n}\r\n\r\n@Injectable({\r\n  providedIn: \"root\",\r\n})\r\nexport class LoadingInterceptorService {\r\n  activeRequests: number = 0;\r\n  timer: any;\r\n\r\n  constructor(private loadingScreenService: LoadingService) { }\r\n\r\n  intercept(\r\n    request: HttpRequest<any>,\r\n    next: HttpHandler\r\n  ): Observable<HttpEvent<any>> {\r\n    if (this.activeRequests === 0) {\r\n      this.loadingScreenService.startLoading();\r\n    }\r\n\r\n    this.activeRequests++;\r\n\r\n    clearTimeout(this.timer);\r\n\r\n    this.timer = setTimeout(() => {\r\n      this.forceFinalize();\r\n    }, 5000);\r\n\r\n    return next.handle(request).pipe(\r\n      finalize(() => {\r\n        this.activeRequests--;\r\n\r\n        if (this.activeRequests === 0) {\r\n          this.loadingScreenService.stopLoading();\r\n\r\n          clearTimeout(this.timer);\r\n        }\r\n      })\r\n    );\r\n  }\r\n\r\n  forceFinalize() {\r\n    this.activeRequests = 0;\r\n    this.loadingScreenService.stopLoading();\r\n  }\r\n}\r\n","import { HttpHandler, HttpHeaders, HttpInterceptor, HttpRequest } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { HttpService, SkipHeaders } from '../http.service';\r\nimport { TokenService } from '../token.service';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class RequestInterceptorService implements HttpInterceptor {\r\n\r\n  constructor(\r\n    private tokenService: TokenService,\r\n    private httpService: HttpService) { }\r\n\r\n  intercept(\r\n    request: HttpRequest<any>, next: HttpHandler\r\n  ): Observable<any> {\r\n\r\n    request = this.addAccessTokenRequest(request);\r\n\r\n    return next.handle(request);\r\n  }\r\n\r\n  addAccessTokenRequest(request, token?) {\r\n    const accessToken = token || this.tokenService.accessToken;\r\n\r\n    if (request.headers.get(\"skip\") === SkipHeaders.TRUE) {\r\n      return request = request.clone({\r\n        headers: request.headers.delete('skip')\r\n      });\r\n    }\r\n\r\n    if (!accessToken) {\r\n      return request;\r\n    }\r\n\r\n    return request.clone({\r\n      headers: new HttpHeaders({\r\n        'Content-Type': 'application/json',\r\n        'Authorization': `Bearer ${accessToken}`\r\n      })\r\n    });\r\n  }\r\n}","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n    providedIn: 'root',\r\n})\r\nexport class SortService {\r\n    sortObjectByKeys(objectData: any): any {\r\n        return Object.keys(objectData).sort().reduce(\r\n            (obj: any, key: string) => {\r\n                obj[key] = objectData[key];\r\n                return obj;\r\n            }, {}\r\n        );\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Injectable({\r\n    providedIn: 'root'\r\n})\r\nexport class ScrollService {\r\n    public scrollingNativeElement: HTMLElement\r\n    public onScroll: Subject<boolean> = new Subject<boolean>();\r\n\r\n    constructor() { }\r\n\r\n    private currentScrollPosition() {\r\n        // Firefox, Chrome, Opera, Safari\r\n        if (self.pageYOffset) return self.pageYOffset;\r\n        // Internet Explorer 6 - standards mode\r\n        if (document.documentElement && document.documentElement.scrollTop) {\r\n            return document.documentElement.scrollTop;\r\n        }\r\n        // Internet Explorer 6, 7 and 8\r\n        if (document.body.scrollTop) return document.body.scrollTop;\r\n        return 0;\r\n    }\r\n\r\n    private getElementDomPosition(elm) {\r\n        let y = elm.offsetTop - 100;\r\n        let node: any = elm;\r\n\r\n        while (node.offsetParent && node.offsetParent !== document.body) {\r\n            node = node.offsetParent;\r\n            y += node.offsetTop;\r\n        } return y;\r\n    }\r\n\r\n    scrollToTop() {\r\n        const that = this;\r\n        let timeOut;\r\n        if (document.body.scrollTop !== 0 || document.documentElement.scrollTop !== 0) {\r\n            window.scrollBy(0, -50);\r\n\r\n            timeOut = setTimeout(function () {\r\n                that.scrollToTop();\r\n            }, 10);\r\n\r\n        } else {\r\n            clearTimeout(timeOut);\r\n        }\r\n    }\r\n\r\n    scrollToIdSmooth(eID) {\r\n        const startY = this.currentScrollPosition();\r\n        const elm = document.getElementById(eID);\r\n        const stopY = this.getElementDomPosition(elm);\r\n        const distance = stopY > startY ? stopY - startY : startY - stopY;\r\n        if (distance < 100) {\r\n            scrollTo(0, stopY); return;\r\n        }\r\n        let speed = Math.round(distance / 100);\r\n\r\n        if (speed >= 20) {\r\n            speed = 20;\r\n        }\r\n\r\n        const step = Math.round(distance / 25);\r\n        let leapY = stopY > startY ? startY + step : startY - step;\r\n        let timer = 0;\r\n        if (stopY > startY) {\r\n            for (let i = startY; i < stopY; i += step) {\r\n                setTimeout(\"window.scrollTo(0, \" + leapY + \")\", timer * speed);\r\n                leapY += step; if (leapY > stopY) leapY = stopY; timer++;\r\n            } return;\r\n        }\r\n        for (let i = startY; i > stopY; i -= step) {\r\n            setTimeout(\"window.scrollTo(0, \" + leapY + \")\", timer * speed);\r\n            leapY -= step; if (leapY < stopY) leapY = stopY; timer++;\r\n        }\r\n        return false;\r\n    }\r\n\r\n    getScrollDistanceTo(eID): number {\r\n        const elm = document.getElementById(eID);\r\n\r\n        if (!elm) return -1; // element not found\r\n\r\n        const stopY = this.getElementDomPosition(elm);\r\n\r\n        return stopY\r\n    }\r\n}\r\n","import { Injectable, Type, ViewContainerRef } from '@angular/core';\r\n\r\nexport interface InputsComponent {\r\n    [key: string]: any;\r\n}\r\n\r\nexport interface OutputsComponent {\r\n    [key: string]: Function;\r\n}\r\n\r\n@Injectable({\r\n    providedIn: 'root',\r\n})\r\nexport class InjectComponentService {\r\n    componentsRefs: any[] = [];\r\n\r\n    /**\r\n     * Exemple d'utilisation:\r\n     \r\n     * this.injectComponentService.loadAndAddComponentToContainer(MyClasseComponent, #DomReference,\r\n            { @InputName_1: Value, @InputName_2: Value }, { @OutputName_1: (valueEmited: any) => this.callback(valueEmited)})\r\n     * Ou si le composant n'a pas de @Output\r\n     * this.injectComponentService.loadAndAddComponentToContainer(MyClasseComponent, #DomReference,\r\n            { @InputName_1: Value, @InputName_2: Value }, null)\r\n     */\r\n    loadAndAddComponentToContainer(\r\n        componentClass: Type<any>,\r\n        viewContainerRef: ViewContainerRef,\r\n        inputs: InputsComponent,\r\n        outputs?: OutputsComponent,\r\n        index?: number\r\n    ) {\r\n        // const factory = this.componentFactoryResolver.resolveComponentFactory(componentClass);\r\n        const componentRef = viewContainerRef.createComponent(componentClass, { index: index ? index : null });\r\n\r\n        /** inputs */\r\n        for (const [key, value] of Object.entries(inputs)) {\r\n            (componentRef.instance)[key] = value;\r\n        }\r\n\r\n        /** outputs */\r\n        if (outputs) {\r\n            for (const [key, value] of Object.entries(outputs)) {\r\n                if (key && value && (componentRef.instance)[key]) (componentRef.instance)[key].subscribe(data => value(data));\r\n            }\r\n        }\r\n\r\n        componentRef.changeDetectorRef.detectChanges();\r\n\r\n        this.componentsRefs.push(componentRef);\r\n    }\r\n\r\n    removeComponentFromViewContainer(index: number, viewContainerRef: ViewContainerRef) {\r\n        viewContainerRef.remove(index);\r\n\r\n        this.componentsRefs.splice(index, 1);\r\n    }\r\n\r\n    moveComponentFromViewContainer(currentIndex: number, previousIndex: number, viewContainerRef: ViewContainerRef) {\r\n        viewContainerRef.move(viewContainerRef.get(previousIndex), currentIndex);\r\n\r\n        this.componentsRefs.splice(previousIndex, 0, this.componentsRefs.splice(currentIndex, 1)[0]);\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n    providedIn: 'root',\r\n})\r\nexport class HelperService {\r\n\r\n    generateGuid(): string {\r\n        return this.s4() + this.s4() + '-' + this.s4() + '-' + this.s4() + '-' +\r\n            this.s4() + '-' + this.s4() + this.s4() + this.s4();\r\n    }\r\n\r\n    private s4() {\r\n        return Math.floor((1 + Math.random()) * 0x10000)\r\n            .toString(16)\r\n            .substring(1);\r\n    }\r\n\r\n    removeValueFromArrayByIndex(arrayValues: any[], index: number): any[] {\r\n        if (index === -1) return arrayValues;\r\n        return [...arrayValues.slice(0, index), ...arrayValues.slice(index + 1)];\r\n    }\r\n\r\n    /** arrondir un nombre */\r\n    roundUp(num: number, precision: number) {\r\n        precision = Math.pow(10, precision)\r\n        return Math.ceil(num * precision) / precision\r\n    }\r\n\r\n    /**  */\r\n\r\n    static retourneNomDeDomaine(): string {\r\n        return location.protocol + '//' + location.hostname + (location.port ? ':' + location.port : '');\r\n    }\r\n\r\n    static enleverNomDomaineUrl(url: string): string {\r\n        if (!url) return null;\r\n\r\n        if (!/^http[s]?:\\/\\//.test(url)) return url;\r\n\r\n        const urlSansHttp: string[] = url.split(/^http[s]?:\\/\\//);\r\n\r\n        const indexSlash: number = urlSansHttp[1].indexOf(\"/\");\r\n\r\n        const urlValide: string = urlSansHttp[1].substring(indexSlash);\r\n\r\n        return urlValide;\r\n    }\r\n\r\n    static retourneSegmentsURL(): string[] {\r\n        const pathName: string = window.location.pathname;\r\n        // on supprime du pathname le dernier caractères s'il s'agit d'un /\r\n        return pathName.replace(/\\/$/, '').split('/');\r\n    }\r\n\r\n    static ouvrirUrlExterne(lien: string, estceNouvelOnglet: boolean = false) {\r\n        if (!this.retourneNullSiNonDéfini(lien)) return;\r\n\r\n        let url: string = '';\r\n        if (!/^http[s]?:\\/\\//.test(lien)) {\r\n            url += 'http://';\r\n        }\r\n\r\n        url += lien;\r\n\r\n        if (estceNouvelOnglet) {\r\n            window.open(url);\r\n        } else {\r\n            window.location.href = url;\r\n        }\r\n    }\r\n\r\n    static nettoyerParametresUrl(ancienneUrl: string): string {\r\n        let index = 0;\r\n        let nouvelleUrl = ancienneUrl;\r\n        index = ancienneUrl.indexOf('?');\r\n\r\n        if (index === -1) {\r\n            index = ancienneUrl.indexOf('#');\r\n        }\r\n        if (index !== -1) {\r\n            nouvelleUrl = ancienneUrl.substring(0, index);\r\n        }\r\n\r\n        return nouvelleUrl;\r\n    }\r\n\r\n    static construireUrl(url: string): string {\r\n        return this.retourneNomDeDomaine() + '/' + url;\r\n    }\r\n\r\n    static segmentsURL(url: string): string[] {\r\n        if (!url) return [];\r\n        // on supprime de l'url le 1er / et le de dernier /\r\n        return url.replace(/\\/*/, '').replace(/\\/$/, '').split('/');\r\n    }\r\n\r\n\r\n    static estceUrlValide(string) {\r\n        const res = string.match(/(http(s)?:\\/\\/.)?(www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%_\\+.~#?&//=]*)/g);\r\n        if (!res) {\r\n            return false;\r\n        } else {\r\n            return true;\r\n        }\r\n    }\r\n\r\n    static encoderParamètresUrl(data): string {\r\n        const ret = [];\r\n\r\n        for (const key in data) {\r\n            if (data.hasOwnProperty(key)) {\r\n                const element = data[key];\r\n\r\n                ret.push(encodeURIComponent(key) + '=' + encodeURIComponent(element));\r\n            }\r\n        }\r\n\r\n        return ret.join('&');\r\n    }\r\n\r\n    static concaténerParamètresUrl(url: string, paramètres: string): string {\r\n        return url + '?' + paramètres;\r\n    }\r\n\r\n    static ajouterParamètreUrl(url: string, param: string, value?: string): string {\r\n        const a = document.createElement('a'), regex = /(?:\\?|&amp;|&)+([^=]+)(?:=([^&]*))*/g;\r\n        let match = null;\r\n        const str = []; a.href = url; param = encodeURIComponent(param);\r\n\r\n        while (match = regex.exec(a.search)) {\r\n            if (param !== match[1]) str.push(match[1] + (match[2] ? \"=\" + match[2] : \"\"));\r\n        }\r\n\r\n        str.push(param + (value ? \"=\" + encodeURIComponent(value) : \"\"));\r\n        a.search = str.join(\"&\");\r\n        return a.href;\r\n    }\r\n\r\n    /**\r\n     * Retourne l'url courante sans les paramètres\r\n     */\r\n    static donneUrlCouranteSansParamètre(): string {\r\n        return window.location.href.split(/[?#]/)[0];\r\n    }\r\n\r\n    /**\r\n     * JavaScript Get URL Parameter\r\n     * @param String prop The specific URL parameter you want to retreive the value for\r\n     * @return String|Object If prop is provided a string value is returned, otherwise an object of all properties is returned\r\n     */\r\n    static donneParamètresUrl(prop?: string, urlStatique?: string): string | object {\r\n        const params = {};\r\n        const urlCourante = urlStatique ? urlStatique : window.location.href;\r\n        const search = decodeURIComponent(urlCourante.slice(urlCourante.indexOf('?') + 1));\r\n\r\n        if (search === urlCourante) return null;\r\n\r\n        const definitions = search.split('&');\r\n\r\n        definitions.forEach(function (val, key) {\r\n            const parts = val.split('=', 2);\r\n            params[parts[0]] = parts[1];\r\n        });\r\n\r\n        if ((prop && !(prop in params))) {\r\n            return null;\r\n        }\r\n\r\n        return (prop && prop in params) ? params[prop] : params;\r\n    }\r\n\r\n\r\n    static retourneParamètresAccolades(url: string): string[] {\r\n        if (!this.retourneNullSiNonDéfini(url)) {\r\n            return [];\r\n        }\r\n\r\n        const résultat: string[] = url.match(/\\{(.*?)\\}/g); // entre {}\r\n\r\n        return !résultat ? [] : résultat;\r\n    }\r\n\r\n    /** efface les paramètres entre accolades d'une chaîne */\r\n    static effacerParamètresAccolades(chaine: string): string {\r\n        return this.éviterDoubleSlash(this.replaceAll(chaine, /\\{(.*?)\\}/g, \"\"));\r\n    }\r\n\r\n    static remplacerParamètresAccolades(chercherDans: string, motif: string, valeur: string): string {\r\n        return HelperService.replaceAll(chercherDans, `{${motif}}`, valeur);\r\n    }\r\n\r\n    static estceObjetVide(objet: any) {\r\n        return Object.keys(objet).length === 0 && objet.constructor === Object;\r\n    }\r\n\r\n    /**\r\n     * Détection de savoir s'il l'on vient d'une nouvelle page ou d'une page du site\r\n     */\r\n    static pageOuverteDepuisScript(): boolean {\r\n        return window.opener !== null;\r\n    }\r\n\r\n    static éviterDoubleSlash(chaine: string): string {\r\n        return HelperService.replaceAll(chaine, /(https?:\\/\\/)|(\\/){2,}/g, \"$1$2\");\r\n    }\r\n\r\n    /**\r\n     * Vérifie s'il existe une concordance entre les `paramètres de l'url courante` et les `paramètres de la source de données`\r\n     * @param urlSourceDonnées : exemple : la source de données d'une page de type formulaire, http://api.sonate-dev.fr:85/tiers/individus/{id}\r\n     * @param urlCouranteStatique : l'url du navigateur, http://localhost:1200/page/lab-formulaire?id=016247a2-2c1c-4e08-bd78-9b05659ec5ee\r\n     */\r\n    static siConcordanceParamètresURLetSourceDonnées(urlSourceDonnées: string, urlCouranteStatique?: string): boolean {\r\n        if (!urlSourceDonnées) return null;\r\n\r\n        const urlCourante = urlCouranteStatique ? urlCouranteStatique : window.location.search;\r\n        const paramètresAccolades: string[] = this.retourneParamètresAccolades(urlSourceDonnées);\r\n\r\n        if (!paramètresAccolades.length) {\r\n            return false;\r\n        }\r\n\r\n        for (let index = 0; index < paramètresAccolades.length; index++) {\r\n            const paramètreAvecAccolades = paramètresAccolades[index];\r\n            const paramètreSansAccolade: string = paramètreAvecAccolades.substring(paramètreAvecAccolades.lastIndexOf(\"{\") + 1, paramètreAvecAccolades.lastIndexOf(\"}\"));\r\n            const valeurParamètre: string | object = this.donneParamètresUrl(paramètreSansAccolade, urlCourante);\r\n\r\n            if (!valeurParamètre) {\r\n                return false;\r\n            }\r\n        }\r\n        return true;\r\n    }\r\n\r\n    static retourneNullSiNonDéfini(valeur: any) {\r\n        if (Array.isArray(valeur)) {\r\n            valeur = valeur.length === 0 ? null : valeur;\r\n        } else if (typeof valeur === 'number') {\r\n            return valeur;\r\n        } else {\r\n            valeur = typeof valeur === \"string\" ? valeur.trim() : valeur;\r\n        }\r\n        return !valeur ? null : valeur;\r\n    }\r\n\r\n    static replaceAll(text, pattern, newText): string {\r\n        return text.replace(new RegExp(pattern, 'g'), newText);\r\n    }\r\n\r\n    static valeurTexteBooléen(valeur: boolean): string {\r\n        if (typeof (valeur) === \"boolean\") {\r\n            return valeur ? \"Oui\" : \"Non\";\r\n        }\r\n\r\n        return null;\r\n    }\r\n\r\n    static estNumerique(n: any): boolean {\r\n        return !isNaN(parseFloat(n)) && isFinite(n);\r\n    }\r\n\r\n    // 01 02 03 04 05 -> 0102030405\r\n    static adapteurEcritureTelephone(valeurAvecEspace: string): string {\r\n        let valeurSansEspace: string;\r\n\r\n        if (!this.retourneNullSiNonDéfini(valeurAvecEspace)) {\r\n            return null;\r\n        }\r\n\r\n        const tmp: string[] = valeurAvecEspace.split(' ');\r\n\r\n        valeurSansEspace = tmp[0] + tmp[1] + tmp[2] + tmp[3] + tmp[4];\r\n        return valeurSansEspace;\r\n    }\r\n\r\n    static retourneValeurObjet(objet: any, propriété: string) {\r\n        if (typeof objet !== 'undefined' && objet.hasOwnProperty(propriété)) {\r\n            return objet[propriété];\r\n        }\r\n        return null;\r\n    }\r\n\r\n    static dupliquerTableau(tableau: any[]): any[] {\r\n        return [...tableau];\r\n    }\r\n\r\n    static ajouterValeurTableau(tableau: any[], valeur: any): any[] {\r\n        return [...tableau, valeur];\r\n    }\r\n\r\n    static ajouterValeurUniqueTableau(tableau: any[], valeur: any): any[] {\r\n        if (tableau.indexOf(valeur) === -1) {\r\n            return [...tableau, valeur];\r\n        }\r\n\r\n        return tableau;\r\n    }\r\n\r\n    static arrondirZeroCinqPrès(nombre: number): number {\r\n        return Math.round(nombre * 2) * 0.5;\r\n    }\r\n\r\n    /**\r\n     * Un GUID envoyé depuis le back au front est de la forme : (inheritor) {_value: \"0163d59a-bcd8-44fe-852f-100af77dfb9b\"}\r\n     * @param objetInheritor objet GUID envoyé depuis le backoffice\r\n     */\r\n    static désérialiserInheritorGuid(objetInheritor: any): string {\r\n        return objetInheritor._value ? objetInheritor._value : null;\r\n    }\r\n\r\n    static sérialiserInheritorGuid(valeur: any): object {\r\n        return null\r\n        // return valeur._value ? valeur : new Guid(valeur);\r\n    }\r\n\r\n    static estdetypeInheritorGuid(valeur: any): object {\r\n        return valeur.hasOwnProperty(\"_value\");\r\n    }\r\n\r\n    static estdetypeGuid(valeur: string): boolean {\r\n        if (!valeur) return false;\r\n        return /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/.test(valeur);\r\n    }\r\n\r\n    /** fin bloc GUID */\r\n\r\n    static valeurDéfautBooléen(valeur: any): boolean {\r\n        return (typeof valeur !== \"undefined\" && !valeur) ? false : true;\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { AbstractControl, UntypedFormControl, UntypedFormGroup, ValidationErrors, ValidatorFn } from '@angular/forms';\r\n\r\nimport { HelperService } from './helper/helper.service';\r\n\r\nexport interface ValidtionError {\r\n    key: string;\r\n    value?: any;\r\n    message?: string;\r\n}\r\n\r\n@Injectable({\r\n    providedIn: 'root',\r\n})\r\nexport class ValidatorsService {\r\n\r\n    public getValidationErrorMessage(error: ValidtionError): any {\r\n\r\n        const configClésErreurs: any = {\r\n            'required': (!error.message ? 'Veuillez saisir ce champ' : error.message),\r\n            'invalidEmailAddress': 'L\\'e-mail n\\'est pas valide.',\r\n            'invalidCodePostal': 'Le code postal n\\'est pas valide.',\r\n            'invalidDate': \"Veuillez saisir une date valide.\",\r\n            'invalidHeure': \"L'heure n'est pas au bon format.\",\r\n            'invalideDateHeure': \"La date/heure n'est pas valide.\",\r\n            'regexInvalide': (!error.value.formatRegexEnClair ? 'Le format attendu est incorrect.' : `Fomat attendu : ${error.value.formatRegexEnClair}.`),\r\n            'invalidTypeMime': \"Le type du document n'est pas accepté.\",\r\n            'invalidTailleTotaleUpload': `La taille totale des pièces jointes est atteinte.`,\r\n            'invalidTailleUpload': `La taille limite de la pièce jointe est atteinte.`,\r\n            'datePasseeInvalide': \"La date doit être dans le passé.\",\r\n            'dateFutureInvalide': \"La date doit être dans le future.\",\r\n            'datePasseeOuPresenteInvalide': \"La date doit être passée ou présente.\",\r\n            'dateFutureOuPresenteInvalide': \"La date doit être présente ou future.\",\r\n            'invalidIMEI': \"Le numéro IMEI est invalide.\",\r\n            'invalidDateAnterieure': \"La date doit être antérieure.\",\r\n            'dateAvantUneAutre': \"La date B doit être antérieure à la date A.\",\r\n            'invalidNumeroTelephone': 'Le numéro de téléphone n\\'est pas valide.',\r\n            'adresseMailDejaUtilisee': 'L\\'adresse e-mail est déjà utilisée.',\r\n            'identiqueValidator': 'Le champ n\\'est pas identique.',\r\n            'pseudoDejaUtilisee': 'Le pseudo est déjà utilisé.',\r\n            'utilisateurMajeurInvalide': 'Vous devez être majeur.',\r\n            'entierInvalide': 'Saisissez un entier.',\r\n            'auMoinsUnChampRequis': 'Veuillez saisir au moins un critère de recherche.'\r\n        };\r\n\r\n        return configClésErreurs[error.key];\r\n    }\r\n\r\n    public static require(control: UntypedFormControl): ValidationErrors {\r\n        const value = HelperService.retourneNullSiNonDéfini(control.value)\r\n\r\n        if (control.hasValidator(ValidatorsService.dateValidator)) {\r\n            return value === null ? { invalidDate: true } : null;\r\n        } else {\r\n            return value === null ? { \"required\": true } : null;\r\n        }\r\n    }\r\n\r\n    public static emailValidator(control: UntypedFormControl): ValidationErrors {\r\n        if (!control.value) return null;\r\n\r\n        // RFC 2822 compliant regex\r\n        if (control.value.match(/[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?/)) {\r\n            return null;\r\n        } else {\r\n            return { 'invalidEmailAddress': true };\r\n        }\r\n    }\r\n\r\n    public static dateValidator(control: UntypedFormControl): ValidationErrors {\r\n        return null\r\n    }\r\n\r\n    public static telephoneValidator(control: UntypedFormControl): any {\r\n        if (!control.value) return null;\r\n\r\n        if (control.value.match(/^0[1-9](\\s[0-9][0-9]){4}$/)) {\r\n            return null;\r\n        } else {\r\n            return { 'invalidNumeroTelephone': true };\r\n        }\r\n    }\r\n\r\n    public static codepostalValidator(control: UntypedFormControl): any {\r\n        if (!control.value) return null;\r\n\r\n        if (control.value.match(/^(([0-8][0-9])|(9[0-5]))[0-9]{3}$/)) {\r\n            return null;\r\n        } else {\r\n            return { 'invalidCodePostal': true };\r\n        }\r\n    }\r\n\r\n    /** VALIDATEURS DATES */\r\n\r\n    /**\r\n     * La date à valider est au format UTC : 1982-11-06T00:00:00Z\r\n     */\r\n    // public static dateValidateurUTC(control: FormControl): any {\r\n    //     if (!control.value) return null;\r\n\r\n    //     const str = control.value;\r\n\r\n    //     const dateValide: boolean = DateFunctions.validerDateUTC(str);\r\n\r\n    //     return dateValide ? null : { 'invalidDate': true };\r\n    // }\r\n\r\n    // l'heure est au format 11h12\r\n    // public static heureValidateur(control: FormControl): any {\r\n    //     if (!control.value) return null;\r\n\r\n    //     const str = control.value;\r\n\r\n    //     if (DateFunctions.validerUneHeure(str)) {\r\n    //         return null;\r\n    //     } else {\r\n    //         return { 'invalidHeure': true };\r\n    //     }\r\n    // }\r\n\r\n    // la date heure est au format 01/01/2018 à 12h14\r\n    // public static dateHeureValidateur(control: FormControl): any {\r\n    //     if (!control.value) return null;\r\n\r\n    //     const str: string = control.value;\r\n\r\n    //     const valeurSplit: string[] = str.split(configdefault.date.dateTimeSeparator);\r\n\r\n    //     const dateValide: boolean = DateFunctions.validerDateJJMMAAAA(valeurSplit[0]);\r\n    //     const heureValide: boolean = DateFunctions.validerUneHeure(valeurSplit[1]);\r\n\r\n    //     if (!dateValide) {\r\n    //         return { 'invalidDate': true };\r\n    //     } else if (!heureValide) {\r\n    //         return { 'invalidHeure': true };\r\n    //     } else {\r\n    //         return null;\r\n    //     }\r\n    // }\r\n\r\n    /**\r\n     * La date à valider est au format UTC : 1982-11-06T15:15:15Z\r\n     * invalideDateHeure\r\n     */\r\n    // public static dateHeureValidateurUTC(control: FormControl): any {\r\n    //     if (!control.value) return null;\r\n\r\n    //     const str = control.value;\r\n\r\n    //     const dateValide: boolean = DateFunctions.validerDateUTC(str);\r\n\r\n    //     return dateValide ? null : { 'invalideDateHeure': true };\r\n\r\n    // }\r\n\r\n    // public static datePasséeValidateur(control: FormControl): any {\r\n    //     if (!control.value) return null;\r\n\r\n    //     const dates: Date[] = DateFunctions.validateurDatesAides(control.value);\r\n\r\n    //     if (dates[0] >= dates[1]) {\r\n    //         return {\r\n    //             'datePasseeInvalide': true\r\n    //         };\r\n    //     }\r\n\r\n    //     return null;\r\n    // }\r\n\r\n    // public static dateFutureValidateur(control: FormControl): any {\r\n    //     if (!control.value) return null;\r\n\r\n    //     const dates: Date[] = DateFunctions.validateurDatesAides(control.value);\r\n\r\n    //     if (dates[0] <= dates[1]) {\r\n    //         return {\r\n    //             'dateFutureInvalide': true\r\n    //         };\r\n    //     }\r\n\r\n    //     return null;\r\n    // }\r\n\r\n    // public static datePasséeOuPrésenteValidateur(control: FormControl): any {\r\n    //     if (!control.value) return null;\r\n\r\n    //     const dates: Date[] = DateFunctions.validateurDatesAides(control.value);\r\n\r\n    //     if (dates[0] > dates[1]) {\r\n    //         return {\r\n    //             'datePasseeOuPresenteInvalide': true\r\n    //         };\r\n    //     }\r\n\r\n    //     return null;\r\n    // }\r\n\r\n    // public static dateFutureOuPrésenteValidateur(control: FormControl): any {\r\n    //     if (!control.value) return null;\r\n\r\n    //     const dates: Date[] = DateFunctions.validateurDatesAides(control.value);\r\n\r\n    //     if (dates[0] < dates[1]) {\r\n    //         return {\r\n    //             'dateFutureOuPresenteInvalide': true\r\n    //         };\r\n    //     }\r\n\r\n    //     return null;\r\n    // }\r\n\r\n    /** / VALIDATEURS DATES */\r\n\r\n    // https://medium.com/front-end-hacking/reactive-forms-and-form-validation-with-angular-fdcbcf98e1e8\r\n    public static regexValidator(regle: string, formatRegexEnClair: string): ValidatorFn {\r\n        return (control: AbstractControl): { [key: string]: any } => {\r\n            if (!control.value) return null;\r\n\r\n            const regexp: RegExp = new RegExp(regle);\r\n\r\n            return !regexp.test(control.value) ? { 'regexInvalide': { formatRegexEnClair } } : null;\r\n        };\r\n    }\r\n\r\n    public static numeroSinistreValidator(control: UntypedFormControl): any {\r\n        if (!control.value) return null;\r\n\r\n        if (control.value.match(/^([A-z0-9]{2})?(L|l)[A-z0-9](T|t)[A-z0-9]{5}$/)) {\r\n            return null;\r\n        } else {\r\n            return { 'invalidNumeroSinistre': true };\r\n        }\r\n    }\r\n\r\n    public static caseACocherRequireValidator(control: UntypedFormControl): any {\r\n        if (control.value === true) {\r\n            return null;\r\n        } else {\r\n            return { 'required': true };\r\n        }\r\n    }\r\n\r\n    public static dateAvantUneAutre(champDateAvant: string, champDateAprès: string): any {\r\n        return (group: UntypedFormGroup): { [key: string]: any } => {\r\n\r\n            if (!group.get(champDateAvant) || !group.get(champDateAprès)) return null;\r\n\r\n            const dateDébut: any = group.get(champDateAvant).value;\r\n            const dateFin: any = group.get(champDateAprès).value;\r\n\r\n            if (dateDébut > dateFin) {\r\n                return {\r\n                    'erreurDateFinAvantDébut': true\r\n                };\r\n            }\r\n\r\n            return null;\r\n        };\r\n    }\r\n\r\n    // https://gist.github.com/DiegoSalazar/4075533\r\n    public static luhnValidator(control: UntypedFormControl): any {\r\n        let valeur: string = control.value;\r\n\r\n        // accept only digits, dashes or spaces\r\n        if (/[^0-9-\\s]+/.test(valeur)) return { 'invalidIMEI': true };\r\n\r\n        // The Luhn Algorithm. It's so pretty.\r\n        let nCheck = 0;\r\n        let nDigit: number = 0;\r\n        let bEven: boolean = false;\r\n\r\n        valeur = valeur.replace(/\\D/g, \"\");\r\n\r\n        for (let n = valeur.length - 1; n >= 0; n--) {\r\n            const cDigit = valeur.charAt(n);\r\n            nDigit = parseInt(cDigit, 10);\r\n\r\n            if (bEven) {\r\n                if ((nDigit *= 2) > 9) nDigit -= 9;\r\n            }\r\n\r\n            nCheck += nDigit;\r\n            bEven = !bEven;\r\n        }\r\n\r\n        if (nCheck % 10 === 0) {\r\n            return null;\r\n        } else {\r\n            return { 'invalidIMEI': true };\r\n        }\r\n    }\r\n\r\n    public static identiqueValidator(controle: string, controleConfirme: string): any {\r\n        return (group: UntypedFormGroup): { [key: string]: any } => {\r\n            const password = group.controls[controle];\r\n            const confirmPassword = group.controls[controleConfirme];\r\n\r\n            if (password.value !== confirmPassword.value) {\r\n                return {\r\n                    'identiqueValidator': true\r\n                };\r\n            }\r\n        };\r\n    }\r\n\r\n    public static êtreMajeurValidateur(control: UntypedFormControl): any {\r\n        if (parseInt(control.value) >= 18) {\r\n            return null;\r\n        } else {\r\n            return { 'utilisateurMajeurInvalide': true };\r\n        }\r\n    }\r\n\r\n    public static entierValidateur(control: UntypedFormControl): any {\r\n        if (control.value.match(/^\\d+$/)) {\r\n            return null;\r\n        } else {\r\n            return { 'entierInvalide': true };\r\n        }\r\n    }\r\n\r\n    public static auMoinsUnChampDoitEtreRequisValidateur(): any {\r\n        return (group: UntypedFormGroup): { [key: string]: any } => {\r\n            let isAtLeastOne = false;\r\n\r\n            if (group && group.controls) {\r\n                for (const control in group.controls) {\r\n                    if (group.controls.hasOwnProperty(control) && group.controls[control].valid && HelperService.retourneNullSiNonDéfini(group.controls[control].value)) {\r\n                        isAtLeastOne = true;\r\n                        break;\r\n                    }\r\n                }\r\n            }\r\n            return isAtLeastOne ? null : { 'auMoinsUnChampRequis': true };\r\n        };\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class CurrentUrlRoutingService {\r\n    public currentUrl = new BehaviorSubject<string>(undefined);\r\n}\r\n","export enum FragmentType {\r\n    OrderBy = 1,\r\n    Top = 2,\r\n    Skip = 3,\r\n    Count = 4,\r\n    Expand = 5,\r\n    Filter = 6,\r\n    Select = 7\r\n  }\r\n","import { FragmentType } from './enums';\r\n\r\nexport class QueryFragment {\r\n  constructor(public type: FragmentType, public value: string) {}\r\n}\r\n","import { FragmentType } from './enums';\r\nimport { QueryFragment } from './queryFragment';\r\n\r\n// const orderBy = require('lodash.orderby');\r\n\r\ntype filterExpressionType = string | number | boolean | Date;\r\n\r\nexport default class FilterBuilder {\r\n  private fragments: QueryFragment[] = [];\r\n  filterExpression = (field: string, operator: string, value: filterExpressionType) => {\r\n    this.fragments.push(\r\n      new QueryFragment(FragmentType.Filter, `${field} ${operator} ${this.getValue(value)}`)\r\n    );\r\n    return this;\r\n  };\r\n  filterPhrase = (phrase: string) => {\r\n    this.fragments.push(new QueryFragment(FragmentType.Filter, phrase));\r\n    return this;\r\n  };\r\n  and = (predicate: (filter: FilterBuilder) => FilterBuilder) => {\r\n    this.fragments.push(\r\n      new QueryFragment(FragmentType.Filter, `(${predicate(new FilterBuilder()).toQuery('and')})`)\r\n    );\r\n    return this;\r\n  };\r\n  or = (predicate: (filter: FilterBuilder) => FilterBuilder) => {\r\n    this.fragments.push(\r\n      new QueryFragment(FragmentType.Filter, `(${predicate(new FilterBuilder()).toQuery('or')})`)\r\n    );\r\n    return this;\r\n  };\r\n  toQuery = (operator: string): string => {\r\n    if (!this.fragments || this.fragments.length < 1) return '';\r\n    return this.fragments.map(f => f.value).join(` ${operator} `);\r\n  };\r\n\r\n  private getValue(value: filterExpressionType): string {\r\n    let type: string = typeof value;\r\n    if (value instanceof Date) type = 'date';\r\n\r\n    switch (type) {\r\n      case 'string':\r\n        return `'${value}'`;\r\n      case 'date':\r\n        return `${(value as Date).toISOString()}`;\r\n      default:\r\n        return `${value}`;\r\n    }\r\n  }\r\n}\r\n\r\nexport class QueryBuilder {\r\n  private fragments: QueryFragment[] = [];\r\n  orderBy = (fields: string) => {\r\n    this.clear(FragmentType.OrderBy);\r\n    this.fragments.push(new QueryFragment(FragmentType.OrderBy, `$orderby=${fields}`));\r\n    return this;\r\n  };\r\n  top = (top: number) => {\r\n    this.clear(FragmentType.Top);\r\n    this.fragments.push(new QueryFragment(FragmentType.Top, `$top=${top}`));\r\n    return this;\r\n  };\r\n  skip = (skip: number) => {\r\n    this.clear(FragmentType.Skip);\r\n    this.fragments.push(new QueryFragment(FragmentType.Skip, `$skip=${skip}`));\r\n    return this;\r\n  };\r\n  count = () => {\r\n    this.clear(FragmentType.Count);\r\n    this.fragments.push(new QueryFragment(FragmentType.Count, `$count=true`));\r\n    return this;\r\n  };\r\n  expand = (fields: string) => {\r\n    this.clear(FragmentType.Expand);\r\n    this.fragments.push(new QueryFragment(FragmentType.Expand, `$expand=${fields}`));\r\n    return this;\r\n  };\r\n  select = (fields: string) => {\r\n    this.clear(FragmentType.Select);\r\n    this.fragments.push(new QueryFragment(FragmentType.Select, `$select=${fields}`));\r\n    return this;\r\n  };\r\n  filter = (predicate: (filter: FilterBuilder) => FilterBuilder, operator: string = 'and') => {\r\n    this.clear(FragmentType.Filter);\r\n    this.fragments.push(\r\n      new QueryFragment(FragmentType.Filter, predicate(new FilterBuilder()).toQuery(operator))\r\n    );\r\n    return this;\r\n  };\r\n  clear = (fragmentType: FragmentType) => {\r\n    this.fragments = this.fragments.filter(f => f.type !== fragmentType);\r\n    return this;\r\n  }\r\n  toQuery = () => {\r\n    if (this.fragments.length < 1) return '';\r\n\r\n    // const sortedFragments = orderBy(this.fragments, (sf: QueryFragment) => sf.type);\r\n\r\n    const sortedFragments = this.fragments.concat().sort(this.sortBy(\"type\"));\r\n    const nonFilterFragments = sortedFragments.filter((sf: QueryFragment) => sf.type !== FragmentType.Filter);\r\n    const filterFragments = sortedFragments.filter((sf: QueryFragment) => sf.type === FragmentType.Filter);\r\n\r\n    let query =\r\n      // '?' +\r\n      '' +\r\n      sortedFragments\r\n        .filter((sf: QueryFragment) => sf.type !== FragmentType.Filter)\r\n        .map((sf: QueryFragment) => sf.value)\r\n        .join('&');\r\n\r\n    if (filterFragments.length < 1) return query;\r\n    else if (nonFilterFragments.length > 0) query += '&';\r\n\r\n    query += this.parseFilters(filterFragments, 'and').trim();\r\n\r\n    return query;\r\n  };\r\n\r\n  private parseFilters(fragments: QueryFragment[], operator: string): string {\r\n    if (!fragments === null || fragments.length < 1) return '';\r\n    return '$filter=' + fragments.map(f => f.value).join(` ${operator} `);\r\n  }\r\n\r\n  private sortBy = (key) => {\r\n    return (a, b) => (a[key] > b[key]) ? 1 : ((b[key] > a[key]) ? -1 : 0);\r\n  };\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class FileService {\r\n\r\n  constructor() { }\r\n\r\n  downloadFile(response: Response | any, fileName: string) {\r\n    const a = document.createElement('a');\r\n\r\n    a.href = URL.createObjectURL(response);\r\n    a.download = fileName;\r\n\r\n    document.body.appendChild(a);\r\n\r\n    a.click();\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { CommandMappings } from '../../model/schema-datas.model';\r\n\r\ninterface ParamsMapping {\r\n    mappingName: string;\r\n    mappingKeys: string[];\r\n}\r\n\r\ntype valueType = string | number | Date\r\n\r\n@Injectable()\r\nexport class MappingBuilderService {\r\n    private nameForm: string;\r\n    private values: any;\r\n    private commandMapped: Object = {};\r\n\r\n    constructor() { }\r\n\r\n    init() {\r\n        this.commandMapped = {}\r\n\r\n        return this\r\n    }\r\n\r\n    set setNameForm(name: string) {\r\n        this.nameForm = name;\r\n    }\r\n\r\n    set valuesForm(values: any) {\r\n        this.values = values;\r\n    }\r\n\r\n    map(mapping: CommandMappings) {\r\n        const sourceMap: ParamsMapping = this.extractMappingParams(mapping.source);\r\n        const sourceValue: valueType = this.getValueFromMapping(sourceMap);\r\n\r\n        const destinationMap: ParamsMapping = this.extractMappingParams(mapping.destination);\r\n\r\n        /** sourceValue est undefined si la clé du formulaire est inconnu */\r\n        if (typeof sourceValue !== 'undefined') {\r\n            this.assign(this.commandMapped, destinationMap.mappingKeys, sourceValue)\r\n        }\r\n\r\n        return this\r\n    }\r\n\r\n    getMapping() {\r\n        return Object.entries(this.commandMapped).length === 0 ? null : this.commandMapped\r\n    }\r\n\r\n    private extractMappingParams(mapping: string): ParamsMapping {\r\n        const m: string[] = mapping.split('.')\r\n        const [firstElement, ...rest] = m\r\n\r\n        return <ParamsMapping>{ mappingName: firstElement, mappingKeys: rest }\r\n    }\r\n\r\n    private getValueFromMapping(source: ParamsMapping): valueType {\r\n        let value: valueType = null\r\n\r\n        if (this.nameForm === source.mappingName) {\r\n            source.mappingKeys.forEach((key: string) => {\r\n                value = value ? value[key] : ((key in this.values) ? this.values[key] : null)\r\n            })\r\n\r\n            return value\r\n        }\r\n\r\n        return undefined\r\n    }\r\n\r\n    private assign(obj: Object, keyPath: string[], value: valueType) {\r\n        let key\r\n        let lastKeyIndex = keyPath.length - 1;\r\n\r\n        for (var i = 0; i < lastKeyIndex; ++i) {\r\n            key = keyPath[i];\r\n\r\n            if (!(key in obj)) {\r\n                obj[key] = {}\r\n            }\r\n\r\n            obj = obj[key];\r\n        }\r\n\r\n        obj[keyPath[lastKeyIndex]] = value;\r\n    }\r\n}\r\n\r\n","import { Injectable } from '@angular/core';\r\nimport { UntypedFormGroup } from '@angular/forms';\r\n\r\n@Injectable({\r\n    providedIn: 'root',\r\n})\r\nexport class FormHelperService {\r\n\r\n    countControlsForm(form: UntypedFormGroup): number {\r\n        return Object.keys(form.controls).length\r\n    }\r\n\r\n    keysControlsForm(form: UntypedFormGroup): string[] {\r\n        return Object.keys(form.controls)\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\n\r\n@Injectable({\r\n    providedIn: 'root',\r\n})\r\nexport class UrlHelperService {\r\n\r\n    constructor(\r\n        private router: Router,\r\n        private activatedRoute: ActivatedRoute) { }\r\n\r\n    updateParamsUrlWithoutRefresh(queryParams: any) {\r\n        this.router.navigate(\r\n            [],\r\n            {\r\n                relativeTo: this.activatedRoute,\r\n                queryParams: queryParams,\r\n                queryParamsHandling: 'merge', // remove to replace all query params by provided\r\n            });\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nexport const typeImageReg = /[\\/.](gif|jpg|jpeg|tiff|png)$/i;\r\n\r\n@Injectable({\r\n    providedIn: 'root',\r\n})\r\nexport class HelperUploaderService {\r\n\r\n    static checkTypeImage(fileType: string): boolean {\r\n        return typeImageReg.test(fileType)\r\n    }\r\n\r\n    static estceTypeMimeAccepté(typeMime: string, configTypeMime: string[]): boolean {\r\n        const ext = typeMime.split('/').pop().toLowerCase();\r\n\r\n        return configTypeMime.indexOf(ext) !== -1;\r\n    }\r\n\r\n    static estceImageTypeImage(typeMime: string): boolean {\r\n        const extension = typeMime.toLowerCase();\r\n\r\n        return extension.indexOf(\"image\") !== -1;\r\n    }\r\n\r\n    static estceImageTypeMimeGif(typeMime: string): boolean {\r\n        const extension = typeMime.toLowerCase();\r\n\r\n        return this.estceImageTypeImage(typeMime) && extension.indexOf(\"gif\") !== -1;\r\n    }\r\n\r\n    static estceTailleUploadAccepté(tailleFichier: number, configTailleUpload: number): boolean {\r\n        const tailleMO = (tailleFichier / 1024 / 1024).toFixed(2);\r\n\r\n        return parseFloat(tailleMO) <= configTailleUpload;\r\n    }\r\n\r\n    static estceTailleUploadTotalAccepté(tailleTotalFichiers: number, configTotalTailleUpload: number): boolean {\r\n        const tailleTotalMO = (tailleTotalFichiers / 1024 / 1024).toFixed(2);\r\n\r\n        return parseFloat(tailleTotalMO) <= configTotalTailleUpload;\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { ToolbarOptions } from '../model/component-wysiwyg.model';\r\n\r\n@Injectable()\r\nexport class WysiwygService {\r\n\r\n  constructor() { }\r\n\r\n  public toolbarOptionsToString(options: ToolbarOptions[][]) {\r\n    return options.map((option: ToolbarOptions[]) => option.join(' ')).join('|')\r\n  }\r\n}\r\n","export interface DataSourceInput {\r\n    type: DataSourceType,\r\n    value: any,\r\n    dataSourceNameProperty?: string, /** property of the datasource used in the view, default : 'name' */\r\n}\r\n\r\nexport enum DataSourceType {\r\n    API = 'api',\r\n    BRUTE = 'brute',\r\n}\r\n\r\nexport interface SelectOption {\r\n    id: string | number,\r\n    name: string,\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable, of } from 'rxjs';\r\n\r\nimport { DataSourceInput, DataSourceType } from '../model/data-source.model';\r\nimport { HttpService } from './http.service';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class DatasourceService {\r\n\r\n  constructor(private httpService: HttpService,) { }\r\n\r\n  loadDataSource<T>(config: DataSourceInput, queryString: string = ''): Observable<T> {\r\n    if (!config) return;\r\n\r\n    switch (config.type) {\r\n      case DataSourceType.BRUTE:\r\n        // return <Observable<T>>of(config.value).pipe(delay(1000))\r\n        return <Observable<T>>of(config.value)\r\n        break;\r\n\r\n      case DataSourceType.API:\r\n        return this.httpService.get(`${config.value}?${queryString}`)\r\n        break;\r\n\r\n      default:\r\n        return <Observable<any>>of(null)\r\n        break;\r\n    }\r\n  }\r\n}\r\n","import { Inject, Injectable } from '@angular/core';\r\n\r\n@Injectable()\r\nexport class StringService {\r\n    constructor(@Inject(String) private stringData: string) {\r\n        this.stringData = stringData\r\n    }\r\n\r\n    public toString() {\r\n        return this.stringData\r\n    }\r\n\r\n    public removeAllSpecialsCharacters() {\r\n        this.stringData = this.stringData.replace(/[^a-zA-Z ]/g, \"\")\r\n\r\n        return this\r\n    }\r\n\r\n    public removeAllSpaces() {\r\n        this.stringData = this.stringData.replace(/\\s/g, '')\r\n\r\n        return this\r\n    }\r\n\r\n    public replaceAllAccentByNonAccentCharacters() {\r\n        this.stringData = this.stringData.normalize(\"NFD\").replace(/\\p{Diacritic}/gu, \"\")\r\n\r\n        return this\r\n    }\r\n}\r\n","\r\nexport interface Odata<T = any> {\r\n    d: {\r\n        __count: number;\r\n        results: T[];\r\n    }\r\n}\r\n\r\nexport class OdataClass {\r\n    private datasource: Odata<any>\r\n\r\n    setDatasource(datasource: Odata<any>) {\r\n        this.datasource = datasource\r\n    }\r\n\r\n    getCount(): number {\r\n        return this.datasource.d.__count\r\n    }\r\n\r\n    getResults(): Object[] {\r\n        return this.datasource.d.results\r\n    }\r\n}","export enum FormInputComponents {\r\n    INPUT_UPLOADER = 'input-uploader',\r\n    INPUT_TEXT = 'input-text',\r\n    INPUT_EMAIL = 'input-email',\r\n    INPUT_CHECKBOX = 'input-checkbox',\r\n    INPUT_CHECKBOX_INDETERMINATE = 'input-checkbox-indeterminate',\r\n    INPUT_NUMBER = 'input-number',\r\n    INPUT_DATE = 'input-date',\r\n    INPUT_SLIDE_TOGGLE = 'input-slide-toggle',\r\n    INPUT_PASSWORD = 'input-password',\r\n    INPUT_TEXTAREA = 'input-textarea',\r\n    INPUT_VIEWER = 'input-viewer',\r\n    INPUT_SELECT = 'input-select',\r\n    BUTTON = 'button',\r\n    LINK = 'link',\r\n}","import { DataSourceInput } from './data-source.model';\r\nimport { FormInputComponents } from './form-input-components.model';\r\n\r\nexport interface Schema {\r\n    page: any,\r\n}\r\n\r\n/** Form */\r\n\r\nexport interface PageSchema {\r\n    forms: FormSchema[],\r\n    buttons: ButtonSchema[],\r\n}\r\n\r\nexport interface FormSchema {\r\n    id: string;\r\n    name: string;\r\n    fields: FieldSchema[];\r\n}\r\n\r\nexport interface FieldSchema {\r\n    label: string;\r\n    name: string;\r\n    type: FormInputComponents;\r\n    dataSource: DataSourceInput;\r\n    inRelationWith: string;\r\n}\r\n/** / Form */\r\n\r\n/** Buttons */\r\n\r\nexport interface ButtonSchema {\r\n    text: string;\r\n    name: string;\r\n    formName: string;\r\n    command: string;\r\n    redirectTo: string;\r\n    submit: boolean;\r\n    commandMappings: CommandMappings[];\r\n}\r\n\r\nexport interface CommandMappings {\r\n    source: string;\r\n    destination: string;\r\n}\r\n\r\n/** / Buttons */\r\n","import { UntypedFormGroup, ValidatorFn } from '@angular/forms';\r\n\r\nimport { DataSourceInput } from './data-source.model';\r\nimport { FormInputComponents } from './form-input-components.model';\r\nimport { ButtonSchema, FormSchema } from './schema-datas.model';\r\n\r\nexport type OutputCallback = {\r\n    callback?: Function\r\n    click?: Function\r\n}\r\n\r\nexport type ConfigComponentInputs = ConfigInputComponent | ButtonComponentInputs | any\r\n\r\nexport type InputFieldAppearance = 'standard' | 'fill' | 'outline';\r\n\r\nexport interface ConfigInputComponent {\r\n    nameLabel: string,\r\n    formGroup: UntypedFormGroup,\r\n    nameControl: string,\r\n    type?: FormInputComponents,\r\n    validators?: ValidatorFn[];\r\n    icon?: string,\r\n    styleCompact?: boolean,\r\n    maxlength?: number,\r\n    dataSource?: DataSourceInput,\r\n    inRelationWith?: string\r\n    appearance?: InputFieldAppearance\r\n    callbackComponent?: OutputCallback\r\n}\r\n\r\nexport interface FormContainerInputs {\r\n    form: FormSchema,\r\n    buttons: ButtonSchema[],\r\n}\r\n\r\nexport enum TypeButtonEnum {\r\n    SUBMIT = 'submit',\r\n    BUTTON = 'button',\r\n    LINK = 'link',\r\n}\r\n\r\nexport interface ButtonLinkComponentInputs {\r\n    url: string,\r\n    openNewTab: boolean,\r\n}\r\n\r\nexport interface ButtonComponentInputs extends ButtonLinkComponentInputs {\r\n    text: string,\r\n    type: TypeButtonEnum,\r\n    onClickSubmit: Function,\r\n    icon?: string,\r\n    className?: string,\r\n    iconPosition?: ButtonIconPositon\r\n}\r\n\r\nexport enum ButtonIconPositon {\r\n    START = 'start',\r\n    END = 'end',\r\n}","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n    providedIn: 'root'\r\n})\r\nexport class ImageFullscreenViewService {\r\n    constructor() { }\r\n\r\n    isBase64(str) {\r\n        const base64regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\r\n        return base64regex.test(str);\r\n\r\n    }\r\n\r\n    base64FileExtension(str) {\r\n        return str.substring('data:image/'.length, str.indexOf(';base64'));\r\n    }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\r\n\r\nimport { ImageFullscreenViewService } from '../../../core/service/image-fullscreen-view.service';\r\n\r\nconst youtubeRegExp = /^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|\\&v=|\\?v=)([^#\\&\\?]*).*/,\r\n    validFileExtensions = ['jpeg', 'jpg', 'gif', 'png'],\r\n    validVideoExtensions = ['mp4'];\r\n\r\n@Component({\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    selector: 'custom-img',\r\n    templateUrl: './slider-custom-image.component.html'\r\n})\r\nexport class SliderCustomImageComponent {\r\n    YOUTUBE = 'youtube';\r\n    IMAGE = 'image';\r\n    VIDEO = 'video';\r\n    fileUrl: SafeResourceUrl = '';\r\n    fileExtension = '';\r\n    type = this.IMAGE;\r\n\r\n    // @inputs\r\n    @Input() videoAutoPlay: boolean = false;\r\n    @Input() showVideoControls: number = 1;\r\n    @Input()\r\n    set imageUrl(url) {\r\n        if (url && typeof (url) === 'string') {\r\n            this.fileUrl = this.sanitizer.bypassSecurityTrustResourceUrl(url);\r\n            this.fileExtension = url.replace(/^.*\\./, '');\r\n            if (this.imageFullscreenViewService.base64FileExtension(url)\r\n            && (validFileExtensions.indexOf(this.imageFullscreenViewService.base64FileExtension(url).toLowerCase()) > -1 \r\n            || validVideoExtensions.indexOf(this.imageFullscreenViewService.base64FileExtension(url).toLowerCase()) > -1)) {\r\n                this.fileExtension = this.imageFullscreenViewService.base64FileExtension(url);\r\n            }\r\n            // verify for youtube url\r\n            const match = url.match(youtubeRegExp);\r\n            if (match && match[2].length === 11) {\r\n                this.type = this.YOUTUBE;\r\n                this.fileUrl = this.sanitizer.bypassSecurityTrustResourceUrl(`${'//www.youtube.com/embed/'}${match[2]}${this.videoAutoPlay ? '?wmode=transparent&autoplay=1&enablejsapi=1' : '?wmode=transparent&autoplay=0&enablejsapi=1'}${'&controls='}${this.showVideoControls}`);\r\n            } else if (this.fileExtension && validFileExtensions.indexOf(this.fileExtension.toLowerCase()) > -1) {\r\n                this.type = this.IMAGE;\r\n            } else if (this.fileExtension && validVideoExtensions.indexOf(this.fileExtension.toLowerCase()) > -1) {\r\n                this.type = this.VIDEO;\r\n            }\r\n        }\r\n    }\r\n    @Input() isVideo = false;\r\n    @Input() alt: String = '';\r\n    @Input() title: String = '';\r\n    @Input() direction: string = 'ltr';\r\n\r\n    constructor(public imageFullscreenViewService: ImageFullscreenViewService, private sanitizer: DomSanitizer) {\r\n    }\r\n\r\n    videoClickHandler(event) {\r\n        if (event && event.srcElement && !this.showVideoControls) {\r\n            if (event.srcElement.paused) {\r\n                event.srcElement.play();\r\n            } else {\r\n                event.srcElement.pause();\r\n            }\r\n        }\r\n    }\r\n}\r\n","<div *ngIf=\"fileUrl\" class=\"custom-image-main\">\r\n    <img class=\"image\"\r\n        *ngIf=\"type === IMAGE && fileUrl\"\r\n        [src]=\"fileUrl\"\r\n        [alt]=\"alt\"\r\n        [title]=\"title\">\r\n    \r\n    <!-- <iframe\r\n        *ngIf=\"type === YOUTUBE && fileUrl\"\r\n        src=\"http://player.vimeo.com/video/67124108?title=0&amp;byline=0&amp;portrait=0&amp;color=ffffff&amp;wmode=transparent\">\r\n    </iframe> -->\r\n    \r\n    <iframe class=\"youtube\"\r\n        *ngIf=\"type === YOUTUBE && fileUrl\"\r\n        [src]=\"fileUrl\"\r\n        frameborder=\"0\"\r\n        wmode=\"opaque\"\r\n        allowfullscreen></iframe>\r\n    <video class=\"video\"\r\n        (click)=\"videoClickHandler($event)\"\r\n        [autoplay]=\"videoAutoPlay\"\r\n        *ngIf=\"type === VIDEO\"\r\n        type=\"video/mp4\"\r\n        [attr.controls]=\"showVideoControls ? showVideoControls : null\"\r\n        controlsList=\"nodownload\">\r\n        <source [src]=\"fileUrl\" type=\"video/mp4\">\r\n        Your browser does not support the video tag.\r\n    </video>\r\n    <div [dir]=\"direction\" *ngIf=\"!fileUrl\" class=\"invalid-msg\">Invalid file format</div>\r\n    <span *ngIf=\"type === YOUTUBE || type === VIDEO || isVideo\" class=\"youtube-icon\"></span>\r\n</div>","import { DOCUMENT } from '@angular/common';\r\nimport {\r\n  ChangeDetectionStrategy,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  HostListener,\r\n  Inject,\r\n  Input,\r\n  OnDestroy,\r\n  Output,\r\n  ViewChild,\r\n  ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\nimport { ImageFullscreenViewService } from '../../../core/service/image-fullscreen-view.service';\r\n\r\nconst LIGHTBOX_NEXT_ARROW_CLICK_MESSAGE = 'lightbox next',\r\n    LIGHTBOX_PREV_ARROW_CLICK_MESSAGE = 'lightbox previous';\r\n\r\n@Component({\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    selector: 'image-fullscreen-view',\r\n    templateUrl: './image-fullscreen-view.html',\r\n    styleUrls: ['./image-fullscreen-view.scss'],\r\n    encapsulation: ViewEncapsulation.None\r\n})\r\nexport class ImageFullscreenViewComponent implements OnDestroy {\r\n    totalImages: number = 0;\r\n    nextImageIndex: number = -1;\r\n    popupWidth: number = 1200;\r\n    marginLeft: number = 0;\r\n    imageFullscreenView: boolean = false;\r\n    lightboxPrevDisable: boolean = false;\r\n    lightboxNextDisable: boolean = false;\r\n    showLoading: boolean = true;\r\n    effectStyle: string = 'none';\r\n    speed: number = 1; // default speed in second\r\n    title: string = '';\r\n    currentImageIndex: number = 0;\r\n\r\n    // for swipe event\r\n    private swipeLightboxImgCoord?: [number, number];\r\n    private swipeLightboxImgTime?: number;\r\n\r\n    @ViewChild('lightboxDiv') lightboxDiv;\r\n    @ViewChild('lightboxImageDiv') lightboxImageDiv;\r\n\r\n    // @Inputs\r\n    @Input() images: Array<object> = [];\r\n    @Input()\r\n    set imageIndex(index: number) {\r\n        if (index !== undefined && index > -1 && index < this.images.length) {\r\n            this.currentImageIndex = index;\r\n        }\r\n        this.nextPrevDisable();\r\n    }\r\n    @Input()\r\n    set show(visiableFlag: boolean) {\r\n        this.imageFullscreenView = visiableFlag;\r\n        this.elRef.nativeElement.ownerDocument.body.style.overflow = '';\r\n        if (visiableFlag === true) {\r\n            this.elRef.nativeElement.ownerDocument.body.style.overflow = 'hidden';\r\n            // this.getImageData();\r\n            this.setPopupSliderWidth();\r\n        }\r\n    }\r\n    @Input() videoAutoPlay: boolean = false;\r\n    @Input() direction: string = 'ltr';\r\n    @Input() paginationShow: boolean = false;\r\n    @Input()\r\n    set animationSpeed(data: number) {\r\n        if (data\r\n            && typeof (data) === 'number'\r\n            && data >= 0.1\r\n            && data <= 5) {\r\n            this.speed = data;\r\n        }\r\n    }\r\n    @Input() infinite: boolean = false;\r\n    @Input() arrowKeyMove: boolean = true;\r\n    @Input() showVideoControls: boolean = true;\r\n\r\n    // @Output\r\n    @Output() close = new EventEmitter<any>();\r\n    @Output() prevImage = new EventEmitter<any>();\r\n    @Output() nextImage = new EventEmitter<any>();\r\n\r\n    @HostListener('window:resize', ['$event'])\r\n    onResize(event) {\r\n        this.effectStyle = 'none';\r\n        this.setPopupSliderWidth();\r\n    }\r\n    @HostListener('document:keyup', ['$event'])\r\n    handleKeyboardEvent(event: KeyboardEvent) {\r\n        if (event && event.key && this.arrowKeyMove) {\r\n            if (event.key.toLowerCase() === 'arrowright') {\r\n                this.nextImageLightbox();\r\n            }\r\n\r\n            if (event.key.toLowerCase() === 'arrowleft') {\r\n                this.prevImageLightbox();\r\n            }\r\n\r\n            if (event.key.toLowerCase() === 'escape') {\r\n                this.closeLightbox();\r\n            }\r\n        }\r\n    }\r\n\r\n    constructor(\r\n        private cdr: ChangeDetectorRef,\r\n        private sanitizer: DomSanitizer,\r\n        private elRef: ElementRef,\r\n        public imageFullscreenViewService: ImageFullscreenViewService,\r\n        @Inject(DOCUMENT) private document: any) { }\r\n\r\n    ngOnDestroy() {\r\n        this.resetState();\r\n    }\r\n\r\n    setPopupSliderWidth() {\r\n        if (window && window.innerWidth) {\r\n            this.popupWidth = window.innerWidth;\r\n            this.totalImages = this.images.length;\r\n            if (typeof (this.currentImageIndex) === 'number' && this.currentImageIndex !== undefined) {\r\n                this.marginLeft = -1 * this.popupWidth * this.currentImageIndex;\r\n                this.getImageData();\r\n                this.nextPrevDisable();\r\n                setTimeout(() => {\r\n                    this.showLoading = false;\r\n                    this.cdr.detectChanges()\r\n                }, 500);\r\n            }\r\n        }\r\n    }\r\n\r\n    closeLightbox() {\r\n        this.close.emit();\r\n    }\r\n\r\n    prevImageLightbox() {\r\n        this.effectStyle = `all ${this.speed}s ease-in-out`;\r\n\r\n        if(this.infinite && this.currentImageIndex === 0) {\r\n            this.currentImageIndex = this.images.length\r\n        }\r\n\r\n        if (this.currentImageIndex > 0 && !this.lightboxPrevDisable) {\r\n            this.currentImageIndex--;\r\n            this.prevImage.emit();\r\n            this.marginLeft = -1 * this.popupWidth * this.currentImageIndex;\r\n            this.getImageData();\r\n            this.nextPrevDisable();\r\n        }\r\n    }\r\n\r\n    nextImageLightbox() {\r\n        this.effectStyle = `all ${this.speed}s ease-in-out`;\r\n\r\n        if(this.infinite && this.currentImageIndex === this.images.length - 1) {\r\n            this.currentImageIndex = -1\r\n        }\r\n\r\n        if (this.currentImageIndex < this.images.length - 1 && !this.lightboxNextDisable) {\r\n            this.currentImageIndex++;\r\n            this.nextImage.emit();\r\n            this.marginLeft = -1 * this.popupWidth * this.currentImageIndex;\r\n            this.getImageData();\r\n            this.nextPrevDisable();\r\n        }\r\n    }\r\n\r\n    nextPrevDisable() {\r\n        this.lightboxNextDisable = true;\r\n        this.lightboxPrevDisable = true;\r\n        setTimeout(() => {\r\n            this.applyButtonDisableCondition();\r\n            this.cdr.detectChanges()\r\n        }, this.speed * 1000);\r\n    }\r\n\r\n    applyButtonDisableCondition() {\r\n        this.lightboxNextDisable = false;\r\n        this.lightboxPrevDisable = false;\r\n        if (!this.infinite && this.currentImageIndex >= this.images.length - 1) {\r\n            this.lightboxNextDisable = true;\r\n        }\r\n        if (!this.infinite && this.currentImageIndex <= 0) {\r\n            this.lightboxPrevDisable = true;\r\n        }\r\n    }\r\n\r\n    getImageData() {\r\n        if (this.images\r\n            && this.images.length\r\n            && typeof (this.currentImageIndex) === 'number'\r\n            && this.currentImageIndex !== undefined\r\n            && this.images[this.currentImageIndex]\r\n            && (this.images[this.currentImageIndex]['image'] || this.images[this.currentImageIndex]['video'])) {\r\n            this.title = this.images[this.currentImageIndex]['title'] || '';\r\n            this.totalImages = this.images.length;\r\n            for (const iframeI in this.document.getElementsByTagName('iframe')) {\r\n                if (this.document.getElementsByTagName('iframe')[iframeI]\r\n                    && this.document.getElementsByTagName('iframe')[iframeI].contentWindow) {\r\n                    this.document.getElementsByTagName('iframe')[iframeI].contentWindow.postMessage('{\"event\":\"command\",\"func\":\"pauseVideo\",\"args\":\"\"}', '*');\r\n                }\r\n            }\r\n            for (const videoI in this.document.getElementsByTagName('video')) {\r\n                if (this.document.getElementsByTagName('video')[videoI] && this.document.getElementsByTagName('video')[videoI].pause) {\r\n                    this.document.getElementsByTagName('video')[videoI].pause();\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    resetState() {\r\n        this.images = [];\r\n    }\r\n\r\n    /**\r\n     * Swipe event handler\r\n     * Reference from https://stackoverflow.com/a/44511007/2067646\r\n     */\r\n    swipeLightboxImg(e: TouchEvent, when: string): void {\r\n        const coord: [number, number] = [e.changedTouches[0].pageX, e.changedTouches[0].pageY];\r\n        const time = new Date().getTime();\r\n\r\n        if (when === 'start') {\r\n            this.swipeLightboxImgCoord = coord;\r\n            this.swipeLightboxImgTime = time;\r\n        } else if (when === 'end') {\r\n            const direction = [coord[0] - this.swipeLightboxImgCoord[0], coord[1] - this.swipeLightboxImgCoord[1]];\r\n            const duration = time - this.swipeLightboxImgTime;\r\n\r\n            if (duration < 1000 //\r\n                && Math.abs(direction[0]) > 30 // Long enough\r\n                && Math.abs(direction[0]) > Math.abs(direction[1] * 3)) { // Horizontal enough\r\n                if (direction[0] < 0) {\r\n                    this.nextImageLightbox();\r\n                } else {\r\n                    this.prevImageLightbox();\r\n                }\r\n            }\r\n        }\r\n    }\r\n}\r\n","<div *ngIf=\"imageFullscreenView\" class=\"ng-image-fullscreen-view\">\r\n    <div class=\"lightbox-wrapper\">\r\n        <a class=\"close\" (click)=\"closeLightbox()\"></a>\r\n        <a *ngIf=\"images.length > 1\" [ngClass]=\"{'disable': lightboxPrevDisable}\" class=\"prev icons prev-icon\" (click)=\"prevImageLightbox()\">&lsaquo;</a>\r\n        <div class=\"lightbox-div\" #lightboxDiv>\r\n            <div *ngIf=\"showLoading\" class=\"pre-loader\">\r\n                <div class=\"mnml-spinner\"></div>\r\n            </div>\r\n            <div class=\"lightbox-image-main\"\r\n                [ngStyle]=\"{'margin-left': marginLeft + 'px', 'grid-template-columns': 'repeat('+images.length+',1fr)', 'transition': effectStyle}\">\r\n                <div class=\"lightbox-image\"\r\n                    [ngStyle]=\"{'width': popupWidth + 'px'}\"\r\n                    *ngFor=\"let img of images; let i = index\"\r\n                    [attr.id]=\"'ng-lightbox-image-' + i\"\r\n                    (touchstart)=\"swipeLightboxImg($event, 'start')\"\r\n                    (touchend)=\"swipeLightboxImg($event, 'end')\"\r\n                    #lightboxImageDiv>\r\n                    <custom-img\r\n                        [imageUrl]=\"img.image || img.video\"\r\n                        [isVideo]=\"!!(img.posterImage || img.video)\"\r\n                        [videoAutoPlay]=\"videoAutoPlay\"\r\n                        [showVideoControls]=\"showVideoControls ? 1 : 0\"\r\n                        [alt]=\"img.alt || img.title || ''\"\r\n                        [title]=\"img.title || img.alt || ''\"\r\n                        [direction]=\"direction\">\r\n                    </custom-img>\r\n                </div>\r\n            </div>\r\n            <div [dir]=\"direction\" [ngClass]=\"{'show': title, 'hide': !title}\" class=\"caption\">{{ title }}</div>\r\n            <!-- <a *ngIf=\"images.length > 1\" [ngClass]=\"{'disable': lightboxPrevDisable}\" class=\"prev icons prev-icon\" (click)=\"prevImageLightbox()\">&lsaquo;</a>\r\n            <a *ngIf=\"images.length > 1\" [ngClass]=\"{'disable': lightboxNextDisable}\" class=\"next icons next-icon\" (click)=\"nextImageLightbox()\">&rsaquo;</a> -->\r\n        </div>\r\n        <a *ngIf=\"images.length > 1\" [ngClass]=\"{'disable': lightboxNextDisable}\" class=\"next icons next-icon\" (click)=\"nextImageLightbox()\">&rsaquo;</a>\r\n    </div>\r\n    <div *ngIf=\"paginationShow\" class=\"popup-pagination\">{{currentImageIndex + 1}} of {{totalImages}}</div>\r\n</div>","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\n\r\nimport { SliderCustomImageComponent } from '../slider-custom-image/slider-custom-image.component';\r\nimport { ImageFullscreenViewComponent } from './image-fullscreen-view.component';\r\n\r\n@NgModule({\r\n    imports: [\r\n        CommonModule\r\n    ],\r\n    declarations: [\r\n        SliderCustomImageComponent,\r\n        ImageFullscreenViewComponent\r\n    ],\r\n    exports: [\r\n        ImageFullscreenViewComponent\r\n    ]\r\n})\r\nexport class ImageFullscreenViewModule { }\r\n","/*\r\n * Public API Surface of fullscreen-viewer\r\n */\r\n\r\nexport * from './shared/fullscreen-viewer/image-fullscreen-view/image-fullscreen-view.module';\r\nexport * from './shared/fullscreen-viewer/image-fullscreen-view/image-fullscreen-view.component';\r\nexport * from './core/service/image-fullscreen-view.service';","/** entries points */\r\nexport * from './feature-cms';\r\nexport * from './feature-form';\r\nexport * from './feature-core';\r\nexport * from './feature-gallery';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.AdapterPageCmsService","i1.CmsService","i2","i3","ConfigEvents","i4","i4.CocoringPreviewOptionsComponent","i1","i2.CmsService","InjectComponentService","i5","i8.CocoringCmsBlocksCatalogComponent","i9.CocoringToolbarCmsComponent","BroadcastEventService","takeUntil","UploaderService","i6","i7","CocoringVariableHtmlModule","CocoringWysiwygModule","CocoringColorpickerModule","i2.CocoringCmsReadonlySectionComponent","FormHelperService","CocoringWysiwygComponent","TypeButtonEnum","i2.CocoringButtonComponent","HttpService","DatasourceService","ValidatorsService","i5.CocoringInputErrorComponent","i4.CocoringInputErrorComponent","i5.CocoringVariableHtmlPipe","HelperService","i6.CocoringInputErrorComponent","i7.InputIconComponent","i6.InputIconComponent","i3.InputIconComponent","i8.CocoringInputErrorComponent","FormInputComponents","ButtonIconPositon","filter","QueryBuilder","i3.FormBuilderService","i6.CocoringVariableHtmlPipe","i2.UploaderService","WysiwygService","i1.FormBuilderService","i2.FormBuilderService","MappingBuilderService","i5.CocoringButtonsGroupComponent","i6.CocoringFileSizePipe","HelperUploaderService","i8","i9","i10.CocoringFileSizePipe","i6.CocoringUploaderListFileComponent","i1.DatagridService","i3.CocoringCheckboxComponent","i4.CocoringDatagridCellComponent","i3.DatagridService","OdataClass","i5.CocoringDatagridRowComponent","i6.CocoringDatagridHeadComponent","DataSourceType","i10.CocoringDatagridFilterColumnComponent","i2.DatagridService","i7.CocoringCheckboxComponent","i8.CocoringDatagridSearchbarComponent","i1.StorageService","i1.TokenService","i2.HttpService","i1.HttpService","i1.ImageFullscreenViewService","i4.SliderCustomImageComponent"],"mappings":"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"}