{"version":3,"file":"bravobit-bb-foundation-elements.mjs","sources":["../../../projects/bb-foundation/elements/src/lib/directives/form-submit.directive.ts","../../../projects/bb-foundation/elements/src/lib/directives/form-submitter.directive.ts","../../../projects/bb-foundation/elements/src/lib/elements.interfaces.ts","../../../projects/bb-foundation/elements/src/lib/directives/extra-error-controls.directive.ts","../../../projects/bb-foundation/elements/src/lib/form-error/form-error.component.ts","../../../projects/bb-foundation/elements/src/lib/form-error/form-error.component.html","../../../projects/bb-foundation/elements/src/lib/form-control/form-control.component.ts","../../../projects/bb-foundation/elements/src/lib/form-control/form-control.component.html","../../../projects/bb-foundation/elements/src/lib/directives/input.directive.ts","../../../projects/bb-foundation/elements/src/lib/directives/image-upload.directive.ts","../../../projects/bb-foundation/elements/src/lib/directives/file-drop.directive.ts","../../../projects/bb-foundation/elements/src/lib/color-slider/color-slider.component.ts","../../../projects/bb-foundation/elements/src/lib/color-slider/color-slider.component.html","../../../projects/bb-foundation/elements/src/lib/color-picker/color-picker.component.ts","../../../projects/bb-foundation/elements/src/lib/color-picker/color-picker.component.html","../../../projects/bb-foundation/elements/src/lib/directives/color-picker.directive.ts","../../../projects/bb-foundation/elements/src/lib/pipes/file-size.pipe.ts","../../../projects/bb-foundation/elements/src/lib/pipes/file-image.pipe.ts","../../../projects/bb-foundation/elements/src/lib/pipes/file-data-url.pipe.ts","../../../projects/bb-foundation/elements/src/lib/pipes/relative-time.pipe.ts","../../../projects/bb-foundation/elements/src/lib/pipes/date.pipe.ts","../../../projects/bb-foundation/elements/src/lib/spinner/spinner.component.ts","../../../projects/bb-foundation/elements/src/lib/spinner/spinner.component.html","../../../projects/bb-foundation/elements/src/lib/button/button.component.ts","../../../projects/bb-foundation/elements/src/lib/button/button.component.html","../../../projects/bb-foundation/elements/src/lib/icon/icon.component.ts","../../../projects/bb-foundation/elements/src/lib/icon/icon.component.html","../../../projects/bb-foundation/elements/src/lib/form-group/form-group.component.ts","../../../projects/bb-foundation/elements/src/lib/form-group/form-group.component.html","../../../projects/bb-foundation/elements/src/lib/checkbox/checkbox.component.ts","../../../projects/bb-foundation/elements/src/lib/checkbox/checkbox.component.html","../../../projects/bb-foundation/elements/src/lib/checkbox-group/checkbox-group.component.ts","../../../projects/bb-foundation/elements/src/lib/checkbox-group/checkbox-group.component.html","../../../projects/bb-foundation/elements/src/lib/radio-group/radio-group.component.ts","../../../projects/bb-foundation/elements/src/lib/radio-group/radio-group.component.html","../../../projects/bb-foundation/elements/src/lib/radio-button/radio-button.component.ts","../../../projects/bb-foundation/elements/src/lib/radio-button/radio-button.component.html","../../../projects/bb-foundation/elements/src/lib/avatar/avatar.component.ts","../../../projects/bb-foundation/elements/src/lib/avatar/avatar.component.html","../../../projects/bb-foundation/elements/src/lib/elements.inject.ts","../../../projects/bb-foundation/elements/src/lib/multi-file-control/multi-file-control.component.ts","../../../projects/bb-foundation/elements/src/lib/multi-file-control/multi-file-control.component.html","../../../projects/bb-foundation/elements/src/lib/file-picker/file-picker.component.ts","../../../projects/bb-foundation/elements/src/lib/file-picker/file-picker.component.html","../../../projects/bb-foundation/elements/src/lib/image-picker/image-picker.component.ts","../../../projects/bb-foundation/elements/src/lib/image-picker/image-picker.component.html","../../../projects/bb-foundation/elements/src/lib/date-picker/date-picker.component.ts","../../../projects/bb-foundation/elements/src/lib/date-picker/date-picker.component.html","../../../projects/bb-foundation/elements/src/lib/image-control/image-control.component.ts","../../../projects/bb-foundation/elements/src/lib/image-control/image-control.component.html","../../../projects/bb-foundation/elements/src/lib/pincode-control/pincode-control.component.ts","../../../projects/bb-foundation/elements/src/lib/pincode-control/pincode-control.component.html","../../../projects/bb-foundation/elements/src/lib/elements.config.ts","../../../projects/bb-foundation/elements/src/lib/elements.module.ts","../../../projects/bb-foundation/elements/src/bravobit-bb-foundation-elements.ts"],"sourcesContent":["import {distinctUntilChanged, map, shareReplay, startWith} from 'rxjs/operators';\nimport {Directive, ElementRef, OnInit, Optional, Self} from '@angular/core';\nimport {EMPTY, fromEvent, merge, Observable} from 'rxjs';\nimport {FormGroupDirective} from '@angular/forms';\n\n@Directive({\n    selector: 'form',\n    exportAs: 'bbForm'\n})\nexport class BbFormSubmit implements OnInit {\n\n    submitStatus$: Observable<boolean>;\n\n    constructor(private _host: ElementRef<HTMLFormElement>,\n                @Optional() @Self() private _formDirective: FormGroupDirective) {\n    }\n\n    ngOnInit() {\n        // Submit changes.\n        const regularSubmitChanges$ = fromEvent(this.nativeElement, 'submit').pipe(\n            map(() => true)\n        );\n\n        // Reactive form submit changes.\n        const reactiveSubmitChanges$ = this.reactiveSubmitChanges();\n\n        // Reset changes.\n        const resetChanges$ = fromEvent(this.nativeElement, 'reset').pipe(\n            map(() => false)\n        );\n\n        // Listen to the submit status.\n        this.submitStatus$ = merge(regularSubmitChanges$, reactiveSubmitChanges$, resetChanges$).pipe(\n            startWith(false),\n            distinctUntilChanged(),\n            shareReplay({refCount: true, bufferSize: 1})\n        );\n    }\n\n    submit() {\n        this._formDirective?.ngSubmit?.emit();\n    }\n\n    reset() {\n        return this.nativeElement?.reset();\n    }\n\n    private get nativeElement() {\n        return this._host?.nativeElement;\n    }\n\n    private reactiveSubmitChanges() {\n        if (!this._formDirective) {\n            return EMPTY;\n        }\n\n        return this._formDirective.ngSubmit.pipe(\n            map(() => true)\n        );\n    }\n\n}\n","import {Directive} from '@angular/core';\nimport {BehaviorSubject} from 'rxjs';\n\n@Directive({\n    selector: '[bbFormSubmitter]',\n    exportAs: 'bbFormSubmitter'\n})\nexport class BbFormSubmitter {\n\n    // State.\n    submitted$ = new BehaviorSubject<boolean>(false);\n\n    submit() {\n        this.submitted$.next(true);\n    }\n\n    reset() {\n        this.submitted$.next(false);\n    }\n\n}\n","import {InjectionToken} from '@angular/core';\n\nexport const ELEMENTS_CONFIG = new InjectionToken<ElementsConfig>('elements config');\nexport const ELEMENTS_ICONS: InjectionToken<ElementsIcon[]> = new InjectionToken('elements_icons');\nexport const ELEMENTS_ERRORS: InjectionToken<ElementsError[]> = new InjectionToken('elements_errors');\n\nexport type ElementsIcon = ElementsIconFont | ElementsIconImage | ElementsIconUrl | ElementsIconUnknown;\nexport type ElementsError = { [error: string]: (data?: any) => string | { token: string, data?: any }; };\n\nexport interface ElementsIconFont {\n    namespace: string;\n    className: string;\n    uses: 'content' | 'data-attribute';\n    type: 'font';\n}\n\nexport interface ElementsIconImage {\n    namespace: string;\n    name: string;\n    src: string;\n    type: 'image';\n}\n\nexport interface ElementsIconUrl {\n    namespace: string;\n    url: string;\n    type: 'url';\n}\n\nexport interface ElementsIconUnknown {\n    type: 'unknown';\n}\n\nexport interface ElementsConfig {\n    useMaterialDesignIcons?: boolean;\n    iconFonts?: ElementsIcon[];\n    errors?: ElementsError;\n    defaultDisplayUnit?: ElementsDisplayUnit;\n    allowedFileTypes?: string[];\n    maxFileSize?: number;\n    maxTotalFileSize?: number;\n    avatarColorAlgorithm?: ElementsAvatarColorAlgorithm;\n}\n\nexport type ElementsDisplayUnit = 'rem' | 'px';\n\nexport type ElementsAvatarColorAlgorithm = (value: string) => { color: string, background: string } | null;\n","import {BehaviorSubject, combineLatest, Subscription} from 'rxjs';\nimport {AbstractControl, ValidationErrors} from '@angular/forms';\nimport {Directive, Input, OnDestroy} from '@angular/core';\nimport {distinctUntilChanged, map} from 'rxjs/operators';\n\n@Directive({\n    selector: '[bbExtraErrorControls]'\n})\nexport class BbExtraErrorControls implements OnDestroy {\n\n    // State.\n    readonly changes = new BehaviorSubject<ValidationErrors | null>(null);\n\n    // Subscriptions.\n    private _subscription: Subscription | null = null;\n\n    @Input({alias: 'bbExtraErrorControls'})\n    set extraControls(controls: AbstractControl[]) {\n        this.handle(controls);\n    }\n\n    ngOnDestroy() {\n        this._subscription?.unsubscribe();\n    }\n\n    private handle(controls: AbstractControl[]) {\n        this._subscription?.unsubscribe();\n\n        if (controls.length <= 0) {\n            return;\n        }\n\n        const validationErrors$ = controls.map(control => {\n            return control.valueChanges.pipe(\n                map(_ => control?.errors)\n            );\n        });\n\n        const errors$ = combineLatest(validationErrors$).pipe(\n            map(validationErrors => validationErrors.find(error => !!error)),\n            distinctUntilChanged()\n        );\n\n        this._subscription = errors$\n            .subscribe(errors => this.changes.next(errors ?? null));\n    }\n\n}\n","import {ChangeDetectionStrategy, Component, EventEmitter, Inject, Input, OnInit, Optional, Output, ViewEncapsulation} from '@angular/core';\nimport {BbExtraErrorControls} from '../directives/extra-error-controls.directive';\nimport {delay, distinctUntilChanged, map, startWith, tap} from 'rxjs/operators';\nimport {BbFormSubmitter} from '../directives/form-submitter.directive';\nimport {ELEMENTS_ERRORS, ElementsError} from '../elements.interfaces';\nimport {BbFormSubmit} from '../directives/form-submit.directive';\nimport {BbLocalize} from '@bravobit/bb-foundation/localize';\nimport {NgControl, ValidationErrors} from '@angular/forms';\nimport {combineLatest, Observable, of} from 'rxjs';\nimport {AsyncPipe} from '@angular/common';\n\n@Component({\n    selector: 'bb-form-error',\n    templateUrl: './form-error.component.html',\n    styleUrls: ['./form-error.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    host: {'class': 'bb-form-error'},\n    imports: [AsyncPipe, BbLocalize]\n})\nexport class BbFormError implements OnInit {\n\n    // Readonly data.\n    readonly errorsMap: ElementsError;\n\n    // Inputs.\n    @Input() control: NgControl | null = null;\n\n    // Outputs.\n    @Output() errorChange = new EventEmitter<{ token: string, data?: any } | null>();\n\n    // State.\n    error$: Observable<{ token: string, data?: any } | null>;\n\n    constructor(@Optional() private _form?: BbFormSubmit,\n                @Optional() private _ngControl?: NgControl,\n                @Optional() private _formSubmitter?: BbFormSubmitter,\n                @Optional() private _extraErrorControls?: BbExtraErrorControls,\n                @Optional() @Inject(ELEMENTS_ERRORS) private _errors?: ElementsError[]) {\n        this.errorsMap = this._errors.reduce((previous, current) => ({...previous, ...current}), {});\n    }\n\n    ngOnInit() {\n        this.setControl();\n        this.setError();\n    }\n\n    private setControl() {\n        if (!this.control) {\n            this.control = this._ngControl;\n        }\n    }\n\n    private setError() {\n        const submitStatus$ = this.submitStatusChanges();\n        const errorChanges$ = this.getErrors().pipe(\n            map(errors => this.formatError(errors)),\n            distinctUntilChanged(),\n            map(error => typeof error === 'string' ? {token: error} : error)\n        );\n\n        this.error$ = combineLatest([submitStatus$, errorChanges$]).pipe(\n            map(([submitted, error]) => submitted ? error : null),\n            tap(value => this.errorChange.emit(value))\n        );\n    }\n\n    private formatError(errors?: ValidationErrors) {\n        const [errorName] = Object.keys(errors ?? {});\n        const error = errors?.[errorName];\n        if (!error) {\n            return null;\n        }\n\n        const errorFunction = this.errorsMap?.[errorName] ?? this.errorsMap?.['unknown'];\n        if (!errorFunction) {\n            return null;\n        }\n\n        return errorFunction(error);\n    }\n\n    private submitStatusChanges() {\n        const native$ = this.getNativeFormSubmit();\n        const manual$ = this.getManualFormSubmit();\n        return combineLatest([native$, manual$]).pipe(\n            map(([native, manual]) => native || manual),\n            distinctUntilChanged()\n        );\n    }\n\n    private getNativeFormSubmit() {\n        if (!this._form) {\n            return of(true);\n        }\n\n        return this._form.submitStatus$;\n    }\n\n    private getManualFormSubmit() {\n        if (!this._formSubmitter) {\n            return of(false);\n        }\n\n        return this._formSubmitter.submitted$.pipe(\n            distinctUntilChanged()\n        );\n    }\n\n    private getErrors() {\n        const error$ = (this.control?.statusChanges ?? of(null)).pipe(\n            startWith(this.control?.status),\n            map(_ => this.control?.errors ?? null),\n            delay(0)\n        );\n\n        const extraError$ = this._extraErrorControls?.changes?.asObservable() ?? of(null);\n\n        return combineLatest([error$, extraError$]).pipe(\n            map(([error, extraError]) => error ?? extraError ?? null),\n            distinctUntilChanged()\n        );\n    }\n\n}\n","@if (error$ | async; as error) {\n    @if (error?.token | bbLocalize:{optional: true, data: error?.data}; as message) {\n        <p class=\"bb-form-error-message\">{{ message }}</p>\n    }\n}\n","import {booleanAttribute, ChangeDetectionStrategy, Component, ContentChild, Input, TemplateRef, ViewEncapsulation} from '@angular/core';\nimport {BbFormError} from '../form-error/form-error.component';\nimport {BbTemplate} from '@bravobit/bb-foundation/utils';\nimport {NgControl} from '@angular/forms';\n\nlet nextUniqueId = 0;\n\n@Component({\n    selector: 'bb-form-control',\n    templateUrl: './form-control.component.html',\n    styleUrls: ['./form-control.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'bb-form-control',\n        '[class.grouped]': 'grouped',\n        '[class.error]': 'error'\n    },\n    imports: [BbTemplate, BbFormError]\n})\nexport class BbFormControl {\n\n    // Readonly data.\n    readonly labelId: string = `bb-form-control-${nextUniqueId++}`;\n\n    // Views.\n    @ContentChild(NgControl) ngControl: NgControl;\n\n    // Inputs.\n    @Input() label: string | TemplateRef<any> | null = null;\n    @Input() hint: string | TemplateRef<any> | null = null;\n    @Input({transform: booleanAttribute}) grouped: boolean = false;\n    @Input({transform: booleanAttribute}) hideErrors: boolean = false;\n\n    // State.\n    error: boolean = false;\n\n    onErrorChange(error: { token: string, data?: any } | null) {\n        this.error = !!error;\n    }\n\n}\n","<!-- Label of the form control. -->\n@if (label; as labelContent) {\n    <label [attr.for]=\"labelId\"\n           class=\"bb-form-control-label\">\n        <ng-template [bbTemplate]=\"labelContent\">{{ labelContent }}</ng-template>\n    </label>\n}\n\n<!-- The input with the addons. -->\n<div class=\"bb-form-control-container\">\n    <ng-content select=\"[bbPrefix]\"></ng-content>\n    <ng-content select=\"[bbInput]\"></ng-content>\n    <ng-content select=\"[bbSuffix]\"></ng-content>\n</div>\n\n<!-- The error component. -->\n@if (!hideErrors) {\n    <bb-form-error [control]=\"ngControl\"\n                   (errorChange)=\"onErrorChange($event)\">\n    </bb-form-error>\n}\n\n<!-- The form control hint. -->\n@if (hint; as hintContent) {\n    <p class=\"bb-form-control-hint\">\n        <ng-template [bbTemplate]=\"hintContent\">{{ hintContent }}</ng-template>\n    </p>\n}\n","import {booleanAttribute, Directive, ElementRef, Host, HostBinding, Input, Optional} from '@angular/core';\nimport {BbFormControl} from '../form-control/form-control.component';\nimport {Validators} from '@angular/forms';\n\n@Directive({\n    selector: 'input[bbInput],textarea[bbInput],select[bbInput]'\n})\nexport class BbInput {\n\n    constructor(private _elementRef: ElementRef,\n                @Optional() @Host() private _formControl: BbFormControl) {\n    }\n\n    focus() {\n        return this._elementRef?.nativeElement?.focus();\n    }\n\n    @HostBinding('attr.id')\n    get id() {\n        return this._formControl?.labelId ?? null;\n    }\n\n    @Input({transform: booleanAttribute})\n    @HostBinding('attr.required')\n    get required() {\n        const hasValidator = this._formControl?.ngControl?.control?.hasValidator(Validators.required);\n        return hasValidator || this._required === true ? true : null;\n    }\n\n    set required(value: boolean) {\n        this._required = value;\n    }\n\n    private _required: boolean = false;\n\n}\n","import {Directive, EventEmitter, HostListener, inject, Input, numberAttribute, Output, Renderer2} from '@angular/core';\nimport {Platform} from '@angular/cdk/platform';\nimport {Files} from '@bravobit/bb-foundation';\n\n@Directive({\n    selector: 'button[bbImageUpload]'\n})\nexport class BbImageUpload {\n\n    // Dependencies.\n    private readonly _files: Files = inject(Files);\n    private readonly _platform: Platform = inject(Platform);\n    private readonly _renderer: Renderer2 = inject(Renderer2);\n\n    // Inputs.\n    @Input({alias: 'bbImageUploadWidth', transform: numberAttribute}) width: number | null = null;\n    @Input({alias: 'bbImageUploadHeight', transform: numberAttribute}) height: number | null = null;\n    @Input({alias: 'bbImageUploadMode'}) mode: 'aspect-fit' | 'aspect-fill' = 'aspect-fit';\n    @Input({alias: 'bbImageUploadType'}) type: 'png' | 'jpg' = 'png';\n\n    // Outputs.\n    @Output() onDataUri = new EventEmitter<string>();\n    @Output() onFile = new EventEmitter<File>();\n\n    @HostListener('click')\n    async onClick() {\n        if (!this._platform.isBrowser) {\n            return;\n        }\n\n        const originalFile = await this.openFilePicker();\n        const dataUri = await this.toDataUri(originalFile);\n        const image = await this.toImage(dataUri);\n        const scaledDataUri = this.scaleImage(image);\n        this.onDataUri.emit(scaledDataUri);\n\n        if (this.onFile?.observed) {\n            const name = this.getFileName();\n            const file = this._files.fromDataUri(scaledDataUri, name);\n            this.onFile.emit(file);\n        }\n    }\n\n    private openFilePicker() {\n        return new Promise<File>(resolve => {\n            const input = this._renderer.createElement('input');\n            this._renderer.setProperty(input, 'type', 'file');\n            this._renderer.setProperty(input, 'accept', 'image/png,image/jpeg');\n            const handler = this._renderer.listen(input, 'change', event => {\n                handler();\n                const files = event?.target?.files ?? [];\n                const file = files?.[0] ?? null;\n                return resolve(file);\n            });\n            input?.click?.();\n        });\n    }\n\n    private async toDataUri(file: File) {\n        return new Promise<string>((resolve, reject) => {\n            const reader = new FileReader();\n            reader.onerror = () => reject('error file read');\n            reader.onabort = () => reject('abort file read');\n            reader.onload = () => resolve(reader?.result as string);\n            reader.readAsDataURL(file);\n        });\n    }\n\n    private toImage(src: string) {\n        return new Promise<HTMLImageElement>((resolve, reject) => {\n            const image = new Image();\n            image.src = src;\n            image.onload = () => resolve(image);\n            image.onerror = error => reject(error);\n        });\n    }\n\n    private scaleImage(image: HTMLImageElement) {\n        const imageWidth = image?.width ?? 0;\n        const imageHeight = image?.height ?? 0;\n\n        const canvas: HTMLCanvasElement = this._renderer.createElement('canvas');\n        this._renderer.setProperty(canvas, 'width', this.width ?? imageWidth);\n        this._renderer.setProperty(canvas, 'height', this.height ?? imageHeight);\n\n        const context = canvas.getContext('2d');\n\n        const scaleX = canvas.width / imageWidth;\n        const scaleY = canvas.height / imageHeight;\n        const scale = this.getScaleByMode(scaleX, scaleY);\n\n        const scaledWidth = imageWidth * scale;\n        const scaledHeight = imageHeight * scale;\n        const offsetX = (canvas.width - scaledWidth) / 2;\n        const offsetY = (canvas.height - scaledHeight) / 2;\n\n        context.drawImage(image, 0, 0, imageWidth, imageHeight, offsetX, offsetY, scaledWidth, scaledHeight);\n\n        const type = this.getExportType();\n        return canvas.toDataURL(type);\n    }\n\n    private getExportType() {\n        switch (this.type) {\n            case 'jpg':\n                return 'image/jpeg';\n            case 'png':\n            default:\n                return 'image/png';\n        }\n    }\n\n    private getScaleByMode(x: number, y: number) {\n        switch (this.mode) {\n            case 'aspect-fill':\n                return Math.max(x, y);\n            case 'aspect-fit':\n            default:\n                return Math.min(x, y);\n        }\n    }\n\n    private getFileName() {\n        switch (this.type) {\n            case 'jpg':\n                return 'image.jpg';\n            case 'png':\n                return 'image.png';\n            default:\n                return 'image';\n        }\n    }\n\n}\n","import {booleanAttribute, Directive, EventEmitter, HostBinding, HostListener, Input, Output} from '@angular/core';\n\n@Directive({\n    selector: '[bbFileDrop]'\n})\nexport class BbFileDrop {\n\n    // Inputs.\n    @Input({alias: 'bbFileDropDisabled', transform: booleanAttribute}) disabled: boolean = false;\n\n    // Outputs.\n    @Output('bbFileDrop') onFileDropped = new EventEmitter<File[]>();\n\n    // State.\n    @HostBinding('class.is-hovered') hovered: boolean = false;\n\n    @HostListener('dragover', ['$event', 'true'])\n    @HostListener('dragleave', ['$event', 'false'])\n    onDrag(event: Event, isHovered: boolean) {\n        if (this.disabled) {\n            return;\n        }\n\n        event.preventDefault();\n        event.stopPropagation();\n        this.setHovered(isHovered);\n    }\n\n    @HostListener('drop', ['$event'])\n    onDrop(event: Event) {\n        if (this.disabled) {\n            return;\n        }\n\n        event.preventDefault();\n        event.stopPropagation();\n        this.setHovered(false);\n\n        const files: File[] = Array.from(event['dataTransfer'].files);\n        if (files?.length <= 0) {\n            return;\n        }\n\n        this.onFileDropped.emit(files);\n    }\n\n    private setHovered(value: boolean) {\n        this.hovered = value;\n    }\n\n}\n","import {ChangeDetectionStrategy, Component, ElementRef, EventEmitter, inject, Input, numberAttribute, OnDestroy, OnInit, Output, ViewEncapsulation, DOCUMENT} from '@angular/core';\nimport {map, shareReplay, startWith, switchMap, tap} from 'rxjs/operators';\nimport {fromEvent, Subscription, takeUntil} from 'rxjs';\nimport {clamp} from '@bravobit/bb-foundation';\n\n@Component({\n    selector: 'bb-color-slider',\n    templateUrl: './color-slider.component.html',\n    styleUrls: ['./color-slider.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    host: {'class': 'bb-color-slider'}\n})\nexport class BbColorSlider implements OnInit, OnDestroy {\n\n    // Dependencies.\n    private readonly _elementRef: ElementRef = inject(ElementRef);\n    private readonly _document: Document = inject(DOCUMENT);\n\n    // Inputs.\n    @Input({transform: numberAttribute}) xOffset: number = 0;\n    @Input({transform: numberAttribute}) yOffset: number = 0;\n    @Input({transform: numberAttribute}) size: number = 1;\n\n    // Outputs.\n    @Output() xOffsetChange = new EventEmitter<number>();\n    @Output() yOffsetChange = new EventEmitter<number>();\n\n    // Subscriptions.\n    private _subscription = new Subscription();\n\n    get x() {\n        return clamp(this.xOffset, 0, 1);\n    }\n\n    get y() {\n        return clamp(this.yOffset, 0, 1);\n    }\n\n    ngOnInit() {\n        this.setOffsets();\n    }\n\n    ngOnDestroy() {\n        this._subscription?.unsubscribe();\n    }\n\n    private updateValue(value: { x?: number, y?: number }) {\n        this.xOffset = value?.x;\n        this.yOffset = value?.y;\n        this.xOffsetChange.emit(this.xOffset);\n        this.yOffsetChange.emit(this.yOffset);\n    }\n\n    private setOffsets() {\n        const element = this._elementRef?.nativeElement ?? null;\n        const offsets$ = fromEvent<PointerEvent>(element, 'pointerdown').pipe(\n            switchMap(pointerDownEvent => {\n                const rect = element.getBoundingClientRect();\n\n                return fromEvent<PointerEvent>(this._document, 'pointermove').pipe(\n                    map(pointerMoveEvent => this.calculate(pointerMoveEvent, rect)),\n                    startWith(this.calculate(pointerDownEvent, rect)),\n                    takeUntil(fromEvent<PointerEvent>(this._document, 'pointerup'))\n                );\n            }),\n            tap(value => this.updateValue(value)),\n            shareReplay({bufferSize: 1, refCount: true})\n        );\n\n        const subscription = offsets$.subscribe();\n        this._subscription.add(subscription);\n    }\n\n    private calculate(event: PointerEvent, rect: DOMRect) {\n        const x = clamp(event.clientX - rect.left, 0, rect.width);\n        const y = clamp(event.clientY - rect.top, 0, rect.height);\n        return {\n            x: x / rect.width,\n            y: y / rect.height\n        };\n    }\n\n}\n","<div\n    [style.left]=\"'clamp(calc(0% + ' + (size / 2) + 'rem), ' + (x * 100) + '%, calc(100% - ' + (size / 2) + 'rem))'\"\n    [style.top]=\"'clamp(calc(0% + ' + (size / 2) + 'rem), ' + (y * 100) + '%, calc(100% - ' + (size / 2) + 'rem))'\"\n    [style.width.rem]=\"size\"\n    [style.height.rem]=\"size\"\n    class=\"bb-color-slider-control\"></div>\n","import {booleanAttribute, ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation} from '@angular/core';\nimport {BbColorSlider} from '../color-slider/color-slider.component';\nimport {clamp, hexToHsv, hsvToHex} from '@bravobit/bb-foundation';\n\n@Component({\n    selector: 'bb-color-picker',\n    templateUrl: './color-picker.component.html',\n    styleUrls: ['./color-picker.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    host: {'class': 'bb-color-picker'},\n    imports: [BbColorSlider]\n})\nexport class BbColorPicker {\n\n    // Inputs.\n    @Input({transform: booleanAttribute}) showAlpha: boolean = false;\n\n    @Input() set color(value: string) {\n        if (this._color === value) {\n            return;\n        }\n        this._color = value;\n        this.setUIVariables();\n    }\n\n    get color() {\n        return this._color;\n    }\n\n    // Outputs.\n    @Output() colorChange = new EventEmitter<string>();\n\n    // UI variables.\n    hueOffset: number = 0;\n    saturationOffset: number = 0;\n    valueOffset: number = 0;\n    opacityOffset: number = 1;\n\n    // State.\n    private _color: string | null = null;\n\n    setColor() {\n        try {\n            const hue = this.hueOffset * 360;\n            const saturation = clamp(this.saturationOffset * 100, 0, 100);\n            const value = clamp((1 - this.valueOffset) * 100, 0, 100);\n            const opacity = this.showAlpha ? clamp(this.opacityOffset, 0, 1) : 1;\n            const newColor = hsvToHex(hue, saturation, value, opacity);\n            if (newColor === this._color) {\n                return;\n            }\n            this._color = newColor;\n            this.colorChange.emit(this._color);\n        } catch {\n            // do nothing.\n        }\n    }\n\n    private setUIVariables() {\n        if (this._color === null || this._color === undefined) {\n            return;\n        }\n\n        try {\n            const {hue, saturation, value, alpha} = hexToHsv(this._color);\n            this.hueOffset = hue / 360;\n            this.saturationOffset = saturation / 100;\n            this.valueOffset = 1 - (value / 100);\n            this.opacityOffset = this.showAlpha ? alpha : 1;\n        } catch {\n            this.hueOffset = 0;\n            this.saturationOffset = 0;\n            this.valueOffset = 0;\n            this.opacityOffset = 1;\n        }\n    }\n\n}\n","<bb-color-slider [(xOffset)]=\"saturationOffset\"\n                 [(yOffset)]=\"valueOffset\"\n                 [style.background-color]=\"'hsl(' + (hueOffset * 360) + ', 100%, 50%)'\"\n                 (xOffsetChange)=\"setColor()\"\n                 size=\"1.5\"\n                 class=\"bb-color-picker-saturation\">\n</bb-color-slider>\n\n<bb-color-slider [(xOffset)]=\"hueOffset\"\n                 (xOffsetChange)=\"setColor()\"\n                 size=\"1.5\"\n                 class=\"bb-color-picker-hue\">\n</bb-color-slider>\n\n@if (showAlpha) {\n    <bb-color-slider [(xOffset)]=\"opacityOffset\"\n                     [style.background-image]=\"'linear-gradient(45deg, rgba(255, 255, 255, 0.2) 25%, transparent 25%, transparent 75%, rgba(255, 255, 255, 0.2) 75%, rgba(255, 255, 255, 0.2)), linear-gradient(45deg, rgba(255, 255, 255, 0.2) 25%, transparent 25%, transparent 75%, rgba(255, 255, 255, 0.2) 75%, rgba(255, 255, 255, 0.2)), linear-gradient(to right, hsla(' + (hueOffset * 360) + ',100%,50%,0), hsla(' + (hueOffset * 360) + ',100%,50%,1))'\"\n                     (xOffsetChange)=\"setColor()\"\n                     size=\"1.5\"\n                     class=\"bb-color-picker-alpha\">\n    </bb-color-slider>\n}\n","import {booleanAttribute, Directive, ElementRef, EnvironmentInjector, EventEmitter, HostListener, inject, Input, OnDestroy, OnInit, Output, ViewContainerRef} from '@angular/core';\nimport {ConnectedPosition, Overlay, OverlayRef} from '@angular/cdk/overlay';\nimport {BbColorPicker} from '../color-picker/color-picker.component';\nimport {ComponentPortal} from '@angular/cdk/portal';\nimport {merge, Subscription} from 'rxjs';\n\n@Directive({\n    selector: '[bbColorPicker]'\n})\nexport class ColorPickerDirective implements OnInit, OnDestroy {\n\n    // Dependencies.\n    private readonly _overlay: Overlay = inject(Overlay);\n    private readonly _viewContainerRef: ViewContainerRef = inject(ViewContainerRef);\n    private readonly _elementRef: ElementRef<HTMLElement> = inject(ElementRef<HTMLElement>);\n    private readonly _environmentInjector: EnvironmentInjector = inject(EnvironmentInjector);\n\n    // Inputs.\n    @Input({required: true}) bbColorPicker!: string;\n    @Input({transform: booleanAttribute}) bbColorPickerShowAlpha: boolean = false;\n    @Input({transform: booleanAttribute}) bbColorPickerDisabled: boolean = false;\n\n    // Outputs.\n    @Output() bbColorPickerChange = new EventEmitter<string>();\n\n    // State.\n    private _overlayRef: OverlayRef | null = null;\n\n    // Subscriptions.\n    private _subscription = new Subscription();\n\n    @HostListener('click')\n    showColorPicker() {\n        if (this._overlayRef?.hasAttached() || this.bbColorPickerDisabled) {\n            return;\n        }\n        this.attachColorPicker();\n    }\n\n    hideColorPicker() {\n        if (!this._overlayRef?.hasAttached()) {\n            return;\n        }\n        this._overlayRef?.detach();\n    }\n\n    ngOnInit() {\n        this.createOverlay();\n        this.handleOverlayEvents();\n    }\n\n    ngOnDestroy() {\n        this._subscription?.unsubscribe();\n        this._overlayRef?.dispose();\n    }\n\n    private attachColorPicker() {\n        const component = new ComponentPortal(BbColorPicker, this._viewContainerRef, this._environmentInjector);\n        const componentRef = this._overlayRef.attach(component);\n        componentRef.setInput('color', this.bbColorPicker);\n        componentRef.setInput('showAlpha', this.bbColorPickerShowAlpha);\n        componentRef.instance.colorChange.subscribe(color => {\n            this.bbColorPickerChange.emit(color);\n        });\n    }\n\n    private getPositionStrategy() {\n        const positions = this.getPositions();\n\n        return this._overlay\n            .position()\n            .flexibleConnectedTo(this._elementRef)\n            .withPositions(positions);\n    }\n\n    private handleOverlayEvents() {\n        if (!this._overlayRef) {\n            return;\n        }\n\n        const backdropClick$ = this._overlayRef.backdropClick();\n        const outside$ = this._overlayRef.outsidePointerEvents();\n        const detachments$ = this._overlayRef.detachments();\n\n        const subscription = merge(backdropClick$, outside$, detachments$).subscribe(() => {\n            this.hideColorPicker();\n        });\n        this._subscription.add(subscription);\n    }\n\n    private createOverlay() {\n        const positionStrategy = this.getPositionStrategy();\n        const scrollStrategy = this._overlay.scrollStrategies.reposition();\n\n        this._overlayRef = this._overlay.create({\n            positionStrategy,\n            scrollStrategy,\n            minHeight: 200,\n            disposeOnNavigation: true,\n            width: '100%',\n            maxWidth: '20rem'\n        });\n    }\n\n    private getPositions() {\n        return [\n            {\n                originX: 'start',\n                originY: 'bottom',\n                overlayX: 'start',\n                overlayY: 'top',\n                offsetY: 8\n            },\n            {\n                originX: 'start',\n                originY: 'top',\n                overlayX: 'start',\n                overlayY: 'bottom',\n                offsetY: -8\n            },\n            {\n                originX: 'end',\n                originY: 'top',\n                overlayX: 'start',\n                overlayY: 'top',\n                offsetX: 8\n            },\n            {\n                originX: 'start',\n                originY: 'top',\n                overlayX: 'end',\n                overlayY: 'top',\n                offsetX: -8\n            }\n        ] satisfies ConnectedPosition[];\n    }\n\n}\n","import {formatFileSize} from '@bravobit/bb-foundation';\nimport {Pipe, PipeTransform} from '@angular/core';\n\n@Pipe({\n    name: 'bbFileSize'\n})\nexport class BbFileSize implements PipeTransform {\n\n    transform(value: number) {\n        return formatFileSize(value);\n    }\n\n}\n","import {ImageConverter} from '@bravobit/bb-foundation';\nimport {DomSanitizer} from '@angular/platform-browser';\nimport {Pipe, PipeTransform} from '@angular/core';\nimport {Platform} from '@angular/cdk/platform';\n\n@Pipe({\n    name: 'bbFileImage'\n})\nexport class BbFileImage implements PipeTransform {\n\n    constructor(private _platform: Platform,\n                private _image: ImageConverter,\n                private _sanitizer: DomSanitizer) {\n    }\n\n    async transform(file: File) {\n        // If the file is not a file return.\n        if (!this._platform.isBrowser || !(file instanceof File)) {\n            return null;\n        }\n\n        return this._image.fileToImage(file, [\n            'image/png',\n            'image/jpeg',\n            'image/webp',\n            'image/gif',\n            'image/svg+xml'\n        ]).then(image => {\n            if (!image) {\n                return null;\n            }\n\n            return {\n                background: this._sanitizer.bypassSecurityTrustStyle(`url(${image.src})`),\n                aspectRatio: image.height / image.width\n            };\n        }).catch(() => {\n            return null;\n        });\n    }\n\n}\n","import {inject, Pipe, PipeTransform} from '@angular/core';\nimport {Exif, FileLoader} from '@bravobit/bb-foundation';\nimport {Platform} from '@angular/cdk/platform';\n\n@Pipe({\n    name: 'bbFileDataUrl'\n})\nexport class BbFileDataUrl implements PipeTransform {\n\n    // Dependencies.\n    private readonly _platform: Platform = inject(Platform);\n    private readonly _exif: Exif = inject(Exif);\n    private readonly _fileLoader: FileLoader = inject(FileLoader);\n\n    async transform(input: File | Blob) {\n        if (!this._platform.isBrowser) {\n            return null;\n        }\n\n        if (input === null || input === undefined || !this.isFileLike(input)) {\n            return null;\n        }\n\n        const stripped = await this.stripExif(input);\n        return await this._fileLoader.asDataUrl(stripped);\n    }\n\n    private async stripExif(input: File | Blob) {\n        try {\n            if (input instanceof Blob) {\n                return input;\n            }\n            return await this._exif.strip(input);\n        } catch {\n            return input;\n        }\n    }\n\n    private isFileLike(input: unknown) {\n        return 'File' in window && input instanceof File\n            || 'Blob' in window && input instanceof Blob;\n    }\n\n}\n","import {Inject, LOCALE_ID, Optional, Pipe, PipeTransform} from '@angular/core';\nimport {Localize} from '@bravobit/bb-foundation/localize';\nimport {formatDate} from '@angular/common';\n\n@Pipe({\n    name: 'bbRelativeTime'\n})\nexport class BbRelativeTime implements PipeTransform {\n\n    constructor(@Inject(LOCALE_ID) private _localeId: string,\n                @Optional() private _localize?: Localize) {\n    }\n\n    transform(value: string | number | Date) {\n        // Parse the value to a date object.\n        const date = this.parseAsDate(value);\n\n        // Check if the date is valid.\n        if (!this.isValidDate(date)) {\n            return value;\n        }\n\n        // Return the formatted date.\n        return this.format(date);\n    }\n\n    private format(date: Date) {\n        // It happens tomorrow.\n        if (this.isTomorrow(date)) {\n            return this.formatString(date, 'times.tomorrow_at', 'shortTime');\n        }\n\n        // It happened today.\n        if (this.isToday(date)) {\n            return this.formatString(date, 'times.today_at', 'shortTime');\n        }\n\n        // It happened yesterday.\n        if (this.isYesterday(date)) {\n            return this.formatString(date, 'times.yesterday_at', 'shortTime');\n        }\n\n        // Just return the date.\n        return this.formatString(date);\n    }\n\n    private formatString(date: Date, token?: string, format?: string) {\n        // Just return the parsed date.\n        if (!this._localize || !token || !format) {\n            return formatDate(date, 'mediumDate', this.locale);\n        }\n\n        // Return the translated formatting.\n        return this._localize.translate({\n            token: token,\n            data: {date: formatDate(date, format, this.locale)}\n        });\n    }\n\n    private get locale() {\n        return this._localize?.current?.locale ?? this._localeId;\n    }\n\n    private isValidDate = (date: Date) => {\n        return typeof date === 'object' &&\n            typeof date.getTime === 'function' &&\n            !isNaN(date.getTime());\n    };\n\n    private parseAsDate = (value: string | number | Date) => {\n        // Add a Z after the date so\n        // it is treated as a UTC date.\n        if (typeof value === 'string' && /^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}$/.test(value)) {\n            return new Date(`${value}Z`);\n        }\n\n        // Return the regular parsed date.\n        return new Date(value);\n    };\n\n    private isToday = (date: Date) => {\n        const today = new Date();\n        return date?.getDate() === today?.getDate() &&\n            date?.getMonth() === today?.getMonth() &&\n            date?.getFullYear() === today?.getFullYear();\n    };\n\n    private isYesterday = (date: Date) => {\n        const yesterday = new Date(new Date()?.setDate(new Date()?.getDate() - 1));\n        return date?.getDate() === yesterday?.getDate() &&\n            date?.getMonth() === yesterday?.getMonth() &&\n            date?.getFullYear() === yesterday?.getFullYear();\n    };\n\n    private isTomorrow = (date: Date) => {\n        const tomorrow = new Date(new Date()?.setDate(new Date()?.getDate() + 1));\n        return date?.getDate() === tomorrow?.getDate() &&\n            date?.getMonth() === tomorrow?.getMonth() &&\n            date?.getFullYear() === tomorrow?.getFullYear();\n    };\n\n}\n","import {inject, LOCALE_ID, Pipe, PipeTransform} from '@angular/core';\nimport {Localize} from '@bravobit/bb-foundation/localize';\nimport {parseDate} from '@bravobit/bb-foundation';\nimport {formatDate} from '@angular/common';\n\n@Pipe({\n    name: 'bbDate'\n})\nexport class BbDate implements PipeTransform {\n\n    // Dependencies.\n    private readonly _localize = inject(Localize, {optional: true});\n    private readonly _localeId = inject(LOCALE_ID);\n\n    transform(value: string | number | Date, format?: string) {\n        const date = parseDate(value);\n        if (date === null) {\n            return null;\n        }\n\n        const locale = this._localize?.current?.locale ?? this._localeId ?? 'en-US';\n        return formatDate(date, format ?? 'mediumDate', locale);\n    }\n\n}\n","import {booleanAttribute, ChangeDetectionStrategy, Component, input, ViewEncapsulation} from '@angular/core';\n\n@Component({\n    selector: 'bb-spinner',\n    templateUrl: './spinner.component.html',\n    styleUrls: ['./spinner.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    host: {'class': 'bb-spinner'}\n})\nexport class BbSpinner {\n\n    // Inputs.\n    readonly color = input<string>('var(--bb-spinner-color)');\n    readonly alt = input<string>('Loading...');\n    readonly disabled = input(false, {transform: booleanAttribute});\n\n}\n","<!--\n    The spinner element.\n\n    This element contains a circle with a 25% bar that spins\n    indefinitely. The border color can be set via the \"color\"\n    property.\n-->\n<div class=\"bb-spinner-container\">\n    <div [style.border-left-color]=\"color()\"\n         [class.disabled]=\"disabled()\"\n         class=\"bb-spinner-loader\"\n         aria-live=\"assertive\"\n         role=\"alert\">\n        {{ alt() }}\n    </div>\n    <ng-content select=\"img\"></ng-content>\n</div>\n\n<!--\n    The content of the spinner.\n\n    This element contains the content of the spinner. The user\n    can set the content inside the tag.\n-->\n<span class=\"bb-spinner-content\">\n    <ng-content></ng-content>\n</span>\n","import {booleanAttribute, ChangeDetectionStrategy, Component, ElementRef, HostListener, Input, ViewEncapsulation} from '@angular/core';\nimport {BbSpinner} from '../spinner/spinner.component';\n\n@Component({\n    selector: 'button[bb-button]',\n    templateUrl: './button.component.html',\n    styleUrls: ['./button.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    exportAs: 'bbButton',\n    host: {\n        'class': 'bb-button',\n        '[class.loading]': 'loading',\n        '[attr.disabled]': 'disabled || loading || null'\n    },\n    imports: [BbSpinner]\n})\nexport class BbButton {\n\n    // Inputs.\n    @Input({transform: booleanAttribute}) disabled: boolean = false;\n    @Input({transform: booleanAttribute}) loading: boolean = false;\n\n    constructor(protected elementRef: ElementRef<HTMLButtonElement>) {\n    }\n\n    focus() {\n        const element = this.elementRef?.nativeElement ?? null;\n        element?.focus?.();\n    }\n\n}\n\n@Component({\n    selector: 'a[bb-button]',\n    templateUrl: './button.component.html',\n    styleUrls: ['./button.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    exportAs: 'bbButton, bbAnchor',\n    host: {\n        'class': 'bb-button',\n        '[attr.tabindex]': '(disabled || loading) ? -1 : (tabIndex || 0)',\n        '[attr.disabled]': 'disabled || loading || null',\n        '[attr.aria-disabled]': '(disabled || loading).toString()'\n    },\n    imports: [BbSpinner]\n})\nexport class BbAnchor extends BbButton {\n\n    // Inputs.\n    @Input() tabIndex: number | null = null;\n\n    constructor(protected override elementRef: ElementRef) {\n        super(elementRef);\n    }\n\n    @HostListener('click', ['$event'])\n    stopDisabledEvents(event: Event) {\n        // If the button is not disabled (and not loading) let all events pass.\n        if (!this.disabled && !this.loading) {\n            return;\n        }\n\n        // If the button is disabled and/or loading stop\n        // the event from bubbling up.\n        event.preventDefault();\n        event.stopImmediatePropagation();\n    }\n\n}\n","@if (loading) {\n    <bb-spinner class=\"bb-button-spinner small\"></bb-spinner>\n}\n\n<ng-content select=\"[prefix]\"></ng-content>\n<span class=\"bb-button-content\"><ng-content></ng-content></span>\n<ng-content select=\"[suffix]\"></ng-content>\n","import {booleanAttribute, ChangeDetectionStrategy, Component, HostBinding, Inject, Input, numberAttribute, Optional, ViewEncapsulation} from '@angular/core';\nimport {ELEMENTS_CONFIG, ELEMENTS_ICONS, ElementsConfig, ElementsDisplayUnit, ElementsIcon} from '../elements.interfaces';\nimport {AsyncPipe} from '@angular/common';\nimport {BehaviorSubject} from 'rxjs';\n\n@Component({\n    selector: 'bb-icon',\n    templateUrl: './icon.component.html',\n    styleUrls: ['./icon.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'bb-icon',\n        '[attr.aria-hidden]': 'ariaHidden'\n    },\n    imports: [AsyncPipe]\n})\nexport class BbIcon {\n\n    // Data.\n    private _src: string | null = null;\n\n    // State.\n    state$ = new BehaviorSubject<any>(null);\n\n    @Input() alt: string | null = null;\n    @Input({transform: numberAttribute}) size: number = 1.5;\n    @Input({transform: booleanAttribute}) ariaHidden: boolean = true;\n    @Input() unit: ElementsDisplayUnit | null = null;\n\n    @Input()\n    set src(newValue: string | null) {\n        this.state$.next(this.convert(newValue));\n        this._src = newValue;\n    }\n\n    get src() {\n        return this._src;\n    }\n\n    @HostBinding('style.width')\n    @HostBinding('style.height')\n    @HostBinding('style.min-width')\n    @HostBinding('style.min-height')\n    @HostBinding('style.font-size')\n    get sizes() {\n        const unit = this.unit ?? this._config?.defaultDisplayUnit ?? 'rem';\n        return `${this.size}${unit}`;\n    }\n\n    constructor(@Optional() @Inject(ELEMENTS_CONFIG) private _config?: ElementsConfig,\n                @Optional() @Inject(ELEMENTS_ICONS) private _registry?: ElementsIcon[]) {\n    }\n\n    private convert(src: string | null) {\n        const [namespace, value] = (src || '').split(':');\n\n        const onError = () => {\n            this.warn(`ElementsModule: The icon with src \"${src}\" could not be rendered correctly; Did you put a correct src attribute?`);\n            return {type: 'unknown'};\n        };\n\n        if (!namespace || !value || !this._registry) {\n            return onError();\n        }\n\n        // Try to find an image icon.\n        const imageIcon = this.findImageIcon(namespace, value);\n        if (imageIcon) {\n            return imageIcon;\n        }\n\n        // Try to find an url icon.\n        const urlIcon = this.findUrlIcon(namespace, value);\n        if (urlIcon) {\n            return urlIcon;\n        }\n\n        // Try to find a font icon.\n        const fontIcon = this.findFontIcon(namespace, value);\n        if (fontIcon) {\n            return fontIcon;\n        }\n\n        // Return the on error function.\n        return onError();\n    }\n\n    private findImageIcon(namespace: string, value: string) {\n        const data = this._registry.find(item => item['namespace'] === namespace && item['name'] === value);\n\n        if (!data) {\n            return null;\n        }\n\n        return {type: data['type'], src: data['src']};\n    }\n\n    private findUrlIcon(namespace: string, value: string) {\n        const data = this._registry.find(item => item?.type === 'url' && item?.namespace === namespace);\n        if (!data) {\n            return null;\n        }\n\n        return {type: data['type'], src: data?.['url']?.replace('{value}', value)};\n    }\n\n    private findFontIcon(namespace: string, content: string) {\n        const data = this._registry.find(item => item['namespace'] === namespace);\n\n        if (!data) {\n            return null;\n        }\n\n        const uses = data['uses'];\n        if (uses === 'data-attribute') {\n            return {type: data['type'], className: data['className'], attribute: content};\n        }\n\n        return {type: data['type'], className: data['className'], content};\n    }\n\n    private warn = (content: string) => {\n        return console && console.warn && console.warn(content);\n    };\n\n}\n","@if (state$ | async; as data) {\n    @switch (data?.type) {\n        @case ('font') {\n            <i [attr.data-icon]=\"data?.attribute\"\n               [class]=\"data?.className\">\n                {{ data?.content }}\n            </i>\n        }\n        @case ('image') {\n            <img [src]=\"data?.src\"\n                 [alt]=\"alt\">\n        }\n        @case ('url') {\n            <img [src]=\"data?.src\"\n                 [alt]=\"alt\">\n        }\n        @default {\n            <svg viewBox=\"0 0 1 1\">\n                <rect x=\"0\" y=\"0\" width=\"1\" height=\"1\" fill=\"#c5c5c5\"></rect>\n            </svg>\n        }\n    }\n}\n","import {booleanAttribute, ChangeDetectionStrategy, Component, input, ViewEncapsulation} from '@angular/core';\n\n@Component({\n    selector: 'bb-form-group',\n    templateUrl: './form-group.component.html',\n    styleUrls: ['./form-group.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'bb-form-group',\n        '[class.grouped]': 'grouped()'\n    }\n})\nexport class BbFormGroup {\n\n    // Inputs.\n    readonly grouped = input(false, {transform: booleanAttribute});\n\n}\n","<ng-content></ng-content>\n","import {\n    AfterViewInit,\n    booleanAttribute,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ElementRef,\n    EventEmitter,\n    forwardRef,\n    Input,\n    Output,\n    Renderer2,\n    ViewChild,\n    ViewEncapsulation\n} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\n\nlet nextUniqueId = 0;\n\n@Component({\n    selector: 'bb-checkbox',\n    templateUrl: './checkbox.component.html',\n    styleUrls: ['./checkbox.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    providers: [\n        {provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => BbCheckbox), multi: true}\n    ],\n    host: {\n        'class': 'bb-checkbox',\n        '[class.indeterminate]': 'indeterminate',\n        '[class.disabled]': 'disabled',\n        '[class.grouped]': 'grouped'\n    }\n})\nexport class BbCheckbox implements AfterViewInit, ControlValueAccessor {\n\n    // Data.\n    readonly labelId: string = `bb-checkbox-${nextUniqueId++}`;\n\n    // Views.\n    @ViewChild('input', {static: true}) inputElementRef: ElementRef<HTMLInputElement>;\n\n    // Inputs.\n    @Input({transform: booleanAttribute}) checked: boolean = false;\n    @Input({transform: booleanAttribute}) indeterminate: boolean = false;\n    @Input({transform: booleanAttribute}) disabled: boolean = false;\n    @Input({transform: booleanAttribute}) grouped: boolean = false;\n    @Input({transform: booleanAttribute}) hideText: boolean = false;\n\n    // Outputs.\n    @Output() checkedChange = new EventEmitter<boolean>();\n    @Output() indeterminateChange = new EventEmitter<boolean>();\n\n    // Callbacks.\n    onTouchedCallback: () => void = () => ({});\n    onChangeCallback: (_: boolean | null) => void = () => ({});\n\n    constructor(private _renderer: Renderer2,\n                private _changeDetectorRef: ChangeDetectorRef) {\n    }\n\n    ngAfterViewInit() {\n        this.syncField('indeterminate', this.indeterminate);\n    }\n\n    toggle() {\n        this.checked = !this.checked;\n    }\n\n    writeValue(newValue: boolean) {\n        this.checked = newValue;\n    }\n\n    registerOnChange(method: (_: boolean | null) => void) {\n        this.onChangeCallback = method;\n    }\n\n    registerOnTouched(method: () => void) {\n        this.onTouchedCallback = method;\n    }\n\n    setDisabledState(isDisabled: boolean) {\n        this.disabled = isDisabled;\n        this._changeDetectorRef.markForCheck();\n    }\n\n    onClickEvent(event: Event) {\n        event.stopPropagation();\n\n        if (this.disabled) {\n            return;\n        }\n\n        // When user manually click on the checkbox, `indeterminate` is set to false.\n        if (this.indeterminate) {\n            Promise.resolve().then(() => {\n                this.indeterminate = false;\n                this.indeterminateChange.emit(this.indeterminate);\n            });\n        }\n\n        // Toggle the value.\n        this.toggle();\n\n        // Emit the change event.\n        this.emitChangeEvent();\n    }\n\n    onChangeEvent(event: Event) {\n        // We always have to stop propagation on the change event.\n        // Otherwise, the change event, from the input element, will bubble up and\n        // emit its event object to the `change` output.\n        event.stopPropagation();\n    }\n\n    private emitChangeEvent() {\n        this.onChangeCallback?.(this.checked);\n        this.checkedChange.emit(this.checked);\n        this.syncField('checked', this.checked);\n    }\n\n    private syncField(field: string, value: boolean) {\n        const element = this.inputElementRef?.nativeElement;\n        if (!element) {\n            return;\n        }\n        this._renderer.setProperty(element, field, value);\n    }\n\n\n}\n","<input #input\n       [id]=\"labelId\"\n       [checked]=\"checked\"\n       [disabled]=\"disabled\"\n       (change)=\"onChangeEvent($event)\"\n       (click)=\"onClickEvent($event)\"\n       (blur)=\"onTouchedCallback()\"\n       class=\"bb-checkbox-input\"\n       tabindex=\"-1\"\n       type=\"checkbox\">\n\n<label [for]=\"labelId\"\n       [attr.tabindex]=\"disabled ? -1 : 0\"\n       (keyup.space)=\"onClickEvent($event)\"\n       class=\"bb-checkbox-label\">\n    <span class=\"bb-checkbox-area\">\n        <svg width=\"68%\"\n             height=\"68%\"\n             viewBox=\"0 0 12 12\">\n            <polyline [attr.points]=\"indeterminate ? '1 6 11 6' : '1.5 7 4.5 10 10.5 2'\"></polyline>\n        </svg>\n    </span>\n    @if (!hideText) {\n        <span class=\"bb-checkbox-content\">\n            <ng-content></ng-content>\n        </span>\n    }\n</label>\n","import {booleanAttribute, ChangeDetectionStrategy, Component, input, TemplateRef, ViewEncapsulation} from '@angular/core';\nimport {BbTemplate} from '@bravobit/bb-foundation/utils';\n\n@Component({\n    selector: 'bb-checkbox-group',\n    templateUrl: './checkbox-group.component.html',\n    styleUrls: ['./checkbox-group.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'bb-checkbox-group',\n        '[class.grouped]': 'grouped()',\n        '[class.required]': 'required()',\n        '[class.inline]': 'inline()'\n    },\n    imports: [BbTemplate]\n})\nexport class BbCheckboxGroup {\n\n    // Inputs.\n    readonly label = input<string | TemplateRef<any>>(null);\n    readonly required = input(false, {transform: booleanAttribute});\n    readonly grouped = input(false, {transform: booleanAttribute});\n    readonly inline = input(false, {transform: booleanAttribute});\n\n}\n","@if (label(); as labelContent) {\n    <label class=\"bb-checkbox-group-label\">\n        <ng-template [bbTemplate]=\"labelContent\">{{ labelContent }}</ng-template>\n    </label>\n}\n\n<div class=\"bb-checkbox-group-items\">\n    <ng-content select=\"bb-checkbox\"></ng-content>\n</div>\n","import {booleanAttribute, ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, forwardRef, Input, Output, TemplateRef, ViewEncapsulation} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {BbFormError} from '../form-error/form-error.component';\nimport {BbTemplate} from '@bravobit/bb-foundation/utils';\n\n@Component({\n    selector: 'bb-radio-group',\n    templateUrl: './radio-group.component.html',\n    styleUrls: ['./radio-group.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    providers: [\n        {provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => BbRadioGroup), multi: true}\n    ],\n    host: {\n        'class': 'bb-radio-group',\n        '[class.disabled]': 'disabled',\n        '[class.readonly]': 'readonly',\n        '[class.grouped]': 'grouped',\n        '[class.required]': 'required',\n        '[class.inline]': 'inline',\n        '[class.error]': 'error'\n    },\n    imports: [BbTemplate, BbFormError]\n})\nexport class BbRadioGroup<T> implements ControlValueAccessor {\n\n    // Inputs.\n    @Input() label: string | TemplateRef<any> | null = null;\n    @Input({transform: booleanAttribute}) disabled: boolean = false;\n    @Input({transform: booleanAttribute}) readonly: boolean = false;\n    @Input({transform: booleanAttribute}) required: boolean = false;\n    @Input({transform: booleanAttribute}) grouped: boolean = false;\n    @Input({transform: booleanAttribute}) inline: boolean = false;\n    @Input({transform: booleanAttribute}) hideErrors: boolean = false;\n\n    // Outputs.\n    @Output() valueChange = new EventEmitter<T>();\n\n    // Value.\n    @Input()\n    get value() {\n        return this._value;\n    }\n\n    set value(value: T) {\n        this._value = value;\n        this._changeDetectorRef.markForCheck();\n    }\n\n    private _value: T | null = null;\n\n    // Callbacks.\n    onTouchedCallback: () => void = () => ({});\n    onChangeCallback: (_: T | null) => void = () => ({});\n\n    // State.\n    error: boolean = false;\n\n    constructor(private _changeDetectorRef: ChangeDetectorRef) {\n    }\n\n    select(value: any) {\n        if (this.value === value || this.disabled || this.readonly) {\n            return;\n        }\n        this.value = value;\n        this.onChangeCallback?.(this.value);\n        this.valueChange.emit(this.value);\n        this.onTouchedCallback?.();\n    }\n\n    registerOnChange(fn: (newValue: T) => void) {\n        this.onChangeCallback = fn;\n    }\n\n    registerOnTouched(fn: () => void) {\n        this.onTouchedCallback = fn;\n    }\n\n    setDisabledState(isDisabled: boolean) {\n        this.disabled = isDisabled;\n    }\n\n    writeValue(newValue: T) {\n        this.value = newValue;\n    }\n\n    onErrorChange(error: { token: string, data?: any } | null) {\n        this.error = !!error;\n    }\n\n}\n","@if (label; as labelContent) {\n    <label class=\"bb-radio-group-label\">\n        <ng-template [bbTemplate]=\"labelContent\">{{ labelContent }}</ng-template>\n    </label>\n}\n\n<div class=\"bb-radio-group-items\">\n    <ng-content select=\"bb-radio-button\"></ng-content>\n</div>\n\n<!-- The error component. -->\n@if (!hideErrors) {\n    <bb-form-error (errorChange)=\"onErrorChange($event)\"></bb-form-error>\n}\n","import {booleanAttribute, ChangeDetectionStrategy, Component, HostBinding, HostListener, inject, Input, ViewEncapsulation} from '@angular/core';\nimport {BbRadioGroup} from '../radio-group/radio-group.component';\n\n@Component({\n    selector: 'bb-radio-button',\n    templateUrl: './radio-button.component.html',\n    styleUrls: ['./radio-button.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'bb-radio-button',\n        '[class.disabled]': 'disabled',\n        '[tabindex]': 'disabled ? -1 : 0'\n    }\n})\nexport class BbRadioButton<T> {\n\n    // Dependencies.\n    private readonly _radioGroup?: BbRadioGroup<T> = inject(BbRadioGroup, {optional: true});\n\n    // Inputs.\n    @Input() value: T | null = null;\n    @Input({transform: booleanAttribute}) hideText: boolean = false;\n\n    // Disabled.\n    @Input({transform: booleanAttribute})\n    set disabled(value: boolean) {\n        this._disabled = value;\n    }\n\n    get disabled() {\n        return this._radioGroup?.disabled || this._disabled;\n    }\n\n    private _disabled: boolean = false;\n\n    @HostListener('click')\n    onClick() {\n        if (this.disabled || !this._radioGroup) {\n            return;\n        }\n        this._radioGroup.select(this.value);\n    }\n\n    @HostListener('keydown.space')\n    onSpacePressed() {\n        return this.onClick();\n    }\n\n    @HostBinding('class.selected')\n    get selected() {\n        return this._radioGroup?.value === this.value;\n    }\n\n}\n","<div class=\"bb-radio-button-indicator\"></div>\n@if (!hideText) {\n    <span class=\"bb-radio-button-text\"><ng-content></ng-content></span>\n}\n\n","import {ChangeDetectionStrategy, Component, computed, inject, input, numberAttribute, ViewEncapsulation} from '@angular/core';\nimport {ELEMENTS_CONFIG, ElementsConfig, ElementsDisplayUnit} from '../elements.interfaces';\n\nexport function avatarColorAlgorithm(value: string) {\n    if (value === null || value === undefined) {\n        return null;\n    }\n    let hash = 5381;\n    for (let index = 0; index < value.length; index++) {\n        hash = (hash * 33) ^ value.charCodeAt(index);\n    }\n    const result = hash >>> 0;\n    return {\n        color: `hsl(${result % 360}, 75%, 20%)`,\n        background: `hsl(${result % 360}, 45%, 85%)`\n    };\n}\n\n@Component({\n    selector: 'bb-avatar',\n    templateUrl: './avatar.component.html',\n    styleUrls: ['./avatar.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'bb-avatar',\n        'role': 'img',\n        '[style.color]': 'color()',\n        '[style.background-color]': 'backgroundColor()',\n        '[style.width]': 'visualSize()',\n        '[style.height]': 'visualSize()',\n        '[style.min-width]': 'visualSize()',\n        '[style.min-height]': 'visualSize()',\n        '[style.font-size]': 'fontSize()'\n    },\n    imports: []\n})\nexport class BbAvatar {\n\n    // Dependencies.\n    private readonly _config?: ElementsConfig = inject(ELEMENTS_CONFIG, {optional: true});\n\n    // Inputs.\n    readonly size = input(2.5, {transform: numberAttribute});\n    readonly unit = input<ElementsDisplayUnit>(null);\n    readonly src = input<string>(null);\n    readonly title = input.required<string>();\n\n    // Computed.\n    readonly color = computed(() => {\n        const title = this.title();\n        return this._config?.avatarColorAlgorithm?.(title)?.color\n            ?? avatarColorAlgorithm(title)?.color\n            ?? '#ffffff';\n    });\n\n    readonly backgroundColor = computed(() => {\n        const title = this.title();\n        return this._config?.avatarColorAlgorithm?.(title)?.background\n            ?? avatarColorAlgorithm(title)?.background\n            ?? '#424242';\n    });\n\n    readonly visualSize = computed(() => {\n        const unit = this.unit() ?? this._config?.defaultDisplayUnit ?? 'rem';\n        return `${this.size()}${unit}`;\n    });\n\n    readonly fontSize = computed(() => {\n        const unit = this.unit() ?? this._config?.defaultDisplayUnit ?? 'rem';\n        return `${this.size() * 0.42}${unit}`;\n    });\n\n    readonly initials = computed(() => {\n        const title = this.title();\n        const names = (title ?? '').split(' ');\n        const initials = names\n            .map(name => name.charAt(0).toUpperCase())\n            .filter(name => /^[a-zA-Z]+$/.test(name));\n\n        // Check if there are any initials.\n        if (initials?.length <= 0) {\n            return null;\n        }\n\n        // Get the first and last initials.\n        if (initials?.length > 1) {\n            return `${initials?.[0]}${initials?.[initials?.length - 1]}`;\n        }\n\n        // Get only the first initial.\n        return initials?.[0];\n    });\n\n}\n","@if (src(); as src) {\n    <img [src]=\"src\"\n         [alt]=\"initials()\"\n         class=\"bb-avatar-image\">\n} @else {\n    {{ initials() }}\n}\n","import {ELEMENTS_CONFIG} from './elements.interfaces';\nimport {inject} from '@angular/core';\n\nexport function injectAcceptString() {\n    const config = inject(ELEMENTS_CONFIG, {optional: true});\n    const allowedFileTypes = config?.allowedFileTypes ?? [];\n    return allowedFileTypes?.length <= 0\n        ? null\n        : allowedFileTypes.join(',');\n}\n\nexport function injectMaxFileSize() {\n    const config = inject(ELEMENTS_CONFIG, {optional: true});\n    return config?.maxFileSize ?? Number.MAX_SAFE_INTEGER;\n}\n\nexport function injectMaxTotalFileSize() {\n    const config = inject(ELEMENTS_CONFIG, {optional: true});\n    return config?.maxTotalFileSize ?? Number.MAX_SAFE_INTEGER;\n}\n","import {\n    booleanAttribute,\n    ChangeDetectionStrategy,\n    Component,\n    computed,\n    ElementRef,\n    EventEmitter,\n    forwardRef,\n    inject,\n    input,\n    model,\n    numberAttribute,\n    Output, signal,\n    TemplateRef,\n    viewChild,\n    ViewEncapsulation\n} from '@angular/core';\nimport {Files, formatFileSize, isFileLike, isValidFileSize, isValidFileType} from '@bravobit/bb-foundation';\nimport {ControlValueAccessor, FormControl, NG_VALIDATORS, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {BbLocalize, BbLocalizeTemplate, BbLocalizeString} from '@bravobit/bb-foundation/localize';\nimport {injectAcceptString, injectMaxFileSize, injectMaxTotalFileSize} from '../elements.inject';\nimport {BbFormError} from '../form-error/form-error.component';\nimport {BbFileDrop} from '../directives/file-drop.directive';\nimport {BbTemplate} from '@bravobit/bb-foundation/utils';\nimport {BbButton} from '../button/button.component';\n\nlet nextUniqueId = 0;\n\nexport interface BbMultiFileControlItem {\n    id: number;\n    label: string;\n    url: string;\n    description?: string;\n}\n\nexport type BbMultiFileControlOpenEvent =\n    { type: 'item', item: BbMultiFileControlItem }\n    | { type: 'file', file: File };\n\n@Component({\n    selector: 'bb-multi-file-control',\n    templateUrl: './multi-file-control.component.html',\n    styleUrls: ['./multi-file-control.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    providers: [\n        {provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => BbMultiFileControl), multi: true},\n        {provide: NG_VALIDATORS, useExisting: BbMultiFileControl, multi: true}\n    ],\n    host: {\n        'class': 'bb-multi-file-control',\n        '[class.required]': 'required()',\n        '[class.disabled]': 'disabled()',\n        '[class.grouped]': 'grouped()',\n        '[class.error]': 'error()',\n        '[class.single]': 'appearance() === \\'single\\''\n    },\n    imports: [BbFormError, BbTemplate, BbButton, BbLocalize, BbLocalizeTemplate, BbLocalizeString, BbFileDrop]\n})\nexport class BbMultiFileControl implements ControlValueAccessor {\n\n    // Dependencies.\n    private readonly _files: Files = inject(Files);\n\n    // Readonly data.\n    readonly labelId: string = `bb-multi-file-control-${nextUniqueId++}`;\n\n    // Views.\n    readonly fileInputRef = viewChild<ElementRef<HTMLInputElement>>('fileInput');\n\n    // Inputs.\n    readonly appearance = input<'multiple' | 'single'>('multiple');\n    readonly label = input<string | TemplateRef<any>>();\n    readonly hint = input<string | TemplateRef<any>>();\n    readonly accept = input<string>(injectAcceptString());\n    readonly maxFileSize = input(injectMaxFileSize(), {transform: numberAttribute});\n    readonly maxTotalFileSize = input(injectMaxTotalFileSize(), {transform: numberAttribute});\n    readonly grouped = input(false, {transform: booleanAttribute});\n    readonly required = input(false, {transform: booleanAttribute});\n    readonly hideErrors = input(false, {transform: booleanAttribute});\n    readonly disabled = model<boolean>(false);\n    readonly items = model<BbMultiFileControlItem[]>([]);\n\n    // Outputs.\n    @Output() delete = new EventEmitter<BbMultiFileControlItem>();\n    @Output() open = new EventEmitter<BbMultiFileControlOpenEvent>();\n\n    // State.\n    readonly value = signal<File[]>([]);\n    readonly error = signal<boolean>(false);\n\n    // Computed.\n    readonly showList = computed(() => this.value()?.length > 0 || this.items()?.length > 0);\n\n    // Callbacks.\n    onTouchedCallback: () => void = () => ({});\n    onChangeCallback: (_: File[] | null) => void = () => ({});\n\n    openItem(event: Event, item: BbMultiFileControlItem) {\n        if (!this.open.observed) {\n            return;\n        }\n        event.preventDefault();\n        this.open.emit({type: 'item', item: item});\n    }\n\n    downloadFile(event: Event, file: File) {\n        if (!this.open.observed) {\n            return this._files.download(file, file?.name);\n        }\n        event.preventDefault();\n        this.open.emit({type: 'file', file: file});\n    }\n\n    openFileDialog() {\n        const element = this.fileInputRef()?.nativeElement as HTMLInputElement;\n        element?.click();\n    }\n\n    onFileChange(event: Event) {\n        const files: File[] = Array.from(event.target?.['files']);\n        this.addFiles(files);\n        this.fileInputRef().nativeElement.value = null;\n    }\n\n    deleteFile(index: number) {\n        this.value.update(value => value?.filter((_, i) => i !== index) ?? []);\n        this.onChangeCallback?.(this.value());\n    }\n\n    writeValue(value: File[] | null) {\n        this.value.set(value ?? []);\n    }\n\n    registerOnChange(method: (_: File[] | null) => void) {\n        this.onChangeCallback = method;\n    }\n\n    registerOnTouched(method: () => void) {\n        this.onTouchedCallback = method;\n    }\n\n    setDisabledState(isDisabled: boolean) {\n        this.disabled.set(isDisabled);\n    }\n\n    onErrorChange(error: { token: string, data?: any } | null) {\n        this.error.set(!!error);\n    }\n\n    validate(control: FormControl<File[]>) {\n        const value = control?.value ?? [];\n        const errors = value.reduce((previous, current, index) => {\n            if (isValidFileType(current, this.accept())) {\n                return previous;\n            }\n\n            return {...previous, [index]: true};\n        }, <Record<number, boolean>>{});\n\n        if (Object.keys(errors)?.length > 0) {\n            return {invalidFiles: errors};\n        }\n\n        for (const file of value) {\n            if (!isValidFileSize(file, this.maxFileSize())) {\n                return {maxFileSize: {maxSize: formatFileSize(this.maxFileSize())}};\n            }\n        }\n\n        const totalSize = value.reduce((previous, current) => previous + (current?.size ?? 0), 0);\n        if (totalSize > this.maxTotalFileSize()) {\n            return {\n                maxTotalFileSize: {\n                    max: formatFileSize(this.maxTotalFileSize()),\n                    current: formatFileSize(totalSize)\n                }\n            };\n        }\n\n        return null;\n    }\n\n    addFiles(files: File[]) {\n        if (this.disabled()) {\n            return;\n        }\n\n        const newFiles = this.appearance() === 'single' ? [files?.[0]] : files;\n        const filteredFiles = newFiles.filter(file => !!file && isFileLike(file));\n        this.value.update(value => ([...value, ...filteredFiles]));\n        this.onChangeCallback?.(this.value());\n    }\n\n}\n","<!-- The label of the input. -->\n@if (label(); as labelContent) {\n    <label [for]=\"labelId\"\n           class=\"bb-multi-file-control-label\">\n        <ng-template [bbTemplate]=\"labelContent\">{{ labelContent }}</ng-template>\n    </label>\n}\n\n<input #fileInput\n       [id]=\"labelId\"\n       [accept]=\"accept()\"\n       [disabled]=\"disabled()\"\n       [multiple]=\"appearance() === 'multiple'\"\n       (change)=\"onFileChange($event)\"\n       class=\"bb-multi-file-control-input\"\n       type=\"file\"\n       tabindex=\"-1\">\n\n<div [bbFileDropDisabled]=\"disabled()\"\n     (bbFileDrop)=\"addFiles($event)\"\n     class=\"bb-multi-file-control-container\">\n    @if (showList()) {\n        <ul class=\"bb-multi-file-control-list\">\n            @for (item of items(); track item?.id) {\n                <li class=\"bb-multi-file-control-item\">\n                    <i class=\"bb-multi-file-control-icon attach-horizontal\"></i>\n                    <a [href]=\"item?.url\"\n                       (click)=\"openItem($event, item)\"\n                       target=\"_blank\"\n                       rel=\"noopener\"\n                       class=\"bb-multi-file-control-item-content\">\n                        <span>{{ item?.label }}</span>\n                        @if (item?.description; as description) {\n                            <small>{{ description }}</small>\n                        }\n                    </a>\n\n                    @if (!disabled() && delete?.observed) {\n                        <button (click)=\"delete?.emit(item)\"\n                                type=\"button\"\n                                class=\"bb-multi-file-control-item-button\">\n                            <i class=\"bb-multi-file-control-icon clear\"></i>\n                        </button>\n                    }\n                </li>\n            }\n            @for (file of value(); track $index) {\n                <li class=\"bb-multi-file-control-item\">\n                    <i class=\"bb-multi-file-control-icon attach-horizontal\"></i>\n                    <button (click)=\"downloadFile($event, file)\"\n                            class=\"bb-multi-file-control-item-content\"\n                            type=\"button\">\n                        {{ file?.name }}\n                    </button>\n                    @if (!disabled()) {\n                        <button (click)=\"deleteFile($index)\"\n                                type=\"button\"\n                                class=\"bb-multi-file-control-item-button\">\n                            <i class=\"bb-multi-file-control-icon clear\"></i>\n                        </button>\n                    }\n                </li>\n            }\n        </ul>\n    } @else if (!disabled()) {\n        <i class=\"bb-multi-file-control-icon attach-vertical\"></i>\n        <p [bb-localize-string]=\"`multi-file-control.${appearance()}_choose_file_text` | bbLocalize\"\n           class=\"bb-multi-file-control-empty\">\n            <label *bbLocalizeTemplate=\"'label'\"\n                   [for]=\"labelId\">{{ `multi-file-control.${appearance()}_choose_file` | bbLocalize }}</label>\n        </p>\n    }\n    @if (!disabled()) {\n        <button (click)=\"openFileDialog()\"\n                type=\"button\"\n                class=\"primary small bb-multi-file-control-button\"\n                bb-button>\n            <i class=\"bb-multi-file-control-icon add\" suffix></i>\n            {{ `multi-file-control.${appearance()}_choose_file` | bbLocalize }}\n        </button>\n    }\n</div>\n\n@if (!hideErrors()) {\n    <bb-form-error (errorChange)=\"onErrorChange($event)\"></bb-form-error>\n}\n\n<!-- The file picker hint. -->\n@if (hint(); as hintContent) {\n    <p class=\"bb-multi-file-control-hint\">\n        <ng-template [bbTemplate]=\"hintContent\">{{ hintContent }}</ng-template>\n    </p>\n}\n","import {\n    booleanAttribute,\n    ChangeDetectionStrategy,\n    Component,\n    ContentChild,\n    ElementRef,\n    EventEmitter,\n    forwardRef,\n    Input,\n    numberAttribute,\n    Output,\n    TemplateRef,\n    ViewChild,\n    ViewEncapsulation\n} from '@angular/core';\nimport {ControlValueAccessor, FormControl, NG_VALIDATORS, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {formatFileSize, isValidFileSize, isValidFileType} from '@bravobit/bb-foundation';\nimport {injectAcceptString, injectMaxFileSize} from '../elements.inject';\nimport {BbFormError} from '../form-error/form-error.component';\nimport {BbFileDrop} from '../directives/file-drop.directive';\nimport {AsyncPipe, NgTemplateOutlet} from '@angular/common';\nimport {BbLocalize} from '@bravobit/bb-foundation/localize';\nimport {BbTemplate} from '@bravobit/bb-foundation/utils';\nimport {BbFileImage} from '../pipes/file-image.pipe';\nimport {BbFileSize} from '../pipes/file-size.pipe';\nimport {BehaviorSubject} from 'rxjs';\n\nlet nextUniqueId = 0;\n\n@Component({\n    selector: 'bb-file-picker',\n    templateUrl: './file-picker.component.html',\n    styleUrls: ['./file-picker.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => BbFilePicker),\n            multi: true\n        },\n        {\n            provide: NG_VALIDATORS,\n            useExisting: BbFilePicker,\n            multi: true\n        }\n    ],\n    host: {\n        'class': 'bb-file-picker',\n        '[class.required]': 'required',\n        '[class.disabled]': 'disabled',\n        '[class.grouped]': 'grouped',\n        '[class.error]': 'error'\n    },\n    imports: [BbTemplate, AsyncPipe, NgTemplateOutlet, BbLocalize, BbFormError, BbFileSize, BbFileImage, BbFileDrop]\n})\nexport class BbFilePicker implements ControlValueAccessor {\n\n    // Readonly data.\n    readonly labelId: string = `bb-file-picker-${nextUniqueId++}`;\n\n    // Views.\n    @ViewChild('fileInput', {static: true}) fileInput: ElementRef<HTMLInputElement>;\n    @ContentChild('extra') extraTemplate: TemplateRef<any>;\n\n    // Inputs.\n    @Input() label: string | TemplateRef<any> | null = null;\n    @Input() hint: string | TemplateRef<any> | null = null;\n    @Input() accept: string = injectAcceptString();\n    @Input({transform: numberAttribute}) maxFileSize: number = injectMaxFileSize();\n    @Input({transform: booleanAttribute}) showImages: boolean = true;\n    @Input({transform: booleanAttribute}) grouped: boolean = false;\n    @Input({transform: booleanAttribute}) required: boolean = false;\n    @Input({transform: booleanAttribute}) disabled: boolean = false;\n    @Input({transform: booleanAttribute}) hideErrors: boolean = false;\n\n    // State.\n    error: boolean = false;\n    value$ = new BehaviorSubject<{ file?: File }>({});\n\n    // Callbacks.\n    onTouchedCallback: () => void = () => ({});\n    onChangeCallback: (_: File | null) => void = () => ({});\n\n    @Input()\n    get value() {\n        const {file} = this.value$.getValue();\n        return file;\n    }\n\n    @Output() valueChange = new EventEmitter<File | null>();\n\n    set value(value: File | null) {\n        this.value$.next({file: value});\n        this.valueChange.emit(value);\n    }\n\n    onButtonPressed(file?: File) {\n        if (file) {\n            this.value = null;\n            this.onChangeCallback(this.value);\n            return;\n        }\n\n        return this.openFilePicker();\n    }\n\n    openFilePicker() {\n        return this.fileInput\n            && this.fileInput.nativeElement\n            && this.fileInput.nativeElement.click\n            && this.fileInput.nativeElement.click();\n    }\n\n    onFileChange(event: Event) {\n        if (this.disabled) {\n            return;\n        }\n\n        // Extract the file from the event.\n        const files = this.getFilesFromEvent(event);\n        this.saveFile(files);\n\n        // Clear the file input.\n        if (this.fileInput && this.fileInput.nativeElement) {\n            this.fileInput.nativeElement.value = '';\n        }\n    }\n\n    writeValue(value: File | null) {\n        this.value = value;\n    }\n\n    registerOnChange(method: (_: File | null) => void) {\n        this.onChangeCallback = method;\n    }\n\n    registerOnTouched(method: () => void) {\n        this.onTouchedCallback = method;\n    }\n\n    setDisabledState(isDisabled: boolean) {\n        this.disabled = isDisabled;\n    }\n\n    onErrorChange(error: { token: string, data?: any } | null) {\n        this.error = !!error;\n    }\n\n    validate({value}: FormControl<File>) {\n        if (value === null || value === undefined) {\n            return null;\n        }\n\n        if (!isValidFileType(value, this.accept)) {\n            return {invalidFileType: true};\n        }\n\n        if (!isValidFileSize(value, this.maxFileSize)) {\n            return {maxFileSize: {maxSize: formatFileSize(this.maxFileSize)}};\n        }\n\n        return null;\n    }\n\n    saveFile(files: File[]) {\n        const file = files?.[0] ?? null;\n        if (!file || this.disabled) {\n            return;\n        }\n        this.value = file;\n        this.onChangeCallback(this.value);\n    }\n\n    private getFilesFromEvent(event: Event) {\n        const element = event.target as HTMLInputElement;\n        if (!element) {\n            return null;\n        }\n        return Array.from(element.files);\n    }\n\n}\n","<!-- The label of the input. -->\n@if (label; as labelContent) {\n    <label [for]=\"labelId\"\n           class=\"bb-file-picker-label\">\n        <ng-template [bbTemplate]=\"labelContent\">{{ labelContent }}</ng-template>\n    </label>\n}\n\n<!-- The input that can open the file picker. -->\n<input #fileInput\n       [accept]=\"accept\"\n       [disabled]=\"disabled\"\n       (change)=\"onFileChange($event)\"\n       class=\"bb-file-picker-input\"\n       type=\"file\"\n       tabindex=\"-1\">\n\n@if (value$ | async; as data) {\n    <div [bbFileDropDisabled]=\"disabled\"\n         (bbFileDrop)=\"saveFile($event)\"\n         class=\"bb-file-picker-wrapper\">\n        <!-- The button that accepts files. -->\n        <div class=\"bb-file-picker-container\">\n            <button [class.destructive]=\"!!data?.file\"\n                    [disabled]=\"disabled\"\n                    [id]=\"labelId\"\n                    (click)=\"onButtonPressed(data?.file)\"\n                    type=\"button\"\n                    class=\"bb-file-picker-button\">\n                <ng-container *ngTemplateOutlet=\"data?.file ? closeIcon : uploadIcon\"></ng-container>\n                {{ (data?.file ? 'file-picker.remove' : 'file-picker.choose') | bbLocalize }}\n            </button>\n            <div class=\"bb-file-picker-zone\">\n                {{ 'file-picker.drop' | bbLocalize }}\n            </div>\n        </div>\n\n        @if (!!extraTemplate) {\n            <ng-container *ngTemplateOutlet=\"extraTemplate; context: {$implicit: data?.file}\"></ng-container>\n        }\n\n        @if (showImages) {\n            @if (data?.file | bbFileImage | async; as image) {\n                <div class=\"bb-file-picker-image-container\"\n                     animate.leave=\"leaving\">\n                    <div class=\"bb-file-picker-image-wrapper\">\n                        <div [style.padding-top.%]=\"image?.aspectRatio * 100\"\n                             [style.background-image]=\"image?.background\"\n                             class=\"bb-file-picker-image\">\n                        </div>\n                    </div>\n                </div>\n            }\n        }\n\n        <!-- Extra information of the file. -->\n        <div [class.visible]=\"!!data?.file\"\n             class=\"bb-file-picker-info\">\n            @if (data?.file?.name; as name) {\n                <span>{{ name }}</span>\n            }\n            @if (data?.file?.size; as size) {\n                <span>{{ size | bbFileSize }}</span>\n            }\n        </div>\n    </div>\n}\n\n@if (!hideErrors) {\n    <bb-form-error (errorChange)=\"onErrorChange($event)\"></bb-form-error>\n}\n\n<!-- The file picker hint. -->\n@if (hint; as hintContent) {\n    <p class=\"bb-file-picker-hint\">\n        <ng-template [bbTemplate]=\"hintContent\">{{ hintContent }}</ng-template>\n    </p>\n}\n\n<!-- Upload icon. -->\n<ng-template #uploadIcon>\n    <svg xmlns=\"http://www.w3.org/2000/svg\"\n         class=\"bb-file-picker-icon\"\n         width=\"1.5rem\"\n         height=\"1.5rem\"\n         viewBox=\"0 0 24 24\">\n        <path fill=\"currentColor\"\n              d=\"M2 12.5C2 9.46 4.46 7 7.5 7H18c2.21 0 4 1.79 4 4s-1.79 4-4 4H9.5a2.5 2.5 0 010-5H17v2H9.41c-.55 0-.55 1 0 1H18c1.1 0 2-.9 2-2s-.9-2-2-2H7.5C5.57 9 4 10.57 4 12.5S5.57 16 7.5 16H17v2H7.5C4.46 18 2 15.54 2 12.5z\"></path>\n        <path fill=\"none\" d=\"M0 0h24v24H0V0z\"></path>\n    </svg>\n</ng-template>\n\n<!-- Close icon. -->\n<ng-template #closeIcon>\n    <svg xmlns=\"http://www.w3.org/2000/svg\"\n         class=\"bb-file-picker-icon\"\n         width=\"1.5rem\"\n         height=\"1.5rem\"\n         viewBox=\"0 0 24 24\">\n        <path fill=\"currentColor\"\n              d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"></path>\n        <path d=\"M0 0h24v24H0z\" fill=\"none\"></path>\n    </svg>\n</ng-template>\n","import {booleanAttribute, ChangeDetectionStrategy, Component, ElementRef, EventEmitter, forwardRef, Input, Output, ViewChild, ViewEncapsulation} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {ImageConverter} from '@bravobit/bb-foundation';\nimport {BbButton} from '../button/button.component';\nimport {AsyncPipe} from '@angular/common';\nimport {BehaviorSubject} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\n@Component({\n    selector: 'bb-image-picker',\n    templateUrl: './image-picker.component.html',\n    styleUrls: ['./image-picker.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    host: {\n        'class': 'bb-image-picker',\n        '[class.disabled]': 'disabled',\n        '[class.grouped]': 'grouped'\n    },\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => BbImagePicker),\n            multi: true\n        }\n    ],\n    imports: [BbButton, AsyncPipe]\n})\nexport class BbImagePicker implements ControlValueAccessor {\n\n    // Views.\n    @ViewChild('fileInput', {static: true}) fileInput: ElementRef<HTMLInputElement>;\n\n    // Inputs.\n    @Input() label: string | null = null;\n    @Input() placeholder: string | null = null;\n    @Input() styleDimensions: { width: string, height: string } | null = null;\n    @Input() cropDimensions: { width: number, height: number } | null = null;\n    @Input() buttonClass: string | null = null;\n    @Input({transform: booleanAttribute}) disabled: boolean = false;\n    @Input({transform: booleanAttribute}) grouped: boolean = false;\n\n    // Callbacks.\n    onTouchedCallback: () => void = () => ({});\n    onChangeCallback: (_: string | null) => void = () => ({});\n\n    // Form.\n    private _value$ = new BehaviorSubject<string | null>(null);\n\n    constructor(private _converter: ImageConverter) {\n    }\n\n    @Input()\n    get value() {\n        return this._value$.getValue();\n    }\n\n    @Output() valueChange = new EventEmitter<string | null>();\n\n    set value(value: string | null) {\n        this._value$.next(value);\n        this.valueChange.emit(value);\n    }\n\n    get image() {\n        return this._value$.pipe(\n            map(value => value || this.placeholder),\n            map(value => value ? `url(${value})` : null)\n        );\n    }\n\n    async onFileChange(event) {\n        // Grab the file from the event.\n        const file: File = event.target.files[0];\n\n        // Check if the file exists.\n        if (!file || this.disabled) {\n            return;\n        }\n\n        try {\n            this.value = await this._converter.toDataUri(file, this.cropDimensions);\n        } catch {\n            this.value = null;\n        }\n\n        this.onChangeCallback(this.value);\n\n        if (this.fileInput && this.fileInput.nativeElement) {\n            this.fileInput.nativeElement.value = '';\n        }\n    }\n\n    openFilePicker() {\n        if (this.disabled) {\n            return;\n        }\n\n        // Execute a click on the file input.\n        this.fileInput\n        && this.fileInput.nativeElement\n        && this.fileInput.nativeElement.click\n        && this.fileInput.nativeElement.click();\n    }\n\n    writeValue(value: string | null) {\n        this.value = value;\n    }\n\n    registerOnChange(method: (_: string | null) => void) {\n        this.onChangeCallback = method;\n    }\n\n    registerOnTouched(method: () => void) {\n        this.onTouchedCallback = method;\n    }\n\n    setDisabledState(isDisabled: boolean) {\n        this.disabled = isDisabled;\n    }\n\n}\n","<!-- The input that can open the file picker. -->\n<input #fileInput\n       (change)=\"onFileChange($event)\"\n       class=\"bb-image-picker-input\"\n       type=\"file\"\n       tabindex=\"-1\"\n       accept=\"image/*\">\n\n<span [style.width]=\"styleDimensions?.width ?? '100%'\"\n      [style.height]=\"styleDimensions?.height ?? '215px'\"\n      [style.background-image]=\"image | async\"\n      class=\"bb-image-input-image\"></span>\n\n@if (label; as labelText) {\n    <button (click)=\"openFilePicker()\"\n            bb-button\n            class=\"bb-image-input-button {{ buttonClass }}\"\n            type=\"button\">\n        {{ labelText }}\n    </button>\n}\n","import {\n    booleanAttribute,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    EventEmitter,\n    forwardRef,\n    Inject,\n    Input,\n    OnDestroy,\n    OnInit,\n    Output,\n    TemplateRef,\n    ViewEncapsulation\n} from '@angular/core';\nimport {ControlValueAccessor, FormControl, FormGroup, NG_VALIDATORS, NG_VALUE_ACCESSOR, ReactiveFormsModule, Validators} from '@angular/forms';\nimport {BehaviorSubject, combineLatest, Observable, Subscription} from 'rxjs';\nimport {distinctUntilChanged, map, startWith, tap} from 'rxjs/operators';\nimport {BbFormControl} from '../form-control/form-control.component';\nimport {BbFormError} from '../form-error/form-error.component';\nimport {LOCALIZE_ID} from '@bravobit/bb-foundation/localize';\nimport {BbTemplate} from '@bravobit/bb-foundation/utils';\nimport {AsyncPipe, formatDate} from '@angular/common';\nimport {BbInput} from '../directives/input.directive';\n\n@Component({\n    selector: 'bb-date-picker',\n    templateUrl: './date-picker.component.html',\n    styleUrls: ['./date-picker.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    providers: [\n        {provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => BbDatePicker), multi: true},\n        {provide: NG_VALIDATORS, useExisting: BbDatePicker, multi: true}\n    ],\n    host: {\n        'class': 'bb-date-picker',\n        '[class.required]': 'required',\n        '[class.readonly]': 'readonly',\n        '[class.disabled]': 'disabled',\n        '[class.grouped]': 'grouped',\n        '[class.error]': 'error'\n    },\n    imports: [\n        BbTemplate,\n        AsyncPipe,\n        ReactiveFormsModule,\n        BbFormControl,\n        BbInput,\n        BbFormError\n    ]\n})\nexport class BbDatePicker implements ControlValueAccessor, OnInit, OnDestroy {\n\n    // Readonly data.\n    readonly _yearRegex = /^(10|[1-9][0-9])\\d{2}$/; // Note: 1000 - 9999\n\n    // Inputs.\n    @Input() label: string | TemplateRef<any> | null = null;\n    @Input() hint: string | TemplateRef<any> | null = null;\n    @Input() dayPlaceholder: string | null = 'dd';\n    @Input() monthPlaceholder: string | null = 'mm';\n    @Input() yearPlaceholder: string | null = 'yyyy';\n    @Input({transform: booleanAttribute}) required: boolean = false;\n    @Input({transform: booleanAttribute}) grouped: boolean = false;\n    @Input({transform: booleanAttribute}) readonly: boolean = false;\n    @Input({transform: booleanAttribute}) hideErrors: boolean = false;\n\n    @Input({transform: booleanAttribute})\n    set disabled(value: boolean) {\n        this._disabled = value;\n        this._disabled ? this.form?.disable() : this.form?.enable();\n        this._changeDetectorRef.markForCheck();\n    }\n\n    get disabled() {\n        return this._disabled;\n    }\n\n    @Input()\n    set years(value: [string | number, string | number] | null) {\n        this.parseYears(value);\n    }\n\n    // Forms.\n    form: FormGroup;\n\n    // Data.\n    data$: Observable<{\n        days?: { label: string, value: number }[],\n        months?: { label: string, value: number }[],\n        years?: number[] | null\n    }>;\n    years$ = new BehaviorSubject<number[] | null>(null);\n\n    get value() {\n        return this.formToDateString(this.form?.value);\n    }\n\n    @Input()\n    set value(value: string | null) {\n        this.parseDateStringInForm(value);\n        this.valueChange.emit(this.value);\n    }\n\n    @Output() valueChange = new EventEmitter<string | null>();\n\n    // State.\n    error: boolean = false;\n    private _disabled: boolean = false;\n\n    // Callbacks.\n    onTouchedCallback: () => void = () => ({});\n    onChangeCallback: (_: string | null) => void = () => ({});\n\n    // Subscriptions.\n    private _subscription = new Subscription();\n\n    constructor(private _changeDetectorRef: ChangeDetectorRef,\n                @Inject(LOCALIZE_ID) private _localizeId: Observable<string>) {\n        this.composeForm();\n    }\n\n    ngOnInit() {\n        this.getData();\n        this.handleChanges();\n    }\n\n    ngOnDestroy() {\n        this._subscription?.unsubscribe();\n    }\n\n    writeValue(value: string | null) {\n        this.parseDateStringInForm(value);\n    }\n\n    registerOnChange(method: (_: string | null) => void) {\n        this.onChangeCallback = method;\n    }\n\n    registerOnTouched(method: () => void) {\n        this.onTouchedCallback = method;\n    }\n\n    setDisabledState(isDisabled: boolean) {\n        this.disabled = isDisabled;\n    }\n\n    onErrorChange(error: { token: string, data?: any } | null) {\n        this.error = !!error;\n    }\n\n    validate({value}: FormControl<string>) {\n        if (value === null || value === undefined) {\n            return null;\n        }\n\n        const data = this.parseDateString(value);\n        const date = new Date(data?.year, data?.month - 1, data?.day);\n\n        const maxDays = this.getDaysInMonth(data?.month, `${data?.year}`);\n\n        const isInvalidDate = date.toString() === 'Invalid Date';\n        const exceededMaxDays = data?.day > maxDays;\n\n        return (isInvalidDate || exceededMaxDays) && {\n            invalidDate: true\n        };\n    }\n\n    private handleChanges() {\n        const dateOrNull$ = this.form.valueChanges.pipe(\n            map(value => this.formToDateString(value)),\n            distinctUntilChanged()\n        );\n\n        const subscription = dateOrNull$.subscribe(() => {\n            this.valueChange.emit(this.value);\n            this.onChangeCallback(this.value);\n        });\n        this._subscription.add(subscription);\n    }\n\n    private getData() {\n        const years$ = this.years$.asObservable();\n        const months$ = this.getMonthData();\n        const days$ = this.getDayData();\n\n        this.data$ = combineLatest([years$, months$, days$]).pipe(\n            map(([years, months, days]) => ({years, months, days})),\n            tap(data => this.verifyListData(data?.days?.length, data?.years))\n        );\n    }\n\n    private verifyListData(maxDays: number, years: number[] | null) {\n        const dayControl = this.form.get('day');\n        if (dayControl?.value !== null && dayControl?.value > maxDays) {\n            dayControl.patchValue(maxDays);\n        }\n\n        const yearControl = this.form.get('year');\n        if (years !== null && yearControl?.value !== null && this._yearRegex.test(yearControl?.value)) {\n            const selectedYear = Number(yearControl?.value);\n\n            const firstYear = Math.min(...years);\n            const lastYear = Math.max(...years);\n\n            if (selectedYear < firstYear || selectedYear > lastYear) {\n                Promise.resolve().then(() => yearControl.patchValue(null));\n            }\n        }\n    }\n\n    private getDayData() {\n        const count$ = this.form.valueChanges.pipe(\n            startWith(this.form?.value as object),\n            map(({month, year}) => this.getDaysInMonth(month, year)),\n            distinctUntilChanged()\n        );\n\n        return count$.pipe(\n            map(count => Array(count).fill(0).map((_, index) => ({\n                label: `${index + 1}`,\n                value: index + 1\n            })))\n        );\n    }\n\n    private getMonthData() {\n        return this._localizeId.pipe(\n            map(locale => {\n                return Array(12).fill(0).map((_, month) => {\n                    const date = new Date(2000, month, 1);\n                    const label = formatDate(date, 'LLLL', locale);\n                    return {label, value: month + 1};\n                });\n            })\n        );\n    }\n\n    private composeForm() {\n        const {required, pattern, minLength, maxLength} = Validators;\n        const yearPattern = pattern(this._yearRegex);\n        const yearValidators = [required, yearPattern, minLength(4), maxLength(4)];\n\n        this.form = new FormGroup({\n            day: new FormControl<number>(null, required),\n            month: new FormControl<number>(null, required),\n            year: new FormControl<number>(null, yearValidators)\n        });\n\n        if (this.disabled) {\n            this.form?.disable();\n        }\n    }\n\n    private parseDateStringInForm(value: string | null) {\n        // If the date string was not a valid format, reset the form.\n        if (!this.isValidDateString(value)) {\n            if (value !== null) {\n                this.form?.reset({year: null, month: null, day: null}, {emitEvent: false});\n            }\n            return;\n        }\n\n        // Parse the date string and save in the form.\n        const data = this.parseDateString(value);\n        const year = data?.year !== null && data?.year !== undefined\n            ? this.padString(`${data?.year}`, 4, '0')\n            : null;\n        const formData = {...(data ?? {}), year};\n\n        this.form?.patchValue(formData, {emitEvent: false});\n    }\n\n    private parseDateString(value: string) {\n        if (!this.isValidDateString(value)) {\n            return null;\n        }\n\n        // Parse the date string.\n        const [year, month, day] = value?.split('-');\n\n        return {\n            day: day ? parseInt(day, 10) : null,\n            month: month ? parseInt(month, 10) : null,\n            year: year ? parseInt(year, 10) : null\n        };\n    }\n\n    private parseYears(values: [string | number, string | number] | null) {\n        if (!values) {\n            return this.years$.next(null);\n        }\n\n        // Parse the values to years (in numbers).\n        const [first, last] = values;\n        const firstYear = this.parseYearFormat(first);\n        const lastYear = this.parseYearFormat(last);\n\n        // Check cases in where we cannot parse.\n        if (firstYear === null || lastYear === null) {\n            return this.years$.next(null);\n        }\n\n        const difference = firstYear - lastYear;\n        const absoluteDifference = Math.abs(difference) + 1;\n\n        // Create an array with years.\n        const years = Array(absoluteDifference)\n            .fill(0)\n            .map((_, index) => difference < 0 ? (firstYear + index) : (firstYear - index));\n\n        // Validate we have one or more years.\n        if (years?.length <= 0) {\n            return this.years$.next(null);\n        }\n\n        // Push the years.\n        return this.years$.next(years);\n    }\n\n    private formToDateString(data: { year: number, month: number, day: number }) {\n        if (this.form?.invalid) {\n            return null;\n        }\n\n        if (data === null || data === undefined) {\n            return null;\n        }\n\n        const {year, month, day} = data;\n        const prefixedMonth = this.padString(`${month}`, 2, '0');\n        const prefixedDay = this.padString(`${day}`, 2, '0');\n\n        return [year, prefixedMonth, prefixedDay].join('-');\n    }\n\n    private parseYearFormat = (value: string | number) => {\n        // Transform the value to a definitive string.\n        const yearString = `${value}`;\n        const currentFullYear = new Date().getFullYear();\n\n        // Handle default \"current\" syntax.\n        if (yearString === 'current') {\n            return currentFullYear;\n        }\n\n        // Handle \"current + {amount}\" syntax.\n        if (/^current\\s?\\+\\s?\\d+$/.test(yearString)) {\n            const amount = Number(yearString?.split('+')?.[1]?.trim()) ?? 0;\n            return currentFullYear + amount;\n        }\n\n        // Handle \"current - {amount}\" syntax.\n        if (/^current\\s?-\\s?\\d+$/.test(yearString)) {\n            const amount = Number(yearString?.split('-')?.[1]?.trim()) ?? 0;\n            return currentFullYear - amount;\n        }\n\n        // Handling the default number case.\n        if (/^[0-9]{4}$/.test(yearString)) {\n            return Number(yearString);\n        }\n\n        // We could not parse it.\n        return null;\n    };\n\n    private getDaysInMonth = (month: number | null = null, year: string | null = null) => {\n        if (this.form?.invalid || month === null || year === null) {\n            return 31;\n        }\n\n        const parsedYear = parseInt(year, 10);\n        return new Date(parsedYear, month, 0).getDate();\n    };\n\n    private isValidDateString = (value: unknown) => {\n        return typeof value === 'string' && /^[0-9]{4}-[0-9]{2}-[0-9]{2}$/.test(value);\n    };\n\n    private padString = (value: string, maxLength: number, fillString: string = '0') => {\n        const count = maxLength - value.length;\n        for (let index = 0; index < count; index++) {\n            value = `${fillString}${value}`;\n        }\n\n        return value;\n    };\n\n}\n","<!-- Label of the date picker. -->\n@if (label; as labelContent) {\n    <label class=\"bb-date-picker-label\">\n        <ng-template [bbTemplate]=\"labelContent\">{{ labelContent }}</ng-template>\n    </label>\n}\n\n@if (data$ | async; as data) {\n    <!-- The form containing the year/month/day fields. -->\n    <div [formGroup]=\"form\"\n         class=\"bb-date-picker-container\">\n        <div class=\"bb-date-picker-item\">\n            <bb-form-control hideErrors>\n                <select [class.has-value]=\"!!form?.get('day')?.value\"\n                        bbInput\n                        autocomplete=\"off\"\n                        formControlName=\"day\">\n                    <option [ngValue]=\"null\">{{ dayPlaceholder }}</option>\n                    @for (day of data?.days; track day?.value) {\n                        <option [value]=\"day?.value\">{{ day?.label }}</option>\n                    }\n                </select>\n            </bb-form-control>\n        </div>\n        <div class=\"bb-date-picker-item\">\n            <bb-form-control hideErrors>\n                <select [class.has-value]=\"!!form?.get('month')?.value\"\n                        bbInput\n                        autocomplete=\"off\"\n                        formControlName=\"month\">\n                    <option [ngValue]=\"null\">{{ monthPlaceholder }}</option>\n                    @for (month of data?.months; track month?.value) {\n                        <option [value]=\"month?.value\">{{ month?.label }}</option>\n                    }\n                </select>\n            </bb-form-control>\n        </div>\n        <div class=\"bb-date-picker-item\">\n            <bb-form-control hideErrors>\n                @if (data?.years?.length > 0) {\n                    <select [class.has-value]=\"!!form?.get('year')?.value\"\n                            bbInput\n                            autocomplete=\"off\"\n                            formControlName=\"year\">\n                        <option [ngValue]=\"null\">{{ yearPlaceholder }}</option>\n                        @for (year of data?.years; track year) {\n                            <option [value]=\"year\">{{ year }}</option>\n                        }\n                    </select>\n                } @else {\n                    <input [placeholder]=\"yearPlaceholder\"\n                           bbInput\n                           type=\"text\"\n                           inputmode=\"numeric\"\n                           minlength=\"4\"\n                           maxlength=\"4\"\n                           pattern=\"^[0-9]{4}$\"\n                           formControlName=\"year\"\n                           autocomplete=\"off\">\n                }\n            </bb-form-control>\n        </div>\n    </div>\n}\n\n<!-- The date picker error. -->\n@if (!hideErrors) {\n    <bb-form-error (errorChange)=\"onErrorChange($event)\"></bb-form-error>\n}\n<!-- The date picker hint. -->\n@if (hint; as hintContent) {\n    <p class=\"bb-date-picker-hint\">\n        <ng-template [bbTemplate]=\"hintContent\">{{ hintContent }}</ng-template>\n    </p>\n}\n","import {booleanAttribute, ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, forwardRef, inject, Input, numberAttribute, Output, TemplateRef, ViewEncapsulation} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport {BbImageUpload} from '../directives/image-upload.directive';\nimport {TooltipDirective} from '@bravobit/bb-foundation/tooltip';\nimport {BbFormError} from '../form-error/form-error.component';\nimport {BbFileDrop} from '../directives/file-drop.directive';\nimport {BbLocalize} from '@bravobit/bb-foundation/localize';\nimport {BbFileDataUrl} from '../pipes/file-data-url.pipe';\nimport {BbTemplate} from '@bravobit/bb-foundation/utils';\nimport {BbButton} from '../button/button.component';\nimport {AsyncPipe} from '@angular/common';\n\nlet nextUniqueId = 0;\n\n@Component({\n    selector: 'bb-image-control',\n    templateUrl: './image-control.component.html',\n    styleUrls: ['./image-control.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    providers: [\n        {provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => BbImageControl), multi: true}\n    ],\n    host: {\n        'class': 'bb-image-control',\n        '[class.disabled]': 'disabled',\n        '[class.required]': 'required',\n        '[class.grouped]': 'grouped',\n        '[class.error]': 'error'\n    },\n    imports: [BbButton, AsyncPipe, BbFileDataUrl, BbTemplate, BbImageUpload, BbLocalize, BbFileDrop, TooltipDirective, BbFormError]\n})\nexport class BbImageControl implements ControlValueAccessor {\n\n    // Dependencies.\n    private readonly _changeDetectorRef: ChangeDetectorRef = inject(ChangeDetectorRef);\n\n    // Readonly data.\n    readonly labelId = `bb-image-control-${nextUniqueId++}`;\n\n    // Inputs.\n    @Input() label: string | TemplateRef<any> | null = null;\n    @Input() hint: string | TemplateRef<any> | null = null;\n    @Input() buttonLabel: string | null = null;\n    @Input() imageUrl: string | null = null;\n    @Input() mode: 'aspect-fit' | 'aspect-fill' = 'aspect-fit';\n    @Input() type: 'png' | 'jpg' = 'png';\n    @Input({transform: numberAttribute}) cropWidth: number = 320;\n    @Input({transform: numberAttribute}) visualMaxWidth: number | null = null;\n    @Input({transform: numberAttribute}) aspectRatio: number = 1;\n    @Input({transform: booleanAttribute}) grouped: boolean = false;\n    @Input({transform: booleanAttribute}) required: boolean = false;\n    @Input({transform: booleanAttribute}) disabled: boolean = false;\n    @Input({transform: booleanAttribute}) hideErrors: boolean = false;\n\n    // Outputs.\n    @Output() delete = new EventEmitter<void>();\n\n    // State.\n    value: File | null = null;\n    error: boolean = false;\n\n    // Callbacks.\n    onTouchedCallback: () => void = () => ({});\n    onChangeCallback: (_: File | null) => void = () => ({});\n\n    onFile(file: File) {\n        if (this.disabled || !file || !['image/png', 'image/jpeg'].includes(file?.type)) {\n            return;\n        }\n\n        this.value = file;\n        this._changeDetectorRef.markForCheck();\n        this.onChangeCallback?.(this.value);\n    }\n\n    async onDelete() {\n        if (this.disabled) {\n            return;\n        }\n\n        if (this.value) {\n            this.value = null;\n            this._changeDetectorRef.markForCheck();\n            return this.onChangeCallback?.(this.value);\n        }\n\n        return this.delete?.emit();\n    }\n\n    writeValue(value: File | null) {\n        this.value = value;\n        this._changeDetectorRef.markForCheck();\n    }\n\n    registerOnChange(method: (_: File | null) => void) {\n        this.onChangeCallback = method;\n    }\n\n    registerOnTouched(method: () => void) {\n        this.onTouchedCallback = method;\n    }\n\n    setDisabledState(isDisabled: boolean) {\n        this.disabled = isDisabled;\n        this._changeDetectorRef.markForCheck();\n    }\n\n    onErrorChange(error: { token: string, data?: any } | null) {\n        this.error = !!error;\n    }\n\n}\n","<!-- Label of the form control. -->\n@if (label; as labelContent) {\n    <label [attr.for]=\"labelId\"\n           class=\"bb-image-control-label\">\n        <ng-template [bbTemplate]=\"labelContent\">{{ labelContent }}</ng-template>\n    </label>\n}\n\n<div [style.aspect-ratio]=\"1 / aspectRatio\"\n     [style.max-width.px]=\"visualMaxWidth ?? cropWidth\"\n     [bbFileDropDisabled]=\"disabled\"\n     (bbFileDrop)=\"onFile($event?.[0])\"\n     class=\"bb-image-control-image\">\n    @if ((value | bbFileDataUrl | async) || imageUrl; as dataUri) {\n        <div [style.background-image]=\"'url(' + dataUri + ')'\"></div>\n    }\n</div>\n\n@if (!hideErrors) {\n    <bb-form-error (errorChange)=\"onErrorChange($event)\"></bb-form-error>\n}\n\n@if (hint; as hintContent) {\n    <p class=\"bb-image-control-hint\">\n        <ng-template [bbTemplate]=\"hintContent\">{{ hintContent }}</ng-template>\n    </p>\n}\n\n@if (!disabled) {\n\n    <div class=\"bb-image-control-button\">\n        <button [bbImageUploadWidth]=\"cropWidth\"\n                [bbImageUploadHeight]=\"cropWidth * aspectRatio\"\n                [disabled]=\"disabled\"\n                [bbImageUploadMode]=\"mode\"\n                [bbImageUploadType]=\"type\"\n                (onFile)=\"onFile($event)\"\n                bbImageUpload\n                type=\"button\"\n                class=\"secondary small\"\n                bb-button>\n            {{ buttonLabel ?? ('image-control.button_label' | bbLocalize) }}\n            <ng-content ngProjectAs=\"[suffix]\"\n                        select=\"[suffix]\"></ng-content>\n        </button>\n\n        @if (value || (imageUrl && delete?.observed)) {\n            <button (click)=\"onDelete()\"\n                    type=\"button\"\n                    class=\"bb-image-control-link\">\n                {{ 'image-control.delete_label' | bbLocalize }}\n            </button>\n        }\n    </div>\n}\n","import {\n    booleanAttribute,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ElementRef,\n    EventEmitter,\n    forwardRef, inject,\n    Input,\n    numberAttribute,\n    OnDestroy,\n    OnInit,\n    Output,\n    TemplateRef,\n    ViewChild,\n    ViewEncapsulation\n} from '@angular/core';\nimport {ControlValueAccessor, FormControl, NG_VALIDATORS, NG_VALUE_ACCESSOR, ReactiveFormsModule, Validator} from '@angular/forms';\nimport {BbFormError} from '../form-error/form-error.component';\nimport {getControlValue} from '@bravobit/bb-foundation/rxjs';\nimport {BbTemplate} from '@bravobit/bb-foundation/utils';\nimport {distinctUntilChanged, map} from 'rxjs/operators';\nimport {Platform} from '@angular/cdk/platform';\nimport {Observable, Subscription} from 'rxjs';\nimport {AsyncPipe} from '@angular/common';\n\n@Component({\n    selector: 'bb-pincode-control',\n    templateUrl: './pincode-control.component.html',\n    styleUrls: ['./pincode-control.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    providers: [\n        {provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => BbPincodeControl), multi: true},\n        {provide: NG_VALIDATORS, useExisting: BbPincodeControl, multi: true}\n    ],\n    host: {\n        'class': 'bb-pincode-control',\n        '[class.required]': 'required',\n        '[class.readonly]': 'readonly',\n        '[class.grouped]': 'grouped',\n        '[class.error]': 'error'\n    },\n    imports: [ReactiveFormsModule, BbTemplate, BbFormError, AsyncPipe]\n})\nexport class BbPincodeControl implements OnInit, OnDestroy, ControlValueAccessor, Validator {\n\n    // Dependencies.\n    private readonly _platform: Platform = inject(Platform);\n    private readonly _changeDetectorRef: ChangeDetectorRef = inject(ChangeDetectorRef);\n\n    // Views.\n    @ViewChild('htmlInputElement', {static: true}) htmlInputElementRef: ElementRef<HTMLInputElement>;\n\n    // Inputs.\n    @Input() label: string | TemplateRef<any> | null = null;\n    @Input() hint: string | TemplateRef<any> | null = null;\n    @Input() placeholder: string | null = null;\n    @Input({transform: booleanAttribute}) autoFocus: boolean = false;\n    @Input({transform: booleanAttribute}) required: boolean = false;\n    @Input({transform: booleanAttribute}) readonly: boolean = false;\n    @Input({transform: booleanAttribute}) grouped: boolean = false;\n    @Input({transform: numberAttribute}) digits: number = 6;\n\n    @Input()\n    get value() {\n        return this.control?.value;\n    }\n\n    @Output() valueChange = new EventEmitter<string | null>();\n\n    set value(value: string | null) {\n        this.control?.setValue(value);\n        this.valueChange.emit(value);\n    }\n\n    // Data.\n    data$: Observable<{\n        items?: { index: number, value: string, active: boolean }[]\n    }>;\n\n    // State.\n    control = new FormControl<string>(null);\n    error: boolean = false;\n\n    // Callbacks.\n    onTouchedCallback: () => void = () => ({});\n    onChangeCallback: (_: string | null) => void = () => ({});\n\n    // Subscriptions.\n    private _subscription = new Subscription();\n\n    ngOnInit() {\n        this.setData();\n        this.handleValueChanges();\n        this.handleAutoFocus();\n    }\n\n    ngOnDestroy() {\n        this._subscription?.unsubscribe();\n    }\n\n    writeValue(value: string | null) {\n        this.value = value;\n    }\n\n    registerOnChange(method: (_: string | null) => void) {\n        this.onChangeCallback = method;\n    }\n\n    registerOnTouched(method: () => void) {\n        this.onTouchedCallback = method;\n    }\n\n    setDisabledState(isDisabled: boolean) {\n        isDisabled\n            ? this.control?.disable()\n            : this.control?.enable();\n        this._changeDetectorRef.markForCheck();\n    }\n\n    onErrorChange(error: { token: string, data?: any } | null) {\n        this.error = !!error;\n    }\n\n    validate(control: FormControl) {\n        const value = control?.value;\n        if (value === null || value === undefined) {\n            return null;\n        }\n\n        if (value?.length > this.digits) {\n            return {\n                maxlength: {\n                    actualLength: value?.length ?? 0,\n                    requiredLength: this.digits ?? 0\n                }\n            };\n        }\n\n        if (value?.length < this.digits) {\n            return {\n                minlength: {\n                    actualLength: value?.length ?? 0,\n                    requiredLength: this.digits ?? 0\n                }\n            };\n        }\n\n        return null;\n    }\n\n    focusEnd() {\n        const input = this.htmlInputElementRef?.nativeElement;\n        if (input === null || input === undefined) {\n            return;\n        }\n        const length = input?.value?.length ?? 0;\n        input?.focus();\n        input.setSelectionRange(length, length);\n    }\n\n    private setData() {\n        this.data$ = getControlValue<string>(this.control).pipe(\n            map(value => value ?? ''),\n            map(value => {\n                const items = Array(this.digits)\n                    .fill(0)\n                    .map((_, index, array) => ({\n                        index: index,\n                        value: value?.[index] ?? '',\n                        active: Math.min(array?.length - 1, value?.length) === index\n                    }));\n                return {items};\n            })\n        );\n    }\n\n    private handleValueChanges() {\n        const subscription = this.control.valueChanges.pipe(\n            distinctUntilChanged()\n        ).subscribe(() => {\n            this.valueChange.emit(this.value);\n            this.onChangeCallback(this.value);\n        });\n        this._subscription.add(subscription);\n    }\n\n    private handleAutoFocus() {\n        if (!this.autoFocus || !this._platform.isBrowser) {\n            return;\n        }\n        setTimeout(() => this.focusEnd(), 0);\n    }\n\n}\n","<!-- The label of the input. -->\n@if (label; as labelContent) {\n    <label class=\"bb-pincode-control-label\">\n        <ng-template [bbTemplate]=\"labelContent\">{{ labelContent }}</ng-template>\n    </label>\n}\n\n<input #htmlInputElement\n       [formControl]=\"control\"\n       [minlength]=\"digits\"\n       [maxlength]=\"digits\"\n       [readonly]=\"readonly\"\n       inputmode=\"numeric\"\n       tabindex=\"-1\"\n       autocomplete=\"off\"\n       class=\"bb-pincode-control-element\"\n       type=\"text\">\n\n@if (data$ | async; as data) {\n    <div class=\"bb-pincode-control-container\">\n        @for (item of data?.items; track item?.index) {\n            <div [class.active]=\"item?.active\"\n                 [class.has-value]=\"!!item?.value\"\n                 [attr.data-placeholder]=\"placeholder\"\n                 (click)=\"focusEnd()\"\n                 class=\"bb-pincode-control-cell\">\n                {{ item?.value }}\n            </div>\n        }\n    </div>\n}\n\n<bb-form-error (errorChange)=\"onErrorChange($event)\"></bb-form-error>\n\n<!-- The file picker hint. -->\n@if (hint; as hintContent) {\n    <p class=\"bb-pincode-control-hint\">\n        <ng-template [bbTemplate]=\"hintContent\">{{ hintContent }}</ng-template>\n    </p>\n}\n","import {ELEMENTS_CONFIG, ELEMENTS_ERRORS, ELEMENTS_ICONS, ElementsConfig} from './elements.interfaces';\nimport {EnvironmentProviders, makeEnvironmentProviders, Provider} from '@angular/core';\n\nexport function provideElementsConfig(config?: ElementsConfig): EnvironmentProviders {\n    const providers: Provider[] = [\n        {provide: ELEMENTS_CONFIG, useValue: config},\n        {\n            provide: ELEMENTS_ERRORS,\n            multi: true,\n            useValue: {\n                unknown: () => 'form-control-errors.unknown',\n                required: () => 'form-control-errors.required',\n                pattern: () => 'form-control-errors.pattern',\n                email: () => 'form-control-errors.email',\n                emailTaken: () => 'form-control-errors.emailTaken',\n                passwordMatch: () => 'form-control-errors.passwordMatch',\n                confirm: () => 'form-control-errors.confirm',\n                fullNumber: () => 'form-control-errors.fullNumber',\n                min: ({min}) => ({token: 'form-control-errors.min', data: {min}}),\n                max: ({max}) => ({token: 'form-control-errors.max', data: {max}}),\n                maxFileSize: ({maxSize}) => ({token: 'form-control-errors.maxFileSize', data: {maxSize}}),\n                maxTotalFileSize: ({max, current}) => ({token: 'form-control-errors.maxTotalFileSize', data: {max, current}}),\n                minDate: ({date}) => ({token: 'form-control-errors.minDate', data: {date}}),\n                maxDate: ({date}) => ({token: 'form-control-errors.maxDate', data: {date}}),\n                invalidDate: () => 'form-control-errors.invalidDate',\n                invalidFileType: () => 'form-control-errors.invalidFileType',\n                invalidFiles: () => 'form-control-errors.invalidFiles',\n                minlength: ({requiredLength, actualLength}) => ({\n                    token: 'form-control-errors.minlength',\n                    data: {requiredLength, actualLength}\n                }),\n                maxlength: ({requiredLength, actualLength}) => ({\n                    token: 'form-control-errors.maxlength',\n                    data: {requiredLength, actualLength}\n                })\n            }\n        }\n    ];\n\n    const useMaterialDesignIcons = config?.useMaterialDesignIcons ?? true;\n    if (useMaterialDesignIcons) {\n        providers.push({\n            provide: ELEMENTS_ICONS,\n            multi: true,\n            useValue: {namespace: 'material', className: 'material-icons', uses: 'content', type: 'font'}\n        });\n    }\n\n    const iconFonts = config?.iconFonts ?? [];\n    for (const font of iconFonts) {\n        providers.push({provide: ELEMENTS_ICONS, multi: true, useValue: font});\n    }\n\n    if (config?.errors) {\n        providers.push({provide: ELEMENTS_ERRORS, multi: true, useValue: config?.errors});\n    }\n\n    return makeEnvironmentProviders(providers);\n}\n","import {BbMultiFileControl} from './multi-file-control/multi-file-control.component';\nimport {BbExtraErrorControls} from './directives/extra-error-controls.directive';\nimport {BbPincodeControl} from './pincode-control/pincode-control.component';\nimport {BbCheckboxGroup} from './checkbox-group/checkbox-group.component';\nimport {ColorPickerDirective} from './directives/color-picker.directive';\nimport {BbImageControl} from './image-control/image-control.component';\nimport {BbFormSubmitter} from './directives/form-submitter.directive';\nimport {BbImagePicker} from './image-picker/image-picker.component';\nimport {BbFormControl} from './form-control/form-control.component';\nimport {BbColorSlider} from './color-slider/color-slider.component';\nimport {BbColorPicker} from './color-picker/color-picker.component';\nimport {BbRadioButton} from './radio-button/radio-button.component';\nimport {BbImageUpload} from './directives/image-upload.directive';\nimport {BbFilePicker} from './file-picker/file-picker.component';\nimport {BbDatePicker} from './date-picker/date-picker.component';\nimport {BbRadioGroup} from './radio-group/radio-group.component';\nimport {BbFormSubmit} from './directives/form-submit.directive';\nimport {BbFormGroup} from './form-group/form-group.component';\nimport {BbFormError} from './form-error/form-error.component';\nimport {BbAnchor, BbButton} from './button/button.component';\nimport {ModuleWithProviders, NgModule} from '@angular/core';\nimport {BbFileDrop} from './directives/file-drop.directive';\nimport {BbRelativeTime} from './pipes/relative-time.pipe';\nimport {BbCheckbox} from './checkbox/checkbox.component';\nimport {provideElementsConfig} from './elements.config';\nimport {BbSpinner} from './spinner/spinner.component';\nimport {ElementsConfig} from './elements.interfaces';\nimport {BbInput} from './directives/input.directive';\nimport {BbFileImage} from './pipes/file-image.pipe';\nimport {BbAvatar} from './avatar/avatar.component';\nimport {BbFileSize} from './pipes/file-size.pipe';\nimport {BbIcon} from './icon/icon.component';\nimport {BbDate} from './pipes/date.pipe';\n\nconst IMPORTS_EXPORTS = [\n    // Directives.\n    BbFormError,\n    BbFormSubmit,\n    BbFormSubmitter,\n    BbInput,\n    BbImageUpload,\n    BbExtraErrorControls,\n    BbFileDrop,\n    ColorPickerDirective,\n    // Pipes.\n    BbFileSize,\n    BbFileImage,\n    BbRelativeTime,\n    BbDate,\n    // Components.\n    BbButton,\n    BbAnchor,\n    BbSpinner,\n    BbIcon,\n    BbFormControl,\n    BbFormGroup,\n    BbCheckbox,\n    BbCheckboxGroup,\n    BbRadioGroup,\n    BbRadioButton,\n    BbAvatar,\n    BbMultiFileControl,\n    BbFilePicker,\n    BbImagePicker,\n    BbDatePicker,\n    BbColorSlider,\n    BbColorPicker,\n    BbImageControl,\n    BbPincodeControl\n];\n\n@NgModule({\n    imports: [...IMPORTS_EXPORTS],\n    exports: [...IMPORTS_EXPORTS]\n})\nexport class ElementsModule {\n\n    static forRoot(config?: ElementsConfig): ModuleWithProviders<ElementsModule> {\n        return {\n            ngModule: ElementsModule,\n            providers: [\n                provideElementsConfig(config)\n            ]\n        };\n    }\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["nextUniqueId","i1.BbFormControl","i1"],"mappings":"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"}