{"version":3,"file":"stemy-ngx-utils.mjs","sources":["../../src/ngx-utils/common-types.ts","../../src/ngx-utils/tokens.ts","../../src/ngx-utils/utils/ajax-request-handler.ts","../../src/ngx-utils/utils/object.utils.ts","../../src/ngx-utils/utils/array.utils.ts","../../src/ngx-utils/utils/reflect.utils.ts","../../src/ngx-utils/services/universal.service.ts","../../src/ngx-utils/services/state.service.ts","../../src/ngx-utils/utils/auth.guard.ts","../../src/ngx-utils/utils/cached-factory.ts","../../src/ngx-utils/utils/canvas.ts","../../src/ngx-utils/utils/json.utils.ts","../../src/ngx-utils/utils/crypto.utils.ts","../../src/ngx-utils/utils/date.utils.ts","../../src/ngx-utils/utils/file.utils.ts","../../src/ngx-utils/utils/forbidden-zone.ts","../../src/ngx-utils/utils/generic-value.ts","../../src/ngx-utils/utils/file-system.ts","../../src/ngx-utils/utils/canvas-renderers/hit-zone.renderer.ts","../../src/ngx-utils/utils/canvas-renderers/exclusions.renderer.ts","../../src/ngx-utils/utils/canvas-renderers/ruler-canvas.renderer.ts","../../src/ngx-utils/utils/math.utils.ts","../../src/ngx-utils/utils/geometry/functions.ts","../../src/ngx-utils/utils/geometry/gjk.ts","../../src/ngx-utils/utils/geometry/shapes.ts","../../src/ngx-utils/utils/initializer.ts","../../src/ngx-utils/utils/loader.utils.ts","../../src/ngx-utils/utils/misc.ts","../../src/ngx-utils/utils/timer.utils.ts","../../src/ngx-utils/utils/observable.utils.ts","../../src/ngx-utils/utils/promise.utils.ts","../../src/ngx-utils/utils/string.utils.ts","../../src/ngx-utils/utils/set.utils.ts","../../src/ngx-utils/utils/signal-utils.ts","../../src/ngx-utils/utils/socket-client.ts","../../src/ngx-utils/utils/unique.utils.ts","../../src/ngx-utils/utils/wrap-types.ts","../../src/ngx-utils/services/events.service.ts","../../src/ngx-utils/services/acl.service.ts","../../src/ngx-utils/services/request-bag.ts","../../src/ngx-utils/services/base-http.client.ts","../../src/ngx-utils/services/storage.service.ts","../../src/ngx-utils/services/cache.service.ts","../../src/ngx-utils/services/base-http.service.ts","../../src/ngx-utils/services/api.service.ts","../../src/ngx-utils/services/auth.service.ts","../../src/ngx-utils/services/config.service.ts","../../src/ngx-utils/services/base-dialog.service.ts","../../src/ngx-utils/services/error-handler.service.ts","../../src/ngx-utils/services/formatter.service.ts","../../src/ngx-utils/services/global-template.service.ts","../../src/ngx-utils/services/local-http.service.ts","../../src/ngx-utils/services/icon.service.ts","../../src/ngx-utils/services/static-language.service.ts","../../src/ngx-utils/services/language.service.ts","../../src/ngx-utils/services/open-api.service.ts","../../src/ngx-utils/services/base-toaster.service.ts","../../src/ngx-utils/services/component-loader.service.ts","../../src/ngx-utils/services/translated-url.serializer.ts","../../src/ngx-utils/services/promise.service.ts","../../src/ngx-utils/services/socket.service.ts","../../src/ngx-utils/plugins/drag-drop-handler.ts","../../src/ngx-utils/plugins/drag-drop-event.plugin.ts","../../src/ngx-utils/plugins/resize-detector.ts","../../src/ngx-utils/plugins/resize-event.plugin.ts","../../src/ngx-utils/plugins/scroll-event.plugin.ts","../../src/ngx-utils/pipes/chunk.pipe.ts","../../src/ngx-utils/pipes/entries.pipe.ts","../../src/ngx-utils/pipes/extra-item-properties.pipe.ts","../../src/ngx-utils/pipes/filter.pipe.ts","../../src/ngx-utils/pipes/find.pipe.ts","../../src/ngx-utils/pipes/format-number.pipe.ts","../../src/ngx-utils/pipes/get-offset.pipe.ts","../../src/ngx-utils/pipes/get-type.pipe.ts","../../src/ngx-utils/pipes/get-value.pipe.ts","../../src/ngx-utils/pipes/global-template.pipe.ts","../../src/ngx-utils/pipes/group-by.pipe.ts","../../src/ngx-utils/pipes/includes.pipe.ts","../../src/ngx-utils/pipes/is-type.pipe.ts","../../src/ngx-utils/pipes/join.pipe.ts","../../src/ngx-utils/pipes/keys.pipe.ts","../../src/ngx-utils/pipes/map.pipe.ts","../../src/ngx-utils/pipes/max.pipe.ts","../../src/ngx-utils/pipes/min.pipe.ts","../../src/ngx-utils/pipes/pop.pipe.ts","../../src/ngx-utils/pipes/reduce.pipe.ts","../../src/ngx-utils/pipes/remap.pipe.ts","../../src/ngx-utils/pipes/replace.pipe.ts","../../src/ngx-utils/pipes/reverse.pipe.ts","../../src/ngx-utils/pipes/round.pipe.ts","../../src/ngx-utils/pipes/safe-html.pipe.ts","../../src/ngx-utils/pipes/shift.pipe.ts","../../src/ngx-utils/pipes/split.pipe.ts","../../src/ngx-utils/pipes/sync-async.pipe.ts","../../src/ngx-utils/pipes/translate.pipe.ts","../../src/ngx-utils/pipes/values.pipe.ts","../../src/ngx-utils/directives/async-method.base.ts","../../src/ngx-utils/directives/async-method.directive.ts","../../src/ngx-utils/directives/async-method-target.directive.ts","../../src/ngx-utils/directives/background.directive.ts","../../src/ngx-utils/directives/component-loader.directive.ts","../../src/ngx-utils/directives/dynamic-table-template.directive.ts","../../src/ngx-utils/directives/global-template.directive.ts","../../src/ngx-utils/directives/icon.directive.ts","../../src/ngx-utils/directives/ngx-template-outlet.directive.ts","../../src/ngx-utils/directives/pagination.directive.ts","../../src/ngx-utils/directives/pagination-item.directive.ts","../../src/ngx-utils/directives/resource-if.directive.ts","../../src/ngx-utils/directives/sticky.directive.ts","../../src/ngx-utils/directives/sticky-class.directive.ts","../../src/ngx-utils/directives/dropdown.directive.ts","../../src/ngx-utils/directives/dropdown-content.directive.ts","../../src/ngx-utils/directives/dropdown-toggle.directive.ts","../../src/ngx-utils/directives/tabs-item.directive.ts","../../src/ngx-utils/directives/tabs-template.directive.ts","../../src/ngx-utils/directives/unordered-list-item.directive.ts","../../src/ngx-utils/directives/unordered-list-template.directive.ts","../../src/ngx-utils/components/btn/btn.component.ts","../../src/ngx-utils/components/btn/btn.component.html","../../src/ngx-utils/components/icon/icon.component.ts","../../src/ngx-utils/components/icon/icon.component.html","../../src/ngx-utils/components/btn-default/btn-default.component.ts","../../src/ngx-utils/components/btn-default/btn-default.component.html","../../src/ngx-utils/components/close-btn/close-btn.component.ts","../../src/ngx-utils/components/chips/chips.component.ts","../../src/ngx-utils/components/chips/chips.component.html","../../src/ngx-utils/components/drop-list/drop-list.component.ts","../../src/ngx-utils/components/drop-list/drop-list.component.html","../../src/ngx-utils/components/dropdown-box/dropdown-box.component.ts","../../src/ngx-utils/components/dropdown-box/dropdown-box.component.html","../../src/ngx-utils/components/dynamic-table-cell/dynamic-table-cell.component.ts","../../src/ngx-utils/components/dynamic-table-cell/dynamic-table-cell.component.html","../../src/ngx-utils/components/pagination-menu/pagination-menu.component.ts","../../src/ngx-utils/components/pagination-menu/pagination-menu.component.html","../../src/ngx-utils/components/dynamic-table/dynamic-table.component.ts","../../src/ngx-utils/components/dynamic-table/dynamic-table.component.html","../../src/ngx-utils/components/fake-module/fake-module.component.ts","../../src/ngx-utils/components/icon-default/icon-default.component.ts","../../src/ngx-utils/components/icon-default/icon-default.component.html","../../src/ngx-utils/components/interactive-canvas/interactive-item.component.ts","../../src/ngx-utils/components/interactive-canvas/interactive-canvas.component.ts","../../src/ngx-utils/components/interactive-canvas/interactive-canvas.component.html","../../src/ngx-utils/components/interactive-canvas/interactive-circle.component.ts","../../src/ngx-utils/components/interactive-canvas/interactive-rect.component.ts","../../src/ngx-utils/components/tabs/tabs.component.ts","../../src/ngx-utils/components/tabs/tabs.component.html","../../src/ngx-utils/components/unordered-list/unordered-list.component.ts","../../src/ngx-utils/components/unordered-list/unordered-list.component.html","../../src/ngx-utils/components/upload/upload.component.ts","../../src/ngx-utils/components/upload/upload.component.html","../../src/ngx-utils/components/wysiwyg/wysiwyg.component.ts","../../src/ngx-utils/components/wysiwyg/wysiwyg.component.html","../../src/ngx-utils/ngx-utils.imports.ts","../../src/ngx-utils/ngx-utils.module.ts","../../src/stemy-ngx-utils.ts"],"sourcesContent":["import {ElementRef, EventEmitter, InjectionToken, Injector, NgZone, Provider, TemplateRef, Type} from \"@angular/core\";\r\nimport {HttpClient, HttpHeaders} from \"@angular/common/http\";\r\nimport {ActivatedRouteSnapshot, Data, LoadChildrenCallback, Route, Routes, UrlTree} from \"@angular/router\";\r\nimport {Observable} from \"rxjs\";\r\nimport {DurationLikeObject} from \"luxon\";\r\n\r\nimport {MaybePromise, StringKeys} from \"./helper-types\";\r\n\r\n// --- Util\r\nexport type DurationUnit = StringKeys<DurationLikeObject>;\r\n\r\nexport interface TypedFactoryProvider<T> {\r\n    provide?: any;\r\n    useFactory: (...args: any[]) => T;\r\n    deps: any[];\r\n}\r\n\r\nexport interface TypedValueProvider<T> {\r\n    provide?: any;\r\n    useValue: T;\r\n}\r\n\r\nexport interface TypedExistingProvider<T> {\r\n    provide?: any;\r\n    useExisting: Type<T>;\r\n}\r\n\r\nexport interface TypedClassProvider<T> {\r\n    provide?: any;\r\n    useClass: Type<T>;\r\n}\r\n\r\nexport interface TypedTokenProvider<T> {\r\n    provide?: any;\r\n    useToken: InjectionToken<T>;\r\n}\r\n\r\nexport type TypedProvider<T> = TypedFactoryProvider<T> | TypedValueProvider<T> |\r\n    TypedExistingProvider<T> | TypedClassProvider<T> | TypedTokenProvider<T> | Type<T>;\r\n\r\nexport type CachedFactory<T> = (injector: Injector) => ReadonlyArray<T>;\r\n\r\nexport interface ResolveFactory<T = any> {\r\n    type?: Function;\r\n    func: (...args: any[]) => T;\r\n    params?: any[];\r\n}\r\n\r\nexport interface IResolveFactory extends Omit<ResolveFactory, \"func\"> {\r\n    func: Function;\r\n}\r\n\r\nexport class CanvasColor {\r\n    constructor(public r: number, public g: number, public b: number, public a: number = 255) {\r\n\r\n    }\r\n}\r\n\r\n// --- Icon service ---\r\nexport interface IIconService {\r\n    isDisabled: boolean;\r\n    iconsLoaded: EventEmitter<any>;\r\n    getIcon(icon: string, activeIcon: string, active: boolean): Promise<string>;\r\n    getIconUrl(icon: string, modifier?: SvgSourceModifier): Promise<string>;\r\n    getIconImage(icon: string, modifier?: SvgSourceModifier): Promise<HTMLImageElement>;\r\n}\r\n\r\n// --- Language service ---\r\nexport interface ITranslation {\r\n    lang: string;\r\n    translation: string;\r\n}\r\n\r\nexport interface ITranslations {\r\n    [key: string]: string;\r\n}\r\n\r\nexport type GlobalTranslations = Record<string, ITranslations>;\r\n\r\nexport interface ILanguageSetting {\r\n    unavailable?: string;\r\n    [key: string]: string | boolean | number;\r\n}\r\n\r\nexport interface ILanguageSettings {\r\n    languages: string[];\r\n    devLanguages: string[];\r\n    defaultLanguage: string;\r\n    settings?: {[lang: string]: ILanguageSetting};\r\n}\r\n\r\nexport interface ILanguageService {\r\n    currentLanguage: string;\r\n    editLanguage: string;\r\n    enableTranslations: boolean;\r\n    disableTranslations: boolean;\r\n    defaultLanguage: string;\r\n    dictionary: ITranslations;\r\n    readonly languages: ReadonlyArray<string>;\r\n    readonly httpClient: HttpClient;\r\n    replaceLanguages(languages: string[]): void;\r\n    addLanguages(languages: string[]): void;\r\n    getTranslationSync(key: string, params?: Object): string;\r\n    getTranslation(key: string, params?: Object): Promise<string>;\r\n    getTranslations(...keys: string[]): Promise<ITranslations>;\r\n    getTranslationFromObject(translations: ITranslations, params?: any, lang?: string): string;\r\n    getTranslationFromArray(translations: ITranslation[], params?: any, lang?: string): string;\r\n}\r\n\r\n// --- Auth Service ---\r\nexport interface IUserData {\r\n    _id?: string;\r\n    id?: string;\r\n    email?: string;\r\n    [key: string]: any;\r\n}\r\n\r\nexport interface IAuthService {\r\n    isAuthenticated: boolean;\r\n    checkAuthenticated(): Promise<boolean>;\r\n}\r\n\r\nexport type RouteValidator = (auth: IAuthService, route?: IRoute, next?: ActivatedRouteSnapshot) => Promise<boolean>;\r\n\r\nexport interface IRouteData extends Data {\r\n    returnState?: string[];\r\n    guards?: Array<ResolveFactory<RouteValidator> | RouteValidator>;\r\n}\r\n\r\nexport interface IRoute extends Route {\r\n    data?: IRouteData;\r\n}\r\n\r\n// --- Acl Service ---\r\nexport interface IRouteStateInfo {\r\n    route: IRoute;\r\n    guard: any;\r\n    dirty: boolean;\r\n    first: boolean;\r\n    component?: any;\r\n}\r\n\r\nexport interface MenuItem {\r\n    path: string;\r\n    page: string;\r\n    label: string;\r\n    side: string;\r\n    external: boolean;\r\n    data: IRouteData;\r\n}\r\n\r\nexport interface IAclComponent {\r\n    onUserInitialized(): void;\r\n    onUserChanged(): void;\r\n}\r\n\r\nexport interface IAclService {\r\n    getCurrentMenu(): Promise<ReadonlyArray<MenuItem>>;\r\n}\r\n\r\n// --- State Service ---\r\nexport type NavigationUrlParam = any[] | string | UrlTree;\r\n\r\n// --- Storage Service ---\r\nexport enum StorageMode {\r\n    Local,\r\n    Session\r\n}\r\n\r\n// --- Toaster Service ---\r\nexport type ToastType = \"info\" | \"success\" | \"warning\" | \"error\";\r\n\r\nexport interface IToasterService {\r\n    error(message: string, params?: any): void;\r\n    info(message: string, params?: any): void;\r\n    success(message: string, params?: any): void;\r\n    warning(message: string, params?: any): void;\r\n    handleAsyncMethod(method: AsyncMethod, context?: any): void\r\n}\r\n\r\n// --- Dialog service ---\r\nexport interface IDialogButtonConfig {\r\n    icon?: string;\r\n    text?: string;\r\n    classes?: string;\r\n    method?: AsyncMethod;\r\n    testId?: string;\r\n}\r\n\r\nexport interface IDialogConfig {\r\n    id?: string;\r\n    title?: string;\r\n    message: string;\r\n    messageContext?: any;\r\n    buttons?: IDialogButtonConfig[];\r\n    onClose?: AsyncMethod;\r\n    size?: string;\r\n    type?: string;\r\n    templates?: { [id: string]: TemplateRef<any> };\r\n}\r\n\r\nexport interface IConfirmMessageConfig {\r\n    id?: string;\r\n    title?: string;\r\n    messageContext?: any;\r\n    size?: string;\r\n    templates?: { [id: string]: TemplateRef<any> };\r\n    okText?: string;\r\n    okClasses?: string;\r\n    cancelText?: string;\r\n    cancelClasses?: string;\r\n}\r\n\r\nexport interface IConfirmDialogConfig extends IConfirmMessageConfig {\r\n    message: string;\r\n    method?: AsyncMethod;\r\n    cancelMethod?: AsyncMethod;\r\n}\r\n\r\nexport interface IDialogService<DR = any> {\r\n    dialog(config: IDialogConfig): DR;\r\n    confirm(config: IConfirmDialogConfig): DR;\r\n    confirmMsg(message: string, config?: IConfirmMessageConfig): Promise<boolean>;\r\n}\r\n\r\n// --- Socket service ---\r\n\r\n// --- Promise Service ---\r\n\r\nexport interface IPromiseService {\r\n    zone: NgZone;\r\n    count: number;\r\n    onChanged: EventEmitter<number>;\r\n    create<T>(executor: (resolve: (value?: T | PromiseLike<T>) => void, reject: (reason?: any) => void) => void): Promise<T>;\r\n    all(promises: Promise<any>[]): Promise<any>;\r\n    resolve<T>(value: T | PromiseLike<T>): Promise<T>;\r\n    reject<T>(value: T | PromiseLike<T>): Promise<T>;\r\n}\r\n\r\n// --- Async method ---\r\nexport interface IAsyncMessage {\r\n    message: string;\r\n    context?: any;\r\n}\r\n\r\nexport type AsyncMethod = (context?: any, ev?: MouseEvent) => Promise<IAsyncMessage>;\r\n\r\n// --- Icon ---\r\nexport interface IconMap {\r\n    [key: string]: string;\r\n}\r\n\r\nexport interface IconProps {\r\n    name: string;\r\n}\r\n\r\n// --- Button ---\r\n\r\nexport type ButtonType = \"primary\" | \"secondary\" | \"transparent\";\r\n\r\nexport type ButtonSize = \"normal\" | \"small\";\r\n\r\nexport interface ButtonProps {\r\n    label: string;\r\n    tooltip: string;\r\n    icon: string;\r\n    disabled: boolean;\r\n    type: ButtonType;\r\n    size: ButtonSize;\r\n}\r\n\r\n// --- Tabs ---\r\n\r\nexport type TabValue = string | number;\r\n\r\nexport interface TabOption extends Omit<Partial<ButtonProps>, \"size\" | \"state\" | \"style\"> {\r\n    value: TabValue;\r\n    classes?: string | string[];\r\n}\r\n\r\n// --- Chips ---\r\nexport type ChipValue = string | number;\r\n\r\nexport type ChipStatus = \"valid\" | \"invalid\";\r\n\r\nexport interface ChipOption {\r\n    label: string;\r\n    value?: ChipValue;\r\n    classes?: string;\r\n    disabled?: boolean;\r\n    picture?: string;\r\n    group?: ChipOption[];\r\n}\r\n\r\n// --- Dropdown ---\r\nexport type DropdownAttachTo = \"root\" | HTMLElement | ElementRef<HTMLElement> | null;\r\n\r\n// --- Unordered list ---\r\nexport interface UnorderedListTemplate {\r\n    readonly type: string;\r\n    readonly selector: string;\r\n    readonly templateRef: TemplateRef<any>\r\n}\r\n\r\nexport interface UnorderedListTemplates {\r\n    [type: string]: TemplateRef<any>;\r\n}\r\n\r\nexport type UnorderedListStyle = \"table\" | \"list\";\r\n\r\n// --- Upload ---\r\n\r\nexport type UploadType = string | Blob;\r\n\r\nexport interface IFileUploadResult {\r\n    _id?: string;\r\n    id?: string;\r\n    contentType?: string;\r\n    createdAt?: Date;\r\n    filename?: string;\r\n    file?: Blob;\r\n}\r\n\r\nexport interface IFileUploadProcess {\r\n    file: File;\r\n    progress: number;\r\n    preview?: string;\r\n    promise?: Promise<void>;\r\n}\r\n\r\n// --- Ajax request  ---\r\nexport interface IAjaxRequestDetails {\r\n    request: XMLHttpRequest,\r\n    method: string;\r\n    url: string;\r\n}\r\n\r\nexport type AjaxRequestCallback = (details: IAjaxRequestDetails, params: any) => void;\r\n\r\n// --- Loader utils ---\r\nexport type ScriptType = \"text/javascript\" | \"module\";\r\n\r\nexport interface ILoadableElement extends HTMLElement {\r\n    readyState?: string;\r\n    onreadystatechange?: Function;\r\n}\r\n\r\nexport interface ILoaderPromises<T extends ILoadableElement> {\r\n    [src: string]: {\r\n        elem: T;\r\n        promise: Promise<T>;\r\n    }\r\n}\r\n\r\n// --- Observable utils ---\r\nexport interface ISearchObservable {\r\n    search: string;\r\n    getSearchResults(token: string): Promise<any[]>;\r\n}\r\n\r\n// --- Reflect utils ---\r\nexport function FactoryDependencies(...dependencies: Array<InjectionToken<any> | Provider>): MethodDecorator {\r\n    console.warn(`FactoryDependencies is deprecated, please use Angular's inject() method to retrieve the services instead`);\r\n    return function (target: any, method: string): void {\r\n        Reflect.defineMetadata(\"factoryDependencies\", dependencies, target, method);\r\n    };\r\n}\r\n\r\nexport function ObjectType(type: string): ClassDecorator {\r\n    return function (target: any): void {\r\n        Reflect.defineMetadata(\"objectType\", type, target);\r\n    };\r\n}\r\n\r\n// --- Timer utils ---\r\nexport interface ITimer {\r\n    id?: any;\r\n    func?: Function;\r\n    time?: number;\r\n    run?: () => void;\r\n    set?: (func: Function, time: number) => void;\r\n    clear?: () => void;\r\n}\r\n\r\n// --- ExtraItemProperties ---\r\nexport interface IExtraProperties {\r\n    [prop: string]: any;\r\n}\r\n\r\n// --- Group by ---\r\nexport interface IGroupMap {\r\n    [column: string]: any;\r\n}\r\n\r\n// --- Translate ---\r\nexport type TranslationQuery = string | ITranslations | ITranslation[];\r\n\r\n// --- Pagination ---\r\nexport interface IPageInfo {\r\n    text: string;\r\n    number: number;\r\n    active: boolean;\r\n}\r\n\r\nexport interface IPaginationData {\r\n    total: number;\r\n    items: any[];\r\n    meta?: any;\r\n}\r\n\r\nexport type PaginationDataLoader = (page: number, itemsPerPage: number) => Promise<IPaginationData>;\r\n\r\nexport class PaginationItemContext {\r\n\r\n    constructor(readonly item: any,\r\n                readonly parallelItem: any,\r\n                readonly count: number,\r\n                public index: number,\r\n                public dataIndex: number) {\r\n    }\r\n\r\n    get first(): boolean {\r\n        return this.index === 0;\r\n    }\r\n\r\n    get last(): boolean {\r\n        return this.index === this.count - 1;\r\n    }\r\n\r\n    get even(): boolean {\r\n        return this.index % 2 === 0;\r\n    }\r\n\r\n    get odd(): boolean {\r\n        return !this.even;\r\n    }\r\n\r\n    // Support for old dynamic table implementation\r\n    get row(): any {\r\n        console.log(\"DynamicTable row is deprecated use item instead\");\r\n        return this.item;\r\n    }\r\n\r\n    // Support for old dynamic table implementation\r\n    get parallelRow(): any {\r\n        console.log(\"DynamicTable parallelRow is deprecated use parallelItem instead\");\r\n        return this.parallelItem;\r\n    }\r\n}\r\n\r\n// --- Geometry ---\r\nexport interface IPoint {\r\n    readonly x: number;\r\n    readonly y: number;\r\n}\r\n\r\nexport interface ShapeIntersection {\r\n    hit: boolean;\r\n    pa?: IPoint;\r\n    pb?: IPoint;\r\n    point?: IPoint;\r\n}\r\n\r\nexport interface IShape extends IPoint {\r\n    readonly center: IPoint;\r\n    getPath(x: number, y: number, ratio?: number): Path2D;\r\n    support(dir: IPoint, logs?: boolean): IPoint;\r\n    expand(value: number): IShape;\r\n    move(pos: IPoint): IShape;\r\n    intersection(shape: IShape, logs?: boolean): ShapeIntersection;\r\n    intersects(shape: IShape, logs?: boolean): boolean;\r\n    distance(shape: IShape): number;\r\n}\r\n\r\n// --- Interactive canvas ---\r\n\r\nexport type CanvasResizeMode = \"fit\" | \"fill\";\r\n\r\nexport type CanvasItemDirection = \"horizontal\" | \"vertical\" | \"free\" | \"none\";\r\n\r\nexport type CanvasPaintFunc = (ctx: CanvasRenderingContext2D) => MaybePromise<GlobalCompositeOperation | null>;\r\n\r\nexport type RangeCoords = [from: number, to: number];\r\n\r\nexport interface RectCoords {\r\n    x: number;\r\n    y: number;\r\n    width: number;\r\n    height: number;\r\n    id?: string;\r\n}\r\n\r\n/**\r\n * Rectangle frame interface\r\n */\r\nexport interface Frame extends IShape {\r\n    width: number;\r\n    height: number;\r\n    rotation: number;\r\n}\r\n\r\n/**\r\n * Interface for an interactive canvas params\r\n */\r\nexport interface InteractiveCanvasParams {\r\n    xRange?: RangeCoords;\r\n    yRange?: RangeCoords;\r\n    excludedAreas?: ReadonlyArray<RectCoords>;\r\n    [key: string]: any;\r\n}\r\n\r\n/**\r\n * Interface for an area that covers a part of the interactive canvas\r\n */\r\nexport interface InteractiveCanvasArea {\r\n    readonly id: string;\r\n    readonly shapes: ReadonlyArray<IShape>;\r\n}\r\n/**\r\n * Interface for an interactive canvas item\r\n */\r\nexport interface InteractiveCanvasItem extends InteractiveCanvasArea {\r\n    readonly position: IPoint;\r\n    readonly rotation: number;\r\n    readonly frame: Frame;\r\n    readonly isValid: boolean;\r\n    readonly validPosition: IPoint;\r\n    readonly validRotation: number;\r\n    readonly hovered: boolean;\r\n    readonly selected: boolean;\r\n    readonly active: boolean;\r\n    readonly canvas: InteractiveCanvas;\r\n    readonly index: number;\r\n    readonly canvasParams: InteractiveCanvasParams;\r\n    readonly hitShapes: ReadonlyArray<IShape>;\r\n    draw(ctx: CanvasRenderingContext2D, shape: IShape): MaybePromise<void>;\r\n}\r\n\r\nexport type InteractiveCanvasItems = ReadonlyArray<InteractiveCanvasItem>;\r\n\r\n/**\r\n * Interface for an interactive canvas component\r\n * Some properties are optional for compatibility with other kind of renderer functions\r\n */\r\nexport interface InteractiveCanvas {\r\n    // --- Getters ---\r\n    readonly isInfinite?: boolean;\r\n    readonly realWidth?: number;\r\n    readonly realHeight?: number;\r\n    readonly items?: InteractiveCanvasItems;\r\n    readonly canvas: HTMLCanvasElement;\r\n    readonly lockedItem?: InteractiveCanvasItem;\r\n    // --- Getters / setters ---\r\n    selectedItem?: InteractiveCanvasItem;\r\n    hoveredItem?: InteractiveCanvasItem;\r\n    // --- Calculated values on changes ---\r\n    readonly xRange?: RangeCoords;\r\n    readonly yRange?: RangeCoords;\r\n    // --- Calculated values on resize ---\r\n    readonly ratio: number;\r\n    readonly styles: CSSStyleDeclaration;\r\n    readonly ctx: CanvasRenderingContext2D;\r\n    readonly canvasWidth: number;\r\n    readonly canvasHeight: number;\r\n    readonly fullHeight: number;\r\n    readonly viewRatio: number;\r\n    // --- Calculated values on rotation ---\r\n    readonly rotation: number;\r\n    readonly basePan: number;\r\n    readonly cycles?: ReadonlyArray<number>;\r\n    readonly excludedAreas?: ReadonlyArray<InteractiveCanvasArea>;\r\n    // --- Optionals, for back compatibility ---\r\n    rendered?: boolean;\r\n    // --- Functions ---\r\n    tempPaint(cb: CanvasPaintFunc): Promise<void>;\r\n}\r\n\r\nexport type InteractiveCanvasRenderer = (renderCanvas: InteractiveCanvas, renderCtx: Record<string, any>) => MaybePromise<void>;\r\n\r\nexport interface InteractivePanEvent {\r\n    canvas: InteractiveCanvas;\r\n    item: InteractiveCanvasItem;\r\n    deltaX?: number;\r\n    deltaY?: number;\r\n    [key: string]: any;\r\n}\r\n\r\nexport interface InteractiveCanvasPointer {\r\n    clientX: number;\r\n    clientY: number;\r\n}\r\n\r\n// --- Http service ---\r\nexport interface HttpRequestHeaders {\r\n    [header: string]: string | string[];\r\n}\r\n\r\nexport interface HttpRequestQuery {\r\n    [key: string]: any;\r\n}\r\n\r\n/**\r\n * Base http request options that get sent to backend\r\n */\r\nexport interface HttpClientRequestOptions {\r\n    method?: string;\r\n    body?: any;\r\n    headers?: HttpRequestHeaders | HttpHeaders;\r\n    originalHeaders?: HttpRequestHeaders;\r\n    params?: HttpRequestQuery;\r\n    observe?: \"body\" | \"response\";\r\n    /**\r\n     * Used for uploads\r\n     */\r\n    reportProgress?: boolean;\r\n    /**\r\n     * Specifies the type of response\r\n     */\r\n    responseType?: \"arraybuffer\" | \"blob\" | \"json\" | \"text\";\r\n    withCredentials?: boolean;\r\n    timeout?: number;\r\n}\r\n\r\n/**\r\n * Extended http request options that the consumer can use\r\n */\r\nexport interface HttpRequestOptions extends HttpClientRequestOptions {\r\n    /**\r\n     * Read a specific property from the body if observe equals to 'body' and responseType equals to 'json'\r\n     */\r\n    read?: string;\r\n    /**\r\n     * Specifies when the cache for the request expires as an Observable\r\n     */\r\n    cache?: Observable<any>;\r\n}\r\n\r\n/**\r\n * Defines the type of uploadable content\r\n */\r\nexport type UploadData = Record<string, any> | ArrayBuffer | FormData;\r\n\r\nexport interface IIssueContext {\r\n    url: string;\r\n}\r\n\r\nexport interface IProgress {\r\n    percentage?: number;\r\n    loaded?: number;\r\n    total?: number;\r\n}\r\n\r\nexport type ProgressListener = (progress: IProgress) => void;\r\n\r\nexport type CacheExpireMode = boolean | \"auth\" | Date;\r\n\r\nexport interface IHttpService {\r\n    readonly language: ILanguageService;\r\n    readonly requestHeaders: Readonly<HttpRequestHeaders>;\r\n    readonly requestParams: Readonly<HttpRequestQuery>;\r\n    setHeader(name: string, value?: string | string[]): void;\r\n    setParam(name: string, value?: any): void;\r\n    cached(mode: CacheExpireMode): Observable<any>;\r\n    url(url: string): string;\r\n    makeListParams(page: number, itemsPerPage: number, orderBy?: string, orderDescending?: boolean, filter?: string): HttpRequestQuery;\r\n}\r\n\r\n// --- LocalHttp service ---\r\n\r\nexport interface SvgDefinition {\r\n    source: SVGSVGElement;\r\n    width: number;\r\n    height: number;\r\n}\r\n\r\nexport type SvgSourceModifier = (svg: SVGSVGElement, width: number, height: number) => string;\r\n\r\n// --- Api service ---\r\nexport interface ExpressRequest {\r\n    [key: string]: any;\r\n}\r\n\r\nexport interface IBaseHttpClient extends HttpClient {\r\n    readonly requestHeaders: Readonly<HttpRequestHeaders>;\r\n    readonly requestParams: Readonly<HttpRequestQuery>;\r\n    setHeader(name: string, value?: string | string[]): void;\r\n    getHeader(name: string): string;\r\n    setParam(name: string, value?: any): void;\r\n    // Just a backwards compatibility method for end users..\r\n    setExtraRequestParam(name: string, value?: any): void;\r\n    makeHeaders(): HttpHeaders;\r\n}\r\n\r\nexport interface IApiService extends IHttpService {\r\n    client: IBaseHttpClient;\r\n    get(url: string, options?: HttpRequestOptions): Promise<any>;\r\n    delete(url: string, options?: HttpRequestOptions): Promise<any>;\r\n    post(url: string, body?: any, options?: HttpRequestOptions): Promise<any>;\r\n    put(url: string, body?: any, options?: HttpRequestOptions): Promise<any>;\r\n    patch(url: string, body?: any, options?: HttpRequestOptions): Promise<any>;\r\n    upload(url: string, body: any, listener?: ProgressListener, options?: HttpRequestOptions): Promise<any>;\r\n    list(url: string, params: HttpRequestQuery, options?: HttpRequestOptions): Promise<IPaginationData>;\r\n}\r\n\r\n// --- OpenApi service ---\r\nexport interface DynamicSchemaRef {\r\n    dynamicSchema?: string;\r\n    dynamicSchemaUrl?: string;\r\n    dynamicSchemaName?: string;\r\n}\r\n\r\nexport interface OpenApiSchemaRef {\r\n    $ref?: string;\r\n}\r\n\r\nexport interface OpenApiSchemaProperty extends DynamicSchemaRef, OpenApiSchemaRef {\r\n    id: string;\r\n    type?: string;\r\n    format?: string;\r\n    column?: boolean;\r\n    additionalProperties?: any;\r\n    allOf?: ReadonlyArray<OpenApiSchemaRef>;\r\n    oneOf?: ReadonlyArray<OpenApiSchemaRef>;\r\n    items?: OpenApiSchemaProperty;\r\n    enum?: string[];\r\n    [key: string]: any;\r\n}\r\n\r\nexport interface OpenApiSchema {\r\n    properties: {\r\n        [name: string]: OpenApiSchemaProperty;\r\n    };\r\n    required: string[];\r\n    [key: string]: any;\r\n}\r\n\r\nexport interface OpenApiSchemas {\r\n    [name: string]: OpenApiSchema;\r\n}\r\n\r\nexport type OpenApiSchemaSelector = (name: string, schemas: OpenApiSchemas, injector: Injector) => OpenApiSchema;\r\n\r\n// --- Dynamic table ---\r\nexport type TableFilterType = \"text\" | \"enum\" | \"checkbox\";\r\n\r\nexport interface ITableOrders {\r\n    [column: string]: string;\r\n}\r\n\r\nexport interface ITableColumn {\r\n    title: string;\r\n    sort?: string;\r\n    filter?: boolean;\r\n    filterType?: TableFilterType;\r\n    enum?: string[];\r\n    enumPrefix?: string;\r\n    [key: string]: any;\r\n}\r\n\r\nexport interface ITableColumns {\r\n    [column: string]: ITableColumn;\r\n}\r\n\r\nexport type TableColumns = ITableOrders | ITableColumns | string[];\r\n\r\nexport interface ITableTemplate {\r\n    column: string | string[];\r\n    pure: boolean;\r\n    ref: TemplateRef<any>;\r\n}\r\n\r\nexport interface ITableTemplates {\r\n    [column: string]: ITableTemplate;\r\n}\r\n\r\nexport interface ITableDataQuery {\r\n    [column: string]: string | string[] | boolean;\r\n}\r\n\r\nexport type TableDataItems = ReadonlyArray<any>;\r\n\r\nexport type TableDataLoader = (\r\n    page: number, rowsPerPage: number, orderBy: string, orderDescending: boolean,\r\n    filter: string, query: ITableDataQuery\r\n) => Promise<IPaginationData>;\r\n\r\nexport type DragDropEvent<K extends string = \"item\", T = any> = {\r\n    [key in K]: T;\r\n} & {\r\n    ev: DragEvent;\r\n    elem: HTMLElement;\r\n    source?: T;\r\n};\r\n\r\nexport type DragEventHandler<R = boolean, K extends string = \"item\"> = (ev: DragDropEvent<K>) => R;\r\n\r\n// Back compatibility\r\nexport type ITableDragEvent = DragDropEvent;\r\nexport type DynamicTableDragHandler<R = boolean> = DragEventHandler<R>;\r\n\r\n// --- Resource if ---\r\nexport class ResourceIfContext {\r\n    resource: string;\r\n    url: string;\r\n}\r\n\r\n// --- ComponentLoaderService ---\r\n\r\nexport type CssSelector = [tagName: string, attrName?: string, attrValue?: string];\r\n\r\nexport type CssSelectorList = CssSelector[];\r\n\r\nexport interface DynamicModuleInfo {\r\n    moduleId: string;\r\n    loadChildren: LoadChildrenCallback;\r\n    routes?: Routes;\r\n    initialNavigation?: boolean;\r\n}\r\n\r\nexport interface DynamicComponentLocation {\r\n    moduleId: string;\r\n    selector: string;\r\n}\r\n\r\nexport interface DynamicEntryComponents {\r\n    components: Type<any>[];\r\n    moduleId: string;\r\n}\r\n\r\nexport class IConfiguration {\r\n    cdnUrl?: string;\r\n    baseUrl?: string;\r\n    baseDomain?: string;\r\n    translationUrl?: string;\r\n    translationExt?: string;\r\n    [key: string]: any;\r\n}\r\n\r\nexport interface IConfigService {\r\n    readonly http: IBaseHttpClient;\r\n    readonly config: IConfiguration;\r\n    readonly injector: Injector;\r\n    readonly load: () => Promise<IConfiguration>;\r\n    readonly rootElement: any;\r\n    cloneRootElem(): any;\r\n    prepareUrl(url: string, ending: string): string;\r\n    getConfigValue(key: string): any;\r\n    getQueryParameter(name: string, url?: string): string;\r\n}\r\n\r\nexport type ResizeEventStrategy = \"scroll\" | \"object\" | \"observer\";\r\n\r\n// --- Error handler service ---\r\nexport type ErrorHandlerCallback = (error: string) => any;\r\n\r\n// --- Global templates service\r\n\r\nexport type GlobalComponentModifier = (component: any) => any;\r\n\r\n// --- Module ---\r\nexport type AppInitializerFunc = () => Promise<void> | void;\r\n\r\nexport interface IModuleConfig {\r\n    apiService?: Type<IApiService>\r\n    authService?: Type<IAuthService>;\r\n    iconService?: Type<IIconService>;\r\n    languageService?: Type<ILanguageService>;\r\n    toasterService?: Type<IToasterService>;\r\n    promiseService?: Type<IPromiseService>;\r\n    configService?: Type<IConfigService>;\r\n    dialogService?: Type<IDialogService>;\r\n    iconType?: Type<IconProps>;\r\n    iconMap?: IconMap;\r\n    buttonType?: Type<ButtonProps>;\r\n    initializeApp?: (injector: Injector) => AppInitializerFunc;\r\n    baseUrl?: (injector: Injector) => string;\r\n    resizeDelay?: number;\r\n    resizeStrategy?: ResizeEventStrategy;\r\n    socketPath?: string;\r\n    staticSchemas?: OpenApiSchemas;\r\n    schemaSelector?: OpenApiSchemaSelector;\r\n}\r\n\r\n// --- Valued promise ---\r\nexport class ValuedPromise<T> extends Promise<T> {\r\n    value: T;\r\n}\r\n","import {InjectionToken, Type} from \"@angular/core\";\r\nimport {\r\n    ButtonProps,\r\n    DynamicEntryComponents,\r\n    DynamicModuleInfo,\r\n    ErrorHandlerCallback, ExpressRequest,\r\n    IApiService,\r\n    IAuthService,\r\n    IConfigService,\r\n    IConfiguration,\r\n    IconMap,\r\n    IconProps,\r\n    IDialogService,\r\n    IIconService,\r\n    ILanguageService,\r\n    IPromiseService,\r\n    IToasterService,\r\n    OpenApiSchemas, OpenApiSchemaSelector,\r\n    ResizeEventStrategy\r\n} from \"./common-types\";\r\n\r\nexport const ICON_TYPE = new InjectionToken<Type<IconProps>>(\"icon-component-type\");\r\nexport const ICON_MAP = new InjectionToken<IconMap>(\"icon-map\");\r\nexport const BUTTON_TYPE = new InjectionToken<Type<ButtonProps>>(\"button-component-type\");\r\nexport const OPTIONS_TOKEN = new InjectionToken<Record<string, any>>(\"custom-options-token\");\r\nexport const ICON_SERVICE: InjectionToken<IIconService> = new InjectionToken<IIconService>(\"icon-service\");\r\nexport const LANGUAGE_SERVICE: InjectionToken<ILanguageService> = new InjectionToken<ILanguageService>(\"language-service\");\r\nexport const AUTH_SERVICE: InjectionToken<IAuthService> = new InjectionToken<IAuthService>(\"auth-service\");\r\nexport const TOASTER_SERVICE: InjectionToken<IToasterService> = new InjectionToken<IToasterService>(\"toaster-service\");\r\nexport const DIALOG_SERVICE = new InjectionToken<IDialogService>(\"dialog-service\");\r\nexport const SOCKET_IO_PATH = new InjectionToken<string>(\"socket-io-path\");\r\nexport const PROMISE_SERVICE = new InjectionToken<IPromiseService>(\"promise-service\");\r\nexport const EXPRESS_REQUEST = new InjectionToken<ExpressRequest>(\"express-request\");\r\nexport const API_SERVICE: InjectionToken<IApiService> = new InjectionToken<IApiService>(\"api-service\");\r\nexport const DYNAMIC_ENTRY_COMPONENTS = new InjectionToken<DynamicEntryComponents[]>(\"dynamic-entry-components\");\r\nexport const DYNAMIC_MODULE_INFO = new InjectionToken<DynamicModuleInfo[]>(\"dynamic-module-info\");\r\nexport const APP_BASE_URL = new InjectionToken<string>(\"app-base-url\");\r\nexport const CONFIG_SERVICE = new InjectionToken<IConfigService>(\"config-service\");\r\nexport const BASE_CONFIG = new InjectionToken<IConfiguration>(\"base-config\");\r\nexport const SCRIPT_PARAMS = new InjectionToken<any>(\"script-params\");\r\nexport const ROOT_ELEMENT = new InjectionToken<HTMLElement>(\"app-root-element\");\r\nexport const RESIZE_DELAY = new InjectionToken<number>(\"resize-event-delay\");\r\nexport const RESIZE_STRATEGY = new InjectionToken<ResizeEventStrategy>(\"resize-event-strategy\");\r\nexport const ERROR_HANDLER = new InjectionToken<ErrorHandlerCallback>(\"error-handler-callback\");\r\nexport const STATIC_SCHEMAS = new InjectionToken<OpenApiSchemas>(\"static-openapi-schemas\");\r\nexport const SCHEMA_SELECTOR = new InjectionToken<OpenApiSchemaSelector>(\"openapi-schema-selector\");\r\n","import {AjaxRequestCallback, IAjaxRequestDetails} from \"../common-types\";\r\n\r\nexport class AjaxRequestHandler {\r\n\r\n    private static isOverridden: boolean = false;\r\n\r\n    public params: any;\r\n\r\n    constructor(private pattern: RegExp, private callback: AjaxRequestCallback) {\r\n        this.params = {};\r\n        if (typeof XMLHttpRequest !== \"undefined\" && !AjaxRequestHandler.isOverridden) {\r\n            AjaxRequestHandler.isOverridden = true;\r\n            const originalOpen = XMLHttpRequest.prototype.open;\r\n            XMLHttpRequest.prototype.open = function (method: string, url: string): void {\r\n                originalOpen.apply(this, arguments);\r\n                window.dispatchEvent(new CustomEvent(\"ajaxRequest\", {\r\n                    detail: {\r\n                        request: this,\r\n                        method: method,\r\n                        url: url\r\n                    }\r\n                }))\r\n            };\r\n        }\r\n    }\r\n\r\n    listen(): AjaxRequestHandler {\r\n        if (typeof window === \"undefined\") return this;\r\n        window.addEventListener(\"ajaxRequest\", this.listener);\r\n        return this;\r\n    }\r\n\r\n    forget(): AjaxRequestHandler {\r\n        if (typeof window === \"undefined\") return;\r\n        window.removeEventListener(\"ajaxRequest\", this.listener);\r\n        return this;\r\n    }\r\n\r\n    private listener = (event: CustomEvent): void => {\r\n        const details: IAjaxRequestDetails = event.detail;\r\n        if (this.pattern.test(details.url)) this.callback(details, this.params);\r\n    };\r\n}\r\n","import {MaybeArray} from \"../helper-types\";\r\n\r\nexport type FilterPredicate = (value: any, key?: any, target?: any, source?: any) => boolean;\r\nexport type IterateCallback = (value: any, key: any) => void;\r\nexport type IterateRecursiveCallback = (value: any, key: any, path: string, obj: any) => void;\r\n\r\nexport function defaultPredicate(value: any, key?: any, target?: any, source?: any): boolean {\r\n    return true;\r\n}\r\n\r\nexport function shouldCopyDefault(key: any, value: any): boolean {\r\n    return true;\r\n}\r\n\r\nconst hasBlob = typeof Blob !== \"undefined\" && !!Blob;\r\nconst hasFile = typeof File !== \"undefined\" && !!File;\r\n\r\nexport class ObjectUtils {\r\n\r\n    static compare(a: any, b: any): number {\r\n        if ((a === null || b === null) || (typeof a != typeof b)) {\r\n            return null;\r\n        }\r\n        if (typeof a === \"string\") {\r\n            return (a).localeCompare(b);\r\n        } else {\r\n            if (a instanceof Date) {\r\n                a = a.getTime();\r\n                b = b.getTime();\r\n            }\r\n            if (a > b) {\r\n                return 1;\r\n            } else if (a < b) {\r\n                return -1;\r\n            }\r\n            return 0;\r\n        }\r\n    }\r\n\r\n    static getProperties(obj: any): string[] {\r\n        if (!ObjectUtils.isObject(obj) && !ObjectUtils.isFunction(obj)) return [];\r\n        const props = new Set<string>();\r\n        Object.keys(obj).forEach(p => props.add(p));\r\n        Object.getOwnPropertyNames(obj).forEach(p => props.add(p));\r\n        return Array.from(props);\r\n    }\r\n\r\n    static equals(a: any, b: any, visited: Set<any> = null): boolean {\r\n        visited = visited || new Set();\r\n        if (visited.has(a) && visited.has(b)) return true;\r\n        if (a === b) return true;\r\n        if (a === null || b === null) return false;\r\n        if (a !== a && b !== b) return true; // NaN === NaN\r\n        const at = typeof a, bt = typeof b;\r\n        let length: number, key: any, keySet: any;\r\n        if (at == bt && at == \"object\") {\r\n            visited.add(a);\r\n            visited.add(b);\r\n            if (Array.isArray(a)) {\r\n                if (!Array.isArray(b)) return false;\r\n                if ((length = a.length) == b.length) {\r\n                    for (key = 0; key < length; key++) {\r\n                        if (!ObjectUtils.equals(a[key], b[key], visited)) return false;\r\n                    }\r\n                    return true;\r\n                }\r\n            } else {\r\n                if (Array.isArray(b)) {\r\n                    return false;\r\n                }\r\n                keySet = Object.create(null);\r\n                for (key in a) {\r\n                    if (a.hasOwnProperty(key)) {\r\n                        if (!ObjectUtils.equals(a[key], b[key], visited)) {\r\n                            return false;\r\n                        }\r\n                        keySet[key] = true;\r\n                    }\r\n                }\r\n                for (key in b) {\r\n                    if (b.hasOwnProperty(key) && !(key in keySet) && typeof b[key] !== \"undefined\") {\r\n                        return false;\r\n                    }\r\n                }\r\n                return true;\r\n            }\r\n        }\r\n        return false;\r\n    }\r\n\r\n    static evaluate(expr: string, context: any = {}, res: any = {}): any {\r\n        expr = Object.keys(context).reduce((res, key) => `var ${key} = this['${key}'];\\n${res}`, expr);\r\n        const lines = expr.split(\"\\n\");\r\n        const lastLine = \"return \" + lines.pop().replace(\"return \", \"\");\r\n        lines.push(lastLine);\r\n        expr = lines.join(\"\\n\");\r\n        let result = null;\r\n        try {\r\n            result = new Function(expr).call(context);\r\n        } catch (e) {\r\n            res.exception = e;\r\n            console.log(`Failed to parse expression: ${e.message}`, expr, context);\r\n        }\r\n        res.result = result;\r\n        return result;\r\n    }\r\n\r\n    static empty(obj: any): boolean {\r\n        return !obj || Object.keys(obj).length == 0;\r\n    }\r\n\r\n    static iterate(obj: any, cb: IterateCallback): void {\r\n        const keys: any[] = Array.isArray(obj)\r\n            ? Array.from(obj.keys())\r\n            : (ObjectUtils.isObject(obj) ? Object.keys(obj) : []);\r\n        keys.forEach(\r\n            // @dynamic\r\n            key => {\r\n                cb(obj[key], key);\r\n            }\r\n        );\r\n    }\r\n\r\n    static iterateRecursive(obj: any, cb: IterateRecursiveCallback, path: string = \"\"): void {\r\n        return ObjectUtils.iterate(obj, (value, key) => {\r\n            const subPath = !path ? key : `${path}.${key}`;\r\n            cb(value, key, subPath, obj);\r\n            ObjectUtils.iterateRecursive(value, cb, subPath);\r\n        });\r\n    }\r\n\r\n    static getValue(obj: Object, key: string, defaultValue?: any, treeFallback: boolean = false): any {\r\n        key = key || \"\";\r\n        const keys = key.split(\".\");\r\n        let curKey = \"\";\r\n        do {\r\n            curKey += keys.shift();\r\n            if (ObjectUtils.isDefined(obj) && ObjectUtils.isDefined(obj[curKey]) && (typeof obj[curKey] === \"object\" || !keys.length)) {\r\n                obj = obj[curKey];\r\n                curKey = \"\";\r\n            } else if (!keys.length) {\r\n                defaultValue = typeof defaultValue == \"undefined\" ? key.replace(new RegExp(`${curKey}$`), `{${curKey}}`) : defaultValue;\r\n                obj = treeFallback ? obj || defaultValue : defaultValue;\r\n            } else {\r\n                curKey += \".\";\r\n            }\r\n        } while (keys.length);\r\n        return obj;\r\n    }\r\n\r\n    static mapToPath(target: any, source: any, path: string[]): any {\r\n        if (typeof source === \"undefined\") return target;\r\n        if (path.length == 0) return source;\r\n        const key: any = path.shift();\r\n        if (key == \"*\") {\r\n            if (ObjectUtils.isArray(source)) {\r\n                target = ObjectUtils.isArray(target) ? target : [];\r\n                return source.map((item, index) => {\r\n                    return ObjectUtils.mapToPath(target[index], item, Array.from(path));\r\n                });\r\n            }\r\n            if (ObjectUtils.isObject(source)) {\r\n                target = ObjectUtils.isObject(target) ? target : {};\r\n                return Object.keys(source).reduce((result, key) => {\r\n                    result[key] = ObjectUtils.mapToPath(target[key], source[key], Array.from(path));\r\n                    return result;\r\n                }, {});\r\n            }\r\n            return ObjectUtils.isNullOrUndefined(target) ? null : target;\r\n        }\r\n        const isArray = ObjectUtils.isArray(target);\r\n        target = ObjectUtils.isObject(target) || isArray ? target : {};\r\n        target[key] = ObjectUtils.mapToPath(target[key], source, Array.from(path));\r\n        return isNaN(key) || isArray ? target : Object.values(target);\r\n    }\r\n\r\n    static filter(obj: any, predicate: FilterPredicate): any {\r\n        return ObjectUtils.copyRecursive(null, obj, predicate || defaultPredicate, new Map());\r\n    }\r\n\r\n    static copy<T>(obj: T): T {\r\n        return ObjectUtils.copyRecursive(null, obj, defaultPredicate, new Map());\r\n    }\r\n\r\n    static assign<T>(target: T, source: any, predicate?: FilterPredicate): T {\r\n        return ObjectUtils.copyRecursive(target, source, predicate || defaultPredicate, new Map());\r\n    }\r\n\r\n    static getType(obj: any): string {\r\n        const regex = new RegExp(\"\\\\s([a-zA-Z]+)\");\r\n        const target = !obj ? null : obj.constructor;\r\n        const type = !target ? null : Reflect.getMetadata(\"objectType\", target);\r\n        return (type || Object.prototype.toString.call(obj).match(regex)[1]).toLowerCase();\r\n    }\r\n\r\n    static isPrimitive(value: any): boolean {\r\n        const type = typeof value;\r\n        return value == null || (type !== \"object\" && type !== \"function\");\r\n    }\r\n\r\n    static isObject(value: any): boolean {\r\n        return ObjectUtils.getType(value) === \"object\";\r\n    }\r\n\r\n    static isDefined(value: any): boolean {\r\n        return typeof value !== \"undefined\" && value !== null;\r\n    }\r\n\r\n    static isNullOrUndefined(value: any): boolean {\r\n        return typeof value == \"undefined\" || value == null;\r\n    }\r\n\r\n    static isString(value: any): value is string {\r\n        return typeof value === \"string\";\r\n    }\r\n\r\n    static isStringWithValue(value: any): value is string {\r\n        return ObjectUtils.isString(value) && value.length > 0;\r\n    }\r\n\r\n    static isFunction(value: any): value is Function {\r\n        return typeof value === \"function\";\r\n    }\r\n\r\n    static isDate(value: any): value is Date {\r\n        return null !== value && !isNaN(value) && \"undefined\" !== typeof value.getDate;\r\n    }\r\n\r\n    static isBlob(value: any): value is Blob {\r\n        return (hasBlob && value instanceof Blob) || (hasFile && value instanceof File);\r\n    }\r\n\r\n    static isBoolean(value: any): value is boolean {\r\n        return value === true || value === false;\r\n    }\r\n\r\n    static isNumber(value: any): value is number {\r\n        if (typeof value !== \"number\") return false;\r\n        const num = +value;\r\n        if ((num - num) !== 0) {\r\n            return false;\r\n        }\r\n        if (num === value) {\r\n            return true;\r\n        }\r\n    }\r\n\r\n    static isArray<T, U>(value: MaybeArray<T> | ReadonlyArray<T> | U): value is T[] {\r\n        return Array.isArray(value);\r\n    }\r\n\r\n    static isSet(value: any): value is Set<any> {\r\n        return value instanceof Set;\r\n    }\r\n\r\n    static isConstructor(value: any): boolean {\r\n        return (value && typeof value === \"function\" && value.prototype && value.prototype.constructor) === value && value.name !== \"Object\";\r\n    }\r\n\r\n    static checkInterface(obj: any, interFaceObject: any): boolean {\r\n        return ObjectUtils.isInterface(obj, interFaceObject);\r\n    }\r\n\r\n    static isInterface(obj: any, interFaceObject: any): boolean {\r\n        if (!obj || typeof obj !== \"object\" || ObjectUtils.isArray(obj) || !ObjectUtils.isObject(interFaceObject)) return false;\r\n        const keys = Object.keys(interFaceObject);\r\n        for (const key of keys) {\r\n            let type = interFaceObject[key] || \"\";\r\n            if (type.startsWith(\"*\")) {\r\n                type = type.substr(1);\r\n                if (obj.hasOwnProperty(key) && ObjectUtils.getType(obj[key]) !== type) return false;\r\n            } else if (!obj.hasOwnProperty(key) || ObjectUtils.getType(obj[key]) !== type) {\r\n                return false;\r\n            }\r\n        }\r\n        return true;\r\n    }\r\n\r\n    static pad(obj: any, width: number, chr: string = \"0\"): string {\r\n        const str = ObjectUtils.isDefined(obj) ? obj.toString() : \"\";\r\n        return str.length >= width ? str : new Array(width - str.length + 1).join(chr) + str;\r\n    }\r\n\r\n    private static copyRecursive(target: any, source: any, predicate: FilterPredicate, copies: Map<any, any>): any {\r\n        if (ObjectUtils.isPrimitive(source) || ObjectUtils.isDate(source) || ObjectUtils.isBlob(source) || ObjectUtils.isFunction(source)) return source;\r\n        if (copies.has(source)) return copies.get(source);\r\n        if (ObjectUtils.isArray(source)) {\r\n            target = ObjectUtils.isArray(target) ? Array.from(target) : [];\r\n            copies.set(source, target);\r\n            for (let index = 0; index < source.length; index++) {\r\n                const item = source[index];\r\n                if (!predicate(item, index, target, source)) continue;\r\n                if (target.length > index)\r\n                    target[index] = ObjectUtils.copyRecursive(target[index], item, predicate, copies);\r\n                else\r\n                    target.push(ObjectUtils.copyRecursive(null, item, predicate, copies));\r\n            }\r\n            return target;\r\n        }\r\n\r\n        // If object defines __shouldCopy as false, then don't copy it\r\n        if (source.__shouldCopy === false) return source;\r\n        // Copy object\r\n        const shouldCopy = ObjectUtils.isFunction(source.__shouldCopy) ? source.__shouldCopy : shouldCopyDefault;\r\n        if (ObjectUtils.isConstructor(source.constructor)) {\r\n            if (!target) {\r\n                try {\r\n                    target = new source.constructor();\r\n                } catch (e) {\r\n                    const proto = source.constructor.prototype || source.prototype;\r\n                    target = Object.create(proto);\r\n                }\r\n            }\r\n        } else {\r\n            target = Object.assign({}, target || {});\r\n        }\r\n        // Set to copies to prevent circular references\r\n        copies.set(source, target);\r\n\r\n        // Copy map entries\r\n        if (target instanceof Map) {\r\n            if (source instanceof Map) {\r\n                for (const [key, value] of source.entries()) {\r\n                    if (!predicate(value, key, target, source)) continue;\r\n                    target.set(key, !shouldCopy(key, value) ? value : ObjectUtils.copyRecursive(target.get(key), value, predicate, copies));\r\n                }\r\n            }\r\n            return target;\r\n        }\r\n\r\n        // Copy object members\r\n        const keys = Object.keys(source);\r\n        for (const key of keys) {\r\n            if (!predicate(source[key], key, target, source)) continue;\r\n            target[key] = !shouldCopy(key, source[key]) ? source[key] : ObjectUtils.copyRecursive(target[key], source[key], predicate, copies);\r\n        }\r\n\r\n        // Copy object properties\r\n        const descriptors = Object.getOwnPropertyDescriptors(source);\r\n        for (const key of Object.keys(descriptors)) {\r\n            if (keys.indexOf(key) >= 0) continue;\r\n            Object.defineProperty(target, key, descriptors[key]);\r\n        }\r\n        return target;\r\n    }\r\n}\r\n","import {ObjectUtils} from \"./object.utils\";\r\n\r\nexport class ArrayUtils {\r\n\r\n    static has(arr: ReadonlyArray<any>, ...items: any[]): boolean {\r\n        if (!ObjectUtils.isArray(arr) || !ObjectUtils.isArray(items)) return false;\r\n        for (let i = 0; i < items.length; i++) {\r\n            if (arr.indexOf(items[i]) >= 0) return true;\r\n        }\r\n        return false;\r\n    }\r\n\r\n    static match(arr: ReadonlyArray<any>, str: string): boolean {\r\n        if (!ObjectUtils.isArray(arr) || !ObjectUtils.isString(str)) return false;\r\n        for (let i = 0; i < arr.length; i++) {\r\n            if (arr[i] instanceof RegExp) {\r\n                const regex = <RegExp>arr[i];\r\n                if (regex.test(str)) return true;\r\n            }\r\n        }\r\n        return false;\r\n    }\r\n\r\n    static any<T>(arr: ReadonlyArray<T>, cb: (item: T) => boolean): boolean {\r\n        if (!ObjectUtils.isArray(arr) || !ObjectUtils.isFunction(cb)) return false;\r\n        for (let i = 0; i < arr.length; i++) {\r\n            if (cb(arr[i])) return true;\r\n        }\r\n        return false;\r\n    }\r\n\r\n    static move<T>(arr: T[], oldIndex: number, newIndex: number): T[] {\r\n        if (!ObjectUtils.isArray(arr)) return [];\r\n        const length = arr.length;\r\n        while (oldIndex < 0) {\r\n            oldIndex += length;\r\n        }\r\n        while (newIndex < 0) {\r\n            newIndex += length;\r\n        }\r\n        if (newIndex >= length) {\r\n            let k = newIndex - length + 1;\r\n            while (k--) {\r\n                arr.push(undefined);\r\n            }\r\n        }\r\n        arr.splice(newIndex, 0, arr.splice(oldIndex, 1)[0]);\r\n        return arr;\r\n    }\r\n\r\n    static reversed<T>(arr: ReadonlyArray<T>): T[] {\r\n        const result = [];\r\n        if (!ObjectUtils.isArray(arr)) return result;\r\n        for (let i = arr.length - 1; i >= 0; i--) {\r\n            result.push(arr[i]);\r\n        }\r\n        return result;\r\n    }\r\n\r\n    static min<T>(arr: ReadonlyArray<T>, cb: (item: T, index?: number) => number): T {\r\n        if (!ObjectUtils.isArray(arr)) return null;\r\n        let min = Number.MAX_SAFE_INTEGER;\r\n        let result = null;\r\n        for (let i = 0; i < arr.length; i++) {\r\n            const current = cb(arr[i], i);\r\n            if (current < min || result === null) {\r\n                min = current;\r\n                result = arr[i];\r\n            }\r\n        }\r\n        return result;\r\n    }\r\n\r\n    static max<T>(arr: ReadonlyArray<T>, cb: (item: T, index?: number) => number): T {\r\n        if (!ObjectUtils.isArray(arr)) return null;\r\n        let max = Number.MIN_SAFE_INTEGER;\r\n        let result = null;\r\n        for (let i = 0; i < arr.length; i++) {\r\n            const current = cb(arr[i], i);\r\n            if (current > max || result === null) {\r\n                max = current;\r\n                result = arr[i];\r\n            }\r\n        }\r\n        return result;\r\n    }\r\n\r\n    static chunk<T>(arr: ReadonlyArray<T>, size: number): Array<T[]> {\r\n        if (!ObjectUtils.isArray(arr)) return [];\r\n        size = Math.max(1, size);\r\n        const result = [];\r\n        for (let i = 0; i < arr.length; i += size) {\r\n            result.push(arr.slice(i, i + size))\r\n        }\r\n        return result\r\n    }\r\n\r\n    static unique<T>(arr: ReadonlyArray<T>): T[] {\r\n        if (!ObjectUtils.isArray(arr)) return [];\r\n        return arr.filter((value, index, self) => {\r\n            return self.indexOf(value) === index;\r\n        });\r\n    }\r\n}\r\n","import \"reflect-metadata\";\r\nimport {Injector, TypeProvider, runInInjectionContext} from \"@angular/core\";\r\nimport {ResolveFactory} from \"../common-types\";\r\nimport {ObjectUtils} from \"./object.utils\";\r\n\r\nexport class ReflectUtils {\r\n\r\n    static defineMetadata(key: string, data: any, target: any, name?: string): void {\r\n        Reflect.defineMetadata(key, data, target, name);\r\n    }\r\n\r\n    static getMetadata(key: string, target: any, name?: string): any {\r\n        return Reflect.getMetadata(key, target, name);\r\n    }\r\n\r\n    static getOwnMetadata(key: string, target: any, name?: string): any {\r\n        return Reflect.getOwnMetadata(key, target, name);\r\n    }\r\n\r\n    static resolve<T>(obj: T, injector: Injector): T extends ResolveFactory<infer R> ? R : T {\r\n        if (!ObjectUtils.checkInterface(obj, {func: \"function\"})) return obj as any;\r\n        const factory = <ResolveFactory>obj;\r\n        let depends: TypeProvider[];\r\n        if (factory.type) {\r\n            const method = ObjectUtils.getProperties(factory.type).find(function (key) {\r\n                return factory.type[key] === factory.func;\r\n            });\r\n            depends = ReflectUtils.getMetadata(\"factoryDependencies\", factory.type, method) || [];\r\n        } else {\r\n            depends = ReflectUtils.getMetadata(\"factoryDependencies\", factory.func) || [];\r\n        }\r\n        const parameters = depends.map(function (dep) {\r\n            return injector.get(dep);\r\n        }).concat(factory.params);\r\n        return runInInjectionContext(injector, () => factory.func.apply(factory.type ?? null, parameters));\r\n    }\r\n}\r\n","import {Inject, Injectable, PLATFORM_ID} from \"@angular/core\";\nimport {isPlatformBrowser, isPlatformServer} from \"@angular/common\";\nimport {DeviceDetectorService, DeviceInfo} from \"ngx-device-detector\";\n\n/**\n * Use this service to determine which is the current environment\n */\n@Injectable()\nexport class UniversalService {\n\n    get isBrowser(): boolean {\n        return isPlatformBrowser(this.platformId);\n    }\n\n    get isServer(): boolean {\n        return isPlatformServer(this.platformId);\n    }\n\n    get deviceInfo(): DeviceInfo {\n        return this.isServer\n            ? {\n                userAgent: \"angular-universal\",\n                os: \"unknown\",\n                browser: \"node\",\n                device: \"node\",\n                os_version: \"unknown\",\n                browser_version: \"unknown\",\n                deviceType: \"unknown\",\n                orientation: \"landscape\"\n            } as any\n            : this.dds.getDeviceInfo();\n    }\n\n    get browserName(): string {\n        return (this.dds.browser || \"\").toLowerCase();\n    }\n\n    get browserVersion(): string {\n        return this.dds.browser_version;\n    }\n\n    get isExplorer(): boolean {\n        return this.checkBrowser(\"ie\");\n    }\n\n    get isEdge(): boolean {\n        return this.checkBrowser(\"edge\");\n    }\n\n    get isChrome(): boolean {\n        return this.checkBrowser(\"chrome\");\n    }\n\n    get isFirefox(): boolean {\n        return this.checkBrowser(\"firefox\");\n    }\n\n    get isSafari(): boolean {\n        return this.checkBrowser(\"safari\");\n    }\n\n    get isTablet(): boolean {\n        return this.dds.isTablet();\n    }\n\n    get isMobile(): boolean {\n        return this.dds.isMobile();\n    }\n\n    get isDesktop(): boolean {\n        return this.dds.isDesktop();\n    }\n\n    get isCrawler(): boolean {\n        return this.crawler;\n    }\n\n    private readonly crawler: boolean;\n\n    constructor(@Inject(PLATFORM_ID) readonly platformId: string, readonly dds: DeviceDetectorService) {\n        const info = this.dds.getDeviceInfo();\n        this.crawler = /(bot|google|baidu|bing|msn|duckduckbot|teoma|slurp|yandex|lighthouse|angular-universal|PTST|PostmanRuntime)/gi.test(info.userAgent);\n    }\n\n    protected checkBrowser(name: string): boolean {\n        return this.browserName.includes(name) || false;\n    }\n}\n","import {Injectable, Injector, NgZone, Optional} from \"@angular/core\";\r\nimport {\r\n    ActivatedRouteSnapshot,\r\n    ChildrenOutletContexts,\r\n    Data,\r\n    NavigationEnd,\r\n    NavigationExtras,\r\n    OutletContext,\r\n    Params,\r\n    Resolve,\r\n    Route,\r\n    Router,\r\n    Scroll,\r\n    UrlSegment,\r\n    UrlTree\r\n} from \"@angular/router\";\r\nimport {BehaviorSubject, firstValueFrom, Observable, Observer, Subscription} from \"rxjs\";\r\nimport {debounceTime, distinctUntilChanged, filter, map, skipWhile,} from \"rxjs/operators\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\nimport {IRoute, NavigationUrlParam} from \"../common-types\";\r\nimport {UniversalService} from \"./universal.service\";\r\n\r\nexport const emptySnapshot = new ActivatedRouteSnapshot();\r\nexport const emptyData: Data = {id: \"\"};\r\nexport const emptyParams: Params = {};\r\nexport const emptySegments: UrlSegment[] = [];\r\nexport const emptyComponents: any[] = [];\r\n\r\nexport interface IStateInfo {\r\n    url: string;\r\n    segments: UrlSegment[];\r\n    components: any[];\r\n}\r\n\r\n@Injectable()\r\nexport class StateService {\r\n\r\n    readonly globalExtras: NavigationExtras;\r\n\r\n    protected $snapshot: BehaviorSubject<ActivatedRouteSnapshot>;\r\n    protected $component: BehaviorSubject<any>;\r\n    protected stateInfo: IStateInfo;\r\n\r\n    static toPath(route: Route, params: any): string {\r\n        let path = route.path || \"\";\r\n        ObjectUtils.iterate(params, (value: any, key: string) => {\r\n            path = path.replace(`:${key}`, `${value}`);\r\n        });\r\n        return path;\r\n    }\r\n\r\n    get snapshot(): ActivatedRouteSnapshot {\r\n        return this.$snapshot.value;\r\n    }\r\n\r\n    get component(): any {\r\n        return this.$component.value;\r\n    }\r\n\r\n    get route(): IRoute {\r\n        return this.snapshot.routeConfig;\r\n    }\r\n\r\n    get data(): Data {\r\n        return this.snapshot.data || emptyData;\r\n    }\r\n\r\n    get params(): Params {\r\n        return this.snapshot.params || emptyParams;\r\n    }\r\n\r\n    get queryParams(): Params {\r\n        return this.snapshot.queryParams || emptyParams;\r\n    }\r\n\r\n    get url(): string {\r\n        return this.stateInfo.url || \"\";\r\n    }\r\n\r\n    get urlSegments(): UrlSegment[] {\r\n        return this.stateInfo.segments || emptySegments;\r\n    }\r\n\r\n    get components(): any[] {\r\n        return this.stateInfo.components || emptyComponents;\r\n    }\r\n\r\n    get routerConfig(): IRoute[] {\r\n        return this.router.config;\r\n    }\r\n\r\n    get $observable(): Observable<ActivatedRouteSnapshot> {\r\n        return this.$snapshot.pipe(\r\n            skipWhile(snapshot => snapshot === emptySnapshot),\r\n            debounceTime(25)\r\n        )\r\n    }\r\n\r\n    constructor(readonly injector: Injector,\r\n                readonly zone: NgZone,\r\n                readonly universal: UniversalService,\r\n                @Optional() readonly router: Router = null,\r\n                @Optional() readonly contexts: ChildrenOutletContexts = null) {\r\n        this.globalExtras = {\r\n            queryParamsHandling: \"merge\"\r\n        };\r\n        this.$snapshot = new BehaviorSubject(emptySnapshot);\r\n        this.$component = new BehaviorSubject(null);\r\n        this.stateInfo = {\r\n            url: \"\",\r\n            segments: [],\r\n            components: []\r\n        };\r\n        this.router?.events\r\n            .pipe(\r\n                distinctUntilChanged(),\r\n                map(event => {\r\n                    if (event instanceof Scroll) {\r\n                        return event.routerEvent;\r\n                    }\r\n                    return event;\r\n                }),\r\n                filter(e => e instanceof NavigationEnd),\r\n            )\r\n            .subscribe(() => {\r\n                let context: OutletContext = this.contexts?.getContext(\"primary\");\r\n                let segments = [];\r\n                const components: any[] = [];\r\n                const snapshots: ActivatedRouteSnapshot[] = [];\r\n                while (context && context.route) {\r\n                    const snapshot = context.route.snapshot;\r\n                    snapshots.push(snapshot);\r\n                    segments = segments.concat(snapshot.url);\r\n                    if (context.outlet && context.outlet.component)\r\n                        components.push(context.outlet.component);\r\n                    context = context.children.getContext(\"primary\");\r\n                }\r\n                this.stateInfo = {\r\n                    url: segments.map(s => s.url).join(\"/\"),\r\n                    segments: segments,\r\n                    components: components\r\n                };\r\n                this.$snapshot.next(snapshots[snapshots.length - 1]);\r\n                this.$component.next(components[components.length - 1]);\r\n            });\r\n    }\r\n\r\n    async reload(): Promise<any> {\r\n        const routerStateSnapshot = this.router.routerState.snapshot;\r\n        const resolvers = this.route.resolve || {};\r\n        const keys = Object.keys(resolvers);\r\n        for (const key of keys) {\r\n            const resolver = this.injector.get(resolvers[key]) as Resolve<any>;\r\n            let resolved = resolver.resolve(this.snapshot, routerStateSnapshot);\r\n            if (resolved instanceof Observable) {\r\n                resolved = firstValueFrom(resolved);\r\n            }\r\n            if (resolved instanceof Promise) {\r\n                resolved = await resolved;\r\n            }\r\n            this.data[key] = resolved;\r\n        }\r\n    }\r\n\r\n    async navigateByUrl(url: string | UrlTree, navigationExtras: NavigationExtras = {}): Promise<boolean> {\r\n        return this.navigate(url, navigationExtras);\r\n    }\r\n\r\n    async navigate(url: NavigationUrlParam, navigationExtras: NavigationExtras = {}): Promise<boolean> {\r\n        if (!this.router) return false;\r\n        const [tree, extras] = this.createUrlTree(url, navigationExtras);\r\n        return this.zone.run(() => {\r\n            return this.router.navigateByUrl(tree, extras);\r\n        });\r\n    }\r\n\r\n    async open(url: NavigationUrlParam, target = \"_blank\", navigationExtras: NavigationExtras = {}): Promise<boolean> {\r\n        if (!this.router) return false;\r\n        const [tree, extras] = this.createUrlTree(url, navigationExtras);\r\n        return this.zone.run(() => {\r\n            return this.openInNewWindow(tree, target) || this.router.navigateByUrl(tree, extras);\r\n        });\r\n    }\r\n\r\n    subscribeImmediately(\r\n        next?: (value: ActivatedRouteSnapshot) => void,\r\n        error?: (error: any) => void\r\n    ): Subscription {\r\n        return this.subscribe({\r\n            next, error\r\n        });\r\n    }\r\n\r\n    subscribe(osOrNext?: Partial<Observer<ActivatedRouteSnapshot>> | ((value: ActivatedRouteSnapshot) => void)): Subscription {\r\n        return this.$observable.subscribe(osOrNext);\r\n    }\r\n\r\n    getConfig(route: IRoute, path: string[] = []): ReadonlyArray<IRoute> {\r\n        return this.getConfigRecursive(route, this.routerConfig, path) || [];\r\n    }\r\n\r\n    protected getConfigRecursive(route: IRoute, config: IRoute[], path: string[]): IRoute[] {\r\n        if (!config) return null;\r\n        const match = config.findIndex(t => t == route);\r\n        if (match >= 0) return config;\r\n        for (const subConfig of config) {\r\n            if (subConfig.path)\r\n                path.push(subConfig.path);\r\n            const loadedChildren = (subConfig[\"_loadedConfig\"] || {routes: null}).routes || subConfig[\"_loadedRoutes\"];\r\n            const match = this.getConfigRecursive(route, subConfig.children || loadedChildren, path);\r\n            if (!match) {\r\n                if (subConfig.path)\r\n                    path.length -= 1;\r\n                continue;\r\n            }\r\n            return match;\r\n        }\r\n        return null;\r\n    }\r\n\r\n    protected openInNewWindow(tree: UrlTree, target: string): boolean {\r\n        if (!this.universal.isBrowser) return false;\r\n        const baseUrl = window.location.href.replace(this.router.url, \"\");\r\n        try {\r\n            const serialized = this.router.serializeUrl(tree);\r\n            const separator = serialized.startsWith(\"/\") ? \"\" : \"/\";\r\n            window.open(baseUrl + separator + serialized, target);\r\n            return true;\r\n        } catch (e) {\r\n            console.log(`Can't open new window: ${e}`);\r\n            return false;\r\n        }\r\n    }\r\n\r\n    protected createUrlTree(url: NavigationUrlParam, extras?: NavigationExtras): [UrlTree, NavigationExtras] {\r\n        if (!this.router) return null;\r\n        extras = Object.assign(extras, this.globalExtras, extras || {});\r\n        if (ObjectUtils.isArray(url)) {\r\n            return [this.router.createUrlTree(url, extras), extras]\r\n        }\r\n        if (ObjectUtils.isString(url)) {\r\n            return [this.router.parseUrl(url), extras];\r\n        }\r\n        return [url, extras];\r\n    }\r\n}\r\n","import {inject, Inject, Injectable, Injector} from \"@angular/core\";\r\nimport {ActivatedRouteSnapshot, CanActivate, RouterStateSnapshot, UrlSegment} from \"@angular/router\";\r\nimport {IAuthService, IRoute, RouteValidator} from \"../common-types\";\r\nimport {ReflectUtils} from \"./reflect.utils\";\r\nimport {ObjectUtils} from \"./object.utils\";\r\nimport {StateService} from \"../services/state.service\";\r\nimport {AUTH_SERVICE} from \"../tokens\";\r\n\r\n@Injectable()\r\nexport class AuthGuard implements CanActivate {\r\n\r\n    static guardAuthenticated(auth: IAuthService): Promise<boolean> {\r\n        return Promise.resolve(auth.isAuthenticated);\r\n    }\r\n\r\n    static guardNotAuthenticated(auth: IAuthService): Promise<boolean> {\r\n        return Promise.resolve(!auth.isAuthenticated);\r\n    }\r\n\r\n    static guardNothing(): Promise<boolean> {\r\n        return Promise.resolve(true);\r\n    }\r\n\r\n    static guardAuthField(expression: string = `auth.isAuthenticated`): RouteValidator {\r\n        const auth = inject(AUTH_SERVICE);\r\n        return async (): Promise<boolean> => {\r\n            return ObjectUtils.evaluate(expression, {auth});\r\n        };\r\n    }\r\n\r\n    static guardStateField(expression: string = `state.data`): RouteValidator {\r\n        const state = inject(StateService);\r\n        return async (): Promise<boolean> => {\r\n            return ObjectUtils.evaluate(expression, {state});\r\n        };\r\n    }\r\n\r\n    static guardAuthStateField(expression: string = `auth.isAuthenticated`): RouteValidator {\r\n        const auth = inject(AUTH_SERVICE);\r\n        const state = inject(StateService);\r\n        return async (): Promise<boolean> => {\r\n            return ObjectUtils.evaluate(expression, {auth, state});\r\n        };\r\n    }\r\n\r\n    static wildRouteMatch(segments: UrlSegment[]) {\r\n        return {consumed: segments};\r\n    }\r\n\r\n    static noRouteMatch() {\r\n        return null;\r\n    }\r\n\r\n    constructor(@Inject(Injector) readonly injector: Injector,\r\n                @Inject(StateService) readonly state: StateService,\r\n                @Inject(AUTH_SERVICE) readonly auth: IAuthService) {\r\n    }\r\n\r\n    checkRouteMenu(route: IRoute): Promise<boolean> {\r\n        if (!route.data || !route.data.name) return Promise.resolve(false);\r\n        return this.checkRoute(route);\r\n    }\r\n\r\n    checkRoute(route: IRoute, next?: ActivatedRouteSnapshot): Promise<boolean> {\r\n        const routeData = route.data || {};\r\n        if (!routeData.guards)\r\n            return Promise.resolve(!route.canActivate || this.auth.isAuthenticated);\r\n        return new Promise<boolean>(resolve => {\r\n            const guards = routeData.guards.map(g => {\r\n                const guard = ReflectUtils.resolve(g, this.injector);\r\n                return guard(this.auth, route, next);\r\n            });\r\n            Promise.all(guards).then(results => {\r\n                resolve(results.indexOf(false) < 0);\r\n            });\r\n        });\r\n    }\r\n\r\n    canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean> {\r\n        const route = <IRoute>next.routeConfig;\r\n        return new Promise<boolean>(resolve => {\r\n            this.auth.checkAuthenticated().then(() => {\r\n                this.checkRoute(route, next).then(hasRights => {\r\n                    resolve(hasRights);\r\n                    if (!hasRights) {\r\n                        this.getReturnState(route).then(returnState => {\r\n                            if (!returnState) return;\r\n                            this.state.navigate(returnState, {queryParams: next.queryParams});\r\n                        });\r\n                    }\r\n                });\r\n            });\r\n        });\r\n    }\r\n\r\n    getReturnState(route: IRoute): Promise<string[]> {\r\n        if (!route) return Promise.resolve(null);\r\n        if (ObjectUtils.isObject(route.data) && ObjectUtils.isArray(route.data.returnState)) {\r\n            return Promise.resolve(route.data.returnState);\r\n        }\r\n        const path = [];\r\n        const config = this.state.getConfig(route, path);\r\n        return new Promise<string[]>(resolve => {\r\n            this.getReturnStateRecursive(config).then(rs => {\r\n                if (!ObjectUtils.isArray(rs)) {\r\n                    resolve(rs);\r\n                    return;\r\n                }\r\n                resolve(path.concat(rs));\r\n            });\r\n        });\r\n    }\r\n\r\n    protected getReturnStateRecursive(config: ReadonlyArray<IRoute>, c: number = 0): Promise<string[]> {\r\n        if (!config || c >= config.length) return Promise.resolve(null);\r\n        return new Promise<string[]>(resolve => {\r\n            const route = config[c];\r\n            const check = !route.component ? Promise.resolve(false) : this.checkRoute(route);\r\n            check.then(res => {\r\n                if (res) {\r\n                    resolve([route.path]);\r\n                    return;\r\n                }\r\n                this.getReturnStateRecursive(config, c + 1).then(resolve);\r\n            });\r\n        });\r\n    }\r\n}\r\n","import {InjectionToken, Injector, Provider, Type} from \"@angular/core\";\r\nimport {CachedFactory, TypedProvider} from \"../common-types\";\r\n\r\nconst CACHED_TOKEN = new InjectionToken(\"cached-factory-token\");\r\n\r\nexport function createTypedProvider<T>(provide: InjectionToken<T>, p: TypedProvider<T>, multi: boolean = false): Provider {\r\n    if ((\"useFactory\" in p && \"deps\" in p) || \"useValue\" in p || \"useExisting\" in p || \"useClass\" in p) {\r\n        return {\r\n            provide,\r\n            multi,\r\n            ...p\r\n        } as Provider;\r\n    }\r\n    if (\"useToken\" in p) {\r\n        return {\r\n            provide,\r\n            multi,\r\n            useFactory: (i: T) => i,\r\n            deps: [p.useToken]\r\n        };\r\n    }\r\n    return {\r\n        provide,\r\n        multi,\r\n        useClass: p as Type<T>\r\n    };\r\n}\r\n\r\nexport function cachedFactory<T>(providers: TypedProvider<T>[]): CachedFactory<T> {\r\n    let cached: ReadonlyArray<T> = null;\r\n    return (injector: Injector) => {\r\n        if (cached !== null) {\r\n            return cached;\r\n        }\r\n        const subInjector = Injector.create({\r\n            providers: providers.map(p=> createTypedProvider(CACHED_TOKEN, p, true)),\r\n            parent: injector\r\n        });\r\n        cached = subInjector.get(CACHED_TOKEN) as ReadonlyArray<T>;\r\n        return cached;\r\n    };\r\n}\r\n","import {CanvasColor} from \"../common-types\";\r\nimport {ObjectUtils} from \"./object.utils\";\r\n\r\ndeclare const netscape: any;\r\n\r\nclass BlurStack {\r\n    r: number = 0;\r\n    g: number = 0;\r\n    b: number = 0;\r\n    a: number = 0;\r\n    next: BlurStack = null;\r\n}\r\n\r\nconst mul_table = [\r\n    512, 512, 456, 512, 328, 456, 335, 512, 405, 328, 271, 456, 388, 335, 292, 512,\r\n    454, 405, 364, 328, 298, 271, 496, 456, 420, 388, 360, 335, 312, 292, 273, 512,\r\n    482, 454, 428, 405, 383, 364, 345, 328, 312, 298, 284, 271, 259, 496, 475, 456,\r\n    437, 420, 404, 388, 374, 360, 347, 335, 323, 312, 302, 292, 282, 273, 265, 512,\r\n    497, 482, 468, 454, 441, 428, 417, 405, 394, 383, 373, 364, 354, 345, 337, 328,\r\n    320, 312, 305, 298, 291, 284, 278, 271, 265, 259, 507, 496, 485, 475, 465, 456,\r\n    446, 437, 428, 420, 412, 404, 396, 388, 381, 374, 367, 360, 354, 347, 341, 335,\r\n    329, 323, 318, 312, 307, 302, 297, 292, 287, 282, 278, 273, 269, 265, 261, 512,\r\n    505, 497, 489, 482, 475, 468, 461, 454, 447, 441, 435, 428, 422, 417, 411, 405,\r\n    399, 394, 389, 383, 378, 373, 368, 364, 359, 354, 350, 345, 341, 337, 332, 328,\r\n    324, 320, 316, 312, 309, 305, 301, 298, 294, 291, 287, 284, 281, 278, 274, 271,\r\n    268, 265, 262, 259, 257, 507, 501, 496, 491, 485, 480, 475, 470, 465, 460, 456,\r\n    451, 446, 442, 437, 433, 428, 424, 420, 416, 412, 408, 404, 400, 396, 392, 388,\r\n    385, 381, 377, 374, 370, 367, 363, 360, 357, 354, 350, 347, 344, 341, 338, 335,\r\n    332, 329, 326, 323, 320, 318, 315, 312, 310, 307, 304, 302, 299, 297, 294, 292,\r\n    289, 287, 285, 282, 280, 278, 275, 273, 271, 269, 267, 265, 263, 261, 259];\r\n\r\nconst shg_table = [\r\n    9, 11, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 17,\r\n    17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19,\r\n    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20,\r\n    20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21,\r\n    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,\r\n    21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22,\r\n    22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,\r\n    22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23,\r\n    23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,\r\n    23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,\r\n    23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,\r\n    23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\r\n    24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\r\n    24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\r\n    24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\r\n    24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24];\r\n\r\nexport class CanvasUtils {\r\n\r\n    static manipulatePixels(canvas: HTMLCanvasElement, ctx: CanvasRenderingContext2D, colorTransformer: (color: CanvasColor, greyscale?: number) => CanvasColor): void {\r\n        const imgData = ctx.getImageData(0, 0, canvas.width, canvas.height);\r\n        const pixels = imgData.data;\r\n        for (let i = 0, n = pixels.length; i < n; i += 4) {\r\n            const clr = new CanvasColor(pixels[i], pixels[i + 1], pixels[i + 2], pixels[i + 3]);\r\n            const greyscale = clr.r * .3 + clr.g * .59 + clr.b * .11;\r\n            const color = colorTransformer(clr, greyscale);\r\n            pixels[i] = color.r;\r\n            pixels[i + 1] = color.g;\r\n            pixels[i + 2] = color.b;\r\n            pixels[i + 3] = color.a;\r\n        }\r\n        ctx.putImageData(imgData, 0, 0);\r\n    }\r\n\r\n    static thresholding(canvas: HTMLCanvasElement, ctx: CanvasRenderingContext2D, threshold: number = 50, colorTransformer: (color: CanvasColor, limit: boolean, greyscale?: number) => CanvasColor): void {\r\n        const min = new CanvasColor(0, 0, 0, 255);\r\n        const max = new CanvasColor(0, 0, 0, 0);\r\n        colorTransformer = ObjectUtils.isFunction(colorTransformer) ? colorTransformer : ((color: CanvasColor, limit: boolean): CanvasColor => {\r\n            return limit ? max : min;\r\n        });\r\n        CanvasUtils.manipulatePixels(canvas, ctx, (color, greyscale) => {\r\n            return colorTransformer(color, greyscale > threshold, greyscale);\r\n        });\r\n    }\r\n\r\n    static stackBlur(canvas: HTMLCanvasElement, ctx: CanvasRenderingContext2D, radius: number = 10): void {\r\n        if (isNaN(radius) || radius < 1) return;\r\n        radius |= 0;\r\n\r\n        const top_x = 0;\r\n        const top_y = 0;\r\n        const width = canvas.width;\r\n        const height = canvas.height;\r\n\r\n        let imageData = null;\r\n\r\n        try {\r\n            try {\r\n                imageData = ctx.getImageData(top_x, top_y, width, height);\r\n            } catch (e) {\r\n\r\n                // NOTE: this part is supposedly only needed if you want to work with local files\r\n                // so it might be okay to remove the whole try/catch block and just use\r\n                // imageData = ctx.getImageData( top_x, top_y, width, height );\r\n                try {\r\n                    netscape.security.PrivilegeManager.enablePrivilege(\"UniversalBrowserRead\");\r\n                    imageData = ctx.getImageData(top_x, top_y, width, height);\r\n                } catch (e) {\r\n                    alert(\"Cannot access local image\");\r\n                    throw new Error(\"unable to access local image data: \" + e);\r\n                }\r\n            }\r\n        } catch (e) {\r\n            alert(\"Cannot access image\");\r\n            throw new Error(\"unable to access image data: \" + e);\r\n        }\r\n\r\n        const pixels = imageData.data;\r\n\r\n        let x, y, i, p, yp, yi, yw, r_sum, g_sum, b_sum, a_sum,\r\n            r_out_sum, g_out_sum, b_out_sum, a_out_sum,\r\n            r_in_sum, g_in_sum, b_in_sum, a_in_sum,\r\n            pr, pg, pb, pa, rbs;\r\n\r\n        const div = radius + radius + 1;\r\n        const widthMinus1 = width - 1;\r\n        const heightMinus1 = height - 1;\r\n        const radiusPlus1 = radius + 1;\r\n        const sumFactor = radiusPlus1 * (radiusPlus1 + 1) / 2;\r\n\r\n        const stackStart = new BlurStack();\r\n        let stackEnd = null;\r\n        let stack = stackStart;\r\n\r\n        for (i = 1; i < div; i++) {\r\n            stack = stack.next = new BlurStack();\r\n            if (i == radiusPlus1) {\r\n                stackEnd = stack;\r\n            }\r\n        }\r\n        stack.next = stackStart;\r\n        let stackIn = null;\r\n        let stackOut = null;\r\n\r\n        yw = yi = 0;\r\n\r\n        const mul_sum = mul_table[radius];\r\n        const shg_sum = shg_table[radius];\r\n\r\n        for (y = 0; y < height; y++) {\r\n            r_in_sum = g_in_sum = b_in_sum = a_in_sum = r_sum = g_sum = b_sum = a_sum = 0;\r\n\r\n            r_out_sum = radiusPlus1 * (pr = pixels[yi]);\r\n            g_out_sum = radiusPlus1 * (pg = pixels[yi + 1]);\r\n            b_out_sum = radiusPlus1 * (pb = pixels[yi + 2]);\r\n            a_out_sum = radiusPlus1 * (pa = pixels[yi + 3]);\r\n\r\n            r_sum += sumFactor * pr;\r\n            g_sum += sumFactor * pg;\r\n            b_sum += sumFactor * pb;\r\n            a_sum += sumFactor * pa;\r\n\r\n            stack = stackStart;\r\n\r\n            for (i = 0; i < radiusPlus1; i++) {\r\n                stack.r = pr;\r\n                stack.g = pg;\r\n                stack.b = pb;\r\n                stack.a = pa;\r\n                stack = stack.next;\r\n            }\r\n\r\n            for (i = 1; i < radiusPlus1; i++) {\r\n                p = yi + ((widthMinus1 < i ? widthMinus1 : i) << 2);\r\n                r_sum += (stack.r = (pr = pixels[p])) * (rbs = radiusPlus1 - i);\r\n                g_sum += (stack.g = (pg = pixels[p + 1])) * rbs;\r\n                b_sum += (stack.b = (pb = pixels[p + 2])) * rbs;\r\n                a_sum += (stack.a = (pa = pixels[p + 3])) * rbs;\r\n\r\n                r_in_sum += pr;\r\n                g_in_sum += pg;\r\n                b_in_sum += pb;\r\n                a_in_sum += pa;\r\n\r\n                stack = stack.next;\r\n            }\r\n\r\n\r\n            stackIn = stackStart;\r\n            stackOut = stackEnd;\r\n            for (x = 0; x < width; x++) {\r\n                pixels[yi + 3] = pa = (a_sum * mul_sum) >> shg_sum;\r\n                if (pa != 0) {\r\n                    pa = 255 / pa;\r\n                    pixels[yi] = ((r_sum * mul_sum) >> shg_sum) * pa;\r\n                    pixels[yi + 1] = ((g_sum * mul_sum) >> shg_sum) * pa;\r\n                    pixels[yi + 2] = ((b_sum * mul_sum) >> shg_sum) * pa;\r\n                } else {\r\n                    pixels[yi] = pixels[yi + 1] = pixels[yi + 2] = 0;\r\n                }\r\n\r\n                r_sum -= r_out_sum;\r\n                g_sum -= g_out_sum;\r\n                b_sum -= b_out_sum;\r\n                a_sum -= a_out_sum;\r\n\r\n                r_out_sum -= stackIn.r;\r\n                g_out_sum -= stackIn.g;\r\n                b_out_sum -= stackIn.b;\r\n                a_out_sum -= stackIn.a;\r\n\r\n                p = (yw + ((p = x + radius + 1) < widthMinus1 ? p : widthMinus1)) << 2;\r\n\r\n                r_in_sum += (stackIn.r = pixels[p]);\r\n                g_in_sum += (stackIn.g = pixels[p + 1]);\r\n                b_in_sum += (stackIn.b = pixels[p + 2]);\r\n                a_in_sum += (stackIn.a = pixels[p + 3]);\r\n\r\n                r_sum += r_in_sum;\r\n                g_sum += g_in_sum;\r\n                b_sum += b_in_sum;\r\n                a_sum += a_in_sum;\r\n\r\n                stackIn = stackIn.next;\r\n\r\n                r_out_sum += (pr = stackOut.r);\r\n                g_out_sum += (pg = stackOut.g);\r\n                b_out_sum += (pb = stackOut.b);\r\n                a_out_sum += (pa = stackOut.a);\r\n\r\n                r_in_sum -= pr;\r\n                g_in_sum -= pg;\r\n                b_in_sum -= pb;\r\n                a_in_sum -= pa;\r\n\r\n                stackOut = stackOut.next;\r\n\r\n                yi += 4;\r\n            }\r\n            yw += width;\r\n        }\r\n\r\n\r\n        for (x = 0; x < width; x++) {\r\n            g_in_sum = b_in_sum = a_in_sum = r_in_sum = g_sum = b_sum = a_sum = r_sum = 0;\r\n\r\n            yi = x << 2;\r\n            r_out_sum = radiusPlus1 * (pr = pixels[yi]);\r\n            g_out_sum = radiusPlus1 * (pg = pixels[yi + 1]);\r\n            b_out_sum = radiusPlus1 * (pb = pixels[yi + 2]);\r\n            a_out_sum = radiusPlus1 * (pa = pixels[yi + 3]);\r\n\r\n            r_sum += sumFactor * pr;\r\n            g_sum += sumFactor * pg;\r\n            b_sum += sumFactor * pb;\r\n            a_sum += sumFactor * pa;\r\n\r\n            stack = stackStart;\r\n\r\n            for (i = 0; i < radiusPlus1; i++) {\r\n                stack.r = pr;\r\n                stack.g = pg;\r\n                stack.b = pb;\r\n                stack.a = pa;\r\n                stack = stack.next;\r\n            }\r\n\r\n            yp = width;\r\n\r\n            for (i = 1; i <= radius; i++) {\r\n                yi = (yp + x) << 2;\r\n\r\n                r_sum += (stack.r = (pr = pixels[yi])) * (rbs = radiusPlus1 - i);\r\n                g_sum += (stack.g = (pg = pixels[yi + 1])) * rbs;\r\n                b_sum += (stack.b = (pb = pixels[yi + 2])) * rbs;\r\n                a_sum += (stack.a = (pa = pixels[yi + 3])) * rbs;\r\n\r\n                r_in_sum += pr;\r\n                g_in_sum += pg;\r\n                b_in_sum += pb;\r\n                a_in_sum += pa;\r\n\r\n                stack = stack.next;\r\n\r\n                if (i < heightMinus1) {\r\n                    yp += width;\r\n                }\r\n            }\r\n\r\n            yi = x;\r\n            stackIn = stackStart;\r\n            stackOut = stackEnd;\r\n            for (y = 0; y < height; y++) {\r\n                p = yi << 2;\r\n                pixels[p + 3] = pa = (a_sum * mul_sum) >> shg_sum;\r\n                if (pa > 0) {\r\n                    pa = 255 / pa;\r\n                    pixels[p] = ((r_sum * mul_sum) >> shg_sum) * pa;\r\n                    pixels[p + 1] = ((g_sum * mul_sum) >> shg_sum) * pa;\r\n                    pixels[p + 2] = ((b_sum * mul_sum) >> shg_sum) * pa;\r\n                } else {\r\n                    pixels[p] = pixels[p + 1] = pixels[p + 2] = 0;\r\n                }\r\n\r\n                r_sum -= r_out_sum;\r\n                g_sum -= g_out_sum;\r\n                b_sum -= b_out_sum;\r\n                a_sum -= a_out_sum;\r\n\r\n                r_out_sum -= stackIn.r;\r\n                g_out_sum -= stackIn.g;\r\n                b_out_sum -= stackIn.b;\r\n                a_out_sum -= stackIn.a;\r\n\r\n                p = (x + (((p = y + radiusPlus1) < heightMinus1 ? p : heightMinus1) * width)) << 2;\r\n\r\n                r_sum += (r_in_sum += (stackIn.r = pixels[p]));\r\n                g_sum += (g_in_sum += (stackIn.g = pixels[p + 1]));\r\n                b_sum += (b_in_sum += (stackIn.b = pixels[p + 2]));\r\n                a_sum += (a_in_sum += (stackIn.a = pixels[p + 3]));\r\n\r\n                stackIn = stackIn.next;\r\n\r\n                r_out_sum += (pr = stackOut.r);\r\n                g_out_sum += (pg = stackOut.g);\r\n                b_out_sum += (pb = stackOut.b);\r\n                a_out_sum += (pa = stackOut.a);\r\n\r\n                r_in_sum -= pr;\r\n                g_in_sum -= pg;\r\n                b_in_sum -= pb;\r\n                a_in_sum -= pa;\r\n\r\n                stackOut = stackOut.next;\r\n\r\n                yi += width;\r\n            }\r\n        }\r\n\r\n        ctx.putImageData(imageData, top_x, top_y);\r\n    }\r\n\r\n    static measureTextFontSize(maxWidth: number, maxHeight: number, lines: string[], font: string, lineHeightPercent: number = 1.1, canvas?: HTMLCanvasElement): number {\r\n\r\n        const startSize: number = maxHeight;\r\n        const context: CanvasRenderingContext2D = canvas.getContext(\"2d\");\r\n\r\n        if (!canvas) {\r\n            canvas = <HTMLCanvasElement>document.createElement(\"canvas\");\r\n            document.body.appendChild(canvas);\r\n        }\r\n\r\n        canvas.width = maxWidth + maxHeight;\r\n        canvas.height = maxHeight * 2;\r\n\r\n        let fontSize: number = CanvasUtils.halveValidateFontSize(startSize, (size: number) => {\r\n            CanvasUtils.setFontProps(context, font, size);\r\n            const maxTextLinesWidth = CanvasUtils.getTextWidth(context, lines);\r\n            return maxWidth - maxTextLinesWidth;\r\n        });\r\n\r\n        const bitmapHeight: number = CanvasUtils.getTextBitmapHeight(canvas, context, lines, font, fontSize, lineHeightPercent);\r\n        if (bitmapHeight > maxHeight) {\r\n            fontSize = CanvasUtils.halveValidateFontSize(fontSize, (size: number) => {\r\n                return maxHeight - CanvasUtils.getTextBitmapHeight(canvas, context, lines, font, size, lineHeightPercent);\r\n            });\r\n        }\r\n\r\n        return fontSize;\r\n    }\r\n\r\n    static drawLines(context: CanvasRenderingContext2D, lines: string[], font: string, size: number, lineHeightPercent: number = 1.1, align: string = \"left\", baseLine: string = \"top\", x: number = 0, y: number = 0): number {\r\n        CanvasUtils.setFontProps(context, font, size, align, baseLine);\r\n        for (let i: number = 0; i < lines.length; i++) {\r\n            const line: string = lines[i];\r\n            context.fillText(line, x, y);\r\n            if (i < lines.length - 1) {\r\n                y += size * lineHeightPercent;\r\n            }\r\n        }\r\n        return y;\r\n    }\r\n\r\n    static wrapText(context: CanvasRenderingContext2D, text: string, x: number, y: number, maxWidth: number): void {\r\n        const words = text.split(\" \");\r\n        const lineHeight = context.measureText(\"M\").width * 1.3;\r\n        const lines: string[] = [];\r\n        let line = \"\";\r\n        for (let n = 0; n < words.length; n++) {\r\n            const testLine = line + words[n] + \" \";\r\n            const metrics = context.measureText(testLine);\r\n            const testWidth = metrics.width;\r\n            if (testWidth > maxWidth && n > 0) {\r\n                lines.push(line);\r\n                line = words[n] + \" \";\r\n            }\r\n            else {\r\n                line = testLine;\r\n            }\r\n        }\r\n        lines.push(line);\r\n        y -= lineHeight * .5 * lines.length;\r\n        lines.forEach(l => {\r\n            context.fillText(l, x, y);\r\n            y += lineHeight;\r\n        });\r\n    }\r\n\r\n    static setFontProps(context: CanvasRenderingContext2D, font: string, fontSize: number, align: string = \"left\", baseLine: string = \"top\"): void {\r\n        context.font = `${fontSize}px ${font}`;\r\n        context.textAlign = <any>align;\r\n        context.textBaseline = <any>baseLine;\r\n    }\r\n\r\n    private static getTextWidth(context: CanvasRenderingContext2D, lines: string[]): number {\r\n        let maxWidth: number = 0;\r\n        for (let i: number = 0; i < lines.length; i++) {\r\n            const line: string = lines[i];\r\n            maxWidth = Math.max(maxWidth, context.measureText(line).width);\r\n        }\r\n        return maxWidth;\r\n    }\r\n\r\n    private static getTextBitmapHeight(canvas: HTMLCanvasElement, context: CanvasRenderingContext2D, lines: string[], font: string, fontSize: number, lineHeightPercent: number): number {\r\n        const width: number = canvas.width;\r\n        const height: number = canvas.height;\r\n        context.clearRect(0, 0, width, height);\r\n\r\n        const textY = CanvasUtils.drawLines(context, lines, font, fontSize, lineHeightPercent, \"left\", \"top\", fontSize * .5, fontSize * .5);\r\n        const imageData: ImageData = context.getImageData(0, 0, width, height);\r\n\r\n        let textHeight: number = 0;\r\n\r\n        yLoop:for (let y: number = 0; y < height; y++) {\r\n            for (let x: number = 0; x < width; x++) {\r\n                const index: number = (x + y * width) * 4;\r\n                if (imageData.data[index + 3] > 0) {\r\n                    textHeight = y + 1;\r\n                    continue yLoop;\r\n                }\r\n            }\r\n        }\r\n\r\n        return Math.max(textHeight, textY + fontSize);\r\n    }\r\n\r\n    private static halveValidateFontSize(startSize: number, callback: (size: number) => number): number {\r\n        let fontSize: number = startSize;\r\n        let lastFontSize: number = 0;\r\n        let direction: number;\r\n\r\n        for (let i: number = 0; i < 20; i++) {\r\n            direction = callback(fontSize);\r\n            const tempSize: number = fontSize;\r\n            if (direction < 0) {\r\n                fontSize = fontSize - (Math.abs(fontSize - lastFontSize) / 2);\r\n            } else {\r\n                fontSize = fontSize + (Math.abs(fontSize - lastFontSize) / 2);\r\n            }\r\n            lastFontSize = tempSize;\r\n            if (Math.abs(fontSize - lastFontSize) < 0.1) {\r\n                break;\r\n            }\r\n        }\r\n        fontSize = Math.floor(fontSize);\r\n        return fontSize;\r\n    }\r\n}\r\n\r\nlet osCanvas: HTMLCanvasElement = null;\r\n\r\nexport function getOffScreenCanvas(): HTMLCanvasElement {\r\n    osCanvas = osCanvas || document.createElement(\"canvas\");\r\n    return osCanvas;\r\n}\r\n\r\nexport function createStripePattern(size: number, color1: string, color2: string) {\r\n    const patternCanvas = getOffScreenCanvas();\r\n    const ctx = patternCanvas.getContext(\"2d\");\r\n\r\n    // The size of the tile determines the thickness of the stripes\r\n    patternCanvas.width = size;\r\n    patternCanvas.height = size;\r\n\r\n    // 1. Fill background\r\n    ctx.fillStyle = color1;\r\n    ctx.fillRect(0, 0, size, size);\r\n\r\n    // 2. Draw the diagonal stripes\r\n    ctx.fillStyle = color2;\r\n    ctx.beginPath();\r\n\r\n    // Bottom-left triangle\r\n    ctx.moveTo(0, size);\r\n    ctx.lineTo(size, 0);\r\n    ctx.lineTo(size / 2, 0);\r\n    ctx.lineTo(0, size / 2);\r\n    ctx.closePath();\r\n\r\n    // Top-right triangle\r\n    ctx.moveTo(size, size);\r\n    ctx.lineTo(size, size / 2);\r\n    ctx.lineTo(size / 2, size);\r\n    ctx.closePath();\r\n\r\n    ctx.fill();\r\n\r\n    return ctx.createPattern(patternCanvas, \"repeat\");\r\n}\r\n","import {isObservable} from \"rxjs\";\n\nexport type JsonReplacer = (key: string, value: any) => any;\n\nconst iso8061 = /^\\d{4}-\\d\\d-\\d\\dT\\d\\d:\\d\\d:\\d\\d(?:.\\d+)?(?:Z|[+-]\\d\\d:\\d\\d)$/;\n\nfunction serializer(replacer: JsonReplacer, cycleReplacer: JsonReplacer): JsonReplacer {\n    const stack: any[] = [], keys = []\n\n    if (cycleReplacer == null) cycleReplacer = function(key, value) {\n        if (stack[0] === value) return \"[Circular ~]\"\n        return \"[Circular ~.\" + keys.slice(0, stack.indexOf(value)).join(\".\") + \"]\"\n    }\n\n    return (key, value) => {\n        if (isObservable(value)) return \"[Observable ~]\";\n        if (stack.length > 0) {\n            const thisPos = stack.indexOf(this)\n            ~thisPos ? stack.splice(thisPos + 1) : stack.push(this)\n            ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key)\n            if (~stack.indexOf(value)) value = cycleReplacer.call(this, key, value)\n        }\n        else stack.push(value)\n\n        if (typeof value === \"string\" && value.match(iso8061)) {\n            value = new Date(value);\n        }\n\n        return replacer == null ? value : replacer.call(this, key, value)\n    }\n}\n\nexport function stringify(value: any, replacer: JsonReplacer = null, spaces: number = 2, cycleReplacer: JsonReplacer = null) {\n    return JSON.stringify(value, serializer(replacer, cycleReplacer), spaces)\n}\n","import {stringify} from \"./json.utils\";\n\nconst S = [\n    7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14,\n    20, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21,\n    6, 10, 15, 21,\n];\n\nconst K = [\n    3614090360, 3905402710, 606105819, 3250441966, 4118548399, 1200080426, 2821735955,\n    4249261313, 1770035416, 2336552879, 4294925233, 2304563134, 1804603682, 4254626195,\n    2792965006, 1236535329, 4129170786, 3225465664, 643717713, 3921069994, 3593408605,\n    38016083, 3634488961, 3889429448, 568446438, 3275163606, 4107603335, 1163531501,\n    2850285829, 4243563512, 1735328473, 2368359562, 4294588738, 2272392833, 1839030562,\n    4259657740, 2763975236, 1272893353, 4139469664, 3200236656, 681279174, 3936430074,\n    3572445317, 76029189, 3654602809, 3873151461, 530742520, 3299628645, 4096336452,\n    1126891415, 2878612391, 4237533241, 1700485571, 2399980690, 4293915773, 2240044497,\n    1873313359, 4264355552, 2734768916, 1309151649, 4149444226, 3174756917, 718787259,\n    3951481745,\n];\n\nfunction leftRotate(x, c) {\n    return (x << c) | (x >>> (32 - c));\n}\n\nexport function md5(input: string | Record<string, any>): string {\n    // UTF-8 encode the string\n    const encoder = new TextEncoder();\n    const data = encoder.encode(stringify(input ?? \"\") || \"\");\n\n    const originalBitLength = data.length * 8;\n\n    // --- Padding: append 0x80 then 0x00 until len ≡ 56 (mod 64)\n    let msgLen = data.length + 1;\n    while (msgLen % 64 !== 56) msgLen++;\n\n    const buffer = new Uint8Array(msgLen + 8); // +8 bytes for length\n    buffer.set(data);\n    buffer[data.length] = 0x80;\n\n    // Append original length in bits, little-endian 64-bit\n    let bitLen = originalBitLength;\n    for (let i = 0; i < 8; i++) {\n        buffer[msgLen + i] = bitLen & 0xff;\n        bitLen = Math.floor(bitLen / 256);\n    }\n\n    // Initial state\n    let a0 = 0x67452301;\n    let b0 = 0xefcdab89;\n    let c0 = 0x98badcfe;\n    let d0 = 0x10325476;\n\n    const view = new DataView(buffer.buffer);\n\n    // Process 512-bit chunks\n    for (let offset = 0; offset < buffer.length; offset += 64) {\n        const M = new Uint32Array(16);\n        for (let i = 0; i < 16; i++) {\n            M[i] = view.getUint32(offset + i * 4, true); // little-endian\n        }\n\n        let A = a0;\n        let B = b0;\n        let C = c0;\n        let D = d0;\n\n        for (let i = 0; i < 64; i++) {\n            let F, g;\n\n            if (i < 16) {\n                F = (B & C) | (~B & D);\n                g = i;\n            } else if (i < 32) {\n                F = (D & B) | (~D & C);\n                g = (5 * i + 1) % 16;\n            } else if (i < 48) {\n                F = B ^ C ^ D;\n                g = (3 * i + 5) % 16;\n            } else {\n                F = C ^ (B | ~D);\n                g = (7 * i) % 16;\n            }\n\n            F = (F + A + K[i] + M[g]) >>> 0;\n            A = D;\n            D = C;\n            C = B;\n            B = (B + leftRotate(F, S[i])) >>> 0;\n        }\n\n        a0 = (a0 + A) >>> 0;\n        b0 = (b0 + B) >>> 0;\n        c0 = (c0 + C) >>> 0;\n        d0 = (d0 + D) >>> 0;\n    }\n\n    // Output as hex (little-endian)\n    const words = [a0, b0, c0, d0];\n    let out = \"\";\n    for (const w of words) {\n        for (let i = 0; i < 4; i++) {\n            const byte = (w >>> (8 * i)) & 0xff;\n            out += byte.toString(16).padStart(2, \"0\");\n        }\n    }\n    return out;\n}\n","import {DateTime} from \"luxon\";\r\nimport {DurationUnit} from \"../common-types\";\r\n\r\nexport class DateUtils {\r\n\r\n    static isHoliday(date: Date): boolean {\r\n        return DateTime.fromJSDate(date).isWeekend;\r\n    }\r\n\r\n    static isBusinessDay(date: Date): boolean {\r\n        return !DateUtils.isHoliday(date);\r\n    }\r\n\r\n    static add(date: Date, amount: number = 1, unit: DurationUnit = \"days\"): Date {\r\n        return DateTime.fromJSDate(date).plus({[unit]: amount}).toJSDate();\r\n    }\r\n\r\n    static businessAdd(date: Date, amount: number = 1, unit: DurationUnit = \"days\", freeDays: Date[] = []): Date {\r\n        const signal = amount < 0 ? -1 : 1;\r\n        const freeTimes = freeDays.map(d => DateTime.fromJSDate(d));\r\n        let remaining = Math.abs(amount);\r\n        let day = DateTime.fromJSDate(date);\r\n        while (remaining) {\r\n            day = day.plus({[unit]: signal});\r\n            if (day.isWeekend && !freeTimes.some(m => m.hasSame(day, \"day\"))) {\r\n                remaining--;\r\n            }\r\n        }\r\n        return day.toJSDate();\r\n    }\r\n\r\n    static businessSubtract(date: Date, amount: number = 1, unit: DurationUnit = \"days\"): Date {\r\n        return DateUtils.businessAdd(date, -amount, unit);\r\n    }\r\n}\r\n","import {HttpClient} from \"@angular/common/http\";\r\nimport {firstValueFrom} from \"rxjs\";\r\nimport {ObjectUtils} from \"./object.utils\";\r\n\r\ndeclare const saveAs: any;\r\n\r\nexport class FileUtils {\r\n\r\n    static readonly base64: RegExp = /^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)$/g;\r\n\r\n    protected static readonly blobCache: Map<string, Promise<Blob>> = new Map();\r\n\r\n    protected static readBlob(http: HttpClient, url: string): Promise<Blob> {\r\n        if (!FileUtils.blobCache.has(url)) {\r\n            FileUtils.blobCache.set(url, firstValueFrom(http.get(url, {\r\n                responseType: \"blob\",\r\n                transferCache: true,\r\n            })));\r\n        }\r\n        return FileUtils.blobCache.get(url);\r\n    }\r\n\r\n    static getExtension(file: File): string {\r\n        return file ? file.name.substring(file.name.lastIndexOf(\".\")).toLowerCase() : null;\r\n    }\r\n\r\n    static getName(file: File): string {\r\n        return file ? file.name.substring(0, file.name.lastIndexOf(\".\")) : null;\r\n    }\r\n\r\n    static toFile(blob: Blob, fileName: string): File {\r\n        const data: any = blob;\r\n        data.lastModifiedDate = new Date();\r\n        data.name = fileName.split(/\\\\|\\//g).pop();\r\n        return <File>data;\r\n    }\r\n\r\n    static dataToBlob(data: string): Blob {\r\n        const parts = data.split(\",\");\r\n        const byteString = atob(parts[1]);\r\n        const mimeString = parts[0].split(\":\")[1].split(\";\")[0];\r\n\r\n        const ab = new ArrayBuffer(byteString.length);\r\n        const ia = new Uint8Array(ab);\r\n        for (let i = 0; i < byteString.length; i++) {\r\n            ia[i] = byteString.charCodeAt(i);\r\n        }\r\n\r\n        return new Blob([ab], {type: mimeString});\r\n    }\r\n\r\n    static saveBlob(blob: Blob, fileName: string): void {\r\n        if (typeof saveAs == \"undefined\") {\r\n            throw Error(\"FileSaver library is not loaded. Please load it: https://www.npmjs.com/package/file-saver\");\r\n        }\r\n        saveAs(blob, fileName);\r\n    }\r\n\r\n    static saveJson(json: any, fileName: string): void {\r\n        if (!ObjectUtils.isObject(json)) return;\r\n        FileUtils.saveBlob(new Blob([JSON.stringify(json, null, 4)]), fileName);\r\n    }\r\n\r\n    static readFileAsText(file: Blob): Promise<string> {\r\n        return FileUtils.readFile(\r\n            // @dynamic\r\n            reader => reader.readAsText(file)\r\n        );\r\n    }\r\n\r\n    static async readFileAsBinaryString(file: Blob): Promise<string> {\r\n        const arrayBuffer = await FileUtils.readFile<ArrayBuffer>(\r\n            // @dynamic\r\n            reader => reader.readAsArrayBuffer(file)\r\n        );\r\n        const bytes = new Uint8Array(arrayBuffer);\r\n        let binary = \"\";\r\n\r\n        // Convert ArrayBuffer to binary string\r\n        for (let i = 0; i < bytes.byteLength; i++) {\r\n            binary += String.fromCharCode(bytes[i]);\r\n        }\r\n\r\n        return binary;\r\n    }\r\n\r\n    static readFileAsDataURL(file: Blob): Promise<string> {\r\n        return FileUtils.readFile(\r\n            // @dynamic\r\n            reader => reader.readAsDataURL(file)\r\n        );\r\n    }\r\n\r\n    static base64ToBlob(base64: string, mimeType = \"application/octet-stream\") {\r\n        // Decode the Base64 string into a binary string\r\n        const byteCharacters = atob(base64);\r\n\r\n        // Convert the binary string into an array of bytes\r\n        const byteNumbers = Array.from(byteCharacters, char => char.charCodeAt(0));\r\n        const byteArray = new Uint8Array(byteNumbers);\r\n\r\n        // Create a Blob with the byte array and the specified MIME type\r\n        return new Blob([byteArray], { type: mimeType });\r\n    }\r\n\r\n    static async readBlobFromUrl(http: HttpClient, url: string): Promise<Blob> {\r\n        if (!url) {\r\n            throw new Error(`The URL is not specified for readBlobFromUrl`);\r\n        }\r\n        if (url.match(FileUtils.base64)) {\r\n            return FileUtils.base64ToBlob(url);\r\n        }\r\n        return this.readBlob(http, url);\r\n    }\r\n\r\n    static async readDataFromUrl(http: HttpClient, url: string): Promise<string> {\r\n        if (!url) {\r\n            throw new Error(`The URL is not specified for readBlobFromUrl`);\r\n        }\r\n        if (url.match(FileUtils.base64)) {\r\n            return url;\r\n        }\r\n        return FileUtils.readFileAsDataURL(await this.readBlob(http, url));\r\n    }\r\n\r\n    static getVideoCover(file: File, seekTo: number = null, quality: number = .75) {\r\n        return new Promise<string>((resolve, reject) => {\r\n            // load the file to a video player\r\n            const videoPlayer = document.createElement(\"video\");\r\n            videoPlayer.setAttribute(\"src\", URL.createObjectURL(file));\r\n            videoPlayer.load();\r\n            videoPlayer.addEventListener(\"error\", (ex) => {\r\n                reject(\"error when loading video file\");\r\n            });\r\n            // load metadata of the video to get video duration and dimensions\r\n            videoPlayer.addEventListener(\"loadedmetadata\", () => {\r\n                if (isNaN(seekTo)) {\r\n                    seekTo = videoPlayer.duration / 2;\r\n                }\r\n                // seek to user defined timestamp (in seconds) if possible\r\n                if (videoPlayer.duration < seekTo) {\r\n                    reject(\"video is too short.\");\r\n                    return;\r\n                }\r\n                // delay seeking or else \"seeked\" event won\"t fire on Safari\r\n                setTimeout(() => {\r\n                    videoPlayer.currentTime = seekTo;\r\n                }, 200);\r\n                // extract video thumbnail once seeking is complete\r\n                videoPlayer.addEventListener(\"seeked\", () => {\r\n                    // define a canvas to have the same dimension as the video\r\n                    const canvas = document.createElement(\"canvas\");\r\n                    canvas.width = videoPlayer.videoWidth;\r\n                    canvas.height = videoPlayer.videoHeight;\r\n                    // draw the video frame to canvas\r\n                    const ctx = canvas.getContext(\"2d\");\r\n                    ctx.drawImage(videoPlayer, 0, 0, canvas.width, canvas.height);\r\n                    // return the canvas image as a blob\r\n                    resolve(ctx.canvas.toDataURL(\r\n                        \"image/jpeg\",\r\n                        quality\r\n                    ));\r\n                });\r\n            });\r\n        });\r\n    }\r\n\r\n    static async getFilePreview(file: File): Promise<string> {\r\n        const type = file.type.toLowerCase();\r\n        if (type.startsWith(\"image/\")) {\r\n            return URL.createObjectURL(file);\r\n        }\r\n        if (type.startsWith(\"video/\")) {\r\n            return FileUtils.getVideoCover(file);\r\n        }\r\n        return null;\r\n    }\r\n\r\n    private static readFile<T extends string | ArrayBuffer>(callback: (reader: FileReader) => void): Promise<T> {\r\n        return new Promise<T>(\r\n            // @dynamic\r\n            (resolve, reject) => {\r\n                const reader = new FileReader();\r\n                reader.onload = () => resolve(reader.result as T);\r\n                reader.onerror = reject;\r\n                callback(reader);\r\n            }\r\n        );\r\n    }\r\n}\r\n","export class ForbiddenZone {\r\n\r\n    static isForbidden(name: string): boolean {\r\n        return Zone.current.name === `forbidden-${name}`;\r\n    }\r\n\r\n    static run<T>(name: string, cb: () => T): T {\r\n        const forbiddenZone = Zone.current.fork({\r\n            name: `forbidden-${name}`\r\n        });\r\n        return forbiddenZone.run(cb);\r\n    }\r\n}\r\n","import {Subject} from \"rxjs\";\n\nexport class GenericValue<T> extends Subject<T> {\n\n    get value(): T {\n        return this._value;\n    }\n\n    set value(value: T) {\n        if (value == this._value) return;\n        this._value = value;\n        this.next(value);\n    }\n\n    private _value: T;\n\n    constructor(value: T = null) {\n        super();\n        this._value = value;\n    }\n\n    setJustValue(value: T): void {\n        this._value = value;\n    }\n}\n","import {ObjectUtils} from \"./object.utils\";\n\nexport type FileSystemEntryOpenResult<D = any, R = any> = Promise<readonly FileSystemEntry<D, R>[]>;\n\nexport type FileSystemEntryOpenCb<PD, D = any, R = any> = (parent: FileSystemEntry<PD>) => FileSystemEntryOpenResult<D, R>;\n\nexport class FileSystemEntry<D = any, R = any> {\n\n    protected result: FileSystemEntryOpenResult;\n\n    readonly path: ReadonlyArray<FileSystemEntry>;\n    readonly level: number;\n    readonly classes: ReadonlyArray<string>;\n\n    get parent(): FileSystemEntry {\n        return this.level === 0 ? null : this.path[this.level - 1] || null;\n    }\n\n    constructor(readonly label: string,\n                readonly meta: string,\n                readonly image: string,\n                readonly data: D,\n                protected openCb: FileSystemEntryOpenCb<D, R>,\n                parent: FileSystemEntry = null,\n                classes?: string[]) {\n        this.path = !parent ? [this] : parent.path.concat([this]);\n        this.level = this.path.length - 1;\n        this.classes = [`level-${this.level}`].concat(classes ?? this.path\n            .map(t => {\n                if (ObjectUtils.isString(t.data)) {\n                    return t.data;\n                }\n                if (ObjectUtils.isObject(t.data)) {\n                    const list = Object.keys(t.data).map(k => {\n                        const value = t.data[k];\n                        return ObjectUtils.isString(value) && value.length > 0 && value.length < 50\n                            ? `${k}-${value}`\n                            : null;\n                    });\n                    return list.filter(i => !!i).join(\" \");\n                }\n                return null;\n            }).filter(t => !!t));\n    }\n\n    open<O = any>(): FileSystemEntryOpenResult<R, O> {\n        this.result = this.result || this.openCb(this);\n        this.result.then(res => {\n            if (Array.isArray(res)) return;\n            this.result = null;\n        });\n        return this.result;\n    }\n}\n","import {Invokable} from \"invokable\";\r\nimport {InteractiveCanvas, InteractiveCanvasRenderer} from \"../../common-types\";\r\nimport {createStripePattern} from \"../canvas\";\r\n\r\nexport class HitZoneRenderer {\r\n\r\n    protected pattern: CanvasPattern;\r\n\r\n    constructor() {\r\n        return Invokable.create(this);\r\n    }\r\n\r\n    async [Invokable.call](renderCanvas: InteractiveCanvas): Promise<void> {\r\n        const ctx = renderCanvas.ctx;\r\n        const hitShapes = renderCanvas.selectedItem?.hitShapes;\r\n        this.pattern = this.pattern || createStripePattern(20, \"#efefef\", \"#6c6c6c\");\r\n        if (!hitShapes) return;\r\n        ctx.globalAlpha = 0.5;\r\n        await renderCanvas.tempPaint(temp => {\r\n            temp.lineWidth = 1;\r\n            temp.fillStyle = this.pattern;\r\n            hitShapes.forEach(shape => {\r\n                const path = shape.getPath(shape.x, shape.y, 1);\r\n                temp.fill(path);\r\n            });\r\n            temp.fillStyle = \"#404040\";\r\n            temp.strokeStyle = \"#090909\";\r\n            renderCanvas.selectedItem.shapes.forEach(shape => {\r\n                const path = shape.getPath(shape.x, shape.y, 1);\r\n                temp.fill(path);\r\n                temp.stroke(path);\r\n            });\r\n            return null;\r\n        });\r\n        ctx.globalAlpha = 1;\r\n    }\r\n}\r\n\r\nexport interface HitZoneRenderer extends InteractiveCanvasRenderer {\r\n}\r\n","import {Invokable} from \"invokable\";\r\nimport {InteractiveCanvas, InteractiveCanvasRenderer} from \"../../common-types\";\r\n\r\nexport class ExclusionsRenderer {\r\n\r\n    constructor() {\r\n        return Invokable.create(this);\r\n    }\r\n\r\n    async [Invokable.call](renderCanvas: InteractiveCanvas): Promise<void> {\r\n        const ctx = renderCanvas.ctx;\r\n        renderCanvas.excludedAreas?.forEach(area => {\r\n            ctx.fillStyle = \"#00000030\";\r\n            area.shapes.forEach(shape => {\r\n                const path = shape.getPath(shape.x, shape.y, 1);\r\n                ctx.fill(path);\r\n            });\r\n        })\r\n    }\r\n}\r\n\r\nexport interface ExclusionsRenderer extends InteractiveCanvasRenderer {\r\n}\r\n","import {Invokable} from \"invokable\";\r\nimport {InteractiveCanvas, InteractiveCanvasRenderer} from \"../../common-types\";\r\n\r\nconst rulerDash: number[] = [5, 5];\r\nconst emptyDash: number[] = [];\r\n\r\nexport class RulerCanvasRenderer {\r\n\r\n    constructor() {\r\n        return Invokable.create(this);\r\n    }\r\n\r\n    async [Invokable.call](renderCanvas: InteractiveCanvas): Promise<void> {\r\n        const ctx = renderCanvas.ctx;\r\n        ctx.lineWidth = 1;\r\n        ctx.strokeStyle = \"rgba(128, 128, 128, 0.4)\";\r\n        ctx.setLineDash(rulerDash);\r\n        renderCanvas.cycles?.forEach(cycle => {\r\n            ctx.beginPath();\r\n            ctx.moveTo(0, cycle);\r\n            ctx.lineTo(renderCanvas.canvasWidth, cycle);\r\n            ctx.stroke();\r\n        });\r\n        const hw = renderCanvas.canvasWidth / 2;\r\n        ctx.lineDashOffset = -renderCanvas.basePan;\r\n        ctx.beginPath();\r\n        ctx.moveTo(hw, 0);\r\n        ctx.lineTo(hw, renderCanvas.canvasHeight);\r\n        ctx.stroke();\r\n        ctx.setLineDash(emptyDash);\r\n    }\r\n}\r\n\r\nexport interface RulerCanvasRenderer extends InteractiveCanvasRenderer {\r\n}\r\n","import {ObjectUtils} from \"./object.utils\";\r\nimport {RangeCoords} from \"../common-types\";\r\n\r\nexport const EPSILON = 1e-9;\r\n\r\n/**\r\n * Normalize a range\r\n * @param minOrRange\r\n * @param max\r\n */\r\nexport function normalizeRange(minOrRange: number | RangeCoords, max?: number): RangeCoords {\r\n    const min = (Array.isArray(minOrRange) ? minOrRange[0] : minOrRange) ?? 0;\r\n    max = (Array.isArray(minOrRange) ? minOrRange[1] : max) ?? 1;\r\n    return (max < min) ? [max, min] : [min, max];\r\n}\r\n\r\n/**\r\n * Clamps a value to a range\r\n * @param value\r\n * @param min\r\n * @param max\r\n */\r\nexport function clamp(value: number, min: number | RangeCoords, max?: number): number {\r\n    const range = normalizeRange(min, max);\r\n    return Math.max(Math.min(value, range[1]), range[0]);\r\n}\r\n\r\n/**\r\n * Clamps a value to a range in a way, that when it is over in one end, then it appears from the other end\r\n * @param value\r\n * @param min\r\n * @param max\r\n */\r\nexport function overflow(value: number, min: number | RangeCoords, max?: number) {\r\n    const range = normalizeRange(min, max);\r\n    const length = range[1] - range[0];\r\n    return ((((value - range[0]) % length) + length) % length) + range[0];\r\n}\r\n\r\n/**\r\n * Checks if a number is equal to b number with epsilon tolerance\r\n * @param a\r\n * @param b\r\n * @param epsilon\r\n */\r\nexport function isEqual(a: number, b: number, epsilon: number = null): boolean {\r\n    epsilon = ObjectUtils.isNumber(epsilon) ? epsilon : EPSILON;\r\n    return Math.abs(a - b) <= epsilon;\r\n}\r\n\r\n/**\r\n * Checks if a number is equal to zero with epsilon tolerance\r\n * @param a\r\n * @param epsilon\r\n */\r\nexport function isZero(a: number, epsilon: number = null): boolean {\r\n    return isEqual(a, 0, epsilon);\r\n}\r\n\r\nexport class MathUtils {\r\n\r\n    static equal(a: number, b: number, epsilon: number = null): boolean {\r\n        return isEqual(a, b, epsilon);\r\n    }\r\n\r\n    static clamp(value: number, min: number, max: number): number {\r\n        return clamp(value, min, max);\r\n    }\r\n\r\n    static round(value: number, precision: number = 2, divider: number = 1): number {\r\n        precision = Math.pow(10, precision);\r\n        return Math.round(value * precision / divider) / precision;\r\n    }\r\n\r\n    static approxIndex(x: number, values: number[], epsilon: number = null): number {\r\n        if (!Array.isArray(values) || values.length == 0) {\r\n            return -1;\r\n        }\r\n        let s = 0;\r\n        let e = values.length - 1;\r\n        while (s <= e) {\r\n            const i = Math.floor((s + e) / 2);\r\n            const v = values[i];\r\n            if (MathUtils.equal(v, x, epsilon)) {\r\n                return i;\r\n            }\r\n            if (v < x) {\r\n                s = i + 1;\r\n            } else {\r\n                e = i - 1;\r\n            }\r\n        }\r\n        const m = Math.max(e, 0);\r\n        const a = values[s];\r\n        const b = values[m];\r\n        return Math.abs(a - x) < Math.abs(b - x) ? s : m;\r\n    }\r\n\r\n    static approximate(x: number, values: number[], epsilon: number = null): number {\r\n        const index = MathUtils.approxIndex(x, values, epsilon);\r\n        return values[index] ?? null;\r\n    }\r\n}\r\n","import {IPoint} from \"../../common-types\";\r\nimport {isEqual} from \"../math.utils\";\r\n\r\nexport function dotProduct(a: IPoint, b: IPoint): number {\r\n    return a.x * b.x + a.y * b.y;\r\n}\r\n\r\nexport function tripleProduct(a: IPoint, b: IPoint, c: IPoint): IPoint {\r\n    const ac = a.x * c.x + a.y * c.y;\r\n    const bc = b.x * c.x + b.y * c.y;\r\n    return {x: b.x * ac - a.x * bc, y: b.y * ac - a.y * bc};\r\n}\r\n\r\nexport function isPoint(v: IPoint | number): v is IPoint {\r\n    return typeof v === \"object\" && Number.isFinite(v.x) && Number.isFinite(v.y);\r\n}\r\n\r\nexport function ensurePoint(p: IPoint, fallback: IPoint = {x: 0, y: 0}): IPoint {\r\n    return isPoint(p) ? {x: +p.x, y: +p.y} : fallback;\r\n}\r\n\r\nexport function perpendicular(p: IPoint): IPoint {\r\n    return {x: -p.y, y: +p.x};\r\n}\r\n\r\nexport function negatePt(p: IPoint): IPoint {\r\n    return {x: -p.x, y: -p.y};\r\n}\r\n\r\nexport function normalizePt(p: IPoint): IPoint {\r\n    const length = lengthOfPt(p);\r\n    return dividePts(p, length);\r\n}\r\n\r\nexport function addPts(a: IPoint, b: IPoint): IPoint {\r\n    return {x: a.x + b.x, y: a.y + b.y};\r\n}\r\n\r\nexport function distanceSq(a: IPoint, b: IPoint): number {\r\n    const x = b.x - a.x;\r\n    const y = b.y - a.y;\r\n    return x * x + y * y;\r\n}\r\n\r\nexport function distance(a: IPoint, b: IPoint): number {\r\n    return Math.sqrt(distanceSq(a, b));\r\n}\r\n\r\nexport function scalePt(p: IPoint, s: number): IPoint {\r\n    return {x: p.x * s, y: p.y * s};\r\n}\r\n\r\nexport function lerpPts(a: IPoint, b: IPoint, t: number): IPoint {\r\n    const diff = subPts(b, a);\r\n    return addPts(a, multiplyPts(diff, t));\r\n}\r\n\r\nexport function lengthSq(p: IPoint): number {\r\n    return p.x * p.x + p.y * p.y;\r\n}\r\n\r\nexport function lengthOfPt(p: IPoint): number {\r\n    return Math.hypot(p.x, p.y);\r\n}\r\n\r\nexport function multiplyPts(a: IPoint, b: IPoint | number): IPoint {\r\n    const s = isPoint(b) ? b : {x: b, y: b};\r\n    return {x: a.x * s.x, y: a.y * s.y};\r\n}\r\n\r\nexport function dividePts(a: IPoint, b: IPoint | number): IPoint {\r\n    const s = isPoint(b) ? b : {x: b, y: b};\r\n    return {x: a.x / s.x, y: a.y / s.y};\r\n}\r\n\r\nexport function subPts(a: IPoint, b: IPoint): IPoint {\r\n    return {x: a.x - b.x, y: a.y - b.y};\r\n}\r\n\r\nexport function eqPts(a: IPoint, b: IPoint): boolean {\r\n    return isEqual(a.x, b.x) && isEqual(a.y, b.y);\r\n}\r\n\r\nexport function rotateDeg(p: IPoint, ang: number): IPoint {\r\n    return rotateRad(p, toRadians(ang));\r\n}\r\n\r\nexport function rotateRad(p: IPoint, ang: number): IPoint {\r\n    const c = Math.cos(ang), s = Math.sin(ang);\r\n    return {x: p.x * c - p.y * s, y: p.x * s + p.y * c};\r\n}\r\n\r\nexport function toDegrees(rad: number): number {\r\n    return rad * 180 / Math.PI;\r\n}\r\n\r\nexport function toRadians(deg: number): number {\r\n    return deg * Math.PI / 180;\r\n}\r\n","import {IPoint, IShape, ShapeIntersection} from \"../../common-types\";\r\nimport {ensurePoint, negatePt, subPts, tripleProduct} from \"./functions\";\r\n\r\ninterface SimplexLine {\r\n    p: IPoint;\r\n    a: IPoint;\r\n    b: IPoint;\r\n}\r\n\r\ntype Simplex = SimplexLine[];\r\n\r\ninterface Dir {\r\n    x: number;\r\n    y: number;\r\n}\r\n\r\n// =========================\r\n// Boolean GJK (robust)\r\n// =========================\r\n\r\nexport function gjkIntersection(A: IShape, B: IShape, logs: boolean): ShapeIntersection {\r\n    const MAX = 64, EPS = 1e-12;\r\n    const sup = (dir: IPoint): SimplexLine => {\r\n        const a = ensurePoint(A.support(dir, logs), A.center);\r\n        const b = ensurePoint(B.support(negatePt(dir), logs), B.center);\r\n        return {p: subPts(a, b), a, b};\r\n    };\r\n    // initial direction: center-to-center; fall back to x-axis\r\n    let d = subPts(B.center, A.center);\r\n    if (Math.abs(d.x) < EPS && Math.abs(d.y) < EPS) d = {x: 1, y: 0};\r\n\r\n    const simplex: Simplex = [sup(d)];\r\n    d = {x: -simplex[0].p.x, y: -simplex[0].p.y};\r\n\r\n    for (let i = 0; i < MAX; i++) {\r\n        // If direction collapses, steer toward origin from last point\r\n        const dLen = Math.hypot(d.x, d.y);\r\n        if (dLen <= EPS) {\r\n            const last = simplex[simplex.length - 1];\r\n            const AO = {x: -last.p.x, y: -last.p.y};\r\n            const aoLen = Math.hypot(AO.x, AO.y);\r\n            d = (aoLen > EPS) ? AO : {x: 1, y: 0};\r\n        }\r\n\r\n        const a = sup(d);\r\n        const s = a.p.x * d.x + a.p.y * d.y;\r\n        if (s < -1e-12) return {hit: false}; // definite separation\r\n        if (Math.abs(s) <= 1e-12) { // tangential contact: use normal ±d\r\n            const L = Math.hypot(d.x, d.y) || 1;\r\n            const n = {x: d.x / L, y: d.y / L};\r\n            const pa = ensurePoint(A.support(n), A.center);\r\n            const pb = ensurePoint(B.support(negatePt(n)), B.center);\r\n            const point = {x: (pa.x + pb.x) / 2, y: (pa.y + pb.y) / 2};\r\n            return {hit: true, pa, pb, point};\r\n        }\r\n\r\n        simplex.push(a);\r\n        {\r\n            const info = doSimplexBoolean(simplex, d);\r\n            if (info.hit) return info;\r\n        }\r\n    }\r\n    // Max iterations without resolution → disjoint\r\n    return {hit: false};\r\n}\r\n\r\nfunction doSimplexBoolean(simplex: Simplex, d: Dir): ShapeIntersection {\r\n    const last = simplex[simplex.length - 1];\r\n    const AO = {x: -last.p.x, y: -last.p.y};\r\n\r\n    if (simplex.length === 2) {\r\n        const B = simplex[0];\r\n        const AB = {x: B.p.x - last.p.x, y: B.p.y - last.p.y};\r\n        // Perpendicular to AB toward origin\r\n        const abPerp = tripleProduct(AB, AO, AB);\r\n        const perpLen2 = abPerp.x * abPerp.x + abPerp.y * abPerp.y;\r\n\r\n        if (perpLen2 < 1e-24) {\r\n            // Colinear: project origin onto segment AB\r\n            const ab2 = AB.x * AB.x + AB.y * AB.y;\r\n            if (ab2 > 0) {\r\n                const t = ((AO.x * AB.x + AO.y * AB.y) / ab2);\r\n                if (t >= 0 && t <= 1) {\r\n                    // Contact at segment\r\n                    const pa = {x: last.a.x + t * (B.a.x - last.a.x), y: last.a.y + t * (B.a.y - last.a.y)};\r\n                    const pb = {x: last.b.x + t * (B.b.x - last.b.x), y: last.b.y + t * (B.b.y - last.b.y)};\r\n                    const point = {x: (pa.x + pb.x) / 2, y: (pa.y + pb.y) / 2};\r\n                    return {hit: true, pa, pb, point};\r\n                }\r\n            }\r\n            // Otherwise, move toward origin from A, keep only last point to progress\r\n            d.x = -AO.x;\r\n            d.y = -AO.y;\r\n            simplex.splice(0, simplex.length - 1);\r\n            return {hit: false};\r\n        }\r\n        d.x = abPerp.x;\r\n        d.y = abPerp.y;\r\n        return {hit: false};\r\n    }\r\n\r\n    // Triangle case: [C, B, A] with A = last\r\n    const A = last, B = simplex[simplex.length - 2], C = simplex[simplex.length - 3];\r\n    const AB = {x: B.p.x - A.p.x, y: B.p.y - A.p.y};\r\n    const AC = {x: C.p.x - A.p.x, y: C.p.y - A.p.y};\r\n    const perpAB = tripleProduct(AC, AB, AB);\r\n    const perpAC = tripleProduct(AB, AC, AC);\r\n\r\n    // If origin is outside AB region\r\n    if (perpAB.x * AO.x + perpAB.y * AO.y > 0) {\r\n        simplex.splice(simplex.length - 3, 1);\r\n        d.x = perpAB.x;\r\n        d.y = perpAB.y;\r\n        return {hit: false};\r\n    }\r\n    // If origin is outside AC region\r\n    if (perpAC.x * AO.x + perpAC.y * AO.y > 0) {\r\n        simplex.splice(simplex.length - 2, 1);\r\n        d.x = perpAC.x;\r\n        d.y = perpAC.y;\r\n        return {hit: false};\r\n    }\r\n    // Otherwise the origin is inside the triangle → overlap\r\n    // Compute barycentric weights of origin w.r.t triangle (A,B,C)\r\n    const v0 = AB; // B-A\r\n    const v1 = AC; // C-A\r\n    const b = {x: -A.p.x, y: -A.p.y};\r\n    const det = v0.x * v1.y - v0.y * v1.x;\r\n    let uA: number, uB: number, uC: number;\r\n    if (Math.abs(det) > 1e-24) {\r\n        const alpha = (b.x * v1.y - v1.x * b.y) / det; // weight for v0 (B)\r\n        const beta = (v0.x * b.y - b.x * v0.y) / det; // weight for v1 (C)\r\n        uB = alpha;\r\n        uC = beta;\r\n        uA = 1 - alpha - beta;\r\n    } else {\r\n        // Fallback: equal weights\r\n        uA = uB = uC = 1 / 3;\r\n    }\r\n    const pa = {\r\n        x: uA * A.a.x + uB * B.a.x + uC * C.a.x,\r\n        y: uA * A.a.y + uB * B.a.y + uC * C.a.y\r\n    };\r\n    const pb = {\r\n        x: uA * A.b.x + uB * B.b.x + uC * C.b.x,\r\n        y: uA * A.b.y + uB * B.b.y + uC * C.b.y\r\n    };\r\n    const point = {x: (pa.x + pb.x) / 2, y: (pa.y + pb.y) / 2};\r\n    return {hit: true, pa, pb, point};\r\n}\r\n","import {IPoint, IShape, ShapeIntersection} from \"../../common-types\";\r\nimport {gjkIntersection} from \"./gjk\";\r\nimport {\r\n    addPts,\r\n    distance,\r\n    dotProduct,\r\n    ensurePoint,\r\n    isPoint,\r\n    lengthOfPt,\r\n    multiplyPts,\r\n    perpendicular,\r\n    rotateDeg,\r\n    subPts\r\n} from \"./functions\";\r\n\r\nabstract class Shape implements IShape {\r\n\r\n    get center(): IPoint {\r\n        return this.pt;\r\n    }\r\n\r\n    get x(): number {\r\n        return this.center.x;\r\n    }\r\n\r\n    get y(): number {\r\n        return this.center.y;\r\n    }\r\n\r\n    protected pt: IPoint;\r\n\r\n    protected constructor(x: number, y: number) {\r\n        this.pt = {x, y};\r\n    }\r\n\r\n    abstract getPath(x: number, y: number, ratio?: number): Path2D;\r\n\r\n    abstract support(dir: IPoint): IPoint;\r\n\r\n    abstract expand(value: number): IShape;\r\n\r\n    abstract move(pos: IPoint): IShape;\r\n\r\n    intersection(shape: IShape, logs: boolean): ShapeIntersection {\r\n        return gjkIntersection(this, shape, logs);\r\n    }\r\n\r\n    intersects(shape: IShape, logs: boolean): boolean {\r\n        return this.intersection(shape, logs).hit;\r\n    }\r\n\r\n    distance(shape: IShape): number {\r\n        return distance(this.center, shape.center);\r\n    }\r\n}\r\n\r\nexport class Point extends Shape {\r\n\r\n    static Zero: Point = new Point(0, 0);\r\n\r\n    get length(): number {\r\n        return lengthOfPt(this);\r\n    }\r\n\r\n    get perpendicular(): Point {\r\n        return new Point(perpendicular(this));\r\n    }\r\n\r\n    constructor(xOrP: number | IPoint, y: number = 0) {\r\n        super(0, y);\r\n        const x = Number(xOrP);\r\n        this.pt = isPoint(xOrP) ? xOrP : {x: isNaN(x) ? 0 : xOrP as number, y};\r\n    }\r\n\r\n    getPath(x: number, y: number): Path2D {\r\n        const path = new Path2D();\r\n        path.ellipse(x, y, 1.5, 1.5, 0, 0, Math.PI * 2);\r\n        return path;\r\n    }\r\n\r\n    support(): IPoint {\r\n        return this.center;\r\n    }\r\n\r\n    expand(): IShape {\r\n        return this;\r\n    }\r\n\r\n    move(pos: IPoint): IShape {\r\n        return new Point(pos);\r\n    }\r\n\r\n    add(p: IPoint): Point {\r\n        return new Point(addPts(this, p));\r\n    }\r\n\r\n    subtract(p: IPoint): Point {\r\n        return new Point(subPts(this, p));\r\n    }\r\n\r\n    multiply(p: IPoint | number): Point {\r\n        return new Point(multiplyPts(this, p));\r\n    }\r\n\r\n    divide(p: IPoint | number): Point {\r\n        return new Point(multiplyPts(this, p));\r\n    }\r\n\r\n    dot(p: IPoint): Point {\r\n        return new Point(dotProduct(this, p));\r\n    }\r\n\r\n    lerp(p: Point, ratio: number): Point {\r\n        const diff = p.subtract(this);\r\n        return this.add(diff.multiply(ratio));\r\n    }\r\n\r\n    perpendicularTo(p: Point, length: number): Point {\r\n        const diff = p.perpendicular.subtract(this.perpendicular);\r\n        const ratio = length / diff.length;\r\n        const center = this.lerp(p, .5);\r\n        return center.add(diff.multiply(ratio));\r\n    }\r\n\r\n    circleWith(a: Point, b: Point): Circle {\r\n        const yDelta_a = b.y - a.y;\r\n        const xDelta_a = b.x - a.x;\r\n        const yDelta_b = this.y - b.y;\r\n        const xDelta_b = this.x - b.x;\r\n\r\n        const aSlope = yDelta_a / xDelta_a;\r\n        const bSlope = yDelta_b / xDelta_b;\r\n\r\n        const x = (aSlope * bSlope * (a.y - this.y) + bSlope * (a.x + b.x) - aSlope * (b.x + this.x)) / (2 * (bSlope - aSlope));\r\n        const y = -1 * (x - (a.x + b.x) / 2) / aSlope + (a.y + b.y) / 2;\r\n        const center = new Point(x, y);\r\n        return new Circle(center.x, center.y, center.distance(this));\r\n    }\r\n\r\n    tangents(c: Circle): Point[] {\r\n        const pd = subPts(c.center, this);\r\n        const a = Math.asin(c.radius / lengthOfPt(pd));\r\n        const b = Math.atan2(pd.y, pd.x);\r\n        // Tangent points\r\n        let t = b - a;\r\n        const t1 = new Point(c.x + c.radius * Math.sin(t), c.y + c.radius * -Math.cos(t));\r\n        t = b + a;\r\n        const t2 = new Point(c.x + c.radius * -Math.sin(t), c.y + c.radius * Math.cos(t));\r\n        return [t1, t2];\r\n    }\r\n\r\n    angle(p: Point): number {\r\n        const diff = p.subtract(this);\r\n        return Math.atan2(diff.y, diff.x) * 180 / Math.PI;\r\n    }\r\n\r\n    rotateAround(p: Point, angle: number): Point {\r\n        const rotation = (p.angle(this) + angle) * Math.PI / 180;\r\n        const distance = p.distance(this);\r\n        const rotated = new Point(Math.cos(rotation) * distance, Math.sin(rotation) * distance);\r\n        return p.add(rotated);\r\n    }\r\n}\r\n\r\nexport class Rect extends Shape {\r\n\r\n    constructor(x: number, y: number,\r\n                readonly width: number,\r\n                readonly height: number,\r\n                readonly rotation: number = 0,\r\n                readonly radius: number = 0) {\r\n        super(x, y);\r\n    }\r\n\r\n    getPath(x: number, y: number, ratio?: number): Path2D {\r\n        ratio = ratio ?? 1;\r\n        const w = this.width * ratio;\r\n        const h = this.height * ratio;\r\n        const r = this.radius * ratio;\r\n\r\n        // 1. Create the local path for the rectangle (centered at 0,0)\r\n        const rectPath = new Path2D();\r\n        rectPath.roundRect(-w / 2, -h / 2, w, h, r);\r\n\r\n        // 2. Create a DOMMatrix to handle the rotation\r\n        const matrix = new DOMMatrix()\r\n            .translate(x, y) // Move to position\r\n            .rotate(this.rotation); // Apply rotation (in degrees)\r\n\r\n        // 3. Create the final path and apply the matrix\r\n        const finalPath = new Path2D();\r\n        finalPath.addPath(rectPath, matrix);\r\n\r\n        return finalPath;\r\n    }\r\n\r\n    support(dir: IPoint, logs?: boolean): IPoint {\r\n        const ang = this.rotation ?? 0;\r\n\r\n        // 1. Move search direction into local space\r\n        const dLocal = rotateDeg(ensurePoint(dir, {x: 1, y: 0}), -ang);\r\n\r\n        // 2. Use the SHARP dimensions for the base calculation\r\n        // We subtract the radius here because the 'roundRect' expansion\r\n        // happens outward from the inner core.\r\n        const hw = Math.max(0, this.width / 2 - this.radius);\r\n        const hh = Math.max(0, this.height / 2 - this.radius);\r\n\r\n        // 3. Find the local corner of that inner core\r\n        const lx = dLocal.x >= 0 ? hw : -hw;\r\n        const ly = dLocal.y >= 0 ? hh : -hh;\r\n\r\n        // 4. Rotate that core corner back to world space\r\n        const corePoint = addPts(rotateDeg({x: lx, y: ly}, ang), this.pt);\r\n\r\n        // 5. Add the \"Radial Expansion\"\r\n        // This turns the sharp corner into a circular arc for GJK\r\n        const mag = Math.hypot(dir.x, dir.y);\r\n        if (mag < 1e-9 || this.radius <= 0) return corePoint;\r\n\r\n        return {\r\n            x: corePoint.x + (dir.x / mag) * this.radius,\r\n            y: corePoint.y + (dir.y / mag) * this.radius\r\n        };\r\n    }\r\n\r\n    expand(value: number): Rect {\r\n        value = Math.abs(value ?? 0);\r\n        return new Rect(this.x, this.y, this.width + value * 2, this.height + value * 2, this.rotation, this.radius + value);\r\n    }\r\n\r\n    move(pos: IPoint): Rect {\r\n        return new Rect(pos.x, pos.y, this.width, this.height, this.rotation, this.radius);\r\n    }\r\n}\r\n\r\nexport class Oval extends Shape {\r\n\r\n    constructor(x: number, y: number,\r\n                readonly width: number,\r\n                readonly height: number,\r\n                readonly rotation: number = 0) {\r\n        super(x, y);\r\n    }\r\n\r\n    getPath(x: number, y: number, ratio: number = 1): Path2D {\r\n        // 1. Calculate radii based on ratio\r\n        const radiusX = (this.width * ratio) / 2;\r\n        const radiusY = (this.height * ratio) / 2;\r\n\r\n        // 2. Create the local ellipse at (0,0)\r\n        const ovalPath = new Path2D();\r\n        // Parameters: x, y, radiusX, radiusY, rotation, startAngle, endAngle\r\n        ovalPath.ellipse(0, 0, radiusX, radiusY, 0, 0, Math.PI * 2);\r\n        ovalPath.closePath();\r\n\r\n        // 3. Create the transformation matrix\r\n        // Note: We use the passed in x and y here\r\n        const matrix = new DOMMatrix()\r\n            .translate(x, y)\r\n            .rotate(this.rotation);\r\n\r\n        // 4. Combine them\r\n        const path = new Path2D();\r\n        path.addPath(ovalPath, matrix);\r\n\r\n        return path;\r\n    }\r\n\r\n    support(dir: IPoint) {\r\n        const ang = this.rotation ?? 0;\r\n        // 1. Move search direction into local, non-rotated space\r\n        const dLocal = rotateDeg(ensurePoint(dir, { x: 1, y: 0 }), -ang);\r\n\r\n        const hw = this.width / 2;\r\n        const hh = this.height / 2;\r\n\r\n        // 2. High-precision ellipse support formula\r\n        // This finds the EXACT point on the curved boundary\r\n        const q = Math.hypot(hw * dLocal.x, hh * dLocal.y) || 1;\r\n        const lx = (hw * hw * dLocal.x) / q;\r\n        const ly = (hh * hh * dLocal.y) / q;\r\n\r\n        // 3. Rotate back and add this shape's position\r\n        return addPts(rotateDeg({ x: lx, y: ly }, ang), this.pt);\r\n    }\r\n\r\n    expand(value: number): Oval {\r\n        value = Math.abs(value ?? 0);\r\n        return new Oval(this.x, this.y, this.width + value * 2, this.height + value * 2, this.rotation);\r\n    }\r\n\r\n    move(pos: IPoint): Oval {\r\n        return new Oval(pos.x, pos.y, this.width, this.height, this.rotation);\r\n    }\r\n}\r\n\r\nexport class Circle extends Oval {\r\n    constructor(x: number, y: number, readonly radius: number, rotation: number = 0) {\r\n        super(x, y, radius * 2, radius * 2, rotation);\r\n    }\r\n\r\n    expand(value: number): Circle {\r\n        value = Math.abs(value ?? 0);\r\n        return new Circle(this.x, this.y, this.radius + value, this.rotation);\r\n    }\r\n\r\n    move(pos: IPoint): Circle {\r\n        return new Circle(pos.x, pos.y, this.radius, this.rotation);\r\n    }\r\n}\r\n\r\nexport class ShapeGroup extends Shape {\r\n\r\n    constructor(x: number, y: number, protected readonly subShapes: ReadonlyArray<IShape>) {\r\n        super(x, y);\r\n    }\r\n\r\n    getPath(x: number, y: number, ratio: number = 1): Path2D {\r\n        const groupPath = new Path2D();\r\n\r\n        for (const shape of this.subShapes) {\r\n            // Calculate child's position relative to the Group's (x, y)\r\n            const childPath = shape.getPath(x + shape.x, y + shape.y, ratio);\r\n\r\n            // Add it to our master group path\r\n            groupPath.addPath(childPath);\r\n        }\r\n\r\n        return groupPath;\r\n    }\r\n\r\n    support(dir: IPoint): IPoint {\r\n        let bestPoint: IPoint | null = null;\r\n        let maxDot = -Infinity;\r\n\r\n        for (const shape of this.subShapes) {\r\n            // 1. Get child's support (Relative to this Group's origin)\r\n            const p = shape.support(dir);\r\n\r\n            // 2. Move that point into the space ABOVE this group\r\n            const worldPoint = addPts(p, this.pt);\r\n\r\n            // 3. We must compare dot products in a consistent space\r\n            const d = worldPoint.x * dir.x + worldPoint.y * dir.y;\r\n\r\n            if (d > maxDot) {\r\n                maxDot = d;\r\n                bestPoint = worldPoint;\r\n            }\r\n        }\r\n\r\n        return bestPoint ?? this.pt;\r\n    }\r\n\r\n    expand(value: number): IShape {\r\n        value = Math.abs(value ?? 0);\r\n        return new ShapeGroup(this.x, this.y, this.subShapes.map(s => s.expand(value)));\r\n    }\r\n\r\n    move(pos: IPoint): IShape {\r\n        return new ShapeGroup(pos.x, pos.y, this.subShapes);\r\n    }\r\n}\r\n","import {Invokable} from \"invokable\";\n\nexport class Initializer<T> {\n\n    private initialized: boolean;\n\n    get isInitialized(): boolean {\n        return this.initialized;\n    }\n\n    constructor(private callback: () => T, private shouldInit: boolean = true) {\n        this.initialized = !this.shouldInit;\n        // @ts-ignore\n        return Invokable.create(this);\n    }\n\n    [Invokable.call](): T {\n        if (this.initialized) return null;\n        this.initialized = true;\n        return this.callback();\n    }\n}\n\nexport interface Initializer<T> {\n    (): T;\n}\n","import {ScriptType, ILoaderPromises, ILoadableElement} from \"../common-types\";\r\n\r\nexport class LoaderUtils {\r\n\r\n    private static promises: ILoaderPromises<ILoadableElement> = {};\r\n\r\n    static loadScript(src: string, async: boolean = false, type: ScriptType = \"text/javascript\", parent?: Node, time: boolean | string = true) {\r\n        return LoaderUtils.loadElement(src, parent, () => {\r\n            const script = document.createElement(\"script\");\r\n            script.type = type;\r\n            script.src = LoaderUtils.updateSrc(src, time);\r\n            script.async = async;\r\n            return script;\r\n        });\r\n    }\r\n\r\n    static loadStyle(src: string, parent?: Node, time: boolean | string = true) {\r\n        return LoaderUtils.loadElement(src, parent, () => {\r\n            const link = document.createElement(\"link\");\r\n            link.rel = \"stylesheet\";\r\n            link.type = \"text/css\";\r\n            link.href = LoaderUtils.updateSrc(src, time);\r\n            return link;\r\n        });\r\n    }\r\n\r\n    private static updateSrc(src: string, time: boolean | string) {\r\n        if (src.startsWith(\"data:\") || !time) {\r\n            return src;\r\n        }\r\n        const url = new URL(src);\r\n        url.searchParams.set(\"time\", typeof time === \"string\" ? time : String(Date.now()));\r\n        return url.toString();\r\n    }\r\n\r\n    private static loadElement<T extends ILoadableElement>(src: string, parent: Node, setup: () => T): Promise<T> {\r\n        const promises = LoaderUtils.promises as ILoaderPromises<T>;\r\n        parent = parent || document;\r\n        if (parent == document) {\r\n            parent = document.body;\r\n        }\r\n        let {elem, promise} = promises[src] || {};\r\n        if (elem) {\r\n            if (parent === elem.parentElement) return promise;\r\n            if (elem.parentElement) {\r\n                elem.remove();\r\n            }\r\n        }\r\n        elem = setup();\r\n        promise = new Promise<T>((resolve, reject) => {\r\n            if (elem.readyState) {\r\n                // Internet explorer\r\n                elem.onreadystatechange = () => {\r\n                    if (elem.readyState === \"loaded\" || elem.readyState === \"complete\") {\r\n                        elem.onreadystatechange = null;\r\n                        resolve(elem);\r\n                    }\r\n                };\r\n            } else {\r\n                // Other browsers\r\n                elem.onload = () => resolve(elem);\r\n            }\r\n            elem.onerror = (error: any) => reject(error);\r\n        });\r\n        parent.appendChild(elem);\r\n        promises[src] = {elem, promise};\r\n        return promise;\r\n    }\r\n}\r\n","import {inject, Injector, Provider, Type, ValueProvider, ɵComponentDef as ComponentDef} from \"@angular/core\";\r\nimport {CssSelector, CssSelectorList, TypedFactoryProvider, TypedValueProvider} from \"../common-types\";\r\nimport {DYNAMIC_ENTRY_COMPONENTS, OPTIONS_TOKEN} from \"../tokens\";\r\n\r\nexport function isBrowser(): boolean {\r\n    return typeof window !== \"undefined\";\r\n}\r\n\r\n/**\r\n * Returns an elements root\r\n * @param {HTMLElement} elem The element which root we need\r\n * @return {DocumentOrShadowRoot} The document or the elements shadow root\r\n */\r\nexport function getRoot(elem: HTMLElement): DocumentOrShadowRoot {\r\n    if (!isBrowser()) return null;\r\n    const root: ShadowRoot = elem?.getRootNode() as any;\r\n    return root || document;\r\n}\r\n\r\nexport function switchClass(elem: HTMLElement, className: string, status?: boolean): void {\r\n    if (!elem?.classList) return;\r\n    status = status ?? !elem.classList.contains(className);\r\n    if (status) {\r\n        elem.classList.add(className);\r\n        return;\r\n    }\r\n    elem.classList.remove(className);\r\n}\r\n\r\nexport function getCssVariables(elem: HTMLElement): Record<string, string> {\r\n    if (\"computedStyleMap\" in elem) {\r\n        const styles = Array.from(elem.computedStyleMap() as any) as [string, string][];\r\n        return styles.reduce((res, [prop, val]) => {\r\n            if (prop.startsWith(\"--\")) {\r\n                res[prop] = val.toString();\r\n            }\r\n            return res;\r\n        }, {} as Record<string, string>);\r\n    }\r\n    const res = {} as Record<string, string>;\r\n    const styles = getComputedStyle(elem);\r\n    for (let i = 0; i < styles.length; i++) {\r\n        const propertyName = styles[i];\r\n        if (propertyName.startsWith(\"--\")) {\r\n            res[propertyName] = styles.getPropertyValue(propertyName);\r\n        }\r\n    }\r\n    return res;\r\n}\r\n\r\nexport function checkTransitions(el: HTMLElement, cb: () => any): void {\r\n    let hasTransitions = false;\r\n    let called = false;\r\n    const end = () => {\r\n        if (called) return;\r\n        called = true;\r\n        cb();\r\n    };\r\n    el.onanimationstart = () => hasTransitions = true;\r\n    el.ontransitionstart = () => hasTransitions = true;\r\n    el.onanimationend = end;\r\n    el.ontransitionend = end;\r\n    setTimeout(() => {\r\n        if (hasTransitions) return;\r\n        end();\r\n    }, 100);\r\n}\r\n\r\nexport function getComponentDef<T>(type: Type<T>): ComponentDef<T> {\r\n    const def = type[\"ɵcmp\"] as ComponentDef<T>;\r\n    if (!def) {\r\n        throw new Error(`No Angular definition found for ${type.name}`);\r\n    }\r\n    return def;\r\n}\r\n\r\n// Helper function to match a search selector to a stored selector\r\nexport function parseSelector(selector: string | CssSelector): CssSelector {\r\n    if (Array.isArray(selector)) {\r\n        if (selector.length !== 1 && selector.length !== 3) {\r\n            throw new Error(\"CSSSelector should contain 1 or 3 parts!\");\r\n        }\r\n        if (selector.some(t => typeof t !== \"string\")) {\r\n            throw new Error(\"CSSSelector parts can only be strings\");\r\n        }\r\n        return selector;\r\n    }\r\n    if (selector.indexOf(\"#\") > 0) {\r\n        const parts = selector.split(\"#\");\r\n        selector = `${parts[0]}[id=${parts[1]}]`;\r\n    }\r\n    if (selector.indexOf(\".\") > 0) {\r\n        const parts = selector.split(\".\");\r\n        selector = `${parts[0]}[class=${parts[1]}]`;\r\n    }\r\n    const start = selector.indexOf(\"[\");\r\n    const end = Math.max(selector.indexOf(\"]\"), Math.min(selector.length, start + 1));\r\n    if (start >= 0) {\r\n        const parts = selector.substring(start + 1, end).split(\"=\");\r\n        return [\r\n            selector.substring(0, start),\r\n            parts[0],\r\n            parts[1] || \"\"\r\n        ]\r\n    }\r\n    return [selector];\r\n}\r\n\r\nexport function selectorMatchesList(list: CssSelectorList, selector: CssSelector) {\r\n    for (const item of list) {\r\n        if (selector.length === item.length && selector.every((s, i) => s === item[i])) {\r\n            return true;\r\n        }\r\n    }\r\n    return false;\r\n}\r\n\r\nexport function provideEntryComponents(components: Type<any>[], moduleId?: string): ValueProvider {\r\n    return {\r\n        provide: DYNAMIC_ENTRY_COMPONENTS,\r\n        useValue: {\r\n            components,\r\n            moduleId\r\n        },\r\n        multi: true\r\n    };\r\n}\r\n\r\nexport function provideOptions<O extends Record<string, any>>(options: O): Required<TypedValueProvider<O>> {\r\n    return {\r\n        provide: OPTIONS_TOKEN,\r\n        useValue: options\r\n    };\r\n}\r\n\r\nexport function provideWithOptions<O extends Record<string, any>, T = any>(type: Type<T>, options: O): TypedFactoryProvider<T> {\r\n    return {\r\n        useFactory: function (parent: Injector) {\r\n            const providers: Provider[] = [\r\n                provideOptions(options),\r\n                {\r\n                    provide: type,\r\n                    useClass: type\r\n                }\r\n            ];\r\n            return Injector.create({\r\n                providers,\r\n                parent\r\n            }).get(type, null, {optional: true});\r\n        },\r\n        deps: [Injector]\r\n    }\r\n}\r\n\r\nexport function injectOptions<O extends Record<string, any>>(defaults: O): O {\r\n    const options = inject(OPTIONS_TOKEN, {optional: true}) as O;\r\n    return Object.assign({}, defaults, options || {});\r\n}\r\n\r\nexport interface DiffEntityResult<T extends { id?: string | number }> {\r\n    removed: T[];\r\n    added: T[];\r\n    updated: T[];\r\n}\r\n\r\n/**\r\n * Compares two arrays of entities and categorizes them into\r\n * added, removed, and updated buckets.\r\n */\r\nexport function diffEntities<T extends { id?: string | number }>(current: T[], incoming: T[]): DiffEntityResult<T> {\r\n    const currentMap = new Map(current.map(item => [item.id, item]));\r\n    const incomingIds = new Set(incoming.map(item => item.id).filter(Boolean));\r\n\r\n    return {\r\n        // 1. Removed: Was in current, but ID is missing from incoming\r\n        removed: current.filter(item => !incomingIds.has(item.id) && item.id),\r\n\r\n        // 2. Added: ID is missing entirely (new record)\r\n        added: incoming.filter(item => !item.id),\r\n\r\n        // 3. Updated: ID exists in both lists\r\n        updated: incoming.filter(item => item.id && currentMap.has(item.id))\r\n    };\r\n}\r\n","import {ITimer} from \"../common-types\";\r\nimport {ObjectUtils} from \"./object.utils\";\r\n\r\ntype TimerFunc = (timer: ITimer) => void;\r\n\r\nexport class TimerUtils {\r\n\r\n    static createTimeout(func?: Function, time?: number): ITimer {\r\n        // @dynamic\r\n        const run = (timer: ITimer) => {\r\n            timer.clear();\r\n            // If the time is zero or less, we run the function immediately because setTimeout puts it into the next \"frame\"\r\n            if (timer.time <= 0) {\r\n                timer.func();\r\n                return;\r\n            }\r\n            timer.id = setTimeout(() => {\r\n                timer.id = null;\r\n                timer.func();\r\n            }, timer.time);\r\n        };\r\n        // @dynamic\r\n        const clear = (timer: ITimer) => {\r\n            if (!timer.id) return;\r\n            clearTimeout(timer.id);\r\n            timer.id = null;\r\n        };\r\n        return TimerUtils.createTimer(run, clear, func, time);\r\n    }\r\n\r\n    static createInterval(func?: Function, time?: number): ITimer {\r\n        // @dynamic\r\n        const run = (timer: ITimer) => {\r\n            timer.clear();\r\n            timer.id = setInterval(timer.func, Math.max(timer.time, 5));\r\n        };\r\n        // @dynamic\r\n        const clear = (timer: ITimer) => {\r\n            if (!timer.id) return;\r\n            clearInterval(timer.id);\r\n            timer.id = null;\r\n        };\r\n        return TimerUtils.createTimer(run, clear, func, time);\r\n    }\r\n\r\n    private static createTimer(run: TimerFunc, clear: TimerFunc, func: Function, time: number): ITimer {\r\n        const timer: ITimer = {};\r\n        const setParams = (func: Function, time: number) => {\r\n            timer.func = !ObjectUtils.isFunction(func) ? (() => {}) : func;\r\n            timer.time = !ObjectUtils.isNumber(time) ? 100 : time;\r\n        };\r\n        timer.run = () => run(timer);\r\n        timer.clear = () => clear(timer);\r\n        timer.set = (func: Function, time: number) => {\r\n            setParams(func, time);\r\n            timer.run();\r\n        };\r\n        setParams(func, time);\r\n        return timer;\r\n    }\r\n}\r\n","import {from, Observable, Subject, Subscription} from \"rxjs\";\r\nimport {mergeMap} from \"rxjs/operators\";\r\n\r\nimport {ISearchObservable} from \"../common-types\";\r\nimport {TimerUtils} from \"./timer.utils\";\r\n\r\nexport interface ISubscriberInfo {\r\n    subjects: Observable<any>[];\r\n    cb: (ev?: Observable<any>, ...args: any[]) => any;\r\n    timeout?: number;\r\n}\r\n\r\nexport class ObservableUtils {\r\n\r\n    static toSearch(search: ISearchObservable): Observable<any> {\r\n        return mergeMap(\r\n            // @dynamic\r\n            (token: string) => search.getSearchResults(token)\r\n        )(\r\n            Observable.create(\r\n                // @dynamic\r\n                (observer: any) => {\r\n                    observer.next(search.search);\r\n                }\r\n            )\r\n        );\r\n    }\r\n\r\n    static multiSubscription(...subscriptions: Subscription[]): Subscription {\r\n        // @dynamic\r\n        const lambda = () => {\r\n            subscriptions.forEach(s => {\r\n                s?.unsubscribe();\r\n            });\r\n        };\r\n        return new Subscription(lambda);\r\n    }\r\n\r\n    static subscribe(...subscribers: ISubscriberInfo[]): Subscription {\r\n        const subscriptions: Subscription[] = [];\r\n        subscribers.forEach(info => {\r\n            let alreadyCalled = false;\r\n            const timer = TimerUtils.createTimeout();\r\n            info.subjects.forEach(subject => {\r\n                const ss = subject.subscribe((value) => {\r\n                    alreadyCalled = true;\r\n                    timer.set(() => {\r\n                        info.cb(subject, value);\r\n                    }, info.timeout ?? 0);\r\n                });\r\n                subscriptions.push(ss);\r\n            });\r\n            if (alreadyCalled) return;\r\n            info.cb();\r\n        });\r\n        return ObservableUtils.multiSubscription(...subscriptions);\r\n    }\r\n\r\n    static fromFunction(callbackFunc: () => any): Observable<any> {\r\n        let subject: any;\r\n        return new Observable<any>((subscriber) => {\r\n            if (!subject) {\r\n                subject = new Subject();\r\n                try {\r\n                    subject = from(callbackFunc());\r\n                } catch (err) {\r\n                    subject.error(err);\r\n                }\r\n            }\r\n            return subject.subscribe(subscriber);\r\n        });\r\n    }\r\n}\r\n","export interface CancelablePromise<T> extends Promise<T> {\n    cancel: () => void;\n}\n\nexport function cancelablePromise<T>(source: Promise<T>): CancelablePromise<T> {\n    let isCanceled = false;\n    const cancelable = new Promise<T>((resolve, reject) => {\n        source.then(res => {\n            if (isCanceled) return;\n            resolve(res);\n        }).catch(reject);\n    }) as CancelablePromise<T>;\n    cancelable.cancel = () => {\n        isCanceled = true;\n    };\n    return cancelable;\n}\n\nexport function impatientPromise<T>(factory: () => Promise<T>): () => Promise<T> {\n    let lastPromise: CancelablePromise<T> = null;\n    return () => {\n        lastPromise?.cancel();\n        lastPromise = cancelablePromise(factory());\n        return lastPromise\n    };\n}\n","export function svgToDataUri(svgString: string) {\r\n    // Encode as UTF-8, then to Base64\r\n    const utf8Bytes = new TextEncoder().encode(svgString);\r\n    let binary = \"\";\r\n    for (let i = 0; i < utf8Bytes.length; i++) {\r\n        binary += String.fromCharCode(utf8Bytes[i]);\r\n    }\r\n    const base64 = btoa(binary);\r\n\r\n    return `data:image/svg+xml;base64,${base64}`;\r\n}\r\n\r\nexport class StringUtils {\r\n\r\n    static concat(separator: string, ...strings: string[]): string {\r\n        return strings.filter(\r\n            // @dynamic\r\n            str => !!str\r\n        ).join(separator);\r\n    }\r\n\r\n    static startsWith(str: string, ...starts: string[]): boolean {\r\n        if (typeof str !== \"string\") return false;\r\n        for (let i = 0; i < starts.length; i++) {\r\n            if (str.startsWith(starts[i])) return true;\r\n        }\r\n        return false;\r\n    }\r\n\r\n    static has(str: string, ...parts: string[]): boolean {\r\n        if (typeof str !== \"string\") return false;\r\n        for (let i = 0; i < parts.length; i++) {\r\n            if (str.indexOf(parts[i]) >= 0) return true;\r\n        }\r\n        return false;\r\n    }\r\n\r\n    static lcFirst(str: string): string {\r\n        return typeof str === \"string\" ? str.charAt(0).toLowerCase() + str.substring(1) : \"\";\r\n    }\r\n\r\n    static ucFirst(str: string): string {\r\n        return typeof str === \"string\" ? str.charAt(0).toUpperCase() + str.substring(1) : \"\";\r\n    }\r\n\r\n    static camelize(str: string): string {\r\n        return StringUtils.ucFirst(str)\r\n            .replace(/[-.]([a-z])/g, g => g[1].toUpperCase());\r\n    }\r\n\r\n    static isObjectId(id: string): boolean {\r\n        return typeof id === \"string\" && id.length == 24 && !isNaN(Number(\"0x\" + id));\r\n    }\r\n\r\n    static parseDomain(baseUrl: string): string {\r\n        try {\r\n            const url = new URL(String(baseUrl || \"\"));\r\n            const port = url.port && url.port !== \"443\" && url.port !== \"80\" ? `:${url.port}` : ``;\r\n            return `${url.protocol}//${url.hostname}${port}/`;\r\n        } catch {\r\n            return \"/\";\r\n        }\r\n    }\r\n}\r\n","import {ObjectUtils} from \"./object.utils\";\r\n\r\nexport class SetUtils {\r\n\r\n    static equals(set: Set<any>, obj: any): boolean {\r\n        if (!ObjectUtils.isSet(set) || !ObjectUtils.isSet(obj))\r\n            return false;\r\n        if (set.size != obj.size)\r\n            return false;\r\n        for (const item in set) {\r\n            if (!obj.has(item)) return false;\r\n        }\r\n        return true;\r\n    }\r\n\r\n    static addArray(set: Set<any>, items: any[]): void {\r\n        if (!ObjectUtils.isSet(set) || !ObjectUtils.isArray(items)) return;\r\n        items.forEach(i => set.add(i));\r\n    }\r\n\r\n    static merge(set: Set<any>, other: Set<any>): void {\r\n        if (!ObjectUtils.isSet(set) || !ObjectUtils.isSet(other)) return;\r\n        other.forEach(i => set.add(i));\r\n    }\r\n}\r\n","import {computed, untracked, type Signal, DestroyRef, inject, signal} from \"@angular/core\";\r\nimport {isBrowser} from \"./misc\";\r\n\r\n/**\r\n * Returns a signal that emits the previous value of the given signal.\r\n * The first time the signal is emitted, the previous value will be the same as the current value.\r\n *\r\n * @param s Signal to compute previous value for\r\n * @returns Signal that emits previous value of `s`\r\n */\r\nexport function computedPrevious<T>(s: Signal<T>): Signal<T> {\r\n    let current = null as T;\r\n    let previous = untracked(() => s()); // initial value is the current value\r\n\r\n    return computed(() => {\r\n        current = s();\r\n        const result = previous;\r\n        previous = current;\r\n        return result;\r\n    });\r\n}\r\n\r\n/**\r\n * Returns a signal that emits css styles form an element when it gets resized\r\n *\r\n * @param elem Element to compute styles for\r\n * @returns Signal that emits the calculated styles\r\n */\r\nexport function cssStyles<T>(elem: HTMLElement): Signal<CSSStyleDeclaration> {\r\n    const styles = signal<CSSStyleDeclaration>({\r\n        length: 0,\r\n        getPropertyValue: () => null\r\n    } as any);\r\n    if (!elem || !isBrowser()) return styles;\r\n    styles.set(getComputedStyle(elem));\r\n    const observer = typeof ResizeObserver === \"function\" ? new ResizeObserver(() => {\r\n        requestAnimationFrame(() => {\r\n            styles.set(getComputedStyle(elem));\r\n        });\r\n    }) : null;\r\n    const destroyRef = inject(DestroyRef, { optional: true });\r\n    destroyRef?.onDestroy(() => {\r\n        observer?.unobserve(elem);\r\n    });\r\n    observer?.observe(elem);\r\n    return styles;\r\n}\r\n\r\n/**\r\n * Returns a signal that emits css variables form an element when it gets resized\r\n *\r\n * @param elem Element to compute variables for\r\n * @returns Signal that emits the calculated properties\r\n */\r\nexport function cssVariables<T>(elem: HTMLElement) {\r\n    const styleSource = cssStyles(elem);\r\n    return computed(() => {\r\n       const styles = styleSource();\r\n        const res = {} as Record<string, string>;\r\n        for (let i = 0; i < styles.length; i++) {\r\n            const propertyName = styles[i];\r\n            if (propertyName.startsWith(\"--\")) {\r\n                res[propertyName] = styles.getPropertyValue(propertyName);\r\n            }\r\n        }\r\n        return res;\r\n    });\r\n}\r\n","import {BehaviorSubject, Subject, Subscription} from \"rxjs\";\r\nimport type {ManagerOptions, SocketOptions, Socket} from \"socket.io-client\";\r\n\r\nexport type SocketFactory = (uri?: string, opts?: Partial<ManagerOptions & SocketOptions>) => Socket;\r\n\r\nexport type SocketDataValue = string | number | boolean | Date | Array<SocketDataValue> | Array<SocketDataObj>;\r\n\r\nexport interface SocketDataObj {\r\n    [key: string]: SocketDataValue | SocketDataObj;\r\n}\r\n\r\nexport type SocketData = SocketDataValue | SocketDataObj;\r\n\r\nexport type ExtraHeaders = Record<string, string>;\r\n\r\nexport interface ResponseHandler {\r\n    resolve: (data: SocketData) => void,\r\n    reject: (error: SocketData) => void\r\n}\r\n\r\nfunction uuid(): string {\r\n    if (typeof window !== \"undefined\" && typeof window.crypto !== \"undefined\" && typeof window.crypto.getRandomValues !== \"undefined\") {\r\n        const buf = new Uint16Array(8);\r\n        window.crypto.getRandomValues(buf);\r\n        return Array.from(buf).map(pad4).join(\"\");\r\n    }\r\n    return new Array(8).fill(0).map(random4).join(\"\");\r\n}\r\n\r\nfunction pad4(num: number, index: number): string {\r\n    const prefix = 1 < index && index < 6 ? \"-\" : \"\";\r\n    let ret = num.toString(16);\r\n    while (ret.length < 4) {\r\n        ret = \"0\" + ret;\r\n    }\r\n    return prefix + ret;\r\n}\r\n\r\nfunction random4(_: number, index: number): string {\r\n    const prefix = 1 < index && index < 6 ? \"-\" : \"\";\r\n    return prefix + Math.floor((1 + Math.random()) * 0x10000)\r\n        .toString(16)\r\n        .substring(1);\r\n}\r\n\r\nexport class SocketClient {\r\n\r\n    readonly status: BehaviorSubject<boolean>;\r\n\r\n    protected readonly channels: Map<string, Subject<SocketData>>;\r\n    protected readonly responseHandlers: Map<string, ResponseHandler>;\r\n    protected sid: string;\r\n    protected open: boolean;\r\n\r\n    protected factory: Promise<SocketFactory>;\r\n    protected ws: Promise<Socket>;\r\n\r\n    get id(): string {\r\n        return this.open ? this.sid : null;\r\n    }\r\n\r\n    constructor(readonly url: string,\r\n                protected ioLoader: () => Promise<SocketFactory>) {\r\n        this.status = new BehaviorSubject(false);\r\n        this.channels = new Map([\r\n            [\"connect\", new Subject<SocketData>()],\r\n            [\"disconnect\", new Subject<SocketData>()],\r\n            [\"error\", new Subject<SocketData>()]\r\n        ]);\r\n        this.responseHandlers = new Map();\r\n        this.sid = null;\r\n        this.open = false;\r\n    }\r\n\r\n    connect(extraHeaders: ExtraHeaders = {}): void {\r\n        if (this.ws) return;\r\n        const url = new URL(this.url);\r\n        this.factory = this.factory || this.ioLoader();\r\n        this.ws = new Promise((resolve, reject) => {\r\n            this.factory.then(io => {\r\n                const protocol = url.protocol.replace(\"http\", \"ws\");\r\n                const ws = io(`${protocol}//${url.host}`, {\r\n                    extraHeaders,\r\n                    timeout: 5000,\r\n                    path: url.pathname\r\n                });\r\n                console.log(`socket connecting to: ${protocol}//${url.host}`, url.pathname);\r\n                ws.on(`connect`, () => {\r\n                    console.log(`socket connected`);\r\n                    this.open = true;\r\n                    this.sid = ws.id;\r\n                    this.status.next(true);\r\n                });\r\n                ws.on(`disconnect`, () => {\r\n                    this.open = false;\r\n                    this.status.next(false);\r\n                });\r\n                for (const [event, subject] of this.channels.entries()) {\r\n                    ws.off(event);\r\n                    ws.on(event, (data: SocketData) => {\r\n                        this.handleResponse(event, data);\r\n                        subject.next(data);\r\n                    });\r\n                }\r\n                resolve(ws);\r\n            }, reject);\r\n        });\r\n    }\r\n\r\n    disconnect(): void {\r\n        if (!this.ws) return;\r\n        this.ws.then(ws => ws.disconnect());\r\n        this.ws = null;\r\n    }\r\n\r\n    subscribe<T = SocketData>(event: string, cb: (value: T) => void): Subscription {\r\n        if (!this.channels.has(event)) {\r\n            this.channels.set(event, new Subject());\r\n            this.ws?.then(ws => {\r\n                ws.off(event);\r\n                ws.on(event, (data: SocketData) => {\r\n                    this.handleResponse(event, data);\r\n                    this.channels.get(event).next(data);\r\n                });\r\n            });\r\n        }\r\n        return this.channels.get(event).subscribe(cb as any);\r\n    }\r\n\r\n    emit(event: string, content: SocketData): void {\r\n        this.ws.then(ws => ws.emit(event, content));\r\n    }\r\n\r\n    async request(event: string, content: SocketDataObj): Promise<any> {\r\n        const id = uuid();\r\n        const ws = await this.ws;\r\n        const promise = new Promise((resolve, reject) => {\r\n            this.responseHandlers.set(id, {resolve, reject});\r\n            setTimeout(() => {\r\n                this.responseHandlers.delete(id);\r\n                reject(`Timeout for ${event} request ${JSON.stringify(content)}`);\r\n            }, 5000);\r\n        });\r\n        ws.emit(event, {...content, immediate_response_id: id});\r\n        return promise;\r\n    }\r\n\r\n    protected handleResponse(event: string, content: SocketData): void {\r\n        if (typeof content !== \"object\" || Array.isArray(content) || content instanceof Date) return;\r\n        const id = content.immediate_response_id as string;\r\n        const handler = this.responseHandlers.get(id);\r\n        if (!handler) return;\r\n        this.responseHandlers.delete(id);\r\n        if (event === \"error\") {\r\n            handler.reject(content);\r\n            return;\r\n        }\r\n        handler.resolve(content);\r\n    }\r\n}\r\n","export class UniqueUtils {\n\n    static uuid(): string {\n        if (typeof window !== \"undefined\" && typeof window.crypto !== \"undefined\" && typeof window.crypto.getRandomValues !== \"undefined\") {\n            const buf = new Uint16Array(8);\n            window.crypto.getRandomValues(buf);\n            return (this.pad4(buf[0]) + this.pad4(buf[1]) + \"-\" + this.pad4(buf[2]) + \"-\" + this.pad4(buf[3]) + \"-\" + this.pad4(buf[4]) + \"-\" + this.pad4(buf[5]) + this.pad4(buf[6]) + this.pad4(buf[7]));\n        }\n        return this.random4() + this.random4() + \"-\" + this.random4() + \"-\" + this.random4() + \"-\" +\n            this.random4() + \"-\" + this.random4() + this.random4() + this.random4();\n    }\n\n    private static pad4(num: number): string {\n        let ret = num.toString(16);\n        while (ret.length < 4) {\n            ret = \"0\" + ret;\n        }\n        return ret;\n    }\n\n    private static random4(): string {\n        return Math.floor((1 + Math.random()) * 0x10000)\n            .toString(16)\n            .substring(1);\n    }\n}\n","import {ObjectType} from \"../common-types\";\r\n\r\nexport interface Matcher {\r\n    [Symbol.match](string: string): RegExpMatchArray | null;\r\n}\r\n\r\n@ObjectType(\"enum\")\r\nexport class Enum {\r\n\r\n    readonly value: string;\r\n\r\n    get length(): number {\r\n        return this.value?.length ?? 0;\r\n    }\r\n\r\n    constructor(value: any) {\r\n        this.value = String(value ?? \"\");\r\n    }\r\n\r\n    toString(): string {\r\n        return this.value;\r\n    }\r\n\r\n    includes(val: string, position?: number): boolean {\r\n        return this.value.includes(val, position);\r\n    }\r\n\r\n    indexOf(val: string, position?: number): number {\r\n        return this.value.indexOf(val, position);\r\n    }\r\n\r\n    match(matcher: string | RegExp | Matcher): RegExpMatchArray | null {\r\n        return this.value.match(matcher as any);\r\n    }\r\n\r\n    toLowerCase(): Enum {\r\n        return new Enum(this.value.toLowerCase());\r\n    }\r\n\r\n    toUpperCase(): Enum {\r\n        return new Enum(this.value.toUpperCase());\r\n    }\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {Subject} from \"rxjs\";\r\nimport {IUserData} from \"../common-types\";\r\n\r\n@Injectable()\r\nexport class EventsService {\r\n\r\n    readonly eventForwarded: Subject<Event>;\r\n    readonly stickyUpdated: Subject<boolean>;\r\n    readonly languageChanged: Subject<string>;\r\n    readonly editLanguageChanged: Subject<string>;\r\n    readonly translationsEnabled: Subject<boolean>;\r\n    readonly userChanged: Subject<any>;\r\n\r\n    private sticky: boolean;\r\n    private user: IUserData;\r\n\r\n    get isSticky(): boolean {\r\n        return this.sticky;\r\n    }\r\n\r\n    get isAuthenticated(): boolean {\r\n        return !!this.user;\r\n    }\r\n\r\n    constructor() {\r\n        this.eventForwarded = new Subject();\r\n        this.stickyUpdated = new Subject();\r\n        this.languageChanged = new Subject();\r\n        this.editLanguageChanged = new Subject<string>();\r\n        this.translationsEnabled = new Subject();\r\n        this.userChanged = new Subject();\r\n        this.sticky = false;\r\n        this.user = null;\r\n        this.userChanged.subscribe(user => {\r\n            this.user = user;\r\n        });\r\n    }\r\n\r\n    event(e: Event): void {\r\n        this.eventForwarded.next(e);\r\n    }\r\n\r\n    updateSticky(sticky: boolean): void {\r\n        this.sticky = sticky;\r\n        this.stickyUpdated.next(sticky);\r\n    }\r\n}\r\n","import {Injectable, Injector, Type} from \"@angular/core\";\r\nimport {StateService} from \"./state.service\";\r\nimport {IAclComponent, IAclService, IRouteStateInfo, MenuItem} from \"../common-types\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\nimport {AuthGuard} from \"../utils/auth.guard\";\r\nimport {EventsService} from \"./events.service\";\r\n\r\nconst emptyGuards: any[] = [];\r\n\r\n@Injectable()\r\nexport class AclService implements IAclService {\r\n\r\n    protected components: IRouteStateInfo[];\r\n\r\n    constructor(readonly injector: Injector,\r\n                readonly state: StateService,\r\n                readonly events: EventsService) {\r\n        this.components = [];\r\n        this.events.userChanged.subscribe(async () => {\r\n            this.components.forEach(t => t.dirty = true);\r\n            const info = this.getStateInfo();\r\n            const result = info && info.guard instanceof AuthGuard\r\n                ? await info.guard.checkRoute(info.route)\r\n                : true;\r\n            if (result) {\r\n                if (!info || !info.dirty) return;\r\n                info.dirty = false;\r\n                const component: IAclComponent = info.component;\r\n                if (!info.component) return;\r\n                if (info.first) {\r\n                    if (ObjectUtils.isFunction(component.onUserInitialized)) {\r\n                        component.onUserInitialized();\r\n                    }\r\n                    info.first = false;\r\n                    return;\r\n                }\r\n                if (ObjectUtils.isFunction(component.onUserChanged)) {\r\n                    component.onUserChanged();\r\n                }\r\n                return;\r\n            }\r\n            const returnState = await (info.guard as AuthGuard).getReturnState(info.route);\r\n            if (!returnState) return;\r\n            await this.state.navigate(returnState);\r\n        });\r\n        this.state.subscribe(() => {\r\n            const info = this.getStateInfo();\r\n            if (!info?.component) return;\r\n            const component: IAclComponent = info.component;\r\n            if (ObjectUtils.isFunction(component.onUserInitialized)) {\r\n                component.onUserInitialized();\r\n            }\r\n            info.first = false;\r\n        });\r\n    }\r\n\r\n    async getCurrentMenu(): Promise<MenuItem[]> {\r\n        const path = [] as string[];\r\n        const config = this.state.getConfig(this.state.route, path);\r\n        const checks = await Promise.all(config.map(async route => {\r\n            if (!ObjectUtils.isStringWithValue(route.data?.name)) return false;\r\n            const guardType: Type<AuthGuard> = (route.canActivate || []).find(g => g === AuthGuard);\r\n            const guard = !guardType ? null : this.injector.get(guardType);\r\n            return guard ? await guard.checkRoute(route) : true;\r\n        }));\r\n        const basePath = path.join(\"/\").replace(/^([a-z]+)/gi, `/$1`);\r\n        return config.map((route, index) => {\r\n            return !checks[index] ? null : {\r\n                path: `${basePath}/${route.path}`,\r\n                page: route.data.page || route.data.id,\r\n                label: route.data.name,\r\n                side: route.data.side || `left`,\r\n                external: false,\r\n                data: route.data\r\n            };\r\n        }).filter(Boolean);\r\n    }\r\n\r\n    protected getStateInfo(): IRouteStateInfo {\r\n        const route = this.state.route;\r\n        if (!route) return null;\r\n        let info = this.components.find(t => t.route == this.state.route);\r\n        if (!info) {\r\n            const guardType: Type<AuthGuard> = (route.canActivate || emptyGuards)[0];\r\n            info = {\r\n                route: this.state.route,\r\n                guard: guardType ? this.injector.get(guardType) : null,\r\n                dirty: true,\r\n                first: true\r\n            };\r\n            this.components.push(info);\r\n        }\r\n        info.component = this.state.component;\r\n        return info;\r\n    }\r\n}\r\n","import {HttpHeaders, HttpParams, HttpUrlEncodingCodec} from \"@angular/common/http\";\r\nimport {HttpRequestHeaders, HttpRequestQuery} from \"../common-types\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\n\r\nexport class RequestBag {\r\n\r\n    protected readonly headers: HttpRequestHeaders;\r\n    protected readonly params: HttpRequestQuery;\r\n\r\n    get requestHeaders(): Readonly<HttpRequestHeaders> {\r\n        return this.headers;\r\n    }\r\n\r\n    get requestParams(): Readonly<HttpRequestQuery> {\r\n        return this.params;\r\n    }\r\n\r\n    constructor(protected source?: RequestBag) {\r\n        this.headers = {};\r\n        this.params = {};\r\n    }\r\n\r\n    makeHeaders(headersObj?: HttpRequestHeaders | HttpHeaders, withCredentials: boolean = true): HttpHeaders {\r\n        const source = this.convertHeaders(headersObj);\r\n        const headers = Object.assign({}, this.source?.headers || {}, this.headers, source);\r\n        const authHeader = headers[\"Authorization\"] as string || \"\";\r\n        if (!withCredentials && !authHeader.startsWith(\"Bearer\")) {\r\n            delete headers[\"Authorization\"];\r\n        }\r\n        return new HttpHeaders(headers);\r\n    }\r\n\r\n    makeParams(paramsObj?: HttpParams | HttpRequestQuery): HttpParams {\r\n        const source = this.convertParams(paramsObj);\r\n        const params = Object.assign({}, this.source?.params || {}, this.params, source);\r\n        return new HttpParams({\r\n            encoder: new HttpUrlEncodingCodec(),\r\n            fromObject: Object.keys(params || {}).reduce((result, key) => {\r\n                const value = params[key];\r\n                result[key] = ObjectUtils.isObject(value) ? JSON.stringify(value) : (ObjectUtils.isNullOrUndefined(value) ? \"\" : value.toString());\r\n                return result;\r\n            }, {})\r\n        });\r\n    }\r\n\r\n    setHeader(name: string, value?: string | string[]): void {\r\n        if (value === undefined) {\r\n            delete this.headers[name];\r\n            return;\r\n        }\r\n        this.headers[name] = value;\r\n    }\r\n\r\n    getHeader(name: string): string {\r\n        return String(this.headers[name] || \"\");\r\n    }\r\n\r\n    setParam(name: string, value?: any): void {\r\n        if (value === undefined) {\r\n            delete this.params[name];\r\n            return;\r\n        }\r\n        this.params[name] = value;\r\n    }\r\n\r\n    convertHeaders(headers: HttpHeaders | HttpRequestHeaders): HttpRequestHeaders {\r\n        if (headers instanceof HttpHeaders) {\r\n            return headers.keys().reduce((res, key) => {\r\n                res[key] = headers.getAll(key);\r\n                return res;\r\n            }, {} as HttpRequestHeaders);\r\n        }\r\n        return headers || {};\r\n    }\r\n\r\n    convertParams(params: HttpParams | HttpRequestQuery): HttpRequestQuery {\r\n        if (params instanceof HttpParams) {\r\n            return params.keys().reduce((res, key) => {\r\n                res[key] = params.getAll(key);\r\n                return res;\r\n            }, {} as HttpRequestQuery);\r\n        }\r\n        return params || {};\r\n    }\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {HttpClient, HttpHandler, HttpHeaders} from \"@angular/common/http\";\r\nimport {RequestBag} from \"./request-bag\";\r\nimport {HttpRequestHeaders, HttpRequestQuery, IBaseHttpClient} from \"../common-types\";\r\n\r\n@Injectable()\r\nexport class BaseHttpClient extends HttpClient implements IBaseHttpClient {\r\n\r\n    renewTokenFunc: () => void;\r\n\r\n    readonly bag: RequestBag;\r\n\r\n    constructor(handler: HttpHandler) {\r\n        super(handler);\r\n        this.bag = new RequestBag();\r\n    }\r\n\r\n    get requestHeaders(): Readonly<HttpRequestHeaders> {\r\n        return this.bag.requestHeaders;\r\n    }\r\n\r\n    get requestParams(): Readonly<HttpRequestQuery> {\r\n        return this.bag.requestParams;\r\n    }\r\n\r\n    setHeader(name: string, value?: string | string[]): void {\r\n        this.bag.setHeader(name, value);\r\n    }\r\n\r\n    getHeader(name: string): string {\r\n        return this.bag.getHeader(name);\r\n    }\r\n\r\n    setParam(name: string, value?: any): void {\r\n        this.bag.setParam(name, value);\r\n    }\r\n\r\n    setExtraRequestParam(name: string, value?: any): void {\r\n        this.bag.setParam(name, value);\r\n    }\r\n\r\n    makeHeaders(): HttpHeaders {\r\n        return this.bag.makeHeaders();\r\n    }\r\n}\r\n","import {Injectable} from \"@angular/core\";\nimport {StorageMode} from \"../common-types\";\nimport {UniversalService} from \"./universal.service\";\n\n/**\n * Use this service instead of Storage to avoid Angular Universal breaks on server environment\n */\n@Injectable()\nexport class StorageService {\n\n    constructor(readonly universal: UniversalService) {\n    }\n\n    get(key: string, defaultValue?: any, mode: StorageMode = StorageMode.Local): any {\n        if (!this.universal.isBrowser) return defaultValue;\n        const storage = mode == StorageMode.Local ? localStorage : sessionStorage;\n        const item = storage.getItem(key);\n        if (!item) return defaultValue;\n        try {\n            return JSON.parse(item);\n        } catch (e) {\n            return item;\n        }\n    }\n\n    set(key: string, value: any, mode: StorageMode = StorageMode.Local): void {\n        if (!this.universal.isBrowser) return;\n        const storage = mode == StorageMode.Local ? localStorage : sessionStorage;\n        if (typeof value == \"string\") {\n            storage.setItem(key, value);\n            return;\n        }\n        storage.setItem(key, JSON.stringify(value));\n    }\n\n    remove(key: string, mode: StorageMode = StorageMode.Local): void {\n        if (!this.universal.isBrowser) return;\n        const storage = mode == StorageMode.Local ? localStorage : sessionStorage;\n        storage.removeItem(key);\n    }\n}\n","import {Injectable} from \"@angular/core\";\r\nimport {BehaviorSubject, Observable, Subject, delay, timer} from \"rxjs\";\r\nimport {DateTime} from \"luxon\";\r\nimport {DurationUnit} from \"../common-types\";\r\nimport {EventsService} from \"./events.service\";\r\n\r\n@Injectable()\r\nexport class CacheService {\r\n\r\n    get userChanged(): Observable<any> {\r\n        return this.events.userChanged;\r\n    }\r\n\r\n    readonly ignore: Observable<any>;\r\n    readonly permanent: Observable<any>;\r\n\r\n    private caches: Map<string, any>;\r\n\r\n    constructor(protected events: EventsService) {\r\n        this.ignore = new BehaviorSubject(null).pipe(delay(5));\r\n        this.permanent = new Subject();\r\n        this.caches = new Map();\r\n    }\r\n\r\n    expiresIn(amount: number = 10, unit: DurationUnit = \"seconds\"): Observable<any> {\r\n        const when = DateTime.now().plus({[unit]: amount}).toJSDate();\r\n        return this.expiresAt(when);\r\n    }\r\n\r\n    expiresAt(when: Date): Observable<any> {\r\n        const now = new Date().getTime();\r\n        // Prevent negative delay\r\n        const delay = Math.max(when.getTime() - now, 5);\r\n        return timer(delay);\r\n    }\r\n\r\n    use<T>(key: string, valueCb: () => T, expires?: Observable<any>): T {\r\n        if (this.caches.has(key)) {\r\n            return this.caches.get(key);\r\n        }\r\n        const value = valueCb();\r\n        this.caches.set(key, value);\r\n        const subscription = (expires || this.permanent).subscribe(() => {\r\n            this.caches.delete(key);\r\n            subscription.unsubscribe();\r\n        });\r\n        return value;\r\n    }\r\n}\r\n","import {Inject, Injectable, Injector, Optional} from \"@angular/core\";\r\nimport {HttpErrorResponse, HttpEventType, HttpHeaders, HttpParams, HttpResponse} from \"@angular/common/http\";\r\n\r\nimport {\r\n    CacheExpireMode, ExpressRequest,\r\n    HttpClientRequestOptions,\r\n    HttpRequestHeaders,\r\n    HttpRequestOptions,\r\n    HttpRequestQuery,\r\n    IConfigService,\r\n    IHttpService,\r\n    IIssueContext,\r\n    ILanguageService,\r\n    IPaginationData,\r\n    IToasterService,\r\n    ProgressListener,\r\n    UploadData\r\n} from \"../common-types\";\r\n\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\nimport {MathUtils} from \"../utils/math.utils\";\r\n\r\nimport {BaseHttpClient} from \"./base-http.client\";\r\nimport {UniversalService} from \"./universal.service\";\r\nimport {StorageService} from \"./storage.service\";\r\nimport {timeout} from \"rxjs/operators\";\r\nimport {Observable, TimeoutError} from \"rxjs\";\r\nimport {CONFIG_SERVICE, EXPRESS_REQUEST, LANGUAGE_SERVICE, TOASTER_SERVICE} from \"../tokens\";\r\nimport {CacheService} from \"./cache.service\";\r\nimport {RequestBag} from \"./request-bag\";\r\nimport {md5} from \"../utils/crypto.utils\";\r\n\r\n@Injectable()\r\nexport class BaseHttpService implements IHttpService {\r\n\r\n    get name(): string {\r\n        return \"base\";\r\n    }\r\n\r\n    get requestHeaders(): Readonly<HttpRequestHeaders> {\r\n        return this.bag.requestHeaders;\r\n    }\r\n\r\n    get requestParams(): Readonly<HttpRequestQuery> {\r\n        return this.bag.requestParams;\r\n    }\r\n\r\n    protected get withCredentials(): boolean {\r\n        return true;\r\n    }\r\n\r\n    get universal(): UniversalService {\r\n        return this.storage.universal;\r\n    }\r\n\r\n    protected static failedRequests: Array<() => void> = [];\r\n\r\n    protected readonly bag: RequestBag;\r\n\r\n    protected static retryFailedRequests(): void {\r\n        BaseHttpService.failedRequests.forEach(r => r());\r\n        BaseHttpService.failedRequests = [];\r\n    }\r\n\r\n    constructor(readonly injector: Injector,\r\n                readonly client: BaseHttpClient,\r\n                readonly storage: StorageService,\r\n                readonly caches: CacheService,\r\n                @Inject(LANGUAGE_SERVICE) readonly language: ILanguageService,\r\n                @Inject(TOASTER_SERVICE) readonly toaster: IToasterService,\r\n                @Inject(CONFIG_SERVICE) readonly configs: IConfigService,\r\n                @Optional() @Inject(EXPRESS_REQUEST) readonly request: ExpressRequest = null\r\n    ) {\r\n        this.bag = new RequestBag(this.client.bag);\r\n        this.initService();\r\n    }\r\n\r\n    protected initService(): void {\r\n\r\n    }\r\n\r\n    setHeader(name: string, value?: string | string[]): void {\r\n        this.bag.setHeader(name, value);\r\n    }\r\n\r\n    setParam(name: string, value?: any): void {\r\n        this.bag.setParam(name, value);\r\n    }\r\n\r\n    cached(mode: CacheExpireMode): Observable<any> {\r\n        if (mode === \"auth\") {\r\n            return this.caches.userChanged;\r\n        }\r\n        if (mode instanceof Date) {\r\n            return this.caches.expiresAt(mode);\r\n        }\r\n        return mode === false ? this.caches.ignore : this.caches.permanent;\r\n    }\r\n\r\n    url(url: string): string {\r\n        return url;\r\n    }\r\n\r\n    createUrl(url: string, params: HttpRequestQuery): string {\r\n        const httpParams = this.bag.makeParams(params);\r\n        const query = httpParams.keys().map(key => {\r\n            return `${key}=${httpParams.get(key)}`;\r\n        }).join(\"&\");\r\n        return `${this.url(url)}?${query}`;\r\n    }\r\n\r\n    makeListParams(page: number, itemsPerPage: number, orderBy: string = null, orderDescending: boolean = null, filter: string = null): HttpRequestQuery {\r\n        const params: HttpRequestQuery = {\r\n            page: (page - 1),\r\n            limit: itemsPerPage\r\n        };\r\n        if (!ObjectUtils.isNullOrUndefined(orderBy)) {\r\n            params.sort = `${orderDescending ? \"-\" : \"\"}${orderBy}`;\r\n        }\r\n        if (!ObjectUtils.isNullOrUndefined(filter)) {\r\n            params.filter = filter;\r\n        }\r\n        return params;\r\n    }\r\n\r\n    protected getPromise(url: string, options?: HttpRequestOptions, body?: any) {\r\n        options = this.makeOptions(options, \"GET\", body);\r\n        return this.toPromise(url, options);\r\n    }\r\n\r\n    protected deletePromise(url: string, options?: HttpRequestOptions, body?: any) {\r\n        options = this.makeOptions(options, \"DELETE\", body);\r\n        return this.toPromise(url, options);\r\n    }\r\n\r\n    protected postPromise(url: string, body?: any, options?: HttpRequestOptions) {\r\n        options = this.makeOptions(options, \"POST\", body);\r\n        return this.toPromise(url, options);\r\n    }\r\n\r\n    protected putPromise(url: string, body?: any, options?: HttpRequestOptions) {\r\n        options = this.makeOptions(options, \"PUT\", body);\r\n        return this.toPromise(url, options);\r\n    }\r\n\r\n    protected patchPromise(url: string, body?: any, options?: HttpRequestOptions) {\r\n        options = this.makeOptions(options, \"PATCH\", body);\r\n        return this.toPromise(url, options);\r\n    }\r\n\r\n    protected uploadPromise(url: string, body: UploadData, listener?: ProgressListener, options?: HttpRequestOptions) {\r\n        const headers: any = {};\r\n        if (body instanceof Blob) {\r\n            headers[\"Content-Type\"] = \"application/octet-stream\";\r\n        }\r\n        options = this.makeOptions(Object.assign({\r\n            headers: headers,\r\n            reportProgress: true\r\n        }, options), \"POST\", body);\r\n        return this.toPromise(url, options, listener);\r\n    }\r\n\r\n    protected listPromise(url: string, options?: HttpClientRequestOptions): Promise<IPaginationData> {\r\n        return new Promise<IPaginationData>(resolve => {\r\n            this.getPromise(url, options).then(data => {\r\n                if (ObjectUtils.isArray(data)) {\r\n                    resolve({\r\n                        total: data.length,\r\n                        items: data,\r\n                        meta: {}\r\n                    });\r\n                    return;\r\n                }\r\n                resolve({\r\n                    total: data.meta?.total || data?.total || data.items?.length || 0,\r\n                    items: data.items || [],\r\n                    meta: data.meta || {}\r\n                });\r\n            }, response => {\r\n                if (response.status == 0 || response.status == 301) {\r\n                    resolve({\r\n                        total: 1,\r\n                        items: [{\r\n                            id: null,\r\n                            label: \"Not implemented.\"\r\n                        }],\r\n                        meta: {}\r\n                    });\r\n                    return true;\r\n                }\r\n                resolve({\r\n                    total: 0,\r\n                    items: [],\r\n                    meta: {}\r\n                });\r\n                return false;\r\n            });\r\n        });\r\n    }\r\n\r\n    protected handleUnauthorizedError(absoluteUrl: string, options: HttpClientRequestOptions, reject: () => void): void {\r\n        reject();\r\n        if (BaseHttpService.failedRequests.length > 1 || this.universal.isServer) return;\r\n        console.log(\"User auth error\", absoluteUrl, options);\r\n    }\r\n\r\n    protected toastWarning(message: string, issueContext: IIssueContext, reason: any, options: HttpClientRequestOptions): void {\r\n        this.toaster.warning(message, {issueContext, reason, options});\r\n    }\r\n\r\n    protected toastError(message: string, issueContext: IIssueContext, reason: any, options: HttpClientRequestOptions): void {\r\n        this.toaster.warning(message, {issueContext, reason, options});\r\n    }\r\n\r\n    protected makeCacheKey(url: string, read: string, options: HttpRequestOptions): string {\r\n        const headers = this.bag.convertHeaders(options?.headers);\r\n        const params = this.bag.convertParams(options?.params);\r\n        const hash = md5({url, read, options: {\r\n            ...options,\r\n            headers,\r\n            params\r\n        }});\r\n        return `request-${hash}`;\r\n    }\r\n\r\n    protected toPromise(url: string, requestOptions: HttpRequestOptions, listener?: ProgressListener): Promise<any> {\r\n        const {cache, read, ...options} = requestOptions;\r\n        const absoluteUrl = this.absoluteUrl(url, options);\r\n        const cacheKey = this.makeCacheKey(absoluteUrl, read, requestOptions);\r\n        const issueContext: IIssueContext = {url: absoluteUrl};\r\n        return this.caches.use(`${cacheKey}-${read}`, async () => {\r\n            const response = await this.caches.use(cacheKey, () => new HttpPromise(response => {\r\n                if (!response) {\r\n                    if (this.universal.isServer) return;\r\n                    console.log(\"You may not need a reject Handler for this request!\", this.name, url, options);\r\n                    return;\r\n                }\r\n                const reason = response.error || {};\r\n                if (response.status == 0 || response.status == 301) {\r\n                    this.toastWarning(`${url} endpoint is not implemented! Click here, to quickly create an issue.`, issueContext, reason, options);\r\n                    return;\r\n                }\r\n                const regex = /((E11000 duplicate key error collection: (.)+\\.)|(_1 dup key:(.)+))/g;\r\n                const message = ObjectUtils.isObject(reason.message)\r\n                    ? String(reason.message?.message || \"Unknown error\")\r\n                    : String(reason.message || \"Unknown error\");\r\n                if (message && regex.test(message)) {\r\n                    this.toastError(\"message.duplicate-key.error.\" + message.replace(regex, \"\").replace(\" index: \", \"-\"), issueContext, reason, options);\r\n                    return;\r\n                }\r\n                this.toastWarning(`${url} endpoint error is not handled properly! Click here, to quickly create an issue.`, issueContext, reason, options);\r\n            }, (resolve, reject) => {\r\n                const request = this.client.request(options.method, absoluteUrl, options);\r\n                const finalRequest = ObjectUtils.isNumber(options.timeout) && options.timeout > 0\r\n                    ? request.pipe(timeout(options.timeout)) : request;\r\n                finalRequest.subscribe({\r\n                    next: event => {\r\n                        if (options.reportProgress && event?.type === HttpEventType.UploadProgress) {\r\n                            const progress = {\r\n                                percentage: MathUtils.round(event.loaded / event.total, 2, 0.01),\r\n                                loaded: event.loaded,\r\n                                total: event.total\r\n                            };\r\n                            if (listener) {\r\n                                listener(progress);\r\n                            }\r\n                            return;\r\n                        }\r\n                        resolve(event);\r\n                        const headers = options.headers as HttpHeaders;\r\n                        const authKey = \"Authorization\";\r\n                        // If we use token auth\r\n                        if (this.client.renewTokenFunc && headers.has(authKey)) {\r\n                            const currentTime = Date.now() + 60_000;\r\n                            const userTokenTime = this.getUserTokenTime() || currentTime;\r\n                            // And the stored token expiration time is almost ended\r\n                            if (currentTime >= userTokenTime) {\r\n                                this.client.renewTokenFunc();\r\n                            }\r\n                        }\r\n                    },\r\n                    error: (response: HttpErrorResponse | TimeoutError) => {\r\n                        if (response instanceof TimeoutError || response.status == 0 || response.status == 301) {\r\n                            reject(response);\r\n                            return;\r\n                        }\r\n                        const headers = options.headers as HttpHeaders;\r\n                        const authKey = \"Authorization\";\r\n                        // If an authorization header exists, and we still have an Unauthorized response prompt the user to log in again\r\n                        if (headers.has(authKey) && response.status == 401) {\r\n                            const pushed = this.pushFailedRequest(url, options, () => {\r\n                                options.headers = this.makeHeaders(options.originalHeaders);\r\n                                this.toPromise(url, options, listener).then(resolve, reject);\r\n                            });\r\n                            if (pushed) {\r\n                                this.handleUnauthorizedError(absoluteUrl, options, () => reject(response));\r\n                                return;\r\n                            }\r\n                        }\r\n                        reject(response);\r\n                    }\r\n                });\r\n            }), cache);\r\n            return this.parseResponse(response, url, options, read);\r\n        }, cache);\r\n    }\r\n\r\n    protected getUserTokenTime(): number {\r\n        return this.storage.get(\"userTokenTime\");\r\n    }\r\n\r\n    protected pushFailedRequest(url: string, options: HttpClientRequestOptions, req: () => void): boolean {\r\n        if (url.indexOf(\"token\") >= 0 || url === \"user\") return false;\r\n        BaseHttpService.failedRequests.push(req);\r\n        return true;\r\n    }\r\n\r\n    protected checkHeaders(headers: any): boolean {\r\n        if (!headers || !headers.cookie || !headers.referer || !headers.host) {\r\n            return false;\r\n        }\r\n        return headers.referer.indexOf(headers.host) >= 0;\r\n    }\r\n\r\n    protected makeOptions(options?: HttpRequestOptions, method: string = \"GET\", body?: any, cache?: Observable<any>): HttpClientRequestOptions {\r\n        // Set base options\r\n        options = options ? {...options} : {};\r\n        options.cache = options.cache || cache || this.caches.ignore;\r\n        options.method = method;\r\n        options.observe = options.observe || \"body\";\r\n        options.originalHeaders = options.originalHeaders || (options.headers as HttpRequestHeaders) || {};\r\n        options.withCredentials = ObjectUtils.isBoolean(options.withCredentials) ? options.withCredentials : this.withCredentials;\r\n        options.body = body || {};\r\n        // Set cookies from server side request\r\n        const headers = !this.request ? null : this.request.headers;\r\n        if (this.checkHeaders(headers)) {\r\n            options.headers[\"Cookie\"] = headers.cookie;\r\n        }\r\n        options.headers = this.makeHeaders(options);\r\n        options.params = this.makeParams(options);\r\n        return options;\r\n    }\r\n\r\n    protected makeHeaders(options: HttpClientRequestOptions): HttpHeaders {\r\n        return this.bag.makeHeaders(options?.headers || {});\r\n    }\r\n\r\n    protected makeParams(options: HttpClientRequestOptions): HttpParams {\r\n        return this.bag.makeParams(options?.params || {});\r\n    }\r\n\r\n    protected parseResponse(response: any, url: string, options: HttpClientRequestOptions, read: string): any {\r\n        if (!read) return response;\r\n        if (response instanceof HttpResponse) {\r\n            response = response.body;\r\n        }\r\n        return ObjectUtils.isObject(response) ? response[read] : response;\r\n    }\r\n\r\n    protected parseUrl(url: string): string {\r\n        return this.url(url).replace(/((?!:).\\/)\\//g, \"$1\");\r\n    }\r\n\r\n    protected absoluteUrl(url: string, options: HttpClientRequestOptions): string {\r\n        return this.parseUrl(url);\r\n    }\r\n\r\n    protected expressRequestUrl(url: string): string {\r\n        const req = this.request;\r\n        if (!req || !url || url.startsWith(\"http\") || url.startsWith(\"//\")) return url;\r\n        const separator = url.startsWith(\"/\") ? \"\" : \"/\";\r\n        return `${req.protocol}://${req.get(\"host\")}${separator}${url}`;\r\n    }\r\n}\r\n\r\ntype PromiseExecutor = (resolve: (value?: any | PromiseLike<any>) => void, reject: (reason?: any) => void) => void;\r\n\r\nclass HttpPromise extends Promise<any> {\r\n\r\n    protected rejectHandler: (reason?: HttpErrorResponse) => void;\r\n    protected hasRejectHandler: boolean;\r\n    protected attachCount: number;\r\n    protected runCount: number;\r\n\r\n    constructor(rejectHandler: (reason?: HttpErrorResponse) => void, executor: PromiseExecutor) {\r\n        super(executor);\r\n        this.rejectHandler = rejectHandler;\r\n        this.attachCount = 0;\r\n        this.runCount = 0;\r\n    }\r\n\r\n    then<TResult1, TResult2>(onFulfilled?: ((value: any) => (PromiseLike<TResult1> | TResult1)) | null | undefined,\r\n                             onRejected?: ((reason: HttpErrorResponse) => (PromiseLike<TResult2> | TResult2)) | null | undefined): Promise<TResult1 | TResult2> {\r\n        this.attachCount++;\r\n        return super.then(value => {\r\n            this.runCount++;\r\n            return onFulfilled ? onFulfilled(value) : null;\r\n        }, (reason: HttpErrorResponse) => {\r\n            const result: any = onRejected ? onRejected(reason) : null;\r\n            this.hasRejectHandler = this.hasRejectHandler || (onRejected && result !== false);\r\n            this.runCount++;\r\n            this.rejectHandler(this.runCount == this.attachCount && !this.hasRejectHandler ? reason : null);\r\n            return result;\r\n        });\r\n    }\r\n\r\n    catch<TResult = never>(onRejected?: ((reason: HttpErrorResponse) => (PromiseLike<TResult> | TResult)) | null | undefined): Promise<any | TResult> {\r\n        return this.then(null, onRejected);\r\n    }\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\n\r\nimport {\r\n    HttpRequestOptions,\r\n    HttpRequestQuery,\r\n    IApiService,\r\n    IPaginationData,\r\n    ProgressListener,\r\n    UploadData\r\n} from \"../common-types\";\r\nimport {BaseHttpService} from \"./base-http.service\";\r\nimport {SOCKET_IO_PATH} from \"../tokens\";\r\n\r\n@Injectable()\r\nexport class ApiService extends BaseHttpService implements IApiService {\r\n\r\n    get name(): string {\r\n        return \"api\";\r\n    }\r\n\r\n    url(url: string): string {\r\n        const config = this.configs.config;\r\n        const baseUrl = this.expressRequestUrl(`${config.apiUrl}${url}`);\r\n        const socket = this.injector.get(SOCKET_IO_PATH);\r\n        if (url == \"api-docs\" || url == socket) {\r\n            return baseUrl.replace(\"/api/\", \"/\");\r\n        }\r\n        return baseUrl;\r\n    }\r\n\r\n    get(url: string, options?: HttpRequestOptions, body?: any): Promise<any> {\r\n        return this.getPromise(url, options, body);\r\n    }\r\n\r\n    delete(url: string, options?: HttpRequestOptions, body?: any): Promise<any> {\r\n        return this.deletePromise(url, options, body);\r\n    }\r\n\r\n    post(url: string, body?: any, options?: HttpRequestOptions): Promise<any> {\r\n        return this.postPromise(url, body, options);\r\n    }\r\n\r\n    put(url: string, body?: any, options?: HttpRequestOptions): Promise<any> {\r\n        return this.putPromise(url, body, options);\r\n    }\r\n\r\n    patch(url: string, body?: any, options?: HttpRequestOptions): Promise<any> {\r\n        return this.patchPromise(url, body, options);\r\n    }\r\n\r\n    upload(url: string, body: UploadData, listener?: ProgressListener, options?: HttpRequestOptions): Promise<any> {\r\n        return this.uploadPromise(url, body, listener, options);\r\n    }\r\n\r\n    list(url: string, params: HttpRequestQuery, options?: HttpRequestOptions): Promise<IPaginationData> {\r\n        options = options || {};\r\n        options.params = Object.assign(options.params || {}, params || {});\r\n        return this.listPromise(url, options);\r\n    }\r\n}\r\n","import {IAuthService} from \"../common-types\";\r\n\r\nexport class StaticAuthService implements IAuthService {\r\n\r\n    get isAuthenticated() {\r\n        return false;\r\n    }\r\n\r\n    checkAuthenticated(): Promise<boolean> {\r\n        return Promise.resolve(this.isAuthenticated);\r\n    }\r\n}\r\n","import {Inject, Injectable, Injector, isDevMode, Optional} from \"@angular/core\";\r\nimport JSON5 from \"json5\";\r\nimport {UniversalService} from \"./universal.service\";\r\nimport {IConfigService, IConfiguration} from \"../common-types\";\r\nimport {StringUtils} from \"../utils/string.utils\";\r\nimport {APP_BASE_URL, BASE_CONFIG, ROOT_ELEMENT, SCRIPT_PARAMS} from \"../tokens\";\r\nimport {BaseHttpClient} from \"./base-http.client\";\r\n\r\n@Injectable()\r\nexport class ConfigService implements IConfigService {\r\n\r\n    protected baseConfig: IConfiguration;\r\n    protected loadedConfig: IConfiguration;\r\n    protected scriptParameters: any;\r\n    protected loader: Promise<IConfiguration>;\r\n    protected readonly loaderFunc: () => Promise<IConfiguration>;\r\n\r\n    get load(): () => Promise<IConfiguration> {\r\n        return this.loaderFunc;\r\n    }\r\n\r\n    get config(): IConfiguration {\r\n        return this.loadedConfig;\r\n    }\r\n\r\n    get configUrl(): string {\r\n        return `${this.loadedConfig.baseUrl}config/config.json`;\r\n    }\r\n\r\n    constructor(readonly http: BaseHttpClient,\r\n                readonly universal: UniversalService,\r\n                readonly injector: Injector,\r\n                @Inject(ROOT_ELEMENT) readonly rootElement: HTMLElement,\r\n                @Inject(APP_BASE_URL) readonly baseUrl: string,\r\n                @Optional() @Inject(BASE_CONFIG) baseConfig: IConfiguration = null,\r\n                @Optional() @Inject(SCRIPT_PARAMS) scriptParams: any = null) {\r\n        for (const key in []) {\r\n            Object.defineProperty(Array.prototype, key, {\r\n                enumerable: false\r\n            });\r\n        }\r\n        this.baseConfig = baseConfig || {};\r\n        this.loadedConfig = Object.assign(\r\n            !this.baseUrl ? {} : {baseUrl: this.baseUrl, baseDomain: StringUtils.parseDomain(this.baseUrl)},\r\n            this.baseConfig\r\n        );\r\n        this.scriptParameters = scriptParams || {};\r\n        this.loaderFunc = () => {\r\n            this.loader = this.loader || new Promise<any>((resolve, reject) => {\r\n                this.loadJson().then(config => {\r\n                    this.loadedConfig = config = Object.assign(this.loadedConfig, config);\r\n                    this.prepareConfig(config).then(c => {\r\n                        this.loadedConfig = c;\r\n                        c.baseUrl = c.baseUrl || \"/\";\r\n                        resolve(c);\r\n                    });\r\n                }, reject);\r\n            });\r\n            return this.loader;\r\n        };\r\n        this.initService();\r\n    }\r\n\r\n    protected initService(): void {\r\n\r\n    }\r\n\r\n    protected async loadJson(): Promise<IConfiguration> {\r\n        if (this.universal.isServer) {\r\n            return Promise.resolve(this.loadedConfig);\r\n        }\r\n        const configUrl = this.configUrl;\r\n        try {\r\n            const config5 = await this.http.get(isDevMode() ? `${configUrl}5` : configUrl, {responseType: \"text\"}).toPromise();\r\n            return JSON5.parse(config5);\r\n        } catch (e) {\r\n            try {\r\n                const config = await this.http.get(configUrl).toPromise();\r\n                console.log(`Can't parse json5 config: ${e}`);\r\n                return config;\r\n            } catch (e) {\r\n                throw new Error(`Config file not found at: ${configUrl}`);\r\n            }\r\n        }\r\n    }\r\n\r\n    protected prepareConfig(config: IConfiguration): Promise<IConfiguration> {\r\n        return Promise.resolve(config);\r\n    }\r\n\r\n    cloneRootElem(): any {\r\n        if (this.rootElement instanceof HTMLElement) {\r\n            const clone = this.rootElement.cloneNode(true) as HTMLElement\r\n            const children = Array.from(clone.childNodes);\r\n            children.forEach(child => {\r\n                if (child instanceof HTMLElement) {\r\n                    child.remove();\r\n                }\r\n            });\r\n            return clone;\r\n        }\r\n        return this.rootElement;\r\n    }\r\n\r\n    prepareUrl(url: string, ending: string): string {\r\n        const project = !this.loadedConfig ? \"\" : this.loadedConfig.project;\r\n        const needsProtocol = url?.startsWith(\"//\") ?? false;\r\n        url = !needsProtocol && url?.startsWith(\"/\") ? this.loadedConfig.baseDomain + url.substr(1) : url || \"\";\r\n        url = `${url.replace(/\\/+$/, \"\")}${ending}`.replace(\"[project]\", project);\r\n        return this.universal.isServer && needsProtocol ? `http:${url}` : url;\r\n    }\r\n\r\n    getConfigValue(key: string): any {\r\n        return this.loadedConfig[key];\r\n    }\r\n\r\n    getQueryParameter(name: string, url?: string): string {\r\n        url = url || (this.universal.isBrowser ? window.location.href : \"\");\r\n        name = name.replace(/[\\[\\]]/g, \"\\\\$&\");\r\n        const regex = new RegExp(\"[?&]\" + name + \"(=([^&#]*)|&|#|$)\"),\r\n            results = regex.exec(url);\r\n        if (!results) return null;\r\n        if (!results[2]) return \"\";\r\n        return decodeURIComponent(results[2].replace(/\\+/g, \" \"));\r\n    }\r\n}\r\n","import {Inject, Injectable} from \"@angular/core\";\r\nimport {\r\n    IConfirmMessageConfig,\r\n    IConfirmDialogConfig,\r\n    IDialogConfig,\r\n    IDialogService,\r\n    IToasterService\r\n} from \"../common-types\";\r\nimport {TOASTER_SERVICE} from \"../tokens\";\r\n\r\n@Injectable()\r\nexport class BaseDialogService<DR = any> implements IDialogService<DR> {\r\n\r\n    constructor(@Inject(TOASTER_SERVICE) readonly toaster: IToasterService) {\r\n    }\r\n\r\n    dialog(config: IDialogConfig): DR {\r\n        if (!config) return null;\r\n        console.log(config.title, config.message);\r\n        const button = !config.buttons ? null : config.buttons[0];\r\n        if (!button) return null;\r\n        this.toaster.handleAsyncMethod(button.method);\r\n        return null;\r\n    }\r\n\r\n    confirm(config: IConfirmDialogConfig): DR {\r\n        return this.dialog({\r\n            id: config.id,\r\n            title: config.title,\r\n            message: config.message,\r\n            messageContext: config.messageContext,\r\n            size: config.size,\r\n            buttons: [\r\n                {\r\n                    text: config.okText,\r\n                    classes: config.okClasses,\r\n                    method: config.method\r\n                },\r\n                {\r\n                    text: config.cancelText || \"button.cancel\",\r\n                    classes: config.cancelClasses || \"btn-default\",\r\n                    method: config.cancelMethod\r\n                }\r\n            ],\r\n            onClose: config.cancelMethod,\r\n            templates: config.templates\r\n        });\r\n    }\r\n\r\n    confirmMsg(message: string, config?: IConfirmMessageConfig): Promise<boolean> {\r\n        return new Promise<boolean>(resolve => {\r\n            this.confirm({\r\n                ...(config || {}),\r\n                message,\r\n                method: async () => {\r\n                    resolve(true);\r\n                    return null;\r\n                },\r\n                cancelMethod: async () => {\r\n                    resolve(false);\r\n                    return null;\r\n                }\r\n            })\r\n        });\r\n    }\r\n}\r\n","import {ErrorHandler, Injectable, Injector} from \"@angular/core\";\r\nimport {UniversalService} from \"./universal.service\";\r\nimport {ErrorHandlerCallback, IToasterService} from \"../common-types\";\r\nimport {ERROR_HANDLER, TOASTER_SERVICE} from \"../tokens\";\r\nimport {md5} from \"../utils/crypto.utils\";\r\n\r\n@Injectable()\r\nexport class ErrorHandlerService extends ErrorHandler {\r\n\r\n    private toaster: IToasterService;\r\n    private universal: UniversalService;\r\n    private errorCb: ErrorHandlerCallback;\r\n    private readonly errorMap: any;\r\n\r\n    constructor(readonly injector: Injector) {\r\n        super();\r\n        this.errorMap = {};\r\n    }\r\n\r\n    handleError(error: Error): void {\r\n        this.universal = this.universal || this.injector.get(UniversalService);\r\n        const date = new Date();\r\n        try {\r\n            this.errorCb = this.errorCb || this.injector.get(ERROR_HANDLER);\r\n            this.errorCb(`[${date}]: ${error.message}\\n${error.stack}`);\r\n        } catch (e) {\r\n            if (!this.universal || this.universal.isServer) {\r\n                console.error(`[${date}]: ${error.message}\\n${error.stack}`);\r\n                return;\r\n            }\r\n        }\r\n        if (!this.universal || this.universal.isServer) return;\r\n        const key = md5(`${error.message} ${error.stack}`);\r\n        if (this.errorMap[key] && this.errorMap[key].getTime() > date.getTime() - 5000) return;\r\n        this.errorMap[key] = date;\r\n        try {\r\n            this.toaster = this.toaster || this.injector.get(TOASTER_SERVICE);\r\n            this.toaster.error(`[${date}]: ${error.message}\\n${error.stack}`);\r\n        } catch (e) {\r\n        }\r\n        console.error(`[${date}]: ${error.message}\\n${error.stack}`);\r\n    }\r\n}\r\n","import {Inject, Injectable} from \"@angular/core\";\r\nimport {ILanguageService} from \"../common-types\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\nimport {EPSILON, MathUtils} from \"../utils/math.utils\";\r\nimport {LANGUAGE_SERVICE} from \"../tokens\";\r\n\r\n@Injectable()\r\nexport class FormatterService {\r\n\r\n    get defaultPrecision(): number {\r\n        return 2;\r\n    }\r\n\r\n    get defaultNumberFormat(): string {\r\n        return `num + ' mm'`;\r\n    }\r\n\r\n    get defaultDivider(): number {\r\n        return 1;\r\n    }\r\n\r\n    constructor(@Inject(LANGUAGE_SERVICE) public language: ILanguageService) {\r\n\r\n    }\r\n\r\n    roundNumber(value: number, precision?: number, divider?: number): number {\r\n        return MathUtils.round(value, this.getPrecision(precision), divider || this.defaultDivider);\r\n    }\r\n\r\n    formatNumber(value: number | string, format?: string, precision?: number, divider?: number, minDigits?: number): string {\r\n        precision = this.getPrecision(precision);\r\n        minDigits = minDigits ?? precision;\r\n        divider = divider || this.defaultDivider;\r\n        value = (ObjectUtils.isNumber(value) ? <number>value : parseFloat(<string>value) ?? 0) / divider;\r\n        const rounded = isNaN(value) || Math.abs(value) < EPSILON ? 0 : MathUtils.round(value, 10);\r\n        const num = rounded.toLocaleString(this.language.currentLanguage, {\r\n            minimumFractionDigits: minDigits,\r\n            maximumFractionDigits: precision,\r\n            useGrouping: false\r\n        });\r\n        return ObjectUtils.evaluate(format || this.defaultNumberFormat, {num});\r\n    }\r\n\r\n    formatMillimeter(value: number, precision?: number, divider?: number): string {\r\n        return this.formatNumber(value, `num + ' mm'`, precision, divider);\r\n    }\r\n\r\n    protected getPrecision(precision: number): number {\r\n        return ObjectUtils.isNumber(precision) ? precision : this.defaultPrecision;\r\n    }\r\n}\r\n","import {Injectable, TemplateRef} from \"@angular/core\";\nimport {BehaviorSubject, Subject} from \"rxjs\";\nimport {ObjectUtils} from \"../utils/object.utils\";\nimport {GlobalComponentModifier} from \"../common-types\";\n\n@Injectable()\nexport class GlobalTemplateService {\n\n    readonly templatesUpdated: Subject<ReadonlyArray<string>>;\n\n    protected readonly globalTemplates: { [id: string]: TemplateRef<any> };\n    protected readonly componentModifiers: { [id: string]: GlobalComponentModifier };\n\n    constructor() {\n        this.templatesUpdated = new BehaviorSubject([]);\n        this.globalTemplates = {};\n        this.componentModifiers = {};\n    }\n\n    get(id: string, component?: any): TemplateRef<any> {\n        const template = this.globalTemplates[id];\n        if (!template) return undefined;\n        const modifier = this.componentModifiers[id];\n        if (ObjectUtils.isFunction(modifier) && component) {\n            modifier(component);\n        }\n        return template;\n    }\n\n    add(id: string, template: TemplateRef<any>): void {\n        this.globalTemplates[id] = template;\n        this.templatesUpdated.next(Object.keys(this.globalTemplates));\n    }\n\n    remove(id: string): void {\n        delete this.globalTemplates[id];\n        this.templatesUpdated.next(Object.keys(this.globalTemplates));\n    }\n\n    addComponentModifier(id: string, modifier: GlobalComponentModifier): void {\n        this.componentModifiers[id] = modifier;\n    }\n}\n","import {Injectable} from \"@angular/core\";\r\n\r\nimport {HttpClientRequestOptions, IConfiguration, SvgDefinition, SvgSourceModifier} from \"../common-types\";\r\nimport {BaseHttpService} from \"./base-http.service\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\nimport {svgToDataUri} from \"../utils/string.utils\";\r\n\r\n@Injectable()\r\nexport class LocalHttpService extends BaseHttpService {\r\n\r\n    protected svgs: Record<string, SvgDefinition>;\r\n    protected images: Record<string, Promise<HTMLImageElement>>;\r\n\r\n    get name(): string {\r\n        return \"local-http\";\r\n    }\r\n\r\n    get config(): IConfiguration {\r\n        return this.configs.config;\r\n    }\r\n\r\n    protected get withCredentials(): boolean {\r\n        return false;\r\n    }\r\n\r\n    protected initService(): void {\r\n        super.initService();\r\n        this.svgs = {};\r\n        this.images = {};\r\n    }\r\n\r\n    url(url: string): string {\r\n        if (!url) return url;\r\n        const config = this.config;\r\n        const baseUrl = config.cdnUrl || config.baseUrl || \"\";\r\n        return url.startsWith(\"data:\") || url.startsWith(\"http\") || url.startsWith(\"//\")\r\n            ? url\r\n            : `${baseUrl}${url}`;\r\n    }\r\n\r\n    get(url: string, options?: HttpClientRequestOptions, body?: any): Promise<any> {\r\n        options = this.makeOptions(options, \"GET\", body, this.caches.permanent);\r\n        return this.toPromise(url, options);\r\n    }\r\n\r\n    getImage(url: string): Promise<HTMLImageElement> {\r\n        if (this.universal.isServer)\r\n            return Promise.resolve(null);\r\n        if (!url)\r\n            return Promise.resolve(new Image());\r\n\r\n        this.images[url] = this.images[url] || new Promise<HTMLImageElement>((resolve, reject) => {\r\n            const image = new Image();\r\n            image.crossOrigin = \"Anonymous\";\r\n            image.src = this.url(url);\r\n            image.onload = () => resolve(image);\r\n            image.onerror = error => {\r\n                console.warn(error);\r\n                reject(`Can't load image from url: ${url}`);\r\n            };\r\n        });\r\n\r\n        return this.images[url];\r\n    }\r\n\r\n    svgUrlFromSource(sourceStr: string, modifier?: SvgSourceModifier): string {\r\n        if (!sourceStr.startsWith(\"<svg\")) {\r\n            throw new Error(`Src is possibly not an svg.. '${sourceStr.substring(0, 10)}'`);\r\n        }\r\n        if (!this.svgs[sourceStr]) {\r\n            const parser = document.createElement(\"div\");\r\n            parser.innerHTML = sourceStr;\r\n            const source = parser.querySelector(\"svg\");\r\n            const width = parseFloat(source.getAttribute(\"width\"));\r\n            const height = parseFloat(source.getAttribute(\"height\"));\r\n            const vb = source.getAttribute(\"viewBox\").split(\" \").map(parseFloat);\r\n            this.svgs[sourceStr] = {\r\n                source,\r\n                width: width || vb[2],\r\n                height: height || vb[3],\r\n            };\r\n        }\r\n        const def = this.svgs[sourceStr];\r\n        const sourceClone = def.source.cloneNode(true) as SVGSVGElement;\r\n        const svgModified = ObjectUtils.isFunction(modifier) ? modifier(sourceClone, def.width, def.height) : def.source.outerHTML;\r\n        return svgToDataUri(svgModified)\r\n    }\r\n\r\n    svgFromSource(sourceStr: string, modifier?: SvgSourceModifier): Promise<HTMLImageElement> {\r\n        return this.getImage(this.svgUrlFromSource(sourceStr, modifier));\r\n    }\r\n\r\n    async getSvgUrl(url: string, modifier?: SvgSourceModifier): Promise<string> {\r\n        try {\r\n            const svgSrc = await this.get(url, {responseType: \"text\"}) as string;\r\n            return this.svgUrlFromSource(svgSrc, modifier);\r\n        } catch (e) {\r\n            throw new Error(`Can't get svg from url: ${url}, Error: ${e?.message}`);\r\n        }\r\n    }\r\n\r\n    async getSvgImage(url: string, modifier?: SvgSourceModifier): Promise<HTMLImageElement> {\r\n        try {\r\n            const svgSrc = await this.get(url, {responseType: \"text\"}) as string;\r\n            return await this.svgFromSource(svgSrc, modifier);\r\n        } catch (e) {\r\n            throw new Error(`Can't get svg from url: ${url}, Error: ${e?.message}`);\r\n        }\r\n    }\r\n}\r\n","import {EventEmitter, Injectable} from \"@angular/core\";\r\nimport {IIconService, SvgSourceModifier} from \"../common-types\";\r\nimport {LocalHttpService} from \"./local-http.service\";\r\n\r\ndeclare const icons: {\r\n    [icon: string]: string;\r\n};\r\n\r\n@Injectable()\r\nexport class IconService implements IIconService {\r\n\r\n    get isDisabled(): boolean {\r\n        return this.disabled;\r\n    }\r\n\r\n    set isDisabled(value: boolean) {\r\n        this.disabled = value;\r\n        this.iconsLoaded.emit();\r\n    }\r\n\r\n    public readonly iconsLoaded: EventEmitter<any>;\r\n\r\n    protected disabled: boolean;\r\n\r\n    constructor(readonly http: LocalHttpService) {\r\n        this.iconsLoaded = new EventEmitter<any>();\r\n        this.disabled = false;\r\n    }\r\n\r\n    getIcon(icon: string, activeIcon: string, active: boolean): Promise<string> {\r\n        icon = typeof icons == \"undefined\" ? icon : (icons[icon] || icon);\r\n        activeIcon = typeof icons == \"undefined\" ? activeIcon : (icons[activeIcon] || icon);\r\n        return Promise.resolve(active ? activeIcon : icon);\r\n    }\r\n\r\n    async getIconUrl(icon: string, modifier?: SvgSourceModifier): Promise<string> {\r\n        const src = await this.getIcon(icon, icon, false);\r\n        return this.http.svgUrlFromSource(src, modifier);\r\n    }\r\n\r\n    async getIconImage(icon: string, modifier?: SvgSourceModifier): Promise<HTMLImageElement> {\r\n        const src = await this.getIcon(icon, icon, false);\r\n        return this.http.svgFromSource(src, modifier);\r\n    }\r\n}\r\n","import {Inject, Injectable} from \"@angular/core\";\r\nimport {\r\n    GlobalTranslations,\r\n    IConfigService,\r\n    IConfiguration,\r\n    ILanguageService,\r\n    IPromiseService,\r\n    ITranslation,\r\n    ITranslations\r\n} from \"../common-types\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\nimport {EventsService} from \"./events.service\";\r\nimport {StorageService} from \"./storage.service\";\r\nimport {UniversalService} from \"./universal.service\";\r\nimport {BaseHttpClient} from \"./base-http.client\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\nimport {CONFIG_SERVICE, PROMISE_SERVICE} from \"../tokens\";\r\n\r\nexport const EMPTY_DICT: ITranslations = {};\r\n\r\n@Injectable()\r\nexport class StaticLanguageService implements ILanguageService {\r\n\r\n    get defaultLanguage(): string {\r\n        return this.configs.getQueryParameter(\"lang\") || this.storage.get(\"language\", this.getDefaultLanguage());\r\n    }\r\n\r\n    get dictionary(): ITranslations {\r\n        return this.mergedTranslations[this.currentLanguage] || EMPTY_DICT;\r\n    }\r\n\r\n    set dictionary(value: ITranslations) {\r\n        this.setDictionary(this.currentLang, value);\r\n        this.mergeTranslations();\r\n    }\r\n\r\n    get languages(): ReadonlyArray<string> {\r\n        return this.languageList;\r\n    }\r\n\r\n    get currentLanguage(): string {\r\n        return this.currentLang || this.defaultLanguage;\r\n    }\r\n\r\n    set currentLanguage(lang: string) {\r\n        this.currentLang = lang;\r\n        this.events.languageChanged.next(lang);\r\n    }\r\n\r\n    get editLanguage(): string {\r\n        return this.editLang || this.currentLanguage;\r\n    }\r\n\r\n    set editLanguage(lang: string) {\r\n        this.editLang = lang || this.currentLanguage;\r\n        this.events.editLanguageChanged.next(this.editLang);\r\n    }\r\n\r\n    get enableTranslations(): boolean {\r\n        return this.enableTrans;\r\n    }\r\n\r\n    set enableTranslations(value: boolean) {\r\n        this.enableTrans = value;\r\n        this.events.translationsEnabled.next(value);\r\n    }\r\n\r\n    get disableTranslations(): boolean {\r\n        return !this.enableTranslations;\r\n    }\r\n\r\n    set disableTranslations(value: boolean) {\r\n        this.enableTranslations = !value;\r\n    }\r\n\r\n    get httpClient(): HttpClient {\r\n        return this.client;\r\n    }\r\n\r\n    get config(): IConfiguration {\r\n        return this.configs.config;\r\n    }\r\n\r\n    get universal(): UniversalService {\r\n        return this.storage.universal;\r\n    }\r\n\r\n    protected editLang: string;\r\n    protected currentLang: string;\r\n    protected enableTrans: boolean;\r\n    protected languageList: string[];\r\n    protected readonly translations: GlobalTranslations;\r\n    protected overrideTranslations: GlobalTranslations;\r\n    protected mergedTranslations: GlobalTranslations;\r\n\r\n    constructor(@Inject(EventsService) readonly events: EventsService,\r\n                @Inject(StorageService) readonly storage: StorageService,\r\n                @Inject(CONFIG_SERVICE) readonly configs: IConfigService,\r\n                @Inject(PROMISE_SERVICE) protected promises: IPromiseService,\r\n                @Inject(BaseHttpClient) protected client: BaseHttpClient) {\r\n        this.editLang = null;\r\n        this.currentLang = null;\r\n        this.enableTrans = true;\r\n        this.languageList = [];\r\n        this.translations = {\r\n            none: {}\r\n        };\r\n        this.overrideTranslations = {\r\n            none: {}\r\n        };\r\n        this.mergedTranslations = this.translations;\r\n        this.initService();\r\n    }\r\n\r\n    protected initService(): void {\r\n\r\n    }\r\n\r\n    replaceLanguages(languages: string[]): void {\r\n        languages = Array.isArray(languages) && languages.length > 0 ? languages : this.languageList;\r\n        this.languageList = Array.from(new Set<string>(languages));\r\n        this.languageList.forEach(lang => {\r\n            this.translations[lang] = this.translations[lang] || EMPTY_DICT;\r\n        });\r\n    }\r\n\r\n    addLanguages(languages: string[]): void {\r\n        if (!Array.isArray(languages) || languages.length == 0) return;\r\n        this.replaceLanguages(this.languageList.concat(languages));\r\n    }\r\n\r\n    setOverrideTranslations(translations: GlobalTranslations): void {\r\n        if (ObjectUtils.isObject(translations)) {\r\n            this.overrideTranslations = translations;\r\n            this.mergeTranslations();\r\n            return;\r\n        }\r\n        this.overrideTranslations = {};\r\n        this.mergedTranslations = this.translations;\r\n    }\r\n\r\n    getTranslationSync(key: string, params: Object = null): string {\r\n        key = String(key ?? \"\");\r\n        if (!key) return \"\";\r\n        try {\r\n            const lowerKey = key.toLocaleLowerCase();\r\n            const dict = this.dictionary;\r\n            if (lowerKey in dict && this.enableTranslations) {\r\n                return this.interpolate(dict[lowerKey], params);\r\n            }\r\n            return this.interpolate(key, params);\r\n        } catch (reason) {\r\n            console.warn(\"ERROR IN TRANSLATIONS\", reason);\r\n            return key;\r\n        }\r\n    }\r\n\r\n    async getTranslation(key: string, params: any = null): Promise<string> {\r\n        await this.loadDictionary();\r\n        return this.getTranslationSync(key, params);\r\n    }\r\n\r\n    getTranslations(...keys: string[]): Promise<ITranslations> {\r\n        return this.promises.create<ITranslations>(resolve => {\r\n            this.promises.all(keys.map(key => this.getTranslation(key))).then(translations => {\r\n                resolve(keys.reduce((result, key, i) => {\r\n                    result[key] = translations[i];\r\n                    return result;\r\n                }, {}));\r\n            });\r\n        });\r\n    }\r\n\r\n    getTranslationFromObject(translations: ITranslations, params?: any, lang?: string): string {\r\n        lang = lang || this.currentLanguage;\r\n        return this.interpolate(translations ? (translations[lang] || \"\") : \"\")\r\n    }\r\n\r\n    getTranslationFromArray(translations: ITranslation[], params?: any, lang?: string): string {\r\n        lang = lang || this.currentLanguage;\r\n        const translation = translations ? translations.find(t => t.lang == lang) : null;\r\n        return this.interpolate(translation ? translation.translation : \"\", params);\r\n    }\r\n\r\n    protected async loadDictionary(): Promise<ITranslations> {\r\n        return this.dictionary;\r\n    }\r\n\r\n    protected setDictionary(lang: string, dictionary: ITranslations): ITranslations {\r\n        this.translations[lang] = Object.keys(dictionary || {}).reduce((res, key) => {\r\n            res[key.toLocaleLowerCase()] = dictionary[key];\r\n            return res;\r\n        }, {} as ITranslations);\r\n        return this.translations[lang];\r\n    }\r\n\r\n    protected interpolate(expr: string | Function, params?: Object): string {\r\n        if (typeof expr === \"string\") {\r\n            // Force single spaces to be empty strings, for labeling in forms.\r\n            return expr === \" \" ? \"\" : this.interpolateString(expr, params);\r\n        }\r\n        if (typeof expr === \"function\") {\r\n            return expr(params);\r\n        }\r\n        return expr as string;\r\n    }\r\n\r\n    protected interpolateString(expr: string, params?: Object) {\r\n        if (!expr || !params) return expr;\r\n        return expr.replace(/{{\\s?([^{}\\s]*)\\s?}}/g, (substring: string, b: string) => {\r\n            const r = ObjectUtils.getValue(params, b, \"\");\r\n            return ObjectUtils.isDefined(r) ? r : substring;\r\n        });\r\n    }\r\n\r\n    protected getDefaultLanguage(): string {\r\n        if (!this.universal.isBrowser || typeof window.navigator === \"undefined\") {\r\n            return \"de\";\r\n        }\r\n        let browserLang: string = (window.navigator.languages ? window.navigator.languages[0] : null)\r\n            || window.navigator.language || window.navigator[\"browserLanguage\"] || window.navigator[\"userLanguage\"] || null;\r\n        if (!browserLang) return browserLang;\r\n\r\n        [\"-\", \"_\"].forEach(splitter => {\r\n            if (browserLang.indexOf(splitter) >= 0) {\r\n                browserLang = browserLang.split(splitter)[0];\r\n            }\r\n        })\r\n        return browserLang;\r\n    }\r\n\r\n    protected mergeTranslations(): void {\r\n        const languages = new Set([\r\n            ...Object.keys(this.translations),\r\n            ...Object.keys(this.overrideTranslations)\r\n        ]);\r\n        this.mergedTranslations = Array.from(languages).reduce((merged, language) => {\r\n            merged[language] = {\r\n                ...(this.translations[language] || EMPTY_DICT),\r\n                ...(this.overrideTranslations[language] || EMPTY_DICT),\r\n            };\r\n            return merged;\r\n        }, {} as GlobalTranslations);\r\n    }\r\n}\r\n","import {Injectable} from \"@angular/core\";\r\nimport {BehaviorSubject, combineLatest, firstValueFrom, Observable} from \"rxjs\";\r\nimport {map} from \"rxjs/operators\";\r\nimport {ILanguageSetting, ILanguageSettings, ITranslations} from \"../common-types\";\r\nimport {StaticLanguageService, EMPTY_DICT} from \"./static-language.service\";\r\n\r\n@Injectable()\r\nexport class LanguageService extends StaticLanguageService {\r\n\r\n    protected translationRequests: Record<string, Promise<ITranslations>>;\r\n    protected settingsPromise: Promise<ILanguageSettings>;\r\n    protected languageSettings: BehaviorSubject<ILanguageSettings>;\r\n\r\n    get currentLanguage(): string {\r\n        return this.currentLang || this.defaultLanguage;\r\n    }\r\n\r\n    set currentLanguage(lang: string) {\r\n        this.useLanguage(lang).then(() => {\r\n            this.events.languageChanged.next(lang);\r\n        });\r\n    }\r\n\r\n    get settings(): ILanguageSetting {\r\n        const settings = this.languageSettings.value;\r\n        return !settings ? {} : settings.settings[this.currentLanguage] || {};\r\n    }\r\n\r\n    get $settings(): Observable<ILanguageSetting> {\r\n        this.loadSettings().then(s => this.languageSettings.next(s));\r\n        return combineLatest([this.languageSettings, this.events.languageChanged]).pipe(map(([settings, lang]) => {\r\n            return !settings ? {} : settings.settings[lang as string] || {};\r\n        }));\r\n    }\r\n\r\n    protected initService(): void {\r\n        super.initService();\r\n        this.client.setParam(\"language\", \"en\");\r\n        this.translationRequests = {};\r\n        this.languageSettings = new BehaviorSubject<ILanguageSettings>(null);\r\n        if (this.universal.isServer) return;\r\n        window[\"setLanguage\"] = (lang: string) => {\r\n            this.currentLanguage = lang;\r\n        };\r\n    }\r\n\r\n    async initFromSettings(): Promise<any> {\r\n        const defaultLanguage = this.defaultLanguage;\r\n        const settings = await this.loadSettings();\r\n        this.languageSettings.next(settings);\r\n        const devLanguages = settings.devLanguages || [];\r\n        this.languageList = (settings.languages || []).filter(lang => {\r\n            const unavailable = settings.settings[lang]?.unavailable;\r\n            if (unavailable) {\r\n                const parts = unavailable.split(\"/\");\r\n                const value = parts[0] || parts[1];\r\n                const flags = parts.length > 1 ? parts[parts.length - 1] : \"g\";\r\n                if (new RegExp(value, flags).test(this.config.baseDomain)) return false;\r\n            }\r\n            return devLanguages.indexOf(lang) < 0;\r\n        });\r\n        if (this.languageList.length === 0) {\r\n            this.languageList = [defaultLanguage];\r\n        }\r\n        const lang = this.selectLanguage(this.currentLang)\r\n            ?? this.selectLanguage(defaultLanguage)\r\n            ?? this.selectLanguage(settings.defaultLanguage || this.languageList[0]);\r\n        await this.useLanguage(lang);\r\n        this.events.languageChanged.next(lang);\r\n    }\r\n\r\n    protected selectLanguage(lang: string): string {\r\n        if (!lang) return null;\r\n        return this.languageList.length === 0 || this.languageList.includes(lang)\r\n            ? lang : null;\r\n    }\r\n\r\n    protected async useLanguage(lang: string): Promise<ITranslations> {\r\n        lang = this.selectLanguage(lang);\r\n        this.client.setParam(\"language\", lang);\r\n        if (lang === this.currentLang) return this.dictionary;\r\n        this.storage.set(\"language\", lang);\r\n        this.currentLang = lang;\r\n        return this.loadDictionary();\r\n    }\r\n\r\n    async getDictionary(lang: string): Promise<ITranslations> {\r\n        if (!lang) return EMPTY_DICT;\r\n        const ext = this.config.translationExt || ``;\r\n        this.translationRequests[lang] = this.translationRequests[lang] || firstValueFrom(this.client.get<ITranslations>(`${this.config.translationUrl}${lang}${ext}`))\r\n            .then(response => {\r\n                response = response || {};\r\n                const dictionary = Object.keys(response).reduce((result, key) => {\r\n                    result[key.toLocaleLowerCase()] = response[key];\r\n                    return result;\r\n                }, {} as ITranslations);\r\n                this.translations[lang] = dictionary;\r\n                this.mergeTranslations();\r\n                return dictionary;\r\n            }).catch(error => {\r\n                console.warn(\"Translation dictionary problem:\", error);\r\n                return EMPTY_DICT;\r\n            })\r\n        return this.translationRequests[lang];\r\n    }\r\n\r\n    protected async loadDictionary(): Promise<ITranslations> {\r\n        return this.getDictionary(this.currentLang);\r\n    }\r\n\r\n    protected loadSettings(): Promise<ILanguageSettings> {\r\n        const ext = this.config.translationExt || ``;\r\n        this.settingsPromise = this.settingsPromise || firstValueFrom(this.client.get<ILanguageSettings>(`${this.config.translationUrl}languageSettings${ext}`))\r\n            .catch(error => {\r\n                console.warn(\"Translation settings problem:\", error);\r\n                return {\r\n                    languages: [\"de\", \"en\", \"hu\"],\r\n                    devLanguages: [],\r\n                    defaultLanguage: \"de\",\r\n                    settings: {\r\n                        de: {},\r\n                        hu: {},\r\n                        en: {}\r\n                    }\r\n                };\r\n            });\r\n        return this.settingsPromise;\r\n    }\r\n}\r\n","import {Inject, Injectable, Injector} from \"@angular/core\";\r\nimport {\r\n    DynamicSchemaRef,\r\n    IApiService,\r\n    OpenApiSchema,\r\n    OpenApiSchemaProperty, OpenApiSchemaRef,\r\n    OpenApiSchemas, OpenApiSchemaSelector\r\n} from \"../common-types\";\r\nimport {API_SERVICE, SCHEMA_SELECTOR, STATIC_SCHEMAS} from \"../tokens\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\n\r\n@Injectable()\r\nexport class OpenApiService {\r\n\r\n    private apiDocs: Promise<any>;\r\n    private schemas: Promise<OpenApiSchemas>;\r\n    private readonly dynamicSchemas: Record<string, OpenApiSchema>;\r\n\r\n    constructor(@Inject(API_SERVICE) readonly api: IApiService,\r\n                @Inject(SCHEMA_SELECTOR) protected readonly schemaSelector: OpenApiSchemaSelector,\r\n                @Inject(STATIC_SCHEMAS) protected readonly staticSchemas: OpenApiSchemas,\r\n                protected readonly injector: Injector) {\r\n        this.dynamicSchemas = {};\r\n    }\r\n\r\n    isDynamicSchema(value: any): value is Required<DynamicSchemaRef> {\r\n        if (!ObjectUtils.isObject(value)) {\r\n            return false;\r\n        }\r\n        const definition = value as DynamicSchemaRef;\r\n        return ObjectUtils.isStringWithValue(definition.dynamicSchema)\r\n            || ObjectUtils.isStringWithValue(definition.dynamicSchemaUrl)\r\n            || ObjectUtils.isStringWithValue(definition.dynamicSchemaName);\r\n    }\r\n\r\n    async getSchemas(): Promise<OpenApiSchemas> {\r\n        const cache = this.api.cached(\"auth\");\r\n        const apiDocs = this.api.get(\"api-docs\", {cache});\r\n        if (apiDocs !== this.apiDocs) {\r\n            this.apiDocs = apiDocs;\r\n            this.schemas = apiDocs.then(res => {\r\n                return {\r\n                    ...this.extractSchemas({definitions: this.staticSchemas}),\r\n                    ...this.extractSchemas(res)\r\n                };\r\n            });\r\n        }\r\n        return this.schemas;\r\n    }\r\n\r\n    async getReferences(property: OpenApiSchemaProperty, schema: OpenApiSchema): Promise<OpenApiSchema[]> {\r\n        const props = !property.items ? [property] : [property, property.items];\r\n        const references: Array<OpenApiSchemaRef | DynamicSchemaRef> = [];\r\n        for (const prop of props) {\r\n            if (this.isDynamicSchema(prop) || ObjectUtils.isStringWithValue(prop.$ref)) {\r\n                references.push(prop);\r\n                continue;\r\n            }\r\n            if (ObjectUtils.isArray(prop.allOf)) {\r\n                prop.allOf\r\n                    .filter(ref => ObjectUtils.isStringWithValue(ref.$ref))\r\n                    .forEach(ref => references.push(ref));\r\n            }\r\n            if (ObjectUtils.isArray(prop.oneOf)) {\r\n                prop.oneOf\r\n                    .filter(ref => ObjectUtils.isStringWithValue(ref.$ref))\r\n                    .forEach(ref => references.push(ref));\r\n            }\r\n        }\r\n\r\n        return Promise.all(references.map(ref => {\r\n            if (this.isDynamicSchema(ref)) {\r\n                return this.getDynamicSchema(ref);\r\n            }\r\n            return this.getSchema((ref as OpenApiSchemaRef).$ref.split(\"/\").pop());\r\n        }));\r\n    }\r\n\r\n    async getSchema(name: string): Promise<OpenApiSchema> {\r\n        const schemas = await this.getSchemas();\r\n        return this.schemaSelector(name, schemas, this.injector) || null;\r\n    }\r\n\r\n    protected async getDynamicSchema(definition: DynamicSchemaRef): Promise<OpenApiSchema> {\r\n        const cache = this.api.cached(\"auth\");\r\n        const dynamicDocs = await this.api.get(\r\n            definition.dynamicSchema || definition.dynamicSchemaUrl || \"dynamic-schemas\",\r\n            {cache}\r\n        );\r\n        const dynamicSchemas = this.extractSchemas(dynamicDocs);\r\n        const dynamicSchema = dynamicSchemas[definition.dynamicSchemaName || \"DTO\"];\r\n        delete dynamicSchemas[definition.dynamicSchemaName || \"DTO\"];\r\n        Object.assign(this.dynamicSchemas, dynamicSchemas);\r\n        return dynamicSchema;\r\n    }\r\n\r\n    protected extractSchemas(res: any): OpenApiSchemas {\r\n        const schemas: OpenApiSchemas = Object.assign({}, res.components?.schemas || res.definitions || {});\r\n        Object.values(schemas).forEach(schema => {\r\n            Object.keys(schema.properties || {}).forEach(p => {\r\n                schema.properties[p].id = p;\r\n            });\r\n        });\r\n        return schemas;\r\n    }\r\n}\r\n","import {Inject, Injectable} from \"@angular/core\";\r\nimport {AsyncMethod, ILanguageService, IToasterService, ToastType} from \"../common-types\";\r\nimport {LANGUAGE_SERVICE} from \"../tokens\";\r\n\r\n@Injectable()\r\nexport class BaseToasterService<T = any, P extends Record<string, any> = {}> implements IToasterService {\r\n\r\n    protected colorMap: Record<ToastType, string>;\r\n\r\n    constructor(@Inject(LANGUAGE_SERVICE) protected language: ILanguageService) {\r\n        this.colorMap = {\r\n            info: \"#2F96B4\",\r\n            success: \"#51A351\",\r\n            warning: \"#F89406\",\r\n            error: \"#BD362F\"\r\n        };\r\n    }\r\n\r\n    info(message: string, params?: P) {\r\n        this.translate(message, params, \"info\");\r\n    }\r\n\r\n    success(message: string, params?: P) {\r\n        this.translate(message, params, \"success\");\r\n    }\r\n\r\n    warning(message: string, params?: P){\r\n        this.translate(message, params, \"warning\");\r\n    }\r\n\r\n    error(message: string, params?: P) {\r\n        this.translate(message, params, \"error\");\r\n    }\r\n\r\n    infoPromised(message: string, params?: P) {\r\n        return this.translatePromised(message, params, \"info\");\r\n    }\r\n\r\n    successPromised(message: string, params?: P) {\r\n        return this.translatePromised(message, params, \"success\");\r\n    }\r\n\r\n    warningPromised(message: string, params?: P) {\r\n        return this.translatePromised(message, params, \"warning\");\r\n    }\r\n\r\n    errorPromised(message: string, params?: P) {\r\n        return this.translatePromised(message, params, \"error\");\r\n    }\r\n\r\n    handleAsyncMethod(method: AsyncMethod): void {\r\n        if (!method) return;\r\n        method().then(result => {\r\n            if (result) {\r\n                this.success(result.message, result.context);\r\n            }\r\n        }, reason => {\r\n            if (!reason || !reason.message)\r\n                throw new Error(\"Reason must implement IAsyncMessage interface\");\r\n            this.error(reason.message, reason.context);\r\n        });\r\n    }\r\n\r\n    protected translate(message: string, params: P, type: ToastType): void {\r\n        this.language.getTranslation(message, params).then(str => {\r\n            this.show(str, type, params);\r\n        });\r\n    }\r\n\r\n    protected async translatePromised(message: string, params: P, type: ToastType): Promise<T> {\r\n        const str = await this.language.getTranslation(message, params);\r\n        return this.show(str, type, params);\r\n    }\r\n\r\n    protected show(message: string, type: ToastType, params: P): T | Promise<T> {\r\n        console.log(message, `background: ${this.colorMap[type]}; color: #ffffff`, params);\r\n        return null;\r\n    }\r\n}\r\n","import {\r\n    ApplicationRef,\r\n    ComponentRef,\r\n    createComponent,\r\n    EnvironmentInjector,\r\n    Inject,\r\n    Injectable,\r\n    Injector,\r\n    NgModuleRef,\r\n    Optional,\r\n    Type,\r\n    ViewRef\r\n} from \"@angular/core\";\r\nimport {Route, Router} from \"@angular/router\";\r\nimport {firstValueFrom, Observable} from \"rxjs\";\r\n\r\nimport {\r\n    CssSelectorList,\r\n    DynamicComponentLocation,\r\n    DynamicModuleInfo\r\n} from \"../common-types\";\r\nimport {getComponentDef, parseSelector, selectorMatchesList} from \"../utils/misc\";\r\nimport {DYNAMIC_ENTRY_COMPONENTS, DYNAMIC_MODULE_INFO, ROOT_ELEMENT} from \"../tokens\";\r\n\r\ninterface LoadedRouterConfig {\r\n    routes: Route[];\r\n    injector: EnvironmentInjector | undefined;\r\n}\r\n\r\ninterface RouterConfigLoader {\r\n    loadChildren(parentInjector: Injector, route: Route): Observable<LoadedRouterConfig>;\r\n}\r\n\r\ninterface NavigationTransitions {\r\n    configLoader: RouterConfigLoader;\r\n}\r\n\r\n@Injectable()\r\nexport class ComponentLoaderService {\r\n\r\n    private readonly typeMap: Array<[string, CssSelectorList, Type<any>]>;\r\n    private readonly moduleRegistry: DynamicModuleInfo[];\r\n    private readonly moduleMap: Map<string, Promise<EnvironmentInjector>>;\r\n\r\n    get injector(): Injector {\r\n        return this.ngModule.injector;\r\n    }\r\n\r\n    constructor(\r\n        protected appRef: ApplicationRef,\r\n        protected ngModule: NgModuleRef<any>,\r\n        @Inject(ROOT_ELEMENT) protected rootElement: HTMLElement,\r\n        @Optional() @Inject(DYNAMIC_MODULE_INFO) moduleRegistry: DynamicModuleInfo[]\r\n    ) {\r\n        this.typeMap = [];\r\n        this.moduleRegistry = moduleRegistry || [];\r\n        this.moduleMap = new Map();\r\n        this.populateTypeMap(\"root\", this.ngModule.injector);\r\n    }\r\n\r\n    findComponentType<T>(selector: string, moduleId: string = \"root\"): Type<T> {\r\n        const cssSelector = parseSelector(selector);\r\n        const results = new Map<string, Type<any>>();\r\n        for (const item of this.typeMap) {\r\n            if (selectorMatchesList(item[1], cssSelector)) {\r\n                results.set(item[0], item[2]);\r\n            }\r\n        }\r\n        const keys = Array.from(results.keys());\r\n        const result = results.get(moduleId) || results.get(keys[0]);\r\n        if (!result) {\r\n            throw new Error(`Cannot find component by selector: ${selector} in module '${moduleId}' nor in any other module`);\r\n        }\r\n        return result;\r\n    }\r\n\r\n    async getComponentType(location: DynamicComponentLocation): Promise<Type<any>> {\r\n\r\n        // Find module info\r\n        const moduleInfoList = this.moduleRegistry\r\n            .filter(info => info.moduleId === location.moduleId);\r\n\r\n        if (moduleInfoList.length > 1) {\r\n            throw new Error(`Module with id '${location.moduleId}' has been declared more than once.`)\r\n        }\r\n\r\n        const moduleInfo = moduleInfoList[0];\r\n\r\n        if (!moduleInfo) {\r\n            throw new Error(`Module with id '${location.moduleId}' not found.`);\r\n        }\r\n\r\n        await this.loadModule(moduleInfo);\r\n\r\n        return this.findComponentType(location.selector, location.moduleId);\r\n    }\r\n\r\n    createComponent(componentType: Type<any>, projectableNodes?: any[], injector?: Injector, split?: boolean): ComponentRef<any> {\r\n        if (projectableNodes) {\r\n            projectableNodes = split ? projectableNodes.filter(node => {\r\n                return node && node.nodeType !== Node.COMMENT_NODE;\r\n            }).map(node => [node]) : [projectableNodes];\r\n        } else {\r\n            projectableNodes = [];\r\n        }\r\n        return createComponent(componentType, {\r\n            environmentInjector: this.appRef.injector,\r\n            elementInjector: injector || this.injector,\r\n            projectableNodes\r\n        });\r\n    }\r\n\r\n    bootstrap<T>(componentType: Type<T>, rootSelectorOrNode?: string | any): ComponentRef<T> {\r\n        rootSelectorOrNode = rootSelectorOrNode || this.rootElement;\r\n        return !rootSelectorOrNode ? null : this.appRef.bootstrap(componentType, rootSelectorOrNode);\r\n    }\r\n\r\n    attachView(viewRef: ViewRef): void {\r\n        if (!viewRef) return;\r\n        this.appRef.attachView(viewRef);\r\n    }\r\n\r\n    detachView(viewRef: ViewRef): void {\r\n        if (!viewRef) return;\r\n        this.appRef.detachView(viewRef);\r\n        try {\r\n            viewRef.destroy();\r\n        } catch (e) {\r\n            console.log(`Can't destroy view, maybe it is already destroyed?`);\r\n        }\r\n    }\r\n\r\n    private populateTypeMap(moduleId: string, injector: EnvironmentInjector): void {\r\n        const entries = injector.get(DYNAMIC_ENTRY_COMPONENTS) || [];\r\n        if (entries.length == 0) {\r\n            console.warn(\"Entry components not found in the module\", injector);\r\n        }\r\n        entries.forEach(entryComponents => {\r\n            entryComponents.components.forEach(type => {\r\n                const def = getComponentDef(type);\r\n                this.typeMap.push([entryComponents.moduleId || moduleId, def.selectors as any, type]);\r\n            });\r\n        });\r\n    }\r\n\r\n    private async loadModule(moduleInfo: DynamicModuleInfo): Promise<EnvironmentInjector> {\r\n        if (this.moduleMap.has(moduleInfo.moduleId)) {\r\n            return this.moduleMap.get(moduleInfo.moduleId);\r\n        }\r\n        this.moduleMap.set(moduleInfo.moduleId, new Promise(async resolve => {\r\n            const router = this.injector.get(Router);\r\n            const loader = (router[\"navigationTransitions\"] as NavigationTransitions).configLoader;\r\n            const loaded = await firstValueFrom(loader.loadChildren(this.injector, {\r\n                loadChildren: moduleInfo.loadChildren\r\n            }));\r\n            if (moduleInfo.routes) {\r\n                router.resetConfig(moduleInfo.routes);\r\n                if (moduleInfo.initialNavigation !== false) {\r\n                    router.initialNavigation();\r\n                }\r\n            }\r\n            this.populateTypeMap(moduleInfo.moduleId, loaded.injector);\r\n            resolve(loaded.injector);\r\n        }));\r\n        return this.moduleMap.get(moduleInfo.moduleId);\r\n    }\r\n}\r\n","import {Inject, Injectable} from \"@angular/core\";\r\nimport {DefaultUrlSerializer, UrlSegment, UrlSegmentGroup, UrlTree} from \"@angular/router\";\r\nimport {ILanguageService} from \"../common-types\";\r\nimport {LANGUAGE_SERVICE} from \"../tokens\";\r\n\r\nexport interface IUrlDictionary {\r\n    [key: string]: string\r\n}\r\n\r\n@Injectable()\r\nexport class TranslatedUrlSerializer extends DefaultUrlSerializer {\r\n\r\n    protected cache: {[lang: string]: IUrlDictionary};\r\n\r\n    constructor(@Inject(LANGUAGE_SERVICE) readonly language: ILanguageService) {\r\n        super();\r\n        this.cache = {};\r\n    }\r\n\r\n    serialize(tree: UrlTree): string {\r\n        const copy = new UrlTree();\r\n        const dictionary = this.getDictionary(true);\r\n        copy.root = this.modifyTreeRecursive(tree.root, segment => {\r\n            segment.path = dictionary[segment.path] || segment.path;\r\n        });\r\n        copy.queryParams = tree.queryParams;\r\n        return super.serialize(copy);\r\n    }\r\n\r\n    parse(url: string): UrlTree {\r\n        const tree = super.parse(url);\r\n        const dictionary = this.getDictionary(false);\r\n        tree.root = this.modifyTreeRecursive(tree.root, segment => {\r\n            segment.path = dictionary[segment.path] || segment.path;\r\n        });\r\n        return tree;\r\n    }\r\n\r\n    getDictionary(serialize: boolean): IUrlDictionary {\r\n        const method = serialize ? `serialize` : `parse`;\r\n        const key = `${this.language.currentLanguage}-${method}`;\r\n        if (!this.cache[key]) {\r\n            const dict = this.language.dictionary;\r\n            this.cache[key] = Object.keys(dict).reduce((res, key) => {\r\n                if (!key.startsWith(\"route.\")) return res;\r\n                const value = dict[key];\r\n                key = key.replace(\"route.\", \"\");\r\n                res[serialize ? key : value] = serialize ? value : key;\r\n                return res;\r\n            }, {});\r\n        }\r\n        return this.cache[key];\r\n    }\r\n\r\n    modifyTreeRecursive(segmentGroup: UrlSegmentGroup, cb: (segment: UrlSegment) => void): UrlSegmentGroup {\r\n        if (!segmentGroup) return null;\r\n        const childrenArr = [];\r\n        const children = Object.keys(segmentGroup.children || {}).reduce((res, key) => {\r\n            const child = this.modifyTreeRecursive(segmentGroup.children[key], cb);\r\n            childrenArr.push(child);\r\n            res[key] = child;\r\n            return res;\r\n        }, {});\r\n        const newGroup = new UrlSegmentGroup(segmentGroup.segments.map(s => {\r\n            s = new UrlSegment(s.path, Object.assign({}, s.parameters));\r\n            cb(s);\r\n            return s;\r\n        }), children);\r\n        childrenArr.forEach(c => {\r\n            c.parent = newGroup;\r\n        });\r\n        return newGroup;\r\n    }\r\n}\r\n","import {EventEmitter, Inject, Injectable, NgZone} from \"@angular/core\";\nimport {IPromiseService} from \"../common-types\";\n\n@Injectable()\nexport class PromiseService implements IPromiseService {\n\n    get count(): number {\n        return this.promiseCount;\n    }\n\n    get onChanged(): EventEmitter<number> {\n        return this.promiseChanged;\n    }\n\n    protected promiseCount: number;\n    protected readonly promiseChanged: EventEmitter<number>;\n\n    constructor(@Inject(NgZone) readonly zone: NgZone) {\n        this.promiseCount = 0;\n        this.promiseChanged = new EventEmitter<number>();\n    }\n\n    create<T>(executor: (resolve: (value?: T | PromiseLike<T>) => void, reject: (reason?: any) => void) => void): Promise<T> {\n        return this.add(this.zone.runOutsideAngular(() => new Promise<T>(executor)));\n    }\n\n    all(promises: Promise<any>[]): Promise<any> {\n        return this.add(this.zone.runOutsideAngular(() => Promise.all(promises)));\n    }\n\n    resolve<T>(value: T | PromiseLike<T>): Promise<T> {\n        return this.add(this.zone.runOutsideAngular(() => Promise.resolve(value)));\n    }\n\n    reject<T>(value: T | PromiseLike<T>): Promise<T> {\n        return this.add(this.zone.runOutsideAngular(() => Promise.reject(value)));\n    }\n\n    protected promiseFinished(): void {\n        if (this.promiseCount == 0) return;\n        this.promiseCount--;\n        this.promiseChanged.emit(this.promiseCount);\n    }\n\n    protected add<T>(promise: Promise<T>): Promise<T> {\n        this.promiseCount++;\n        this.promiseChanged.emit(this.promiseCount);\n        return new Promise<any>((resolve, reject) => {\n            promise.then(v => {\n                resolve(v);\n                this.promiseFinished();\n            }, r => {\n                reject(r);\n                this.promiseFinished();\n            });\n        });\n    }\n}\n","import {Inject, Injectable, OnDestroy} from \"@angular/core\";\r\nimport {BehaviorSubject, Subscription} from \"rxjs\";\r\nimport {IApiService} from \"../common-types\";\r\nimport {ExtraHeaders, SocketClient, SocketData, SocketDataObj} from \"../utils/socket-client\";\r\nimport {LoaderUtils} from \"../utils/loader.utils\";\r\nimport {API_SERVICE, SOCKET_IO_PATH} from \"../tokens\";\r\nimport {EventsService} from \"./events.service\";\r\n\r\n@Injectable()\r\nexport class SocketService implements OnDestroy {\r\n\r\n    protected client: SocketClient;\r\n    protected userSub: Subscription;\r\n\r\n    get status(): BehaviorSubject<boolean> {\r\n        return this.client.status;\r\n    }\r\n\r\n    get id(): string {\r\n        return this.client.id;\r\n    }\r\n\r\n    constructor(@Inject(API_SERVICE) readonly api: IApiService,\r\n                @Inject(SOCKET_IO_PATH) protected ioPath: string,\r\n                protected events: EventsService) {\r\n\r\n        const url = this.api.url(this.ioPath);\r\n        this.client = new SocketClient(url, async () => {\r\n            let script: HTMLScriptElement = null;\r\n            try {\r\n                script = await LoaderUtils.loadScript(`${url}/socket.io.js`);\r\n            } catch (e) {\r\n                script?.remove();\r\n                await LoaderUtils.loadScript(`https://cdn.socket.io/4.7.4/socket.io.min.js`);\r\n            }\r\n            return window[\"io\"];\r\n        });\r\n    }\r\n\r\n    withAuth(extraHeaders: ExtraHeaders = {}): void {\r\n        this.userSub = this.events.userChanged.subscribe(user => {\r\n            if (user) {\r\n                this.connect(extraHeaders);\r\n                return;\r\n            }\r\n            this.disconnect();\r\n        });\r\n        if (this.events.isAuthenticated) {\r\n            this.connect(extraHeaders);\r\n        }\r\n    }\r\n\r\n    ngOnDestroy(): void {\r\n        this.userSub?.unsubscribe();\r\n        this.disconnect();\r\n    }\r\n\r\n    connect(extraHeaders: ExtraHeaders = {}): void {\r\n        if (this.userSub && this.events.isAuthenticated) {\r\n            extraHeaders = {\r\n                ...(extraHeaders || {}),\r\n                ...Object.entries(this.api.client.requestHeaders || {}).reduce((res, entry) => {\r\n                    res[entry[0]] = Array.isArray(entry[1]) ? entry[1].join(\", \") : entry[1];\r\n                    return res;\r\n                }, {})\r\n            };\r\n        }\r\n        this.client.connect(extraHeaders);\r\n    }\r\n\r\n    disconnect(): void {\r\n        this.client.disconnect();\r\n    }\r\n\r\n    subscribe(event: string, cb: (value: SocketData) => void): Subscription {\r\n        return this.client.subscribe(event, cb);\r\n    }\r\n\r\n    emit(event: string, content: SocketData): void {\r\n        this.client.emit(event, content);\r\n    }\r\n\r\n    request(event: string, content: SocketDataObj): Promise<any> {\r\n        return this.client.request(event, content);\r\n    }\r\n}\r\n","import {KeyValue} from \"@angular/common\";\r\n\r\nexport type DragHandlerEvents = \"dragstart\" | \"dragenter\" | \"dragleave\" | \"drop\";\r\nexport type DragEventListener = (ev: DragEvent) => boolean | void;\r\n\r\nexport class DragDropHandler {\r\n\r\n    protected static handlers: Map<HTMLElement, DragDropHandler>;\r\n\r\n    protected readonly onDragStart: DragEventListener;\r\n    protected readonly onDragEnter: DragEventListener;\r\n    protected readonly onDragOver: DragEventListener;\r\n    protected readonly onDragLeave: DragEventListener;\r\n    protected readonly onDrop: DragEventListener;\r\n\r\n    protected first: boolean;\r\n    protected second: boolean;\r\n    protected dropEffect: \"none\" | \"copy\" | \"link\" | \"move\";\r\n    protected effectAllowed: \"none\" | \"copy\" | \"copyLink\" | \"copyMove\" | \"link\" | \"linkMove\" | \"move\" | \"all\" | \"uninitialized\";\r\n    protected listeners: Array<KeyValue<DragHandlerEvents, DragEventListener>>;\r\n\r\n    static get(el: HTMLElement) {\r\n        if (DragDropHandler.handlers?.has(el)) {\r\n            return DragDropHandler.handlers.get(el);\r\n        }\r\n        return new DragDropHandler(el);\r\n    }\r\n\r\n    protected static add(el: HTMLElement, inst: DragDropHandler) {\r\n        DragDropHandler.handlers = DragDropHandler.handlers || new Map();\r\n        DragDropHandler.handlers.set(el, inst);\r\n    }\r\n\r\n    protected constructor(protected el: HTMLElement) {\r\n        this.first = false;\r\n        this.second = false;\r\n        this.listeners = [];\r\n        this.onDragStart = ev => {\r\n            this.fireEvent(\"dragstart\", ev);\r\n            this.effectAllowed = ev.dataTransfer.effectAllowed;\r\n            this.dropEffect = ev.dataTransfer.dropEffect;\r\n        };\r\n        this.onDragEnter = ev => {\r\n            if (this.first) {\r\n                this.second = true;\r\n            } else {\r\n                this.first = true;\r\n                this.fireEvent(\"dragenter\", ev);\r\n                this.effectAllowed = ev.dataTransfer.effectAllowed;\r\n                this.dropEffect = ev.dataTransfer.dropEffect;\r\n            }\r\n        };\r\n        this.onDragOver = ev => {\r\n            ev.preventDefault();\r\n            ev.dataTransfer.effectAllowed = this.effectAllowed;\r\n            ev.dataTransfer.dropEffect = this.dropEffect;\r\n        };\r\n        this.onDragLeave = ev => {\r\n            if (this.second) {\r\n                this.second = false\r\n            } else if (this.first) {\r\n                this.first = false\r\n            }\r\n            if (!this.first && !this.second) {\r\n                this.fireEvent(\"dragleave\", ev);\r\n            }\r\n        };\r\n        this.onDrop = ev => {\r\n            this.first = false;\r\n            this.second = false;\r\n            this.fireEvent(\"drop\", ev);\r\n        };\r\n        this.el.addEventListener(\"dragstart\", this.onDragStart);\r\n        this.el.addEventListener(\"dragenter\", this.onDragEnter);\r\n        this.el.addEventListener(\"dragover\", this.onDragOver);\r\n        this.el.addEventListener(\"dragleave\", this.onDragLeave);\r\n        this.el.addEventListener(\"drop\", this.onDrop);\r\n        DragDropHandler.add(this.el, this);\r\n    }\r\n\r\n    addListener(key: DragHandlerEvents, value: DragEventListener): void {\r\n        this.listeners = [\r\n            ...this.listeners,\r\n            {key, value}\r\n        ];\r\n    }\r\n\r\n    removeListener(type: DragHandlerEvents, listener: DragEventListener): void {\r\n        this.listeners = this.listeners.filter(entry => entry.key !== type || entry.value !== listener);\r\n        if (this.listeners.length > 0) return;\r\n        this.destroy();\r\n    }\r\n\r\n    protected fireEvent(type: DragHandlerEvents, ev: DragEvent): void {\r\n        this.listeners.forEach(entry => {\r\n            if (entry.key !== type) return;\r\n            entry.value(ev);\r\n        });\r\n    }\r\n\r\n    protected destroy(): void {\r\n        this.el.removeEventListener(\"dragstart\", this.onDragStart);\r\n        this.el.removeEventListener(\"dragenter\", this.onDragEnter);\r\n        this.el.removeEventListener(\"dragover\", this.onDragOver);\r\n        this.el.removeEventListener(\"dragleave\", this.onDragLeave);\r\n        this.el.removeEventListener(\"drop\", this.onDrop);\r\n        DragDropHandler.handlers?.delete(this.el);\r\n    }\r\n}\r\n","import {ɵDomEventsPlugin as EventManagerPlugin} from \"@angular/platform-browser\";\r\nimport {Inject, Injectable} from \"@angular/core\";\r\nimport {DOCUMENT} from \"@angular/common\";\r\nimport {UniversalService} from \"../services/universal.service\";\r\nimport {DragDropHandler, DragHandlerEvents} from \"./drag-drop-handler\";\r\n\r\nexport function emptyRemove(): void {\r\n\r\n}\r\n\r\n@Injectable()\r\nexport class DragDropEventPlugin extends EventManagerPlugin {\r\n\r\n    private static EVENT_NAMES: DragHandlerEvents[] = [\"dragstart\", \"dragenter\", \"dragleave\", \"drop\"];\r\n\r\n    constructor(@Inject(DOCUMENT) doc: any, private universal: UniversalService) {\r\n        super(doc);\r\n    }\r\n\r\n    supports(eventName: DragHandlerEvents) {\r\n        return DragDropEventPlugin.EVENT_NAMES.includes(eventName);\r\n    }\r\n\r\n    addEventListener(element: HTMLElement, eventName: DragHandlerEvents, handler: Function): Function {\r\n        const zone = this.manager.getZone();\r\n        return zone.runOutsideAngular(() => {\r\n            if (this.universal.isServer) return emptyRemove;\r\n            const callback = (e: DragEvent) => {\r\n                zone.run(() => handler(e));\r\n            };\r\n            const dd = DragDropHandler.get(element);\r\n            dd.addListener(eventName, callback);\r\n            return () => dd.removeListener(eventName, callback);\r\n        });\r\n    }\r\n}\r\n","import elementResizeDetectorMaker from \"element-resize-detector\";\nimport type {Erd} from \"element-resize-detector\";\nimport {ResizeEventStrategy} from \"../common-types\";\n\nexport class ResizeDetector {\n\n    protected readonly detector: Erd;\n    protected isObservable: boolean;\n    protected observers: Map<HTMLElement, ResizeObserver>;\n\n    constructor(protected resizeStrategy: ResizeEventStrategy) {\n        this.detector = elementResizeDetectorMaker({\n            strategy: resizeStrategy === \"observer\" ? \"object\" : resizeStrategy\n        });\n        this.isObservable = resizeStrategy === \"observer\" && typeof ResizeObserver === \"function\";\n        this.observers = new Map();\n    }\n\n    listenTo(elem: HTMLElement, cb: (el: HTMLElement) => void): void {\n        if (!this.isObservable) {\n            this.detector.listenTo(elem, cb);\n            return;\n        }\n        if (this.observers.has(elem)) return;\n        const observer = new ResizeObserver(() => {\n            requestAnimationFrame(() => {\n                cb(elem);\n            });\n        });\n        observer.observe(elem);\n        this.observers.set(elem, observer);\n    }\n\n    uninstall(elem: HTMLElement): void {\n        if (!this.isObservable) {\n            this.detector.uninstall(elem);\n            return;\n        }\n        if (!this.observers.has(elem)) return;\n        const observer = this.observers.get(elem);\n        observer.unobserve(elem);\n        this.observers.delete(elem);\n    }\n}\n","import {ɵDomEventsPlugin as EventManagerPlugin} from \"@angular/platform-browser\";\r\nimport {Inject, Injectable} from \"@angular/core\";\r\nimport {DOCUMENT} from \"@angular/common\";\r\n\r\nimport {ResizeEventStrategy} from \"../common-types\";\r\nimport {TimerUtils} from \"../utils/timer.utils\";\r\nimport {UniversalService} from \"../services/universal.service\";\r\nimport {ResizeDetector} from \"./resize-detector\";\r\nimport {RESIZE_DELAY, RESIZE_STRATEGY} from \"../tokens\";\r\n\r\nfunction emptyRemove(): void {\r\n\r\n}\r\n\r\nfunction isWindow(el: any): boolean {\r\n    return typeof window !== \"undefined\" && el === window;\r\n}\r\n\r\n@Injectable()\r\nexport class ResizeEventPlugin extends EventManagerPlugin {\r\n\r\n    static readonly EVENT_NAME: string = \"resize\";\r\n\r\n    readonly detector: ResizeDetector;\r\n\r\n    constructor(@Inject(DOCUMENT) doc: any,\r\n                @Inject(RESIZE_DELAY) protected resizeDelay: number,\r\n                @Inject(RESIZE_STRATEGY) protected resizeStrategy: ResizeEventStrategy,\r\n                readonly universal: UniversalService) {\r\n        super(doc);\r\n        this.detector = new ResizeDetector(resizeStrategy);\r\n    }\r\n\r\n    supports(eventName: string) {\r\n        return eventName === ResizeEventPlugin.EVENT_NAME;\r\n    }\r\n\r\n    addEventListener(element: HTMLElement, eventName: string, handler: Function): Function {\r\n        const zone = this.manager.getZone();\r\n        return zone.runOutsideAngular(() => {\r\n            if (this.universal.isServer)\r\n                return emptyRemove;\r\n            const timer = TimerUtils.createTimeout();\r\n            const cb = (el: any) => {\r\n                timer.set(() => {\r\n                    zone.run(() => handler(el));\r\n                }, this.resizeDelay);\r\n            };\r\n            if (isWindow(element)) {\r\n                element.addEventListener(eventName, cb);\r\n            }\r\n            else {\r\n                this.detector.listenTo(element, cb);\r\n            }\r\n            return () => {\r\n                try {\r\n                    if (isWindow(element)) {\r\n                        element.removeEventListener(eventName, cb);\r\n                    }\r\n                    else {\r\n                        this.detector.uninstall(element);\r\n                    }\r\n                }\r\n                catch (e) {\r\n                } finally {\r\n                    timer.clear();\r\n                }\r\n            };\r\n        });\r\n    }\r\n}\r\n","import {ɵDomEventsPlugin as EventManagerPlugin} from \"@angular/platform-browser\";\r\nimport {Inject, Injectable} from \"@angular/core\";\r\nimport {DOCUMENT} from \"@angular/common\";\r\nimport {UniversalService} from \"../services/universal.service\";\r\n\r\nexport function emptyRemove(): void {\r\n\r\n}\r\n\r\n@Injectable()\r\nexport class ScrollEventPlugin extends EventManagerPlugin {\r\n\r\n    private static EVENT_NAME: string = \"scroll\";\r\n\r\n    constructor(@Inject(DOCUMENT) doc: any, private universal: UniversalService) {\r\n        super(doc);\r\n    }\r\n\r\n    supports(eventName: string) {\r\n        return eventName === ScrollEventPlugin.EVENT_NAME;\r\n    }\r\n\r\n    addEventListener(element: HTMLElement, eventName: string, handler: Function): Function {\r\n        const zone = this.manager.getZone();\r\n        return zone.runOutsideAngular(() => {\r\n            if (this.universal.isServer) return emptyRemove;\r\n            const callback = (e: Event) => {\r\n                zone.run(() => handler(e));\r\n            };\r\n            element.addEventListener(eventName, callback);\r\n            return () => element.removeEventListener(eventName, callback);\r\n        });\r\n    }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\n\r\n@Pipe({\r\n    standalone: false,\r\n    name: \"chunk\"\r\n})\r\nexport class ChunkPipe implements PipeTransform {\r\n    transform(items: any[], count: number): any[] {\r\n        const result: any[] = [];\r\n        let subResult: any[] = null;\r\n        items.forEach((item, index) => {\r\n            if (index % count == 0) {\r\n                subResult = [];\r\n                result.push(subResult);\r\n            }\r\n            subResult.push(item);\r\n        });\r\n        return result;\r\n    }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\n\r\nexport interface IEntry {\r\n    key: string;\r\n    value: any;\r\n    index: number;\r\n    [key: string]: any;\r\n}\r\n\r\nconst emptyEntries: IEntry[] = [];\r\n\r\n@Pipe({\r\n    standalone: false,\r\n    name: \"entries\"\r\n})\r\nexport class EntriesPipe implements PipeTransform {\r\n\r\n    transform(value: any): IEntry[] {\r\n        if (!value) return emptyEntries;\r\n        const entries: IEntry[] = [];\r\n        ObjectUtils.iterate(value, (val, key) => {\r\n            entries.push({\r\n                key: key,\r\n                value: val,\r\n                index: entries.length\r\n            });\r\n        });\r\n        return entries;\r\n    }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {IExtraProperties} from \"../common-types\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\n\r\n@Pipe({\r\n    standalone: false,\r\n    name: \"extraItemProperties\"\r\n})\r\nexport class ExtraItemPropertiesPipe implements PipeTransform {\r\n    transform(items: any[], properties: IExtraProperties, params: any = {}): any[] {\r\n        const keys = Object.keys(properties);\r\n        keys.forEach(key => {\r\n            const value = properties[key];\r\n            properties[key] = ObjectUtils.isFunction(value) ? value : (item, index, params) => {\r\n                return ObjectUtils.evaluate(value, {\r\n                    item: item,\r\n                    index: index,\r\n                    params: params\r\n                });\r\n            };\r\n        });\r\n        return (items || []).map((item, index) => keys.reduce((result, key) => {\r\n            result[key] = properties[key](item, index, params);\r\n            return result;\r\n        }, {...item}));\r\n    }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\n\r\nexport function defaultFilter() {\r\n    return true;\r\n}\r\n\r\n@Pipe({\r\n    standalone: false,\r\n    name: \"filter\"\r\n})\r\nexport class FilterPipe implements PipeTransform {\r\n    transform(values: any, filter: any = defaultFilter, params: any = {}): any {\r\n        const isObject = ObjectUtils.isObject(values);\r\n        if (!isObject && !ObjectUtils.isArray(values)) return [];\r\n        const filterFunc = ObjectUtils.isFunction(filter) ? filter : (value, key, params, values) => {\r\n            const index = key;\r\n            return ObjectUtils.evaluate(filter, {value, key, params, values, index});\r\n        };\r\n        if (isObject) {\r\n            return Object.keys(values).filter(key => {\r\n                return filterFunc(values[key], key, params, values);\r\n            }).reduce((result, key) => {\r\n                result[key] = values[key];\r\n                return result;\r\n            }, {})\r\n        }\r\n        return values.filter((value, key) => {\r\n            return filterFunc(value, key, params, values);\r\n        });\r\n    }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\n\r\nexport function defaultFilter() {\r\n    return true;\r\n}\r\n\r\n@Pipe({\r\n    standalone: false,\r\n    name: \"find\"\r\n})\r\nexport class FindPipe implements PipeTransform {\r\n    transform(values: any[], filter: any = defaultFilter, params?: any): any {\r\n        if (!ObjectUtils.isArray(values)) return [];\r\n        params = params || {};\r\n        if (ObjectUtils.isObject(params)) {\r\n            params.values = values;\r\n        }\r\n        const filterFunc = ObjectUtils.isFunction(filter) ? filter : (value, index, params, values) => {\r\n            return ObjectUtils.evaluate(filter, {value, index, params, values});\r\n        };\r\n        return values.find((value, index) => filterFunc(value, index, params, values));\r\n    }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {FormatterService} from \"../services/formatter.service\";\r\n\r\n@Pipe({\r\n    standalone: false,\r\n    name: \"formatNumber\"\r\n})\r\nexport class FormatNumberPipe implements PipeTransform {\r\n\r\n    constructor(private formatter: FormatterService) {\r\n    }\r\n\r\n    transform(value: number, format?: string, precision?: number, divider?: number): string {\r\n        return this.formatter.formatNumber(value, format, precision, divider);\r\n    }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\n\r\n@Pipe({\r\n    standalone: false,\r\n    name: \"getOffset\"\r\n})\r\nexport class GetOffsetPipe implements PipeTransform {\r\n    transform(value: any, offset: any): any {\r\n        return value ? (ObjectUtils.isNullOrUndefined(offset) ? value : value[offset]) : null;\r\n    }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\n\r\n@Pipe({\r\n    standalone: false,\r\n    name: \"getType\"\r\n})\r\nexport class GetTypePipe implements PipeTransform {\r\n    transform(value: any): any {\r\n        return ObjectUtils.getType(value);\r\n    }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\n\r\n@Pipe({\r\n    standalone: false,\r\n    name: \"getValue\"\r\n})\r\nexport class GetValuePipe implements PipeTransform {\r\n\r\n    transform(value: any, path: string, defaultVal: any = \"\"): any {\r\n        return !value ? value : ObjectUtils.getValue(value, path, defaultVal);\r\n    }\r\n}\r\n","import {OnDestroy, OnInit, Pipe, PipeTransform, TemplateRef} from \"@angular/core\";\r\nimport {Subscription} from \"rxjs\";\r\nimport {GlobalTemplateService} from \"../services/global-template.service\";\r\n\r\n@Pipe({\r\n    standalone: false,\r\n    pure: false,\r\n    name: \"globalTemplate\"\r\n})\r\nexport class GlobalTemplatePipe implements PipeTransform, OnInit, OnDestroy {\r\n\r\n    protected templatesUpdated: Subscription;\r\n\r\n    protected cachedTemplateId: string;\r\n    protected cachedTemplate: TemplateRef<any>;\r\n\r\n    constructor(protected globalTemplates: GlobalTemplateService) {\r\n        this.cachedTemplateId = null;\r\n        this.cachedTemplate = null;\r\n    }\r\n\r\n    ngOnInit(): void {\r\n        this.templatesUpdated = this.globalTemplates.templatesUpdated.subscribe(() => {\r\n            this.cachedTemplate = null;\r\n        });\r\n    }\r\n\r\n    ngOnDestroy(): void {\r\n        if (this.templatesUpdated)\r\n            this.templatesUpdated.unsubscribe();\r\n    }\r\n\r\n    transform(templateId: string, component?: any): TemplateRef<string> {\r\n        if (!templateId) return null;\r\n        if (this.cachedTemplate === null || this.cachedTemplateId !== templateId) {\r\n            this.cachedTemplateId = templateId;\r\n            this.cachedTemplate = this.globalTemplates.get(templateId, component);\r\n        }\r\n        return this.cachedTemplate;\r\n    }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {IGroupMap} from \"../common-types\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\n\r\n@Pipe({\r\n    standalone: false,\r\n    name: \"groupBy\"\r\n})\r\nexport class GroupByPipe implements PipeTransform {\r\n\r\n    transform(records: ReadonlyArray<any>, column: string, map: IGroupMap = null): any {\r\n        const groups = (records || []).reduce((result: any, item: any) => {\r\n            const key = ObjectUtils.getValue(item, column) || \"\";\r\n            const col = map ? (map[key] || \"\") : key;\r\n            const group: any[] = result[col] || [];\r\n            group.push(item);\r\n            result[col] = group;\r\n            return result;\r\n        }, {});\r\n        return Object.keys(groups).map(key => {\r\n            return {group: key, items: groups[key]};\r\n        });\r\n    }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\nimport {ObjectUtils} from \"../utils/object.utils\";\n\nexport function defaultFilter() {\n    return true;\n}\n\n@Pipe({\n    standalone: false,\n    name: \"includes\"\n})\nexport class IncludesPipe implements PipeTransform {\n    transform(array: any, ...values: any[]): boolean {\n        return ObjectUtils.isArray(array) && values.some(v => array.includes(v));\n    }\n}\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\n\r\n@Pipe({\r\n    standalone: false,\r\n    name: \"isType\"\r\n})\r\nexport class IsTypePipe implements PipeTransform {\r\n    transform(value: any, type: string): any {\r\n        return ObjectUtils.getType(value) === type;\r\n    }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\n\r\n@Pipe({\r\n    standalone: false,\r\n    name: \"join\"\r\n})\r\nexport class JoinPipe implements PipeTransform {\r\n\r\n    transform(value: any, separator: string = \", \"): string {\r\n        return (ObjectUtils.isArray(value))\r\n            ? value.join(separator)\r\n            : \"\";\r\n    }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\n\r\nconst emptyKeys: any[] = [];\r\n\r\n@Pipe({\r\n    standalone: false,\r\n    name: \"keys\"\r\n})\r\nexport class KeysPipe implements PipeTransform {\r\n\r\n    transform(value: any): any[] {\r\n        if (!value) return emptyKeys;\r\n        return ObjectUtils.isArray(value)\r\n            ? Array.from(value.keys())\r\n            : Object.keys(value);\r\n    }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\n\r\nexport function defaultMapper(item) {\r\n    return item;\r\n}\r\n\r\n@Pipe({\r\n    standalone: false,\r\n    name: \"map\"\r\n})\r\nexport class MapPipe implements PipeTransform {\r\n    transform(values: any[], mapper: any = defaultMapper, params: any = {}): any[] {\r\n        if (!ObjectUtils.isArray(values)) return [];\r\n        const mapperFunc = ObjectUtils.isFunction(mapper) ? mapper : (value, index, params) => {\r\n            return ObjectUtils.evaluate(mapper, {\r\n                value: value,\r\n                index: index,\r\n                params: params\r\n            });\r\n        };\r\n        return values.map((value, index) => mapperFunc(value, index, params));\r\n    }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\nimport {ArrayUtils} from \"../utils/array.utils\";\r\n\r\n@Pipe({\r\n    standalone: false,\r\n    name: \"max\"\r\n})\r\nexport class MaxPipe implements PipeTransform {\r\n    transform(value: any[], selector: any = null, params: any = {}): number {\r\n        selector = selector || (item => <number>item);\r\n        const maxSelector: Function = ObjectUtils.isFunction(value) ? value : (item, index, params) => {\r\n            return ObjectUtils.evaluate(selector, {\r\n                item: item,\r\n                index: index,\r\n                params: params\r\n            });\r\n        };\r\n        return ArrayUtils.max(value, (item, index) => maxSelector(item, index, params));\r\n    }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\nimport {ArrayUtils} from \"../utils/array.utils\";\r\n\r\n@Pipe({\r\n    standalone: false,\r\n    name: \"min\"\r\n})\r\nexport class MinPipe implements PipeTransform {\r\n    transform(value: any, selector: any = null, params: any = {}): number {\r\n        selector = selector || (item => <number>item);\r\n        const minSelector: Function = ObjectUtils.isFunction(value) ? value : (item, index, params) => {\r\n            return ObjectUtils.evaluate(selector, {\r\n                item: item,\r\n                index: index,\r\n                params: params\r\n            });\r\n        };\r\n        return ArrayUtils.min(value, (item, index) => minSelector(item, index, params));\r\n    }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\n\r\n@Pipe({\r\n    standalone: false,\r\n    name: \"pop\"\r\n})\r\nexport class PopPipe implements PipeTransform {\r\n\r\n    transform(value: any[]): any {\r\n        return !Array.isArray(value) ? null : Array.from(value).pop();\r\n    }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\n\r\nexport function defaultReducer(result) {\r\n    return result;\r\n}\r\n\r\n@Pipe({\r\n    standalone: false,\r\n    name: \"reduce\"\r\n})\r\nexport class ReducePipe implements PipeTransform {\r\n    transform(values: any[], source: any, reducer: any = defaultReducer, params: any = {}): any {\r\n        if (!ObjectUtils.isArray(values)) return [];\r\n        const mapperFunc = ObjectUtils.isFunction(reducer) ? reducer : (result, value, index, params) => {\r\n            return ObjectUtils.evaluate(reducer, {\r\n                result: result,\r\n                value: value,\r\n                index: index,\r\n                params: params\r\n            });\r\n        };\r\n        return values.reduce((result, value, index) => mapperFunc(result, value, index, params), source);\r\n    }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\n\r\nconst empty: any = {};\r\n\r\n@Pipe({\r\n    standalone: false,\r\n    name: \"remap\"\r\n})\r\nexport class RemapPipe implements PipeTransform {\r\n\r\n    transform(map: any, source: any, defaultValue: string = \"key\"): any {\r\n        if (!map) return empty;\r\n        if (!source) return map;\r\n        const remapped = ObjectUtils.filter({map: ObjectUtils.copy(map)}, (value, key, target) => {\r\n            if (ObjectUtils.isArray(value) && value.every(ObjectUtils.isString)) {\r\n                target[key] = value.reduce((result, k) => {\r\n                    result[k] = ObjectUtils.getValue(source, k, ObjectUtils.evaluate(defaultValue, {key: k, map: map, source: source}));\r\n                    return result;\r\n                }, {});\r\n                return false;\r\n            }\r\n            return true;\r\n        });\r\n        return remapped.map;\r\n    }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\n\r\n@Pipe({\r\n    standalone: false,\r\n    name: \"replace\"\r\n})\r\nexport class ReplacePipe implements PipeTransform {\r\n    transform(value: string, from: string | RegExp, to: string): string {\r\n        return ObjectUtils.isDefined(value) ? `${value}`.replace(from, to) : ``;\r\n    }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\n\r\nconst emptyArray: any[] = [];\r\n\r\n@Pipe({\r\n    standalone: false,\r\n    name: \"reverse\"\r\n})\r\nexport class ReversePipe implements PipeTransform {\r\n\r\n    transform(value: any[]): any[] {\r\n        if (!ObjectUtils.isArray(value)) return emptyArray;\r\n        const result = [];\r\n        for (let i = value.length - 1; i >= 0; i--) {\r\n            result.push(value[i]);\r\n        }\r\n        return result;\r\n    }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {FormatterService} from \"../services/formatter.service\";\r\n\r\n@Pipe({\r\n    standalone: false,\r\n    name: \"round\"\r\n})\r\nexport class RoundPipe implements PipeTransform {\r\n\r\n    constructor(private formatter: FormatterService) {\r\n    }\r\n\r\n    transform(value: number, precision: number = 2, divider: number = 1): number {\r\n        return this.formatter.roundNumber(value, precision, divider);\r\n    }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {DomSanitizer, SafeHtml} from \"@angular/platform-browser\";\r\n\r\n@Pipe({\r\n    standalone: false,\r\n    name: \"safe\"\r\n})\r\nexport class SafeHtmlPipe implements PipeTransform {\r\n\r\n    constructor(private sanitizer: DomSanitizer) {\r\n\r\n    }\r\n\r\n    transform(value: string, type: string = \"html\"): SafeHtml {\r\n        switch (type) {\r\n            case \"html\":\r\n                return this.sanitizer.bypassSecurityTrustHtml(value);\r\n            case \"style\":\r\n                return this.sanitizer.bypassSecurityTrustStyle(value);\r\n            case \"script\":\r\n                return this.sanitizer.bypassSecurityTrustScript(value);\r\n            case \"url\":\r\n                return this.sanitizer.bypassSecurityTrustUrl(value);\r\n            case \"resourceUrl\":\r\n                return this.sanitizer.bypassSecurityTrustResourceUrl(value);\r\n            default:\r\n                throw new Error(`SafePipe unable to bypass security for invalid type: ${type}`);\r\n        }\r\n    }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\n\r\n@Pipe({\r\n    standalone: false,\r\n    name: \"shift\"\r\n})\r\nexport class ShiftPipe implements PipeTransform {\r\n\r\n    transform(value: any[]): any {\r\n        return !Array.isArray(value) ? null : Array.from(value).shift();\r\n    }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\n\r\n@Pipe({\r\n    standalone: false,\r\n    name: \"split\"\r\n})\r\nexport class SplitPipe implements PipeTransform {\r\n\r\n    transform(value: any, separator: string = \".\"): any[] {\r\n        return `${value}`.split(separator);\r\n    }\r\n}\r\n","import {Pipe} from \"@angular/core\";\r\nimport {AsyncPipe} from \"@angular/common\";\r\nimport {isObservable, Observable} from \"rxjs\";\r\n\r\n@Pipe({\r\n    standalone: false,\r\n    pure: false,\r\n    name: \"syncAsync\"\r\n})\r\nexport class SyncAsyncPipe extends AsyncPipe {\r\n\r\n    transform<T = any>(value: T | Promise<T> | Observable<T>): T {\r\n        return isObservable(value) || (value instanceof Promise)\r\n            ? super.transform(value)\r\n            : value as T;\r\n    }\r\n}\r\n","import {ChangeDetectorRef, Inject, Injectable, Pipe, PipeTransform} from \"@angular/core\";\r\nimport {ILanguageService, ITranslations, TranslationQuery} from \"../common-types\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\nimport {LANGUAGE_SERVICE} from \"../tokens\";\r\n\r\n@Injectable()\r\n@Pipe({\r\n    standalone: false,\r\n    name: \"translate\",\r\n    pure: false\r\n})\r\nexport class TranslatePipe implements PipeTransform {\r\n\r\n    private dictionary: ITranslations;\r\n    private enabled: boolean;\r\n    private query: TranslationQuery;\r\n    private args: any[];\r\n    private params: any;\r\n    private lastValue: string;\r\n\r\n    get currentLang(): string {\r\n        return this.language.currentLanguage\r\n    }\r\n\r\n    constructor(readonly cdr: ChangeDetectorRef, @Inject(LANGUAGE_SERVICE) readonly language: ILanguageService) {\r\n\r\n    }\r\n\r\n    transform(query: TranslationQuery, ...args: any[]): string {\r\n        if (!query) return \"\";\r\n        let dirty = false;\r\n        const dictionary = this.language.dictionary;\r\n        if (this.dictionary !== dictionary) {\r\n            this.dictionary = dictionary;\r\n            dirty = true;\r\n        }\r\n        const enabled = this.language.enableTranslations;\r\n        if (this.enabled !== enabled) {\r\n            this.enabled = enabled;\r\n            dirty = true;\r\n        }\r\n        if (!ObjectUtils.equals(this.query, query)) {\r\n            this.query = query;\r\n            dirty = true;\r\n        }\r\n        if (!ObjectUtils.equals(this.args, args)) {\r\n            this.args = args;\r\n            this.params = null;\r\n            if (ObjectUtils.isDefined(args[0]) && args.length) {\r\n                if (typeof args[0] === \"string\" && args[0].length) {\r\n                    const validArgs: string = args[0]\r\n                        .replace(/(\\')?([a-zA-Z0-9_]+)(\\')?(\\s)?:/g, `\"$2\":`)\r\n                        .replace(/:(\\s)?(\\')(.*?)(\\')/g, `:\"$3\"`);\r\n                    try {\r\n                        this.params = JSON.parse(validArgs);\r\n                    } catch (e) {\r\n                        throw new SyntaxError(`Wrong parameter in TranslatePipe. Expected a valid Object, received: ${args[0]}`);\r\n                    }\r\n                } else if (typeof args[0] === \"object\" && !Array.isArray(args[0])) {\r\n                    this.params = args[0];\r\n                }\r\n            }\r\n            dirty = true;\r\n        }\r\n        if (dirty) {\r\n            if (typeof query === \"object\") {\r\n                this.lastValue = Array.isArray(query)\r\n                    ? this.language.getTranslationFromArray(query, this.params)\r\n                    : this.language.getTranslationFromObject(query, this.params);\r\n                return this.lastValue;\r\n            }\r\n            this.lastValue = this.language.getTranslationSync(query, this.params);\r\n            this.language.getTranslation(query, this.params).then(value => {\r\n                this.lastValue = value;\r\n                if (!this.cdr[\"destroyed\"]) {\r\n                    this.cdr.detectChanges();\r\n                }\r\n            });\r\n        }\r\n        return this.lastValue;\r\n    }\r\n}\r\n","import {Pipe, PipeTransform} from \"@angular/core\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\n\r\nconst emptyValues: any[] = [];\r\n\r\n@Pipe({\r\n    standalone: false,\r\n    name: \"values\"\r\n})\r\nexport class ValuesPipe implements PipeTransform {\r\n\r\n    transform(value: any): any[] {\r\n        if (!value) return emptyValues;\r\n        return ObjectUtils.isArray(value)\r\n            ? value\r\n            : Object.keys(value).map(key => value[key]);\r\n    }\r\n}\r\n","import {\r\n    ChangeDetectorRef,\r\n    Directive,\r\n    effect,\r\n    ElementRef,\r\n    HostListener,\r\n    inject,\r\n    input,\r\n    OnChanges,\r\n    output,\r\n    signal, untracked\r\n} from \"@angular/core\";\r\nimport {AsyncMethod, IAsyncMessage} from \"../common-types\";\r\nimport {TOASTER_SERVICE} from \"../tokens\";\r\nimport {computedPrevious} from \"../utils/signal-utils\";\r\nimport {switchClass} from \"../utils/misc\";\r\n\r\n@Directive({\r\n    standalone: false,\r\n    selector: \"[__asmb__]\"\r\n})\r\nexport class AsyncMethodBase<T extends AsyncMethod = AsyncMethod> implements OnChanges {\r\n\r\n    readonly disabled = signal(false);\r\n    readonly context = input<any>({});\r\n\r\n    readonly onSuccess = output<IAsyncMessage>();\r\n    readonly onError = output<IAsyncMessage>();\r\n    readonly toaster = inject(TOASTER_SERVICE);\r\n    readonly cdr = inject(ChangeDetectorRef);\r\n    readonly element = inject<ElementRef<HTMLElement>>(ElementRef);\r\n\r\n    readonly loading = signal(false);\r\n    readonly target = signal(this.element.nativeElement);\r\n    readonly previousTarget = computedPrevious(this.target);\r\n\r\n    constructor() {\r\n        effect(() => {\r\n            const target = this.target();\r\n            if (!target) return;\r\n            switchClass(target, \"async-target\", true);\r\n            switchClass(target, \"disabled\", this.disabled());\r\n            switchClass(target, \"loading\", this.loading());\r\n        });\r\n        effect(() => {\r\n            const previous = this.previousTarget();\r\n            if (!previous) return;\r\n            switchClass(previous, \"async-target\", false);\r\n            switchClass(previous, \"disabled\", false);\r\n            switchClass(previous, \"loading\", false);\r\n        });\r\n    }\r\n\r\n    ngOnChanges(): void {\r\n        this.cdr.detectChanges();\r\n    }\r\n\r\n    @HostListener(\"click\", [\"$event\"])\r\n    onClick(ev: MouseEvent) {\r\n        return this.handleClick(ev);\r\n    }\r\n\r\n    callMethod(ev?: MouseEvent): boolean {\r\n        if (this.loading()) return true;\r\n        this.loading.set(true);\r\n        const method = this.getMethod();\r\n        const result = !method ? null : method(...this.getArgs(ev));\r\n        if (!(result instanceof Promise)) {\r\n            this.loading.set(false);\r\n            return false;\r\n        }\r\n        result.then(msg => {\r\n            this.loading.set(false);\r\n            if (msg) {\r\n                this.onSuccess.emit(msg);\r\n                this.toaster.success(msg.message, msg.context);\r\n            }\r\n        }, reason => {\r\n            if (!reason || !reason.message)\r\n                throw new Error(\"Reason must implement IAsyncMessage interface\");\r\n            this.loading.set(false);\r\n            this.onError.emit(reason);\r\n            this.toaster.error(reason.message, reason.context);\r\n        }).finally(() => {\r\n            if (!this.cdr[\"destroyed\"]) {\r\n                this.cdr.detectChanges();\r\n            }\r\n        });\r\n        return true;\r\n    }\r\n\r\n    protected handleClick(ev: MouseEvent): boolean {\r\n        ev?.preventDefault();\r\n        if (this.disabled()) return true;\r\n        this.callMethod(ev);\r\n        return true;\r\n    }\r\n\r\n    protected getMethod(): T {\r\n        return null;\r\n    }\r\n\r\n    protected getArgs(ev: MouseEvent): unknown[] {\r\n        return untracked(() => [this.context(), ev]);\r\n    }\r\n}\r\n","import {Directive, input, untracked} from \"@angular/core\";\r\nimport {AsyncMethod} from \"../common-types\";\r\nimport {AsyncMethodBase} from \"./async-method.base\";\r\n\r\n@Directive({\r\n    standalone: false,\r\n    selector: \"[async-method]\",\r\n    exportAs: \"async-method\",\r\n    providers: [\r\n        {provide: AsyncMethodBase, useExisting: AsyncMethodDirective}\r\n    ]\r\n})\r\nexport class AsyncMethodDirective extends AsyncMethodBase {\r\n\r\n    readonly method = input<AsyncMethod>(null, {alias: \"async-method\"});\r\n\r\n    protected getMethod() {\r\n        return untracked(() => this.method());\r\n    }\r\n}\r\n","import {Directive, ElementRef, Optional} from \"@angular/core\";\r\nimport {AsyncMethodBase} from \"./async-method.base\";\r\nimport {switchClass} from \"../utils/misc\";\r\n\r\n@Directive({\r\n    standalone: false,\r\n    selector: \"[async-method-target]\"\r\n})\r\nexport class AsyncMethodTargetDirective {\r\n\r\n    constructor(protected element: ElementRef,\r\n                @Optional() protected asyncMethod: AsyncMethodBase) {\r\n        if (!asyncMethod) {\r\n            switchClass(this.element.nativeElement, \"async-target\", true);\r\n            return;\r\n        }\r\n        asyncMethod.target.set(element.nativeElement);\r\n    }\r\n\r\n}\r\n","import {Directive, ElementRef, Input, OnChanges, Renderer2, SimpleChanges} from \"@angular/core\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\nimport {FileUtils} from \"../utils/file.utils\";\r\nimport {UniversalService} from \"../services/universal.service\";\r\n\r\nconst defaultClass = \"default-image\";\r\nconst loadingClass = \"loading-image\";\r\n\r\n@Directive({\r\n    standalone: false,\r\n    selector: \"[background]\"\r\n})\r\nexport class BackgroundDirective implements OnChanges {\r\n\r\n    @Input() background: string;\r\n    @Input() backgroundSize: string;\r\n\r\n    constructor(private http: HttpClient, private element: ElementRef, private renderer: Renderer2, private universal: UniversalService) {\r\n\r\n    }\r\n\r\n    ngOnChanges(changes: SimpleChanges): void {\r\n        if (this.universal.isServer) {\r\n            this.setBackground(this.background);\r\n            return;\r\n        }\r\n        this.renderer.removeClass(this.element.nativeElement, defaultClass);\r\n        this.renderer.addClass(this.element.nativeElement, loadingClass);\r\n        FileUtils.readDataFromUrl(this.http, this.background).then(url => {\r\n            this.setBackground(url);\r\n        }, () => {\r\n            this.renderer.removeClass(this.element.nativeElement, loadingClass);\r\n            this.renderer.addClass(this.element.nativeElement, defaultClass);\r\n        });\r\n    }\r\n\r\n    private setBackground(url: string): void {\r\n        this.renderer.removeClass(this.element.nativeElement, loadingClass);\r\n        this.renderer.setStyle(this.element.nativeElement, \"background-image\", `url('${url}')`);\r\n        if (!this.backgroundSize) return;\r\n        this.renderer.setStyle(this.element.nativeElement, \"background-size\", this.backgroundSize);\r\n    }\r\n}\r\n","import {Directive, Input, ViewContainerRef, OnChanges, SimpleChanges, ComponentRef, OnDestroy} from \"@angular/core\";\r\nimport {ComponentLoaderService} from \"../services/component-loader.service\";\r\n\r\n@Directive({\r\n    standalone: false,\r\n    selector: \"[loadComponent]\"\r\n})\r\nexport class ComponentLoaderDirective implements OnChanges, OnDestroy {\r\n\r\n    @Input() module: string;\r\n    @Input(\"loadComponent\") selector: string;\r\n\r\n    private cr: ComponentRef<any>;\r\n\r\n    constructor(private vcr: ViewContainerRef, private loader: ComponentLoaderService) {\r\n\r\n    }\r\n\r\n    ngOnChanges(changes: SimpleChanges): void {\r\n        if (!this.module || !this.selector) return;\r\n        this.ngOnDestroy();\r\n        this.loader.getComponentType({\r\n            moduleId: this.module,\r\n            selector: this.selector\r\n        }).then(type => {\r\n            this.cr = this.vcr.createComponent(type);\r\n            this.cr.changeDetectorRef.markForCheck();\r\n            this.cr.changeDetectorRef.detectChanges();\r\n        });\r\n    }\r\n\r\n    ngOnDestroy(): void {\r\n        if (!this.cr) return;\r\n        this.cr.destroy();\r\n        const index = this.vcr.indexOf(this.cr.hostView);\r\n        if (index >= 0) {\r\n            this.vcr.remove(index);\r\n        }\r\n        this.cr.hostView.destroy();\r\n    }\r\n}\r\n","import {Directive, Input, TemplateRef} from \"@angular/core\";\r\nimport {ITableTemplate} from \"../common-types\";\r\n\r\n@Directive({\r\n    standalone: false,\r\n    selector: \"ng-template[column]\"\r\n})\r\n\r\nexport class DynamicTableTemplateDirective implements ITableTemplate {\r\n\r\n    @Input() column: string | string[];\r\n    @Input() pure: boolean;\r\n\r\n    constructor(readonly ref: TemplateRef<any>) {\r\n    }\r\n}\r\n","import {Directive, Input, OnDestroy, OnInit, TemplateRef} from \"@angular/core\";\r\nimport {GlobalTemplateService} from \"../services/global-template.service\";\r\n\r\n@Directive({\r\n    standalone: false,\r\n    selector: \"[globalTemplate]\"\r\n})\r\nexport class GlobalTemplateDirective implements OnInit, OnDestroy {\r\n\r\n    @Input(\"globalTemplate\") id: string;\r\n\r\n    constructor(readonly globalTemplates: GlobalTemplateService,\r\n                readonly template: TemplateRef<any>) {\r\n\r\n    }\r\n\r\n    ngOnInit(): void {\r\n        this.globalTemplates.add(this.id, this.template);\r\n    }\r\n\r\n    ngOnDestroy(): void {\r\n        this.globalTemplates.remove(this.id);\r\n    }\r\n}\r\n","import {\r\n    Directive,\r\n    ElementRef,\r\n    EventEmitter,\r\n    HostBinding,\r\n    HostListener,\r\n    Inject,\r\n    Input,\r\n    OnChanges,\r\n    OnDestroy,\r\n    OnInit,\r\n    Output,\r\n    Renderer2,\r\n    SimpleChanges\r\n} from \"@angular/core\";\r\nimport {Subscription} from \"rxjs\";\r\nimport {IIconService} from \"../common-types\";\r\nimport {ICON_SERVICE} from \"../tokens\";\r\n\r\n@Directive({\r\n    standalone: false,\r\n    selector: \"i[icon],b[icon],p[icon],span[icon],a[icon],h1[icon],h2[icon],h3[icon],h4[icon]\"\r\n})\r\nexport class IconDirective implements OnChanges, OnInit, OnDestroy {\r\n\r\n    @Input() icon: string;\r\n    @Input() activeIcon: string;\r\n    @Input() active: boolean;\r\n    @Output() activeChange: EventEmitter<boolean>;\r\n\r\n    @HostBinding(\"class.active\")\r\n    get isActive() {\r\n        return this.active;\r\n    }\r\n\r\n    protected iconsLoaded: Subscription;\r\n\r\n    constructor(private element: ElementRef, private renderer: Renderer2, @Inject(ICON_SERVICE) private icons: IIconService) {\r\n        this.renderer.addClass(this.element.nativeElement, \"svg-icon\");\r\n        this.activeChange = new EventEmitter<boolean>();\r\n    }\r\n\r\n    ngOnInit(): void {\r\n        this.iconsLoaded = this.icons.iconsLoaded.subscribe(() => this.changeIcon());\r\n    }\r\n\r\n    ngOnDestroy(): void {\r\n        if (this.iconsLoaded)\r\n            this.iconsLoaded.unsubscribe();\r\n    }\r\n\r\n    ngOnChanges(changes: SimpleChanges): void {\r\n        if (changes.icon) {\r\n            this.renderer.removeClass(this.element.nativeElement, `svg-icon-${changes.icon.previousValue}`);\r\n            this.renderer.addClass(this.element.nativeElement, `svg-icon-${changes.icon.currentValue}`);\r\n        }\r\n        this.changeIcon();\r\n    }\r\n\r\n    @HostListener(\"click\")\r\n    click(): void {\r\n        this.active = !this.active;\r\n        this.activeChange.emit(this.active);\r\n        this.changeIcon();\r\n    }\r\n\r\n    private changeIcon(): void {\r\n        this.icons.getIcon(this.icon, this.activeIcon || `${this.icon}-active`, this.active).then(icon => {\r\n            if (this.icons.isDisabled) return;\r\n            this.element.nativeElement.innerHTML = icon;\r\n        });\r\n    }\r\n}\r\n","import {\r\n    Directive, DoCheck,\r\n    EmbeddedViewRef,\r\n    Input,\r\n    OnChanges,\r\n    SimpleChange,\r\n    SimpleChanges,\r\n    TemplateRef,\r\n    ViewContainerRef\r\n} from \"@angular/core\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\n\r\n@Directive({\r\n    standalone: false,\r\n    selector: \"[ngxTemplateOutlet]\"\r\n})\r\nexport class NgxTemplateOutletDirective implements OnChanges, DoCheck {\r\n\r\n    private viewRef: EmbeddedViewRef<any>;\r\n\r\n    @Input() public context: Object;\r\n    @Input() public additionalContext: Object;\r\n    @Input() public ngxTemplateOutlet: TemplateRef<any>;\r\n\r\n    private static hasContextShapeChanged(ctxChange: SimpleChange): boolean {\r\n        const prevCtxKeys = Object.keys(ctxChange.previousValue || {});\r\n        const currCtxKeys = Object.keys(ctxChange.currentValue || {});\r\n\r\n        if (prevCtxKeys.length === currCtxKeys.length) {\r\n            for (const propName of currCtxKeys) {\r\n                if (prevCtxKeys.indexOf(propName) === -1) {\r\n                    return true;\r\n                }\r\n            }\r\n            return false;\r\n        } else {\r\n            return true;\r\n        }\r\n    }\r\n\r\n    constructor(private _viewContainerRef: ViewContainerRef) {}\r\n\r\n    ngOnChanges(changes: SimpleChanges) {\r\n        const recreateView = this.shouldRecreateView(changes);\r\n        if (recreateView) {\r\n            if (this.viewRef)\r\n                this._viewContainerRef.remove(this._viewContainerRef.indexOf(this.viewRef));\r\n            if (this.ngxTemplateOutlet)\r\n                this.viewRef = this._viewContainerRef.createEmbeddedView(this.ngxTemplateOutlet, {});\r\n        }\r\n        this.ngDoCheck();\r\n    }\r\n\r\n    ngDoCheck(): void {\r\n        if (!this.viewRef) return;\r\n        const context = this.viewRef.context;\r\n        this.updateExistingContext(this.context, context);\r\n        this.updateExistingContext(this.additionalContext, context);\r\n        context.$implicit = context;\r\n    }\r\n\r\n    private shouldRecreateView(changes: SimpleChanges): boolean {\r\n        const ctxChange = changes[\"context\"];\r\n        const aCtxChange = changes[\"additionalContext\"];\r\n        return !!changes[\"ngxTemplateOutlet\"]\r\n            || (ctxChange && NgxTemplateOutletDirective.hasContextShapeChanged(ctxChange))\r\n            || (aCtxChange && NgxTemplateOutletDirective.hasContextShapeChanged(aCtxChange));\r\n    }\r\n\r\n    private updateExistingContext(ctx: any, context: any): void {\r\n        if (!ctx) return;\r\n        let ctxProto = Object.getPrototypeOf(ctx);\r\n        if (ctxProto == Object.prototype) {\r\n            ctxProto = ctx;\r\n        }\r\n        const props = Object.getOwnPropertyNames(ctxProto);\r\n        for (const propName of props) {\r\n            const desc = Object.getOwnPropertyDescriptor(ctxProto, propName);\r\n            // Copy if its a getter and it is not $implicit\r\n            if (desc.get && propName !== \"$implicit\") {\r\n                Object.defineProperty(context, propName, desc);\r\n                continue;\r\n            }\r\n            const func: Function = ObjectUtils.isFunction(desc.value) ? desc.value.bind(ctx) : null;\r\n            if (func && func !== ctxProto.constructor) {\r\n                context[propName] = func;\r\n            }\r\n        }\r\n        for (const propName of Object.keys(ctx)) {\r\n\r\n            const desc = Object.getOwnPropertyDescriptor(ctxProto, propName);\r\n            if (desc && desc.get && !desc.set) continue;\r\n            context[propName] = ctx[propName];\r\n        }\r\n    }\r\n}\r\n","import {\r\n    Directive,\r\n    ElementRef,\r\n    EventEmitter,\r\n    Input,\r\n    NgZone,\r\n    OnChanges,\r\n    Output,\r\n    Renderer2,\r\n    SimpleChanges\r\n} from \"@angular/core\";\r\nimport {IPaginationData, ITimer, PaginationDataLoader, PaginationItemContext} from \"../common-types\";\r\nimport {TimerUtils} from \"../utils/timer.utils\";\r\n\r\n@Directive({\r\n    standalone: false,\r\n    selector: \"[pagination]\",\r\n    exportAs: \"pagination\"\r\n})\r\nexport class PaginationDirective implements OnChanges {\r\n\r\n    get total(): number {\r\n        return this.data ? this.data.total : 0;\r\n    }\r\n\r\n    get items(): any[] {\r\n        return this.data ? this.data.items : [];\r\n    }\r\n\r\n    @Input(\"pagination\") loader: PaginationDataLoader;\r\n    @Input() page: number;\r\n    @Input() itemsPerPage: number;\r\n    @Input() updateTime: number;\r\n    @Input() waitFor: Promise<any>;\r\n\r\n    @Output() pageChange: EventEmitter<number>;\r\n    @Output() onRefresh: EventEmitter<PaginationDirective>;\r\n\r\n    maxPage: number;\r\n\r\n    private data: IPaginationData;\r\n    private updateTimer: ITimer;\r\n\r\n    constructor(readonly zone: NgZone, readonly renderer: Renderer2, readonly element: ElementRef) {\r\n        this.pageChange = new EventEmitter<number>();\r\n        this.onRefresh = new EventEmitter<PaginationDirective>();\r\n        this.updateTimer = TimerUtils.createTimeout(() => this.loadData(), this.updateTime);\r\n    }\r\n\r\n    ngOnChanges(changes: SimpleChanges): void {\r\n        if (!changes.loader && !changes.itemsPerPage && !changes.page) return;\r\n        this.page = isNaN(this.page) || this.page < 1 ? 1 : this.page;\r\n        this.itemsPerPage = isNaN(this.itemsPerPage) || this.itemsPerPage < 1 ? 20 : this.itemsPerPage;\r\n        this.waitFor = this.waitFor || Promise.resolve(true);\r\n        this.refresh();\r\n    }\r\n\r\n    refresh(time?: number): void {\r\n        time = isNaN(time) || time <= 0 ? this.updateTime : time;\r\n        this.updateTimer.time = isNaN(time) || time <= 0 ? 100 : time;\r\n        Promise.resolve(this.waitFor).then(() => {\r\n            this.updateTimer.run();\r\n        });\r\n    }\r\n\r\n    paginate(page: number): void {\r\n        this.page = page;\r\n        this.pageChange.emit(page);\r\n        this.refresh();\r\n    }\r\n\r\n    private loadData(): void {\r\n        if (!this.loader) return;\r\n        this.renderer.addClass(this.element.nativeElement, \"loading\");\r\n        this.loader(this.page, this.itemsPerPage).then(data => {\r\n            this.maxPage = !data || data.total <= 0 ? 1 : Math.floor((data.total - 1) / this.itemsPerPage) + 1;\r\n            this.data = data;\r\n            const baseIndex = (this.page - 1) * this.itemsPerPage;\r\n            const items = (data.items || []);\r\n            data.items = items.map((item, index) => {\r\n                const ix = baseIndex + index;\r\n                return item instanceof PaginationItemContext\r\n                    ? item\r\n                    : new PaginationItemContext(item, items, items.length, index, ix);\r\n            });\r\n            if (this.page > this.maxPage) {\r\n                this.paginate(this.maxPage);\r\n                return;\r\n            }\r\n            this.zone.run(() => {\r\n                this.renderer.removeClass(this.element.nativeElement, \"loading\");\r\n                this.onRefresh.emit(this)\r\n            });\r\n        });\r\n    }\r\n}\r\n","import {Directive, OnDestroy, OnInit, TemplateRef, ViewContainerRef} from \"@angular/core\";\r\nimport {Subscription} from \"rxjs\";\r\nimport {PaginationDirective} from \"./pagination.directive\";\r\n\r\n@Directive({\r\n    standalone: false,\r\n    selector: \"[paginationItem]\"\r\n})\r\nexport class PaginationItemDirective implements OnInit, OnDestroy {\r\n\r\n    private onRefresh: Subscription;\r\n\r\n    constructor(private pagination: PaginationDirective, private viewContainer: ViewContainerRef, private templateRef: TemplateRef<any>) {\r\n\r\n    }\r\n\r\n    ngOnInit(): void {\r\n        this.onRefresh = this.pagination.onRefresh.subscribe(() => this.renderView());\r\n    }\r\n\r\n    ngOnDestroy(): void {\r\n        this.onRefresh.unsubscribe();\r\n    }\r\n\r\n    private renderView(): void {\r\n        this.viewContainer.clear();\r\n        this.pagination.items.forEach((item: any, ix: number) => {\r\n            item.$implicit = item;\r\n            item.rowIndex = ix;\r\n            this.viewContainer.createEmbeddedView(this.templateRef, item);\r\n        });\r\n    }\r\n}\r\n","import {Directive, ViewContainerRef, TemplateRef, Input} from \"@angular/core\";\r\nimport {HttpClient} from \"@angular/common/http\";\r\nimport {ResourceIfContext} from \"../common-types\";\r\nimport {FileUtils} from \"../utils/file.utils\";\r\nimport {UniversalService} from \"../services/universal.service\";\r\n\r\n@Directive({\r\n    standalone: false,\r\n    selector: \"[resourceIf]\",\r\n    exportAs: \"resourceIf\"\r\n})\r\nexport class ResourceIfDirective {\r\n\r\n    private context: ResourceIfContext;\r\n    private resource: string;\r\n\r\n    @Input()\r\n    set resourceIf(resource: string) {\r\n        this.resource = resource;\r\n        this.renderView();\r\n    }\r\n\r\n    get resourceIf(): string {\r\n        return this.resource;\r\n    }\r\n\r\n    get url(): string {\r\n        return this.context.url;\r\n    }\r\n\r\n    constructor(private http: HttpClient, private viewContainer: ViewContainerRef, private templateRef: TemplateRef<any>, private universal: UniversalService) {\r\n        this.context = new ResourceIfContext();\r\n    }\r\n\r\n    private renderView(): void {\r\n        this.context = new ResourceIfContext();\r\n        this.context.resource = this.resource;\r\n        this.viewContainer.clear();\r\n        if (this.universal.isBrowser && this.resource) {\r\n            FileUtils.readDataFromUrl(this.http, this.resource).then(url => {\r\n                this.context.url = url;\r\n                this.viewContainer.createEmbeddedView(this.templateRef, this.context);\r\n            }, console.log);\r\n        }\r\n    }\r\n}\r\n","import {ChangeDetectorRef, Directive, ElementRef, HostBinding, HostListener, OnDestroy, OnInit} from \"@angular/core\";\r\nimport {Subscription} from \"rxjs\";\r\nimport {ITimer} from \"../common-types\";\r\nimport {TimerUtils} from \"../utils/timer.utils\";\r\nimport {EventsService} from \"../services/events.service\";\r\n\r\n@Directive({\r\n    standalone: false,\r\n    selector: \"[sticky]\"\r\n})\r\nexport class StickyDirective implements OnInit, OnDestroy {\r\n\r\n    @HostBinding(\"class.sticky\") isSticky: boolean;\r\n    @HostBinding(\"class.sticky-update\") isUpdating: boolean;\r\n    parentElement: HTMLElement;\r\n\r\n    private updateTimer: ITimer;\r\n    private eventForwarded: Subscription;\r\n\r\n    constructor(private cdr: ChangeDetectorRef, private events: EventsService, private element: ElementRef) {\r\n        this.parentElement = this.element.nativeElement.parentElement;\r\n        this.updateTimer = TimerUtils.createTimeout(() => {\r\n            this.isUpdating = false;\r\n            this.cdr.detectChanges();\r\n            this.events.updateSticky(this.isSticky);\r\n        }, 10);\r\n    }\r\n\r\n    ngOnInit(): void {\r\n        this.eventForwarded = this.events.eventForwarded.subscribe((e: Event) => {\r\n            if (e && e.type === \"scroll\") this.updateSticky();\r\n        });\r\n    }\r\n\r\n    ngOnDestroy(): void {\r\n        this.eventForwarded.unsubscribe();\r\n    }\r\n\r\n    @HostListener(\"window:resize\")\r\n    @HostListener(\"window:scroll\")\r\n    updateSticky(): void {\r\n        const distanceToTop = this.parentElement.getBoundingClientRect().top;\r\n        this.isSticky = distanceToTop < 1;\r\n        this.isUpdating = true;\r\n        this.cdr.detectChanges();\r\n        this.updateTimer.run();\r\n    }\r\n}\r\n","import {Directive, ElementRef, Input, OnDestroy, OnInit, Renderer2} from \"@angular/core\";\r\nimport {Subscription} from \"rxjs\";\r\nimport {EventsService} from \"../services/events.service\";\r\n\r\n@Directive({\r\n    standalone: false,\r\n    selector: \"[stickyClass]\"\r\n})\r\nexport class StickyClassDirective implements OnInit, OnDestroy {\r\n\r\n    @Input() stickyClass: string;\r\n\r\n    private stickyUpdated: Subscription;\r\n\r\n    constructor(private events: EventsService, private element: ElementRef, private renderer: Renderer2) {\r\n    }\r\n\r\n    ngOnInit(): void {\r\n        this.stickyUpdated = this.events.stickyUpdated.subscribe(() => {\r\n            if (this.events.isSticky) {\r\n                this.renderer.addClass(this.element.nativeElement, this.stickyClass || \"sticky-sibling\");\r\n                return;\r\n            }\r\n            this.renderer.removeClass(this.element.nativeElement, this.stickyClass || \"sticky-sibling\");\r\n        });\r\n    }\r\n\r\n    ngOnDestroy(): void {\r\n        this.stickyUpdated.unsubscribe();\r\n    }\r\n}\r\n","import {Directive, ElementRef, EventEmitter, HostBinding, HostListener, Input, OnDestroy, Output} from \"@angular/core\";\nimport {AutoPlacementOptions, Boundary, Placement} from \"@floating-ui/dom\";\nimport {DropdownAttachTo} from \"../common-types\";\n\n@Directive({\n    standalone: false,\n    selector: \"[dd],[drop-down]\",\n    exportAs: \"dropdown\"\n})\nexport class DropdownDirective implements OnDestroy {\n\n    protected static active: DropdownDirective = null;\n\n    protected opened: boolean;\n    protected disabled: boolean;\n\n    /**\n     * Determines if the dropdown should be closed even if we click inside it\n     */\n    @Input() closeInside: boolean;\n\n    /**\n     * Determines where the floating element needs to be placed\n     */\n    @Input() attachTo: DropdownAttachTo;\n\n    /**\n     * Determines the boundary element of the floating element when shifting\n     */\n    @Input() boundary: Boundary;\n\n    /**\n     * Where to place the floating element relative to the reference element.\n     */\n    @Input() placement: Placement;\n\n    /**\n     * Optimizes the visibility of the floating element by choosing the placement\n     * that has the most space available automatically, without needing to specify a\n     * preferred placement. Alternative to `flip`.\n     * @see https://floating-ui.com/docs/autoPlacement\n     */\n    @Input() autoPlacement: AutoPlacementOptions;\n\n    /**\n     * Determines if the dropdown content should be displayed in a fixed full screen view under this window width\n     * @default 0\n     */\n    @Input() mobileViewUnder: number;\n\n    /**\n     * Determines if the dropdown content should always be displayed in a fixed full screen view\n     * @default false\n     */\n    @Input() fixed: boolean;\n\n    /**\n     * Determines if the dropdown should react to keys to close like 'Esc'\n     * @default true\n     */\n    @Input() keyboardHandler: boolean;\n\n    @Output() onShown: EventEmitter<DropdownDirective>;\n    @Output() onHidden: EventEmitter<DropdownDirective>;\n    @Output() onKeyboard: EventEmitter<KeyboardEvent>;\n\n    contentElement: HTMLElement;\n\n    private readonly onClick: (event: Event) => void;\n    private readonly onKeyDown: (event: KeyboardEvent) => boolean;\n\n    get nativeElement(): HTMLElement {\n        return this.element.nativeElement;\n    }\n\n    @HostBinding(\"class.open\")\n    get isOpened(): boolean {\n        return this.opened;\n    }\n\n    @HostBinding(\"class.disabled\")\n    get getDisabled(): boolean {\n        return this.disabled;\n    }\n\n    @Input()\n    set isDisabled(value: boolean) {\n        this.disabled = value;\n        if (!value) return;\n        this.hide();\n    }\n\n    constructor(protected element: ElementRef<HTMLElement>) {\n        this.opened = false;\n        this.disabled = false;\n        this.closeInside = true;\n        this.attachTo = null;\n        this.boundary = \"clippingAncestors\";\n        this.mobileViewUnder = 0;\n        this.fixed = false;\n        this.keyboardHandler = true;\n        this.onShown = new EventEmitter<any>();\n        this.onHidden = new EventEmitter<any>();\n        this.onKeyboard = new EventEmitter<KeyboardEvent>();\n        this.onClick = (event: MouseEvent): void => {\n            // We don't care about clicks with right/center mouse buttons\n            if (event.button) return;\n            const target = (event.composedPath()?.shift() || event.target) as Node;\n            // If blocked closing inside we only consider inside if the target is not directly the contentElement\n            // We only have a contentElement in case when we are using *dropdownContent directive\n            if (!this.closeInside && (!this.contentElement || target !== this.contentElement)) {\n                // Try to determine if we are inside by collecting the possible parent elements to check\n                const parents = !this.contentElement ? [] : Array.from(this.contentElement.childNodes);\n                if (this.nativeElement) {\n                    parents.push(this.nativeElement);\n                }\n                // If one of the parents contains the target then we clicked inside\n                if (parents.some(child => child.contains(target))) return;\n            }\n            setTimeout(() => this.hide(), event.type == \"touchend\" ? 250 : 100);\n        };\n        this.onKeyDown = (event: KeyboardEvent): boolean => {\n            const input = (event.composedPath()?.shift() || event.target) as HTMLInputElement;\n            const notInput = !input || (input.tagName !== \"INPUT\" && input.tagName !== \"TEXTAREA\");\n            if (\"Tab\" === event.key || notInput) {\n                event.stopPropagation();\n                event.preventDefault();\n            }\n            if (\"Esc\" === event.key || \"Escape\" === event.key) {\n                this.hide();\n                return false;\n            }\n            this.onKeyboard.emit(event);\n            return true;\n        };\n    }\n\n    ngOnDestroy(): void {\n        if (DropdownDirective.active === this) {\n            DropdownDirective.active = null;\n            this.onHidden.emit(this);\n        }\n    }\n\n    showEvent(): void {\n        this.onShown.emit(this);\n    }\n\n    hideEvent(): void {\n        this.onHidden.emit(this);\n    }\n\n    @HostListener(\"keydown.enter\", [\"$event\"])\n    @HostListener(\"keydown.space\", [\"$event\"])\n    show($event?: Event) {\n        if (this.opened) return;\n        if ($event) {\n            if (!this.keyboardHandler) return true;\n            $event.preventDefault();\n        }\n        if (this.disabled) return true;\n        this.opened = true;\n        this.showEvent();\n        DropdownDirective.active = this;\n        // Prevent toggle from selecting an item right after it is shown\n        setTimeout(() => {\n            if (!this.opened) return;\n            document.addEventListener(\"click\", this.onClick);\n            document.addEventListener(\"keydown\", this.onKeyDown);\n        }, 10);\n        return true;\n    }\n\n    hide() {\n        if (!this.opened) return true;\n        this.opened = false;\n        this.hideEvent();\n        document.removeEventListener(\"click\", this.onClick);\n        document.removeEventListener(\"keydown\", this.onKeyDown);\n        // Prevent toggle from refocus itself after it is hidden because of another toggle\n        setTimeout(() => {\n            if (DropdownDirective.active === this) {\n                DropdownDirective.active = null;\n                this.nativeElement?.focus();\n            }\n        }, 10);\n        return true;\n    }\n}\n","import {Directive, ElementRef, Inject, OnDestroy, OnInit, Optional, TemplateRef, ViewContainerRef} from \"@angular/core\";\r\nimport {Subscription} from \"rxjs\";\r\nimport {\r\n    arrow,\r\n    autoPlacement,\r\n    autoUpdate,\r\n    computePosition,\r\n    shift,\r\n    MiddlewareData,\r\n    Placement,\r\n    Middleware, limitShift\r\n} from \"@floating-ui/dom\";\r\n\r\nimport {DropdownDirective} from \"./dropdown.directive\";\r\nimport {ObservableUtils} from \"../utils/observable.utils\";\r\nimport {getCssVariables} from \"../utils/misc\";\r\nimport {ROOT_ELEMENT} from \"../tokens\";\r\n\r\nconst rectProps = [\"x\", \"y\", \"width\", \"height\"];\r\n\r\ninterface ComputeResult {\r\n    styles: {\r\n        position: \"fixed\" | \"absolute\";\r\n        left: string;\r\n        top: string;\r\n        right: string;\r\n        bottom: string;\r\n    },\r\n    placement: Placement;\r\n    isMobileView: boolean;\r\n    middlewareData?: MiddlewareData;\r\n}\r\n\r\n@Directive({\r\n    standalone: false,\r\n    selector: \"[dropdownContent]\",\r\n    exportAs: \"dropdown-content\",\r\n})\r\nexport class DropdownContentDirective implements OnInit, OnDestroy {\r\n\r\n    protected subscription: Subscription;\r\n    protected attachTo: HTMLElement;\r\n    protected attachOutside: boolean;\r\n    protected lastPlacement: string;\r\n    protected cleanUp: () => void;\r\n\r\n    constructor(protected vcr: ViewContainerRef,\r\n                @Optional() @Inject(ROOT_ELEMENT) protected rootElem: HTMLElement,\r\n                @Optional() protected dropdown: DropdownDirective,\r\n                @Optional() readonly templateRef: TemplateRef<any>) {\r\n        if (!this.dropdown) {\r\n            throw new Error(\"DropdownDirective is required! Please use it inside a dd, drop-down directive attribute\");\r\n        }\r\n        if (!this.templateRef) {\r\n            throw new Error(\"TemplateRef is required! Please use with *dropdownContent\");\r\n        }\r\n        this.lastPlacement = null;\r\n    }\r\n\r\n    ngOnInit() {\r\n        this.subscription = ObservableUtils.multiSubscription(\r\n            this.dropdown.onShown.subscribe(() => this.createView()),\r\n            this.dropdown.onHidden.subscribe(() => this.destroyView())\r\n        );\r\n    }\r\n\r\n    ngOnDestroy() {\r\n        this.subscription?.unsubscribe();\r\n        this.destroyView();\r\n    }\r\n\r\n    protected createView(init: boolean = false) {\r\n        if (this.dropdown.contentElement) return;\r\n        const mobileWidth = this.dropdown.mobileViewUnder || 0;\r\n        const fixed = this.dropdown.fixed || false;\r\n        const ref = this.dropdown.nativeElement;\r\n        const [content, arrowEl] = this.createWrapper();\r\n        this.dropdown.contentElement = content;\r\n        // Set up floating UI positioning settings\r\n        const middleware: Middleware[] = [];\r\n        if (this.dropdown.autoPlacement) {\r\n            middleware.push(\r\n                shift({\r\n                    boundary: this.dropdown.boundary,\r\n                    limiter: limitShift()\r\n                }),\r\n                autoPlacement(this.dropdown.autoPlacement),\r\n            );\r\n        }\r\n        middleware.push(\r\n            arrow({element: arrowEl})\r\n        );\r\n        const compute = async (): Promise<ComputeResult> => {\r\n            const isMobileView = window.innerWidth <= mobileWidth;\r\n            if (isMobileView || fixed) {\r\n                return {\r\n                    styles: {\r\n                        left: \"0px\", top: \"0px\", right: \"0px\", bottom: \"0px\",\r\n                        position: \"fixed\",\r\n                    },\r\n                    placement: \"top\",\r\n                    isMobileView\r\n                };\r\n            }\r\n            const {x, y, placement, middlewareData} = await computePosition(\r\n                ref,\r\n                content,\r\n                {\r\n                    strategy: \"absolute\",\r\n                    placement: this.dropdown.placement || \"bottom\",\r\n                    middleware\r\n                }\r\n            );\r\n\r\n            return {\r\n                styles: {\r\n                    left: `${x}px`, top: `${y}px`, right: null, bottom: null,\r\n                    position: \"absolute\",\r\n                },\r\n                placement,\r\n                isMobileView,\r\n                middlewareData\r\n            };\r\n        }\r\n        // Set up floating UI auto update\r\n        this.cleanUp = autoUpdate(\r\n            ref,\r\n            content,\r\n            () => {\r\n                compute().then(({styles, placement, isMobileView, middlewareData}) => {\r\n\r\n                    if (middlewareData?.arrow) {\r\n                        const {x, y} = middlewareData.arrow;\r\n                        Object.assign(arrowEl.style, {\r\n                            left: x != null ? `${x}px` : ``,\r\n                            top: y != null ? `${y}px` : ``,\r\n                        });\r\n                    }\r\n\r\n                    Object.assign(content.style, styles, {\r\n                        opacity: init ? \"0\" : \"1\",\r\n                        zIndex: `var(--dd-z-index, 100)`\r\n                    });\r\n\r\n                    const refRect = ref.getBoundingClientRect();\r\n                    const contentRect = content.getBoundingClientRect();\r\n                    const lastPlacement = this.lastPlacement;\r\n                    const newPlacement = `dropdown-placement-${placement}`;\r\n                    if (lastPlacement) {\r\n                        ref.classList.replace(lastPlacement, newPlacement);\r\n                        content.classList.replace(lastPlacement, newPlacement);\r\n                    } else {\r\n                        ref.classList.add(newPlacement);\r\n                        content.classList.add(newPlacement);\r\n                    }\r\n                    if (isMobileView || fixed) {\r\n                        if (!isMobileView) {\r\n                            content.classList.add(`dropdown-content-fixed`);\r\n                            content.classList.remove(`dropdown-content-mobile`);\r\n                        } else {\r\n                            content.classList.add(`dropdown-content-mobile`);\r\n                            content.classList.remove(`dropdown-content-fixed`);\r\n                        }\r\n                        content.classList.remove(`dropdown-content-desktop`);\r\n                    } else {\r\n                        content.classList.add(`dropdown-content-desktop`);\r\n                        content.classList.remove(`dropdown-content-mobile`);\r\n                        content.classList.remove(`dropdown-content-fixed`);\r\n                    }\r\n                    rectProps.forEach(prop => {\r\n                        content.style.setProperty(`--toggle-${prop}`, `${refRect[prop]}px`);\r\n                        ref.style.setProperty(`--content-${prop}`, `${contentRect[prop]}px`);\r\n                    });\r\n                    this.lastPlacement = newPlacement;\r\n                });\r\n            },\r\n        );\r\n    }\r\n\r\n    protected destroyView() {\r\n        if (!this.dropdown.contentElement) return;\r\n        this.dropdown.contentElement.remove();\r\n        this.dropdown.contentElement = null;\r\n        this.vcr.clear();\r\n        this.cleanUp?.();\r\n    }\r\n\r\n    protected whereToAttach(): HTMLElement {\r\n        const target = this.dropdown.attachTo;\r\n        if (target === \"root\" && this.rootElem) {\r\n            return this.rootElem;\r\n        }\r\n        if (target instanceof ElementRef) {\r\n            return target.nativeElement;\r\n        }\r\n        if (target instanceof HTMLElement) {\r\n            return target;\r\n        }\r\n        const anchor = this.vcr.element.nativeElement as HTMLElement;\r\n        return anchor?.parentElement || this.rootElem;\r\n    }\r\n\r\n    protected createWrapper() {\r\n        const wrapper = document.createElement(\"div\");\r\n        const arrow = document.createElement(\"div\");\r\n        arrow.classList.add(`dropdown-content-arrow`);\r\n        arrow.style.position = `absolute`;\r\n        wrapper.appendChild(arrow);\r\n        const ref = this.vcr.createEmbeddedView(this.templateRef);\r\n        ref.rootNodes.forEach(node => wrapper.appendChild(node));\r\n        ref.detectChanges();\r\n        this.attachTo = this.whereToAttach();\r\n        this.attachTo.appendChild(wrapper);\r\n        this.attachOutside = !this.dropdown.nativeElement?.contains(this.attachTo);\r\n\r\n        if (this.attachOutside) {\r\n            const referenceStyles = getCssVariables(this.dropdown.nativeElement);\r\n            const wrapperStyles = getCssVariables(wrapper);\r\n            Object.keys(referenceStyles).forEach(key => {\r\n                if (!wrapperStyles[key]) {\r\n                    wrapper.style.setProperty(key, referenceStyles[key]);\r\n                }\r\n            });\r\n        }\r\n\r\n        const autoPlacement = this.dropdown.autoPlacement;\r\n        if (this.lastPlacement) {\r\n            wrapper.classList.add(this.lastPlacement);\r\n        }\r\n        if (autoPlacement) {\r\n            const vertical = autoPlacement.allowedPlacements.some(p => p.includes(\"top\") || p.includes(\"bottom\"));\r\n            const horizontal = autoPlacement.allowedPlacements.some(p => p.includes(\"left\") || p.includes(\"right\"));\r\n            if (vertical && horizontal) {\r\n                wrapper.classList.add(`dropdown-content-axis-both`);\r\n            } else {\r\n                const axis = vertical ? \"vertical\" : \"horizontal\";\r\n                wrapper.classList.add(`dropdown-content-axis-${axis}`);\r\n            }\r\n        }\r\n        wrapper.classList.add(\"dropdown-content-wrap\");\r\n        return [wrapper, arrow];\r\n    }\r\n\r\n    initialize(): void {\r\n        this.createView(true);\r\n        setTimeout(() => this.destroyView());\r\n    }\r\n}\r\n","import {Directive, inject, input, untracked} from \"@angular/core\";\r\nimport {DropdownDirective} from \"./dropdown.directive\";\r\nimport {AsyncMethodBase} from \"./async-method.base\";\r\nimport {AsyncMethod} from \"../common-types\";\r\n\r\n@Directive({\r\n    standalone: false,\r\n    selector: \"[dropdownToggle]\",\r\n    exportAs: \"dropdown-toggle\",\r\n    providers: [\r\n        {provide: AsyncMethodBase, useExisting: DropdownToggleDirective}\r\n    ]\r\n})\r\nexport class DropdownToggleDirective extends AsyncMethodBase {\r\n\r\n    readonly beforeOpen = input<AsyncMethod>(null);\r\n    readonly switch = input(true);\r\n    readonly dropdown = inject(DropdownDirective);\r\n\r\n    protected getMethod() {\r\n        return untracked(() => this.beforeOpen());\r\n    }\r\n\r\n    callMethod(ev: MouseEvent): boolean {\r\n        if (this.dropdown.isOpened) {\r\n            if (!this.switch()) return true;\r\n            this.dropdown.hide();\r\n        } else if (!super.callMethod(ev)) {\r\n            this.dropdown.show();\r\n        }\r\n        return true;\r\n    }\r\n}\r\n","import {Directive, ElementRef, inject, input, TemplateRef} from \"@angular/core\";\r\n\r\n@Directive({\r\n    standalone: false,\r\n    selector: \"[tabsItem]\"\r\n})\r\nexport class TabsItemDirective {\r\n\r\n    readonly value = input(null, {alias: \"tabsItem\"});\r\n    readonly label = input(\"\");\r\n    readonly tooltip = input(\"\");\r\n    readonly icon = input(\"\");\r\n    readonly disabled = input(false);\r\n    readonly classes = input<string | string[]>(\"\");\r\n\r\n    readonly element = inject(ElementRef, {optional: true});\r\n    readonly template = inject(TemplateRef, {optional: true});\r\n}\r\n","import {Directive, input} from \"@angular/core\";\r\nimport {TabsItemDirective} from \"./tabs-item.directive\";\r\n\r\n@Directive({\r\n    standalone: false,\r\n    selector: \"ng-template[tab]\",\r\n    providers: [\r\n        {provide: TabsItemDirective, useExisting: TabsTemplateDirective}\r\n    ],\r\n})\r\nexport class TabsTemplateDirective extends TabsItemDirective {\r\n\r\n    readonly value = input(null, {alias: \"tab\"});\r\n\r\n}\r\n","import {Directive, ElementRef, Input, OnChanges, ViewContainerRef} from \"@angular/core\";\r\nimport {UnorderedListStyle, UnorderedListTemplate, UnorderedListTemplates} from \"../common-types\";\r\nimport {ObjectUtils} from \"../utils/object.utils\";\r\n\r\n@Directive({\r\n    standalone: false,\r\n    selector: \"[unorderedListItem]\"\r\n})\r\nexport class UnorderedListItemDirective implements OnChanges {\r\n\r\n    @Input(\"unorderedListItem\") item: any;\r\n    @Input() type: string;\r\n    @Input() data: any;\r\n    @Input() keyPrefix: string;\r\n    @Input() listStyle: UnorderedListStyle;\r\n    @Input() path: string;\r\n    @Input() level: number;\r\n    @Input() templates: UnorderedListTemplate[];\r\n    @Input() defaultTemplates: UnorderedListTemplates;\r\n\r\n    isArray: boolean;\r\n    isObject: boolean;\r\n    valueIsArray: boolean;\r\n    valueIsObject: boolean;\r\n    valueType: string;\r\n\r\n    get elem(): HTMLElement {\r\n        return this.elementRef.nativeElement;\r\n    }\r\n\r\n    constructor(private elementRef: ElementRef, private viewContainer: ViewContainerRef) {\r\n\r\n    }\r\n\r\n    ngOnChanges(): void {\r\n        if (!this.templates || !this.defaultTemplates || !this.item) return;\r\n        const promise = this.item.value instanceof Promise ? this.item.value : Promise.resolve(this.item.value);\r\n        promise.then(value => {\r\n            this.item.value = value;\r\n            this.path = ObjectUtils.isNullOrUndefined(this.path) ? \"\" : this.path.toString();\r\n            this.isArray = ObjectUtils.isArray(this.data);\r\n            this.isObject = ObjectUtils.isObject(this.data);\r\n            this.valueIsArray = ObjectUtils.isArray(this.item.value);\r\n            this.valueIsObject = ObjectUtils.isObject(this.item.value);\r\n            this.valueType = ObjectUtils.getType(this.item.value);\r\n            const context: any = this;\r\n            const template = this\r\n                .templates\r\n                .find(t => t.type == this.type && ObjectUtils.evaluate(t.selector, context))?.templateRef || this.defaultTemplates[this.type];\r\n            // Set view\r\n            this.viewContainer.clear();\r\n            this.viewContainer.createEmbeddedView(template, context);\r\n            // Set classes\r\n            if (this.type !== \"item\") return;\r\n            this.item.classList = [];\r\n            this.isClass(\"is-array\", this.valueIsArray);\r\n            this.isClass(\"is-object\", this.valueIsObject);\r\n            this.isClass(\"is-value\", !this.valueIsObject && !this.valueIsArray);\r\n            this.isClass(`type-${this.valueType}`);\r\n            this.isClass(`path-${this.path.replace(/\\./g, \"-\")}`);\r\n            this.isClass(`key-${this.item.key}`);\r\n        }, reason => {\r\n            console.log(\"Can't handle promise rejection\", reason);\r\n        });\r\n    }\r\n\r\n    private isClass(className: string, value: boolean = true): void {\r\n        if (!value) return;\r\n        this.item.classList.push(className);\r\n    }\r\n}\r\n","import {Directive, Input, TemplateRef} from \"@angular/core\";\r\nimport {UnorderedListTemplate} from \"../common-types\";\r\n\r\n@Directive({\r\n    standalone: false,\r\n    selector: \"ng-template[type][selector]\"\r\n})\r\n\r\nexport class UnorderedListTemplateDirective implements UnorderedListTemplate {\r\n\r\n    @Input() type: string;\r\n    @Input() selector: string;\r\n\r\n    constructor(readonly templateRef: TemplateRef<any>) {\r\n\r\n    }\r\n}\r\n","import {\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    computed,\r\n    ElementRef,\r\n    inject,\r\n    input,\r\n    ViewEncapsulation\r\n} from \"@angular/core\";\r\nimport {ButtonProps, ButtonSize, ButtonType} from \"../../common-types\";\r\nimport {BUTTON_TYPE} from \"../../tokens\";\r\n\r\n@Component({\r\n    standalone: false,\r\n    encapsulation: ViewEncapsulation.None,\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    selector: \"btn\",\r\n    templateUrl: \"./btn.component.html\"\r\n})\r\nexport class BtnComponent {\r\n\r\n    readonly label = input(\"\");\r\n    readonly tooltip = input(\"\");\r\n    readonly icon = input(\"\");\r\n    readonly disabled = input(false);\r\n    readonly type = input(\"primary\" as ButtonType);\r\n    readonly size = input(\"normal\" as ButtonSize);\r\n\r\n    readonly buttonType = inject(BUTTON_TYPE);\r\n    readonly element = inject<ElementRef<HTMLElement>>(ElementRef);\r\n\r\n    readonly buttonProps = computed<ButtonProps>(() => {\r\n        return {\r\n            label: this.label(),\r\n            tooltip: this.tooltip(),\r\n            icon: this.icon(),\r\n            disabled: this.disabled(),\r\n            type: this.type(),\r\n            size: this.size()\r\n        };\r\n    });\r\n\r\n    contains(target: EventTarget): boolean {\r\n        return !(target instanceof HTMLElement) || this.element.nativeElement?.contains(target);\r\n    }\r\n\r\n}\r\n","<ng-container [ngComponentOutlet]=\"buttonType\"\r\n              [ngComponentOutletInputs]=\"$any(buttonProps())\"></ng-container>\r\n","import {ChangeDetectionStrategy, Component, computed, inject, input, ViewEncapsulation} from \"@angular/core\";\r\nimport {IconProps} from \"../../common-types\";\r\nimport {ICON_MAP, ICON_TYPE} from \"../../tokens\";\r\n\r\n@Component({\r\n    standalone: false,\r\n    encapsulation: ViewEncapsulation.None,\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    selector: \"icon\",\r\n    templateUrl: \"./icon.component.html\"\r\n})\r\nexport class IconComponent {\r\n\r\n    readonly name = input(\"trash\");\r\n\r\n    readonly iconType = inject(ICON_TYPE);\r\n\r\n    readonly iconMap = inject(ICON_MAP);\r\n\r\n    readonly iconProps = computed<IconProps>(() => {\r\n        const name = this.name();\r\n        return {\r\n            name: this.iconMap[name] || name,\r\n        };\r\n    });\r\n\r\n}\r\n","<ng-container [ngComponentOutlet]=\"iconType\"\r\n              [ngComponentOutletInputs]=\"iconProps()\"></ng-container>\r\n","import {Component, Input, ViewEncapsulation} from \"@angular/core\";\r\nimport {ButtonProps, ButtonSize, ButtonType} from \"../../common-types\";\r\n\r\n@Component({\r\n    standalone: false,\r\n    encapsulation: ViewEncapsulation.None,\r\n    selector: \"btn-default\",\r\n    templateUrl: \"./btn-default.component.html\",\r\n    styleUrls: [\"./btn-default.component.scss\"]\r\n})\r\nexport class BtnDefaultComponent implements ButtonProps {\r\n\r\n    @Input() label: string;\r\n    @Input() tooltip: string;\r\n    @Input() icon: string;\r\n    @Input() disabled: boolean;\r\n    @Input() type: ButtonType;\r\n    @Input() size: ButtonSize;\r\n\r\n    get bsSize(): string {\r\n        return this.size === \"small\" ? \"btn-sm\" : \"btn-md\";\r\n    }\r\n\r\n}\r\n","<button class=\"default-btn btn\"\r\n        type=\"button\"\r\n        async-method-target\r\n        [title]=\"!tooltip ? '' : tooltip | translate\"\r\n        [ngClass]=\"['btn-' + type, bsSize]\">\r\n    <icon [name]=\"icon\" *ngIf=\"icon\"></icon>\r\n    <span *ngIf=\"label\">{{ label | translate }}</span>\r\n</button>\r\n","import {Component, ViewEncapsulation} from \"@angular/core\";\r\n\r\n@Component({\r\n    standalone: false,\r\n    selector: \"close-btn\",\r\n    styleUrls: [\"./close-btn.component.scss\"],\r\n    template: \"\",\r\n    encapsulation: ViewEncapsulation.None\r\n})\r\nexport class CloseBtnComponent {\r\n\r\n}\r\n","import {\r\n    ChangeDetectorRef,\r\n    Component,\r\n    ElementRef,\r\n    EventEmitter,\r\n    Input, OnChanges,\r\n    Output, SimpleChanges,\r\n    ViewChild,\r\n    ViewEncapsulation\r\n} from \"@angular/core\";\r\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from \"@angular/forms\";\r\nimport {ObjectUtils} from \"../../utils/object.utils\";\r\nimport {ChipOption, ChipStatus, ChipValue} from \"../../common-types\";\r\nimport {AutoPlacementOptions} from \"@floating-ui/dom\";\r\nimport {DropdownDirective} from \"../../directives/dropdown.directive\";\r\n\r\n@Component({\r\n    standalone: false,\r\n    encapsulation: ViewEncapsulation.None,\r\n    selector: \"chips\",\r\n    templateUrl: \"./chips.component.html\",\r\n    styleUrls: [\"./chips.component.scss\"],\r\n    providers: [\r\n        {provide: NG_VALUE_ACCESSOR, useExisting: ChipsComponent, multi: true}\r\n    ],\r\n})\r\nexport class ChipsComponent implements ControlValueAccessor, OnChanges {\r\n\r\n    @Input() testId: string;\r\n    @Input() value: ChipValue | ChipValue[];\r\n    @Input() multiple: boolean;\r\n    @Input() disabled: boolean;\r\n    @Input() type: string;\r\n    @Input() min: number;\r\n    @Input() max: number;\r\n    @Input() minLength: number;\r\n    @Input() maxLength: number;\r\n    @Input() step: number;\r\n    @Input() placeholder: string;\r\n    @Input() unique: boolean;\r\n    @Input() strict: boolean;\r\n    @Input() options: ReadonlyArray<ChipOption>;\r\n\r\n    @Output() valueChange: EventEmitter<ChipValue | ChipValue[]>;\r\n\r\n    @ViewChild(\"chipDropdown\")\r\n    chipDropdown: DropdownDirective;\r\n\r\n    @ViewChild(\"chipButtons\")\r\n    chipButtons: ElementRef<HTMLDivElement>;\r\n\r\n    @ViewChild(\"chipInput\")\r\n    chipInput: ElementRef<HTMLInputElement>;\r\n\r\n    inputStyles: { [key: string]: string };\r\n    valueOptions: ChipOption[];\r\n    filteredOptions: ChipOption[];\r\n    statuses: ChipStatus[];\r\n    autoPlacement: AutoPlacementOptions;\r\n\r\n    private undoList: Function[];\r\n    private previousValue: string;\r\n\r\n    onChange: any = () => { };\r\n    onTouched: any = () => { };\r\n\r\n    constructor(readonly cdr: ChangeDetectorRef) {\r\n        this.testId = \"chips\";\r\n        this.value = [];\r\n        this.multiple = true;\r\n        this.statuses = [];\r\n        this.disabled = false;\r\n        this.type = \"text\";\r\n        this.min = -999999999;\r\n        this.max = 999999999;\r\n        this.minLength = 0;\r\n        this.maxLength = this.max;\r\n        this.step = 1;\r\n        this.placeholder = \"\";\r\n        this.unique = true;\r\n        this.strict = true;\r\n        this.valueChange = new EventEmitter();\r\n        this.inputStyles = {};\r\n        this.valueOptions = [];\r\n        this.filteredOptions = [];\r\n        this.autoPlacement = {\r\n            autoAlignment: true,\r\n            allowedPlacements: [\"top\", \"bottom\"]\r\n        };\r\n        this.undoList = [];\r\n        this.previousValue = \"\";\r\n    }\r\n\r\n    registerOnChange(fn: any) {\r\n        this.onChange = fn;\r\n    }\r\n\r\n    registerOnTouched(fn: any) {\r\n        this.onTouched = fn;\r\n    }\r\n\r\n    ngOnChanges(changes: SimpleChanges) {\r\n        if (changes.value) {\r\n            const value = changes.value.currentValue;\r\n            this.valueOptions = this.createValueOptions(Array.isArray(value) ? value : [value]);\r\n            this.value = this.updateValue();\r\n        }\r\n        this.filterOptions();\r\n    }\r\n\r\n    writeValue(value: ChipValue | ChipValue[]) {\r\n        this.valueOptions = this.createValueOptions(Array.isArray(value) ? value : [value]);\r\n        this.value = this.updateValue();\r\n        this.filterOptions();\r\n        this.cdr.markForCheck();\r\n    }\r\n\r\n    updateValues(val: ChipOption[]): void {\r\n        this.valueOptions = Array.from(val);\r\n        this.value = this.updateValue();\r\n        this.onChange(this.value);\r\n        this.valueChange.emit(this.value);\r\n        this.filterOptions();\r\n        this.cdr.markForCheck();\r\n    }\r\n\r\n    setDisabledState(val: boolean) {\r\n        this.disabled = val === true;\r\n        this.cdr.markForCheck();\r\n    }\r\n\r\n    removeItem(event: Event, ix: number): void {\r\n        event.stopPropagation();\r\n        if (this.disabled) return;\r\n        this.makeUndo();\r\n        this.updateValues(this.valueOptions.filter((v, i) => i !== ix));\r\n        this.onTouched(this.value);\r\n        this.chipInput.nativeElement.focus();\r\n    }\r\n\r\n    onResize(): void {\r\n        const container = this.chipDropdown.nativeElement;\r\n        const buttons = this.chipButtons.nativeElement;\r\n        const style = getComputedStyle(buttons);\r\n        const vertical = parseFloat(style.top);\r\n        const horizontal = parseFloat(style.gap);\r\n        this.inputStyles = buttons.offsetWidth > container.offsetWidth * .7\r\n            ? {\r\n                paddingTop: `${buttons.offsetHeight + vertical}px`,\r\n                paddingLeft: `0px`\r\n            } : {\r\n                paddingLeft: `${buttons.offsetWidth + horizontal}px`,\r\n                lineHeight: `${buttons.offsetHeight - vertical * 2}px`\r\n            };\r\n    }\r\n\r\n    onInput(ev: KeyboardEvent): boolean {\r\n        const input = ev.target as HTMLInputElement;\r\n        const changed = input.value !== this.previousValue;\r\n        this.previousValue = input.value;\r\n        this.chipDropdown.show();\r\n        if (ev.ctrlKey) {\r\n            if (ev.key == \"z\") {\r\n                const fn = this.undoList.pop();\r\n                if (ObjectUtils.isFunction(fn)) {\r\n                    fn();\r\n                }\r\n                return false;\r\n            }\r\n            return false;\r\n        }\r\n        if (ev.key === \"Enter\" || ev.key === \"Tab\") {\r\n            return this.enterOption(input.value);\r\n        }\r\n        if (ev.key === \"Backspace\" && !input.value && !changed && this.valueOptions.length > 0) {\r\n            this.makeUndo();\r\n            this.updateValues(this.valueOptions.slice(0, this.valueOptions.length - 1));\r\n            this.onTouched(this.value);\r\n            return false;\r\n        }\r\n        this.filterOptions();\r\n        return true;\r\n    }\r\n\r\n    onBlur(ev: FocusEvent): void {\r\n        if (this.chipDropdown.isOpened) return;\r\n        const input = ev.target as HTMLInputElement;\r\n        this.enterOption(input.value);\r\n    }\r\n\r\n    enterOption(src: string | number): boolean {\r\n        const value = String(src);\r\n        let option = this.createOption(value);\r\n        if (!option && value && this.filteredOptions?.length === 1) {\r\n            const regex = new RegExp(value, \"gi\");\r\n            option = this.filteredOptions.find(o => o.label?.match(regex));\r\n        }\r\n        if (!option || (this.unique && this.valueOptions.findIndex(o => o.value === option.value) >= 0)) {\r\n            return true;\r\n        }\r\n        this.makeUndo();\r\n        this.updateValues(this.multiple ? this.valueOptions.concat(option) : [option]);\r\n        this.onTouched(this.value);\r\n        const input = this.chipInput?.nativeElement;\r\n        if (input) {\r\n            input.value = \"\";\r\n            setTimeout(input.focus.bind(input), 500);\r\n        }\r\n        this.chipDropdown.hide();\r\n        return false;\r\n    }\r\n\r\n    trackBy(index: number, option: ChipOption): string {\r\n        return `${option.value}-${option.label}`;\r\n    }\r\n\r\n    protected makeUndo(): void {\r\n        const value = this.valueOptions;\r\n        this.undoList.push(() => this.updateValues(value));\r\n    }\r\n\r\n    protected createOption(value: string | number): ChipOption {\r\n        const label = String(value);\r\n        if (this.options) {\r\n            const option =\r\n                (!this.strict ? null : this.options.find(o => o.label === label)) ??\r\n                this.options.find(o => o.value === value);\r\n            return option ?? (this.strict || !label ? null : {\r\n                value,\r\n                label,\r\n            });\r\n        }\r\n        return !label ? null : {\r\n            value,\r\n            label,\r\n        };\r\n    }\r\n\r\n    protected createValueOptions(values: ChipValue[]): ChipOption[] {\r\n        values = values.filter(ObjectUtils.isDefined).map(v => {\r\n            if (this.type == \"number\") {\r\n                v = String(v || \"0\").replace(/([^-\\d|.,])/gi, \"\").replace(/\\./gi, \",\");\r\n                const value = Math.round((parseFloat(v.replace(/,/gi, \".\")) || 0) / this.step) * this.step;\r\n                return Math.min(this.max, Math.max(this.min, value));\r\n            }\r\n            return String(v || \"0\").substring(0, this.maxLength);\r\n        });\r\n        const options = values.map(id => {\r\n            return this.createOption(id);\r\n        }).filter(o => !!o);\r\n        return this.multiple ? options : options.slice(0, 1);\r\n    }\r\n\r\n    protected updateValue(): ChipValue | ChipValue[] {\r\n        this.statuses = this.valueOptions.map(o => {\r\n            if (this.type == \"number\") {\r\n                return Number(o.value) < this.min ? \"invalid\" : \"valid\";\r\n            }\r\n            return String(o.value).length < this.minLength ? \"invalid\" : \"valid\";\r\n        });\r\n        return this.multiple\r\n            ? this.valueOptions.map(o => o.value)\r\n            : this.valueOptions[0]?.value ?? null;\r\n    }\r\n\r\n    protected filterOptions(): void {\r\n        if (!this.options) {\r\n            this.filteredOptions = null;\r\n            return;\r\n        }\r\n        const value = (this.chipInput?.nativeElement?.value || \"\").toLowerCase();\r\n        this.filteredOptions = this.options.filter(o => {\r\n            return o.label?.toLowerCase().includes(value);\r\n        });\r\n        if (!this.unique) return;\r\n        const values = this.valueOptions.map(o => o.value);\r\n        this.filteredOptions = this.filteredOptions.filter(o => !values.includes(o.value));\r\n    }\r\n}\r\n","<div dd\r\n     attachTo=\"root\"\r\n     [closeInside]=\"false\"\r\n     [autoPlacement]=\"autoPlacement\"\r\n     [ngClass]=\"{disabled: disabled}\" class=\"chips\" #chipDropdown=\"dropdown\">\r\n    <input class=\"chips-input\"\r\n           dropdownToggle\r\n           [switch]=\"false\"\r\n           [attr.data-testid]=\"testId + '-input'\"\r\n           [type]=\"type == 'number' ? 'number': 'text'\"\r\n           [min]=\"min\"\r\n           [max]=\"max\"\r\n           [step]=\"step\"\r\n           [disabled]=\"disabled\"\r\n           [placeholder]=\"valueOptions.length == 0 && placeholder | translate\"\r\n           [ngStyle]=\"inputStyles\"\r\n           (blur)=\"onBlur($event)\"\r\n           (keyup)=\"onInput($event)\"\r\n           #chipInput/>\r\n    <div class=\"chips-buttons\" #chipButtons [ngClass]=\"{disabled: disabled}\" (resize)=\"onResize()\">\r\n        <ng-container *ngFor=\"let item of valueOptions; let ix = index; trackBy:trackBy\">\r\n            <a class=\"chips-button\" [ngClass]=\"'chips-' + statuses[ix]\" (dblclick)=\"removeItem($event, ix)\">\r\n                @if (item.picture) {\r\n                    <img [src]=\"item.picture | safe:'url'\"\r\n                         class=\"chip-picture\"\r\n                         referrerpolicy=\"no-referrer\" [attr.alt]=\"item.label\">\r\n\r\n                }\r\n                <span class=\"chips-label\"\r\n                      [attr.data-testid]=\"testId + '-label-' + ix\">{{ item.label }} </span>\r\n                <close-btn class=\"chips-remove\"\r\n                           [attr.data-testid]=\"testId + '-delete-' + ix\"\r\n                           (click)=\"removeItem($event, ix)\" *ngIf=\"!disabled\"></close-btn>\r\n            </a>\r\n        </ng-container>\r\n    </div>\r\n    @if (options) {\r\n        <div class=\"chips-dropdown\" *dropdownContent>\r\n            <button [ngClass]=\"option.classes\"\r\n                    [disabled]=\"option.disabled\"\r\n                    (click)=\"enterOption(option.value)\"\r\n                    *ngFor=\"let option of filteredOptions\">\r\n                <div class=\"select-option\">\r\n                    @if (option?.picture) {\r\n                        <img [src]=\"option.picture | safe:'url'\"\r\n                             class=\"select-option-picture\"\r\n                             referrerpolicy=\"no-referrer\" [attr.alt]=\"option.label\">\r\n                    }\r\n                    <div class=\"select-option-label\">\r\n                        {{ option.label }}\r\n                    </div>\r\n                </div>\r\n            </button>\r\n        </div>\r\n    }\r\n</div>\r\n","import {\r\n    ChangeDetectorRef,\r\n    Component,\r\n    ContentChild,\r\n    forwardRef,\r\n    Input,\r\n    OnChanges,\r\n    SimpleChanges,\r\n    TemplateRef,\r\n    ViewEncapsulation\r\n} from \"@angular/core\";\r\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from \"@angular/forms\";\r\n\r\nimport {DragEventHandler} from \"../../common-types\";\r\nimport {checkTransitions} from \"../../utils/misc\";\r\nimport {ObjectUtils} from \"../../utils/object.utils\";\r\nimport {ArrayUtils} from \"../../utils/array.utils\";\r\n\r\ntype DropListItem = Record<string, any>;\r\n\r\ntype DropListId = string | number;\r\n\r\n@Component({\r\n    standalone: false,\r\n    encapsulation: ViewEncapsulation.None,\r\n    selector: \"drop-list\",\r\n    styleUrls: [\"./drop-list.component.scss\"],\r\n    templateUrl: \"./drop-list.component.html\",\r\n    providers: [{\r\n        provide: NG_VALUE_ACCESSOR,\r\n        useExisting: forwardRef(() => DropListComponent),\r\n        multi: true,\r\n    }],\r\n})\r\nexport class DropListComponent implements OnChanges, ControlValueAccessor {\r\n\r\n    @Input() disabled: boolean;\r\n    @Input() unique: boolean;\r\n    @Input() message: string;\r\n    @Input() idField: string;\r\n    @Input() labelField: string;\r\n    @Input() value: DropListId[];\r\n    @Input() context: DropListItem[];\r\n    @Input() prepareItem: (i: DropListItem) => void;\r\n    @Input() checkFn: DragEventHandler<boolean, \"data\">;\r\n    @Input() dropFn: DragEventHandler<boolean, \"data\">;\r\n\r\n    @ContentChild(\"itemTemplate\")\r\n    itemTemplate: TemplateRef<any>;\r\n\r\n    onChange: Function;\r\n    onTouched: Function;\r\n    valueMap: Record<DropListId, DropListItem>;\r\n\r\n    remove: (index: number) => void;\r\n\r\n    constructor(private cdr: ChangeDetectorRef) {\r\n        this.disabled = false;\r\n        this.unique = false;\r\n        this.idField = \"id\";\r\n        this.labelField = \"label\";\r\n        this.value = [];\r\n        this.context = [];\r\n        this.prepareItem = () => {};\r\n        this.checkFn = () => false;\r\n        this.dropFn = () => false;\r\n        this.valueMap = {};\r\n        this.remove = index => {\r\n            this.changeValue(this.value.filter((_, i) => i !== index));\r\n        };\r\n    }\r\n\r\n    onDragEnter(ev: DragEvent, elem: HTMLElement, data: any) {\r\n        ev.preventDefault();\r\n        if (!elem || !ObjectUtils.isFunction(this.checkFn) || !this.checkFn({ev, elem, data})) {\r\n            ev.dataTransfer.effectAllowed = \"none\";\r\n            ev.dataTransfer.dropEffect = \"none\";\r\n            return;\r\n        }\r\n        ev.dataTransfer.effectAllowed = \"move\";\r\n        ev.dataTransfer.dropEffect = \"move\";\r\n        elem.classList.add(\"drop-allowed\");\r\n    }\r\n\r\n    onDragLeave(ev: DragEvent, elem: HTMLElement) {\r\n        ev.dataTransfer.effectAllowed = \"none\";\r\n        ev.dataTransfer.dropEffect = \"none\";\r\n        elem.classList.remove(\"drop-allowed\");\r\n    }\r\n\r\n    onDrop(ev: DragEvent, elem: HTMLElement) {\r\n        ev.preventDefault();\r\n        ev.stopPropagation();\r\n        if (!elem) {\r\n            return;\r\n        }\r\n        const data = JSON.parse(ev.dataTransfer.getData(\"itemData\") || \"{}\");\r\n        elem.classList.remove(\"drop-allowed\");\r\n        checkTransitions(elem, () => {\r\n            checkTransitions(elem, () => {\r\n                if (elem && ObjectUtils.isFunction(this.dropFn) && this.dropFn({ev, elem, data})) {\r\n                    // If drop is handled from outside function\r\n                    return;\r\n                }\r\n                const id = data[this.idField] || data.id;\r\n                this.changeValue(this.value.concat([id]));\r\n            });\r\n            elem.classList.remove(\"dropped\");\r\n        });\r\n        elem.classList.add(\"dropped\");\r\n    }\r\n\r\n    ngOnChanges(changes: SimpleChanges) {\r\n        if (changes.context || changes.idField) {\r\n            this.valueMap = this.context?.reduce((res, item) => {\r\n                // In case this is a dynamic form option which stores real value under props\r\n                item = Object.assign({}, item, item.props || {});\r\n                // Prepare item\r\n                this.prepareItem(item);\r\n\r\n                const id = item[this.idField] || item.id;\r\n                res[id] = item;\r\n                return res;\r\n            }, {}) || {};\r\n            this.cdr.detectChanges();\r\n        }\r\n    }\r\n\r\n    registerOnChange(fn: any) {\r\n        this.onChange = fn;\r\n    }\r\n\r\n    registerOnTouched(fn: any) {\r\n        this.onTouched = fn;\r\n    }\r\n\r\n    setDisabledState(val: boolean): void {\r\n        this.disabled = val === true;\r\n        this.cdr.markForCheck();\r\n    }\r\n\r\n    writeValue(obj: any): void {\r\n        this.value = Array.isArray(obj) ? obj : this.value;\r\n        this.cdr.detectChanges();\r\n    }\r\n\r\n    protected changeValue(value: DropListId[]): void {\r\n        this.value = this.unique ? ArrayUtils.unique(value) : value;\r\n        this.onChange?.(value);\r\n        this.onTouched?.();\r\n    }\r\n}\r\n","<ng-template #defaultTemplate let-item=\"item\">\r\n    <div class=\"drop-list-item-label\">\r\n        {{ item | getValue:labelField }}\r\n    </div>\r\n</ng-template>\r\n<div class=\"drop-list\"\r\n     #list\r\n     (dragenter)=\"onDragEnter($event, list, this)\"\r\n     (dragleave)=\"onDragLeave($event, list)\"\r\n     (drop)=\"onDrop($event, list)\">\r\n    <div class=\"drop-list-message\"\r\n         [ngClass]=\"{'has-value': value?.length}\"\r\n         [innerHTML]=\"message | translate | safe:'html'\"\r\n         *ngIf=\"message\">\r\n    </div>\r\n    <ng-container *ngFor=\"let id of value; let ix = index\">\r\n        <div class=\"drop-list-item\">\r\n            <ng-template #noItemTemplate>\r\n                <div class=\"drop-list-item-label just-id\">\r\n                    {{ id }}\r\n                </div>\r\n            </ng-template>\r\n            <ng-container [ngTemplateOutlet]=\"itemTemplate || defaultTemplate\"\r\n                          [ngTemplateOutletContext]=\"{item: valueMap[id], id: id, remove: remove}\"\r\n                          *ngIf=\"valueMap[id]; else noItemTemplate\"></ng-container>\r\n            <a class=\"remove-item-btn\" (click)=\"remove(ix)\"></a>\r\n        </div>\r\n    </ng-container>\r\n</div>\r\n","import {AfterViewInit, Component, Input, OnChanges, ViewChild, ViewEncapsulation} from \"@angular/core\";\nimport {Placement} from \"@floating-ui/utils\";\nimport {Alignment, AutoPlacementOptions} from \"@floating-ui/dom\";\nimport {DropdownContentDirective} from \"../../directives/dropdown-content.directive\";\nimport {DropdownAttachTo} from \"../../common-types\";\n\n@Component({\n    standalone: false,\n    encapsulation: ViewEncapsulation.None,\n    selector: \"dropdown-box\",\n    styleUrls: [\"./dropdown-box.component.scss\"],\n    templateUrl: \"./dropdown-box.component.html\",\n})\nexport class DropdownBoxComponent implements AfterViewInit, OnChanges {\n\n    /**\n     * Determines if the dropdown should be closed even if we click inside it\n     */\n    @Input() closeInside: boolean;\n\n    /**\n     * Determines where the floating element needs to be placed\n     */\n    @Input() attachTo: DropdownAttachTo;\n\n    /**\n     * Where to place the floating element relative to the reference element.\n     */\n    @Input() placement: Placement;\n\n    /**\n     * The axis that runs along the alignment of the floating element. Determines\n     * whether to check for most space along this axis.\n     * @default false\n     */\n    @Input() crossAxis?: boolean;\n\n    /**\n     * Choose placements with a particular alignment.\n     * @default undefined\n     */\n    @Input() alignment?: Alignment | null;\n\n    /**\n     * Whether to choose placements with the opposite alignment if the preferred\n     * alignment does not fit.\n     * @default true\n     */\n    @Input() autoAlignment?: boolean;\n\n    /**\n     * Which placements are allowed to be chosen. Placements must be within the\n     * `alignment` option if explicitly set.\n     * @default allPlacements (variable)\n     */\n    @Input() allowedPlacements?: Array<Placement>;\n\n    /**\n     * Adds a class to the main div element and also to the content\n     * ('drop' by default which translates to 'drop-content-wrapper' in case of content)\n     */\n    @Input() componentClass: string;\n\n    autoPlacement: AutoPlacementOptions;\n\n    @ViewChild(DropdownContentDirective)\n    content: DropdownContentDirective;\n\n    constructor() {\n        this.closeInside = true;\n        this.attachTo = \"root\";\n        this.placement = \"bottom\";\n        this.crossAxis = false;\n        this.autoAlignment = true;\n        this.allowedPlacements = [\"top\", \"bottom\"];\n        this.componentClass = \"drop\";\n        this.makeAutoPlacementOpts();\n    }\n\n    protected makeAutoPlacementOpts() {\n        this.autoPlacement = {\n            crossAxis: this.crossAxis,\n            alignment: this.alignment,\n            autoAlignment: this.autoAlignment,\n            allowedPlacements: this.allowedPlacements,\n        };\n    }\n\n    ngAfterViewInit() {\n        this.content.initialize();\n    }\n\n    ngOnChanges() {\n        this.makeAutoPlacementOpts();\n    }\n}\n","<div dd class=\"dropdown-box\"\n     [ngClass]=\"componentClass\"\n     [closeInside]=\"closeInside\"\n     [attachTo]=\"attachTo\"\n     [placement]=\"placement\"\n     [autoPlacement]=\"autoPlacement\">\n    <div class=\"dropdown-box-toggle\" dropdownToggle>\n        <a class=\"dropdown-box-toggle-link\">\n            <ng-content select=\"[toggle-content]\"></ng-content>\n        </a>\n    </div>\n    <div class=\"dropdown-box-content\" [ngClass]=\"componentClass + '-content-wrapper'\" *dropdownContent>\n        <ng-content></ng-content>\n    </div>\n</div>\n","import {Component, computed, inject, input, TemplateRef, ViewEncapsulation} from \"@angular/core\";\r\nimport {toSignal} from \"@angular/core/rxjs-interop\";\r\nimport {ITableColumn} from \"../../common-types\";\r\nimport {LANGUAGE_SERVICE} from \"../../tokens\";\r\n\r\nimport {GlobalTemplateService} from \"../../services/global-template.service\";\r\nimport {ObjectUtils} from \"../../utils/object.utils\";\r\n\r\n@Component({\r\n    standalone: false,\r\n    selector: \"dynamic-table-cell\",\r\n    templateUrl: \"./dynamic-table-cell.component.html\",\r\n    encapsulation: ViewEncapsulation.None\r\n})\r\nexport class DynamicTableCellComponent {\r\n\r\n    readonly language = inject(LANGUAGE_SERVICE);\r\n    readonly globalTemplates = inject(GlobalTemplateService);\r\n\r\n    readonly item = input<Record<string, any>>({});\r\n    readonly column = input<ITableColumn>({title: \"\"});\r\n    readonly id = input(\"\");\r\n    readonly globalTemplatePrefix = input(\"dynamic-table\");\r\n    readonly fallbackTemplate = input<TemplateRef<any>>(null);\r\n\r\n    readonly templateKeys = toSignal(this.globalTemplates.templatesUpdated);\r\n    readonly template = computed(() => {\r\n        const prefix = this.globalTemplatePrefix();\r\n        const key = `${prefix}-col-${this.id()}`;\r\n        const keys = this.templateKeys();\r\n        return !keys?.includes(key) ? null : this.globalTemplates.get(key);\r\n    });\r\n    readonly context = computed(() => {\r\n        const item = this.item();\r\n        const id = this.id();\r\n        const value = ObjectUtils.getValue(item, id, \"-\");\r\n        return {\r\n            item, id, value,\r\n            column: this.column(),\r\n            multi: Array.isArray(value)\r\n        };\r\n    });\r\n}\r\n","<ng-template #fallback let-value=\"value\">\r\n    {{ value ?? '-' }}\r\n</ng-template>\r\n<ng-template #defaultTemplate let-context let-column=\"column\" let-id=\"id\" let-value=\"value\">\r\n    @switch (column.filterType) {\r\n        @case ('checkbox') {\r\n            <div class=\"table-checkbox\">\r\n                <icon [name]=\"value ? 'check' : 'xmark'\"></icon>\r\n            </div>\r\n        }\r\n        @case ('enum') {\r\n            @let optionPrefix = column.enumPrefix || id;\r\n            <div [ngClass]=\"`table-enum enum-${optionPrefix} enum-value-${value}`\">\r\n                <span>{{ `${optionPrefix}.${value}` | translate }}</span>\r\n            </div>\r\n        }\r\n        @default {\r\n            <ng-container [ngxTemplateOutlet]=\"fallbackTemplate() || fallback\"\r\n                          [context]=\"context\"></ng-container>\r\n        }\r\n    }\r\n</ng-template>\r\n<ng-container [ngxTemplateOutlet]=\"template() || defaultTemplate\"\r\n              [context]=\"context()\"\r\n              [additionalContext]=\"{defaultTemplate}\"></ng-container>\r\n","import {Component, Input, OnChanges, OnDestroy, OnInit, SimpleChanges, ViewEncapsulation} from \"@angular/core\";\nimport {Subscription} from \"rxjs\";\nimport {ObjectUtils} from \"../../utils/object.utils\";\nimport {StateService} from \"../../services/state.service\";\nimport {PaginationDirective} from \"../../directives/pagination.directive\";\n\n@Component({\n    standalone: false,\n    encapsulation: ViewEncapsulation.None,\n    selector: \"pagination-menu\",\n    templateUrl: \"./pagination-menu.component.html\",\n    styleUrls: [\"./pagination-menu.component.scss\"],\n})\nexport class PaginationMenuComponent implements OnInit, OnDestroy, OnChanges {\n\n    @Input() maxSize: number;\n    @Input() urlParam: string;\n    @Input() directionLinks: boolean;\n    @Input() boundaryLinks: boolean;\n\n    pages: number[];\n\n    get hasPrev(): boolean {\n        return this.pagination.page > 1;\n    }\n\n    get hasNext(): boolean {\n        return this.pagination.page < this.pagination.maxPage\n    }\n\n    private onRefresh: Subscription;\n\n    constructor(public state: StateService, public pagination: PaginationDirective) {\n        this.maxSize = 5;\n        this.directionLinks = true;\n        this.boundaryLinks = true;\n    }\n\n    ngOnInit(): void {\n        this.onRefresh = this.pagination.onRefresh.subscribe(() => this.setPages());\n    }\n\n    ngOnDestroy(): void {\n        if (!this.onRefresh) return;\n        this.onRefresh.unsubscribe();\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        this.maxSize = isNaN(this.maxSize) || this.maxSize <= 0 ? 5 : this.maxSize;\n        this.directionLinks = ObjectUtils.isBoolean(this.directionLinks) ? this.directionLinks : true;\n        this.boundaryLinks = ObjectUtils.isBoolean(this.boundaryLinks) ? this.boundaryLinks : true;\n        this.setPages();\n    }\n\n    paginate(page: number): void {\n        if (this.pagination.page == page || this.pagination.maxPage < page || page < 1) return;\n        if (!this.urlParam) {\n            this.pagination.paginate(page);\n            return;\n        }\n        const params = Object.assign({}, this.state.params);\n        params[this.urlParam] = page.toString();\n        const path = StateService.toPath(this.state.route, params);\n        this.state.navigateByUrl(path);\n    }\n\n    protected setPages(): number {\n        if (!this.pagination) return;\n        const totalPages = this.pagination.maxPage;\n        let startPage = Math.max(this.pagination.page - Math.floor(this.maxSize / 2), 1);\n        let endPage = startPage + this.maxSize - 1;\n        if (endPage > totalPages) {\n            endPage = totalPages;\n            startPage = Math.max(endPage - this.maxSize + 1, 1);\n        }\n        const pages: number[] = [];\n        for (let num = startPage; num <= endPage; num++) {\n            pages.push(num);\n        }\n        this.pages = pages;\n    }\n}\n","<div class=\"pg-menu\" *ngIf=\"pagination.total > pagination.itemsPerPage\">\r\n    <ul class=\"pg-list\">\r\n        <li class=\"page-item\" [ngClass]=\"{disabled: !hasPrev}\" *ngIf=\"boundaryLinks\">\r\n            <a class=\"page-link boundary-link previous\" (click)=\"paginate(1)\"></a>\r\n        </li>\r\n        <li class=\"page-item\" [ngClass]=\"{disabled: !hasPrev}\" *ngIf=\"directionLinks\">\r\n            <a class=\"page-link direction-link previous\" (click)=\"paginate(pagination.page - 1)\"></a>\r\n        </li>\r\n        <li class=\"page-item\" [ngClass]=\"{active: pagination.page == page}\" *ngFor=\"let page of pages\">\r\n            <a class=\"page-link\" [ngClass]=\"{active: pagination.page == page}\" (click)=\"paginate(page)\">{{ page }}</a>\r\n        </li>\r\n        <li class=\"page-item\" [ngClass]=\"{disabled: !hasNext}\" *ngIf=\"directionLinks\">\r\n            <a class=\"page-link direction-link\" (click)=\"paginate(pagination.page + 1)\"></a>\r\n        </li>\r\n        <li class=\"page-item\" [ngClass]=\"{disabled: !hasNext}\" *ngIf=\"boundaryLinks\">\r\n            <a class=\"page-link boundary-link\" (click)=\"paginate(pagination.maxPage)\"></a>\r\n        </li>\r\n    </ul>\r\n</div>\r\n","import {\r\n    AfterViewInit,\r\n    Component,\r\n    computed, contentChild,\r\n    ContentChild,\r\n    contentChildren,\r\n    ElementRef, input,\r\n    Input,\r\n    OnChanges,\r\n    OnDestroy, output,\r\n    SimpleChanges,\r\n    TemplateRef,\r\n    ViewChild,\r\n    ViewEncapsulation\r\n} from \"@angular/core\";\r\n\r\nimport {\r\n    DragEventHandler,\r\n    IPaginationData,\r\n    ITableColumns,\r\n    ITableDataQuery,\r\n    ITableTemplates,\r\n    PaginationItemContext,\r\n    TableColumns,\r\n    TableDataItems,\r\n    TableDataLoader\r\n} from \"../../common-types\";\r\nimport {ObjectUtils} from \"../../utils/object.utils\";\r\nimport {UniqueUtils} from \"../../utils/unique.utils\";\r\nimport {checkTransitions} from \"../../utils/misc\";\r\n\r\nimport {DynamicTableTemplateDirective} from \"../../directives/dynamic-table-template.directive\";\r\nimport {PaginationDirective} from \"../../directives/pagination.directive\";\r\nimport {DropdownDirective} from \"../../directives/dropdown.directive\";\r\nimport {MathUtils} from \"../../utils/math.utils\";\r\nimport {Observable, of, Subscription} from \"rxjs\";\r\n\r\n@Component({\r\n    standalone: false,\r\n    encapsulation: ViewEncapsulation.None,\r\n    selector: \"dynamic-table\",\r\n    styleUrls: [\"./dynamic-table.component.scss\"],\r\n    templateUrl: \"./dynamic-table.component.html\",\r\n})\r\nexport class DynamicTableComponent implements AfterViewInit, OnChanges, OnDestroy {\r\n\r\n    @Input() dataLoader: TableDataLoader;\r\n    @Input() data: TableDataItems | Observable<TableDataItems>;\r\n    @Input() selected: any;\r\n    @Input() page: number;\r\n    @Input() urlParam: string;\r\n    @Input() parallelData: TableDataItems;\r\n    @Input() columns: TableColumns;\r\n\r\n    /**\r\n     * Parameter for displaying a simple filter search box\r\n     */\r\n    @Input() showFilter: boolean;\r\n\r\n    /**\r\n     * Parameter for specifying a label for filter\r\n     */\r\n    @Input() filterLabel: string;\r\n\r\n    /**\r\n     * Parameter for specifying a placeholder for filter\r\n     */\r\n    @Input() placeholder: string;\r\n\r\n    /**\r\n     * Parameter for displaying an item per page selector dropdown with the specified numbers\r\n     */\r\n    @Input() showItems: number[];\r\n\r\n    /**\r\n     * Parameter for setting how many items should be displayed by default\r\n     */\r\n    @Input() itemsPerPage: number;\r\n    @Input() updateTime: number;\r\n    @Input() filterTime: number;\r\n    @Input() maxPages: number;\r\n    @Input() directionLinks: boolean;\r\n    @Input() boundaryLinks: boolean;\r\n    @Input() orderBy: string;\r\n    @Input() orderDescending: boolean;\r\n    @Input() testId: string;\r\n    @Input() titlePrefix: string;\r\n\r\n    @Input() dragStartFn: DragEventHandler;\r\n    @Input() dragEnterFn: DragEventHandler;\r\n    @Input() dropFn: DragEventHandler<void>;\r\n\r\n    tableId: string;\r\n    filter: string;\r\n    query: ITableDataQuery;\r\n    hasQuery: boolean;\r\n    columnDefs: ITableColumns;\r\n    cols: string[];\r\n    sortable: boolean;\r\n\r\n    get items(): any[] {\r\n        return !this.pagination ? [] : this.pagination.items;\r\n    }\r\n\r\n    protected localData: TableDataItems;\r\n    protected subscription: Subscription;\r\n\r\n    @ContentChild(\"rowTemplate\", {static: true})\r\n    rowTemplate: TemplateRef<any>;\r\n\r\n    @ContentChild(\"wrapperTemplate\", {static: true})\r\n    wrapperTemplate: TemplateRef<any>;\r\n\r\n    @ViewChild(\"columnsTemplate\", {static: true})\r\n    columnsTemplate: TemplateRef<any>;\r\n\r\n    @ViewChild(\"defaultRowTemplate\", {static: true})\r\n    defaultRowTemplate: TemplateRef<any>;\r\n\r\n    @ViewChild(\"defaultWrapperTemplate\", {static: true})\r\n    defaultWrapperTemplate: TemplateRef<any>;\r\n\r\n    @ViewChild(\"pagination\")\r\n    protected pagination: PaginationDirective;\r\n\r\n    readonly globalTemplatePrefix = input(\"dynamic-table\");\r\n\r\n    readonly fallbackTemplate = contentChild<TemplateRef<any>>(\"fallbackTemplate\");\r\n\r\n    readonly templateDirectives = contentChildren(DynamicTableTemplateDirective);\r\n\r\n    readonly templates= computed(() => {\r\n        return (this.templateDirectives() || []).reduce((result, directive) => {\r\n            if (ObjectUtils.isArray(directive.column)) {\r\n                directive.column.forEach(column => {\r\n                    result[column] = directive;\r\n                });\r\n                return result;\r\n            }\r\n            if (!ObjectUtils.isStringWithValue(directive.column)) return result;\r\n            result[directive.column] = directive;\r\n            return result;\r\n        }, {} as ITableTemplates);\r\n    });\r\n\r\n    readonly onClick = output<Record<string, any>>();\r\n\r\n    protected static compare(orderBy: string, a: PaginationItemContext, b: PaginationItemContext): number {\r\n        a = a.item ? a.item[orderBy] : null;\r\n        b = b.item ? b.item[orderBy] : null;\r\n        return ObjectUtils.compare(a, b);\r\n    }\r\n\r\n    constructor(protected element: ElementRef<HTMLElement>) {\r\n        this.placeholder = \"\";\r\n        this.tableId = UniqueUtils.uuid();\r\n        this.orderBy = \"\";\r\n        this.orderDescending = false;\r\n        this.filter = \"\";\r\n        this.query = {};\r\n        this.hasQuery = false;\r\n        this.testId = \"table\";\r\n        this.titlePrefix = \"label\";\r\n        this.columnDefs = {};\r\n        this.cols = [];\r\n        this.sortable = false;\r\n        this.localData = [];\r\n    }\r\n\r\n    setProperty(name: string, value: any): void {\r\n        const elem = this.element.nativeElement;\r\n        if (!elem) return;\r\n        elem.style.setProperty(`--${name}`, value);\r\n    }\r\n\r\n    ngAfterViewInit(): void {\r\n        this.rowTemplate = this.rowTemplate || this.defaultRowTemplate;\r\n    }\r\n\r\n    ngOnDestroy(): void {\r\n        this.subscription?.unsubscribe();\r\n    }\r\n\r\n    ngOnChanges(changes: SimpleChanges): void {\r\n        const orderBy = this.orderBy;\r\n        if (changes.columns) {\r\n            const columns = changes.columns.currentValue || [];\r\n            this.columnDefs = ObjectUtils.isArray(columns) ? columns.reduce((result, column) => {\r\n                if (!ObjectUtils.isString(column) || column.length == 0)\r\n                    return result;\r\n                result[column] = {title: `${this.titlePrefix}.${column}`, sort: column};\r\n                return result;\r\n            }, {}) : Object.keys(columns).reduce((result, key) => {\r\n                const value = columns[key];\r\n                result[key] = !value || ObjectUtils.isString(value)\r\n                    ? {title: `${this.titlePrefix}.${key}`, sort: value}\r\n                    : value;\r\n                return result;\r\n            }, {} as ITableColumns);\r\n            this.cols = Object.keys(this.columnDefs);\r\n            this.cols.forEach(col => {\r\n                const column = this.columnDefs[col];\r\n                column.filterType = column.filterType || \"text\";\r\n            });\r\n            const sortable = this.cols.filter(c => this.columnDefs[c].sort);\r\n            const query = this.query || {};\r\n            this.sortable = sortable.length > 0;\r\n            this.orderBy = sortable.includes(this.orderBy) ? this.orderBy : sortable[0] || null;\r\n            this.query = this.cols.reduce((res, col) => {\r\n                const value = query[col];\r\n                if (!value) return res;\r\n                res[col] = value;\r\n                return res;\r\n            }, {});\r\n            this.setProperty(\"cell-width\", MathUtils.round(100 / this.cols.length, 4) + \"%\");\r\n        }\r\n        this.hasQuery = this.cols.some(col => this.columnDefs[col].filter);\r\n        if (changes.orderBy && this.columnDefs && this.cols) {\r\n            const sortable = this.cols.filter(c => this.columnDefs[c].sort);\r\n            this.sortable = sortable.length > 0;\r\n            this.orderBy = sortable.includes(this.orderBy) ? this.orderBy : sortable[0] || null;\r\n        }\r\n        if (!changes.data && !changes.parallelData && !changes.dataLoader && !changes.itemsPerPage && !changes.orderDescending && orderBy === this.orderBy) return;\r\n        const source = this.data instanceof Observable ? this.data : of(this.data || []);\r\n        this.subscription?.unsubscribe();\r\n        this.subscription = source.subscribe(data => {\r\n            this.localData = data;\r\n            this.refresh();\r\n        });\r\n    }\r\n\r\n    onDragStart(ev: DragEvent, elem: HTMLElement, item: any) {\r\n        if (!elem || !item || !ObjectUtils.isFunction(this.dragStartFn) || !this.dragStartFn({ev, elem, item})) {\r\n            ev.preventDefault();\r\n            ev.stopPropagation();\r\n            return;\r\n        }\r\n        ev.dataTransfer.setData(\"itemData\", JSON.stringify(item));\r\n        ev.dataTransfer.setData(item.type, \"type\");\r\n        ev.dataTransfer.setData(item.id, \"id\");\r\n    }\r\n\r\n    onDragEnter(ev: DragEvent, elem: HTMLElement, item: Record<string, any>) {\r\n        ev.preventDefault();\r\n        if (!elem || !item || !ObjectUtils.isFunction(this.dragEnterFn) || !this.dragEnterFn({ev, elem, item})) {\r\n            ev.dataTransfer.effectAllowed = \"none\";\r\n            ev.dataTransfer.dropEffect = \"none\";\r\n            return;\r\n        }\r\n        ev.dataTransfer.effectAllowed = \"move\";\r\n        ev.dataTransfer.dropEffect = \"move\";\r\n        elem.classList.add(\"drop-allowed\");\r\n    }\r\n\r\n    onDragLeave(ev: DragEvent, elem: HTMLElement) {\r\n        ev.dataTransfer.effectAllowed = \"none\";\r\n        ev.dataTransfer.dropEffect = \"none\";\r\n        elem.classList.remove(\"drop-allowed\");\r\n    }\r\n\r\n    onDrop(ev: DragEvent, elem: HTMLElement, item: Record<string, any>) {\r\n        ev.preventDefault();\r\n        ev.stopPropagation();\r\n        if (!elem || !item || !ObjectUtils.isFunction(this.dropFn)) {\r\n            return;\r\n        }\r\n        const source = JSON.parse(ev.dataTransfer.getData(\"itemData\"));\r\n        elem.classList.remove(\"drop-allowed\");\r\n        checkTransitions(elem, () => {\r\n            checkTransitions(elem, () => {\r\n                this.dropFn({ev, elem, item, source});\r\n            });\r\n            elem.classList.remove(\"dropped\");\r\n        });\r\n        elem.classList.add(\"dropped\");\r\n    }\r\n\r\n    refresh(time?: number): void {\r\n        if (!this.pagination) return;\r\n        this.pagination.refresh(time);\r\n    }\r\n\r\n    setFilter(filter: string) {\r\n        this.filter = filter;\r\n        this.refresh(this.filterTime ?? 300);\r\n    }\r\n\r\n    setSorting(column: string, toggle?: DropdownDirective) {\r\n        if (toggle) {\r\n            return;\r\n        }\r\n        this.orderDescending = column == this.orderBy && !this.orderDescending;\r\n        this.orderBy = column;\r\n        this.refresh();\r\n    }\r\n\r\n    setQueryValue(c: string, value: string | boolean) {\r\n        const col = this.columnDefs[c];\r\n        if (!col?.filter) return;\r\n        switch (col.filterType) {\r\n            case \"enum\":\r\n                const set = new Set((this.query[c] || []) as string[]);\r\n                const val = `${value}`;\r\n                if (set.has(val)) {\r\n                    set.delete(val);\r\n                    if (set.size === 0) {\r\n                        delete this.query[c];\r\n                        break;\r\n                    }\r\n                } else {\r\n                    set.add(val);\r\n                }\r\n                this.query[c] = Array.from(set);\r\n                break;\r\n            case \"checkbox\":\r\n                if (this.query[c]) {\r\n                    delete this.query[c];\r\n                    break;\r\n                }\r\n                this.query[c] = true;\r\n                break;\r\n            default:\r\n                if (!value) {\r\n                    delete this.query[c];\r\n                    break;\r\n                }\r\n                this.query[c] = value;\r\n                break;\r\n        }\r\n        this.refresh(this.filterTime ?? 300);\r\n    }\r\n\r\n    setItemsPerPage(count: number) {\r\n        this.itemsPerPage = count;\r\n        this.refresh();\r\n    }\r\n\r\n    loadData = async (page: number, itemsPerPage: number): Promise<IPaginationData> => {\r\n        const orderBy = this.columnDefs[this.orderBy]?.sort;\r\n        const dataLoader = this.dataLoader || this.loadLocalData;\r\n        return dataLoader.call(this, page, itemsPerPage, orderBy, this.orderDescending, this.filter, this.query);\r\n    };\r\n\r\n    protected async loadLocalData(page: number, rowsPerPage: number, orderBy: string, orderDescending: boolean, filter: string, query: ITableDataQuery): Promise<IPaginationData> {\r\n        if (!this.localData) {\r\n            return {\r\n                total: 0,\r\n                items: []\r\n            };\r\n        }\r\n        const compare: (a: any, b: any) => number = orderDescending\r\n            ? (a, b) => DynamicTableComponent.compare(orderBy, b, a)\r\n            : (a, b) => DynamicTableComponent.compare(orderBy, a, b);\r\n        const from = (page - 1) * rowsPerPage;\r\n        const dataLength = this.localData.length;\r\n        const length = Math.min(rowsPerPage, dataLength - from);\r\n        const parallelData = this.parallelData || [];\r\n        const filterRx = ObjectUtils.isStringWithValue(filter) ? new RegExp(filter, \"gi\") : null;\r\n        let filterFn = !filterRx ? () => true : (ctx: PaginationItemContext) => {\r\n            return this.cols.some(col => {\r\n                const value = ctx.item[col];\r\n                return `${value}`.match(filterRx);\r\n            });\r\n        };\r\n        filterFn = Object.entries(query).reduce((fn, [key, filterValue]) => {\r\n            if (!filterValue) return fn;\r\n            const column = this.columnDefs[key];\r\n            if (!column) return fn;\r\n            switch (column.filterType) {\r\n                case \"enum\":\r\n                    const filterArr = filterValue as string[];\r\n                    return filterArr.length == 0 ? fn : (ctx) => {\r\n                        const value = ctx.item[key];\r\n                        return filterArr.includes(value) && fn(ctx);\r\n                    }\r\n                case \"checkbox\":\r\n                   return (ctx) => {\r\n                       const value = ctx.item[key];\r\n                       return !!value && fn(ctx);\r\n                   };\r\n            }\r\n            const filterRx = new RegExp(`${filterValue}`, \"gi\");\r\n            return (ctx) => {\r\n                const value = ctx.item[key];\r\n                return `${value}`.match(filterRx) && fn(ctx);\r\n            };\r\n        }, filterFn);\r\n        const data = this.localData.map((item, ix) => {\r\n            return new PaginationItemContext(item, parallelData[ix] || {}, dataLength, ix, ix);\r\n        }).filter(filterFn);\r\n        const items = orderBy ? data.sort(compare).splice(from, length) : data.splice(from, length);\r\n        items.forEach((context, ix) => {\r\n            context.index = ix;\r\n        });\r\n        return {\r\n            total: dataLength,\r\n            items: items\r\n        };\r\n    }\r\n}\r\n","@let columnTemplates = templates();\r\n@let prefix = globalTemplatePrefix();\r\n@let fallback = fallbackTemplate();\r\n\r\n<ng-template #defaultTemplate let-item=\"item\" let-column=\"column\" let-columnDef=\"columnDef\">\r\n    <dynamic-table-cell [item]=\"item\"\r\n                        [column]=\"columnDef\"\r\n                        [id]=\"column\"\r\n                        [globalTemplatePrefix]=\"prefix\"\r\n                        [fallbackTemplate]=\"fallback\"></dynamic-table-cell>\r\n</ng-template>\r\n\r\n<ng-template #columnTemplate let-context let-column=\"column\" let-template=\"template\">\r\n    @if (!template?.pure) {\r\n        <td [ngClass]=\"'column-' + column\"\r\n            [attr.data-testid]=\"testId + '-' + column + '-' + context.rowIndex\">\r\n            <ng-container [ngxTemplateOutlet]=\"!template ? defaultTemplate : template.ref\"\r\n                          [context]=\"context\"></ng-container>\r\n        </td>\r\n    } @else {\r\n        <ng-container [ngxTemplateOutlet]=\"template.ref\" [context]=\"context\"></ng-container>\r\n    }\r\n</ng-template>\r\n\r\n<ng-template #columnsTemplate let-context>\r\n    <ng-container *ngFor=\"let column of cols\"\r\n                  [ngxTemplateOutlet]=\"columnTemplate\"\r\n                  [context]=\"context\"\r\n                  [additionalContext]=\"{\r\n                    template: columnTemplates[column],\r\n                    column: column,\r\n                    columnDef: columnDefs[column]\r\n                  }\"></ng-container>\r\n</ng-template>\r\n\r\n<ng-template #defaultRowTemplate let-context>\r\n    <tr #elem\r\n        [draggable]=\"!!dragStartFn\"\r\n        [ngClass]=\"{active: selected === context.item}\"\r\n        (dragstart)=\"onDragStart($event, elem, context.item)\"\r\n        (dragenter)=\"onDragEnter($event, elem, context.item)\"\r\n        (dragleave)=\"onDragLeave($event, elem)\"\r\n        (drop)=\"onDrop($event, elem, context.item)\"\r\n        (click)=\"onClick.emit(context.item)\">\r\n        <ng-container [ngxTemplateOutlet]=\"columnsTemplate\"\r\n                      [context]=\"context\"></ng-container>\r\n    </tr>\r\n</ng-template>\r\n\r\n<ng-template #headerTemplate let-column=\"column\" let-toggle=\"toggle\">\r\n    <ng-template #defaultCol>\r\n        <span>{{ columnDefs[column].title | translate }}</span>\r\n    </ng-template>\r\n    <ng-template #emptyCol>\r\n        <span>-</span>\r\n    </ng-template>\r\n    <ng-container *ngIf=\"columnDefs[column]; else emptyCol\">\r\n        <a *ngIf=\"columnDefs[column].sort; else defaultCol\"\r\n           [ngClass]=\"['sort', orderBy !== column ? '' : (orderDescending ? 'sort-desc' : 'sort-asc')]\"\r\n           (click)=\"setSorting(column, toggle)\">\r\n            <span>{{ columnDefs[column].title | translate }}</span>\r\n        </a>\r\n    </ng-container>\r\n</ng-template>\r\n\r\n<div class=\"dynamic-table\">\r\n    <div class=\"table-features-row\">\r\n        <ng-content select=\"[table-features-before]\"></ng-content>\r\n        @if (showFilter) {\r\n            <div class=\"table-input-wrap table-search-filter\">\r\n                <label *ngIf=\"filterLabel\" [attr.for]=\"tableId\">\r\n                    {{ filterLabel | translate }}\r\n                </label>\r\n                <input type=\"text\"\r\n                       class=\"search-input\"\r\n                       [attr.id]=\"tableId\"\r\n                       [attr.data-testid]=\"testId + '-filter-input'\"\r\n                       [placeholder]=\"placeholder | translate\"\r\n                       [ngModel]=\"filter\"\r\n                       (ngModelChange)=\"setFilter($event)\"/>\r\n            </div>\r\n        }\r\n        @if (sortable) {\r\n            <dropdown-box componentClass=\"sort-dropdown\" #sortDd>\r\n                <ng-container toggle-content\r\n                              [ngTemplateOutlet]=\"headerTemplate\"\r\n                              [ngTemplateOutletContext]=\"{column: orderBy, toggle: sortDd}\"></ng-container>\r\n                <ul>\r\n                    <ng-container *ngFor=\"let column of cols\">\r\n                        <li [ngClass]=\"'sort-column sort-' + column\" *ngIf=\"columnDefs[column].sort\">\r\n                            <ng-container [ngTemplateOutlet]=\"headerTemplate\"\r\n                                          [ngTemplateOutletContext]=\"{column: column}\"></ng-container>\r\n                        </li>\r\n                    </ng-container>\r\n                </ul>\r\n            </dropdown-box>\r\n        }\r\n        @if (showItems) {\r\n            <div class=\"table-input-wrap table-items-count\">\r\n                <label>\r\n                    {{ 'label.items.before' | translate }}\r\n                </label>\r\n                <dropdown-box>\r\n                    <ng-container toggle-content>\r\n                        {{ itemsPerPage }}\r\n                    </ng-container>\r\n                    <ul>\r\n                        <ng-container *ngFor=\"let count of showItems\">\r\n                            <li [ngClass]=\"'item-count count-' + count\" (click)=\"setItemsPerPage(count)\">\r\n                                {{ count }}\r\n                            </li>\r\n                        </ng-container>\r\n                    </ul>\r\n                </dropdown-box>\r\n                <label>\r\n                    {{ 'label.items.after' | translate }}\r\n                </label>\r\n            </div>\r\n        }\r\n        <ng-content select=\"[table-features-after]\"></ng-content>\r\n    </div>\r\n    <div class=\"table-content-row\"\r\n         #pagination=\"pagination\"\r\n         [pagination]=\"loadData\"\r\n         [page]=\"page\"\r\n         [itemsPerPage]=\"itemsPerPage\"\r\n         [updateTime]=\"updateTime\">\r\n        <pagination-menu [urlParam]=\"urlParam\" [maxSize]=\"maxPages\" [directionLinks]=\"directionLinks\"\r\n                         [boundaryLinks]=\"boundaryLinks\"></pagination-menu>\r\n        <div class=\"table-responsive\">\r\n            <ng-template #defaultWrapperTemplate>\r\n                <table class=\"table table-striped\">\r\n                    <thead>\r\n                    <tr>\r\n                        <th *ngFor=\"let column of cols\" [ngClass]=\"'header-column column-' + column\">\r\n                            <ng-container [ngTemplateOutlet]=\"headerTemplate\"\r\n                                          [ngTemplateOutletContext]=\"{column: column}\"></ng-container>\r\n                        </th>\r\n                    </tr>\r\n                    <tr *ngIf=\"hasQuery\">\r\n                        <th *ngFor=\"let column of cols\" [ngClass]=\"['column-' + column, 'filter-column']\">\r\n                            <ng-container *ngIf=\"columnDefs[column].filter\" [ngSwitch]=\"columnDefs[column].filterType\">\r\n                                <ng-container *ngSwitchCase=\"'enum'\">\r\n                                    @let optionPrefix = columnDefs[column].enumPrefix || column;\r\n                                    <ng-template #optionItem let-option=\"option\">\r\n                                        <span [ngClass]=\"`table-enum enum-${optionPrefix} enum-value-${option}`\">\r\n                                            <span>{{ `${optionPrefix}.${option}` | translate }}</span>\r\n                                        </span>\r\n                                    </ng-template>\r\n                                    <dropdown-box componentClass=\"filter-box\"\r\n                                                  [ngClass]=\"'filter-box-' + column\" [closeInside]=\"false\">\r\n                                        <ng-container toggle-content>\r\n                                            <span class=\"toggle-placeholder\" *ngIf=\"!query[column]\">\r\n                                                {{ columnDefs[column].title | translate }}\r\n                                            </span>\r\n                                            <span [ngClass]=\"['option-' + option, column + '-option-' + option, option]\"\r\n                                                  *ngFor=\"let option of query[column] | values; let ix = index\">\r\n                                                <ng-container *ngIf=\"ix > 0\">&nbsp;|&nbsp;</ng-container>\r\n                                                <ng-container [ngTemplateOutlet]=\"optionItem\"\r\n                                                              [ngTemplateOutletContext]=\"{option: option}\"></ng-container>\r\n                                            </span>\r\n                                        </ng-container>\r\n                                        <ul>\r\n                                            @for (option of columnDefs[column].enum; track option) {\r\n                                                <li (click)=\"setQueryValue(column, option)\">\r\n                                                    <a class=\"toggle-link\" [ngClass]=\"'toggle-link-' + column\">\r\n                                                        <input type=\"checkbox\" [checked]=\"query[column] | includes: option\">\r\n                                                        <ng-container [ngTemplateOutlet]=\"optionItem\"\r\n                                                                      [ngTemplateOutletContext]=\"{option: option}\"></ng-container>\r\n                                                    </a>\r\n                                                </li>\r\n                                            }\r\n                                        </ul>\r\n                                    </dropdown-box>\r\n                                </ng-container>\r\n                                <ng-container *ngSwitchCase=\"'checkbox'\">\r\n                                    <input type=\"checkbox\"\r\n                                           [attr.data-testid]=\"testId + '-filter-' + column\"\r\n                                           [placeholder]=\"columnDefs[column].title | translate\"\r\n                                           [ngModel]=\"query[column]\"\r\n                                           (ngModelChange)=\"setQueryValue(column, $event)\"/>\r\n                                </ng-container>\r\n                                <ng-container *ngSwitchDefault>\r\n                                    <input class=\"search-input\"\r\n                                           type=\"text\"\r\n                                           [attr.data-testid]=\"testId + '-filter-' + column\"\r\n                                           [placeholder]=\"columnDefs[column].title | translate\"\r\n                                           [ngModel]=\"query[column]\"\r\n                                           (ngModelChange)=\"setQueryValue(column, $event)\"/>\r\n                                </ng-container>\r\n                            </ng-container>\r\n                        </th>\r\n                    </tr>\r\n                    </thead>\r\n                    <tbody>\r\n                    <ng-container *paginationItem=\"let context\"\r\n                                  [ngxTemplateOutlet]=\"rowTemplate\"\r\n                                  [context]=\"context\"\r\n                                  [additionalContext]=\"this\"></ng-container>\r\n                    </tbody>\r\n                </table>\r\n            </ng-template>\r\n\r\n            <div class=\"table-wrapper\">\r\n                <ng-content select=\"[table-top]\"></ng-content>\r\n                <ng-container [ngxTemplateOutlet]=\"wrapperTemplate || defaultWrapperTemplate\"\r\n                              [context]=\"this\"></ng-container>\r\n                <ng-content select=\"[table-bottom]\"></ng-content>\r\n            </div>\r\n        </div>\r\n        <pagination-menu [urlParam]=\"urlParam\" [maxSize]=\"maxPages\" [directionLinks]=\"directionLinks\"\r\n                         [boundaryLinks]=\"boundaryLinks\"></pagination-menu>\r\n    </div>\r\n</div>\r\n","import {Component, ViewEncapsulation} from \"@angular/core\";\r\n\r\n@Component({\r\n    standalone: false,\r\n    encapsulation: ViewEncapsulation.None,\r\n    selector: \"fake-module-component\",\r\n    template: \"\",\r\n})\r\nexport class FakeModuleComponent {\r\n\r\n}\r\n","import {Component, Input, ViewEncapsulation} from \"@angular/core\";\r\nimport {IconProps} from \"../../common-types\";\r\n\r\n@Component({\r\n    standalone: false,\r\n    encapsulation: ViewEncapsulation.None,\r\n    selector: \"icon-default\",\r\n    templateUrl: \"./icon-default.component.html\",\r\n    styleUrls: [\"./icon-default.component.scss\"]\r\n})\r\nexport class IconDefaultComponent implements IconProps {\r\n\r\n    @Input() name: string = \"trash\";\r\n\r\n}\r\n","<i class=\"fa-solid\" [ngClass]=\"'fa-' + name\"></i>\r\n","import {Component, Input, OnChanges} from \"@angular/core\";\r\nimport {\r\n    CanvasItemDirection,\r\n    Frame,\r\n    InteractiveCanvas,\r\n    InteractiveCanvasArea,\r\n    InteractiveCanvasItem,\r\n    InteractiveCanvasParams,\r\n    IPoint,\r\n    IShape\r\n} from \"../../common-types\";\r\nimport {MaybePromise} from \"../../helper-types\";\r\nimport {eqPts, Point, Rect} from \"../../utils/geometry\";\r\nimport {clamp, isEqual, overflow} from \"../../utils/math.utils\";\r\n\r\n@Component({\r\n    standalone: false,\r\n    selector: \"__interactive-item__\",\r\n    template: \"\"\r\n})\r\nexport class InteractiveItemComponent implements OnChanges, InteractiveCanvasItem {\r\n\r\n    protected pos: Point;\r\n    protected rot: number;\r\n    protected mFrame: Rect;\r\n    protected mShapes: IShape[];\r\n\r\n    get id(): string {\r\n        return null;\r\n    }\r\n\r\n    get frame(): Frame {\r\n        return this.mFrame;\r\n    }\r\n\r\n    get shapes(): ReadonlyArray<IShape> {\r\n        return this.mShapes;\r\n    }\r\n\r\n    get x(): number {\r\n        return this.pos.x;\r\n    }\r\n\r\n    @Input()\r\n    set x(value: number) {\r\n        if (isNaN(value) || value === this.pos.x) return;\r\n        this.pos = new Point(value, this.pos.y);\r\n        this.validPosition = this.pos;\r\n    }\r\n\r\n    get y(): number {\r\n        return this.pos.y;\r\n    }\r\n\r\n    @Input()\r\n    set y(value: number) {\r\n        if (isNaN(value) || value === this.pos.y) return;\r\n        this.pos = new Point(this.pos.x, value);\r\n        this.validPosition = this.pos;\r\n    }\r\n\r\n    get position() {\r\n        return this.pos;\r\n    }\r\n\r\n    @Input()\r\n    set position(value: IPoint) {\r\n        if (typeof value !== \"object\" || isNaN(value.x) || isNaN(value.y) || value === this.pos) return;\r\n        this.pos = new Point(value.x, value.y);\r\n        this.validPosition = this.pos;\r\n    }\r\n\r\n    get rotation() {\r\n        return this.rot;\r\n    }\r\n\r\n    @Input()\r\n    set rotation(value: number) {\r\n        if (isNaN(value)) return;\r\n        this.rot = value;\r\n        this.validRotation = this.rot;\r\n    }\r\n\r\n    get isValid(): boolean {\r\n        return eqPts(this.pos, this.validPos) && isEqual(this.rot, this.validRot);\r\n    }\r\n\r\n    get validPosition(): IPoint {\r\n        return this.validPos;\r\n    }\r\n\r\n    set validPosition(value: IPoint) {\r\n        if (typeof value !== \"object\" || isNaN(value.x) || isNaN(value.y) || value === this.validPos) return;\r\n        this.validPos = new Point(value.x, value.y);\r\n    }\r\n\r\n    get validRotation(): number {\r\n        return this.validRot;\r\n    }\r\n\r\n    set validRotation(value: number) {\r\n        if (isNaN(value)) return;\r\n        this.validRot = value;\r\n    }\r\n\r\n    get hovered(): boolean {\r\n        return this.canvas?.hoveredItem === this;\r\n    }\r\n\r\n    set hovered(value: boolean) {\r\n        if (!this.canvas) return;\r\n        this.canvas.hoveredItem = value ? this : null;\r\n    }\r\n\r\n    get selected(): boolean {\r\n        return this.canvas?.selectedItem === this;\r\n    }\r\n\r\n    set selected(value: boolean) {\r\n        if (!this.canvas) return;\r\n        this.canvas.selectedItem = value ? this : null;\r\n    }\r\n\r\n    @Input() direction: CanvasItemDirection;\r\n    @Input() disabled: boolean;\r\n\r\n    active: boolean;\r\n    canvas: InteractiveCanvas;\r\n    index: number;\r\n    canvasParams: InteractiveCanvasParams;\r\n    hitShapes: ReadonlyArray<IShape>;\r\n\r\n    protected validPos: Point;\r\n    protected validRot: number;\r\n\r\n    constructor() {\r\n        this.active = false;\r\n        this.index = -1;\r\n        this.canvasParams = {};\r\n        this.pos = Point.Zero;\r\n        this.validPos = Point.Zero;\r\n        this.rot = 0;\r\n        this.validRot = 0;\r\n        this.direction = \"none\";\r\n        this.mFrame = new Rect(0, 0, 3, 3);\r\n        this.mShapes = [];\r\n    }\r\n\r\n    draw(ctx: CanvasRenderingContext2D, shape: IShape): MaybePromise<void> {\r\n        const path = shape.getPath(0, 0, 1);\r\n        ctx.fill(path);\r\n        ctx.stroke(path);\r\n\r\n        if (!this.isValid) {\r\n            ctx.fillStyle = `rgba(232, 28, 28, 0.55)`;\r\n            ctx.fill(path);\r\n        }\r\n    }\r\n\r\n    ngOnChanges(): void {\r\n        if (!this.canvas) return;\r\n        this.calcShapes();\r\n    }\r\n\r\n    calcShapes(): void {\r\n        const ratio = this.canvas.ratio ?? 1;\r\n        const x = this.pos.x * ratio;\r\n        const y = this.pos.y * ratio;\r\n        this.mShapes = this.canvas.cycles.map(pan => this.calcShape(x, y + pan));\r\n    }\r\n\r\n    hit(point: Point): boolean {\r\n        for (const shape of this.shapes) {\r\n            if (shape.intersects(point)) return true;\r\n        }\r\n        return false;\r\n    }\r\n\r\n    moveBy(dx: number, dy: number): void {\r\n        const {x, y} = this.pos;\r\n        this.moveTo(x + dx, y + dy);\r\n    }\r\n\r\n    moveX(x: number): void {\r\n        this.moveTo(x, this.pos.y);\r\n    }\r\n\r\n    moveY(y: number): void {\r\n        this.moveTo(this.pos.x, y);\r\n    }\r\n\r\n    moveTo(x: number, y: number): void {\r\n        if (!this.canvas || this.direction === \"none\") return;\r\n        const target = this.restrictPosition(\r\n            this.direction === \"vertical\" ? this.pos.x : x,\r\n            this.direction === \"horizontal\" ? this.pos.y : y\r\n        );\r\n        this.pos = new Point(target);\r\n        this.makeHitShapes();\r\n        this.calcShapes();\r\n        this.validPos = this.checkIsValid() ? this.pos : this.validPos;\r\n    }\r\n\r\n    moveEnd(): void {\r\n        this.clearHitShapes();\r\n        if (this.isValid) return;\r\n        this.pos = this.validPos;\r\n        this.calcShapes();\r\n    }\r\n\r\n    rotateTo(value: number): void {\r\n        this.rot = isNaN(value) ? this.rot : value;\r\n        this.makeHitShapes();\r\n        this.calcShapes();\r\n        this.validRot = this.checkIsValid() ? this.rot : this.validRot;\r\n    }\r\n\r\n    rotateEnd(): void {\r\n        this.clearHitShapes();\r\n        if (this.isValid) return;\r\n        this.rot = this.validRot;\r\n        this.calcShapes();\r\n    }\r\n\r\n    protected makeHitShapes(): void {\r\n        if (!this.canvas || this.hitShapes) return;\r\n        this.canvas.selectedItem = this;\r\n        this.hitShapes = [\r\n            ...(this.canvas.excludedAreas || []),\r\n            ...(this.canvas.items || []).filter(item => item !== this),\r\n        ].flatMap(area => {\r\n            const distance = this.distToPixels(this.getMinDistance(area));\r\n            return area.shapes.map(shape => shape.expand(distance));\r\n        });\r\n    }\r\n\r\n    protected clearHitShapes(): void {\r\n        this.hitShapes = null;\r\n    }\r\n\r\n    protected restrictPosition(x: number, y: number): IPoint {\r\n        return {\r\n            x: clamp(x, this.canvas.xRange),\r\n            y: this.canvas.isInfinite\r\n                ? overflow(y, this.canvas.yRange)\r\n                : clamp(y, this.canvas.yRange)\r\n        }\r\n    }\r\n\r\n    protected checkIsValid(): boolean {\r\n        return this.isValidByParams() &&\r\n            this.hitShapes.every(other => this.isValidByDistance(other));\r\n    }\r\n\r\n    protected isValidByParams(): boolean {\r\n        return true;\r\n    }\r\n\r\n    protected isValidByDistance(other: IShape): boolean {\r\n        return !this.shapes.some(shape => {\r\n            return other.intersects(shape, true);\r\n        });\r\n    }\r\n\r\n    protected distToPixels(value: number): number {\r\n        return !this.canvas ? 1 : (isNaN(value) || value < 0 ? 0 : value) * (this.canvas.ratio ?? 1);\r\n    }\r\n\r\n    protected getMinDistance(other: InteractiveCanvasArea): number {\r\n        return !other ? 0 : 10;\r\n    }\r\n\r\n    protected calcShape(x: number, y: number): IShape {\r\n        return new Point(x, y);\r\n    }\r\n}\r\n","import {\r\n    Component,\r\n    contentChildren,\r\n    effect,\r\n    ElementRef,\r\n    HostListener, inject,\r\n    input,\r\n    model,\r\n    OnDestroy,\r\n    OnInit,\r\n    output,\r\n    Renderer2,\r\n    untracked,\r\n    ViewChild, ViewEncapsulation\r\n} from \"@angular/core\";\r\n\r\nimport {\r\n    CanvasPaintFunc,\r\n    CanvasResizeMode,\r\n    InteractiveCanvas, InteractiveCanvasArea,\r\n    InteractiveCanvasItem,\r\n    InteractiveCanvasParams,\r\n    InteractiveCanvasPointer,\r\n    InteractiveCanvasRenderer,\r\n    InteractivePanEvent,\r\n    IPoint,\r\n    RangeCoords\r\n} from \"../../common-types\";\r\nimport {Point, Rect, toRadians} from \"../../utils/geometry\";\r\nimport {normalizeRange, overflow} from \"../../utils/math.utils\";\r\nimport {UniversalService} from \"../../services/universal.service\";\r\n\r\nimport {InteractiveItemComponent} from \"./interactive-item.component\";\r\nimport {injectOptions} from \"../../utils/misc\";\r\n\r\nconst emptyDash: number[] = [];\r\n\r\n@Component({\r\n    standalone: false,\r\n    selector: \"interactive-canvas\",\r\n    encapsulation: ViewEncapsulation.None,\r\n    styleUrls: [\"./interactive-canvas.component.scss\"],\r\n    templateUrl: \"./interactive-canvas.component.html\"\r\n})\r\nexport class InteractiveCanvasComponent implements InteractiveCanvas, OnInit, OnDestroy {\r\n\r\n    /**\r\n     * Injectable options\r\n     * @private\r\n     */\r\n    protected readonly options = injectOptions({\r\n        infinite: false,\r\n        resizeMode: \"fit\" as CanvasResizeMode,\r\n        panOffset: 0\r\n    });\r\n\r\n    protected readonly renderer = inject(Renderer2);\r\n\r\n    protected readonly universal = inject(UniversalService);\r\n\r\n    /**\r\n     * Is the canvas infinitely scrollable?\r\n     */\r\n    readonly infinite = input(this.options.infinite);\r\n    readonly resizeMode = input<CanvasResizeMode>(this.options.resizeMode);\r\n    readonly horizontal = input(false);\r\n\r\n    /**\r\n     * Real life-size width of the canvas\r\n     */\r\n    readonly width = input(100);\r\n    /**\r\n     * Real life-size height of the canvas\r\n     */\r\n    readonly height = input(100);\r\n\r\n    /**\r\n     * Canvas params\r\n     */\r\n    readonly params = input({}, {\r\n        transform: (v: InteractiveCanvasParams) => v || {}\r\n    });\r\n\r\n    /**\r\n     * Model signal for selected index\r\n     */\r\n    readonly selectedIndex = model(0);\r\n    /**\r\n     * Relative offset of the panning. It is based on the rendered canvas height\r\n     */\r\n    readonly panOffset = input(this.options.panOffset);\r\n    readonly renderCtx = input<Record<string, any>>({});\r\n    readonly beforeItems = input<ReadonlyArray<InteractiveCanvasRenderer>>([]);\r\n    readonly afterItems = input<ReadonlyArray<InteractiveCanvasRenderer>>([]);\r\n\r\n    readonly onRotate = output<number>();\r\n    readonly onItemPan = output<InteractivePanEvent>();\r\n    readonly onItemPanned = output<InteractivePanEvent>();\r\n    readonly onPan = output<InteractivePanEvent>();\r\n    readonly onPanned = output<InteractivePanEvent>();\r\n\r\n    readonly itemList = contentChildren(InteractiveItemComponent);\r\n\r\n    get isInfinite(): boolean {\r\n        return this.infinite();\r\n    }\r\n\r\n    get realWidth(): number {\r\n        return this.width();\r\n    }\r\n\r\n    get realHeight(): number {\r\n        return this.height();\r\n    }\r\n\r\n    get items(): ReadonlyArray<InteractiveItemComponent> {\r\n        return this.itemList();\r\n    }\r\n\r\n    get canvas(): HTMLCanvasElement {\r\n        return this.canvasElem?.nativeElement;\r\n    }\r\n\r\n    get lockedItem(): InteractiveItemComponent {\r\n        return this.items[this.lockedIndex];\r\n    }\r\n\r\n    get selectedItem(): InteractiveItemComponent {\r\n        return this.items[this.selectedIndex()];\r\n    }\r\n\r\n    set selectedItem(item: InteractiveItemComponent) {\r\n        const ix = !item ? -1 : this.items.indexOf(item);\r\n        const selected = untracked(() => this.selectedIndex());\r\n        if (ix === selected) return;\r\n        this.selectedIndex.set(ix);\r\n    }\r\n\r\n    get hoveredItem(): InteractiveItemComponent {\r\n        return this.items[this.hoveredIndex];\r\n    }\r\n\r\n    set hoveredItem(item: InteractiveItemComponent) {\r\n        this.hoveredIndex = !item ? -1 : this.items.indexOf(item);\r\n    }\r\n\r\n    xRange: RangeCoords;\r\n    yRange: RangeCoords;\r\n\r\n    ratio: number;\r\n    styles: CSSStyleDeclaration;\r\n    ctx: CanvasRenderingContext2D;\r\n    canvasWidth: number;\r\n    canvasHeight: number;\r\n    fullHeight: number;\r\n    viewRatio: number;\r\n\r\n    rotation: number;\r\n    basePan: number;\r\n    cycles: number[];\r\n    excludedAreas: InteractiveCanvasArea[];\r\n\r\n    protected tempCanvas: HTMLCanvasElement;\r\n    protected shouldDraw: boolean;\r\n    protected hoveredIndex: number;\r\n\r\n    @ViewChild(\"containerElem\", {static: true})\r\n    protected containerElem: ElementRef<HTMLDivElement>;\r\n\r\n    @ViewChild(\"canvasElem\", {static: true})\r\n    protected canvasElem: ElementRef<HTMLCanvasElement>;\r\n\r\n    protected touched: boolean;\r\n    protected panStartRotation: number;\r\n    protected panStartPos: IPoint;\r\n    protected lockedIndex: number;\r\n    protected oldLength: number;\r\n\r\n    constructor() {\r\n        this.tempCanvas = this.universal.isServer ? null : document.createElement(\"canvas\");\r\n        this.shouldDraw = !this.universal.isServer;\r\n        this.hoveredIndex = null;\r\n        this.oldLength = 0;\r\n\r\n        this.xRange = [0, 1];\r\n        this.yRange = [0, 1];\r\n        this.ratio = 1;\r\n        this.styles = null;\r\n        this.ctx = null;\r\n        this.canvasWidth = 0;\r\n        this.canvasHeight = 0;\r\n        this.rotation = 0;\r\n        this.basePan = 0;\r\n        this.cycles = [0];\r\n        this.excludedAreas = [];\r\n\r\n        this.touched = false;\r\n        this.panStartRotation = 0;\r\n        this.panStartPos = Point.Zero;\r\n\r\n        effect(() => {\r\n            const items = this.itemList();\r\n            const index = untracked(() => this.selectedIndex());\r\n            const grow = items.length > this.oldLength;\r\n            items.forEach((item, ix) => {\r\n                item.canvas = this;\r\n                item.index = ix;\r\n            });\r\n            this.fixRotation();\r\n            const last = Math.max(0, items.length - 1);\r\n            const selected = Math.min(grow ? last : index, last);\r\n            this.selectedItem = items[selected];\r\n            this.oldLength = items.length;\r\n        });\r\n\r\n        effect(() => {\r\n            const realWidth = this.width();\r\n            const realHeight = this.height();\r\n            const params = this.params();\r\n            this.xRange = normalizeRange(params.xRange || [0, realWidth]);\r\n            this.yRange = normalizeRange(params.yRange || [0, realHeight]);\r\n            this.resize();\r\n        });\r\n    }\r\n\r\n    ngOnInit() {\r\n        this.redraw();\r\n    }\r\n\r\n    ngOnDestroy() {\r\n        this.shouldDraw = false;\r\n    }\r\n\r\n    async tempPaint(cb: CanvasPaintFunc): Promise<void> {\r\n        const mainCanvas = this.canvas;\r\n        const mainCtx = mainCanvas.getContext(\"2d\");\r\n        const canvas = this.tempCanvas;\r\n        const ctx = canvas.getContext(\"2d\");\r\n        const transform = mainCtx.getTransform();\r\n\r\n        canvas.width = mainCanvas.width;\r\n        canvas.height = mainCanvas.height;\r\n\r\n        ctx.globalCompositeOperation = \"source-over\";\r\n        ctx.clearRect(0, 0, canvas.width, canvas.height);\r\n        ctx.setTransform(transform);\r\n\r\n        mainCtx.resetTransform();\r\n        mainCtx.globalCompositeOperation = await cb(ctx) || \"source-over\";\r\n        mainCtx.drawImage(canvas, 0, 0);\r\n        mainCtx.globalCompositeOperation = \"source-over\";\r\n        mainCtx.setTransform(transform);\r\n\r\n        ctx.resetTransform();\r\n    }\r\n\r\n    resize(): void {\r\n        const realWidth = this.width();\r\n        const realHeight = this.height();\r\n        const horizontal = this.horizontal();\r\n        const resizeMode = this.resizeMode();\r\n        if (!this.canvasElem || !this.containerElem) return;\r\n\r\n        const canvas = this.canvasElem.nativeElement;\r\n        const container = this.containerElem.nativeElement;\r\n        // Calculate canvas size\r\n        const axisX = horizontal ? \"height\" : \"width\";\r\n        const axisY = horizontal ? \"width\" : \"height\";\r\n        const resize = resizeMode == \"fit\" ? Math.min : Math.max;\r\n        canvas.width = container.clientWidth;\r\n        canvas.height = container.clientHeight;\r\n        this.ratio = resize(canvas[axisX] / realWidth, canvas[axisY] / realHeight);\r\n        if (resizeMode == \"fit\") {\r\n            canvas[axisX] = realWidth * this.ratio;\r\n            canvas[axisY] = realHeight * this.ratio;\r\n        }\r\n        this.styles = getComputedStyle(canvas);\r\n        this.ctx = canvas.getContext(\"2d\");\r\n        this.canvasWidth = canvas[axisX];\r\n        this.canvasHeight = canvas[axisY];\r\n        this.fullHeight = this.realHeight * this.ratio;\r\n        this.viewRatio = Math.round(this.canvasHeight / this.fullHeight * 100) / 100;\r\n        this.fixRotation();\r\n    }\r\n\r\n    onTouchStart($event: TouchEvent): void {\r\n        this.hoveredIndex = this.getIndexUnderPointer($event.touches.item(0));\r\n        this.lockedIndex = this.hoveredIndex;\r\n        this.selectItem();\r\n    }\r\n\r\n    @HostListener(\"window:touchend\")\r\n    onTouchEnd(): void {\r\n        this.touched = false;\r\n    }\r\n\r\n    onMouseDown($event: MouseEvent): void {\r\n        this.lockedIndex = this.getIndexUnderPointer($event);\r\n        this.selectItem();\r\n    }\r\n\r\n    @HostListener(\"window:mouseup\")\r\n    onMouseUp(): void {\r\n        this.touched = false;\r\n    }\r\n\r\n    onMouseMove($event: MouseEvent): void {\r\n        if (this.touched) return;\r\n        this.hoveredIndex = this.getIndexUnderPointer($event);\r\n        this.updateCursor();\r\n    }\r\n\r\n    onMouseLeave(): void {\r\n        if (this.touched) return;\r\n        this.hoveredIndex = null;\r\n        this.updateCursor();\r\n    }\r\n\r\n    onPanStart(): void {\r\n        this.panStartRotation = this.rotation;\r\n        this.panStartPos = this.lockedItem?.position || Point.Zero;\r\n    }\r\n\r\n    onPanMove($event: any): void {\r\n        const item = this.lockedItem;\r\n        const horizontal = untracked(() => this.horizontal());\r\n        const deltaX = $event.deltaX / this.ratio;\r\n        const deltaY = $event.deltaY / this.ratio;\r\n        const data: InteractivePanEvent = {\r\n            canvas: this,\r\n            item,\r\n            deltaX,\r\n            deltaY\r\n        };\r\n        if (horizontal) {\r\n            data.deltaX = -deltaY;\r\n            data.deltaY = +deltaX;\r\n        }\r\n        if (item) {\r\n            item.moveTo(this.panStartPos.x + data.deltaX, this.panStartPos.y + data.deltaY);\r\n            this.onItemPan.emit(data);\r\n            return;\r\n        }\r\n        const infinite = untracked(() => this.infinite());\r\n        if (!infinite) return;\r\n        this.rotation = this.panStartRotation + (horizontal ? deltaX : deltaY) / this.realHeight * 360;\r\n        this.fixRotation();\r\n        this.onPan.emit(data);\r\n    }\r\n\r\n    onPanEnd(): void {\r\n        const item = this.lockedItem;\r\n        const data: InteractivePanEvent = {\r\n            canvas: this,\r\n            deltaX: 0,\r\n            deltaY: 0,\r\n            item\r\n        };\r\n        if (item) {\r\n            item.moveEnd();\r\n            this.onItemPanned.emit(data);\r\n        } else {\r\n            this.onPanned.emit(data);\r\n        }\r\n        this.lockedIndex = -1;\r\n    }\r\n\r\n    protected fixRotation(): void {\r\n        // No need to track params changes because this function will be called from an effect\r\n        // already depending on params anyway\r\n        const params = untracked(() => this.params());\r\n        if (this.fullHeight <= 0) return;\r\n        this.rotation = overflow(Math.round(this.rotation * 100) / 100, -180, 180);\r\n        this.basePan = this.rotation / 360 * this.fullHeight\r\n            + this.canvasHeight * untracked(() => this.panOffset());\r\n        this.cycles = this.infinite\r\n            ? [this.basePan - this.fullHeight, this.basePan, this.basePan + this.fullHeight] : [0];\r\n        this.excludedAreas = (params.excludedAreas || []).map(coords => {\r\n            const x = coords.x * this.ratio;\r\n            const y = coords.y * this.ratio;\r\n            const width = coords.width * this.ratio;\r\n            const height = coords.height * this.ratio;\r\n            return {\r\n                id: coords.id || \"\",\r\n                shapes: this.cycles.map(cycle => {\r\n                    return new Rect(x, y + cycle, width, height);\r\n                })\r\n            }\r\n        });\r\n        this.items.forEach(item => {\r\n            item.canvasParams = params;\r\n            item.calcShapes();\r\n        });\r\n        this.onRotate.emit(this.rotation);\r\n    }\r\n\r\n    protected selectItem(): void {\r\n        this.touched = true;\r\n        const item = this.items[this.lockedIndex];\r\n        if (!item) return;\r\n        this.selectedItem = item;\r\n    }\r\n\r\n    protected toCanvasPoint(pointer: InteractiveCanvasPointer): Point {\r\n        if (!pointer || !this.canvas) return null;\r\n        const canvasRect = this.canvas?.getBoundingClientRect();\r\n        return this.horizontal()\r\n            ? new Point(canvasRect.bottom - pointer.clientY, pointer.clientX - canvasRect.left)\r\n            : new Point(pointer.clientX - canvasRect.left, pointer.clientY - canvasRect.top);\r\n    }\r\n\r\n    protected getIndexUnderPointer(pointer: InteractiveCanvasPointer): number {\r\n        const point = this.toCanvasPoint(pointer);\r\n        if (!point || !this.items) return -1;\r\n        const length = this.items.length;\r\n        for (let ix = 0; ix < length; ix++) {\r\n            const item = this.items[ix];\r\n            if (item?.hit(point)) {\r\n                return item.disabled ? -1 : ix;\r\n            }\r\n        }\r\n        return -1;\r\n    }\r\n\r\n    protected updateCursor(): void {\r\n        const cursor = this.getCursor();\r\n        this.renderer.setStyle(this.containerElem.nativeElement, \"cursor\", cursor);\r\n    }\r\n\r\n    protected getCursor(): string {\r\n        const hovered = this.hoveredItem;\r\n        if (!hovered) return \"default\";\r\n        switch (hovered.direction) {\r\n            case \"free\":\r\n                return \"all-scroll\";\r\n            case \"horizontal\":\r\n                return \"\";\r\n            case \"vertical\":\r\n                return \"row-resize\";\r\n        }\r\n        return \"pointer\";\r\n    }\r\n\r\n    protected redraw() {\r\n        if (!this.shouldDraw) return;\r\n        if (!this.ctx) {\r\n            requestAnimationFrame(() => this.redraw());\r\n            return;\r\n        }\r\n        this.draw().then(() => {\r\n            requestAnimationFrame(() => this.redraw());\r\n        });\r\n    }\r\n\r\n    protected async drawItems(): Promise<void> {\r\n        const ctx = this.ctx;\r\n        const lockedItem = this.lockedItem;\r\n        for (const item of this.items) {\r\n            if (item !== lockedItem) {\r\n                await this.drawItem(ctx, item);\r\n            }\r\n        }\r\n        if (!lockedItem) return;\r\n        await this.drawItem(ctx, lockedItem);\r\n    }\r\n\r\n    protected async drawItem(ctx: CanvasRenderingContext2D, item: InteractiveCanvasItem): Promise<void> {\r\n        for (const shape of item.shapes) {\r\n            ctx.save();\r\n            ctx.translate(shape.x, shape.y);\r\n            ctx.setLineDash(emptyDash);\r\n            ctx.lineWidth = 1;\r\n            ctx.strokeStyle = \"black\";\r\n            ctx.fillStyle = \"white\";\r\n            await item.draw(ctx, shape);\r\n            ctx.restore();\r\n        }\r\n    }\r\n\r\n    protected async draw() {\r\n        const ctx = this.ctx;\r\n        const canvas = ctx.canvas;\r\n        if (canvas.width < 1 || canvas.height < 1) return;\r\n        ctx.lineWidth = 1;\r\n        ctx.strokeStyle = \"black\";\r\n        ctx.fillStyle = \"white\";\r\n        ctx.setLineDash(emptyDash);\r\n        ctx.clearRect(0, 0, canvas.width, canvas.height);\r\n        ctx.save();\r\n        if (this.horizontal()) {\r\n            ctx.rotate(-Math.PI / 2);\r\n            ctx.translate(-this.canvasWidth, 0);\r\n        }\r\n        const renderCtx = untracked(() => this.renderCtx());\r\n        const beforeItems = untracked(() => this.beforeItems());\r\n        const afterItems = untracked(() => this.afterItems());\r\n        try {\r\n            for (const renderer of beforeItems) {\r\n                await renderer(this, renderCtx);\r\n            }\r\n            await this.drawItems();\r\n            for (const renderer of afterItems) {\r\n                await renderer(this, renderCtx);\r\n            }\r\n        } catch (e) {\r\n            console.warn(`There was an error rendering the canvas: ${e}`);\r\n        }\r\n        ctx.restore();\r\n    }\r\n}\r\n","<div #containerElem\r\n     [ngClass]=\"['interactive-canvas-container', horizontal() ? 'horizontal' : 'vertical']\"\r\n     (resize)=\"resize()\"\r\n     (touchstart)=\"onTouchStart($event)\"\r\n     (mousedown)=\"onMouseDown($event)\"\r\n     (mousemove)=\"onMouseMove($event)\"\r\n     (mouseleave)=\"onMouseLeave()\"\r\n     (panend)=\"onPanEnd()\"\r\n     (panmove)=\"onPanMove($event)\"\r\n     (panstart)=\"onPanStart()\">\r\n    <canvas #canvasElem class=\"interactive-canvas-element\"></canvas>\r\n</div>\r\n","import {Component, effect, input, untracked} from \"@angular/core\";\r\n\r\nimport {IShape} from \"../../common-types\";\r\nimport {Circle, Rect} from \"../../utils/geometry\";\r\nimport {InteractiveItemComponent} from \"./interactive-item.component\";\r\n\r\n@Component({\r\n    standalone: false,\r\n    selector: \"interactive-circle\",\r\n    template: \"\",\r\n    providers: [\r\n        {provide: InteractiveItemComponent, useExisting: InteractiveCircleComponent},\r\n    ]\r\n})\r\nexport class InteractiveCircleComponent extends InteractiveItemComponent {\r\n\r\n    readonly radius = input(10);\r\n\r\n    constructor() {\r\n        super();\r\n        effect(() => {\r\n            const radius = this.radius();\r\n            this.mFrame = new Rect(0, 0, radius * 2, radius * 2);\r\n        });\r\n    }\r\n\r\n    protected calcShape(x: number, y: number): IShape {\r\n        const radius = untracked(() => this.radius());\r\n        return new Circle(x, y, radius * this.canvas.ratio);\r\n    }\r\n}\r\n","import {Component, effect, input, untracked} from \"@angular/core\";\r\nimport {IShape} from \"../../common-types\";\r\nimport {Rect} from \"../../utils/geometry\";\r\nimport {InteractiveItemComponent} from \"./interactive-item.component\";\r\n\r\n@Component({\r\n    standalone: false,\r\n    selector: \"interactive-rect\",\r\n    template: \"\",\r\n    providers: [\r\n        {provide: InteractiveItemComponent, useExisting: InteractiveRectComponent},\r\n    ]\r\n})\r\nexport class InteractiveRectComponent extends InteractiveItemComponent {\r\n\r\n    readonly width = input(10);\r\n    readonly height = input(10);\r\n\r\n    constructor() {\r\n        super();\r\n        effect(() => {\r\n            this.mFrame = new Rect(0, 0, this.width(), this.height());\r\n        });\r\n    }\r\n\r\n    protected calcShape(x: number, y: number): IShape {\r\n        const ratio = this.canvas.ratio;\r\n        const width = untracked(() => this.width());\r\n        const height = untracked(() => this.height());\r\n        return new Rect(x, y, width * ratio, height * ratio, this.rotation);\r\n    }\r\n}\r\n","import {\r\n    ChangeDetectionStrategy,\r\n    Component,\r\n    computed,\r\n    contentChildren,\r\n    effect,\r\n    input,\r\n    model,\r\n    output, signal,\r\n    TemplateRef,\r\n    ViewEncapsulation\r\n} from \"@angular/core\";\r\nimport {ButtonSize, ButtonType, TabOption, TabValue} from \"../../common-types\";\r\nimport {TabsItemDirective} from \"../../directives/tabs-item.directive\";\r\nimport {switchClass} from \"../../utils/misc\";\r\n\r\nexport interface ExtendedTabOption extends TabOption {\r\n    active?: boolean;\r\n    template?: TemplateRef<any>;\r\n    className?: string;\r\n}\r\n\r\n@Component({\r\n    standalone: false,\r\n    encapsulation: ViewEncapsulation.None,\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    selector: \"tabs\",\r\n    templateUrl: \"./tabs.component.html\",\r\n    styleUrls: [\"./tabs.component.scss\"]\r\n})\r\nexport class TabsComponent {\r\n\r\n    readonly value = model<TabValue>();\r\n    readonly options = input<TabOption[]>([]);\r\n    readonly type = input(\"primary\" as ButtonType);\r\n    readonly size = input(\"normal\" as ButtonSize);\r\n    readonly testId = input(\"tabs\");\r\n    readonly tabsClass = input(\"basic-tabs\");\r\n    readonly tabItems = contentChildren(TabsItemDirective);\r\n    readonly selectedChange = output<TabOption>();\r\n    readonly template = signal<TemplateRef<any>>(null);\r\n\r\n    readonly tabs = computed(() => {\r\n        const options = Array.from(this.options() || []) as ExtendedTabOption[];\r\n        const current = this.value();\r\n        this.tabItems().forEach(item => {\r\n            const value = item.value();\r\n            switchClass(item.element?.nativeElement, \"hidden-tab\", current !== value);\r\n\r\n            if (options.some(o => o.value === value)) return;\r\n\r\n            const label = item.label();\r\n\r\n            if (!label) return;\r\n\r\n            options.push({\r\n                value,\r\n                label,\r\n                classes: item.classes(),\r\n                tooltip: item.tooltip(),\r\n                icon: item.icon(),\r\n                disabled: item.disabled(),\r\n                template: item.template\r\n            });\r\n        });\r\n        options.forEach(o => {\r\n            const active = current === o.value;\r\n            const classes = (Array.isArray(o.classes) ? o.classes : [o.classes || \"\"]).filter(c => !!c);\r\n            classes.push(active ? \"active\" : \"inactive\");\r\n            o.active = active;\r\n            o.className = classes.join(\" \");\r\n        });\r\n        return options;\r\n    });\r\n\r\n    constructor() {\r\n        effect(() => {\r\n            const tabOptions = this.tabs();\r\n            const selectedOption = tabOptions.find(o => o.active);\r\n            if (tabOptions.length && !selectedOption) {\r\n                this.value.set(tabOptions[0].value);\r\n                return;\r\n            }\r\n            if (selectedOption) {\r\n                this.template.set(selectedOption.template);\r\n            }\r\n        });\r\n    }\r\n\r\n    select(option: TabOption): void {\r\n        this.value.set(option.value);\r\n        this.selectedChange.emit(option);\r\n    }\r\n}\r\n","@let tabList = tabs();\r\n@let tabType = type();\r\n@let tabSize = size();\r\n@let tabTemplate = template();\r\n@let testIdPrefix = testId() || \"tabs\";\r\n@if (tabList.length) {\r\n    <ul class=\"ui-tabs\" [ngClass]=\"[tabsClass(), 'type-' + tabType]\" [attr.data-testid]=\"testIdPrefix\">\r\n        @for (option of tabList; track option.value) {\r\n            <li [ngClass]=\"option.className\" [attr.data-testid]=\"testIdPrefix + '-' + option.value\">\r\n                <btn [label]=\"option.label\"\r\n                     [tooltip]=\"option.tooltip\"\r\n                     [icon]=\"option.icon\"\r\n                     [disabled]=\"option.disabled\"\r\n                     [type]=\"option.active ? tabType : 'transparent'\"\r\n                     [size]=\"tabSize\"\r\n                     (click)=\"select(option)\"></btn>\r\n            </li>\r\n        }\r\n    </ul>\r\n}\r\n@if (tabTemplate) {\r\n    <div class=\"ui-tab\">\r\n        <ng-container [ngTemplateOutlet]=\"tabTemplate\"></ng-container>\r\n    </div>\r\n}\r\n<ng-content></ng-content>\r\n","import {\r\n    AfterContentInit,\r\n    AfterViewInit,\r\n    ChangeDetectorRef,\r\n    Component,\r\n    ContentChildren,\r\n    Input,\r\n    OnChanges,\r\n    QueryList,\r\n    SimpleChanges,\r\n    TemplateRef,\r\n    ViewChild,\r\n    ViewEncapsulation\r\n} from \"@angular/core\";\r\nimport {UnorderedListStyle, UnorderedListTemplate, UnorderedListTemplates} from \"../../common-types\";\r\nimport {ObjectUtils} from \"../../utils/object.utils\";\r\nimport {UnorderedListTemplateDirective} from \"../../directives/unordered-list-template.directive\";\r\n\r\n@Component({\r\n    standalone: false,\r\n    encapsulation: ViewEncapsulation.None,\r\n    selector: \"unordered-list\",\r\n    styleUrls: [\"./unordered-list.component.scss\"],\r\n    templateUrl: \"./unordered-list.component.html\"\r\n})\r\nexport class UnorderedListComponent implements OnChanges, AfterContentInit, AfterViewInit {\r\n\r\n    @Input() data: any;\r\n    @Input() keyPrefix: string;\r\n    @Input() listStyle: UnorderedListStyle;\r\n    @Input() path: string;\r\n    @Input() level: number;\r\n    @Input() templates: UnorderedListTemplate[];\r\n\r\n    isArray: boolean;\r\n    isObject: boolean;\r\n    defaultTemplates: UnorderedListTemplates;\r\n\r\n    @ContentChildren(UnorderedListTemplateDirective)\r\n    private templateDirectives: QueryList<UnorderedListTemplateDirective>;\r\n\r\n    @ViewChild(\"defaultKeyTemplate\")\r\n    private defaultKeyTemplate: TemplateRef<any>;\r\n    @ViewChild(\"defaultValueTemplate\")\r\n    private defaultValueTemplate: TemplateRef<any>;\r\n    @ViewChild(\"defaultItemTemplate\")\r\n    private defaultItemTemplate: TemplateRef<any>;\r\n\r\n    constructor(private cdr: ChangeDetectorRef) {\r\n        this.keyPrefix = \"\";\r\n        this.listStyle = \"table\";\r\n        this.path = \"\";\r\n        this.level = 0;\r\n    }\r\n\r\n    ngOnChanges(changes: SimpleChanges): void {\r\n        this.isArray = ObjectUtils.isArray(this.data);\r\n        this.isObject = ObjectUtils.isObject(this.data);\r\n    }\r\n\r\n    ngAfterContentInit(): void {\r\n        const templates = this.templateDirectives.toArray();\r\n        this.templates = this.templates ? this.templates.concat(templates) : templates;\r\n        this.cdr.detectChanges();\r\n    }\r\n\r\n    ngAfterViewInit(): void {\r\n        this.defaultTemplates = {\r\n            key: this.defaultKeyTemplate,\r\n            value: this.defaultValueTemplate,\r\n            item: this.defaultItemTemplate\r\n        };\r\n        this.cdr.detectChanges();\r\n    }\r\n}\r\n","<ng-template let-keyPrefix=\"keyPrefix\" let-key=\"item.key\" #defaultKeyTemplate>\n    {{ (keyPrefix ? keyPrefix + key : key) | translate }}:\n</ng-template>\n<ng-template let-keyPrefix=\"keyPrefix\" let-listStyle=\"listStyle\" let-key=\"item.key\" let-value=\"item.value\" let-path=\"path\"\n             let-templates=\"templates\" let-type=\"valueType\" #defaultValueTemplate>\n    @if (type === 'enum') {\n        <span [ngClass]=\"`list-enum enum-${key} enum-value-${value}`\">\n            <span>{{ `${key}.${value}` | translate }}</span>\n        </span>\n    }\n    @else if (type === 'object' || type === 'array') {\n        <unordered-list [data]=\"value\"\n                        [keyPrefix]=\"keyPrefix\"\n                        [listStyle]=\"listStyle\"\n                        [path]=\"path\"\n                        [level]=\"level + 1\"\n                        [templates]=\"templates\"></unordered-list>\n    } @else {\n        <span [innerHTML]=\"value\"></span>\n    }\n</ng-template>\n<ng-template let-item=\"item\" let-data=\"data\" let-keyPrefix=\"keyPrefix\" let-listStyle=\"listStyle\" let-path=\"path\" let-level=\"level\" let-templates=\"templates\" #defaultItemTemplate>\n    <ng-template #itemKey>\n        <ng-container [unorderedListItem]=\"item\"\n                      type=\"key\"\n                      [data]=\"data\"\n                      [keyPrefix]=\"keyPrefix\"\n                      [listStyle]=\"listStyle\"\n                      [path]=\"path\"\n                      [level]=\"level\"\n                      [templates]=\"templates\"\n                      [defaultTemplates]=\"defaultTemplates\"></ng-container>\n    </ng-template>\n    <ng-template #itemValue>\n        <ng-container [unorderedListItem]=\"item\"\n                      type=\"value\"\n                      [data]=\"data\"\n                      [keyPrefix]=\"keyPrefix\"\n                      [listStyle]=\"listStyle\"\n                      [path]=\"path\"\n                      [level]=\"level\"\n                      [templates]=\"templates\"\n                      [defaultTemplates]=\"defaultTemplates\"></ng-container>\n    </ng-template>\n    <ng-container *ngIf=\"!isArray\">\n        <th *ngIf=\"listStyle == 'table'; else itemKey\">\n            <ng-container [ngTemplateOutlet]=\"itemKey\"></ng-container>\n        </th>\n    </ng-container>\n    <td *ngIf=\"listStyle == 'table'; else itemValue\">\n        <ng-container [ngTemplateOutlet]=\"itemValue\"></ng-container>\n    </td>\n</ng-template>\n<ng-template #value>\n    <span [innerHTML]=\"data\"></span>\n</ng-template>\n<ng-container *ngIf=\"(isObject || isArray); else value\" [ngSwitch]=\"listStyle\">\n    <ul [ngClass]=\"'level-' + level\" *ngSwitchCase=\"'list'\">\n        <li *ngFor=\"let item of data | entries\" [ngClass]=\"item.classList\">\n            <ng-container type=\"item\"\n                          [unorderedListItem]=\"item\"\n                          [data]=\"data\"\n                          [keyPrefix]=\"keyPrefix\"\n                          [listStyle]=\"listStyle\"\n                          [path]=\"path ? path + '.' + item.key : item.key\"\n                          [level]=\"level\"\n                          [templates]=\"templates\"\n                          [defaultTemplates]=\"defaultTemplates\"></ng-container>\n        </li>\n    </ul>\n    <table [ngClass]=\"'level-' + level\" *ngSwitchDefault>\n        <tr *ngFor=\"let item of data | entries\" [ngClass]=\"item.classList\">\n            <ng-container type=\"item\"\n                          [unorderedListItem]=\"item\"\n                          [data]=\"data\"\n                          [keyPrefix]=\"keyPrefix\"\n                          [listStyle]=\"listStyle\"\n                          [path]=\"path ? path + '.' + item.key : item.key\"\n                          [level]=\"level\"\n                          [templates]=\"templates\"\n                          [defaultTemplates]=\"defaultTemplates\"></ng-container>\n        </tr>\n    </table>\n</ng-container>\n","import {\r\n    ChangeDetectorRef,\r\n    Component,\r\n    ElementRef,\r\n    EventEmitter,\r\n    forwardRef,\r\n    Inject,\r\n    Input,\r\n    OnChanges,\r\n    Output,\r\n    ViewChild,\r\n    ViewEncapsulation\r\n} from \"@angular/core\";\r\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from \"@angular/forms\";\r\nimport {HttpErrorResponse, HttpEventType, HttpResponse} from \"@angular/common/http\";\r\nimport {lastValueFrom} from \"rxjs\";\r\nimport {map} from \"rxjs/operators\";\r\n\r\nimport {\r\n    IApiService,\r\n    IBaseHttpClient,\r\n    IFileUploadProcess,\r\n    IFileUploadResult,\r\n    IToasterService,\r\n    UploadType\r\n} from \"../../common-types\";\r\nimport {API_SERVICE, TOASTER_SERVICE} from \"../../tokens\";\r\n\r\nimport {ArrayUtils} from \"../../utils/array.utils\";\r\nimport {ObjectUtils} from \"../../utils/object.utils\";\r\nimport {FileUtils} from \"../../utils/file.utils\";\r\nimport {BtnComponent} from \"../btn/btn.component\";\r\nimport {getRoot} from \"../../utils/misc\";\r\n\r\n@Component({\r\n    standalone: false,\r\n    selector: \"upload\",\r\n    styleUrls: [\"./upload.component.scss\"],\r\n    templateUrl: \"./upload.component.html\",\r\n    encapsulation: ViewEncapsulation.None,\r\n    providers: [\r\n        {provide: NG_VALUE_ACCESSOR, useExisting: UploadComponent, multi: true}\r\n    ],\r\n})\r\nexport class UploadComponent implements ControlValueAccessor, OnChanges {\r\n\r\n    @Input() value: UploadType | UploadType[];\r\n    @Input() disabled: boolean;\r\n    @Input() inline: boolean;\r\n    @Input() accept: string | string[];\r\n    @Input() baseUrl: string;\r\n    @Input() message: string;\r\n    @Input() multiple: boolean;\r\n    @Input() buttonText: string;\r\n    @Input() makeUpload: (f: File) => any;\r\n    @Input() preProcess: (f: File) => boolean;\r\n    @Output() onUploaded: EventEmitter<IFileUploadResult[]>;\r\n    @Output() onRemove: EventEmitter<UploadType[]>;\r\n\r\n    @ViewChild(\"uploadBtn\")\r\n    uploadBtn: BtnComponent;\r\n\r\n    acceptAttr: string;\r\n    isImage: boolean;\r\n    dropAllowed: boolean;\r\n    processing: IFileUploadProcess[];\r\n\r\n    onChange: Function;\r\n    onTouched: Function;\r\n\r\n    protected rootElem: DocumentOrShadowRoot\r\n    protected fileImageCache: Map<Blob, string>;\r\n    protected acceptTypes: string[];\r\n\r\n    get http(): IBaseHttpClient {\r\n        return this.api.client;\r\n    }\r\n\r\n    get root(): DocumentOrShadowRoot {\r\n        this.rootElem = this.rootElem || getRoot(this.element.nativeElement);\r\n        return this.rootElem;\r\n    }\r\n\r\n    constructor(\r\n        readonly cdr: ChangeDetectorRef,\r\n        readonly element: ElementRef<HTMLElement>,\r\n        @Inject(API_SERVICE) private api: IApiService,\r\n        @Inject(TOASTER_SERVICE) private toaster: IToasterService\r\n    ) {\r\n        this.value = null;\r\n        this.disabled = false;\r\n        this.inline = false;\r\n        this.fileImageCache = new Map();\r\n        this.buttonText = \"button.select-files\";\r\n        this.onUploaded = new EventEmitter();\r\n        this.onRemove = new EventEmitter();\r\n        this.onChange = () => {\r\n        };\r\n        this.onTouched = () => {\r\n        };\r\n    }\r\n\r\n    onDragEnter(ev: DragEvent): void {\r\n        if (this.disabled) {\r\n            ev.preventDefault();\r\n            return;\r\n        }\r\n        const transfer = ev.dataTransfer;\r\n        let length = transfer.items?.length ?? 0;\r\n        for (let i = 0; i < length; i++) {\r\n            const item = transfer.items[i];\r\n            if (this.checkType(item.type)) {\r\n                ev.dataTransfer.effectAllowed = \"copy\";\r\n                ev.dataTransfer.dropEffect = \"copy\";\r\n                this.dropAllowed = true;\r\n                return;\r\n            }\r\n        }\r\n        length = transfer.files?.length ?? 0;\r\n        for (let i = 0; i < length; i++) {\r\n            const file = transfer.files[i];\r\n            if (this.checkType(file.type)) {\r\n                ev.dataTransfer.effectAllowed = \"copy\";\r\n                ev.dataTransfer.dropEffect = \"copy\";\r\n                this.dropAllowed = true;\r\n                return;\r\n            }\r\n        }\r\n        ev.preventDefault();\r\n    }\r\n\r\n    onDrop(): void {\r\n        this.dropAllowed = false;\r\n    }\r\n\r\n    ngOnChanges(): void {\r\n        this.accept = this.accept || \"\";\r\n        this.acceptTypes = ObjectUtils.isStringWithValue(this.accept)\r\n            ? this.accept.split(\",\")\r\n            : (ObjectUtils.isArray(this.accept) ? this.accept : []);\r\n        this.acceptTypes = this.acceptTypes.map(t => t.split(\"/\").pop().replace(/\\./, \"\"));\r\n        this.acceptAttr = this.acceptTypes.map(t => `.${t}`).join(\",\");\r\n        this.isImage = ArrayUtils.has(this.acceptTypes, \"png\", \"jpg\", \"jpeg\", \"webp\", \"gif\");\r\n        this.cdr.markForCheck();\r\n    }\r\n\r\n    registerOnChange(fn: any) {\r\n        this.onChange = fn;\r\n    }\r\n\r\n    registerOnTouched(fn: any) {\r\n        this.onTouched = fn;\r\n    }\r\n\r\n    writeValue(value: UploadType | UploadType[]) {\r\n        this.value = value;\r\n        this.cdr.markForCheck();\r\n        this.onChange(this.value);\r\n        this.onTouched(this.value);\r\n    }\r\n\r\n    setDisabledState(val: boolean) {\r\n        this.disabled = val === true;\r\n        this.cdr.markForCheck();\r\n    }\r\n\r\n    removeItem(index?: number): void {\r\n        if (this.multiple) {\r\n            const current = Array.from((this.value as UploadType[]) || []);\r\n            current.splice(index, 1);\r\n            this.writeValue(current);\r\n            this.onRemove.emit(current);\r\n            return;\r\n        }\r\n        this.writeValue(null);\r\n        this.onRemove.emit([]);\r\n    }\r\n\r\n    onInputClick(ev: MouseEvent): void {\r\n        if (this.uploadBtn.contains(this.root.activeElement) && !this.processing) return;\r\n        ev.preventDefault();\r\n    }\r\n\r\n    onInputChange(ev: Event): void {\r\n        const input = ev.currentTarget as HTMLInputElement;\r\n        if (this.processing) {\r\n            input.value = \"\";\r\n            return;\r\n        }\r\n        const length = input.files.length;\r\n        if (length == 0) {\r\n            this.writeValue(this.multiple ? [] : null);\r\n            return;\r\n        }\r\n        const files: File[] = [];\r\n        for (let i = 0; i < length; i++) {\r\n            const file = input.files.item(i);\r\n            if (this.checkType(file.type)) {\r\n                files.push(file);\r\n            }\r\n        }\r\n        if (files.length == 0) {\r\n            this.toaster.error(\"message.invalid-files.error\");\r\n            return;\r\n        }\r\n        this.processFiles(this.multiple ? files : files.slice(0, 1)).then(results => {\r\n            const ids = results.map(t => t.file || t._id || t.id);\r\n            this.writeValue(this.multiple\r\n                ? Array.from(this.value as UploadType[]).concat(ids)\r\n                : (ids[0] || this.value)\r\n            );\r\n            this.onUploaded.emit(results);\r\n        });\r\n        input.value = \"\";\r\n    }\r\n\r\n    getUrl(image: any): string {\r\n        if (ObjectUtils.isBlob(image)) {\r\n            if (!this.fileImageCache.has(image)) {\r\n                this.fileImageCache.set(image, URL.createObjectURL(image));\r\n            }\r\n            return this.fileImageCache.get(image);\r\n        }\r\n        const url = !image ? null : image.imageUrl || image;\r\n        if (!ObjectUtils.isString(url)) return null;\r\n        if (url.startsWith(\"data:\")) return url;\r\n        const baseUrl = this.baseUrl || this.api.url(\"assets\");\r\n        const query = this.isImage ? `?type=preview` : ``;\r\n        return `${baseUrl}/${url}${query}`;\r\n    }\r\n\r\n    async processFiles(files: File[]): Promise<IFileUploadResult[]> {\r\n        if (this.processing) return null;\r\n        const headers = this.http.makeHeaders();\r\n        const makeUpload = ObjectUtils.isFunction(this.makeUpload) ? this.makeUpload : f => {\r\n            const form = new FormData();\r\n            form.append(\"file\", f);\r\n            return form;\r\n        };\r\n        const preProcess = ObjectUtils.isFunction(this.preProcess) ? this.preProcess : () => {\r\n            return false;\r\n        };\r\n        this.processing = files.filter(f => !preProcess(f)).map(file => {\r\n            const process: IFileUploadProcess = {\r\n                file,\r\n                progress: 0\r\n            };\r\n            process.promise = FileUtils.getFilePreview(file).then(preview => {\r\n                process.preview = preview;\r\n                this.fileImageCache.set(file, preview);\r\n                this.cdr.detectChanges();\r\n            });\r\n            return process;\r\n        });\r\n        const baseUrl = this.baseUrl || this.api.url(\"assets\");\r\n        const requests = this.processing.map(async (p): Promise<IFileUploadResult> => {\r\n            await p.promise;\r\n            if (this.inline) {\r\n                return {\r\n                    filename: p.file?.name,\r\n                    file: p.file,\r\n                };\r\n            }\r\n            const request = this.http.post(baseUrl, makeUpload(p.file), {\r\n                headers, observe: \"events\", reportProgress: true\r\n            }).pipe(map(value => {\r\n                if (value.type === HttpEventType.UploadProgress) {\r\n                    p.progress = Math.round(value.loaded / value.total * 100);\r\n                    this.cdr.detectChanges();\r\n                }\r\n                return value;\r\n            }));\r\n            return lastValueFrom(request)\r\n                .then((res: HttpResponse<any>) => {\r\n                    const body = res.body;\r\n                    if (!ObjectUtils.isObject(body)) {\r\n                        return {id: body};\r\n                    }\r\n                    return body;\r\n                }, (e: HttpErrorResponse) => {\r\n                    this.toaster.error(e.error?.message || e.message || `Can\"t upload file: ${p.file.name}`);\r\n                    return null;\r\n                });\r\n        });\r\n        const results = await Promise.all(requests);\r\n        this.processing = null;\r\n        this.cdr.detectChanges();\r\n        return results.filter(r => r !== null);\r\n    }\r\n\r\n    protected checkType(type: string): boolean {\r\n        if (this.acceptTypes.length == 0) return true;\r\n        type = type.split(\"/\").pop().replace(/\\./g, \"\");\r\n        return this.acceptTypes.includes(type);\r\n    }\r\n}\r\n","<ng-template #itemBgTemplate let-bg=\"bg\">\r\n    @if (bg) {\r\n        <div class=\"upload-item-bg\" [ngStyle]=\"{backgroundImage: `url('${bg}')`}\">\r\n            <div>\r\n                <img alt=\"item image\" [src]=\"bg | safe: 'url'\" />\r\n            </div>\r\n        </div>\r\n    }\r\n</ng-template>\r\n<ng-template #itemTemplate let-item=\"item\" let-index=\"index\">\r\n    <div class=\"upload-item\">\r\n        <ng-container [ngTemplateOutlet]=\"itemBgTemplate\"\r\n                      [ngTemplateOutletContext]=\"{bg: isImage || (item | isType: 'file') ? getUrl(item) : null}\">\r\n        </ng-container>\r\n        @if (!disabled) {\r\n            <close-btn class=\"remove-item-btn\" (click)=\"removeItem(index)\"></close-btn>\r\n        }\r\n<!--        <btn size=\"small\" class=\"download-item-btn\" icon=\"download\"></btn>-->\r\n    </div>\r\n</ng-template>\r\n\r\n<div class=\"file-upload\" [ngClass]=\"{disabled: disabled}\">\r\n    <div class=\"upload-input\" [ngClass]=\"{'drop-allowed': dropAllowed}\">\r\n        <input type=\"file\"\r\n               #input\r\n               [disabled]=\"disabled\"\r\n               [multiple]=\"multiple\"\r\n               [accept]=\"acceptAttr\"\r\n               (dragenter)=\"onDragEnter($event)\"\r\n               (dragleave)=\"onDrop()\"\r\n               (drop)=\"onDrop()\"\r\n               (click)=\"onInputClick($event)\"\r\n               (blur)=\"onTouched($event)\"\r\n               (change)=\"onInputChange($event)\"/>\r\n        @if (message) {\r\n            <div class=\"upload-message\"\r\n                 [ngClass]=\"{'has-value': $any(value)?.length}\"\r\n                 [innerHTML]=\"message | translate | safe:'html'\">\r\n            </div>\r\n        }\r\n        <div class=\"upload-container\">\r\n\r\n            <ng-container [ngTemplateOutlet]=\"itemTemplate\"\r\n                          [ngTemplateOutletContext]=\"{item: value, index: 0}\"\r\n                          *ngIf=\"!multiple && value\">\r\n            </ng-container>\r\n            <ng-container *ngIf=\"multiple\">\r\n                <ng-container [ngTemplateOutlet]=\"itemTemplate\"\r\n                              [ngTemplateOutletContext]=\"{item: item, index: ix}\"\r\n                              *ngFor=\"let item of $any(value); let ix = index\">\r\n                </ng-container>\r\n            </ng-container>\r\n\r\n            <div class=\"upload-item\" *ngFor=\"let proc of processing\">\r\n                <ng-container [ngTemplateOutlet]=\"itemBgTemplate\"\r\n                              [ngTemplateOutletContext]=\"{bg: proc.preview}\">\r\n                </ng-container>\r\n                <div class=\"upload-progress\">\r\n                    <div class=\"upload-progress-num\">{{ proc.progress }}%</div>\r\n                    <div class=\"upload-progress-bar\" [ngStyle]=\"{width: proc.progress + '%'}\">\r\n\r\n                    </div>\r\n                </div>\r\n            </div>\r\n\r\n        </div>\r\n        @if (!disabled) {\r\n            <btn class=\"upload-btn\" #uploadBtn [label]=\"buttonText\" (click)=\"input.click()\"></btn>\r\n        }\r\n    </div>\r\n</div>\r\n","import {\r\n    AfterViewInit,\r\n    ChangeDetectorRef,\r\n    Component,\r\n    ElementRef,\r\n    EventEmitter,\r\n    Input, OnChanges,\r\n    Output,\r\n    ViewChild,\r\n    ViewEncapsulation\r\n} from \"@angular/core\";\r\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from \"@angular/forms\";\r\nimport {getRoot} from \"../../utils/misc\";\r\nimport {LoaderUtils} from \"../../utils/loader.utils\";\r\n\r\ninterface Pell {\r\n    content: HTMLElement;\r\n}\r\n\r\ndeclare const pell: {init: (config: Record<string, unknown>) => Pell};\r\n\r\n@Component({\r\n    standalone: false,\r\n    selector: \"wysiwyg\",\r\n    styleUrls: [\"./wysiwyg.component.scss\"],\r\n    templateUrl: \"./wysiwyg.component.html\",\r\n    encapsulation: ViewEncapsulation.None,\r\n    providers: [\r\n        {provide: NG_VALUE_ACCESSOR, useExisting: WysiwygComponent, multi: true}\r\n    ],\r\n})\r\nexport class WysiwygComponent implements ControlValueAccessor, OnChanges, AfterViewInit {\r\n\r\n    @Input() value: string;\r\n    @Input() disabled: boolean;\r\n    @Output() valueChange: EventEmitter<string>;\r\n\r\n    onChange: Function;\r\n    onTouched: Function;\r\n\r\n    protected rootElem: DocumentOrShadowRoot;\r\n    protected editor: Pell;\r\n\r\n    @ViewChild(\"editor\")\r\n    protected editorElem: ElementRef<HTMLDivElement>;\r\n\r\n    get root(): DocumentOrShadowRoot {\r\n        this.rootElem = this.rootElem || getRoot(this.element.nativeElement);\r\n        return this.rootElem;\r\n    }\r\n\r\n    get rootNode(): Node {\r\n        return this.root as any;\r\n    }\r\n\r\n    constructor(\r\n        readonly cdr: ChangeDetectorRef,\r\n        readonly element: ElementRef<HTMLElement>\r\n    ) {\r\n        this.value = \"\";\r\n        this.onChange = () => {\r\n        };\r\n        this.onTouched = () => {\r\n        };\r\n    }\r\n\r\n    ngAfterViewInit(): void {\r\n        Promise.all([\r\n            LoaderUtils.loadScript(\"https://unpkg.com/pell\"),\r\n            LoaderUtils.loadStyle(\"https://unpkg.com/pell/dist/pell.min.css\", this.rootNode)\r\n        ]).then(() => {\r\n            // Initialize pell on an HTMLElement\r\n            this.editor = pell.init({\r\n                // <HTMLElement>, required\r\n                element: this.editorElem.nativeElement,\r\n\r\n                // <Function>, required\r\n                // Use the output html, triggered by element's `oninput` event\r\n                onChange: (html: string) => {\r\n                    this.value = html;\r\n                    this.onChange(this.value);\r\n                    this.onTouched(this.value);\r\n                },\r\n\r\n                defaultParagraphSeparator: \"p\",\r\n                actions: [\r\n                    \"bold\",\r\n                    \"italic\",\r\n                    \"underline\"\r\n                ],\r\n            });\r\n            this.editor.content.innerHTML = this.value || \"\";\r\n        });\r\n    }\r\n\r\n    ngOnChanges(): void {\r\n        if (!this.editor) return;\r\n        this.editor.content.innerHTML = this.value || \"\";\r\n    }\r\n\r\n    registerOnChange(fn: any) {\r\n        this.onChange = fn;\r\n    }\r\n\r\n    registerOnTouched(fn: any) {\r\n        this.onTouched = fn;\r\n    }\r\n\r\n    writeValue(value: string) {\r\n        this.value = value;\r\n        this.cdr.markForCheck();\r\n        this.ngOnChanges();\r\n    }\r\n}\r\n","<div class=\"wysiwyg form-control\" [ngClass]=\"{disabled: disabled}\">\r\n    <div #editor></div>\r\n</div>\r\n","import {ErrorHandler} from \"@angular/core\";\r\nimport {EVENT_MANAGER_PLUGINS} from \"@angular/platform-browser\";\r\nimport {UrlSerializer} from \"@angular/router\";\r\nimport {DeviceDetectorService} from \"ngx-device-detector\";\r\n\r\nimport {AuthGuard} from \"./utils/auth.guard\";\r\nimport {AclService} from \"./services/acl.service\";\r\nimport {ApiService} from \"./services/api.service\";\r\nimport {StaticAuthService} from \"./services/auth.service\";\r\nimport {BaseHttpClient} from \"./services/base-http.client\";\r\nimport {BaseHttpService} from \"./services/base-http.service\";\r\nimport {ConfigService} from \"./services/config.service\";\r\nimport {BaseDialogService} from \"./services/base-dialog.service\";\r\nimport {ErrorHandlerService} from \"./services/error-handler.service\";\r\nimport {EventsService} from \"./services/events.service\";\r\nimport {FormatterService} from \"./services/formatter.service\";\r\nimport {GlobalTemplateService} from \"./services/global-template.service\";\r\nimport {IconService} from \"./services/icon.service\";\r\nimport {LanguageService} from \"./services/language.service\";\r\nimport {LocalHttpService} from \"./services/local-http.service\";\r\nimport {PromiseService} from \"./services/promise.service\";\r\nimport {SocketService} from \"./services/socket.service\";\r\nimport {OpenApiService} from \"./services/open-api.service\";\r\nimport {StateService} from \"./services/state.service\";\r\nimport {StaticLanguageService} from \"./services/static-language.service\";\r\nimport {StorageService} from \"./services/storage.service\";\r\nimport {BaseToasterService} from \"./services/base-toaster.service\";\r\nimport {CacheService} from \"./services/cache.service\";\r\nimport {ComponentLoaderService} from \"./services/component-loader.service\";\r\nimport {TranslatedUrlSerializer} from \"./services/translated-url.serializer\";\r\nimport {UniversalService} from \"./services/universal.service\";\r\nimport {DragDropEventPlugin} from \"./plugins/drag-drop-event.plugin\";\r\nimport {ResizeEventPlugin} from \"./plugins/resize-event.plugin\";\r\nimport {ScrollEventPlugin} from \"./plugins/scroll-event.plugin\";\r\nimport {AsyncMethodBase} from \"./directives/async-method.base\";\r\nimport {AsyncMethodDirective} from \"./directives/async-method.directive\";\r\nimport {AsyncMethodTargetDirective} from \"./directives/async-method-target.directive\";\r\nimport {BackgroundDirective} from \"./directives/background.directive\";\r\nimport {ComponentLoaderDirective} from \"./directives/component-loader.directive\";\r\nimport {DynamicTableTemplateDirective} from \"./directives/dynamic-table-template.directive\";\r\nimport {GlobalTemplateDirective} from \"./directives/global-template.directive\";\r\nimport {IconDirective} from \"./directives/icon.directive\";\r\nimport {NgxTemplateOutletDirective} from \"./directives/ngx-template-outlet.directive\";\r\nimport {PaginationDirective} from \"./directives/pagination.directive\";\r\nimport {PaginationItemDirective} from \"./directives/pagination-item.directive\";\r\nimport {ResourceIfDirective} from \"./directives/resource-if.directive\";\r\nimport {StickyDirective} from \"./directives/sticky.directive\";\r\nimport {StickyClassDirective} from \"./directives/sticky-class.directive\";\r\nimport {DropdownDirective} from \"./directives/dropdown.directive\";\r\nimport {DropdownContentDirective} from \"./directives/dropdown-content.directive\";\r\nimport {DropdownToggleDirective} from \"./directives/dropdown-toggle.directive\";\r\nimport {TabsItemDirective} from \"./directives/tabs-item.directive\";\r\nimport {TabsTemplateDirective} from \"./directives/tabs-template.directive\";\r\nimport {UnorderedListItemDirective} from \"./directives/unordered-list-item.directive\";\r\nimport {UnorderedListTemplateDirective} from \"./directives/unordered-list-template.directive\";\r\n\r\nimport {ChunkPipe} from \"./pipes/chunk.pipe\";\r\nimport {EntriesPipe} from \"./pipes/entries.pipe\";\r\nimport {ExtraItemPropertiesPipe} from \"./pipes/extra-item-properties.pipe\";\r\nimport {FilterPipe} from \"./pipes/filter.pipe\";\r\nimport {FindPipe} from \"./pipes/find.pipe\";\r\nimport {FormatNumberPipe} from \"./pipes/format-number.pipe\";\r\nimport {GetOffsetPipe} from \"./pipes/get-offset.pipe\";\r\nimport {GetTypePipe} from \"./pipes/get-type.pipe\";\r\nimport {GetValuePipe} from \"./pipes/get-value.pipe\";\r\nimport {GlobalTemplatePipe} from \"./pipes/global-template.pipe\";\r\nimport {GroupByPipe} from \"./pipes/group-by.pipe\";\r\nimport {IncludesPipe} from \"./pipes/includes.pipe\";\r\nimport {IsTypePipe} from \"./pipes/is-type.pipe\";\r\nimport {JoinPipe} from \"./pipes/join.pipe\";\r\nimport {KeysPipe} from \"./pipes/keys.pipe\";\r\nimport {MapPipe} from \"./pipes/map.pipe\";\r\nimport {MaxPipe} from \"./pipes/max.pipe\";\r\nimport {MinPipe} from \"./pipes/min.pipe\";\r\nimport {PopPipe} from \"./pipes/pop.pipe\";\r\nimport {ReducePipe} from \"./pipes/reduce.pipe\";\r\nimport {RemapPipe} from \"./pipes/remap.pipe\";\r\nimport {ReplacePipe} from \"./pipes/replace.pipe\";\r\nimport {ReversePipe} from \"./pipes/reverse.pipe\";\r\nimport {RoundPipe} from \"./pipes/round.pipe\";\r\nimport {SafeHtmlPipe} from \"./pipes/safe-html.pipe\";\r\nimport {ShiftPipe} from \"./pipes/shift.pipe\";\r\nimport {SplitPipe} from \"./pipes/split.pipe\";\r\nimport {SyncAsyncPipe} from \"./pipes/sync-async.pipe\";\r\nimport {TranslatePipe} from \"./pipes/translate.pipe\";\r\nimport {ValuesPipe} from \"./pipes/values.pipe\";\r\n\r\nimport {BtnComponent} from \"./components/btn/btn.component\";\r\nimport {BtnDefaultComponent} from \"./components/btn-default/btn-default.component\";\r\nimport {ChipsComponent} from \"./components/chips/chips.component\";\r\nimport {CloseBtnComponent} from \"./components/close-btn/close-btn.component\";\r\nimport {DropListComponent} from \"./components/drop-list/drop-list.component\";\r\nimport {DropdownBoxComponent} from \"./components/dropdown-box/dropdown-box.component\";\r\nimport {DynamicTableComponent} from \"./components/dynamic-table/dynamic-table.component\";\r\nimport {DynamicTableCellComponent} from \"./components/dynamic-table-cell/dynamic-table-cell.component\";\r\nimport {FakeModuleComponent} from \"./components/fake-module/fake-module.component\";\r\nimport {IconComponent} from \"./components/icon/icon.component\";\r\nimport {IconDefaultComponent} from \"./components/icon-default/icon-default.component\";\r\nimport {InteractiveCanvasComponent} from \"./components/interactive-canvas/interactive-canvas.component\";\r\nimport {InteractiveItemComponent} from \"./components/interactive-canvas/interactive-item.component\";\r\nimport {InteractiveCircleComponent} from \"./components/interactive-canvas/interactive-circle.component\";\r\nimport {InteractiveRectComponent} from \"./components/interactive-canvas/interactive-rect.component\";\r\nimport {PaginationMenuComponent} from \"./components/pagination-menu/pagination-menu.component\";\r\nimport {TabsComponent} from \"./components/tabs/tabs.component\";\r\nimport {UnorderedListComponent} from \"./components/unordered-list/unordered-list.component\";\r\nimport {UploadComponent} from \"./components/upload/upload.component\";\r\nimport {WysiwygComponent} from \"./components/wysiwyg/wysiwyg.component\";\r\n\r\n// --- Pipes ---\r\nexport const pipes = [\r\n    ChunkPipe,\r\n    EntriesPipe,\r\n    ExtraItemPropertiesPipe,\r\n    FilterPipe,\r\n    FindPipe,\r\n    FormatNumberPipe,\r\n    GetOffsetPipe,\r\n    GetTypePipe,\r\n    GetValuePipe,\r\n    GlobalTemplatePipe,\r\n    GroupByPipe,\r\n    IncludesPipe,\r\n    IsTypePipe,\r\n    JoinPipe,\r\n    KeysPipe,\r\n    MapPipe,\r\n    MaxPipe,\r\n    MinPipe,\r\n    PopPipe,\r\n    ReducePipe,\r\n    RemapPipe,\r\n    ReplacePipe,\r\n    ReversePipe,\r\n    RoundPipe,\r\n    SafeHtmlPipe,\r\n    ShiftPipe,\r\n    SplitPipe,\r\n    SyncAsyncPipe,\r\n    TranslatePipe,\r\n    ValuesPipe\r\n];\r\n\r\n// --- Directives ---\r\nexport const directives = [\r\n    AsyncMethodBase,\r\n    AsyncMethodDirective,\r\n    AsyncMethodTargetDirective,\r\n    BackgroundDirective,\r\n    ComponentLoaderDirective,\r\n    DynamicTableTemplateDirective,\r\n    GlobalTemplateDirective,\r\n    IconDirective,\r\n    NgxTemplateOutletDirective,\r\n    PaginationDirective,\r\n    PaginationItemDirective,\r\n    ResourceIfDirective,\r\n    StickyDirective,\r\n    StickyClassDirective,\r\n    DropdownDirective,\r\n    DropdownContentDirective,\r\n    DropdownToggleDirective,\r\n    TabsItemDirective,\r\n    TabsTemplateDirective,\r\n    UnorderedListItemDirective,\r\n    UnorderedListTemplateDirective\r\n];\r\n\r\n// --- Components ---\r\nexport const components = [\r\n    BtnComponent,\r\n    BtnDefaultComponent,\r\n    ChipsComponent,\r\n    CloseBtnComponent,\r\n    DropListComponent,\r\n    DropdownBoxComponent,\r\n    DynamicTableComponent,\r\n    DynamicTableCellComponent,\r\n    FakeModuleComponent,\r\n    PaginationMenuComponent,\r\n    IconComponent,\r\n    IconDefaultComponent,\r\n    InteractiveCanvasComponent,\r\n    InteractiveItemComponent,\r\n    InteractiveCircleComponent,\r\n    InteractiveRectComponent,\r\n    TabsComponent,\r\n    UnorderedListComponent,\r\n    UploadComponent,\r\n    WysiwygComponent\r\n];\r\n\r\nexport const providers = [\r\n    ...pipes,\r\n    BaseHttpClient,\r\n    BaseHttpService,\r\n    AuthGuard,\r\n    AclService,\r\n    ApiService,\r\n    StaticAuthService,\r\n    ConfigService,\r\n    BaseDialogService,\r\n    ErrorHandlerService,\r\n    EventsService,\r\n    FormatterService,\r\n    GlobalTemplateService,\r\n    IconService,\r\n    LanguageService,\r\n    LocalHttpService,\r\n    OpenApiService,\r\n    PromiseService,\r\n    SocketService,\r\n    StateService,\r\n    StaticLanguageService,\r\n    StorageService,\r\n    BaseToasterService,\r\n    CacheService,\r\n    ComponentLoaderService,\r\n    TranslatedUrlSerializer,\r\n    UniversalService,\r\n    DeviceDetectorService,\r\n    GlobalTemplateService,\r\n    {\r\n        provide: EVENT_MANAGER_PLUGINS,\r\n        useClass: DragDropEventPlugin,\r\n        multi: true\r\n    },\r\n    {\r\n        provide: EVENT_MANAGER_PLUGINS,\r\n        useClass: ResizeEventPlugin,\r\n        multi: true\r\n    },\r\n    {\r\n        provide: EVENT_MANAGER_PLUGINS,\r\n        useClass: ScrollEventPlugin,\r\n        multi: true\r\n    },\r\n    {\r\n        provide: UrlSerializer,\r\n        useExisting: TranslatedUrlSerializer\r\n    },\r\n    {\r\n        provide: ErrorHandler,\r\n        useExisting: ErrorHandlerService\r\n    }\r\n];\r\n","import {\r\n    EnvironmentProviders,\r\n    inject,\r\n    Injector,\r\n    makeEnvironmentProviders,\r\n    ModuleWithProviders,\r\n    NgModule,\r\n    provideAppInitializer,\r\n    Provider\r\n} from \"@angular/core\";\r\nimport {APP_BASE_HREF, CommonModule} from \"@angular/common\";\r\nimport {FormsModule} from \"@angular/forms\";\r\nimport {DynamicModuleInfo, IModuleConfig, OpenApiSchemaSelector} from \"./common-types\";\r\nimport {\r\n    API_SERVICE,\r\n    APP_BASE_URL,\r\n    AUTH_SERVICE,\r\n    BUTTON_TYPE,\r\n    CONFIG_SERVICE,\r\n    DIALOG_SERVICE,\r\n    DYNAMIC_MODULE_INFO,\r\n    ICON_MAP,\r\n    ICON_SERVICE,\r\n    ICON_TYPE,\r\n    LANGUAGE_SERVICE,\r\n    PROMISE_SERVICE,\r\n    RESIZE_DELAY,\r\n    RESIZE_STRATEGY,\r\n    ROOT_ELEMENT, SCHEMA_SELECTOR,\r\n    SOCKET_IO_PATH,\r\n    STATIC_SCHEMAS,\r\n    TOASTER_SERVICE\r\n} from \"./tokens\";\r\n\r\nimport {components, directives, pipes, providers} from \"./ngx-utils.imports\";\r\nimport {ApiService} from \"./services/api.service\";\r\nimport {StaticAuthService} from \"./services/auth.service\";\r\nimport {IconService} from \"./services/icon.service\";\r\nimport {StaticLanguageService} from \"./services/static-language.service\";\r\nimport {BaseToasterService} from \"./services/base-toaster.service\";\r\nimport {PromiseService} from \"./services/promise.service\";\r\nimport {ConfigService} from \"./services/config.service\";\r\nimport {BaseDialogService} from \"./services/base-dialog.service\";\r\nimport {ROUTES} from \"@angular/router\";\r\nimport {AuthGuard} from \"./utils/auth.guard\";\r\nimport {FakeModuleComponent} from \"./components/fake-module/fake-module.component\";\r\nimport {BtnDefaultComponent} from \"./components/btn-default/btn-default.component\";\r\nimport {IconDefaultComponent} from \"./components/icon-default/icon-default.component\";\r\n\r\nexport function loadBaseUrl(): string {\r\n    if (typeof (document) === \"undefined\" || typeof (location) === \"undefined\") return \"/\";\r\n    const scripts = Array.from(document.scripts);\r\n    const currentScript = (document.currentScript as HTMLScriptElement);\r\n    let currentUrl = new URL(currentScript?.src ?? \"http://localhost:4200/\");\r\n    if (!currentScript) {\r\n        try {\r\n            // noinspection ExceptionCaughtLocallyJS\r\n            throw new Error();\r\n        } catch (e) {\r\n            const qualifiedUrl = location.protocol + \"//\" + location.host;\r\n            const stack = (e.stack || \"\") as string;\r\n            const srcUrl = (\r\n                stack.match(new RegExp(qualifiedUrl + \".*?\\\\.js\", \"g\")) ||\r\n                stack.match(/http([A-Z0-9:\\/\\-.]+)\\.js/gi) ||\r\n                [`${qualifiedUrl}/main.js`]\r\n            ).shift();\r\n            currentUrl = new URL(srcUrl ?? \"\");\r\n        }\r\n    }\r\n    const mainScript = scripts.find(s => {\r\n        if (!s.src) return false;\r\n        const sUrl = new URL(s.src);\r\n        return currentUrl.host === sUrl.host && sUrl.pathname.includes(\"main\");\r\n    });\r\n    const scriptUrl = !mainScript ? currentUrl : new URL(mainScript.src);\r\n    const path = scriptUrl.pathname?.split(\"/\") ?? [];\r\n    path.pop();\r\n    return `${scriptUrl.protocol}//${scriptUrl.host}${path.join(\"/\")}/`;\r\n}\r\n\r\nexport function loadBaseHref(baseUrl: string): string {\r\n    try {\r\n        return new URL(baseUrl).pathname;\r\n    } catch (e) {\r\n        console.log(e);\r\n        return \"/\";\r\n    }\r\n}\r\n\r\nexport function getRootElement(): HTMLElement {\r\n    return typeof document !== \"undefined\" ? document.body : null;\r\n}\r\n\r\n@NgModule({\r\n    declarations: [\r\n        ...pipes,\r\n        ...directives,\r\n        ...components\r\n    ],\r\n    imports: [\r\n        CommonModule,\r\n        FormsModule\r\n    ],\r\n    exports: [\r\n        ...pipes,\r\n        ...directives,\r\n        ...components,\r\n        FormsModule\r\n    ],\r\n    providers: pipes\r\n})\r\nexport class NgxUtilsModule {\r\n\r\n    private static getProviders(config?: IModuleConfig): (EnvironmentProviders | Provider)[] {\r\n        return [\r\n            ...providers,\r\n            {\r\n                provide: API_SERVICE,\r\n                useExisting: (!config ? null : config.apiService) || ApiService\r\n            },\r\n            {\r\n                provide: AUTH_SERVICE,\r\n                useExisting: (!config ? null : config.authService) || StaticAuthService\r\n            },\r\n            {\r\n                provide: ICON_SERVICE,\r\n                useExisting: (!config ? null : config.iconService) || IconService\r\n            },\r\n            {\r\n                provide: LANGUAGE_SERVICE,\r\n                useExisting: (!config ? null : config.languageService) || StaticLanguageService\r\n            },\r\n            {\r\n                provide: TOASTER_SERVICE,\r\n                useExisting: (!config ? null : config.toasterService) || BaseToasterService\r\n            },\r\n            {\r\n                provide: PROMISE_SERVICE,\r\n                useExisting: (!config ? null : config.promiseService) || PromiseService\r\n            },\r\n            {\r\n                provide: CONFIG_SERVICE,\r\n                useExisting: (!config ? null : config.configService) || ConfigService\r\n            },\r\n            {\r\n                provide: DIALOG_SERVICE,\r\n                useExisting: (!config ? null : config.dialogService) || BaseDialogService\r\n            },\r\n            {\r\n                provide: ICON_TYPE,\r\n                useValue: (!config ? null : config.iconType) || IconDefaultComponent,\r\n            },\r\n            {\r\n                provide: ICON_MAP,\r\n                useValue: (!config ? null : config.iconMap) || {},\r\n            },\r\n            {\r\n                provide: BUTTON_TYPE,\r\n                useValue: (!config ? null : config.buttonType) || BtnDefaultComponent\r\n            },\r\n            {\r\n                provide: APP_BASE_URL,\r\n                useFactory: (!config ? null : config.baseUrl) || loadBaseUrl,\r\n                deps: [Injector]\r\n            },\r\n            {\r\n                provide: ROOT_ELEMENT,\r\n                useFactory: getRootElement\r\n            },\r\n            {\r\n                provide: RESIZE_DELAY,\r\n                useValue: (!config ? null : config.resizeDelay) ?? 50,\r\n            },\r\n            {\r\n                provide: RESIZE_STRATEGY,\r\n                useValue: (!config ? null : config.resizeStrategy) ?? \"observer\",\r\n            },\r\n            {\r\n                provide: SOCKET_IO_PATH,\r\n                useValue: (!config ? null : config.socketPath) ?? \"socket.io\",\r\n            },\r\n            {\r\n                provide: STATIC_SCHEMAS,\r\n                useValue: (!config ? null : config.staticSchemas) ?? {},\r\n            },\r\n            {\r\n                provide: SCHEMA_SELECTOR,\r\n                useValue: (!config ? null : config.schemaSelector) ?? ((name, schemas) => {\r\n                    return schemas[name];\r\n                }) as OpenApiSchemaSelector,\r\n            },\r\n            {\r\n                provide: APP_BASE_HREF,\r\n                useFactory: loadBaseHref,\r\n                deps: [APP_BASE_URL]\r\n            },\r\n            provideAppInitializer(() => {\r\n                if (config && config.initializeApp) {\r\n                    const initializer = config.initializeApp(inject(Injector));\r\n                    return initializer();\r\n                }\r\n                const configs = inject(CONFIG_SERVICE);\r\n                return configs.load();\r\n            }),\r\n        ];\r\n    }\r\n\r\n    static forRoot(config?: IModuleConfig): ModuleWithProviders<NgxUtilsModule> {\r\n        return {\r\n            ngModule: NgxUtilsModule,\r\n            providers: NgxUtilsModule.getProviders(config)\r\n        };\r\n    }\r\n\r\n    static provideUtils(config?: IModuleConfig): EnvironmentProviders {\r\n        return makeEnvironmentProviders(NgxUtilsModule.getProviders(config));\r\n    }\r\n\r\n    static useDynamic(moduleInfo: DynamicModuleInfo): ModuleWithProviders<NgxUtilsModule> {\r\n        return {\r\n            ngModule: NgxUtilsModule,\r\n            providers: [\r\n                {\r\n                    provide: ROUTES,\r\n                    multi: true,\r\n                    useValue: [\r\n                        {\r\n                            loadChildren: moduleInfo.loadChildren,\r\n                            matcher: AuthGuard.noRouteMatch\r\n                        },\r\n                        {\r\n                            component: FakeModuleComponent,\r\n                            matcher: AuthGuard.wildRouteMatch\r\n                        }\r\n                    ]\r\n                },\r\n                {\r\n                    provide: DYNAMIC_MODULE_INFO,\r\n                    useValue: moduleInfo,\r\n                    multi: true\r\n                }\r\n            ]\r\n        };\r\n    }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.UniversalService","emptyDash","lengthSq","i1.StateService","i2.EventsService","i1","i1.EventsService","i1.LocalHttpService","emptyRemove","EventManagerPlugin","defaultFilter","i1.FormatterService","i1.GlobalTemplateService","i1.AsyncMethodBase","i2.UniversalService","i1.ComponentLoaderService","i1.PaginationDirective","i1.DropdownDirective","i2.AsyncMethodTargetDirective","i3.IconComponent","i4.TranslatePipe","i2.DropdownDirective","i3.DropdownContentDirective","i4.DropdownToggleDirective","i5.CloseBtnComponent","i6.SafeHtmlPipe","i7.TranslatePipe","i2.GetValuePipe","i3.SafeHtmlPipe","i2.NgxTemplateOutletDirective","i2.PaginationDirective","i3","i2","i3.NgxTemplateOutletDirective","i4.PaginationDirective","i5.PaginationItemDirective","i6.DropdownBoxComponent","i7.DynamicTableCellComponent","i8.PaginationMenuComponent","i9.IncludesPipe","i10.TranslatePipe","i11.ValuesPipe","i2.BtnComponent","i3.EntriesPipe","i3.CloseBtnComponent","i4.IsTypePipe","i5.SafeHtmlPipe","i6.TranslatePipe"],"mappings":"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,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AAC9E,IAAA,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AAC9E,IAAA,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AAC9E,IAAA,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AAC9E,IAAA,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AAC9E,IAAA,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AAC9E,IAAA,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AAC9E,IAAA,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AAC9E,IAAA,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AAC9E,IAAA,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AAC9E,IAAA,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;IAC9E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;CAAI;AAE9E,MAAM,SAAS,GAAG;AACd,IAAA,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAC7D,IAAA,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAC9D,IAAA,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAC9D,IAAA,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAC9D,IAAA,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAC9D,IAAA,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAC9D,IAAA,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAC9D,IAAA,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAC9D,IAAA,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAC9D,IAAA,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;AAC9D,IAAA,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EA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"}