@factor_ec/ui 4.0.11 → 5.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/README.md +49 -10
  2. package/fesm2022/factor_ec-ui.mjs +725 -461
  3. package/fesm2022/factor_ec-ui.mjs.map +1 -1
  4. package/lib/avatar/avatar.component.d.ts +17 -0
  5. package/lib/chart.service.d.ts +18 -0
  6. package/lib/icon/icon.component.d.ts +14 -0
  7. package/lib/{io/image → image}/image.component.d.ts +4 -5
  8. package/lib/message.service.d.ts +14 -4
  9. package/lib/models/chart.d.ts +12 -0
  10. package/lib/models/ui-options.d.ts +9 -0
  11. package/lib/observe-intersecting.directive.d.ts +8 -9
  12. package/lib/progress/progress.component.d.ts +10 -0
  13. package/lib/{io/rating → rating}/rating.component.d.ts +2 -4
  14. package/lib/ui.module.d.ts +13 -0
  15. package/lib/ui.service.d.ts +8 -0
  16. package/package.json +7 -7
  17. package/public-api.d.ts +12 -8
  18. package/esm2022/factor_ec-ui.mjs +0 -5
  19. package/esm2022/lib/io/avatar/avatar.component.mjs +0 -75
  20. package/esm2022/lib/io/icon/icon.component.mjs +0 -96
  21. package/esm2022/lib/io/image/image.component.mjs +0 -84
  22. package/esm2022/lib/io/progress/progress.component.mjs +0 -43
  23. package/esm2022/lib/io/rating/rating.component.mjs +0 -74
  24. package/esm2022/lib/message-content/message-content.component.mjs +0 -20
  25. package/esm2022/lib/message-dialog/message-dialog.component.mjs +0 -33
  26. package/esm2022/lib/message.service.mjs +0 -60
  27. package/esm2022/lib/models/message-content.mjs +0 -2
  28. package/esm2022/lib/models/message-options.mjs +0 -2
  29. package/esm2022/lib/models/task.mjs +0 -2
  30. package/esm2022/lib/models/ui-configuration.mjs +0 -2
  31. package/esm2022/lib/nav/timeline/timeline.component.mjs +0 -102
  32. package/esm2022/lib/observe-intersecting.directive.mjs +0 -44
  33. package/esm2022/lib/progress.service.mjs +0 -48
  34. package/esm2022/public-api.mjs +0 -13
  35. package/lib/io/avatar/avatar.component.d.ts +0 -21
  36. package/lib/io/icon/icon.component.d.ts +0 -22
  37. package/lib/io/progress/progress.component.d.ts +0 -14
  38. package/lib/message-content/message-content.component.d.ts +0 -7
  39. package/lib/message-dialog/message-dialog.component.d.ts +0 -10
  40. package/lib/models/task.d.ts +0 -10
  41. package/lib/models/ui-configuration.d.ts +0 -7
  42. package/lib/nav/timeline/timeline.component.d.ts +0 -18
  43. package/lib/progress.service.d.ts +0 -15
  44. package/scss/components/avatar.scss +0 -15
  45. package/scss/components/collapsible.scss +0 -46
  46. package/scss/components/dropdown.scss +0 -56
  47. package/scss/components/icon.scss +0 -40
  48. package/scss/components/image.scss +0 -62
  49. package/scss/components/index.scss +0 -10
  50. package/scss/components/list.scss +0 -63
  51. package/scss/components/ph.scss +0 -27
  52. package/scss/components/popup.scss +0 -7
  53. package/scss/components/progress.scss +0 -119
  54. package/scss/components/rating.scss +0 -61
  55. package/scss/index.scss +0 -5
  56. package/scss/mixins/breakpoints.scss +0 -123
  57. package/scss/mixins.scss +0 -1
  58. package/scss/reboot.scss +0 -586
  59. package/scss/root.scss +0 -52
  60. package/scss/variables.scss +0 -116
@@ -1 +1 @@
1
- {"version":3,"file":"factor_ec-ui.mjs","sources":["../../../projects/ui/src/lib/io/avatar/avatar.component.ts","../../../projects/ui/src/lib/io/avatar/avatar.component.html","../../../projects/ui/src/lib/io/icon/icon.component.ts","../../../projects/ui/src/lib/io/icon/icon.component.html","../../../projects/ui/src/lib/io/image/image.component.ts","../../../projects/ui/src/lib/io/image/image.component.html","../../../projects/ui/src/lib/io/progress/progress.component.ts","../../../projects/ui/src/lib/io/progress/progress.component.html","../../../projects/ui/src/lib/io/rating/rating.component.ts","../../../projects/ui/src/lib/io/rating/rating.component.html","../../../projects/ui/src/lib/nav/timeline/timeline.component.ts","../../../projects/ui/src/lib/nav/timeline/timeline.component.html","../../../projects/ui/src/lib/observe-intersecting.directive.ts","../../../projects/ui/src/lib/message-content/message-content.component.ts","../../../projects/ui/src/lib/message-content/message-content.component.html","../../../projects/ui/src/lib/message-dialog/message-dialog.component.ts","../../../projects/ui/src/lib/message-dialog/message-dialog.component.html","../../../projects/ui/src/lib/message.service.ts","../../../projects/ui/src/lib/progress.service.ts","../../../projects/ui/src/public-api.ts","../../../projects/ui/src/factor_ec-ui.ts"],"sourcesContent":["import { Component, HostBinding, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { ColorService } from '@factor_ec/utils';\n\n@Component({\n selector: 'ft-avatar',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './avatar.component.html'\n})\nexport class AvatarComponent {\n _label!: string;\n _src!: string;\n @Input() color!: string;\n initials!: string;\n loaded!: boolean;\n @Input() set src(value: string | undefined) {\n if (value && value.trim() != '') {\n this._src = value;\n let image = new Image();\n image.src = value;\n image.onload = () => {\n if (\"decode\" in image) {\n image.decode().then(() => {\n this.loaded = true;\n });\n } else {\n console.error('Image.decode not available.');\n }\n };\n }\n }\n @Input() set label(value: string) {\n this._label = value;\n this.initials = this.getInitials(value);\n }\n @HostBinding('style.background-color') get backgroundColor(): string {\n return this.color || this.colorService.hex(this._label);\n }\n @HostBinding('style.background-image') get backgroundImage(): string {\n return this._src ? `url(${this._src})` : '';\n }\n @Input() class: string = '';\n @HostBinding('class') get hostClasses(): string {\n return [\n 'ft-avatar',\n this.class\n ].join(' ');\n }\n\n constructor(\n private colorService: ColorService\n ) { }\n\n ngOnInit() {\n\n }\n getInitials(value: string): string {\n let allInitials: string[] = value.match(/\\b\\w/g) || [];\n let initials: string = ((allInitials.shift() || '') + (allInitials.pop() || '')).toUpperCase();\n return initials;\n }\n}\n","<div *ngIf=\"!loaded\">{{ initials }}</div>","import { Component, HostBinding, Inject, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { UiConfiguration } from '../../models/ui-configuration';\n\n@Component({\n selector: 'ft-icon',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './icon.component.html'\n})\nexport class IconComponent {\n _collection!: string;\n _name!: string;\n _mode!: 'inline' | 'external';\n _path!: string;\n @Input() set collection(collection: string) {\n this._collection = collection;\n this.update();\n }\n @Input() set mode(mode: 'inline' | 'external') {\n this._mode = mode;\n this.update();\n }\n @Input() set name(name: string) {\n this._name = name;\n this.update();\n }\n @Input() set path(path: string) {\n this._path = path;\n this.update();\n }\n @Input() src!: string;\n url!: string;\n\n @Input() class: string = '';\n @HostBinding('class') get hostClasses(): string {\n return [\n 'ft-icon',\n this.class\n ].join(' ');\n }\n\n constructor(\n @Inject('FactorUiConfiguration') private configuration: UiConfiguration\n ) { }\n\n ngOnInit() {\n this.update();\n }\n private update() {\n // Set the default collection if the mode is external\n if (!this._collection) {\n if (this.configuration.icon && this.configuration.icon.collection) {\n this._collection = this.configuration.icon.collection;\n } else if (this._mode === 'external') {\n this._collection = 'icons';\n }\n }\n if (!this._mode) {\n if (this.configuration.icon && this.configuration.icon.mode) {\n this._mode = this.configuration.icon.mode;\n } else {\n this._mode = 'external';\n }\n }\n if (this._mode === 'external') {\n // If the icon mode is external\n if (!this._path) {\n if (this.configuration.icon && this.configuration.icon.path) {\n this._path = this.configuration.icon.path;\n } else {\n this._path = 'assets';\n }\n }\n this.url = `${this._path}/${this._collection}.svg#${this._name}`;\n } else {\n // If the icon mode is inline\n const name = this._collection && this._collection !== 'unset' ? `${this._collection}--${this._name}` : this._name;\n this.url = `#${name}`;\n }\n }\n}\n","<svg *ngIf=\"!src; else imageTemplate\">\n <use attr.xlink:href=\"{{ url }}\" attr.href=\"{{ url }}\" />\n</svg>\n<ng-template #imageTemplate>\n <img [src]=\"src\" />\n</ng-template>","import { Component, ElementRef, HostBinding, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { IconComponent } from '../icon/icon.component';\n\n@Component({\n selector: 'ft-image',\n standalone: true,\n imports: [\n CommonModule,\n IconComponent\n ],\n templateUrl: './image.component.html'\n})\nexport class ImageComponent {\n @Input() class: string = '';\n @HostBinding('class.ft-image--error') error!: boolean;\n @HostBinding('class.ft-image--loading') loading: boolean = false;\n @Input() src!: string;\n shown: boolean = false;\n\n constructor(\n private element: ElementRef\n ) { }\n\n ngOnInit() {\n if (\"IntersectionObserver\" in window) {\n let elementObserver = new IntersectionObserver((entries, observer) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n let image = new Image();\n image.src = this.src;\n setTimeout(() => {\n if (!this.shown && !this.error) {\n this.loading = true;\n }\n }, 100);\n image.onerror = () => {\n this.error = true;\n this.loading = false;\n };\n image.onload = () => {\n if (\"decode\" in image) {\n image.decode().then(() => {\n this.loading = false;\n this.shown = true;\n });\n } else {\n this.loading = false;\n this.shown = true;\n }\n };\n elementObserver.unobserve(this.element.nativeElement);\n }\n });\n }, {\n rootMargin: \"0px 0px 200px 0px\"\n });\n elementObserver.observe(this.element.nativeElement);\n } else {\n console.error('IntersectionObserver not available.');\n this.loading = false;\n this.shown = true;\n }\n }\n @HostBinding('class') get hostClasses(): string {\n return [\n 'ft-image',\n this.class\n ].join(' ');\n }\n}\n","<img *ngIf=\"shown\" [src]=\"src\" />\n<ft-icon name=\"warning\" size=\"2\" *ngIf=\"error\"></ft-icon>\n","import { Component, HostBinding, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'ft-progress',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './progress.component.html'\n})\nexport class ProgressComponent {\n @Input() class: string = '';\n @Input() color!: string;\n @Input() mode: 'determinate' | 'indeterminate' = 'indeterminate';\n @Input() overlay: boolean = false;\n @Input() size!: number;\n @Input() value!: number;\n\n constructor() { }\n\n ngOnInit() {\n this.value = 0;\n }\n @HostBinding('class')\n get hostClasses(): string {\n return [\n 'ft-progress',\n this.overlay ? 'ft-progress--overlay' : '',\n this.class\n ].join(' ');\n }\n}\n","<svg [ngStyle]=\"{'--ft-bar-color': color}\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 100 100\"\n preserveAspectRatio=\"xMidYMid\">\n <circle class=\"ft-track\" cx=\"50\" cy=\"50\" r=\"40\" />\n <circle class=\"ft-bar\" [ngClass]=\"mode === 'determinate' ? 'ft-bar--determinate' : 'ft-bar--indeterminate'\" cx=\"50\"\n cy=\"50\" r=\"40\"\n [ngStyle]=\"{'stroke-dashoffset': mode=='determinate'? 'calc((3.14159265 * 40 * 2 * (100 - '+value+')) / 100)' : null}\">\n </circle>\n</svg>","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'ft-rating',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './rating.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: RatingComponent,\n multi: true\n }\n ]\n})\nexport class RatingComponent implements ControlValueAccessor {\n disabled: boolean = false;\n hoverValue!: number;\n propagateChange = (_: any) => { };\n @Input() readOnly: boolean = false;\n stars: any[] = [\n { value: 1 },\n { value: 2 },\n { value: 3 },\n { value: 4 },\n { value: 5 }\n ];\n _value!: number;\n\n constructor() { }\n\n ngOnInit() {\n }\n get value() {\n return this._value;\n }\n @Input() set value(value: any) {\n this._value = value;\n this.propagateChange(this._value);\n }\n registerOnChange(fn: (_: any) => void) {\n this.propagateChange = fn;\n }\n registerOnTouched(fn: (_: any) => void) {\n //this.propagateChange = fn;\n }\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n setRate(value: number, isHover?: boolean) {\n if (isHover) {\n this.hoverValue = value;\n } else {\n this.value = value;\n }\n }\n updateValue(event: any) {\n this.value = event.target.value;\n }\n writeValue(value: string) {\n this.value = value;\n }\n}\n","<ng-container *ngFor=\"let star of stars\">\n <ng-container *ngTemplateOutlet=\"!readOnly? buttonTemplate : starTemplate; context:{star:star}\"></ng-container>\n</ng-container>\n<ng-template #buttonTemplate let-star=\"star\">\n <button type=\"button\" class=\"ft-rating__item\" *ngIf=\"!readOnly; else starTemplate\" [disabled]=\"disabled\"\n (mouseover)=\"setRate(star.value, true)\" (focus)=\"setRate(star.value, true)\" (blur)=\"setRate(0, true)\"\n (mouseout)=\"setRate(0, true)\" (click)=\"setRate(star.value)\">\n <ng-container *ngTemplateOutlet=\"starTemplate; context:{star:star}\"></ng-container>\n </button>\n</ng-template>\n<ng-template #starTemplate let-star=\"star\">\n <svg [ngClass]=\"{'ft-rating__item-icon--hover': hoverValue >= star.value, 'ft-rating__item-icon--active': value >= star.value}\"\n viewBox=\"0 0 24 24\">\n <path\n d=\"M17.93 21.315c-.534.408-5.22-3.186-5.881-3.181-.663 0-5.307 3.656-5.846 3.254-.537-.403 1.29-6.165 1.081-6.822-.209-.656-4.972-4.138-4.772-4.796.201-.658 6.015-.627 6.55-1.036.533-.41 2.233-6.215 2.895-6.219.663 0 2.43 5.779 2.968 6.182.539.403 6.352.297 6.56.953.21.656-4.513 4.197-4.714 4.856-.2.658 1.692 6.398 1.159 6.808z\" />\n </svg>\n</ng-template>","import { Component, HostBinding, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Task } from '../../models/task';\n\n@Component({\n selector: 'ft-timeline',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './timeline.component.html'\n})\nexport class TimelineComponent {\n startDate: Date | string = new Date();\n @Input() data: Task[] = [];\n @HostBinding('style.--current-date')\n currentDate!: number;\n dataParsed: any = {\n months: [],\n days: [],\n weekends: []\n };\n\n @Input() class: string = '';\n @HostBinding('class') get hostClasses(): string {\n return [\n 'ft-timeline',\n this.class\n ].join(' ');\n };\n\n constructor() { }\n\n ngOnInit(): void {\n this.addMonth(this.calcStartDate());\n }\n addMonth(date: Date): void {\n const month = this.getMonth(date.getMonth(), date.getFullYear());\n const currentDays = this.dataParsed.days.length;\n this.dataParsed.months = [...this.dataParsed.months, { date: month.days[0], daysInMonth: month.days.length }];\n this.dataParsed.days = [...this.dataParsed.days, ...month.days];\n this.dataParsed.weekends = [...this.dataParsed.weekends, ...month.weekends];\n if (!this.currentDate && month.currentDate) {\n this.currentDate = currentDays + month.currentDate;\n }\n this.dataParsed.days.some((day: Date, index: number) => {\n if ([0, 6].includes(day.getDay())) {\n this.dataParsed.weekendStart = index;\n return true;\n }\n return false;\n });\n this.parseTasks();\n }\n calcStartDate(): Date {\n return new Date();\n }\n getMonth(month: number, year: number): any {\n const days = [];\n const weekends = [];\n let currentDate: number | null = null;\n let today = new Date();\n const date = new Date(year, month + 1, 0);\n for (let i = 1; i <= date.getDate(); i++) {\n const idate = new Date(year, month, i);\n if ([0, 6].includes(idate.getDay())) {\n if (idate.getDay() === 6) {\n weekends.push([idate]);\n } else {\n weekends[weekends.length - 1].push(idate);\n }\n }\n if (idate.getTime() === new Date(today.getFullYear(), today.getMonth(), today.getDate()).getTime()) {\n currentDate = i - 1;\n }\n days.push(idate);\n }\n const data: any = { days, weekends };\n if (currentDate) {\n data.currentDate = currentDate;\n }\n return data;\n }\n parseTasks(): void {\n let tasks = this.data.filter(task => task.endAt)/*.sort((a, b) => a.)*/;\n this.dataParsed.tasks = tasks.map((task) => {\n return {\n label: task.label,\n start: 10,\n type: task.type,\n size: 1\n };\n });\n }\n}\n","<div class=\"ft-weekends\" [style.--start]=\"dataParsed.weekendStart\">\n <div class=\"ft-weekends__item\" [style.--weekend-size]=\"weekend.length\" *ngFor=\"let weekend of dataParsed.weekends\">\n </div>\n</div>\n<div class=\"ft-current-date\" *ngIf=\"currentDate\"></div>\n<div class=\"ft-header\">\n <div class=\"ft-header__months\">\n <div [style.--days-in-month]=\"month.daysInMonth\" *ngFor=\"let month of dataParsed.months; let i = index\">{{\n month.date\n | date: 'MMMM, yyyy' }}</div>\n </div>\n <div class=\"ft-header__days\">\n <div *ngFor=\"let day of dataParsed.days; let i = index\">\n <div [ngClass]=\"{active: currentDate && currentDate === i}\">{{ day | date:'d' }}</div>\n </div>\n </div>\n</div>\n<div class=\"ft-tasks\">\n <button type=\"button\" class=\"ft-tasks__item\" [class.tasks__item--milestone]=\"task.type === 'milestone'\"\n [style.--start]=\"task.start\" [style.--days]=\"task.type === 'milestone' ? 1 : task.size\"\n style=\" --color-rgb: 130, 121, 210;\" *ngFor=\"let task of dataParsed.tasks;\">{{ task.label }}</button>\n</div>","import { isPlatformBrowser } from '@angular/common';\nimport { Directive, ElementRef, EventEmitter, Inject, Input, OnInit, Output, PLATFORM_ID } from '@angular/core';\n\n@Directive({\n selector: '[ftObserveIntersecting]',\n standalone: true\n})\nexport class ObserveIntersectingDirective implements OnInit {\n @Input('ftObserveIntersectingOptions') options!: { root?: any, rootMargin?: any, threshold?: any };\n @Output('ftObserveIntersecting') event: EventEmitter<boolean> = new EventEmitter();\n\n constructor(\n private element: ElementRef,\n @Inject(PLATFORM_ID) private readonly platformId: object = {}\n ) { }\n\n ngOnInit() {\n if (isPlatformBrowser(this.platformId)) {\n if (\"IntersectionObserver\" in window) {\n const elementObserver = new IntersectionObserver((entries, observer) => {\n entries.forEach((entry) => {\n this.event.emit(entry.isIntersecting);\n });\n }, this.options);\n elementObserver.observe(this.element.nativeElement);\n } else {\n console.error('ftObserveIntersecting not available in this browser.');\n }\n }\n }\n}\n","import { Component, Inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MAT_SNACK_BAR_DATA } from '@angular/material/snack-bar';\n\n@Component({\n selector: 'ft-message-content',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './message-content.component.html'\n})\nexport class MessageContentComponent {\n constructor(\n @Inject(MAT_SNACK_BAR_DATA) public data: any\n ) { }\n}\n","<ng-container [ngSwitch]=\"data.message?.type\">\n <div *ngSwitchCase=\"'html'\" [innerHTML]=\"data.message?.content\"></div>\n <ng-container *ngSwitchDefault>{{ data.message?.content }}</ng-container>\n</ng-container>","import { Component, EventEmitter, Inject, Output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { MatButtonModule } from '@angular/material/button';\n\nimport { IconComponent } from '../io/icon/icon.component';\n\n@Component({\n selector: 'ft-message-dialog',\n standalone: true,\n imports: [\n CommonModule,\n MatButtonModule,\n IconComponent\n ],\n templateUrl: './message-dialog.component.html'\n})\nexport class MessageDialogComponent {\n @Output() beforeSelect: EventEmitter<any> = new EventEmitter();\n\n constructor(\n @Inject(MAT_DIALOG_DATA) public data: any\n ) { }\n \n select(value: string) {\n this.beforeSelect.emit(value);\n }\n}\n","<h1 mat-dialog-title class=\"ft-message__title\" *ngIf=\"data.options?.title\">\n <ft-icon *ngIf=\"data.options?.titleIcon\" [name]=\"data.options?.titleIcon?.name\"\n [collection]=\"data.options?.titleIcon?.collection\" [ngClass]=\"data.options?.titleIcon?.class\"></ft-icon>\n <div>{{ data.options?.title }}</div>\n</h1>\n<div mat-dialog-content class=\"ft-message__content\" [ngClass]=\"data.options?.class\">\n <ft-icon *ngIf=\"data.options?.icon\" [name]=\"data.options?.icon?.name\" [collection]=\"data.options?.icon?.collection\"\n [ngClass]=\"data.options?.icon?.class\"></ft-icon>\n <ng-container [ngSwitch]=\"data.message?.type\">\n <div *ngSwitchCase=\"'html'\" [innerHTML]=\"data.message?.content\"></div>\n <ng-container *ngSwitchDefault>{{ data.message?.content }}</ng-container>\n </ng-container>\n</div>\n<div mat-dialog-actions class=\"ft-message__actions\" *ngIf=\"data.options.actionsVisible\">\n <ng-container *ngIf=\"data.options?.actions?.length > 0; else acceptTemplate\">\n <ng-container *ngFor=\"let action of data.options?.actions; let i = index\">\n <ng-container [ngSwitch]=\"action.type\">\n <button type=\"button\" *ngSwitchCase=\"'raised'\" mat-raised-button [color]=\"action.metadata?.color\"\n (click)=\"select(action.value)\">{{ action.label }}</button>\n <button type=\"button\" *ngSwitchCase=\"'flat'\" mat-flat-button [color]=\"action.metadata?.color\"\n (click)=\"select(action.value)\">{{ action.label }}</button>\n <button type=\"button\" *ngSwitchCase=\"'stroked'\" mat-stroked-button [color]=\"action.metadata?.color\"\n (click)=\"select(action.value)\">{{ action.label }}</button>\n <button type=\"button\" *ngSwitchDefault mat-button [color]=\"action.metadata?.color\"\n (click)=\"select(action.value)\">{{ action.label }}</button>\n </ng-container>\n </ng-container>\n </ng-container>\n</div>\n<ng-template #acceptTemplate>\n <button type=\"button\" mat-stroked-button color=\"primary\" (click)=\"select('-1')\" i18n>Accept</button>\n</ng-template>","import { Injectable } from '@angular/core';\nimport { Observable, ReplaySubject } from 'rxjs';\n\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\n\nimport { MessageOptions } from './models/message-options';\nimport { MessageContent } from './models/message-content';\nimport { MessageContentComponent } from './message-content/message-content.component';\nimport { MessageDialogComponent } from './message-dialog/message-dialog.component';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MessageService {\n element: any;\n\n constructor(\n private snackBar: MatSnackBar,\n private dialog: MatDialog\n ) { }\n\n show(message: string | MessageContent, options?: MessageOptions): Observable<any> {\n const selectionSource: ReplaySubject<string> = new ReplaySubject<string>(undefined);\n const selection: Observable<string> = selectionSource.asObservable();\n const defaults: MessageOptions = {\n type: 'notification',\n duration: 2000,\n actionsVisible: true\n };\n options = Object.assign(defaults, options);\n const data = { message: typeof message === 'string' ? { content: message, type: 'text' } : message, options };\n let dialogRef: MatDialogRef<MessageDialogComponent>;\n switch (options.type) {\n default:\n case 'notification':\n this.snackBar.openFromComponent(MessageContentComponent, {\n data,\n panelClass: ['ft-message', 'ft-message--notification', options.class || ''],\n duration: options.duration || 2000,\n verticalPosition: options.verticalPosition || 'bottom'\n });\n break;\n case 'modal':\n dialogRef = this.dialog.open(MessageDialogComponent, {\n width: options.width || '350px',\n data,\n panelClass: ['ft-message', 'ft-message--modal'],\n autoFocus: false,\n disableClose: true\n });\n dialogRef.componentInstance.beforeSelect.subscribe((response: any) => {\n selectionSource.next(response);\n dialogRef.close();\n });\n this.snackBar.dismiss();\n break;\n }\n return selection;\n }\n}\n","import { ApplicationRef, ComponentRef, EmbeddedViewRef, Injectable, Injector, ViewContainerRef } from '@angular/core';\nimport { ProgressComponent } from './io//progress/progress.component';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ProgressService {\n appRef!: ApplicationRef;\n componentRef!: ComponentRef<ProgressComponent> | null;\n domElem!: HTMLElement;\n\n constructor(\n private viewContainerRef: ViewContainerRef,\n private injector: Injector\n ) { }\n\n show(): boolean {\n if (!this.componentRef) {\n this.appRef = this.injector.get(ApplicationRef);\n // 1. Create a component reference from the component \n this.componentRef = this.viewContainerRef.createComponent(ProgressComponent);\n\n // 2. Attach component to the appRef so that it's inside the ng component tree\n this.appRef.attachView(this.componentRef.hostView);\n this.componentRef.instance.overlay = true;\n\n // 3. Get DOM element from component\n const domElem = (this.componentRef.hostView as EmbeddedViewRef<any>)\n .rootNodes[0] as HTMLElement;\n\n // 4. Append DOM element to the body\n document.body.appendChild(domElem);\n return true;\n } else {\n return false;\n }\n }\n hide(): boolean {\n if (this.componentRef) {\n this.appRef.detachView(this.componentRef.hostView);\n this.componentRef.destroy();\n this.componentRef = null;\n return true;\n } else {\n return false;\n }\n }\n}\n","/*\n * Public API Surface of ui\n */\n\nexport * from './lib/io/avatar/avatar.component';\nexport * from './lib/io/icon/icon.component';\nexport * from './lib/io/image/image.component';\nexport * from './lib/io/progress/progress.component';\nexport * from './lib/io/rating/rating.component';\nexport * from './lib/nav/timeline/timeline.component';\nexport * from './lib/observe-intersecting.directive';\nexport * from './lib/message.service';\nexport * from './lib/progress.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i1"],"mappings":"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"}
1
+ {"version":3,"file":"factor_ec-ui.mjs","sources":["../../../projects/ui/src/lib/avatar/avatar.component.ts","../../../projects/ui/src/lib/avatar/avatar.component.html","../../../projects/ui/src/lib/chart.service.ts","../../../projects/ui/src/lib/models/ui-options.ts","../../../projects/ui/src/lib/ui.service.ts","../../../projects/ui/src/lib/icon/icon.component.ts","../../../projects/ui/src/lib/icon/icon.component.html","../../../projects/ui/src/lib/image/image.component.ts","../../../projects/ui/src/lib/image/image.component.html","../../../projects/ui/src/lib/message.service.ts","../../../projects/ui/src/lib/observe-intersecting.directive.ts","../../../projects/ui/src/lib/progress/progress.component.ts","../../../projects/ui/src/lib/progress/progress.component.html","../../../projects/ui/src/lib/rating/rating.component.ts","../../../projects/ui/src/lib/rating/rating.component.html","../../../projects/ui/src/lib/ui.module.ts","../../../projects/ui/src/factor_ec-ui.ts"],"sourcesContent":["import { Component, computed, effect, HostBinding, input, signal, inject } from '@angular/core';\n\n\nimport { ColorService } from '@factor_ec/utils';\n\n@Component({\n selector: 'ft-avatar',\n standalone: true,\n imports: [],\n templateUrl: './avatar.component.html',\n styleUrl: './avatar.component.scss'\n})\nexport class AvatarComponent {\n private colorService = inject(ColorService);\n\n color = input<string>();\n initials = computed(() => {\n return this.getInitials(this.label());\n });\n label = input.required<string>();\n loaded = signal<boolean>(false);\n src = input<string>();\n @HostBinding('style.background-color') get backgroundColor(): string {\n return this.color() || this.colorService.hex(this.label());\n }\n @HostBinding('style.background-image') get backgroundImage(): string {\n return this.src() ? `url(${this.src()})` : '';\n }\n class = input<string>();\n @HostBinding('class') get hostClasses(): string {\n return ['ft-avatar', this.class()].join(' ');\n }\n\n constructor() {\n // Usa `effect` para reaccionar a los cambios en el valor de `src`\n effect(() => {\n const value = this.src();\n if (value && value.trim() !== '') {\n const image = new Image();\n image.src = value;\n image.onload = () => {\n if ('decode' in image) {\n image.decode().then(() => {\n this.loaded.set(true);\n });\n } else {\n console.error('Image.decode not available.');\n }\n };\n }\n });\n }\n \n getInitials(value: string): string {\n const allInitials: string[] = value.match(/\\b\\w/g) || [];\n const initials: string = ((allInitials.shift() || '') + (allInitials.pop() || '')).toUpperCase();\n return initials;\n }\n}\n","@if (!loaded()) {\n<div>{{ initials() }}</div>\n}","import { Injectable } from '@angular/core';\n\nimport * as d3 from 'd3';\n\nimport { Chart } from './models/chart';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ChartService {\n private resizeTimeout!: ReturnType<typeof setTimeout>;\n private charts: Map<SVGElement, any> = new Map();\n\n constructor() {\n window.addEventListener('resize', this.handleResize.bind(this));\n }\n\n remove(element: SVGElement): void {\n this.charts.delete(element);\n }\n render(element: SVGElement, items: Chart[]): void {\n // Clear svg\n const svg = d3.select(element).html('');\n \n // Resize event\n if (!this.charts.has(element)) {\n this.charts.set(element, items);\n }\n\n const values: number[] = [0];\n items.forEach((item) => {\n item.data.forEach((i) => {\n if (typeof i[item.field] === 'number') {\n values.push(i[item.field]);\n }\n });\n });\n if (values.length > 0) {\n const domain: any = d3.extent(values);\n\n // Dibujo los gráficos\n items.forEach((item) => {\n switch (item.type) {\n case 'limit':\n this.drawLimitChart(svg, { ...item, domain });\n break;\n case 'column':\n this.drawColumnChart(svg, { ...item, domain });\n break;\n case 'line':\n this.drawLineChart(svg, { ...item, domain });\n break;\n case 'circle':\n this.drawCircleChart(svg, { ...item, domain });\n break;\n case 'event':\n this.drawEventsPlaceholder(svg, { ...item, domain });\n break;\n }\n });\n }\n }\n private drawAxis(svg: any, values: any[], domain: any): void {\n const element = svg.node()?.getBoundingClientRect();\n const yScale = d3\n .scaleLinear()\n .domain(domain)\n .range([element?.height || 0 - 4, 4]);\n\n // Dibuja el eje en X\n svg.select('.x-axis').remove();\n svg\n .append('rect')\n .attr('class', 'x-axis')\n .attr('fill', 'rgba(0, 0, 0, 0.08)')\n .attr('x', 0)\n .attr('width', element?.width || 0)\n .attr('height', 1)\n .attr('shape-rendering', 'crispEdges')\n .attr('y', yScale(0));\n\n /*\n const yScale = d3.scaleLinear().domain([-5000, 8000]).range([this.height, 0]);\n const yAxisGenerator = d3.axisLeft(yScale).ticks(8);\n this.svg.append('g').call(yAxisGenerator).style('transform', 'translateX(50px)');\n */\n }\n private drawCircleChart(svg: any, options: Chart): void {\n const domRect: DOMRect = svg.node().getBoundingClientRect();\n const xAccessor = (d: any) => d[options.categoryField];\n const yAccessor = (d: any) => d[options.field] || 0;\n const xScale = d3\n .scaleBand()\n .domain(options.data.map(xAccessor))\n .range([0, domRect.width])\n .padding(typeof options.padding === 'number' ? options.padding : 0);\n const yScale = d3\n .scaleLinear()\n .domain(\n options.domain ?? [\n Math.min(d3.min(options.data, yAccessor), 0),\n d3.max(options.data, yAccessor),\n ]\n )\n .range([domRect.height - 10, 10]);\n\n const circles = svg\n .append('g')\n .attr('class', 'ft-chart__circle')\n .selectAll(`circle`)\n .data(options.data);\n circles\n .enter()\n .append('circle')\n .style('stroke', options.color ?? '#ff9800')\n .attr('stroke-width', options.strokeWidth ?? 1)\n .style('fill', 'var(--ft-body-bg)')\n .attr('r', 1.5)\n .merge(circles)\n .attr('cx', (d: any) =>\n Math.round((xScale(xAccessor(d)) || 0) + xScale.bandwidth() / 2)\n )\n .attr('cy', (d: any) =>\n Math.round(yScale(yAccessor(d)))\n );\n circles.exit().remove();\n }\n private drawColumnChart(svg: any, options: Chart): void {\n const element = svg.node().getBoundingClientRect();\n const xAccessor = (d: any) => d[options.categoryField];\n //const xAccessor = (d: any) => (new Date(d[options.categoryField]))?.getTime();\n const yAccessor = (d: any) => d[options.field] || 0;\n\n const xScale = d3\n .scaleBand()\n .domain(options.data.map(xAccessor))\n .range([0, element.width])\n .padding(options.padding ?? 0.5);\n const yScale = d3\n .scaleLinear()\n .domain(\n options.domain\n ? options.domain\n : [\n Math.min(d3.min(options.data, yAccessor), 0),\n d3.max(options.data, yAccessor),\n ]\n )\n .range([element.height - 4, 4]);\n\n const columns = svg\n .append('g')\n .attr('class', 'ft-chart__column')\n .selectAll('rect')\n .data(options.data);\n columns\n .enter()\n .append('rect')\n .attr('x', (d: any) => xScale(xAccessor(d)))\n .attr('y', (d: any) => yScale(yAccessor(d)))\n .attr('shape-rendering', 'crispEdges')\n .attr('fill', options.color ?? '#ff9800')\n .attr('title', (d: any) => d[options.field])\n .merge(columns)\n .attr('width', Math.max(1, xScale.bandwidth()))\n .attr('height', (d: any) => Math.abs(yScale(yAccessor(d)) - yScale(0)));\n columns.exit().remove();\n }\n private drawLineChart(svg: any, options: Chart): void {\n const domRect: DOMRect = svg.node().getBoundingClientRect();\n const xAccessor = (d: any) => d[options.categoryField];\n const yAccessor = (d: any) => d[options.field] || 0;\n const xScale = d3\n .scaleBand()\n .domain(options.data.map(xAccessor))\n .range([0, domRect.width])\n .padding(typeof options.padding === 'number' ? options.padding : 0);\n const yScale = d3\n .scaleLinear()\n .domain(\n options.domain ?? [\n Math.min(d3.min(options.data, yAccessor), 0),\n d3.max(options.data, yAccessor),\n ]\n )\n .range([domRect.height - 10, 10]);\n\n const lineGenerator = d3\n .line()\n .x((d: any) =>\n Math.round((xScale(xAccessor(d)) || 0) + xScale.bandwidth() / 2)\n )\n .y((d: any) => Math.round(yScale(yAccessor(d))));\n svg\n .append('path')\n .attr('class', 'ft-chart__line')\n .attr('fill', 'none')\n .attr('stroke', options.color ?? '#ff9800')\n .attr('stroke-width', options.strokeWidth ?? 2)\n .attr('stroke-linecap', 'round')\n .attr('d', lineGenerator(options.data));\n }\n private drawLimitChart(svg: any, options: Chart): void {\n const element = svg.node().getBoundingClientRect();\n const yAccessor = (d: any) => d[options.field] || 0;\n const yScale = d3\n .scaleLinear()\n .domain(\n options.domain\n ? options.domain\n : [\n Math.min(d3.min(options.data, yAccessor), 0),\n d3.max(options.data, yAccessor),\n ]\n )\n .range([element.height - 4, 4]);\n const line = svg.append('g').selectAll('rect').data([options.data[0]]);\n line\n .enter()\n .append('rect')\n .attr('x', 0)\n .attr('y', (d: any) => yScale(yAccessor(d)) + 1)\n .attr('shape-rendering', 'crispEdges')\n .attr('fill', options.color ?? '#ff9800')\n .attr('title', 0)\n .attr('width', () => '100%')\n .attr('height', 1);\n line.exit().remove();\n\n line\n .enter()\n .append('text')\n .attr(\n 'style',\n 'font-weight: 600; font-size: var(--ft-text-font-size-sm);'\n )\n .attr('x', 0)\n .attr('y', (d: any) => yScale(yAccessor(d)) + 16)\n .attr('fill', 'var(--ft-danger-color)')\n .text(options.label);\n }\n private drawEventsPlaceholder(svg: any, options: Chart): void {\n const domRect: DOMRect = svg.node().getBoundingClientRect();\n const xAccessor = (d: any) => d[options.categoryField];\n const yAccessor = (d: any) => d[options.field] || 0;\n const xScale = d3\n .scaleBand()\n .domain(options.data.map(xAccessor))\n .range([0, domRect.width])\n .padding(typeof options.padding === 'number' ? options.padding : 0);\n const yScale = d3\n .scaleLinear()\n .domain(\n options.domain ?? [\n Math.min(d3.min(options.data, yAccessor), 0),\n d3.max(options.data, yAccessor),\n ]\n )\n .range([domRect.height, 0]);\n\n const columns = svg\n .append('g')\n .attr('class', 'ft-chart__placeholder')\n .selectAll('rect')\n .data(options.data);\n columns\n .enter()\n .append('rect')\n .attr('x', (d: any) => xScale(d[options.categoryField]))\n .attr('y', () => 0)\n .attr('shape-rendering', 'crispEdges')\n .attr('fill', 'rgba(0,0,0,0)')\n .attr('tabindex', 0)\n .merge(columns)\n .attr('width', Math.max(1, xScale.bandwidth()))\n .attr('height', () => yScale(0))\n .on('click', (event: MouseEvent, d: any) => {\n if (options.click) {\n options.click(event, d);\n }\n });\n columns.exit().remove();\n }\n private handleResize(): void {\n clearTimeout(this.resizeTimeout);\n this.resizeTimeout = setTimeout(() => {\n for (const [element, items] of this.charts.entries()) {\n this.render(element, items);\n }\n }, 300);\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport interface UiOptions {\n iconSettings: {\n path: string;\n collection: string;\n mode: 'external' | undefined;\n };\n}\n\nexport const UI_OPTIONS = new InjectionToken<UiOptions>('UI_OPTIONS');\n","import { Injectable, inject } from '@angular/core';\nimport { UI_OPTIONS, UiOptions } from './models/ui-options';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UiService {\n private options = inject<UiOptions>(UI_OPTIONS);\n\n\n get(): UiOptions {\n return this.options;\n } \n}\n","import { Component, computed, HostBinding, inject, input } from '@angular/core';\n\nimport { UiService } from '../ui.service';\n\n@Component({\n selector: 'ft-icon',\n standalone: true,\n imports: [],\n templateUrl: './icon.component.html',\n styleUrl: './icon.component.scss'\n})\nexport class IconComponent {\n private options = inject(UiService);\n public collection = input<string>();\n public mode = input<string>();\n public name = input.required<string>();\n public path = input<string>();\n public src = input<string>();\n public url = computed(() => {\n let collection = this.collection();\n let mode = this.mode();\n let path = this.path();\n const options = this.options.get().iconSettings;\n // Set the default collection if the mode is external\n if (!this.collection()) {\n if (options && options.collection) {\n collection = options.collection;\n } else if (this.mode() === 'external') {\n collection = 'icons';\n }\n }\n if (!this.mode()) {\n if (this.options.get().iconSettings && options.mode) {\n mode = options.mode;\n } else {\n mode = 'external';\n }\n }\n if (mode === 'external') {\n // If the icon mode is external\n if (!this.path()) {\n if (options && 'path' in options) {\n path = options.path;\n } else {\n path = 'assets';\n }\n }\n return `${path}/${collection}.svg#${this.name()}`;\n } else {\n // If the icon mode is inline\n const name =\n this.collection() && this.collection() !== 'unset'\n ? `${this.collection()}--${this.name()}`\n : this.name();\n return `#${name}`;\n }\n });\n public class = input<string>();\n @HostBinding('class') get hostClasses(): string {\n return ['ft-icon', this.class()].join(' ');\n }\n}\n","@if (!src()) {\n<svg>\n <use attr.href=\"{{ url() }}\" />\n</svg>\n} @else {\n<img [src]=\"src()\" alt=\"\" />\n}","import { Component, ElementRef, HostBinding, inject, input } from '@angular/core';\n\n\nimport { IconComponent } from '../icon/icon.component';\n\n@Component({\n selector: 'ft-image',\n standalone: true,\n imports: [\n IconComponent\n],\n templateUrl: './image.component.html'\n})\nexport class ImageComponent {\n private element = inject(ElementRef);\n\n readonly class = input<string>('');\n @HostBinding('class.ft-image--error') error!: boolean;\n @HostBinding('class.ft-image--loading') loading: boolean = false;\n readonly src = input.required<string>();\n readonly alt = input<string>('');\n shown: boolean = false;\n\n ngOnInit() {\n if (\"IntersectionObserver\" in window) {\n let elementObserver = new IntersectionObserver((entries, observer) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n let image = new Image();\n image.src = this.src();\n setTimeout(() => {\n if (!this.shown && !this.error) {\n this.loading = true;\n }\n }, 100);\n image.onerror = () => {\n this.error = true;\n this.loading = false;\n };\n image.onload = () => {\n if (\"decode\" in image) {\n image.decode().then(() => {\n this.loading = false;\n this.shown = true;\n });\n } else {\n this.loading = false;\n this.shown = true;\n }\n };\n elementObserver.unobserve(this.element.nativeElement);\n }\n });\n }, {\n rootMargin: \"0px 0px 200px 0px\"\n });\n elementObserver.observe(this.element.nativeElement);\n } else {\n console.error('IntersectionObserver not available.');\n this.loading = false;\n this.shown = true;\n }\n }\n @HostBinding('class') get hostClasses(): string {\n return [\n 'ft-image',\n this.class()\n ].join(' ');\n }\n}","@if (shown) {\n <img [src]=\"src()\" [alt]=\"alt()\" />\n}\n@if (error) {\n <ft-icon name=\"warning\" size=\"2\"></ft-icon>\n}","import { Component, Injectable, OutputEmitterRef, inject, output } from '@angular/core';\nimport {\n MAT_DIALOG_DATA,\n MatDialog,\n MatDialogModule,\n MatDialogRef,\n} from '@angular/material/dialog';\nimport {\n MAT_SNACK_BAR_DATA,\n MatSnackBar,\n MatSnackBarModule,\n} from '@angular/material/snack-bar';\n\nimport { MatButtonModule } from '@angular/material/button';\n\nimport { Observable, ReplaySubject } from 'rxjs';\nimport { IconComponent } from './icon/icon.component';\nimport { MessageOptions } from './models/message-options';\nimport { MessageContent } from './models/message-content';\nimport { StringService } from '@factor_ec/utils';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n standalone: true,\n imports: [MatSnackBarModule],\n template: `\n @switch (data.message?.type) { @case ('html') {\n <div [innerHTML]=\"data.message?.content\"></div>\n } @default {\n {{ data.message?.content }}\n } }\n `,\n})\nexport class MessageContentComponent {\n data = inject(MAT_SNACK_BAR_DATA);\n}\n\n@Component({\n standalone: true,\n imports: [CommonModule, MatButtonModule, MatDialogModule, IconComponent],\n template: `\n @if (data.options?.title) {\n <h1 mat-dialog-title class=\"ft-message__title\">\n @if (data.options?.titleIcon) {\n <ft-icon\n [name]=\"data.options?.titleIcon?.name\"\n [collection]=\"data.options?.titleIcon?.collection\"\n [ngClass]=\"data.options?.titleIcon?.class\"\n ></ft-icon>\n }\n <div>{{ data.options?.title }}</div>\n </h1>\n }\n <div\n mat-dialog-content\n class=\"ft-message__content\"\n [ngClass]=\"data.options?.class\"\n >\n @if (data.options?.icon) {\n <ft-icon\n [name]=\"data.options?.icon?.name\"\n [collection]=\"data.options?.icon?.collection\"\n [ngClass]=\"data.options?.icon?.class\"\n ></ft-icon>\n } @switch (data.message?.type) { @case ('html') {\n <div [innerHTML]=\"data.message?.content\"></div>\n } @default {\n {{ data.message?.content }}\n } }\n </div>\n @if (data.options.actionsVisible) {\n <div mat-dialog-actions class=\"ft-message__actions\">\n @if (data.options?.actions?.length > 0) { @for (action of\n data.options?.actions; track action; let i = $index) { @switch\n (action.type) { @case ('raised') {\n <button\n type=\"button\"\n mat-raised-button\n [color]=\"action.metadata?.color\"\n (click)=\"select(action.value)\"\n >\n {{ action.label }}\n </button>\n } @case ('flat') {\n <button\n type=\"button\"\n mat-flat-button\n [color]=\"action.metadata?.color\"\n (click)=\"select(action.value)\"\n >\n {{ action.label }}\n </button>\n } @case ('stroked') {\n <button\n type=\"button\"\n mat-stroked-button\n [color]=\"action.metadata?.color\"\n (click)=\"select(action.value)\"\n >\n {{ action.label }}\n </button>\n } @default {\n <button type=\"button\" mat-button (click)=\"select(action.value)\">\n {{ action.label }}\n </button>\n } } } } @else {\n <button\n type=\"button\"\n mat-flat-button\n color=\"primary\"\n (click)=\"select('-1')\"\n i18n\n >\n Accept\n </button>\n }\n </div>\n }\n `,\n})\nexport class MessageDialogComponent {\n data = inject(MAT_DIALOG_DATA);\n\n readonly beforeSelect: OutputEmitterRef<string> = output();\n\n select(value: string) {\n this.beforeSelect.emit(value);\n }\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MessageService {\n private snackBar = inject(MatSnackBar);\n private dialog = inject(MatDialog);\n private stringService = inject(StringService);\n\n show(\n message: string | MessageContent,\n options?: MessageOptions\n ): Observable<any> {\n const selectionSource: ReplaySubject<string> = new ReplaySubject<string>(\n undefined\n );\n const selection: Observable<string> = selectionSource.asObservable();\n const defaults: MessageOptions = {\n type: 'notification',\n duration: 2000,\n actionsVisible: true,\n };\n options = Object.assign(defaults, options);\n const data = {\n message:\n typeof message === 'string'\n ? { content: message, type: 'text' }\n : message,\n options,\n };\n let dialogRef: MatDialogRef<MessageDialogComponent>;\n switch (options.type) {\n default:\n case 'notification':\n this.snackBar.openFromComponent(MessageContentComponent, {\n data,\n panelClass: ['ft-message', 'ft-message--notification'],\n duration: this.stringService.calculateReadingTime(\n typeof message === 'string' ? message : message.content\n ),\n verticalPosition: options.verticalPosition || 'bottom',\n });\n break;\n case 'modal':\n dialogRef = this.dialog.open(MessageDialogComponent, {\n width: options.width || '350px',\n data,\n panelClass: ['ft-message', 'ft-message--modal'],\n autoFocus: false,\n disableClose: true,\n });\n dialogRef.componentInstance.beforeSelect.subscribe((response: any) => {\n selectionSource.next(response);\n dialogRef.close();\n });\n break;\n }\n return selection;\n }\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n Directive,\n ElementRef,\n input,\n OnInit,\n PLATFORM_ID,\n inject,\n output,\n OutputEmitterRef,\n} from '@angular/core';\n\n@Directive({\n selector: '[ftObserveIntersecting]',\n standalone: true,\n})\nexport class ObserveIntersectingDirective implements OnInit {\n private element = inject(ElementRef);\n private readonly platformId = inject(PLATFORM_ID);\n public ftObserveIntersectingOptions = input<{\n root?: HTMLElement;\n rootMargin?: string;\n threshold?: number | number[];\n }>();\n public readonly event: OutputEmitterRef<boolean> = output({ alias: 'ftObserveIntersecting' });\n\n ngOnInit() {\n if (isPlatformBrowser(this.platformId)) {\n if ('IntersectionObserver' in window) {\n const elementObserver = new IntersectionObserver((entries) => {\n entries.forEach((entry: IntersectionObserverEntry) => {\n this.event.emit(entry.isIntersecting);\n });\n }, this.ftObserveIntersectingOptions());\n elementObserver.observe(this.element.nativeElement);\n } else {\n console.error('ftObserveIntersecting not available in this browser.');\n }\n }\n }\n}\n","import { Component, HostBinding, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'ft-progress',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './progress.component.html',\n styleUrl: './progress.component.scss'\n})\nexport class ProgressComponent {\n mode = input<'determinate' | 'indeterminate'>('indeterminate');\n overlay = input<boolean>(false);\n value = input<number>(0);\n\n class = input<string>('');\n @HostBinding('class')\n get hostClasses(): string {\n return [\n 'ft-progress',\n this.overlay() ? 'ft-progress--overlay' : '',\n this.class()\n ].join(' ');\n }\n}\n","<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 100 100\"\n preserveAspectRatio=\"xMidYMid\">\n <circle class=\"ft-track\" cx=\"50\" cy=\"50\" r=\"40\" />\n <circle class=\"ft-bar\" [ngClass]=\"mode() === 'determinate' ? 'ft-bar--determinate' : 'ft-bar--indeterminate'\" cx=\"50\"\n cy=\"50\" r=\"40\"\n [ngStyle]=\"{'stroke-dashoffset': mode() === 'determinate'? 'calc((3.14159265 * 40 * 2 * (100 - ' + value() + ')) / 100)' : null}\">\n </circle>\n</svg>","import { Component, Input, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'ft-rating',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './rating.component.html',\n styleUrl: './rating.component.scss',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: RatingComponent,\n multi: true\n }\n ]\n})\nexport class RatingComponent implements ControlValueAccessor {\n disabled: boolean = false;\n hoverValue!: number;\n propagateChange = (_: any) => { };\n readonly readOnly = input<boolean>(false);\n stars: any[] = [\n { value: 1 },\n { value: 2 },\n { value: 3 },\n { value: 4 },\n { value: 5 }\n ];\n _value!: number;\n\n get value() {\n return this._value;\n }\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input() set value(value: any) {\n this._value = value;\n this.propagateChange(this._value);\n }\n registerOnChange(fn: (_: any) => void) {\n this.propagateChange = fn;\n }\n registerOnTouched(fn: (_: any) => void) {\n //this.propagateChange = fn;\n }\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n setRate(value: number, isHover?: boolean) {\n if (isHover) {\n this.hoverValue = value;\n } else {\n this.value = value;\n }\n }\n updateValue(event: any) {\n this.value = event.target.value;\n }\n writeValue(value: string) {\n this.value = value;\n }\n}","@for (star of stars; track star) {\n <ng-container *ngTemplateOutlet=\"!readOnly()? buttonTemplate : starTemplate; context:{star:star}\"></ng-container>\n}\n<ng-template #buttonTemplate let-star=\"star\">\n @if (!readOnly()) {\n <button type=\"button\" class=\"ft-rating__item\" [disabled]=\"disabled\"\n (mouseover)=\"setRate(star.value, true)\" (focus)=\"setRate(star.value, true)\" (blur)=\"setRate(0, true)\"\n (mouseout)=\"setRate(0, true)\" (click)=\"setRate(star.value)\">\n <ng-container *ngTemplateOutlet=\"starTemplate; context:{star:star}\"></ng-container>\n </button>\n } @else {\n <svg [ngClass]=\"{'ft-rating__item-icon--hover': hoverValue >= star.value, 'ft-rating__item-icon--active': value >= star.value}\"\n viewBox=\"0 0 24 24\">\n <path\n d=\"M17.93 21.315c-.534.408-5.22-3.186-5.881-3.181-.663 0-5.307 3.656-5.846 3.254-.537-.403 1.29-6.165 1.081-6.822-.209-.656-4.972-4.138-4.772-4.796.201-.658 6.015-.627 6.55-1.036.533-.41 2.233-6.215 2.895-6.219.663 0 2.43 5.779 2.968 6.182.539.403 6.352.297 6.56.953.21.656-4.513 4.197-4.714 4.856-.2.658 1.692 6.398 1.159 6.808z\" />\n </svg>\n }\n</ng-template>\n<ng-template #starTemplate let-star=\"star\">\n <svg [ngClass]=\"{'ft-rating__item-icon--hover': hoverValue >= star.value, 'ft-rating__item-icon--active': value >= star.value}\"\n viewBox=\"0 0 24 24\">\n <path\n d=\"M17.93 21.315c-.534.408-5.22-3.186-5.881-3.181-.663 0-5.307 3.656-5.846 3.254-.537-.403 1.29-6.165 1.081-6.822-.209-.656-4.972-4.138-4.772-4.796.201-.658 6.015-.627 6.55-1.036.533-.41 2.233-6.215 2.895-6.219.663 0 2.43 5.779 2.968 6.182.539.403 6.352.297 6.56.953.21.656-4.513 4.197-4.714 4.856-.2.658 1.692 6.398 1.159 6.808z\" />\n </svg>\n</ng-template>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AvatarComponent } from './avatar/avatar.component';\nimport { IconComponent } from './icon/icon.component';\nimport { ImageComponent } from './image/image.component';\nimport { ProgressComponent } from './progress/progress.component';\nimport { RatingComponent } from './rating/rating.component';\nimport { ObserveIntersectingDirective } from './observe-intersecting.directive';\n\n@NgModule({\n declarations: [],\n imports: [\n CommonModule,\n AvatarComponent,\n IconComponent,\n ImageComponent,\n ProgressComponent,\n RatingComponent,\n ObserveIntersectingDirective\n ],\n exports: [\n AvatarComponent,\n IconComponent,\n ImageComponent,\n ProgressComponent,\n RatingComponent,\n ObserveIntersectingDirective\n ]\n})\nexport class UiModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;MAYa,eAAe,CAAA;AAClB,IAAA,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;IAE3C,KAAK,GAAG,KAAK,EAAU;AACvB,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAK;QACvB,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AACvC,KAAC,CAAC;AACF,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAU;AAChC,IAAA,MAAM,GAAG,MAAM,CAAU,KAAK,CAAC;IAC/B,GAAG,GAAG,KAAK,EAAU;AACrB,IAAA,IAA2C,eAAe,GAAA;AACxD,QAAA,OAAO,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;;AAE5D,IAAA,IAA2C,eAAe,GAAA;AACxD,QAAA,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,CAAA,IAAA,EAAO,IAAI,CAAC,GAAG,EAAE,CAAA,CAAA,CAAG,GAAG,EAAE;;IAE/C,KAAK,GAAG,KAAK,EAAU;AACvB,IAAA,IAA0B,WAAW,GAAA;AACnC,QAAA,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;;AAG9C,IAAA,WAAA,GAAA;;QAEE,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE;YACxB,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;AAChC,gBAAA,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE;AACzB,gBAAA,KAAK,CAAC,GAAG,GAAG,KAAK;AACjB,gBAAA,KAAK,CAAC,MAAM,GAAG,MAAK;AAClB,oBAAA,IAAI,QAAQ,IAAI,KAAK,EAAE;AACrB,wBAAA,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,MAAK;AACvB,4BAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;AACvB,yBAAC,CAAC;;yBACG;AACL,wBAAA,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC;;AAEhD,iBAAC;;AAEL,SAAC,CAAC;;AAGJ,IAAA,WAAW,CAAC,KAAa,EAAA;QACvB,MAAM,WAAW,GAAa,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE;QACxD,MAAM,QAAQ,GAAW,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE;AAChG,QAAA,OAAO,QAAQ;;uGA5CN,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,qsBCZ5B,mDAEC,EAAA,MAAA,EAAA,CAAA,uaAAA,CAAA,EAAA,CAAA;;2FDUY,eAAe,EAAA,UAAA,EAAA,CAAA;kBAP3B,SAAS;+BACI,WAAW,EAAA,UAAA,EACT,IAAI,EAAA,OAAA,EACP,EAAE,EAAA,QAAA,EAAA,mDAAA,EAAA,MAAA,EAAA,CAAA,uaAAA,CAAA,EAAA;wDAc8B,eAAe,EAAA,CAAA;sBAAzD,WAAW;uBAAC,wBAAwB;gBAGM,eAAe,EAAA,CAAA;sBAAzD,WAAW;uBAAC,wBAAwB;gBAIX,WAAW,EAAA,CAAA;sBAApC,WAAW;uBAAC,OAAO;;;MEpBT,YAAY,CAAA;AACf,IAAA,aAAa;AACb,IAAA,MAAM,GAAyB,IAAI,GAAG,EAAE;AAEhD,IAAA,WAAA,GAAA;AACE,QAAA,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;AAGjE,IAAA,MAAM,CAAC,OAAmB,EAAA;AACxB,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;;IAE7B,MAAM,CAAC,OAAmB,EAAE,KAAc,EAAA;;AAExC,QAAA,MAAM,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;;QAGvC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;YAC7B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC;;AAGjC,QAAA,MAAM,MAAM,GAAa,CAAC,CAAC,CAAC;AAC5B,QAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;YACrB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;gBACtB,IAAI,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE;oBACrC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;AAE9B,aAAC,CAAC;AACJ,SAAC,CAAC;AACF,QAAA,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;YACrB,MAAM,MAAM,GAAQ,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;;AAGrC,YAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACrB,gBAAA,QAAQ,IAAI,CAAC,IAAI;AACf,oBAAA,KAAK,OAAO;AACV,wBAAA,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,CAAC;wBAC7C;AACF,oBAAA,KAAK,QAAQ;AACX,wBAAA,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,CAAC;wBAC9C;AACF,oBAAA,KAAK,MAAM;AACT,wBAAA,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,CAAC;wBAC5C;AACF,oBAAA,KAAK,QAAQ;AACX,wBAAA,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,CAAC;wBAC9C;AACF,oBAAA,KAAK,OAAO;AACV,wBAAA,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,CAAC;wBACpD;;AAEN,aAAC,CAAC;;;AAGE,IAAA,QAAQ,CAAC,GAAQ,EAAE,MAAa,EAAE,MAAW,EAAA;QACnD,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,EAAE,qBAAqB,EAAE;QACnD,MAAM,MAAM,GAAG;AACZ,aAAA,WAAW;aACX,MAAM,CAAC,MAAM;AACb,aAAA,KAAK,CAAC,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;;QAGvC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE;QAC9B;aACG,MAAM,CAAC,MAAM;AACb,aAAA,IAAI,CAAC,OAAO,EAAE,QAAQ;AACtB,aAAA,IAAI,CAAC,MAAM,EAAE,qBAAqB;AAClC,aAAA,IAAI,CAAC,GAAG,EAAE,CAAC;aACX,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;AACjC,aAAA,IAAI,CAAC,QAAQ,EAAE,CAAC;AAChB,aAAA,IAAI,CAAC,iBAAiB,EAAE,YAAY;aACpC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AAEvB;;;;AAIE;;IAEI,eAAe,CAAC,GAAQ,EAAE,OAAc,EAAA;QAC9C,MAAM,OAAO,GAAY,GAAG,CAAC,IAAI,EAAE,CAAC,qBAAqB,EAAE;AAC3D,QAAA,MAAM,SAAS,GAAG,CAAC,CAAM,KAAK,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC;AACtD,QAAA,MAAM,SAAS,GAAG,CAAC,CAAM,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;QACnD,MAAM,MAAM,GAAG;AACZ,aAAA,SAAS;aACT,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;aAClC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC;AACxB,aAAA,OAAO,CAAC,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,GAAG,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG;AACZ,aAAA,WAAW;AACX,aAAA,MAAM,CACL,OAAO,CAAC,MAAM,IAAI;AAChB,YAAA,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;YAC5C,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC;SAChC;aAEF,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;QAEnC,MAAM,OAAO,GAAG;aACb,MAAM,CAAC,GAAG;AACV,aAAA,IAAI,CAAC,OAAO,EAAE,kBAAkB;aAChC,SAAS,CAAC,QAAQ;AAClB,aAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;QACrB;AACG,aAAA,KAAK;aACL,MAAM,CAAC,QAAQ;aACf,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,IAAI,SAAS;aAC1C,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,WAAW,IAAI,CAAC;AAC7C,aAAA,KAAK,CAAC,MAAM,EAAE,mBAAmB;AACjC,aAAA,IAAI,CAAC,GAAG,EAAE,GAAG;aACb,KAAK,CAAC,OAAO;AACb,aAAA,IAAI,CAAC,IAAI,EAAE,CAAC,CAAM,KACjB,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;aAEjE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAM,KACjB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CACjC;AACH,QAAA,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE;;IAEjB,eAAe,CAAC,GAAQ,EAAE,OAAc,EAAA;QAC9C,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,qBAAqB,EAAE;AAClD,QAAA,MAAM,SAAS,GAAG,CAAC,CAAM,KAAK,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC;;AAEtD,QAAA,MAAM,SAAS,GAAG,CAAC,CAAM,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;QAEnD,MAAM,MAAM,GAAG;AACZ,aAAA,SAAS;aACT,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;aAClC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC;AACxB,aAAA,OAAO,CAAC,OAAO,CAAC,OAAO,IAAI,GAAG,CAAC;QAClC,MAAM,MAAM,GAAG;AACZ,aAAA,WAAW;aACX,MAAM,CACL,OAAO,CAAC;cACJ,OAAO,CAAC;AACV,cAAE;AACE,gBAAA,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;gBAC5C,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC;aAChC;aAEN,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAEjC,MAAM,OAAO,GAAG;aACb,MAAM,CAAC,GAAG;AACV,aAAA,IAAI,CAAC,OAAO,EAAE,kBAAkB;aAChC,SAAS,CAAC,MAAM;AAChB,aAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;QACrB;AACG,aAAA,KAAK;aACL,MAAM,CAAC,MAAM;AACb,aAAA,IAAI,CAAC,GAAG,EAAE,CAAC,CAAM,KAAK,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC1C,aAAA,IAAI,CAAC,GAAG,EAAE,CAAC,CAAM,KAAK,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC1C,aAAA,IAAI,CAAC,iBAAiB,EAAE,YAAY;aACpC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,SAAS;AACvC,aAAA,IAAI,CAAC,OAAO,EAAE,CAAC,CAAM,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;aAC1C,KAAK,CAAC,OAAO;AACb,aAAA,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;aAC7C,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAM,KAAK,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACzE,QAAA,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE;;IAEjB,aAAa,CAAC,GAAQ,EAAE,OAAc,EAAA;QAC5C,MAAM,OAAO,GAAY,GAAG,CAAC,IAAI,EAAE,CAAC,qBAAqB,EAAE;AAC3D,QAAA,MAAM,SAAS,GAAG,CAAC,CAAM,KAAK,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC;AACtD,QAAA,MAAM,SAAS,GAAG,CAAC,CAAM,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;QACnD,MAAM,MAAM,GAAG;AACZ,aAAA,SAAS;aACT,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;aAClC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC;AACxB,aAAA,OAAO,CAAC,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,GAAG,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG;AACZ,aAAA,WAAW;AACX,aAAA,MAAM,CACL,OAAO,CAAC,MAAM,IAAI;AAChB,YAAA,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;YAC5C,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC;SAChC;aAEF,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;QAEnC,MAAM,aAAa,GAAG;AACnB,aAAA,IAAI;AACJ,aAAA,CAAC,CAAC,CAAC,CAAM,KACR,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;AAEjE,aAAA,CAAC,CAAC,CAAC,CAAM,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClD;aACG,MAAM,CAAC,MAAM;AACb,aAAA,IAAI,CAAC,OAAO,EAAE,gBAAgB;AAC9B,aAAA,IAAI,CAAC,MAAM,EAAE,MAAM;aACnB,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,IAAI,SAAS;aACzC,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,WAAW,IAAI,CAAC;AAC7C,aAAA,IAAI,CAAC,gBAAgB,EAAE,OAAO;aAC9B,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;;IAEnC,cAAc,CAAC,GAAQ,EAAE,OAAc,EAAA;QAC7C,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,qBAAqB,EAAE;AAClD,QAAA,MAAM,SAAS,GAAG,CAAC,CAAM,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;QACnD,MAAM,MAAM,GAAG;AACZ,aAAA,WAAW;aACX,MAAM,CACL,OAAO,CAAC;cACJ,OAAO,CAAC;AACV,cAAE;AACE,gBAAA,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;gBAC5C,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC;aAChC;aAEN,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QACjC,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACtE;AACG,aAAA,KAAK;aACL,MAAM,CAAC,MAAM;AACb,aAAA,IAAI,CAAC,GAAG,EAAE,CAAC;AACX,aAAA,IAAI,CAAC,GAAG,EAAE,CAAC,CAAM,KAAK,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAC9C,aAAA,IAAI,CAAC,iBAAiB,EAAE,YAAY;aACpC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,SAAS;AACvC,aAAA,IAAI,CAAC,OAAO,EAAE,CAAC;AACf,aAAA,IAAI,CAAC,OAAO,EAAE,MAAM,MAAM;AAC1B,aAAA,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AACpB,QAAA,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE;QAEpB;AACG,aAAA,KAAK;aACL,MAAM,CAAC,MAAM;AACb,aAAA,IAAI,CACH,OAAO,EACP,2DAA2D;AAE5D,aAAA,IAAI,CAAC,GAAG,EAAE,CAAC;AACX,aAAA,IAAI,CAAC,GAAG,EAAE,CAAC,CAAM,KAAK,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;AAC/C,aAAA,IAAI,CAAC,MAAM,EAAE,wBAAwB;AACrC,aAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;;IAEhB,qBAAqB,CAAC,GAAQ,EAAE,OAAc,EAAA;QACpD,MAAM,OAAO,GAAY,GAAG,CAAC,IAAI,EAAE,CAAC,qBAAqB,EAAE;AAC3D,QAAA,MAAM,SAAS,GAAG,CAAC,CAAM,KAAK,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC;AACtD,QAAA,MAAM,SAAS,GAAG,CAAC,CAAM,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;QACnD,MAAM,MAAM,GAAG;AACZ,aAAA,SAAS;aACT,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;aAClC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC;AACxB,aAAA,OAAO,CAAC,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,GAAG,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG;AACZ,aAAA,WAAW;AACX,aAAA,MAAM,CACL,OAAO,CAAC,MAAM,IAAI;AAChB,YAAA,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;YAC5C,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC;SAChC;aAEF,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAE7B,MAAM,OAAO,GAAG;aACb,MAAM,CAAC,GAAG;AACV,aAAA,IAAI,CAAC,OAAO,EAAE,uBAAuB;aACrC,SAAS,CAAC,MAAM;AAChB,aAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;QACrB;AACG,aAAA,KAAK;aACL,MAAM,CAAC,MAAM;AACb,aAAA,IAAI,CAAC,GAAG,EAAE,CAAC,CAAM,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;AACtD,aAAA,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC;AACjB,aAAA,IAAI,CAAC,iBAAiB,EAAE,YAAY;AACpC,aAAA,IAAI,CAAC,MAAM,EAAE,eAAe;AAC5B,aAAA,IAAI,CAAC,UAAU,EAAE,CAAC;aAClB,KAAK,CAAC,OAAO;AACb,aAAA,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;aAC7C,IAAI,CAAC,QAAQ,EAAE,MAAM,MAAM,CAAC,CAAC,CAAC;aAC9B,EAAE,CAAC,OAAO,EAAE,CAAC,KAAiB,EAAE,CAAM,KAAI;AACzC,YAAA,IAAI,OAAO,CAAC,KAAK,EAAE;AACjB,gBAAA,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;;AAE3B,SAAC,CAAC;AACJ,QAAA,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE;;IAEjB,YAAY,GAAA;AAClB,QAAA,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC;AAChC,QAAA,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,MAAK;AACnC,YAAA,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE;AACpD,gBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC;;SAE9B,EAAE,GAAG,CAAC;;uGAxRE,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFX,MAAM,EAAA,CAAA;;2FAEP,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCEY,UAAU,GAAG,IAAI,cAAc,CAAY,YAAY;;MCJvD,SAAS,CAAA;AACZ,IAAA,OAAO,GAAG,MAAM,CAAY,UAAU,CAAC;IAG/C,GAAG,GAAA;QACD,OAAO,IAAI,CAAC,OAAO;;uGALV,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAT,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,SAAS,cAFR,MAAM,EAAA,CAAA;;2FAEP,SAAS,EAAA,UAAA,EAAA,CAAA;kBAHrB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCMY,aAAa,CAAA;AAChB,IAAA,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC;IAC5B,UAAU,GAAG,KAAK,EAAU;IAC5B,IAAI,GAAG,KAAK,EAAU;AACtB,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAU;IAC/B,IAAI,GAAG,KAAK,EAAU;IACtB,GAAG,GAAG,KAAK,EAAU;AACrB,IAAA,GAAG,GAAG,QAAQ,CAAC,MAAK;AACzB,QAAA,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE;AAClC,QAAA,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;AACtB,QAAA,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;QACtB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,YAAY;;AAE/C,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE;AACtB,YAAA,IAAI,OAAO,IAAI,OAAO,CAAC,UAAU,EAAE;AACjC,gBAAA,UAAU,GAAG,OAAO,CAAC,UAAU;;AAC1B,iBAAA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,UAAU,EAAE;gBACrC,UAAU,GAAG,OAAO;;;AAGxB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE;AAChB,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,YAAY,IAAI,OAAO,CAAC,IAAI,EAAE;AACnD,gBAAA,IAAI,GAAG,OAAO,CAAC,IAAI;;iBACd;gBACL,IAAI,GAAG,UAAU;;;AAGrB,QAAA,IAAI,IAAI,KAAK,UAAU,EAAE;;AAEvB,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE;AAChB,gBAAA,IAAI,OAAO,IAAI,MAAM,IAAI,OAAO,EAAE;AAChC,oBAAA,IAAI,GAAG,OAAO,CAAC,IAAI;;qBACd;oBACL,IAAI,GAAG,QAAQ;;;YAGnB,OAAO,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,UAAU,CAAA,KAAA,EAAQ,IAAI,CAAC,IAAI,EAAE,CAAA,CAAE;;aAC5C;;AAEL,YAAA,MAAM,IAAI,GACR,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK;kBACvC,CAAG,EAAA,IAAI,CAAC,UAAU,EAAE,CAAA,EAAA,EAAK,IAAI,CAAC,IAAI,EAAE,CAAE;AACxC,kBAAE,IAAI,CAAC,IAAI,EAAE;YACjB,OAAO,CAAA,CAAA,EAAI,IAAI,CAAA,CAAE;;AAErB,KAAC,CAAC;IACK,KAAK,GAAG,KAAK,EAAU;AAC9B,IAAA,IAA0B,WAAW,GAAA;AACnC,QAAA,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;;uGAhDjC,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,q1BCX1B,sHAMC,EAAA,MAAA,EAAA,CAAA,+cAAA,CAAA,EAAA,CAAA;;2FDKY,aAAa,EAAA,UAAA,EAAA,CAAA;kBAPzB,SAAS;+BACI,SAAS,EAAA,UAAA,EACP,IAAI,EAAA,OAAA,EACP,EAAE,EAAA,QAAA,EAAA,sHAAA,EAAA,MAAA,EAAA,CAAA,+cAAA,CAAA,EAAA;8BAmDa,WAAW,EAAA,CAAA;sBAApC,WAAW;uBAAC,OAAO;;;ME7CT,cAAc,CAAA;AACjB,IAAA,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC;AAE3B,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,CAAC;AACI,IAAA,KAAK;IACH,OAAO,GAAY,KAAK;AACvD,IAAA,GAAG,GAAG,KAAK,CAAC,QAAQ,EAAU;AAC9B,IAAA,GAAG,GAAG,KAAK,CAAS,EAAE,CAAC;IAChC,KAAK,GAAY,KAAK;IAEtB,QAAQ,GAAA;AACN,QAAA,IAAI,sBAAsB,IAAI,MAAM,EAAE;YACpC,IAAI,eAAe,GAAG,IAAI,oBAAoB,CAAC,CAAC,OAAO,EAAE,QAAQ,KAAI;AACnE,gBAAA,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AACxB,oBAAA,IAAI,KAAK,CAAC,cAAc,EAAE;AACxB,wBAAA,IAAI,KAAK,GAAG,IAAI,KAAK,EAAE;AACvB,wBAAA,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;wBACtB,UAAU,CAAC,MAAK;4BACd,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AAC9B,gCAAA,IAAI,CAAC,OAAO,GAAG,IAAI;;yBAEtB,EAAE,GAAG,CAAC;AACP,wBAAA,KAAK,CAAC,OAAO,GAAG,MAAK;AACnB,4BAAA,IAAI,CAAC,KAAK,GAAG,IAAI;AACjB,4BAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACtB,yBAAC;AACD,wBAAA,KAAK,CAAC,MAAM,GAAG,MAAK;AAClB,4BAAA,IAAI,QAAQ,IAAI,KAAK,EAAE;AACrB,gCAAA,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,MAAK;AACvB,oCAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,oCAAA,IAAI,CAAC,KAAK,GAAG,IAAI;AACnB,iCAAC,CAAC;;iCACG;AACL,gCAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,gCAAA,IAAI,CAAC,KAAK,GAAG,IAAI;;AAErB,yBAAC;wBACD,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;;AAEzD,iBAAC,CAAC;AACJ,aAAC,EAAE;AACD,gBAAA,UAAU,EAAE;AACb,aAAA,CAAC;YACF,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;;aAC9C;AACL,YAAA,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC;AACpD,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI;;;AAGrB,IAAA,IAA0B,WAAW,GAAA;QACnC,OAAO;YACL,UAAU;YACV,IAAI,CAAC,KAAK;AACX,SAAA,CAAC,IAAI,CAAC,GAAG,CAAC;;uGAtDF,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,uBAAA,EAAA,YAAA,EAAA,yBAAA,EAAA,cAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECb3B,kIAKC,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDIG,aAAa,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAIJ,cAAc,EAAA,UAAA,EAAA,CAAA;kBAR1B,SAAS;+BACE,UAAU,EAAA,UAAA,EACR,IAAI,EACP,OAAA,EAAA;wBACP;AACH,qBAAA,EAAA,QAAA,EAAA,kIAAA,EAAA;8BAOuC,KAAK,EAAA,CAAA;sBAA1C,WAAW;uBAAC,uBAAuB;gBACI,OAAO,EAAA,CAAA;sBAA9C,WAAW;uBAAC,yBAAyB;gBA6CZ,WAAW,EAAA,CAAA;sBAApC,WAAW;uBAAC,OAAO;;;ME9BT,uBAAuB,CAAA;AAClC,IAAA,IAAI,GAAG,MAAM,CAAC,kBAAkB,CAAC;uGADtB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAvB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EARxB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;AAMT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAPS,iBAAiB,EAAA,CAAA,EAAA,CAAA;;2FAShB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAXnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,iBAAiB,CAAC;AAC5B,oBAAA,QAAQ,EAAE;;;;;;AAMT,EAAA,CAAA;AACF,iBAAA;;MAwFY,sBAAsB,CAAA;AACjC,IAAA,IAAI,GAAG,MAAM,CAAC,eAAe,CAAC;IAErB,YAAY,GAA6B,MAAM,EAAE;AAE1D,IAAA,MAAM,CAAC,KAAa,EAAA;AAClB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;;uGANpB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,EAhFvB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8ET,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EA/ES,YAAY,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,eAAe,0bAAE,aAAa,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAiF5D,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAnFlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,aAAa,CAAC;AACxE,oBAAA,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8ET,EAAA,CAAA;AACF,iBAAA;;MAcY,cAAc,CAAA;AACjB,IAAA,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC;AAC9B,IAAA,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC;AAC1B,IAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;IAE7C,IAAI,CACF,OAAgC,EAChC,OAAwB,EAAA;AAExB,QAAA,MAAM,eAAe,GAA0B,IAAI,aAAa,CAC9D,SAAS,CACV;AACD,QAAA,MAAM,SAAS,GAAuB,eAAe,CAAC,YAAY,EAAE;AACpE,QAAA,MAAM,QAAQ,GAAmB;AAC/B,YAAA,IAAI,EAAE,cAAc;AACpB,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,cAAc,EAAE,IAAI;SACrB;QACD,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC;AAC1C,QAAA,MAAM,IAAI,GAAG;AACX,YAAA,OAAO,EACL,OAAO,OAAO,KAAK;kBACf,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM;AAClC,kBAAE,OAAO;YACb,OAAO;SACR;AACD,QAAA,IAAI,SAA+C;AACnD,QAAA,QAAQ,OAAO,CAAC,IAAI;YAClB;AACA,YAAA,KAAK,cAAc;AACjB,gBAAA,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,uBAAuB,EAAE;oBACvD,IAAI;AACJ,oBAAA,UAAU,EAAE,CAAC,YAAY,EAAE,0BAA0B,CAAC;oBACtD,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAC/C,OAAO,OAAO,KAAK,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO,CACxD;AACD,oBAAA,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,IAAI,QAAQ;AACvD,iBAAA,CAAC;gBACF;AACF,YAAA,KAAK,OAAO;gBACV,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE;AACnD,oBAAA,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,OAAO;oBAC/B,IAAI;AACJ,oBAAA,UAAU,EAAE,CAAC,YAAY,EAAE,mBAAmB,CAAC;AAC/C,oBAAA,SAAS,EAAE,KAAK;AAChB,oBAAA,YAAY,EAAE,IAAI;AACnB,iBAAA,CAAC;gBACF,SAAS,CAAC,iBAAiB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,QAAa,KAAI;AACnE,oBAAA,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC;oBAC9B,SAAS,CAAC,KAAK,EAAE;AACnB,iBAAC,CAAC;gBACF;;AAEJ,QAAA,OAAO,SAAS;;uGArDP,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAd,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cAFb,MAAM,EAAA,CAAA;;2FAEP,cAAc,EAAA,UAAA,EAAA,CAAA;kBAH1B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCpHY,4BAA4B,CAAA;AAC/B,IAAA,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC;AACnB,IAAA,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;IAC1C,4BAA4B,GAAG,KAAK,EAIvC;IACY,KAAK,GAA8B,MAAM,CAAC,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC;IAE7F,QAAQ,GAAA;AACN,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACtC,YAAA,IAAI,sBAAsB,IAAI,MAAM,EAAE;gBACpC,MAAM,eAAe,GAAG,IAAI,oBAAoB,CAAC,CAAC,OAAO,KAAI;AAC3D,oBAAA,OAAO,CAAC,OAAO,CAAC,CAAC,KAAgC,KAAI;wBACnD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC;AACvC,qBAAC,CAAC;AACJ,iBAAC,EAAE,IAAI,CAAC,4BAA4B,EAAE,CAAC;gBACvC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;;iBAC9C;AACL,gBAAA,OAAO,CAAC,KAAK,CAAC,sDAAsD,CAAC;;;;uGApBhE,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAA5B,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,EAAA,4BAAA,EAAA,EAAA,iBAAA,EAAA,8BAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,uBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAJxC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,yBAAyB;AACnC,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;;MCLY,iBAAiB,CAAA;AAC5B,IAAA,IAAI,GAAG,KAAK,CAAkC,eAAe,CAAC;AAC9D,IAAA,OAAO,GAAG,KAAK,CAAU,KAAK,CAAC;AAC/B,IAAA,KAAK,GAAG,KAAK,CAAS,CAAC,CAAC;AAExB,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,CAAC;AACzB,IAAA,IACI,WAAW,GAAA;QACb,OAAO;YACL,aAAa;YACb,IAAI,CAAC,OAAO,EAAE,GAAG,sBAAsB,GAAG,EAAE;YAC5C,IAAI,CAAC,KAAK;AACX,SAAA,CAAC,IAAI,CAAC,GAAG,CAAC;;uGAZF,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECV9B,4eAOM,EAAA,MAAA,EAAA,CAAA,s8CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDDQ,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAIb,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAP7B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,EACX,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,4eAAA,EAAA,MAAA,EAAA,CAAA,s8CAAA,CAAA,EAAA;8BAWrB,WAAW,EAAA,CAAA;sBADd,WAAW;uBAAC,OAAO;;;MEET,eAAe,CAAA;IAC1B,QAAQ,GAAY,KAAK;AACzB,IAAA,UAAU;AACV,IAAA,eAAe,GAAG,CAAC,CAAM,KAAI,GAAI;AACxB,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,CAAC;AACzC,IAAA,KAAK,GAAU;QACb,EAAE,KAAK,EAAE,CAAC,EAAE;QACZ,EAAE,KAAK,EAAE,CAAC,EAAE;QACZ,EAAE,KAAK,EAAE,CAAC,EAAE;QACZ,EAAE,KAAK,EAAE,CAAC,EAAE;QACZ,EAAE,KAAK,EAAE,CAAC;KACX;AACD,IAAA,MAAM;AAEN,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM;;;;IAIpB,IAAa,KAAK,CAAC,KAAU,EAAA;AAC3B,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;;AAEnC,IAAA,gBAAgB,CAAC,EAAoB,EAAA;AACnC,QAAA,IAAI,CAAC,eAAe,GAAG,EAAE;;AAE3B,IAAA,iBAAiB,CAAC,EAAoB,EAAA;;;AAGtC,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;;IAE5B,OAAO,CAAC,KAAa,EAAE,OAAiB,EAAA;QACtC,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;;aAClB;AACL,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK;;;AAGtB,IAAA,WAAW,CAAC,KAAU,EAAA;QACpB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK;;AAEjC,IAAA,UAAU,CAAC,KAAa,EAAA;AACtB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;;uGA3CT,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,EARf,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,eAAe;AAC5B,gBAAA,KAAK,EAAE;AACR;SACF,EChBH,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,iuDAwBc,yDDjBF,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAWX,eAAe,EAAA,UAAA,EAAA,CAAA;kBAd3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,cACT,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,EAGZ,SAAA,EAAA;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAiB,eAAA;AAC5B,4BAAA,KAAK,EAAE;AACR;AACF,qBAAA,EAAA,QAAA,EAAA,iuDAAA,EAAA;8BAqBY,KAAK,EAAA,CAAA;sBAAjB;;;MERU,QAAQ,CAAA;uGAAR,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAR,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,QAAQ,YAjBjB,YAAY;YACZ,eAAe;YACf,aAAa;YACb,cAAc;YACd,iBAAiB;YACjB,eAAe;AACf,YAAA,4BAA4B,aAG5B,eAAe;YACf,aAAa;YACb,cAAc;YACd,iBAAiB;YACjB,eAAe;YACf,4BAA4B,CAAA,EAAA,CAAA;AAGnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,QAAQ,YAjBjB,YAAY;YAIZ,iBAAiB;YACjB,eAAe,CAAA,EAAA,CAAA;;2FAYN,QAAQ,EAAA,UAAA,EAAA,CAAA;kBApBpB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE,EAAE;AAChB,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,eAAe;wBACf,aAAa;wBACb,cAAc;wBACd,iBAAiB;wBACjB,eAAe;wBACf;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,eAAe;wBACf,aAAa;wBACb,cAAc;wBACd,iBAAiB;wBACjB,eAAe;wBACf;AACD;AACF,iBAAA;;;AC5BD;;AAEG;;;;"}
@@ -0,0 +1,17 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class AvatarComponent {
3
+ private colorService;
4
+ color: import("@angular/core").InputSignal<string | undefined>;
5
+ initials: import("@angular/core").Signal<string>;
6
+ label: import("@angular/core").InputSignal<string>;
7
+ loaded: import("@angular/core").WritableSignal<boolean>;
8
+ src: import("@angular/core").InputSignal<string | undefined>;
9
+ get backgroundColor(): string;
10
+ get backgroundImage(): string;
11
+ class: import("@angular/core").InputSignal<string | undefined>;
12
+ get hostClasses(): string;
13
+ constructor();
14
+ getInitials(value: string): string;
15
+ static ɵfac: i0.ɵɵFactoryDeclaration<AvatarComponent, never>;
16
+ static ɵcmp: i0.ɵɵComponentDeclaration<AvatarComponent, "ft-avatar", never, { "color": { "alias": "color"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": true; "isSignal": true; }; "src": { "alias": "src"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
17
+ }
@@ -0,0 +1,18 @@
1
+ import { Chart } from './models/chart';
2
+ import * as i0 from "@angular/core";
3
+ export declare class ChartService {
4
+ private resizeTimeout;
5
+ private charts;
6
+ constructor();
7
+ remove(element: SVGElement): void;
8
+ render(element: SVGElement, items: Chart[]): void;
9
+ private drawAxis;
10
+ private drawCircleChart;
11
+ private drawColumnChart;
12
+ private drawLineChart;
13
+ private drawLimitChart;
14
+ private drawEventsPlaceholder;
15
+ private handleResize;
16
+ static ɵfac: i0.ɵɵFactoryDeclaration<ChartService, never>;
17
+ static ɵprov: i0.ɵɵInjectableDeclaration<ChartService>;
18
+ }
@@ -0,0 +1,14 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class IconComponent {
3
+ private options;
4
+ collection: import("@angular/core").InputSignal<string | undefined>;
5
+ mode: import("@angular/core").InputSignal<string | undefined>;
6
+ name: import("@angular/core").InputSignal<string>;
7
+ path: import("@angular/core").InputSignal<string | undefined>;
8
+ src: import("@angular/core").InputSignal<string | undefined>;
9
+ url: import("@angular/core").Signal<string>;
10
+ class: import("@angular/core").InputSignal<string | undefined>;
11
+ get hostClasses(): string;
12
+ static ɵfac: i0.ɵɵFactoryDeclaration<IconComponent, never>;
13
+ static ɵcmp: i0.ɵɵComponentDeclaration<IconComponent, "ft-icon", never, { "collection": { "alias": "collection"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": true; "isSignal": true; }; "path": { "alias": "path"; "required": false; "isSignal": true; }; "src": { "alias": "src"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
14
+ }
@@ -1,15 +1,14 @@
1
- import { ElementRef } from '@angular/core';
2
1
  import * as i0 from "@angular/core";
3
2
  export declare class ImageComponent {
4
3
  private element;
5
- class: string;
4
+ readonly class: import("@angular/core").InputSignal<string>;
6
5
  error: boolean;
7
6
  loading: boolean;
8
- src: string;
7
+ readonly src: import("@angular/core").InputSignal<string>;
8
+ readonly alt: import("@angular/core").InputSignal<string>;
9
9
  shown: boolean;
10
- constructor(element: ElementRef);
11
10
  ngOnInit(): void;
12
11
  get hostClasses(): string;
13
12
  static ɵfac: i0.ɵɵFactoryDeclaration<ImageComponent, never>;
14
- static ɵcmp: i0.ɵɵComponentDeclaration<ImageComponent, "ft-image", never, { "class": { "alias": "class"; "required": false; }; "src": { "alias": "src"; "required": false; }; }, {}, never, never, true, never>;
13
+ static ɵcmp: i0.ɵɵComponentDeclaration<ImageComponent, "ft-image", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; "src": { "alias": "src"; "required": true; "isSignal": true; }; "alt": { "alias": "alt"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
15
14
  }
@@ -1,14 +1,24 @@
1
+ import { OutputEmitterRef } from '@angular/core';
1
2
  import { Observable } from 'rxjs';
2
- import { MatSnackBar } from '@angular/material/snack-bar';
3
- import { MatDialog } from '@angular/material/dialog';
4
3
  import { MessageOptions } from './models/message-options';
5
4
  import { MessageContent } from './models/message-content';
6
5
  import * as i0 from "@angular/core";
6
+ export declare class MessageContentComponent {
7
+ data: any;
8
+ static ɵfac: i0.ɵɵFactoryDeclaration<MessageContentComponent, never>;
9
+ static ɵcmp: i0.ɵɵComponentDeclaration<MessageContentComponent, "ng-component", never, {}, {}, never, never, true, never>;
10
+ }
11
+ export declare class MessageDialogComponent {
12
+ data: any;
13
+ readonly beforeSelect: OutputEmitterRef<string>;
14
+ select(value: string): void;
15
+ static ɵfac: i0.ɵɵFactoryDeclaration<MessageDialogComponent, never>;
16
+ static ɵcmp: i0.ɵɵComponentDeclaration<MessageDialogComponent, "ng-component", never, {}, { "beforeSelect": "beforeSelect"; }, never, never, true, never>;
17
+ }
7
18
  export declare class MessageService {
8
19
  private snackBar;
9
20
  private dialog;
10
- element: any;
11
- constructor(snackBar: MatSnackBar, dialog: MatDialog);
21
+ private stringService;
12
22
  show(message: string | MessageContent, options?: MessageOptions): Observable<any>;
13
23
  static ɵfac: i0.ɵɵFactoryDeclaration<MessageService, never>;
14
24
  static ɵprov: i0.ɵɵInjectableDeclaration<MessageService>;
@@ -0,0 +1,12 @@
1
+ export interface Chart {
2
+ data: any[];
3
+ type: string;
4
+ field: string;
5
+ categoryField: string;
6
+ label?: string;
7
+ color?: string;
8
+ domain?: any;
9
+ padding?: number;
10
+ strokeWidth?: number;
11
+ click?: (event: MouseEvent, d: any) => void;
12
+ }
@@ -0,0 +1,9 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ export interface UiOptions {
3
+ iconSettings: {
4
+ path: string;
5
+ collection: string;
6
+ mode: 'external' | undefined;
7
+ };
8
+ }
9
+ export declare const UI_OPTIONS: InjectionToken<UiOptions>;
@@ -1,16 +1,15 @@
1
- import { ElementRef, EventEmitter, OnInit } from '@angular/core';
1
+ import { OnInit, OutputEmitterRef } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  export declare class ObserveIntersectingDirective implements OnInit {
4
4
  private element;
5
5
  private readonly platformId;
6
- options: {
7
- root?: any;
8
- rootMargin?: any;
9
- threshold?: any;
10
- };
11
- event: EventEmitter<boolean>;
12
- constructor(element: ElementRef, platformId?: object);
6
+ ftObserveIntersectingOptions: import("@angular/core").InputSignal<{
7
+ root?: HTMLElement;
8
+ rootMargin?: string;
9
+ threshold?: number | number[];
10
+ } | undefined>;
11
+ readonly event: OutputEmitterRef<boolean>;
13
12
  ngOnInit(): void;
14
13
  static ɵfac: i0.ɵɵFactoryDeclaration<ObserveIntersectingDirective, never>;
15
- static ɵdir: i0.ɵɵDirectiveDeclaration<ObserveIntersectingDirective, "[ftObserveIntersecting]", never, { "options": { "alias": "ftObserveIntersectingOptions"; "required": false; }; }, { "event": "ftObserveIntersecting"; }, never, never, true, never>;
14
+ static ɵdir: i0.ɵɵDirectiveDeclaration<ObserveIntersectingDirective, "[ftObserveIntersecting]", never, { "ftObserveIntersectingOptions": { "alias": "ftObserveIntersectingOptions"; "required": false; "isSignal": true; }; }, { "event": "ftObserveIntersecting"; }, never, never, true, never>;
16
15
  }
@@ -0,0 +1,10 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class ProgressComponent {
3
+ mode: import("@angular/core").InputSignal<"determinate" | "indeterminate">;
4
+ overlay: import("@angular/core").InputSignal<boolean>;
5
+ value: import("@angular/core").InputSignal<number>;
6
+ class: import("@angular/core").InputSignal<string>;
7
+ get hostClasses(): string;
8
+ static ɵfac: i0.ɵɵFactoryDeclaration<ProgressComponent, never>;
9
+ static ɵcmp: i0.ɵɵComponentDeclaration<ProgressComponent, "ft-progress", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "overlay": { "alias": "overlay"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
10
+ }
@@ -4,11 +4,9 @@ export declare class RatingComponent implements ControlValueAccessor {
4
4
  disabled: boolean;
5
5
  hoverValue: number;
6
6
  propagateChange: (_: any) => void;
7
- readOnly: boolean;
7
+ readonly readOnly: import("@angular/core").InputSignal<boolean>;
8
8
  stars: any[];
9
9
  _value: number;
10
- constructor();
11
- ngOnInit(): void;
12
10
  get value(): any;
13
11
  set value(value: any);
14
12
  registerOnChange(fn: (_: any) => void): void;
@@ -18,5 +16,5 @@ export declare class RatingComponent implements ControlValueAccessor {
18
16
  updateValue(event: any): void;
19
17
  writeValue(value: string): void;
20
18
  static ɵfac: i0.ɵɵFactoryDeclaration<RatingComponent, never>;
21
- static ɵcmp: i0.ɵɵComponentDeclaration<RatingComponent, "ft-rating", never, { "readOnly": { "alias": "readOnly"; "required": false; }; "value": { "alias": "value"; "required": false; }; }, {}, never, never, true, never>;
19
+ static ɵcmp: i0.ɵɵComponentDeclaration<RatingComponent, "ft-rating", never, { "readOnly": { "alias": "readOnly"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; }; }, {}, never, never, true, never>;
22
20
  }
@@ -0,0 +1,13 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "@angular/common";
3
+ import * as i2 from "./avatar/avatar.component";
4
+ import * as i3 from "./icon/icon.component";
5
+ import * as i4 from "./image/image.component";
6
+ import * as i5 from "./progress/progress.component";
7
+ import * as i6 from "./rating/rating.component";
8
+ import * as i7 from "./observe-intersecting.directive";
9
+ export declare class UiModule {
10
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiModule, never>;
11
+ static ɵmod: i0.ɵɵNgModuleDeclaration<UiModule, never, [typeof i1.CommonModule, typeof i2.AvatarComponent, typeof i3.IconComponent, typeof i4.ImageComponent, typeof i5.ProgressComponent, typeof i6.RatingComponent, typeof i7.ObserveIntersectingDirective], [typeof i2.AvatarComponent, typeof i3.IconComponent, typeof i4.ImageComponent, typeof i5.ProgressComponent, typeof i6.RatingComponent, typeof i7.ObserveIntersectingDirective]>;
12
+ static ɵinj: i0.ɵɵInjectorDeclaration<UiModule>;
13
+ }
@@ -0,0 +1,8 @@
1
+ import { UiOptions } from './models/ui-options';
2
+ import * as i0 from "@angular/core";
3
+ export declare class UiService {
4
+ private options;
5
+ get(): UiOptions;
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<UiService, never>;
7
+ static ɵprov: i0.ɵɵInjectableDeclaration<UiService>;
8
+ }
package/package.json CHANGED
@@ -1,13 +1,15 @@
1
1
  {
2
2
  "name": "@factor_ec/ui",
3
- "version": "4.0.11",
3
+ "version": "5.0.1",
4
4
  "license": "CC-BY-NC-ND-4.0",
5
5
  "author": "Factor",
6
6
  "peerDependencies": {
7
- "@angular/common": ">=15.0.0",
8
- "@angular/core": ">=15.0.0",
9
- "@angular/material": ">=15.0.0",
10
- "@factor_ec/utils": ">=3.0.0"
7
+ "@angular/common": "^19.0.0",
8
+ "@angular/core": "^19.0.0",
9
+ "@angular/localize": "^19.0.0",
10
+ "@angular/material": "^19.0.4",
11
+ "@factor_ec/utils": ">=5.0.0",
12
+ "d3": "^7.9.0"
11
13
  },
12
14
  "dependencies": {
13
15
  "tslib": "^2.3.0"
@@ -21,8 +23,6 @@
21
23
  },
22
24
  ".": {
23
25
  "types": "./index.d.ts",
24
- "esm2022": "./esm2022/factor_ec-ui.mjs",
25
- "esm": "./esm2022/factor_ec-ui.mjs",
26
26
  "default": "./fesm2022/factor_ec-ui.mjs"
27
27
  }
28
28
  }
package/public-api.d.ts CHANGED
@@ -1,9 +1,13 @@
1
- export * from './lib/io/avatar/avatar.component';
2
- export * from './lib/io/icon/icon.component';
3
- export * from './lib/io/image/image.component';
4
- export * from './lib/io/progress/progress.component';
5
- export * from './lib/io/rating/rating.component';
6
- export * from './lib/nav/timeline/timeline.component';
7
- export * from './lib/observe-intersecting.directive';
1
+ export * from './lib/avatar/avatar.component';
2
+ export * from './lib/chart.service';
3
+ export * from './lib/icon/icon.component';
4
+ export * from './lib/image/image.component';
8
5
  export * from './lib/message.service';
9
- export * from './lib/progress.service';
6
+ export * from './lib/models/chart';
7
+ export * from './lib/models/message-content';
8
+ export * from './lib/models/message-options';
9
+ export * from './lib/models/ui-options';
10
+ export * from './lib/observe-intersecting.directive';
11
+ export * from './lib/progress/progress.component';
12
+ export * from './lib/rating/rating.component';
13
+ export * from './lib/ui.module';
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public-api';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yX2VjLXVpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvdWkvc3JjL2ZhY3Rvcl9lYy11aS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19