{"version":3,"file":"webilix-ngx-helper-m3.mjs","sources":["../../../ngx-helper-m3/src/lib/ngx-helper.config.ts","../../../ngx-helper-m3/src/lib/components/box/ngx-helper-box.interface.ts","../../../ngx-helper-m3/src/lib/components/box/ngx-helper-box.component.ts","../../../ngx-helper-m3/src/lib/components/box/ngx-helper-box.component.html","../../../ngx-helper-m3/src/lib/pipes/bank-card.pipe.ts","../../../ngx-helper-m3/src/lib/pipes/date.pipe.ts","../../../ngx-helper-m3/src/lib/pipes/duration.pipe.ts","../../../ngx-helper-m3/src/lib/pipes/file-size.pipe.ts","../../../ngx-helper-m3/src/lib/pipes/mobile.pipe.ts","../../../ngx-helper-m3/src/lib/pipes/number.pipe.ts","../../../ngx-helper-m3/src/lib/pipes/period.pipe.ts","../../../ngx-helper-m3/src/lib/pipes/price.pipe.ts","../../../ngx-helper-m3/src/lib/pipes/volume.pipe.ts","../../../ngx-helper-m3/src/lib/pipes/weight.pipe.ts","../../../ngx-helper-m3/src/lib/components/value/ngx-helper-value.pipe.ts","../../../ngx-helper-m3/src/lib/components/component.service.ts","../../../ngx-helper-m3/src/lib/components/card/ngx-helper-card.component.ts","../../../ngx-helper-m3/src/lib/components/card/ngx-helper-card.component.html","../../../ngx-helper-m3/src/lib/components/loader/ngx-helper-loader.component.ts","../../../ngx-helper-m3/src/lib/components/loader/ngx-helper-loader.component.html","../../../ngx-helper-m3/src/lib/components/page-group/ngx-helper-page-group.interface.ts","../../../ngx-helper-m3/src/lib/components/page-group/ngx-helper-page-group.component.ts","../../../ngx-helper-m3/src/lib/components/page-group/ngx-helper-page-group.component.html","../../../ngx-helper-m3/src/lib/components/progress/ngx-helper-progress.component.ts","../../../ngx-helper-m3/src/lib/components/progress/ngx-helper-progress.component.html","../../../ngx-helper-m3/src/lib/components/section/ngx-helper-section.component.ts","../../../ngx-helper-m3/src/lib/components/section/ngx-helper-section.component.html","../../../ngx-helper-m3/src/lib/components/section/column/ngx-helper-section-column.component.ts","../../../ngx-helper-m3/src/lib/components/section/column/ngx-helper-section-column.component.html","../../../ngx-helper-m3/src/lib/components/value/box/ngx-helper-value-box.component.ts","../../../ngx-helper-m3/src/lib/components/value/box/ngx-helper-value-box.component.html","../../../ngx-helper-m3/src/lib/components/value/list/ngx-helper-value-list.component.ts","../../../ngx-helper-m3/src/lib/components/value/list/ngx-helper-value-list.component.html","../../../ngx-helper-m3/src/lib/confirm/dialog/confirm-dialog.component.ts","../../../ngx-helper-m3/src/lib/confirm/dialog/confirm-dialog.component.html","../../../ngx-helper-m3/src/lib/confirm/bottom-sheet/confirm-bottom-sheet.component.ts","../../../ngx-helper-m3/src/lib/confirm/bottom-sheet/confirm-bottom-sheet.component.html","../../../ngx-helper-m3/src/lib/confirm/confirm.service.ts","../../../ngx-helper-m3/src/lib/container/container.interface.ts","../../../ngx-helper-m3/src/lib/container/dialog/container-dialog.component.ts","../../../ngx-helper-m3/src/lib/container/dialog/container-dialog.component.html","../../../ngx-helper-m3/src/lib/container/bottom-sheet/container-bottom-sheet.component.ts","../../../ngx-helper-m3/src/lib/container/bottom-sheet/container-bottom-sheet.component.html","../../../ngx-helper-m3/src/lib/container/container.service.ts","../../../ngx-helper-m3/src/lib/coordinates/get/get.component.ts","../../../ngx-helper-m3/src/lib/coordinates/get/get.component.html","../../../ngx-helper-m3/src/lib/coordinates/show/show.component.ts","../../../ngx-helper-m3/src/lib/coordinates/show/show.component.html","../../../ngx-helper-m3/src/lib/coordinates/ngx-helper-coordinates.service.ts","../../../ngx-helper-m3/src/lib/pipes/multi-line.pipe.ts","../../../ngx-helper-m3/src/lib/toast/toast/toast.component.ts","../../../ngx-helper-m3/src/lib/toast/toast/toast.component.html","../../../ngx-helper-m3/src/lib/toast/ngx-helper-toast.service.ts","../../../ngx-helper-m3/src/lib/http/download/download.component.ts","../../../ngx-helper-m3/src/lib/http/download/download.component.html","../../../ngx-helper-m3/src/lib/http/upload/upload.component.ts","../../../ngx-helper-m3/src/lib/http/upload/upload.component.html","../../../ngx-helper-m3/src/lib/http/ngx-helper-http.service.ts","../../../ngx-helper-m3/src/lib/directives/ngx-helper-mobile-view.directive.ts","../../../ngx-helper-m3/src/lib/directives/ngx-helper-sticky.directive.ts","../../../ngx-helper-m3/src/lib/pipes/safe.pipe.ts","../../../ngx-helper-m3/src/public-api.ts","../../../ngx-helper-m3/src/webilix-ngx-helper-m3.ts"],"sourcesContent":["import { EnvironmentProviders, InjectionToken, makeEnvironmentProviders, Provider } from '@angular/core';\n\nexport interface INgxHelperConfig {\n    readonly mobileWidth: number;\n\n    // PAGE GROUP\n    readonly pageGroupSidebarWidth: string;\n\n    // TOAST\n    readonly toastTimeout: number;\n    readonly toastXPosition: 'LEFT' | 'CENTER' | 'RIGHT';\n    readonly toastAllowDuplicates: boolean;\n    readonly toastResetDuplicates: boolean;\n    readonly toastProgressAnimation: 'DECREASE' | 'INCREASE';\n\n    // STICKY\n    readonly stickyView: {\n        readonly top?: string | { readonly desktopView: string; readonly mobileView: string };\n        readonly bottom?: string | { readonly desktopView: string; readonly mobileView: string };\n    };\n}\n\nexport const NGX_HELPER_CONFIG = new InjectionToken<Partial<INgxHelperConfig>>('NGX-HELPER-CONFIG');\n\nexport const provideNgxHelperConfig = (config: Partial<INgxHelperConfig>): EnvironmentProviders => {\n    const providers: Provider[] = [{ provide: NGX_HELPER_CONFIG, useValue: config }];\n\n    return makeEnvironmentProviders(providers);\n};\n","import { InjectionToken } from '@angular/core';\n\nexport const NGX_HELPER_BOX_DATA: InjectionToken<any> = new InjectionToken('NGX-HELPER-BOX-DATA');\n","import { Component, HostBinding, Injector, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { NgComponentOutlet } from '@angular/common';\nimport { ComponentType } from '@angular/cdk/portal';\n\nimport { NGX_HELPER_BOX_DATA } from './ngx-helper-box.interface';\n\n@Component({\n    selector: 'ngx-helper-box',\n    imports: [NgComponentOutlet],\n    templateUrl: './ngx-helper-box.component.html',\n    styleUrl: './ngx-helper-box.component.scss',\n})\nexport class NgxHelperBoxComponent implements OnInit, OnChanges {\n    @HostBinding('className') private className: string = 'ngx-helper-m3-box';\n    @HostBinding('style.padding') private paddingCSS!: string;\n\n    @Input({ required: false }) component?: ComponentType<any>;\n    @Input({ required: false }) data?: any;\n    @Input({ required: false }) padding: string = '1rem';\n    @Input({ required: false }) hideShadow: boolean = false;\n\n    public injector!: Injector;\n\n    ngOnInit(): void {\n        this.setInjector();\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        this.setInjector();\n    }\n\n    setInjector(): void {\n        this.paddingCSS = this.padding;\n        this.className = `ngx-helper-m3-box${this.hideShadow ? ' hide-shadow' : ''}`;\n        if (!this.component) return;\n\n        this.injector = Injector.create({\n            providers: [{ provide: NGX_HELPER_BOX_DATA, useValue: this.data }],\n        });\n    }\n}\n","@if (component) {\n<span *ngComponentOutlet=\"component; injector: injector\"></span>\n} @else {\n<ng-content></ng-content>\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { Helper } from '@webilix/helper-library';\n\n@Pipe({ name: 'ngxHelperBankCard' })\nexport class NgxHelperBankCardPipe implements PipeTransform {\n    transform(value?: string | null, options?: { view?: 'CARD' | 'BANK'; join?: string }): string {\n        if (value === undefined || value === null || !Helper.IS.string(value) || value === '') return '';\n\n        switch (options?.view) {\n            case 'BANK':\n                return Helper.BANK.findCard(value)?.title || '';\n            default:\n                return Helper.STRING.getBankCardView(value, options?.join || '-');\n        }\n    }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { Helper } from '@webilix/helper-library';\nimport { JalaliDateTime } from '@webilix/jalali-date-time';\n\nimport { DateFormats } from '../pipe.types';\n\n@Pipe({ name: 'ngxHelperDate' })\nexport class NgxHelperDatePipe implements PipeTransform {\n    transform(value?: Date | null, options?: { format?: DateFormats; timezone?: string }): string;\n    transform(value?: number | null, options?: { format?: DateFormats; timezone?: string }): string;\n    transform(value?: any, options?: { format?: DateFormats; timezone?: string }): string {\n        if (value === undefined || value === null || (!Helper.IS.date(value) && !Helper.IS.number(value))) return '';\n\n        const date: Date = typeof value === 'number' ? new Date(value) : value;\n        const jalali = JalaliDateTime();\n        const timezone: string =\n            options?.timezone && jalali.timezones().includes(options?.timezone) ? options?.timezone : 'Asia/Tehran';\n\n        switch (options?.format || 'DATE') {\n            case 'FULL':\n                return jalali.toFullText(date, { format: 'W، d N Y H:I', timezone });\n\n            case 'SHORT':\n                return jalali.toFullText(date, { format: 'Y/M/D', timezone });\n\n            case 'DATE':\n                return jalali.toFullText(date, { format: 'W، d N Y', timezone });\n\n            case 'TIME':\n                return jalali.toFullText(date, { format: 'H:I', timezone });\n\n            case 'WEEK':\n                const { from, to } = jalali.periodWeek(1, date, timezone);\n                return Helper.DATE.jalaliPeriod(from, to, timezone);\n\n            case 'MONTH':\n                return jalali.toFullText(date, { format: 'N Y', timezone });\n\n            case 'YEAR':\n                return jalali.toFullText(date, { format: 'Y', timezone });\n\n            default:\n                return jalali.toFullText(date, { format: options?.format, timezone });\n        }\n    }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { DurationFormats } from '../pipe.types';\n\n@Pipe({ name: 'ngxHelperDuration' })\nexport class NgxHelperDurationPipe implements PipeTransform {\n    transform(value?: number | null, options?: { format?: DurationFormats; english?: boolean }): string;\n    transform(value?: Date | null, options?: { format?: DurationFormats; english?: boolean }): string;\n    transform(value?: { from: Date } | null, options?: { format?: DurationFormats; english?: boolean }): string;\n    transform(value?: { to: Date } | null, options?: { format?: DurationFormats; english?: boolean }): string;\n    transform(value?: { from: Date; to: Date } | null, options?: { format?: DurationFormats; english?: boolean }): string;\n    transform(value?: any, options?: { format?: DurationFormats; english?: boolean }): string {\n        if (value === undefined || value === null) return '';\n\n        let seconds: number = 0;\n        if (Helper.IS.number(value)) seconds = Math.abs(value);\n        else if (Helper.IS.date(value)) seconds = Math.floor(Math.abs(new Date().getTime() - value.getTime()) / 1000);\n        else if (Helper.IS.object(value)) {\n            const from: Date = 'from' in value ? value.from : new Date();\n            const to: Date = 'to' in value ? value.to : new Date();\n            seconds = Math.floor(Math.abs(from.getTime() - to.getTime()) / 1000);\n        }\n\n        const days: number = Math.floor(seconds / (24 * 60 * 60));\n        seconds -= days * (24 * 60 * 60);\n        const hours: number = Math.floor(seconds / (60 * 60));\n        seconds -= hours * (60 * 60);\n        const minutes: number = Math.floor(seconds / 60);\n        seconds -= minutes * 60;\n\n        const hasDays: boolean = days !== 0;\n        const time: string = [hours, minutes, seconds].map((v) => v.toString().padStart(2, '0')).join(':');\n\n        switch (options?.format || 'TEXT') {\n            case 'TEXT':\n                const hasTime: boolean = !!hours || !!minutes || !!seconds;\n                const day: string = hasDays\n                    ? Helper.NUMBER.format(days, 'EN') + (!!options?.english ? (days === 1 ? ' day' : ' days') : ' روز')\n                    : '';\n                const join = hasDays && hasTime ? (!!options?.english ? ', ' : ' و ') : '';\n                return (day + join + (!hasDays || hasTime ? time : '')).trim();\n\n            case 'FULL':\n                return (hasDays ? '(' + Helper.NUMBER.format(days, 'EN') + ') ' : '') + time;\n\n            case 'DAY':\n                return Helper.NUMBER.format(days + (hours !== 0 || minutes !== 0 ? 1 : 0), !!options?.english ? 'EN' : 'FA');\n\n            case 'HOUR':\n                return Helper.NUMBER.format(days * 24 + hours + (minutes !== 0 ? 1 : 0), !!options?.english ? 'EN' : 'FA');\n\n            case 'MINUTE':\n                return Helper.NUMBER.format(days * 24 * 60 + hours * 60 + minutes, !!options?.english ? 'EN' : 'FA');\n\n            case 'SECOND':\n                return Helper.NUMBER.format(\n                    days * 24 * 3600 + hours * 3600 + minutes * 60 + seconds,\n                    !!options?.english ? 'EN' : 'FA',\n                );\n        }\n    }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { Helper } from '@webilix/helper-library';\n\n@Pipe({ name: 'ngxHelperFileSize' })\nexport class NgxHelperFileSizePipe implements PipeTransform {\n    transform(value?: number | null, options?: { english?: boolean }): string {\n        if (value === undefined || value === null || !Helper.IS.number(value)) return '';\n\n        return Helper.NUMBER.toFileSize(value, !!options?.english ? 'EN' : 'FA');\n    }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { Helper } from '@webilix/helper-library';\n\n@Pipe({ name: 'ngxHelperMobile' })\nexport class NgxHelperMobilePipe implements PipeTransform {\n    transform(value?: string | null, options?: { join?: string }): string {\n        if (value === undefined || value === null || !Helper.IS.string(value) || value === '') return '';\n\n        return Helper.STRING.getMobileView(value, options?.join || '-');\n    }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { Helper } from '@webilix/helper-library';\n\n@Pipe({ name: 'ngxHelperNumber' })\nexport class NgxHelperNumberPipe implements PipeTransform {\n    transform(value?: number | null, options?: { fractionDigits?: number; english?: boolean }): string {\n        if (value === undefined || value === null || !Helper.IS.number(value)) return '';\n\n        value = options?.fractionDigits ? +value.toFixed(options?.fractionDigits) : value;\n        return Helper.NUMBER.format(value, options?.english ? 'EN' : 'FA');\n    }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { Helper } from '@webilix/helper-library';\n\n@Pipe({ name: 'ngxHelperPeriod' })\nexport class NgxHelperPeriodPipe implements PipeTransform {\n    transform(value?: Date | null, options?: { timezone?: string }): string;\n    transform(value?: { from: Date } | null, options?: { timezone?: string }): string;\n    transform(value?: { to: Date } | null, options?: { timezone?: string }): string;\n    transform(value?: { from: Date; to: Date } | null, options?: { timezone?: string }): string;\n    transform(value?: any, options?: { timezone?: string }): string {\n        if (value === undefined || value === null) return '';\n\n        const from: Date = Helper.IS.date(value) ? value : 'from' in value ? value.from : new Date();\n        const to: Date = Helper.IS.date(value) ? new Date() : 'to' in value ? value.to : new Date();\n\n        return Helper.DATE.jalaliPeriod(from, to, options?.timezone || '');\n    }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { Helper } from '@webilix/helper-library';\n\n@Pipe({ name: 'ngxHelperPrice' })\nexport class NgxHelperPricePipe implements PipeTransform {\n    transform(value?: number | null, options?: { currency?: string; short?: boolean; english?: boolean }): string {\n        if (value === undefined || value === null || !Helper.IS.number(value) || value < 0) return '';\n\n        const getPrice = (...titles: [string, string][]): string => {\n            if (value === undefined || value === null) return '';\n\n            const price: string = Helper.NUMBER.format(+value.toFixed(2), !!options?.english ? 'EN' : 'FA');\n            const unit: string = titles[options?.short ? 0 : 1][options?.english ? 0 : 1];\n            const currency: string = options?.currency ? ' ' + options?.currency : '';\n\n            return `${price} ${unit}${currency}`;\n        };\n\n        if (value < 1000) return getPrice(['', ''], ['', '']);\n\n        value /= 1000;\n        if (value < 1000) return getPrice(['T', 'ه'], ['Thousand', 'هزار']);\n\n        value /= 1000;\n        if (value < 1000) return getPrice(['M', 'م'], ['Million', 'میلیون']);\n\n        value /= 1000;\n        return getPrice(['B', 'د'], ['Billion', 'میلیارد']);\n    }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { Helper } from '@webilix/helper-library';\n\n@Pipe({ name: 'ngxHelperVolume' })\nexport class NgxHelperVolumePipe implements PipeTransform {\n    transform(value?: number | null, options?: { short?: boolean; english?: boolean }): string {\n        if (value === undefined || value === null || !Helper.IS.number(value) || value < 0) return '';\n\n        const getVolume = (...titles: [string, string][]): string => {\n            if (value === undefined || value === null) return '';\n\n            const volume: string = Helper.NUMBER.format(+value.toFixed(2), options?.english ? 'EN' : 'FA');\n            const shortIndex: number = options?.short ? 0 : 1;\n            const titleIndex: number = options?.english ? 0 : 1;\n            return `${volume} ${titles[shortIndex][titleIndex]}`;\n        };\n\n        if (value === 0) return getVolume(['', ''], ['', '']);\n\n        if (value < 1000) return getVolume(['ML', 'م'], ['Milliliter', 'میلی لیتر']);\n\n        value /= 1000;\n        return getVolume(['L', 'ل'], ['Liter', 'لیتر']);\n    }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { Helper } from '@webilix/helper-library';\n\n@Pipe({ name: 'ngxHelperWeight' })\nexport class NgxHelperWeightPipe implements PipeTransform {\n    transform(value?: number | null, options?: { short?: boolean; english?: boolean }): string {\n        if (value === undefined || value === null || !Helper.IS.number(value) || value < 0) return '';\n\n        const getWeight = (...titles: [string, string][]): string => {\n            if (value === undefined || value === null) return '';\n\n            const weight: string = Helper.NUMBER.format(+value.toFixed(2), options?.english ? 'EN' : 'FA');\n            const shortIndex: number = options?.short ? 0 : 1;\n            const titleIndex: number = options?.english ? 0 : 1;\n            return `${weight} ${titles[shortIndex][titleIndex]}`;\n        };\n\n        if (value === 0) return getWeight(['', ''], ['', '']);\n\n        if (value < 1000) return getWeight(['G', 'گ'], ['Gram', 'گرم']);\n\n        value /= 1000;\n        if (value < 1000) return getWeight(['K', 'ک'], ['Kilogram', 'کیلو']);\n\n        value /= 1000;\n        if (value < 1000) return getWeight(['T', 'ت'], ['Tonne', 'تن']);\n\n        value /= 1000;\n        if (value < 1000) return getWeight(['KT', 'ه'], ['Kilotonne', 'هزار تن']);\n\n        value /= 1000;\n        return getWeight(['MT', 'م'], ['Milliontonne', 'میلیون تن']);\n    }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { NgxHelperBankCardPipe } from '../../pipes/bank-card.pipe';\nimport { NgxHelperDatePipe } from '../../pipes/date.pipe';\nimport { NgxHelperDurationPipe } from '../../pipes/duration.pipe';\nimport { NgxHelperFileSizePipe } from '../../pipes/file-size.pipe';\nimport { NgxHelperMobilePipe } from '../../pipes/mobile.pipe';\nimport { NgxHelperNumberPipe } from '../../pipes/number.pipe';\nimport { NgxHelperPeriodPipe } from '../../pipes/period.pipe';\nimport { NgxHelperPricePipe } from '../../pipes/price.pipe';\nimport { NgxHelperVolumePipe } from '../../pipes/volume.pipe';\nimport { NgxHelperWeightPipe } from '../../pipes/weight.pipe';\n\nimport { NgxHelperValue } from './ngx-helper-value.interface';\n\n@Pipe({ name: 'ngxHelperValue' })\nexport class NgxHelperValuePipe implements PipeTransform {\n    transform(value?: NgxHelperValue, options?: { emptyText?: string }): string {\n        const emptyText = options?.emptyText || '';\n        if (value === undefined || Helper.IS.empty(value)) return emptyText;\n\n        switch (value.type) {\n            case 'BANK-CARD':\n                return new NgxHelperBankCardPipe().transform(value.value, value) || emptyText;\n\n            case 'DATE':\n                return new NgxHelperDatePipe().transform(value.value as any, value) || emptyText;\n\n            case 'DURATION':\n                return new NgxHelperDurationPipe().transform(value.value as any, value) || emptyText;\n\n            case 'FILE-SIZE':\n                return new NgxHelperFileSizePipe().transform(value.value as any, value) || emptyText;\n\n            case 'MOBILE':\n                return new NgxHelperMobilePipe().transform(value.value as any, value) || emptyText;\n\n            case 'NUMBER':\n                return new NgxHelperNumberPipe().transform(value.value as any, value) || emptyText;\n\n            case 'PERIOD':\n                return new NgxHelperPeriodPipe().transform(value.value as any, value) || emptyText;\n\n            case 'PRICE':\n                return new NgxHelperPricePipe().transform(value.value as any, value) || emptyText;\n\n            case 'STRING':\n                return Helper.IS.string(value.value) ? (value.value as any) : emptyText;\n\n            case 'VOLUME':\n                return new NgxHelperVolumePipe().transform(value.value as any, value) || emptyText;\n\n            case 'WEIGHT':\n                return new NgxHelperWeightPipe().transform(value.value as any, value) || emptyText;\n        }\n    }\n}\n","import { Injectable } from '@angular/core';\n\nimport { INgxHelperConfig } from '../ngx-helper.config';\n\nimport { INgxHelperValue, NgxHelperValue } from './value/ngx-helper-value.interface';\nimport { NgxHelperValuePipe } from './value/ngx-helper-value.pipe';\n\nexport interface IComponentConfig {\n    readonly mobileWidth: number;\n    readonly pageGroupSidebarWidth: string;\n    readonly stickyView?: {\n        readonly top?: { readonly desktopView: string; readonly mobileView: string };\n        readonly bottom?: { readonly desktopView: string; readonly mobileView: string };\n    };\n}\n\nexport interface IValueComponentData {\n    readonly title: string;\n    readonly value: string;\n    readonly color?: string;\n    readonly action?: () => string[] | void;\n    readonly copyToClipboard?: boolean;\n    readonly ltr?: boolean;\n    readonly english?: boolean;\n}\n\n@Injectable()\nexport class ComponentService {\n    getComponentConfig(config?: Partial<INgxHelperConfig>): IComponentConfig {\n        const getStickyView = (\n            config: string | { desktopView: string; mobileView: string },\n        ): { desktopView: string; mobileView: string } => {\n            return {\n                desktopView: typeof config === 'string' ? config : config.desktopView,\n                mobileView: typeof config === 'string' ? config : config.mobileView,\n            };\n        };\n\n        return {\n            mobileWidth: config?.mobileWidth || 600,\n            pageGroupSidebarWidth: config?.pageGroupSidebarWidth || '200px',\n            stickyView: config?.stickyView\n                ? {\n                      top: config.stickyView.top ? getStickyView(config.stickyView.top) : undefined,\n                      bottom: config.stickyView.bottom ? getStickyView(config.stickyView.bottom) : undefined,\n                  }\n                : undefined,\n        };\n    }\n\n    private isRTL(value: NgxHelperValue): boolean {\n        switch (value.type) {\n            case 'BANK-CARD':\n            case 'MOBILE':\n            case 'NUMBER':\n                return true;\n\n            case 'DURATION':\n                return value.format === 'FULL';\n        }\n\n        return false;\n    }\n\n    getValueData(values: INgxHelperValue[]): IValueComponentData[] {\n        const pipeTransform = new NgxHelperValuePipe().transform;\n        const ltrValues: NgxHelperValue['type'][] = ['BANK-CARD', 'MOBILE', 'NUMBER'];\n\n        return values.map((item) => {\n            const value = item.value;\n            return value === undefined\n                ? { title: item.title, value: '' }\n                : typeof value === 'string'\n                ? { title: item.title, value: value.trim(), color: item.color }\n                : {\n                      title: item.title,\n                      value: pipeTransform(value),\n                      color: item.color,\n                      action: item.action,\n                      copyToClipboard: item.copyToClipboard,\n                      ltr: this.isRTL(value),\n                      english: 'english' in value && !!value.english,\n                  };\n        });\n    }\n}\n","import { Component, HostBinding, Inject, Input, OnChanges, OnInit, Optional, SimpleChanges } from '@angular/core';\nimport { NgClass } from '@angular/common';\n\nimport { MatButton } from '@angular/material/button';\nimport { MatDivider } from '@angular/material/divider';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\n\nimport { INgxHelperConfig, NGX_HELPER_CONFIG } from '../../ngx-helper.config';\n\nimport { ComponentService, IComponentConfig } from '../component.service';\n\nimport { INgxHelperCardOption, NgxHelperCardAction } from './ngx-helper-card.interface';\n\ntype Button =\n    | { type: 'BUTTON'; title: string; icon: string; action: () => void; color?: string; showIcon?: boolean }\n    | {\n          type: 'MENU';\n          title: string;\n          icon: string;\n          color?: string;\n          showIcon?: boolean;\n          buttons: ('DIVIDER' | { title: string; icon: string; action: () => void; color?: string })[];\n      };\n\n@Component({\n    selector: 'ngx-helper-card',\n    host: { '(window:resize)': 'onResize($event)' },\n    imports: [NgClass, MatButton, MatDivider, MatIcon, MatMenuModule],\n    providers: [ComponentService],\n    templateUrl: './ngx-helper-card.component.html',\n    styleUrl: './ngx-helper-card.component.scss',\n})\nexport class NgxHelperCardComponent implements OnInit, OnChanges {\n    @HostBinding('className') private className: string = 'ngx-helper-m3-card';\n\n    @Input({ required: true }) title!: string;\n    @Input({ required: false }) subTitle?: string;\n    @Input({ required: false }) icon?: string;\n    @Input({ required: false }) actions: NgxHelperCardAction[] = [];\n    @Input({ required: false }) option?: INgxHelperCardOption;\n    @Input({ required: false }) padding: string = '1rem';\n    @Input({ required: false }) backgroundColor?: string;\n    @Input({ required: false }) hasShadow: boolean = false;\n\n    public isMobile: boolean = false;\n    public buttons: Button[] = [];\n    private componentConfig!: IComponentConfig;\n\n    public optionId?: string;\n    public optionTitle?: string;\n    public optionItems: ('DIVIDER' | { readonly id: string; readonly title: string })[] = [];\n\n    constructor(\n        private readonly componentService: ComponentService,\n        @Optional() @Inject(NGX_HELPER_CONFIG) private readonly config?: Partial<INgxHelperConfig>,\n    ) {}\n\n    ngOnInit(): void {\n        this.componentConfig = this.componentService.getComponentConfig(this.config);\n        this.onResize();\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        this.className = `ngx-helper-m3-card${this.hasShadow ? ' has-shadow' : ''}`;\n\n        this.buttons = this.actions.map((action) => {\n            return 'buttons' in action ? { type: 'MENU', ...action } : { type: 'BUTTON', ...action };\n        });\n\n        this.optionId = undefined;\n        this.optionItems = [];\n\n        if (this.option) {\n            this.option.items.forEach((item) => {\n                if (item === 'DIVIDER') {\n                    if (this.optionItems.length !== 0 && this.optionItems[this.optionItems.length - 1] !== 'DIVIDER')\n                        this.optionItems.push('DIVIDER');\n                } else this.optionItems.push(item);\n            });\n            while (this.optionItems[this.optionItems.length - 1] === 'DIVIDER')\n                this.optionItems.splice(this.optionItems.length - 1);\n\n            const ids: string[] = this.option.items.map((item) => (item === 'DIVIDER' ? '' : item.id));\n            this.optionId = this.option.id && ids.includes(this.option.id) ? this.option.id : undefined;\n            this.setOption(this.optionId || '', true);\n        }\n    }\n\n    onResize(): void {\n        this.isMobile = window.innerWidth <= this.componentConfig.mobileWidth;\n    }\n\n    setOption(id: string, firstCheck?: boolean): void {\n        if (!this.option || this.optionItems.length === 0) return;\n\n        const ids: string[] = this.optionItems.filter((item) => item !== 'DIVIDER').map((item) => item.id);\n        this.optionId = id && ids.includes(id) ? id : ids[0];\n        this.optionTitle = this.optionItems\n            .filter((item) => item !== 'DIVIDER')\n            .find((item) => item.id === this.optionId)?.title;\n\n        if (!firstCheck) this.option.action(this.optionId);\n    }\n}\n","<div class=\"card-header\" [class.has-sub-title]=\"subTitle\">\n    <!-- ICON -->\n    @if (icon) { <mat-icon>{{ icon }}</mat-icon> }\n\n    <!-- TITLE -->\n    <div class=\"content\">\n        <div class=\"title\">{{ title }}</div>\n        <!-- SUB TITLE -->\n        @if (subTitle) {\n        <div class=\"sub-title\">{{ subTitle }}</div>\n        }\n    </div>\n\n    <!-- BUTTONS -->\n    @if (buttons.length > 0) {\n    <div class=\"buttons\" [ngClass]=\"isMobile ? 'mobile-view' : ''\">\n        @for (item of buttons; track $index) {\n        <!-- TYPE -->\n        @switch (item.type) {\n\n        <!-- BUTTON -->\n        @case('BUTTON') {\n        <button mat-button type=\"button\" [style.color]=\"item.color\" (click)=\"item.action()\">\n            @if (!isMobile) {\n            <div class=\"title\">{{ item.title }}</div>\n            }\n            <!-- ICON -->\n            @if (isMobile || item.showIcon) {\n            <mat-icon>{{ item.icon }}</mat-icon>\n            }\n        </button>\n        }\n\n        <!-- MENU -->\n        @case('MENU') {\n        <button mat-button type=\"button\" [style.color]=\"item.color\" [matMenuTriggerFor]=\"actionMenu\">\n            @if (!isMobile) {\n            <div class=\"title\">{{ item.title }}</div>\n            }\n            <!-- ICON -->\n            @if (isMobile || item.showIcon) {\n            <mat-icon>{{ item.icon }}</mat-icon>\n            }\n        </button>\n        <mat-menu #actionMenu=\"matMenu\" class=\"ngx-helper-card-action-menu\" [xPosition]=\"'before'\">\n            @for (menu of item.buttons; track $index) {\n            <!-- DIVIDER -->\n            @if (menu === 'DIVIDER') { <mat-divider></mat-divider> }\n            <!-- BUTTON -->\n            @else {\n            <button mat-menu-item type=\"button\" (click)=\"menu.action()\" [style.color]=\"menu.color\">\n                <div class=\"title\">{{ menu.title }}</div>\n                <mat-icon [style.color]=\"menu.color\">{{ menu.icon }}</mat-icon>\n            </button>\n            } }\n        </mat-menu>\n        } } }\n    </div>\n    }\n\n    <!-- OPTION -->\n    @if (option && optionItems.length > 0) {\n    <div class=\"option\" [ngClass]=\"isMobile ? 'mobile-view' : ''\">\n        <button mat-button type=\"button\" [matMenuTriggerFor]=\"optionMenu\">\n            @if (!isMobile) {\n            <div class=\"title\">{{ optionTitle }}</div>\n            }\n            <mat-icon [class.mobile-view]=\"isMobile\">{{ option.icon }}</mat-icon>\n        </button>\n        <mat-menu #optionMenu=\"matMenu\" class=\"ngx-helper-card-action-option\" [xPosition]=\"'before'\">\n            @for (item of optionItems; track $index) {\n            <!-- DIVIDER -->\n            @if (item === 'DIVIDER') { <mat-divider></mat-divider> }\n            <!-- BUTTON -->\n            @else {\n            <button mat-menu-item type=\"button\" [disabled]=\"optionId === item.id\" (click)=\"setOption(item.id)\">\n                <div class=\"title\">{{ item.title }}</div>\n                <mat-icon [style.opacity]=\"optionId === item.id ? 1 : 0\">done_all</mat-icon>\n            </button>\n            } }\n        </mat-menu>\n    </div>\n    }\n</div>\n\n<div class=\"card-content\" [style.padding]=\"padding\" [style.background-color]=\"backgroundColor\">\n    <ng-content></ng-content>\n</div>\n","import { Component, HostBinding, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\n\n@Component({\n    selector: 'ngx-helper-loader',\n    imports: [],\n    templateUrl: './ngx-helper-loader.component.html',\n    styleUrl: './ngx-helper-loader.component.scss',\n})\nexport class NgxHelperLoaderComponent implements OnInit, OnChanges {\n    @HostBinding('style.--loader-size') public loaderSize!: string;\n    @HostBinding('style.--loader-color') public loaderColor!: string;\n\n    @Input({ required: false }) public mode: 'SPINNER' | 'DOTS-SPINNER' | 'WHEEL-SPINNER' = 'SPINNER';\n    @Input({ required: false }) public size!: number;\n    @Input({ required: false }) public color!: string;\n    @Input({ required: false }) public padding?: string;\n    @Input({ required: false }) public margin?: string;\n\n    ngOnInit(): void {\n        this.init();\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        this.init();\n    }\n\n    init(): void {\n        this.loaderSize = `${this.size || 25}px`;\n        this.loaderColor = this.color || `var(--secondary)`;\n    }\n}\n","<div [style.padding]=\"padding || '0'\">\n    <div [class]=\"mode.toLowerCase()\" [style.margin]=\"margin || '0px'\"></div>\n</div>\n","import { InjectionToken } from '@angular/core';\nimport { ComponentType } from '@angular/cdk/portal';\n\ninterface IPage {\n    readonly title: string;\n    readonly icon: string;\n    readonly component: ComponentType<any>;\n}\n\nexport interface INgxHelperPageGroup {\n    readonly route?: string[];\n    readonly header?: ComponentType<any>;\n    readonly pages: { [key: string]: IPage };\n\n    // SETTING\n    readonly sidebarWidth?: string;\n}\n\nexport interface INgxHelperPageGroupItem {\n    readonly index: number;\n    readonly id: string;\n    readonly title: string;\n    readonly icon: string;\n}\n\nexport const NGX_HELPER_PAGE_GROUP_ITEM: InjectionToken<INgxHelperPageGroupItem> = new InjectionToken(\n    'NGX-HELPER-PAGE-GROUP-ITEM',\n);\nexport const NGX_HELPER_PAGE_GROUP_DATA: InjectionToken<any> = new InjectionToken('NGX-HELPER-PAGE-GROUP-DATA');\nexport const NGX_HELPER_PAGE_GROUP_DATA_CHANGE: InjectionToken<(data: any) => void> = new InjectionToken(\n    'NGX-HELPER-PAGE-GROUP-DATA-CHANGE',\n);\n","import {\n    Component,\n    EventEmitter,\n    HostBinding,\n    Inject,\n    Injector,\n    Input,\n    OnChanges,\n    OnInit,\n    Optional,\n    Output,\n    SimpleChanges,\n} from '@angular/core';\nimport { NgComponentOutlet } from '@angular/common';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { MatIcon } from '@angular/material/icon';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { INgxHelperConfig, NGX_HELPER_CONFIG } from '../../ngx-helper.config';\n\nimport { ComponentService, IComponentConfig } from '../component.service';\n\nimport {\n    INgxHelperPageGroup,\n    INgxHelperPageGroupItem,\n    NGX_HELPER_PAGE_GROUP_DATA,\n    NGX_HELPER_PAGE_GROUP_DATA_CHANGE,\n    NGX_HELPER_PAGE_GROUP_ITEM,\n} from './ngx-helper-page-group.interface';\n\n@Component({\n    selector: 'ngx-helper-page-group',\n    host: { '(window:resize)': 'onResize($event)' },\n    imports: [NgComponentOutlet, MatIcon],\n    providers: [ComponentService],\n    templateUrl: './ngx-helper-page-group.component.html',\n    styleUrl: './ngx-helper-page-group.component.scss',\n})\nexport class NgxHelperPageGroupComponent implements OnInit, OnChanges {\n    @HostBinding('className') private className: string = 'ngx-helper-m3-page-group';\n    @HostBinding('style.display') display: string = 'none';\n\n    @Input({ required: true }) pageGroup!: INgxHelperPageGroup;\n    @Input({ required: false }) pageId!: string;\n    @Input({ required: false }) data?: any;\n    @Output() pageChanged: EventEmitter<INgxHelperPageGroupItem> = new EventEmitter<INgxHelperPageGroupItem>();\n    @Output() dataChanged: EventEmitter<any> = new EventEmitter<any>();\n\n    public isMobile: boolean = false;\n    public pages: string[] = [];\n    public injector!: Injector;\n\n    public sidebarWidth!: string;\n    public componentConfig!: IComponentConfig;\n\n    constructor(\n        private readonly activatedRoute: ActivatedRoute,\n        private readonly router: Router,\n        private readonly componentService: ComponentService,\n        @Optional() @Inject(NGX_HELPER_CONFIG) private readonly config?: Partial<INgxHelperConfig>,\n    ) {}\n\n    ngOnInit(): void {\n        this.pages = Object.keys(this.pageGroup.pages);\n        this.display = this.pages.length === 0 ? 'none' : 'flex';\n        if (this.pages.length === 0) return;\n\n        this.componentConfig = this.componentService.getComponentConfig(this.config);\n        this.sidebarWidth = this.pageGroup.sidebarWidth || this.componentConfig.pageGroupSidebarWidth;\n\n        if (!this.pageGroup.pages[this.pageId]) this.pageId = this.pages[0];\n\n        const queryParams: { [key: string]: any } = { ...this.activatedRoute.snapshot.queryParams };\n        if (!!this.pageGroup.route && Helper.IS.string(queryParams['ngx-helper-page-group'])) {\n            const id: string = queryParams['ngx-helper-page-group'];\n            if (this.pageId !== id && this.pages.includes(id)) {\n                this.pageId = id;\n                this.triggerPageChanged();\n            }\n        }\n\n        this.onResize();\n        this.setInjector();\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        this.setInjector();\n    }\n\n    onResize(): void {\n        this.isMobile = window.innerWidth <= this.componentConfig.mobileWidth;\n        this.className = `ngx-helper-m3-page-group${this.isMobile ? ' mobile-view' : ''}`;\n    }\n\n    setInjector(): void {\n        if (this.pages.length === 0) return;\n\n        const item: INgxHelperPageGroupItem = {\n            index: this.pages.findIndex((page) => page === this.pageId),\n            id: this.pageId,\n            title: this.pageGroup.pages[this.pageId].title,\n            icon: this.pageGroup.pages[this.pageId].icon,\n        };\n\n        this.injector = Injector.create({\n            providers: [\n                { provide: NGX_HELPER_PAGE_GROUP_ITEM, useValue: item },\n                { provide: NGX_HELPER_PAGE_GROUP_DATA, useValue: this.data },\n                { provide: NGX_HELPER_PAGE_GROUP_DATA_CHANGE, useValue: (data: any) => this.dataChanged.next(data) },\n            ],\n        });\n    }\n\n    setPage(id: string): void {\n        if (this.pages.length === 0 || this.pageId == id) return;\n\n        const page = this.pageGroup.pages[id];\n        const index: number = this.pages.findIndex((p) => p === id);\n        if (!page || index === -1) return;\n\n        this.pageId = id;\n        this.triggerPageChanged();\n        this.setInjector();\n\n        if (this.pageGroup.route) {\n            const queryParams: { [key: string]: any } = { ...this.activatedRoute.snapshot.queryParams };\n            queryParams['ngx-helper-page-group'] = this.pageId;\n            this.router.navigate(this.pageGroup.route, { queryParams });\n        }\n    }\n\n    triggerPageChanged(): void {\n        const item: INgxHelperPageGroupItem = {\n            index: this.pages.findIndex((page) => page === this.pageId),\n            id: this.pageId,\n            title: this.pageGroup.pages[this.pageId].title,\n            icon: this.pageGroup.pages[this.pageId].icon,\n        };\n        this.pageChanged.next(item);\n    }\n}\n","@if (pages.length > 0) {\n<!-- DESKTOP VIEW -->\n@if (!isMobile) {\n<div\n    class=\"page-group-aside\"\n    [style.width]=\"sidebarWidth\"\n    [style.position]=\"componentConfig.stickyView?.top ? 'sticky' : 'static'\"\n    [style.top]=\"componentConfig.stickyView?.top?.desktopView || undefined\"\n>\n    @for (item of pages; track $index) {\n    <div\n        class=\"page\"\n        [class.active]=\"pageId === item\"\n        [style.cursor]=\"pageId === item ? 'default' : 'pointer'\"\n        (click)=\"setPage(item)\"\n    >\n        <!-- ICON -->\n        <mat-icon>{{ pageGroup.pages[item].icon }}</mat-icon>\n        <div class=\"title\">{{ pageGroup.pages[item].title }}</div>\n        <!-- CURRENT PAGE -->\n        @if (pageId === item) { <mat-icon>keyboard_double_arrow_left</mat-icon> }\n    </div>\n    }\n</div>\n}\n\n<!-- MOBILE VIEW -->\n@if (isMobile) {\n<div\n    class=\"page-group-nav\"\n    [style.position]=\"componentConfig.stickyView?.top ? 'sticky' : 'static'\"\n    [style.top]=\"componentConfig.stickyView?.top?.mobileView || undefined\"\n>\n    @for (item of pages; track $index) {\n    <div\n        class=\"page\"\n        [class.active]=\"pageId === item\"\n        [style.cursor]=\"pageId === item ? 'default' : 'pointer'\"\n        (click)=\"setPage(item)\"\n    >\n        <mat-icon>{{ pageGroup.pages[item].icon }}</mat-icon>\n        @if (pageId === item) {\n        <div class=\"title\">{{ pageGroup.pages[item].title }}</div>\n        }\n    </div>\n    }\n</div>\n\n<div\n    class=\"page-group-spacer\"\n    [style.position]=\"componentConfig.stickyView?.top ? 'sticky' : 'static'\"\n    [style.top]=\"\n        'calc(' +\n        (componentConfig.stickyView?.top?.mobileView || undefined) +\n        ' + var(--ngx-helper-m3-page-group-toolbar-height))'\n    \"\n></div>\n}\n\n<div class=\"page-group-content\">\n    <!-- HEADER -->\n    @if (pageGroup.header) {\n    <div\n        class=\"header\"\n        [style.position]=\"componentConfig.stickyView?.top ? 'sticky' : 'static'\"\n        [style.top]=\"\n            (isMobile\n                ? 'calc(' +\n                  (componentConfig.stickyView?.top?.mobileView || undefined) +\n                  ' + var(--ngx-helper-m3-page-group-toolbar-height) + 1rem)'\n                : componentConfig.stickyView?.top?.desktopView) || undefined\n        \"\n    >\n        <span *ngComponentOutlet=\"pageGroup.header; injector: injector\"></span>\n        <div class=\"spacer\"></div>\n    </div>\n    }\n    <span *ngComponentOutlet=\"pageGroup.pages[pageId].component; injector: injector\"></span>\n</div>\n}\n","import { Component, HostBinding, Input, OnChanges, SimpleChanges } from '@angular/core';\n\n@Component({\n    selector: 'ngx-helper-progress',\n    imports: [],\n    templateUrl: './ngx-helper-progress.component.html',\n    styleUrl: './ngx-helper-progress.component.scss',\n})\nexport class NgxHelperProgressComponent implements OnChanges {\n    @HostBinding('className') private className: string = 'ngx-helper-m3-progress';\n    @HostBinding('style.border-radius') borderRadiusCSS!: string;\n    @HostBinding('style.background-color') backgroundColorCSS!: string;\n\n    @Input({ required: true }) value!: number | { done: number; total: number };\n    @Input({ required: false }) align: 'LR' | 'RL' | 'TB' | 'BT' = 'LR';\n    @Input({ required: false }) borderRadius: string = '0px';\n    @Input({ required: false }) progressColor: string = 'var(--surface-container)';\n    @Input({ required: false }) backgroundColor?: string;\n\n    public size!: string;\n    public direction!: 'H' | 'V';\n\n    ngOnChanges(changes: SimpleChanges): void {\n        this.className = `ngx-helper-m3-progress ${this.align}`;\n        this.borderRadiusCSS = this.borderRadius;\n        this.backgroundColorCSS = this.backgroundColor || 'transparent';\n\n        let value: number = typeof this.value === 'number' ? this.value : (this.value.done / this.value.total) * 100;\n        if (isNaN(value) || value < 0) value = 0;\n        else if (value > 100) value = 100;\n        this.size = `${value.toFixed(2)}%`;\n        this.direction = this.align === 'LR' || this.align === 'RL' ? 'H' : 'V';\n    }\n}\n","<div\n    class=\"progress\"\n    [style.border-radius]=\"borderRadius\"\n    [style.background-color]=\"progressColor\"\n    [style.width]=\"direction === 'H' ? size : '100%'\"\n    [style.height]=\"direction === 'V' ? size : '100%'\"\n></div>\n<div class=\"content\"><ng-content></ng-content></div>\n","import { Component, HostBinding, Inject, Input, OnInit, Optional } from '@angular/core';\n\nimport { INgxHelperConfig, NGX_HELPER_CONFIG } from '../../ngx-helper.config';\n\nimport { ComponentService, IComponentConfig } from '../component.service';\n\n@Component({\n    selector: 'ngx-helper-section',\n    host: { '(window:resize)': 'onResize($event)' },\n    imports: [],\n    providers: [ComponentService],\n    templateUrl: './ngx-helper-section.component.html',\n    styleUrl: './ngx-helper-section.component.scss',\n})\nexport class NgxHelperSectionComponent implements OnInit {\n    @HostBinding('style.--section-gap') private gap!: string;\n\n    @Input({ required: false }) gapSize?: string;\n\n    private componentConfig!: IComponentConfig;\n    public isMobile: boolean = false;\n\n    constructor(\n        private readonly componentService: ComponentService,\n        @Optional() @Inject(NGX_HELPER_CONFIG) private readonly config?: Partial<INgxHelperConfig>,\n    ) {}\n\n    ngOnInit(): void {\n        this.componentConfig = this.componentService.getComponentConfig(this.config);\n        this.gap = this.gapSize || '1rem';\n\n        this.onResize();\n    }\n\n    onResize(): void {\n        this.isMobile = window.innerWidth <= this.componentConfig.mobileWidth;\n    }\n}\n","<div class=\"section-columns\" [class.section-columns-mobile]=\"isMobile\">\n    <ng-content></ng-content>\n</div>\n","import { Component, HostBinding, inject, Inject, Input, OnChanges, OnInit, Optional, SimpleChanges } from '@angular/core';\n\nimport { INgxHelperConfig, NGX_HELPER_CONFIG } from '../../../ngx-helper.config';\n\nimport { ComponentService, IComponentConfig } from '../../component.service';\n\n@Component({\n    selector: 'ngx-helper-section-column',\n    host: { '(window:resize)': 'onResize($event)' },\n    imports: [],\n    templateUrl: './ngx-helper-section-column.component.html',\n    styleUrl: './ngx-helper-section-column.component.scss',\n})\nexport class NgxHelperSectionColumnComponent implements OnInit, OnChanges {\n    @HostBinding('style.flex') flexStyle: string = '1';\n    @HostBinding('style.width') widthStyle: string = '*';\n\n    @HostBinding('style.position') stickyPosition!: string;\n    @HostBinding('style.zInde') stickyZIndex!: string;\n    @HostBinding('style.top') stickyTop!: string;\n\n    @Input({ required: false }) flex?: number;\n    @Input({ required: false }) width?: string;\n    @Input({ required: false }) sticky?: boolean | 'DESKTOP' | 'MOBILE';\n    @Input({ required: false }) zIndex?: number;\n\n    private componentConfig!: IComponentConfig;\n    private isMobile: boolean = false;\n\n    constructor(\n        private readonly componentService: ComponentService,\n        @Optional() @Inject(NGX_HELPER_CONFIG) private readonly config?: Partial<INgxHelperConfig>,\n    ) {}\n\n    ngOnInit(): void {\n        this.componentConfig = this.componentService.getComponentConfig(this.config);\n        this.onResize();\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        this.flexStyle = this.width ? 'unset' : this.flex?.toString() || '1';\n        this.widthStyle = this.width || '*';\n\n        this.componentConfig = this.componentService.getComponentConfig(this.config);\n        this.onResize();\n    }\n\n    onResize(): void {\n        this.isMobile = window.innerWidth <= this.componentConfig.mobileWidth;\n        this.setPosition();\n    }\n\n    setPosition(): void {\n        const top = this.componentConfig.stickyView?.top;\n        if (!top) return;\n\n        const sticky: boolean =\n            this.sticky === true ||\n            (this.sticky === 'DESKTOP' && !this.isMobile) ||\n            (this.sticky === 'MOBILE' && this.isMobile);\n\n        this.stickyPosition = sticky ? 'sticky' : 'static';\n        this.stickyZIndex = sticky ? (this.zIndex ? this.zIndex.toString() : '1') : 'auto';\n        this.stickyTop = sticky ? (this.isMobile ? top.mobileView : top.desktopView) : 'auto';\n    }\n}\n","<ng-content></ng-content>\n","import { Component, HostBinding, Inject, Input, OnChanges, OnInit, Optional, SimpleChanges } from '@angular/core';\nimport { ClipboardModule } from '@angular/cdk/clipboard';\nimport { Router } from '@angular/router';\n\nimport { MatIconButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\n\nimport { INgxHelperConfig, NGX_HELPER_CONFIG } from '../../../ngx-helper.config';\n\nimport { ComponentService, IComponentConfig, IValueComponentData } from '../../component.service';\n\nimport { INgxHelperValue } from '../ngx-helper-value.interface';\n\n@Component({\n    selector: 'ngx-helper-value-box',\n    host: { '(window:resize)': 'onResize($event)' },\n    imports: [ClipboardModule, MatIcon, MatIconButton],\n    providers: [ComponentService],\n    templateUrl: './ngx-helper-value-box.component.html',\n    styleUrl: './ngx-helper-value-box.component.scss',\n})\nexport class NgxHelperValueBoxComponent implements OnInit, OnChanges {\n    @HostBinding('className') private className: string = 'ngx-helper-m3-value-box';\n    @HostBinding('style.grid-template-columns') private gridTemplateColumns!: string;\n    @HostBinding('style.--gap-size') private boxGap!: string;\n\n    @Input({ required: true }) values!: INgxHelperValue[];\n    @Input({ required: false }) column?: number | { desktop?: number; mobile?: number };\n    @Input({ required: false }) clearBox: boolean = false;\n    @Input({ required: false }) emptyText: string = 'نامشخص';\n    @Input({ required: false }) gapSize: string = '1rem';\n    @Input({ required: false }) hideShadow: boolean = false;\n\n    public data: IValueComponentData[] = [];\n\n    public copyIndex?: number;\n    private copyTimeout: any;\n\n    private componentConfig!: IComponentConfig;\n\n    constructor(\n        private readonly router: Router,\n        private readonly componentService: ComponentService,\n        @Optional() @Inject(NGX_HELPER_CONFIG) private readonly config?: Partial<INgxHelperConfig>,\n    ) {}\n\n    ngOnInit(): void {\n        this.componentConfig = this.componentService.getComponentConfig(this.config);\n        this.onResize();\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        this.boxGap = this.gapSize;\n        this.className = `ngx-helper-m3-value-box${this.hideShadow ? ' hide-shadow' : ''}`;\n\n        this.data = this.componentService.getValueData(this.values);\n    }\n\n    onResize(): void {\n        if (this.values.length === 0) return;\n\n        const isMobile: boolean = window.innerWidth <= this.componentConfig.mobileWidth;\n        const columnSize: number =\n            this.column === undefined\n                ? this.values.length\n                : typeof this.column === 'number'\n                ? this.column\n                : isMobile\n                ? this.column.mobile || this.values.length\n                : this.column.desktop || this.values.length;\n\n        const column: number = columnSize <= 0 || columnSize > this.values.length ? this.values.length : columnSize;\n        this.gridTemplateColumns = Array(column).fill('1fr').join(' ');\n    }\n\n    onClick(action?: () => string[] | void): void {\n        if (!action) return;\n\n        const response = action();\n        if (response) this.router.navigate(response);\n    }\n\n    onCopy(event: Event, index: number): void {\n        event.preventDefault();\n\n        if (this.copyTimeout) clearTimeout(this.copyTimeout);\n        this.copyIndex = index;\n        this.copyTimeout = setTimeout(() => {\n            this.copyIndex = undefined;\n            this.copyTimeout = undefined;\n        }, 2000);\n    }\n}\n","@for (item of data; track $index) {\n<div class=\"value-box\" [class.clear]=\"clearBox\" [class.click]=\"!!item.action\">\n    <div class=\"title\" (click)=\"onClick(item.action)\">{{ item.title }}</div>\n    <div\n        class=\"value\"\n        [style.display]=\"'inline-block'\"\n        [style.direction]=\"item.ltr ? 'ltr' : '*'\"\n        [style.color]=\"item.color\"\n        [class.en]=\"item.english\"\n        [class.empty]=\"!item.value\"\n        (click)=\"onClick(item.action)\"\n    >\n        {{ item.value || emptyText }}\n    </div>\n    <!-- COPY TO CLIPBOARD -->\n    @if (item.copyToClipboard && item.value) {\n    <button mat-icon-button type=\"button\" [cdkCopyToClipboard]=\"item.value\" (click)=\"onCopy($event, $index)\">\n        <mat-icon>{{ copyIndex === $index ? 'done_all' : 'copy' }}</mat-icon>\n    </button>\n    }\n</div>\n}\n","import { Component, HostBinding, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { ClipboardModule } from '@angular/cdk/clipboard';\nimport { Router } from '@angular/router';\n\nimport { MatIconButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\n\nimport { ComponentService, IValueComponentData } from '../../component.service';\n\nimport { INgxHelperValue } from '../ngx-helper-value.interface';\n\n@Component({\n    selector: 'ngx-helper-value-list',\n    imports: [ClipboardModule, MatIcon, MatIconButton],\n    providers: [ComponentService],\n    templateUrl: './ngx-helper-value-list.component.html',\n    styleUrl: './ngx-helper-value-list.component.scss',\n})\nexport class NgxHelperValueListComponent implements OnChanges {\n    @HostBinding('className') private className: string = 'ngx-helper-m3-value-list';\n\n    @Input({ required: true }) values!: INgxHelperValue[];\n    @Input({ required: false }) titleWidth: string = '20%';\n    @Input({ required: false }) emptyText: string = 'نامشخص';\n\n    public data: IValueComponentData[] = [];\n\n    public copyIndex?: number;\n    private copyTimeout: any;\n\n    constructor(private readonly router: Router, private readonly componentService: ComponentService) {}\n\n    ngOnChanges(changes: SimpleChanges): void {\n        this.data = this.componentService.getValueData(this.values);\n    }\n\n    onClick(action?: () => string[] | void): void {\n        if (!action) return;\n\n        const response = action();\n        if (response) this.router.navigate(response);\n    }\n\n    onCopy(event: Event, index: number): void {\n        event.preventDefault();\n\n        if (this.copyTimeout) clearTimeout(this.copyTimeout);\n        this.copyIndex = index;\n        this.copyTimeout = setTimeout(() => {\n            this.copyIndex = undefined;\n            this.copyTimeout = undefined;\n        }, 2000);\n    }\n}\n","@for (item of data; track $index) {\n<div class=\"value-list-item\" [class.even]=\"$index % 2 === 0\" [class.odd]=\"$index % 2 === 1\">\n    <div class=\"title\" [style.width]=\"titleWidth\">{{ item.title }}:</div>\n    <div class=\"value\">\n        <div\n            [style.display]=\"'inline-block'\"\n            [style.direction]=\"item.ltr ? 'ltr' : '*'\"\n            [style.color]=\"item.color\"\n            [class.en]=\"item.english\"\n            [class.empty]=\"!item.value\"\n            [class.click]=\"!!item.action\"\n            (click)=\"onClick(item.action)\"\n        >\n            {{ item.value || emptyText }}\n        </div>\n        <!-- ACTION -->\n        @if (item.action) {\n        <button mat-icon-button type=\"button\" (click)=\"onClick(item.action)\">\n            <mat-icon [style.color]=\"item.color\">open_in_new</mat-icon>\n        </button>\n\n        }\n    </div>\n    <!-- COPY TO CLIPBOARD -->\n    @if (item.copyToClipboard && item.value) {\n    <button mat-icon-button type=\"button\" [cdkCopyToClipboard]=\"item.value\" (click)=\"onCopy($event, $index)\">\n        <mat-icon>{{ copyIndex === $index ? 'done_all' : 'copy' }}</mat-icon>\n    </button>\n    }\n</div>\n}\n","import { Component, HostBinding, inject } from '@angular/core';\nimport { NgClass } from '@angular/common';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { INgxHelperConfirm } from '../confirm.interface';\n\n@Component({\n    host: { selector: 'confirm-dialog' },\n    imports: [NgClass, MatButtonModule, MatDialogModule, MatIconModule],\n    templateUrl: './confirm-dialog.component.html',\n    styleUrl: './confirm-dialog.component.scss',\n})\nexport class ConfirmDialogComponent {\n    @HostBinding('className') private className: string = 'ngx-helper-m3-confirm';\n\n    public confirm: INgxHelperConfirm = inject(MAT_DIALOG_DATA);\n}\n","<div class=\"confirm-content\">\n    <!-- ICON -->\n    @if (confirm.icon) {\n    <mat-icon>{{ confirm.icon }}</mat-icon>\n    }\n\n    <!-- CONTENT -->\n    <div class=\"confirm\">\n        <div class=\"question\">{{ confirm.question }}</div>\n        <!-- DESCRIPTION -->\n        @if (confirm.description) {\n        <div class=\"description\">{{ confirm.description }}</div>\n        }\n        <!-- DATA -->\n        @if (confirm.data) {\n        <div class=\"data\">\n            <div class=\"title\">{{ confirm.data.title }}:</div>\n            <div class=\"value\">{{ confirm.data.value }}</div>\n        </div>\n        }\n    </div>\n</div>\n\n<div class=\"confirm-footer\">\n    <button mat-button type=\"button\" mat-dialog-close [ngClass]=\"confirm.denyClass\">خیر</button>\n    <button mat-button type=\"button\" [mat-dialog-close]=\"true\" [ngClass]=\"confirm.confirmClass\">بلی</button>\n</div>\n","import { Component, HostBinding, inject } from '@angular/core';\nimport { NgClass } from '@angular/common';\n\nimport { MAT_BOTTOM_SHEET_DATA, MatBottomSheetRef } from '@angular/material/bottom-sheet';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { INgxHelperConfirm } from '../confirm.interface';\n\n@Component({\n    host: { selector: 'confirm-bottom-sheet' },\n    imports: [NgClass, MatButtonModule, MatIconModule],\n    templateUrl: './confirm-bottom-sheet.component.html',\n    styleUrl: './confirm-bottom-sheet.component.scss',\n})\nexport class ConfirmBottomSheetComponent {\n    @HostBinding('className') private className: string = 'ngx-helper-m3-confirm';\n\n    public confirm: INgxHelperConfirm = inject(MAT_BOTTOM_SHEET_DATA);\n\n    constructor(private readonly matBottomSheetRef: MatBottomSheetRef<ConfirmBottomSheetComponent>) {}\n\n    close(confirmed?: boolean) {\n        this.matBottomSheetRef.dismiss(confirmed);\n    }\n}\n","<div class=\"confirm-content\">\n    <!-- ICON -->\n    @if (confirm.icon) {\n    <mat-icon>{{ confirm.icon }}</mat-icon>\n    }\n\n    <!-- CONTENT -->\n    <div class=\"confirm\">\n        <div class=\"question\">{{ confirm.question }}</div>\n        <!-- DESCRIPTION -->\n        @if (confirm.description) {\n        <div class=\"description\">{{ confirm.description }}</div>\n        }\n        <!-- DATA -->\n        @if (confirm.data) {\n        <div class=\"data\">\n            <div class=\"title\">{{ confirm.data.title }}:</div>\n            <div class=\"value\">{{ confirm.data.value }}</div>\n        </div>\n        }\n    </div>\n</div>\n\n<div class=\"confirm-footer\">\n    <button mat-button type=\"button\" (click)=\"close()\" [ngClass]=\"confirm.denyClass\">خیر</button>\n    <button mat-button type=\"button\" (click)=\"close(true)\" [ngClass]=\"confirm.confirmClass\">بلی</button>\n</div>\n","import { Injectable } from '@angular/core';\n\nimport { MatBottomSheet, MatBottomSheetConfig } from '@angular/material/bottom-sheet';\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\n\nimport { ConfirmDialogComponent } from './dialog/confirm-dialog.component';\nimport { ConfirmBottomSheetComponent } from './bottom-sheet/confirm-bottom-sheet.component';\n\nimport { INgxHelperConfirm } from './confirm.interface';\n\ninterface IConfirmData {\n    readonly title: string;\n    readonly value?: string;\n}\n\ninterface IConfirmConfig {\n    readonly description: string;\n    readonly confirmClass: string;\n    readonly denyClass: string;\n}\n\nclass NgxHelperConfirmCalss {\n    constructor(\n        private readonly matBottomSheet: MatBottomSheet,\n        private readonly matDialog: MatDialog,\n        private readonly confirm: INgxHelperConfirm,\n    ) {}\n\n    dialog(onConfirmed: () => void): void;\n    dialog(onConfirmed: () => void, onDenied: () => void): void;\n    dialog(onConfirmed: () => void, config: MatDialogConfig): void;\n    dialog(onConfirmed: () => void, onDenied: () => void, config: MatDialogConfig): void;\n    dialog(onConfirmed: () => void, arg1?: any, arg2?: any): void {\n        const onDenied: (() => void) | undefined = typeof arg1 === 'function' ? arg1 : undefined;\n        const config: MatDialogConfig = arg2 || (typeof arg1 !== 'function' ? arg1 : {});\n\n        this.matDialog\n            .open<any, any, boolean>(ConfirmDialogComponent, {\n                // DEFAULT CONFIG\n                width: 'calc(100vw - 4rem)',\n                direction: 'rtl',\n                enterAnimationDuration: '100ms',\n                exitAnimationDuration: '100ms',\n                // OVERWRITE CONFIG\n                ...config,\n                maxHeight: '80vh',\n                // DATA\n                data: this.confirm,\n            })\n            .afterClosed()\n            .subscribe({ next: (confirmed?: boolean) => (!!confirmed ? onConfirmed() : onDenied ? onDenied() : undefined) });\n    }\n\n    bottomSheet(onConfirmed: () => void): void;\n    bottomSheet(onConfirmed: () => void, onDenied: () => void): void;\n    bottomSheet(onConfirmed: () => void, config: MatBottomSheetConfig): void;\n    bottomSheet(onConfirmed: () => void, onDenied: () => void, config: MatBottomSheetConfig): void;\n    bottomSheet(onConfirmed: () => void, arg1?: any, arg2?: any): void {\n        const onDenied: (() => void) | undefined = typeof arg1 === 'function' ? arg1 : undefined;\n        const config: MatBottomSheetConfig = arg2 || (typeof arg1 !== 'function' ? arg1 : {});\n\n        this.matBottomSheet\n            .open<any, any, boolean>(ConfirmBottomSheetComponent, {\n                // DEFAULT CONFIG\n                direction: 'rtl',\n                panelClass: 'ngx-helper-bottom-sheet',\n                // OVERWRITE CONFIG\n                ...config,\n                maxHeight: '80vh',\n                // DATA\n                data: this.confirm,\n            })\n            .afterDismissed()\n            .subscribe({ next: (confirmed?: boolean) => (!!confirmed ? onConfirmed() : onDenied ? onDenied() : undefined) });\n    }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class NgxHelperConfirmService {\n    constructor(private readonly matBottomSheet: MatBottomSheet, private readonly matDialog: MatDialog) {}\n\n    verify(confirm: INgxHelperConfirm): NgxHelperConfirmCalss {\n        return new NgxHelperConfirmCalss(this.matBottomSheet, this.matDialog, confirm);\n    }\n\n    active(data: IConfirmData): NgxHelperConfirmCalss;\n    active(data: IConfirmData, config: Partial<IConfirmConfig>): NgxHelperConfirmCalss;\n    active(data: IConfirmData, config?: Partial<IConfirmConfig>): NgxHelperConfirmCalss {\n        return this.verify({\n            question: `آیا می‌خواهید ${data.title} انتخاب شده را فعال کنید؟`,\n            description: config?.description,\n            data: data.value ? { title: data.title, value: data.value } : undefined,\n            icon: 'check_box',\n            confirmClass: config?.confirmClass,\n            denyClass: config?.denyClass,\n        });\n    }\n\n    deactive(data: IConfirmData): NgxHelperConfirmCalss;\n    deactive(data: IConfirmData, config: Partial<IConfirmConfig>): NgxHelperConfirmCalss;\n    deactive(data: IConfirmData, config?: Partial<IConfirmConfig>): NgxHelperConfirmCalss {\n        return this.verify({\n            question: `آیا می‌خواهید ${data.title} انتخاب شده را غیرفعال کنید؟`,\n            description: config?.description,\n            data: data.value ? { title: data.title, value: data.value } : undefined,\n            icon: 'disabled_by_default',\n            confirmClass: config?.confirmClass || 'error',\n            denyClass: config?.denyClass,\n        });\n    }\n\n    status(active: boolean, data: IConfirmData): NgxHelperConfirmCalss;\n    status(active: boolean, data: IConfirmData, config: Partial<IConfirmConfig>): NgxHelperConfirmCalss;\n    status(active: boolean, data: IConfirmData, config?: Partial<IConfirmConfig>): NgxHelperConfirmCalss {\n        return active ? this.active(data, config || {}) : this.deactive(data, config || {});\n    }\n\n    delete(data: IConfirmData): NgxHelperConfirmCalss;\n    delete(data: IConfirmData, config: Partial<IConfirmConfig>): NgxHelperConfirmCalss;\n    delete(data: IConfirmData, config?: Partial<IConfirmConfig>): NgxHelperConfirmCalss {\n        return this.verify({\n            question: `آیا می‌خواهید ${data.title} انتخاب شده را حذف کنید؟`,\n            description: config?.description,\n            data: data.value ? { title: data.title, value: data.value } : undefined,\n            icon: 'delete',\n            confirmClass: config?.confirmClass || 'error',\n            denyClass: config?.denyClass,\n        });\n    }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport interface INgxHelperContainerConfig {\n    data?: any;\n    padding?: string;\n    hideClose?: boolean;\n}\n\nexport type NgxHelperContainer = 'DIALOG' | 'BOTTOMSHEET';\n\nexport const NGX_HELPER_CONTAINER_TYPE: InjectionToken<NgxHelperContainer> = new InjectionToken('NGX-HELPER-CONTAINER-TYPE');\nexport const NGX_HELPER_CONTAINER_DATA: InjectionToken<any> = new InjectionToken<any>('NGX-HELPER-CONTAINER-DATA');\nexport const NGX_HELPER_CONTAINER_CLOSE: InjectionToken<(response?: any) => void> = new InjectionToken(\n    'NGX-HELPER-CONTAINER-CLOSE',\n);\n","import { NgComponentOutlet } from '@angular/common';\nimport { Component, HostBinding, inject, Injector, OnInit } from '@angular/core';\nimport { ComponentType } from '@angular/cdk/portal';\n\nimport { MatIconButton } from '@angular/material/button';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { MatIcon } from '@angular/material/icon';\n\nimport {\n    INgxHelperContainerConfig,\n    NGX_HELPER_CONTAINER_CLOSE,\n    NGX_HELPER_CONTAINER_DATA,\n    NGX_HELPER_CONTAINER_TYPE,\n} from '../container.interface';\n\n@Component({\n    host: { selector: 'container-dialog' },\n    imports: [NgComponentOutlet, MatIconButton, MatIcon],\n    templateUrl: './container-dialog.component.html',\n    styleUrl: './container-dialog.component.scss',\n})\nexport class ContainerDialogComponent implements OnInit {\n    @HostBinding('className') private className: string = 'ngx-helper-m3-container';\n\n    public container: {\n        component: ComponentType<any>;\n        readonly title: string;\n        readonly config: INgxHelperContainerConfig;\n    } = inject(MAT_DIALOG_DATA);\n\n    public injector!: Injector;\n\n    constructor(private readonly matDialogRef: MatDialogRef<ContainerDialogComponent>) {}\n\n    ngOnInit(): void {\n        this.injector = Injector.create({\n            providers: [\n                { provide: NGX_HELPER_CONTAINER_TYPE, useValue: 'DIALOG' },\n                { provide: NGX_HELPER_CONTAINER_DATA, useValue: this.container.config.data },\n                {\n                    provide: NGX_HELPER_CONTAINER_CLOSE,\n                    useFactory: () => (response?: any) => this.matDialogRef.close(response),\n                },\n            ],\n        });\n    }\n\n    close(): void {\n        this.matDialogRef.close();\n    }\n}\n","<div class=\"container-header\">\n    <div class=\"title\">{{ container.title }}</div>\n    @if (!container.config.hideClose) {\n    <button mat-icon-button type=\"button\" (click)=\"close()\">\n        <mat-icon>close</mat-icon>\n    </button>\n    }\n</div>\n\n<div class=\"container-content\" [style.padding]=\"container.config.padding || '1rem'\">\n    <span *ngComponentOutlet=\"container.component; injector: injector\"></span>\n</div>\n","import { NgComponentOutlet } from '@angular/common';\nimport { Component, HostBinding, inject, Injector, OnInit } from '@angular/core';\nimport { ComponentType } from '@angular/cdk/portal';\n\nimport { MAT_BOTTOM_SHEET_DATA, MatBottomSheetRef } from '@angular/material/bottom-sheet';\nimport { MatIconButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\n\nimport {\n    INgxHelperContainerConfig,\n    NGX_HELPER_CONTAINER_CLOSE,\n    NGX_HELPER_CONTAINER_DATA,\n    NGX_HELPER_CONTAINER_TYPE,\n} from '../container.interface';\n\n@Component({\n    host: { selector: 'container-bottom-sheet' },\n    imports: [NgComponentOutlet, MatIconButton, MatIcon],\n    templateUrl: './container-bottom-sheet.component.html',\n    styleUrl: './container-bottom-sheet.component.scss',\n})\nexport class ContainerBottomSheetComponent implements OnInit {\n    @HostBinding('className') private className: string = 'ngx-helper-m3-container';\n\n    public container: {\n        component: ComponentType<any>;\n        readonly title: string;\n        readonly config: INgxHelperContainerConfig;\n    } = inject(MAT_BOTTOM_SHEET_DATA);\n\n    public injector!: Injector;\n\n    constructor(private readonly matBottomSheetRef: MatBottomSheetRef<ContainerBottomSheetComponent>) {}\n\n    ngOnInit(): void {\n        this.injector = Injector.create({\n            providers: [\n                { provide: NGX_HELPER_CONTAINER_TYPE, useValue: 'BOTTOMSHEET' },\n                { provide: NGX_HELPER_CONTAINER_DATA, useValue: this.container.config.data },\n                {\n                    provide: NGX_HELPER_CONTAINER_CLOSE,\n                    useFactory: () => (response?: any) => this.matBottomSheetRef.dismiss(response),\n                },\n            ],\n        });\n    }\n\n    close(): void {\n        this.matBottomSheetRef.dismiss();\n    }\n}\n","<div class=\"container-header\">\n    <div class=\"title\">{{ container.title }}</div>\n    @if (!container.config.hideClose) {\n    <button mat-icon-button type=\"button\" (click)=\"close()\">\n        <mat-icon>close</mat-icon>\n    </button>\n    }\n</div>\n\n<div class=\"container-content\" [style.padding]=\"container.config.padding || '1rem'\">\n    <span *ngComponentOutlet=\"container.component; injector: injector\"></span>\n</div>\n","import { Injectable } from '@angular/core';\nimport { ComponentType } from '@angular/cdk/portal';\n\nimport { MatBottomSheet, MatBottomSheetConfig } from '@angular/material/bottom-sheet';\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\n\nimport { ContainerDialogComponent } from './dialog/container-dialog.component';\nimport { ContainerBottomSheetComponent } from './bottom-sheet/container-bottom-sheet.component';\n\nimport { INgxHelperContainerConfig } from './container.interface';\n\ninterface IContainerData {\n    readonly component: ComponentType<any>;\n    readonly title: string;\n    readonly config: INgxHelperContainerConfig;\n}\n\nclass NgxHelperContainerCalss {\n    constructor(\n        private readonly matBottomSheet: MatBottomSheet,\n        private readonly matDialog: MatDialog,\n        private readonly container: IContainerData,\n    ) {}\n\n    dialog<T>(): void;\n    dialog<T>(onResponse: (response: T) => void): void;\n    dialog<T>(onResponse: (response: T) => void, onDismiss: () => void): void;\n    dialog<T>(onResponse: (response: T) => void, config: MatDialogConfig): void;\n    dialog<T>(onResponse: (response: T) => void, onDismiss: () => void, config: MatDialogConfig): void;\n    dialog<T>(arg1?: any, arg2?: any, arg3?: any): void {\n        const onResponse: ((response: T) => void) | undefined = typeof arg1 === 'function' ? arg1 : undefined;\n        const onDismiss: (() => void) | undefined = typeof arg2 === 'function' ? arg2 : undefined;\n        const config: MatDialogConfig = arg3 || (typeof arg2 !== 'function' ? arg2 : {});\n\n        this.matDialog\n            .open(ContainerDialogComponent, {\n                // DEFAULT CONFIG\n                width: 'calc(100vw - 4rem)',\n                direction: 'rtl',\n                enterAnimationDuration: '100ms',\n                exitAnimationDuration: '100ms',\n                // OVERWRITE CONFIG\n                ...config,\n                maxHeight: '80vh',\n                // DATA\n                data: this.container,\n            })\n            .afterClosed()\n            .subscribe({\n                next: (response?: T) => {\n                    if (onResponse && !!response) onResponse(response);\n                    if (onDismiss && !response) onDismiss();\n                },\n            });\n    }\n\n    bottomSheet<T>(): void;\n    bottomSheet<T>(onResponse: (result: T) => void): void;\n    bottomSheet<T>(onResponse: (result: T) => void, onDismiss: () => void): void;\n    bottomSheet<T>(onResponse: (result: T) => void, config: MatBottomSheetConfig): void;\n    bottomSheet<T>(onResponse: (result: T) => void, onDismiss: () => void, config: MatBottomSheetConfig): void;\n    bottomSheet<T>(arg1?: any, arg2?: any, arg3?: any): void {\n        const onResponse: ((result: T) => void) | undefined = typeof arg1 === 'function' ? arg1 : undefined;\n        const onDismiss: (() => void) | undefined = typeof arg2 === 'function' ? arg2 : undefined;\n        const config: MatBottomSheetConfig = arg3 || (typeof arg2 !== 'function' ? arg2 : {});\n\n        this.matBottomSheet\n            .open<any, any, T>(ContainerBottomSheetComponent, {\n                // DEFAULT CONFIG\n                direction: 'rtl',\n                panelClass: 'ngx-helper-bottom-sheet',\n                // OVERWRITE CONFIG\n                ...config,\n                maxHeight: '80vh',\n                // DATA\n                data: this.container,\n            })\n            .afterDismissed()\n            .subscribe({\n                next: (response?: T) => {\n                    if (onResponse && !!response) onResponse(response);\n                    if (onDismiss && !response) onDismiss();\n                },\n            });\n    }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class NgxHelperContainerService {\n    constructor(private readonly matBottomSheet: MatBottomSheet, private readonly matDialog: MatDialog) {}\n\n    init(component: ComponentType<any>, title: string): NgxHelperContainerCalss;\n    init(component: ComponentType<any>, title: string, config: INgxHelperContainerConfig): NgxHelperContainerCalss;\n    init(component: ComponentType<any>, title: string, arg1?: any): NgxHelperContainerCalss {\n        const config: INgxHelperContainerConfig = arg1 || {};\n\n        return new NgxHelperContainerCalss(this.matBottomSheet, this.matDialog, { component, title, config });\n    }\n}\n","import { Component, HostBinding, OnInit } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { NgxMaskDirective, provideNgxMask } from 'ngx-mask';\n\nimport { Feature, Map, View } from 'ol';\nimport { Coordinate } from 'ol/coordinate';\nimport { Point } from 'ol/geom';\nimport interactionDoubleClickZoom from 'ol/interaction/DoubleClickZoom';\nimport BaseLayer from 'ol/layer/Base';\nimport TileLayer from 'ol/layer/Tile';\nimport VectorLayer from 'ol/layer/Vector';\nimport OSM from 'ol/source/OSM';\nimport VectorSource from 'ol/source/Vector';\n\nimport { MatIcon } from '@angular/material/icon';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { INgxHelperCoordinates, INgxHelperCoordinatesConfig } from '../ngx-helper-coordinates.interface';\n\n@Component({\n    host: { selector: 'get' },\n    imports: [FormsModule, NgxMaskDirective, MatIcon],\n    providers: [provideNgxMask()],\n    templateUrl: './get.component.html',\n    styleUrl: './get.component.scss',\n})\nexport class GetComponent implements OnInit {\n    @HostBinding('className') private className: string = 'ngx-helper-m3-coordinates';\n\n    public coordinates?: INgxHelperCoordinates;\n    public config?: Partial<INgxHelperCoordinatesConfig>;\n    public close!: (coordinates?: INgxHelperCoordinates) => void;\n\n    private map!: Map;\n    public coordinate: Coordinate = [];\n    public inputTransformFn = (value: any): string => Helper.STRING.changeNumbers(value.toString(), 'EN');\n\n    ngOnInit(): void {\n        this.coordinate = this.coordinates\n            ? [this.coordinates.longitude, this.coordinates.latitude]\n            : this.config?.view\n            ? [this.config.view.longitude, this.config.view.latitude]\n            : [51.3380603, 35.6997382];\n\n        const zoom: number = this.config?.zoom || 15;\n\n        this.map = new Map({\n            view: new View({ center: this.coordinate, zoom, projection: 'EPSG:4326' }),\n            layers: [new TileLayer({ source: new OSM() })],\n            target: 'ngx-helper-m3-coordinates-map',\n        });\n\n        this.map\n            .getInteractions()\n            .getArray()\n            .forEach((interaction) => {\n                if (interaction instanceof interactionDoubleClickZoom) this.map.removeInteraction(interaction);\n            });\n\n        this.addLayer();\n    }\n\n    addLayer(): void {\n        this.map\n            .getLayers()\n            .getArray()\n            .forEach((layer: BaseLayer) => {\n                if (layer instanceof VectorLayer) this.map.removeLayer(layer);\n            });\n\n        if (this.coordinates) {\n            const size: number = this.config?.size || 8;\n            const color: string = this.config?.color || 'rgb(42, 101, 126)';\n\n            const point = new Point(this.coordinate);\n            const layer = new VectorLayer({\n                source: new VectorSource({ features: [new Feature(point)] }),\n                style: {\n                    'circle-fill-color': color,\n                    'circle-radius': size,\n                    'circle-stroke-color': '#FFF',\n                    'circle-stroke-width': 1,\n                },\n            });\n            this.map.addLayer(layer);\n        }\n    }\n\n    checkInputs(latitude: string, longitude: string): void {\n        this.coordinates = undefined;\n        this.addLayer();\n\n        latitude = latitude.toString().trim();\n        if (latitude === '' || isNaN(+latitude) || +latitude < -180 || +latitude > 180) return;\n\n        longitude = longitude.toString().trim();\n        if (longitude === '' || isNaN(+longitude) || +longitude < -180 || +longitude > 180) return;\n\n        const center: Coordinate = [+longitude, +latitude];\n        this.map.getView().animate({ center, duration: 1000 });\n\n        this.coordinate = [+longitude, +latitude];\n        this.coordinates = { latitude: +latitude, longitude: +longitude };\n        this.addLayer();\n    }\n\n    selectCoordinates(): void {\n        if (!this.coordinates) return;\n        this.close(this.coordinates);\n    }\n\n    setCoordinates(event: MouseEvent): void {\n        event.preventDefault();\n\n        this.coordinate = this.map.getEventCoordinate(event).map((c: number) => +c.toFixed(7));\n        this.coordinates = { latitude: this.coordinate[1], longitude: this.coordinate[0] };\n        this.addLayer();\n    }\n}\n","<div\n    id=\"ngx-helper-m3-coordinates-map\"\n    class=\"map\"\n    (dblclick)=\"setCoordinates($event)\"\n    (contextmenu)=\"setCoordinates($event)\"\n></div>\n\n<div class=\"coordinates\">\n    <div class=\"header\">\n        <div class=\"title\">COORDINATES</div>\n        <mat-icon (click)=\"close()\">close</mat-icon>\n    </div>\n    <div class=\"item\">\n        <div class=\"title\">LATITUDE</div>\n        <input\n            type=\"text\"\n            maxlength=\"15\"\n            inputmode=\"numeric\"\n            [ngModel]=\"coordinates?.latitude\"\n            mask=\"separator.12\"\n            thousandSeparator=\"\"\n            decimalMarker=\".\"\n            [allowNegativeNumbers]=\"true\"\n            [inputTransformFn]=\"inputTransformFn\"\n            (keyup.enter)=\"checkInputs(latitudeInput.value, longitudeInput.value)\"\n            (blur)=\"checkInputs(latitudeInput.value, longitudeInput.value)\"\n            #latitudeInput\n        />\n    </div>\n    <div class=\"item\">\n        <div class=\"title\">LONGITUDE</div>\n        <input\n            type=\"text\"\n            maxlength=\"15\"\n            inputmode=\"numeric\"\n            [ngModel]=\"coordinates?.longitude\"\n            mask=\"separator.12\"\n            thousandSeparator=\"\"\n            decimalMarker=\".\"\n            [allowNegativeNumbers]=\"true\"\n            [inputTransformFn]=\"inputTransformFn\"\n            (keyup.enter)=\"checkInputs(latitudeInput.value, longitudeInput.value)\"\n            (blur)=\"checkInputs(latitudeInput.value, longitudeInput.value)\"\n            #longitudeInput\n        />\n    </div>\n    <div class=\"buttons\">\n        <mat-icon [class.disabled]=\"!coordinates\" (click)=\"selectCoordinates()\">done_all</mat-icon>\n    </div>\n</div>\n","import { Component, HostBinding, OnInit } from '@angular/core';\n\nimport { Feature, Map, View } from 'ol';\nimport { Coordinate } from 'ol/coordinate';\nimport { Point } from 'ol/geom';\nimport TileLayer from 'ol/layer/Tile';\nimport VectorLayer from 'ol/layer/Vector';\nimport OSM from 'ol/source/OSM';\nimport VectorSource from 'ol/source/Vector';\n\nimport { ClipboardModule } from '@angular/cdk/clipboard';\nimport { MatIcon } from '@angular/material/icon';\n\nimport { INgxHelperCoordinates, INgxHelperCoordinatesConfig } from '../ngx-helper-coordinates.interface';\n\n@Component({\n    host: { selector: 'show' },\n    imports: [ClipboardModule, MatIcon],\n    templateUrl: './show.component.html',\n    styleUrl: './show.component.scss',\n})\nexport class ShowComponent implements OnInit {\n    @HostBinding('className') private className: string = 'ngx-helper-m3-coordinates';\n\n    public coordinates!: INgxHelperCoordinates;\n    public config?: Partial<Omit<INgxHelperCoordinatesConfig, 'view'>>;\n    public close!: () => void;\n\n    private map!: Map;\n    public copied?: 'LATITUDE' | 'LONGITUDE';\n    private copyTimeout: any;\n\n    ngOnInit(): void {\n        const coordinate: Coordinate = [this.coordinates.longitude, this.coordinates.latitude];\n        const point = new Point(coordinate);\n\n        const zoom: number = this.config?.zoom || 15;\n        const size: number = this.config?.size || 8;\n        const color: string = this.config?.color || 'rgb(42, 101, 126)';\n\n        this.map = new Map({\n            view: new View({ center: coordinate, zoom, projection: 'EPSG:4326' }),\n            layers: [\n                new TileLayer({ source: new OSM() }),\n                new VectorLayer({\n                    source: new VectorSource({ features: [new Feature(point)] }),\n                    style: {\n                        'circle-fill-color': color,\n                        'circle-radius': size,\n                        'circle-stroke-color': '#FFF',\n                        'circle-stroke-width': 1,\n                    },\n                }),\n            ],\n            target: 'ngx-helper-m3-coordinates-map',\n        });\n    }\n\n    setCopy(type: 'LATITUDE' | 'LONGITUDE'): void {\n        if (this.copyTimeout) clearTimeout(this.copyTimeout);\n\n        this.copied = type;\n        this.copyTimeout = setTimeout(() => (this.copied = undefined), 1000);\n    }\n}\n","<div id=\"ngx-helper-m3-coordinates-map\" class=\"map\"></div>\n\n<div class=\"coordinates\">\n    <div class=\"header\">\n        <div class=\"title\">COORDINATES</div>\n        <mat-icon (click)=\"close()\">close</mat-icon>\n    </div>\n    <div class=\"item\">\n        <div class=\"title\">LATITUDE</div>\n        <div class=\"value\">{{ coordinates.latitude.toFixed(7) }}</div>\n        <mat-icon [cdkCopyToClipboard]=\"coordinates.latitude.toString()\" (click)=\"setCopy('LATITUDE')\">\n            {{ copied === 'LATITUDE' ? 'done_all' : 'copy' }}\n        </mat-icon>\n    </div>\n    <div class=\"item\">\n        <div class=\"title\">LONGITUDE</div>\n        <div class=\"value\">{{ coordinates.longitude.toFixed(7) }}</div>\n        <mat-icon [cdkCopyToClipboard]=\"coordinates.longitude.toString()\" (click)=\"setCopy('LONGITUDE')\">\n            {{ copied === 'LONGITUDE' ? 'done_all' : 'copy' }}\n        </mat-icon>\n    </div>\n</div>\n","import { ApplicationRef, createComponent, EmbeddedViewRef, Injectable, Injector } from '@angular/core';\n\nimport { GetComponent } from './get/get.component';\nimport { ShowComponent } from './show/show.component';\n\nimport { INgxHelperCoordinates, INgxHelperCoordinatesConfig } from './ngx-helper-coordinates.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class NgxHelperCoordinatesService {\n    constructor(private readonly applicationRef: ApplicationRef, private readonly injector: Injector) {}\n\n    get(): Promise<INgxHelperCoordinates>;\n    get(coordinates: INgxHelperCoordinates): Promise<INgxHelperCoordinates>;\n    get(config: Partial<INgxHelperCoordinatesConfig>): Promise<INgxHelperCoordinates>;\n    get(coordinates: INgxHelperCoordinates, config: Partial<INgxHelperCoordinatesConfig>): Promise<INgxHelperCoordinates>;\n    get(arg1?: any, arg2?: any): Promise<INgxHelperCoordinates> {\n        const coordinates: INgxHelperCoordinates | undefined = arg1 ? ('latitude' in arg1 ? arg1 : undefined) : undefined;\n        const config: Partial<INgxHelperCoordinatesConfig> | undefined = arg2 || (arg1 && !coordinates ? arg1 : undefined);\n\n        return new Promise<INgxHelperCoordinates>((resolve, reject) => {\n            const componentRef = createComponent<GetComponent>(GetComponent, {\n                environmentInjector: this.applicationRef.injector,\n                elementInjector: this.injector,\n            });\n\n            componentRef.instance.coordinates = coordinates;\n            componentRef.instance.config = config;\n            componentRef.instance.close = (coordinates?: INgxHelperCoordinates) => {\n                this.applicationRef.detachView(componentRef.hostView);\n                componentRef.destroy();\n\n                coordinates ? resolve(coordinates) : reject();\n            };\n\n            const htmlElement = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n            this.applicationRef.attachView(componentRef.hostView);\n            document.body.appendChild(htmlElement);\n        });\n    }\n\n    show(coordinates: INgxHelperCoordinates): void;\n    show(coordinates: INgxHelperCoordinates, config: Partial<Omit<INgxHelperCoordinatesConfig, 'view'>>): void;\n    show(coordinates: INgxHelperCoordinates, config?: Partial<Omit<INgxHelperCoordinatesConfig, 'view'>>): void {\n        const componentRef = createComponent<ShowComponent>(ShowComponent, {\n            environmentInjector: this.applicationRef.injector,\n            elementInjector: this.injector,\n        });\n\n        componentRef.instance.coordinates = coordinates;\n        componentRef.instance.config = config;\n        componentRef.instance.close = () => {\n            this.applicationRef.detachView(componentRef.hostView);\n            componentRef.destroy();\n        };\n\n        const htmlElement = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n        this.applicationRef.attachView(componentRef.hostView);\n        document.body.appendChild(htmlElement);\n    }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\nimport { Helper } from '@webilix/helper-library';\n\n@Pipe({ name: 'ngxHelperMultiLine' })\nexport class NgxHelperMultiLinePipe implements PipeTransform {\n    constructor(private readonly domSanitizer: DomSanitizer) {}\n\n    transform(value?: string | null, options?: { html?: boolean }): string | SafeHtml {\n        if (value === undefined || value === null || !Helper.IS.string(value) || value === '') return '';\n\n        return options?.html\n            ? this.domSanitizer.bypassSecurityTrustHtml(value.replace(/(?:\\r\\n|\\r|\\n)/g, '<br />'))\n            : Helper.STRING.escapeHTML(value).replace(/(?:\\r\\n|\\r|\\n)/g, '<br />');\n    }\n}\n","import { AfterViewInit, Component, ElementRef, HostBinding, HostListener, OnDestroy, OnInit } from '@angular/core';\nimport { animate, style, transition, trigger } from '@angular/animations';\n\nimport { MatIcon } from '@angular/material/icon';\n\nimport { NgxHelperMultiLinePipe } from '../../pipes/multi-line.pipe';\nimport { INgxHelperConfig } from '../../ngx-helper.config';\n\nimport { INgxHelperToastConfig } from '../ngx-helper-toast.interface';\n\n@Component({\n    host: { selector: 'toast' },\n    imports: [MatIcon, NgxHelperMultiLinePipe],\n    templateUrl: './toast.component.html',\n    styleUrl: './toast.component.scss',\n    animations: [\n        trigger('host', [\n            transition(':enter', [\n                style({ top: 0, opacity: 0 }),\n                animate('350ms ease-in-out', style({ top: '*', opacity: 1 })),\n            ]),\n        ]),\n    ],\n})\nexport class ToastComponent implements OnInit, OnDestroy, AfterViewInit {\n    @HostListener('click') private onClick = () => this.close();\n\n    @HostBinding('@host') private host: boolean = true;\n    @HostBinding('className') private className: string = 'ngx-helper-m3-toast';\n    @HostBinding('style.top') top: string = '1rem';\n    @HostBinding('style.color') textColor!: string;\n    @HostBinding('style.border-color') borderColor!: string;\n    @HostBinding('style.background-color') backgroundColor!: string;\n\n    public id!: string;\n    public icon!: string;\n    public messages: string[] = [];\n    public config!: { helper?: Partial<INgxHelperConfig>; toast: Partial<INgxHelperToastConfig> };\n    public init!: () => void;\n    public close!: () => void;\n\n    public timeout!: number;\n    public showClose!: boolean;\n    public animation!: 'DECREASE' | 'INCREASE';\n\n    public progress: number = 0;\n    public start: number = 0;\n    private interval?: any;\n\n    constructor(public readonly elementRef: ElementRef) {}\n\n    ngOnInit(): void {\n        this.borderColor = this.backgroundColor;\n\n        const xPosition: 'LEFT' | 'CENTER' | 'RIGHT' = this.config.helper?.toastXPosition || 'CENTER';\n        this.className = `ngx-helper-m3-toast ${xPosition.toLowerCase()}`;\n\n        const toastTimeout =\n            this.config.helper?.toastTimeout === undefined || this.config.helper?.toastTimeout < 0\n                ? 4000\n                : this.config.helper?.toastTimeout;\n        this.timeout =\n            this.config.toast.timeout === undefined || this.config.toast.timeout < 0\n                ? toastTimeout\n                : this.config.toast.timeout;\n        this.showClose = this.config.toast.showClose || this.timeout === 0;\n        this.animation = this.config.helper?.toastProgressAnimation || 'DECREASE';\n\n        if (this.timeout) {\n            this.start = new Date().getTime();\n            this.interval = setInterval(() => {\n                const timer: number = new Date().getTime();\n                this.progress = ((timer - this.start) * 100) / this.timeout;\n                this.progress = this.progress < 100 ? +this.progress.toFixed(2) : 100;\n                if (this.progress === 100) this.close();\n            }, 25);\n        }\n    }\n\n    ngOnDestroy(): void {\n        if (this.interval) clearInterval(this.interval);\n    }\n\n    ngAfterViewInit(): void {\n        this.init();\n    }\n}\n","<div class=\"content\">\n    <div class=\"toast\">\n        <mat-icon [style.color]=\"textColor\" class=\"icon\">{{ icon }}</mat-icon>\n        <ul>\n            @for (message of messages; track $index) {\n            <li [innerHTML]=\"message | ngxHelperMultiLine\"></li>\n            }\n        </ul>\n    </div>\n    <!-- CLOSE ICON -->\n    @if (showClose) {\n    <mat-icon [style.color]=\"textColor\" class=\"close\">close</mat-icon>\n    }\n</div>\n\n<div class=\"progress-container\" [style.background-color]=\"backgroundColor\">\n    @if (timeout !== 0) {\n    <div\n        class=\"progress-value\"\n        [style.background-color]=\"'color-mix(in srgb, ' + backgroundColor + ', black 25%)'\"\n        [style.width]=\"(animation === 'DECREASE' ? 100 - progress : progress) + '%'\"\n    ></div>\n    }\n</div>\n","import {\n    ApplicationRef,\n    ComponentRef,\n    createComponent,\n    EmbeddedViewRef,\n    Inject,\n    Injectable,\n    Injector,\n    Optional,\n} from '@angular/core';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { INgxHelperConfig, NGX_HELPER_CONFIG } from '../ngx-helper.config';\n\nimport { ToastComponent } from './toast/toast.component';\nimport { INgxHelperToastConfig } from './ngx-helper-toast.interface';\n\ninterface IToast {\n    readonly icon: string;\n    readonly textColor: string;\n    readonly backgroundColor: string;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class NgxHelperToastService {\n    private components: { id: string; componentRef: ComponentRef<ToastComponent>; content: string }[] = [];\n\n    constructor(\n        private readonly applicationRef: ApplicationRef,\n        private readonly injector: Injector,\n        @Optional() @Inject(NGX_HELPER_CONFIG) private readonly config?: Partial<INgxHelperConfig>,\n    ) {}\n\n    private getId(): string {\n        let id: string | undefined = undefined;\n        while (!id || this.components.some((c) => c.id === id)) id = Helper.STRING.getRandom(10);\n\n        return id;\n    }\n\n    private updatePositions(): void {\n        let top: number = 0;\n        this.components.forEach((c, index) => {\n            c.componentRef.instance.top = `calc(${(index / 1.5).toFixed(1)}rem + calc(${top}px + 1rem))`;\n            top += +c.componentRef.instance.elementRef.nativeElement.offsetHeight;\n        });\n    }\n\n    toast(toast: IToast, message: string | string[]): void;\n    toast(toast: IToast, message: string | string[], config: Partial<INgxHelperToastConfig>): void;\n    toast(toast: IToast, message: string | string[], onClose: () => void): void;\n    toast(toast: IToast, message: string | string[], config: Partial<INgxHelperToastConfig>, onClose: () => void): void;\n    toast(toast: IToast, message: string | string[], arg1?: any, arg2?: any): void {\n        const config: Partial<INgxHelperToastConfig> = arg2 ? arg1 : typeof arg1 === 'object' ? arg1 : {};\n        const onClose: () => void = arg2 || (typeof arg1 === 'function' ? arg1 : () => {});\n\n        const messages: string[] = typeof message === 'string' ? [message] : message;\n        const content: string = [toast.icon, toast.textColor, toast.backgroundColor, ...messages].join('\\n');\n        const duplicate = this.components.find((component) => component.content === content);\n        if (!this.config?.toastAllowDuplicates && duplicate) {\n            if (this.config?.toastResetDuplicates) {\n                duplicate.componentRef.instance.start = new Date().getTime();\n                duplicate.componentRef.instance.progress = 0;\n            }\n            return;\n        }\n\n        const componentRef = createComponent<ToastComponent>(ToastComponent, {\n            environmentInjector: this.applicationRef.injector,\n            elementInjector: this.injector,\n        });\n\n        const id: string = this.getId();\n        componentRef.instance.id = id;\n        componentRef.instance.icon = toast.icon;\n        componentRef.instance.textColor = toast.textColor;\n        componentRef.instance.backgroundColor = toast.backgroundColor;\n        componentRef.instance.messages = messages;\n        componentRef.instance.config = { helper: this.config, toast: config };\n        componentRef.instance.init = () => this.updatePositions();\n        componentRef.instance.close = () => {\n            this.applicationRef.detachView(componentRef.hostView);\n            document.body.removeChild(htmlElement);\n            componentRef.destroy();\n\n            this.components = this.components.filter((c) => c.id !== componentRef.instance.id);\n            this.updatePositions();\n\n            if (onClose) onClose();\n        };\n        const htmlElement = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n        this.applicationRef.attachView(componentRef.hostView);\n        document.body.appendChild(htmlElement);\n\n        this.components.push({ id, componentRef, content });\n        this.updatePositions();\n    }\n\n    info(message: string | string[]): void;\n    info(message: string | string[], config: Partial<INgxHelperToastConfig>): void;\n    info(message: string | string[], onClose: () => void): void;\n    info(message: string | string[], config: Partial<INgxHelperToastConfig>, onClose: () => void): void;\n    info(message: string | string[], arg1?: any, arg2?: any): void {\n        const toast: IToast = { icon: 'warning_amber', textColor: '#fff', backgroundColor: '#2f96b4' };\n        this.toast(toast, message, arg1, arg2);\n    }\n\n    success(message: string | string[]): void;\n    success(message: string | string[], config: Partial<INgxHelperToastConfig>): void;\n    success(message: string | string[], onClose: () => void): void;\n    success(message: string | string[], config: Partial<INgxHelperToastConfig>, onClose: () => void): void;\n    success(message: string | string[], arg1?: any, arg2?: any): void {\n        const toast: IToast = { icon: 'done_all', textColor: '#fff', backgroundColor: '#51a351' };\n        this.toast(toast, message, arg1, arg2);\n    }\n\n    warning(message: string | string[]): void;\n    warning(message: string | string[], config: Partial<INgxHelperToastConfig>): void;\n    warning(message: string | string[], onClose: () => void): void;\n    warning(message: string | string[], config: Partial<INgxHelperToastConfig>, onClose: () => void): void;\n    warning(message: string | string[], arg1?: any, arg2?: any): void {\n        const toast: IToast = { icon: 'info', textColor: '#fff', backgroundColor: '#f89406' };\n        this.toast(toast, message, arg1, arg2);\n    }\n\n    error(message: string | string[]): void;\n    error(message: string | string[], config: Partial<INgxHelperToastConfig>): void;\n    error(message: string | string[], onClose: () => void): void;\n    error(message: string | string[], config: Partial<INgxHelperToastConfig>, onClose: () => void): void;\n    error(message: string | string[], arg1?: any, arg2?: any): void {\n        const toast: IToast = { icon: 'cancel', textColor: '#fff', backgroundColor: '#bd362f' };\n        this.toast(toast, message, arg1, arg2);\n    }\n}\n","import { AfterViewInit, Component, HostBinding } from '@angular/core';\nimport { animate, style, transition, trigger } from '@angular/animations';\nimport { HttpClient, HttpEventType, HttpHeaders } from '@angular/common/http';\n\nimport { MatIcon } from '@angular/material/icon';\n\nimport { NgxHelperToastService } from '../../toast/ngx-helper-toast.service';\n\nimport { INgxHelperHttpDownloadConfig } from '../ngx-helper-http.interface';\n\n@Component({\n    host: { selector: 'download' },\n    imports: [MatIcon],\n    templateUrl: './download.component.html',\n    styleUrl: './download.component.scss',\n    animations: [\n        trigger('host', [\n            transition(':enter', [\n                style({ left: 'calc(-250px - 1rem)' }),\n                animate('100ms ease-in-out', style({ left: '1rem' })),\n            ]),\n        ]),\n    ],\n})\nexport class DownloadComponent implements AfterViewInit {\n    @HostBinding('@host') private host: boolean = true;\n    @HostBinding('className') private className: string = 'ngx-helper-m3-http';\n    @HostBinding('style.bottom') bottom: string = '1rem';\n\n    public id!: string;\n    public path!: string;\n    public title!: string;\n    public config!: Partial<INgxHelperHttpDownloadConfig>;\n    public onSuccess!: (arrayBuffer: ArrayBuffer) => void;\n    public onError!: () => void;\n    public close!: () => void;\n\n    public progress: number = 0;\n\n    constructor(private readonly httpClient: HttpClient, private readonly ngxHelperToastService: NgxHelperToastService) {}\n\n    ngAfterViewInit(): void {\n        setTimeout(this.download.bind(this), 0);\n    }\n\n    download(): void {\n        let headers: HttpHeaders = new HttpHeaders();\n        const header: { [key: string]: any } = this.config.header || {};\n        Object.keys(header).forEach((key: string) => (headers = headers.set(key, header[key])));\n\n        let request;\n        switch (this.config.method || 'GET') {\n            case 'GET':\n                request = this.httpClient.get(this.path, {\n                    headers,\n                    reportProgress: true,\n                    observe: 'events',\n                    responseType: 'arraybuffer',\n                });\n                break;\n            case 'POST':\n                request = this.httpClient.post(this.path, {\n                    headers,\n                    reportProgress: true,\n                    observe: 'events',\n                    responseType: 'arraybuffer',\n                });\n                break;\n            case 'PUT':\n                request = this.httpClient.put(this.path, {\n                    headers,\n                    reportProgress: true,\n                    observe: 'events',\n                    responseType: 'arraybuffer',\n                });\n                break;\n            case 'PATCH':\n                request = this.httpClient.patch(this.path, {\n                    headers,\n                    reportProgress: true,\n                    observe: 'events',\n                    responseType: 'arraybuffer',\n                });\n                break;\n        }\n\n        request.subscribe({\n            next: (event: any) => {\n                switch (event.type) {\n                    case HttpEventType.DownloadProgress:\n                        const progress: number =\n                            event.loaded && event.total ? Math.ceil((event.loaded / event.total) * 1000) / 10 : 0;\n                        this.progress = progress <= 100 ? progress : 100;\n                        break;\n\n                    case HttpEventType.Response:\n                        this.progress = 100;\n                        this.onSuccess(event.body);\n                        this.close();\n                        break;\n                }\n            },\n            error: () => {\n                this.onError();\n                this.close();\n            },\n        });\n    }\n}\n","<div class=\"content\">\n    <mat-icon>file_download</mat-icon>\n    <div class=\"title\">{{ title }}</div>\n</div>\n\n<div class=\"progress-container\">\n    <div class=\"progress-value\" [style.width]=\"progress + '%'\"></div>\n</div>\n","import { AfterViewInit, Component, HostBinding } from '@angular/core';\nimport { animate, style, transition, trigger } from '@angular/animations';\nimport { HttpClient, HttpErrorResponse, HttpEvent, HttpEventType, HttpHeaders, HttpStatusCode } from '@angular/common/http';\n\nimport { MatIcon } from '@angular/material/icon';\n\nimport { INgxHelperHttpUploadConfig } from '../ngx-helper-http.interface';\n\n@Component({\n    host: { selector: 'upload' },\n    imports: [MatIcon],\n    templateUrl: './upload.component.html',\n    styleUrl: './upload.component.scss',\n    animations: [\n        trigger('host', [\n            transition(':enter', [\n                style({ left: 'calc(-250px - 1rem)' }),\n                animate('100ms ease-in-out', style({ left: '1rem' })),\n            ]),\n        ]),\n    ],\n})\nexport class UploadComponent<R, E> implements AfterViewInit {\n    @HostBinding('@host') private host: boolean = true;\n    @HostBinding('className') private className: string = 'ngx-helper-m3-http';\n    @HostBinding('style.bottom') bottom: string = '1rem';\n\n    public id!: string;\n    public file!: File;\n    public url!: string;\n    public config!: Partial<INgxHelperHttpUploadConfig>;\n    public close!: (type: 'RESPONSE' | 'ERROR', result: any, status: HttpStatusCode) => void;\n\n    public progress: number = 0;\n\n    constructor(private readonly httpClient: HttpClient) {}\n\n    ngAfterViewInit(): void {\n        setTimeout(this.upload.bind(this), 0);\n    }\n\n    upload(): void {\n        const formData: FormData = new FormData();\n        formData.append('file', this.file);\n\n        const body: { [key: string]: any } = this.config.body || {};\n        Object.keys(body).forEach((k: string) => formData.append(k, body[k]));\n\n        let headers: HttpHeaders = new HttpHeaders();\n        const header: { [key: string]: any } = this.config.header || {};\n        Object.keys(header).forEach((key: string) => (headers = headers.set(key, header[key])));\n\n        let request;\n        switch (this.config.method || 'POST') {\n            case 'POST':\n                request = this.httpClient.post<R>(this.url, formData, { headers, reportProgress: true, observe: 'events' });\n                break;\n            case 'PUT':\n                request = this.httpClient.put<R>(this.url, formData, { headers, reportProgress: true, observe: 'events' });\n                break;\n            case 'PATCH':\n                request = this.httpClient.patch<R>(this.url, formData, { headers, reportProgress: true, observe: 'events' });\n                break;\n        }\n\n        request.subscribe({\n            next: (event: HttpEvent<R>) => {\n                switch (event.type) {\n                    case HttpEventType.UploadProgress:\n                        if (!event.loaded || !event.total) return;\n                        const progress: number = (event.loaded / event.total) * 100;\n                        this.progress = progress > 100 ? 100 : +progress.toFixed(2);\n                        break;\n\n                    case HttpEventType.Response:\n                        this.progress = 100;\n                        this.close('RESPONSE', event.body, event.status);\n                        break;\n                }\n            },\n            error: (error: HttpErrorResponse) => this.close('ERROR', error.error, error.status),\n        });\n    }\n}\n","<div class=\"content\">\n    <mat-icon>file_upload</mat-icon>\n    <div class=\"file\">{{ file.name }}</div>\n</div>\n\n<div class=\"progress-container\">\n    <div class=\"progress-value\" [style.width]=\"progress + '%'\"></div>\n</div>\n","import { ApplicationRef, ComponentRef, createComponent, EmbeddedViewRef, Injectable, Injector } from '@angular/core';\nimport { HttpStatusCode } from '@angular/common/http';\n\nimport { Helper } from '@webilix/helper-library';\n\nimport { NgxHelperToastService } from '../toast/ngx-helper-toast.service';\n\nimport { DownloadComponent } from './download/download.component';\nimport { UploadComponent } from './upload/upload.component';\nimport { INgxHelperHttpDownloadConfig, INgxHelperHttpUploadConfig } from './ngx-helper-http.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class NgxHelperHttpService {\n    private components: {\n        id: string;\n        componentRef: ComponentRef<DownloadComponent> | ComponentRef<UploadComponent<any, any>>;\n    }[] = [];\n\n    constructor(\n        private readonly applicationRef: ApplicationRef,\n        private readonly injector: Injector,\n        private readonly ngxHelperToastService: NgxHelperToastService,\n    ) {}\n\n    private getId(): string {\n        let id: string | undefined = undefined;\n        while (!id || this.components.some((c) => c.id === id)) id = Helper.STRING.getRandom(10);\n\n        return id;\n    }\n\n    private updatePositions(): void {\n        this.components.forEach((c, index) => {\n            c.componentRef.instance.bottom = `calc(${(index / 1.5).toFixed(1)}rem + calc(${index * 40}px + 1rem))`;\n        });\n    }\n\n    private getBuffer(path: string, title: string): Promise<ArrayBuffer>;\n    private getBuffer(path: string, title: string, config: Partial<INgxHelperHttpDownloadConfig>): Promise<ArrayBuffer>;\n    private getBuffer(path: string, title: string, config?: Partial<INgxHelperHttpDownloadConfig>): Promise<ArrayBuffer> {\n        return new Promise<ArrayBuffer>((resolve, reject) => {\n            const componentRef = createComponent<DownloadComponent>(DownloadComponent, {\n                environmentInjector: this.applicationRef.injector,\n                elementInjector: this.injector,\n            });\n\n            const id: string = this.getId();\n            componentRef.instance.id = id;\n            componentRef.instance.path = path;\n            componentRef.instance.title = title;\n            componentRef.instance.config = config || {};\n            componentRef.instance.onSuccess = (arrayBuffer: ArrayBuffer) => resolve(arrayBuffer);\n            componentRef.instance.onError = () => reject();\n            componentRef.instance.close = () => {\n                this.applicationRef.detachView(componentRef.hostView);\n                document.body.removeChild(htmlElement);\n                componentRef.destroy();\n\n                this.components = this.components.filter((c) => c.id !== componentRef.instance.id);\n                this.updatePositions();\n            };\n\n            const htmlElement = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n            this.applicationRef.attachView(componentRef.hostView);\n            document.body.appendChild(htmlElement);\n\n            this.components.push({ id, componentRef });\n            this.updatePositions();\n        });\n    }\n\n    download(path: string, title: string): void;\n    download(path: string, title: string, config: Partial<INgxHelperHttpDownloadConfig>): void;\n    download(path: string, title: string, config?: Partial<INgxHelperHttpDownloadConfig>): void {\n        const onError = () => this.ngxHelperToastService.error('امکان دانلود فایل وجود ندارد.');\n        const onSuccess = (arrayBuffer: ArrayBuffer) => {\n            try {\n                const split: string[] = path\n                    .split('.')\n                    .map((text: string) => text.trim().replace(/\\//gi, ''))\n                    .filter((text: string) => !!text);\n                const name: string = Helper.STRING.getFileName(title, split[split.length - 1] || '');\n\n                const href: string = URL.createObjectURL(new Blob([arrayBuffer]));\n                const a: HTMLAnchorElement = document.createElement('a');\n                a.href = href;\n                a.download = name;\n                a.click();\n            } catch (e) {\n                onError();\n            }\n        };\n\n        this.getBuffer(path, title, config || {}).then(onSuccess, onError);\n    }\n\n    upload<R, E>(\n        file: File,\n        url: string,\n        onSuccess: (response: R | undefined, status: HttpStatusCode) => void,\n        onError: (error: E | undefined, status: HttpStatusCode) => void,\n    ): void;\n    upload<R, E>(\n        file: File,\n        url: string,\n        config: Partial<INgxHelperHttpUploadConfig>,\n        onSuccess: (response: R, status: HttpStatusCode) => void,\n        onError: (error: E, status: HttpStatusCode) => void,\n    ): void;\n    upload<R, E>(file: File, url: string, arg1: any, arg2: any, arg3?: any): void {\n        const config: Partial<INgxHelperHttpUploadConfig> = typeof arg3 === 'function' ? arg1 : {};\n        const onSuccess: (response: R, status: HttpStatusCode) => void = typeof arg3 === 'function' ? arg2 : arg1;\n        const onError: (error: E, status: HttpStatusCode) => void = typeof arg3 === 'function' ? arg3 : arg2;\n\n        const componentRef = createComponent<UploadComponent<R, E>>(UploadComponent, {\n            environmentInjector: this.applicationRef.injector,\n            elementInjector: this.injector,\n        });\n\n        const id: string = this.getId();\n        componentRef.instance.id = id;\n        componentRef.instance.file = file;\n        componentRef.instance.url = url;\n        componentRef.instance.config = config;\n        componentRef.instance.close = (type: 'RESPONSE' | 'ERROR', result: any, status: HttpStatusCode) => {\n            this.applicationRef.detachView(componentRef.hostView);\n            document.body.removeChild(htmlElement);\n            componentRef.destroy();\n\n            this.components = this.components.filter((c) => c.id !== componentRef.instance.id);\n            this.updatePositions();\n\n            switch (type) {\n                case 'RESPONSE':\n                    onSuccess(result || undefined, status);\n                    break;\n                case 'ERROR':\n                    onError(result || undefined, status);\n                    break;\n            }\n        };\n\n        const htmlElement = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\n        this.applicationRef.attachView(componentRef.hostView);\n        document.body.appendChild(htmlElement);\n\n        this.components.push({ id, componentRef });\n        this.updatePositions();\n    }\n\n    printPDF(url: string): void;\n    printPDF(url: string, config: Partial<INgxHelperHttpDownloadConfig>): void;\n    printPDF(buffer: ArrayBuffer): void;\n    printPDF(buffer: ArrayBuffer, config: Partial<INgxHelperHttpDownloadConfig>): void;\n    printPDF(blob: Blob): void;\n    printPDF(blob: Blob, config: Partial<INgxHelperHttpDownloadConfig>): void;\n    printPDF(data: string | ArrayBuffer | Blob, config?: Partial<INgxHelperHttpDownloadConfig>): void {\n        const getPDF = (): Promise<Blob> => {\n            return new Promise<Blob>((resolve, reject) => {\n                if (typeof data !== 'string') {\n                    resolve(new Blob([data], { type: 'application/pdf' }));\n                    return;\n                }\n\n                this.getBuffer(data, 'دریافت فایل', config || {}).then(\n                    (arrayBuffer: ArrayBuffer) => resolve(new Blob([arrayBuffer], { type: 'application/pdf' })),\n                    () => reject(),\n                );\n            });\n        };\n\n        getPDF().then(\n            (blob: Blob) => {\n                try {\n                    const prevIframe = document.getElementById('ngx-helper-http-pdf-download-iframe');\n                    if (prevIframe) document.body.removeChild(prevIframe);\n\n                    const src: string = URL.createObjectURL(blob);\n                    const iframe: HTMLIFrameElement = document.createElement('iframe');\n                    iframe.id = 'ngx-helper-http-pdf-download-iframe';\n                    iframe.style.display = 'none';\n                    document.body.appendChild(iframe);\n\n                    iframe.src = src;\n                    iframe.onload = () => iframe.contentWindow?.print();\n                } catch (e) {\n                    this.ngxHelperToastService.error('امکان پرینت فایل وجود ندارد.');\n                }\n            },\n            () => this.ngxHelperToastService.error('امکان دانلود فایل وجود ندارد.'),\n        );\n    }\n}\n","import { Directive, ElementRef, Inject, Input, OnInit, Optional, RendererFactory2 } from '@angular/core';\n\nimport { INgxHelperConfig, NGX_HELPER_CONFIG } from '../ngx-helper.config';\n\n@Directive({\n    selector: '[ngxHelperMobileView]',\n    host: { '(window:resize)': 'onResize($event)' },\n})\nexport class NgxHelperMobileViewDirective implements OnInit {\n    @Input({ required: true }) public ngxHelperMobileView!: string;\n\n    private mobileWidth!: number;\n\n    constructor(\n        private readonly elementRef: ElementRef,\n        private readonly rendererFactory: RendererFactory2,\n        @Optional() @Inject(NGX_HELPER_CONFIG) private readonly config?: Partial<INgxHelperConfig>,\n    ) {}\n\n    ngOnInit(): void {\n        this.mobileWidth = this.config?.mobileWidth || 600;\n        this.onResize();\n    }\n\n    onResize(): void {\n        if (!this.elementRef) return;\n\n        const renderer = this.rendererFactory.createRenderer(null, null);\n        const isMobile: boolean = window.innerWidth <= this.mobileWidth;\n        if (isMobile) {\n            renderer.addClass(this.elementRef.nativeElement, this.ngxHelperMobileView);\n        } else {\n            renderer.removeClass(this.elementRef.nativeElement, this.ngxHelperMobileView);\n        }\n    }\n}\n","import { Directive, ElementRef, Inject, Input, OnInit, Optional } from '@angular/core';\n\nimport { INgxHelperConfig, NGX_HELPER_CONFIG } from '../ngx-helper.config';\n\ninterface IStickyView {\n    readonly top?: { readonly desktopView: string; readonly mobileView: string };\n    readonly bottom?: { readonly desktopView: string; readonly mobileView: string };\n}\n\n@Directive({\n    selector: '[ngxHelperSticky]',\n    host: { '(window:resize)': 'onResize($event)' },\n})\nexport class NgxHelperStickyDirective implements OnInit {\n    @Input({ required: true }) public ngxHelperSticky!: 'TOP' | 'BOTTOM';\n    @Input({ required: false }) public stickyIn: 'ALWAYS' | 'DESKTOP' | 'MOBILE' = 'ALWAYS';\n    @Input({ required: false }) public zIndex?: number;\n\n    private mobileWidth!: number;\n    private stickyView!: IStickyView;\n    private isMobile: boolean = false;\n\n    constructor(\n        private readonly elementRef: ElementRef,\n        @Optional() @Inject(NGX_HELPER_CONFIG) private readonly config?: Partial<INgxHelperConfig>,\n    ) {}\n\n    ngOnInit(): void {\n        const getStickyView = (\n            config: string | { desktopView: string; mobileView: string },\n        ): { desktopView: string; mobileView: string } => {\n            return {\n                desktopView: typeof config === 'string' ? config : config.desktopView,\n                mobileView: typeof config === 'string' ? config : config.mobileView,\n            };\n        };\n\n        this.mobileWidth = this.config?.mobileWidth || 600;\n        this.stickyView = {\n            top: this.config?.stickyView?.top ? getStickyView(this.config.stickyView.top) : undefined,\n            bottom: this.config?.stickyView?.bottom ? getStickyView(this.config.stickyView.bottom) : undefined,\n        };\n\n        this.onResize();\n    }\n\n    onResize(): void {\n        this.isMobile = window.innerWidth <= this.mobileWidth;\n        this.setPosition();\n    }\n\n    setPosition(): void {\n        const element: HTMLElement = this.elementRef.nativeElement;\n        if (!element) return;\n\n        const sticky: boolean =\n            this.stickyIn === 'ALWAYS' ||\n            (this.stickyIn === 'DESKTOP' && !this.isMobile) ||\n            (this.stickyIn === 'MOBILE' && this.isMobile);\n\n        switch (this.ngxHelperSticky) {\n            case 'TOP':\n                const top = this.stickyView.top;\n                if (!top) return;\n\n                element.style.position = sticky ? 'sticky' : 'static';\n                element.style.zIndex = sticky ? (this.zIndex ? this.zIndex.toString() : '1') : 'auto';\n                element.style.top = sticky ? (this.isMobile ? top.mobileView : top.desktopView) : 'auto';\n                break;\n\n            case 'BOTTOM':\n                const bottom = this.stickyView.bottom;\n                if (!bottom) return;\n\n                element.style.position = sticky ? 'sticky' : 'static';\n                element.style.zIndex = sticky ? (this.zIndex ? this.zIndex.toString() : '1') : 'auto';\n                element.style.bottom = sticky ? (this.isMobile ? bottom.mobileView : bottom.desktopView) : 'auto';\n                break;\n        }\n    }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer, SafeHtml, SafeResourceUrl, SafeScript, SafeStyle, SafeUrl } from '@angular/platform-browser';\n\nimport { Helper } from '@webilix/helper-library';\n\ntype Types = 'HTML' | 'STYLE' | 'SCRIPT' | 'URL' | 'RESOURCE_URL';\n\n@Pipe({ name: 'ngxHelperSafe' })\nexport class NgxHelperSafePipe implements PipeTransform {\n    constructor(private readonly domSanitizer: DomSanitizer) {}\n\n    transform(\n        value?: string | null,\n        options?: { type?: Types },\n    ): string | SafeHtml | SafeStyle | SafeScript | SafeUrl | SafeResourceUrl {\n        if (value === undefined || value === null || !Helper.IS.string(value) || value === '') return '';\n\n        switch (options?.type || 'HTML') {\n            case 'STYLE':\n                return this.domSanitizer.bypassSecurityTrustStyle(value);\n            case 'SCRIPT':\n                return this.domSanitizer.bypassSecurityTrustScript(value);\n            case 'URL':\n                return this.domSanitizer.bypassSecurityTrustUrl(value);\n            case 'RESOURCE_URL':\n                return this.domSanitizer.bypassSecurityTrustResourceUrl(value);\n            case 'HTML':\n                return this.domSanitizer.bypassSecurityTrustHtml(value);\n        }\n    }\n}\n","/*\n * Public API Surface of ngx-helper-m3\n */\n\nexport * from './lib/ngx-helper.config';\n\n// COMPONENTS\nexport * from './lib/components/box/ngx-helper-box.component';\nexport * from './lib/components/box/ngx-helper-box.interface';\nexport * from './lib/components/card/ngx-helper-card.component';\nexport * from './lib/components/card/ngx-helper-card.interface';\nexport * from './lib/components/loader/ngx-helper-loader.component';\nexport * from './lib/components/page-group/ngx-helper-page-group.component';\nexport * from './lib/components/page-group/ngx-helper-page-group.interface';\nexport * from './lib/components/progress/ngx-helper-progress.component';\nexport * from './lib/components/section/ngx-helper-section.component';\nexport * from './lib/components/section/column/ngx-helper-section-column.component';\nexport * from './lib/components/value/box/ngx-helper-value-box.component';\nexport * from './lib/components/value/list/ngx-helper-value-list.component';\nexport * from './lib/components/value/ngx-helper-value.interface';\nexport * from './lib/components/value/ngx-helper-value.pipe';\n\n// SERVICES\nexport * from './lib/confirm/confirm.interface';\nexport * from './lib/confirm/confirm.service';\nexport * from './lib/container/container.interface';\nexport * from './lib/container/container.service';\nexport * from './lib/coordinates/ngx-helper-coordinates.interface';\nexport * from './lib/coordinates/ngx-helper-coordinates.service';\nexport * from './lib/http/ngx-helper-http.interface';\nexport * from './lib/http/ngx-helper-http.service';\nexport * from './lib/toast/ngx-helper-toast.interface';\nexport * from './lib/toast/ngx-helper-toast.service';\n\n// DIRECTIVES\nexport * from './lib/directives/ngx-helper-mobile-view.directive';\nexport * from './lib/directives/ngx-helper-sticky.directive';\n\n// PIPES\nexport * from './lib/pipes/bank-card.pipe';\nexport * from './lib/pipes/date.pipe';\nexport * from './lib/pipes/duration.pipe';\nexport * from './lib/pipes/file-size.pipe';\nexport * from './lib/pipes/mobile.pipe';\nexport * from './lib/pipes/multi-line.pipe';\nexport * from './lib/pipes/number.pipe';\nexport * from './lib/pipes/period.pipe';\nexport * from './lib/pipes/price.pipe';\nexport * from './lib/pipes/safe.pipe';\nexport * from './lib/pipes/volume.pipe';\nexport * from './lib/pipes/weight.pipe';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.ComponentService","i1","i2","i3","i2.NgxHelperToastService","i1.NgxHelperToastService"],"mappings":"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"}