@stemy/ngx-utils 19.8.1 → 19.8.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/stemy-ngx-utils.mjs +94 -39
- package/fesm2022/stemy-ngx-utils.mjs.map +1 -1
- package/ngx-utils/common-types.d.ts +2 -1
- package/ngx-utils/ngx-utils.imports.d.ts +2 -2
- package/ngx-utils/utils/geometry/index.d.ts +1 -1
- package/ngx-utils/utils/geometry/shapes.d.ts +11 -4
- package/package.json +1 -1
- package/public_api.d.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"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/exclusions-renderer.ts","../../src/ngx-utils/utils/canvas-renderers/ruler-canvas.renderer.ts","../../src/ngx-utils/utils/geometry/functions.ts","../../src/ngx-utils/utils/math.utils.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/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/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\";\nimport {HttpClient, HttpHeaders} from \"@angular/common/http\";\nimport {ActivatedRouteSnapshot, Data, LoadChildrenCallback, Route, Routes, UrlTree} from \"@angular/router\";\nimport {Observable} from \"rxjs\";\nimport {DurationLikeObject} from \"luxon\";\n\nimport {MaybePromise, StringKeys} from \"./helper-types\";\n\n// --- Util\nexport type DurationUnit = StringKeys<DurationLikeObject>;\n\nexport interface TypedFactoryProvider<T> {\n provide?: any;\n useFactory: (...args: any[]) => T;\n deps: any[];\n}\n\nexport interface TypedValueProvider<T> {\n provide?: any;\n useValue: T;\n}\n\nexport interface TypedExistingProvider<T> {\n provide?: any;\n useExisting: Type<T>;\n}\n\nexport interface TypedClassProvider<T> {\n provide?: any;\n useClass: Type<T>;\n}\n\nexport interface TypedTokenProvider<T> {\n provide?: any;\n useToken: InjectionToken<T>;\n}\n\nexport type TypedProvider<T> = TypedFactoryProvider<T> | TypedValueProvider<T> |\n TypedExistingProvider<T> | TypedClassProvider<T> | TypedTokenProvider<T> | Type<T>;\n\nexport type CachedFactory<T> = (injector: Injector) => ReadonlyArray<T>;\n\nexport interface ResolveFactory<T = any> {\n type?: Function;\n func: (...args: any[]) => T;\n params?: any[];\n}\n\nexport interface IResolveFactory extends Omit<ResolveFactory, \"func\"> {\n func: Function;\n}\n\nexport class CanvasColor {\n constructor(public r: number, public g: number, public b: number, public a: number = 255) {\n\n }\n}\n\n// --- Icon service ---\nexport interface IIconService {\n isDisabled: boolean;\n iconsLoaded: EventEmitter<any>;\n getIcon(icon: string, activeIcon: string, active: boolean): Promise<string>;\n getIconUrl(icon: string, modifier?: SvgSourceModifier): Promise<string>;\n getIconImage(icon: string, modifier?: SvgSourceModifier): Promise<HTMLImageElement>;\n}\n\n// --- Language service ---\nexport interface ITranslation {\n lang: string;\n translation: string;\n}\n\nexport interface ITranslations {\n [key: string]: string;\n}\n\nexport type GlobalTranslations = Record<string, ITranslations>;\n\nexport interface ILanguageSetting {\n unavailable?: string;\n [key: string]: string | boolean | number;\n}\n\nexport interface ILanguageSettings {\n languages: string[];\n devLanguages: string[];\n defaultLanguage: string;\n settings?: {[lang: string]: ILanguageSetting};\n}\n\nexport interface ILanguageService {\n currentLanguage: string;\n editLanguage: string;\n enableTranslations: boolean;\n disableTranslations: boolean;\n defaultLanguage: string;\n dictionary: ITranslations;\n readonly languages: ReadonlyArray<string>;\n readonly httpClient: HttpClient;\n replaceLanguages(languages: string[]): void;\n addLanguages(languages: string[]): void;\n getTranslationSync(key: string, params?: Object): string;\n getTranslation(key: string, params?: Object): Promise<string>;\n getTranslations(...keys: string[]): Promise<ITranslations>;\n getTranslationFromObject(translations: ITranslations, params?: any, lang?: string): string;\n getTranslationFromArray(translations: ITranslation[], params?: any, lang?: string): string;\n}\n\n// --- Auth Service ---\nexport interface IUserData {\n _id?: string;\n id?: string;\n email?: string;\n [key: string]: any;\n}\n\nexport interface IAuthService {\n isAuthenticated: boolean;\n checkAuthenticated(): Promise<boolean>;\n}\n\nexport type RouteValidator = (auth: IAuthService, route?: IRoute, next?: ActivatedRouteSnapshot) => Promise<boolean>;\n\nexport interface IRouteData extends Data {\n returnState?: string[];\n guards?: Array<ResolveFactory<RouteValidator> | RouteValidator>;\n}\n\nexport interface IRoute extends Route {\n data?: IRouteData;\n}\n\n// --- Acl Service ---\nexport interface IAclComponent {\n onUserInitialized(): void;\n onUserChanged(): void;\n}\n\nexport interface IRouteStateInfo {\n route: IRoute;\n guard: any;\n dirty: boolean;\n first: boolean;\n component?: any;\n}\n\n// --- State Service ---\nexport type NavigationUrlParam = any[] | string | UrlTree;\n\n// --- Storage Service ---\nexport enum StorageMode {\n Local,\n Session\n}\n\n// --- Toaster Service ---\nexport type ToastType = \"info\" | \"success\" | \"warning\" | \"error\";\n\nexport interface IToasterService {\n error(message: string, params?: any): void;\n info(message: string, params?: any): void;\n success(message: string, params?: any): void;\n warning(message: string, params?: any): void;\n handleAsyncMethod(method: AsyncMethod, context?: any): void\n}\n\n// --- Dialog service ---\nexport interface IDialogButtonConfig {\n icon?: string;\n text?: string;\n classes?: string;\n method?: AsyncMethod;\n testId?: string;\n}\n\nexport interface IDialogConfig {\n id?: string;\n title?: string;\n message: string;\n messageContext?: any;\n buttons?: IDialogButtonConfig[];\n onClose?: AsyncMethod;\n size?: string;\n type?: string;\n templates?: { [id: string]: TemplateRef<any> };\n}\n\nexport interface IConfirmMessageConfig {\n id?: string;\n title?: string;\n messageContext?: any;\n size?: string;\n templates?: { [id: string]: TemplateRef<any> };\n okText?: string;\n okClasses?: string;\n cancelText?: string;\n cancelClasses?: string;\n}\n\nexport interface IConfirmDialogConfig extends IConfirmMessageConfig {\n message: string;\n method?: AsyncMethod;\n cancelMethod?: AsyncMethod;\n}\n\nexport interface IDialogService<DR = any> {\n dialog(config: IDialogConfig): DR;\n confirm(config: IConfirmDialogConfig): DR;\n confirmMsg(message: string, config?: IConfirmMessageConfig): Promise<boolean>;\n}\n\n// --- Socket service ---\n\n// --- Promise Service ---\n\nexport interface IPromiseService {\n zone: NgZone;\n count: number;\n onChanged: EventEmitter<number>;\n create<T>(executor: (resolve: (value?: T | PromiseLike<T>) => void, reject: (reason?: any) => void) => void): Promise<T>;\n all(promises: Promise<any>[]): Promise<any>;\n resolve<T>(value: T | PromiseLike<T>): Promise<T>;\n reject<T>(value: T | PromiseLike<T>): Promise<T>;\n}\n\n// --- Async method ---\nexport interface IAsyncMessage {\n message: string;\n context?: any;\n}\n\nexport type AsyncMethod = (context?: any, ev?: MouseEvent) => Promise<IAsyncMessage>;\n\n// --- Icon ---\nexport interface IconMap {\n [key: string]: string;\n}\n\nexport interface IconProps {\n name: string;\n}\n\n// --- Button ---\n\nexport type ButtonType = \"primary\" | \"secondary\" | \"transparent\";\n\nexport type ButtonSize = \"normal\" | \"small\";\n\nexport interface ButtonProps {\n label: string;\n tooltip: string;\n icon: string;\n disabled: boolean;\n type: ButtonType;\n size: ButtonSize;\n}\n\n// --- Tabs ---\n\nexport type TabValue = string | number;\n\nexport interface TabOption extends Omit<Partial<ButtonProps>, \"size\" | \"state\" | \"style\"> {\n value: TabValue;\n classes?: string | string[];\n}\n\n// --- Chips ---\nexport type ChipValue = string | number;\n\nexport type ChipStatus = \"valid\" | \"invalid\";\n\nexport interface ChipOption {\n label: string;\n value?: ChipValue;\n classes?: string;\n disabled?: boolean;\n picture?: string;\n group?: ChipOption[];\n}\n\n// --- Dropdown ---\nexport type DropdownAttachTo = \"root\" | HTMLElement | ElementRef<HTMLElement> | null;\n\n// --- Unordered list ---\nexport interface UnorderedListTemplate {\n readonly type: string;\n readonly selector: string;\n readonly templateRef: TemplateRef<any>\n}\n\nexport interface UnorderedListTemplates {\n [type: string]: TemplateRef<any>;\n}\n\nexport type UnorderedListStyle = \"table\" | \"list\";\n\n// --- Upload ---\n\nexport type UploadType = string | Blob;\n\nexport interface IFileUploadResult {\n _id?: string;\n id?: string;\n contentType?: string;\n createdAt?: Date;\n filename?: string;\n file?: Blob;\n}\n\nexport interface IFileUploadProcess {\n file: File;\n progress: number;\n preview?: string;\n promise?: Promise<void>;\n}\n\n// --- Ajax request ---\nexport interface IAjaxRequestDetails {\n request: XMLHttpRequest,\n method: string;\n url: string;\n}\n\nexport type AjaxRequestCallback = (details: IAjaxRequestDetails, params: any) => void;\n\n// --- Loader utils ---\nexport type ScriptType = \"text/javascript\" | \"module\";\n\nexport interface ILoadableElement extends HTMLElement {\n readyState?: string;\n onreadystatechange?: Function;\n}\n\nexport interface ILoaderPromises<T extends ILoadableElement> {\n [src: string]: {\n elem: T;\n promise: Promise<T>;\n }\n}\n\n// --- Observable utils ---\nexport interface ISearchObservable {\n search: string;\n getSearchResults(token: string): Promise<any[]>;\n}\n\n// --- Reflect utils ---\nexport function FactoryDependencies(...dependencies: Array<InjectionToken<any> | Provider>): MethodDecorator {\n return function (target: any, method: string): void {\n Reflect.defineMetadata(\"factoryDependencies\", dependencies, target, method);\n };\n}\n\nexport function ObjectType(type: string): ClassDecorator {\n return function (target: any): void {\n Reflect.defineMetadata(\"objectType\", type, target);\n };\n}\n\n// --- Timer utils ---\nexport interface ITimer {\n id?: any;\n func?: Function;\n time?: number;\n run?: () => void;\n set?: (func: Function, time: number) => void;\n clear?: () => void;\n}\n\n// --- ExtraItemProperties ---\nexport interface IExtraProperties {\n [prop: string]: any;\n}\n\n// --- Group by ---\nexport interface IGroupMap {\n [column: string]: any;\n}\n\n// --- Translate ---\nexport type TranslationQuery = string | ITranslations | ITranslation[];\n\n// --- Pagination ---\nexport interface IPageInfo {\n text: string;\n number: number;\n active: boolean;\n}\n\nexport interface IPaginationData {\n total: number;\n items: any[];\n meta?: any;\n}\n\nexport type PaginationDataLoader = (page: number, itemsPerPage: number) => Promise<IPaginationData>;\n\nexport class PaginationItemContext {\n\n constructor(readonly item: any,\n readonly parallelItem: any,\n readonly count: number,\n public index: number,\n public dataIndex: number) {\n }\n\n get first(): boolean {\n return this.index === 0;\n }\n\n get last(): boolean {\n return this.index === this.count - 1;\n }\n\n get even(): boolean {\n return this.index % 2 === 0;\n }\n\n get odd(): boolean {\n return !this.even;\n }\n\n // Support for old dynamic table implementation\n get row(): any {\n console.log(\"DynamicTable row is deprecated use item instead\");\n return this.item;\n }\n\n // Support for old dynamic table implementation\n get parallelRow(): any {\n console.log(\"DynamicTable parallelRow is deprecated use parallelItem instead\");\n return this.parallelItem;\n }\n}\n\n// --- Geometry ---\nexport interface IPoint {\n readonly x: number;\n readonly y: number;\n}\n\nexport interface ShapeIntersection {\n hit: boolean;\n pa?: IPoint;\n pb?: IPoint;\n point?: IPoint;\n}\n\nexport interface ShapeDistance {\n distance: number;\n pa?: IPoint;\n pb?: IPoint;\n}\n\nexport interface IShape extends IPoint {\n readonly center: IPoint;\n draw(ctx: CanvasRenderingContext2D, ratio?: number): void;\n support(dir: IPoint): IPoint;\n move(pos: IPoint): IShape;\n intersection(shape: IShape): ShapeIntersection;\n intersects(shape: IShape): boolean;\n minDistance(shape: IShape): ShapeDistance;\n distance(shape: IShape): number;\n}\n\n// --- Interactive canvas ---\n\nexport type CanvasResizeMode = \"fit\" | \"fill\";\n\nexport type CanvasItemDirection = \"horizontal\" | \"vertical\" | \"free\" | \"none\";\n\nexport type CanvasPaintFunc = (ctx: CanvasRenderingContext2D) => MaybePromise<GlobalCompositeOperation | null>;\n\nexport type RangeCoords = [from: number, to: number];\n\nexport interface RectCoords {\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\n/**\n * Rectangle frame interface\n */\nexport interface Frame extends IShape {\n width: number;\n height: number;\n rotation: number;\n}\n\n/**\n * Interface for an interactive canvas params\n */\nexport interface InteractiveCanvasParams {\n xRange?: RangeCoords;\n yRange?: RangeCoords;\n excludedAreas?: ReadonlyArray<RectCoords>;\n [key: string]: any;\n}\n\n/**\n * Interface for an interactive canvas item\n */\nexport interface InteractiveCanvasItem {\n readonly position: IPoint;\n readonly frame: Frame;\n readonly shapes: ReadonlyArray<IShape>;\n readonly isValid: boolean;\n readonly validPosition: IPoint;\n readonly hovered: boolean;\n readonly selected: boolean;\n readonly active: boolean;\n readonly canvas: InteractiveCanvas;\n readonly index: number;\n readonly canvasParams: InteractiveCanvasParams;\n draw(ctx: CanvasRenderingContext2D, shape: IShape): MaybePromise<void>;\n}\n\nexport type InteractiveCanvasItems = ReadonlyArray<InteractiveCanvasItem>;\n\n/**\n * Interface for an interactive canvas component\n * Some properties are optional for compatibility with other kind of renderer functions\n */\nexport interface InteractiveCanvas {\n // --- Getters ---\n readonly isInfinite?: boolean;\n readonly realWidth?: number;\n readonly realHeight?: number;\n readonly items?: InteractiveCanvasItems;\n readonly canvas: HTMLCanvasElement;\n readonly lockedItem?: InteractiveCanvasItem;\n // --- Getters / setters ---\n selectedItem?: InteractiveCanvasItem;\n hoveredItem?: InteractiveCanvasItem;\n // --- Calculated values on changes ---\n readonly xRange?: RangeCoords;\n readonly yRange?: RangeCoords;\n // --- Calculated values on resize ---\n readonly ratio: number;\n readonly styles: CSSStyleDeclaration;\n readonly ctx: CanvasRenderingContext2D;\n readonly canvasWidth: number;\n readonly canvasHeight: number;\n readonly fullHeight: number;\n readonly viewRatio: number;\n // --- Calculated values on rotation ---\n readonly rotation: number;\n readonly basePan: number;\n readonly cycles?: ReadonlyArray<number>;\n readonly excludedAreas?: ReadonlyArray<Frame>;\n // --- Optionals, for back compatibility ---\n rendered?: boolean;\n // --- Functions ---\n tempPaint(cb: CanvasPaintFunc): Promise<void>;\n}\n\nexport type InteractiveCanvasRenderer = (renderCanvas: InteractiveCanvas, renderCtx: Record<string, any>) => MaybePromise<void>;\n\nexport interface InteractivePanEvent {\n canvas: InteractiveCanvas;\n item: InteractiveCanvasItem;\n deltaX?: number;\n deltaY?: number;\n [key: string]: any;\n}\n\nexport interface InteractiveCanvasPointer {\n clientX: number;\n clientY: number;\n}\n\n// --- Http service ---\nexport interface HttpRequestHeaders {\n [header: string]: string | string[];\n}\n\nexport interface HttpRequestQuery {\n [key: string]: any;\n}\n\n/**\n * Base http request options that get sent to backend\n */\nexport interface HttpClientRequestOptions {\n method?: string;\n body?: any;\n headers?: HttpRequestHeaders | HttpHeaders;\n originalHeaders?: HttpRequestHeaders;\n params?: HttpRequestQuery;\n observe?: \"body\" | \"response\";\n /**\n * Used for uploads\n */\n reportProgress?: boolean;\n /**\n * Specifies the type of response\n */\n responseType?: \"arraybuffer\" | \"blob\" | \"json\" | \"text\";\n withCredentials?: boolean;\n timeout?: number;\n}\n\n/**\n * Extended http request options that the consumer can use\n */\nexport interface HttpRequestOptions extends HttpClientRequestOptions {\n /**\n * Read a specific property from the body if observe equals to 'body' and responseType equals to 'json'\n */\n read?: string;\n /**\n * Specifies when the cache for the request expires as an Observable\n */\n cache?: Observable<any>;\n}\n\n/**\n * Defines the type of uploadable content\n */\nexport type UploadData = Record<string, any> | ArrayBuffer | FormData;\n\nexport interface IIssueContext {\n url: string;\n}\n\nexport interface IProgress {\n percentage?: number;\n loaded?: number;\n total?: number;\n}\n\nexport type ProgressListener = (progress: IProgress) => void;\n\nexport type CacheExpireMode = boolean | \"auth\" | Date;\n\nexport interface IHttpService {\n readonly language: ILanguageService;\n readonly requestHeaders: Readonly<HttpRequestHeaders>;\n readonly requestParams: Readonly<HttpRequestQuery>;\n setHeader(name: string, value?: string | string[]): void;\n setParam(name: string, value?: any): void;\n cached(mode: CacheExpireMode): Observable<any>;\n url(url: string): string;\n makeListParams(page: number, itemsPerPage: number, orderBy?: string, orderDescending?: boolean, filter?: string): HttpRequestQuery;\n}\n\n// --- LocalHttp service ---\n\nexport interface SvgDefinition {\n source: SVGSVGElement;\n width: number;\n height: number;\n}\n\nexport type SvgSourceModifier = (svg: SVGSVGElement, width: number, height: number) => string;\n\n// --- Api service ---\n\nexport interface IBaseHttpClient extends HttpClient {\n readonly requestHeaders: Readonly<HttpRequestHeaders>;\n readonly requestParams: Readonly<HttpRequestQuery>;\n setHeader(name: string, value?: string | string[]): void;\n getHeader(name: string): string;\n setParam(name: string, value?: any): void;\n // Just a backwards compatibility method for end users..\n setExtraRequestParam(name: string, value?: any): void;\n makeHeaders(): HttpHeaders;\n}\n\nexport interface IApiService extends IHttpService {\n client: IBaseHttpClient;\n get(url: string, options?: HttpRequestOptions): Promise<any>;\n delete(url: string, options?: HttpRequestOptions): Promise<any>;\n post(url: string, body?: any, options?: HttpRequestOptions): Promise<any>;\n put(url: string, body?: any, options?: HttpRequestOptions): Promise<any>;\n patch(url: string, body?: any, options?: HttpRequestOptions): Promise<any>;\n upload(url: string, body: any, listener?: ProgressListener, options?: HttpRequestOptions): Promise<any>;\n list(url: string, params: HttpRequestQuery, options?: HttpRequestOptions): Promise<IPaginationData>;\n}\n\n// --- OpenApi service ---\nexport interface DynamicSchemaRef {\n dynamicSchema?: string;\n dynamicSchemaUrl?: string;\n dynamicSchemaName?: string;\n}\n\nexport interface OpenApiSchemaRef {\n $ref?: string;\n}\n\nexport interface OpenApiSchemaProperty extends DynamicSchemaRef, OpenApiSchemaRef {\n id: string;\n type?: string;\n format?: string;\n column?: boolean;\n additionalProperties?: any;\n allOf?: ReadonlyArray<OpenApiSchemaRef>;\n oneOf?: ReadonlyArray<OpenApiSchemaRef>;\n items?: OpenApiSchemaProperty;\n enum?: string[];\n [key: string]: any;\n}\n\nexport interface OpenApiSchema {\n properties: {\n [name: string]: OpenApiSchemaProperty;\n };\n required: string[];\n}\n\nexport interface OpenApiSchemas {\n [name: string]: OpenApiSchema;\n}\n\nexport type OpenApiSchemaSelector = (name: string, schemas: OpenApiSchemas, injector: Injector) => OpenApiSchema;\n\n// --- Dynamic table ---\nexport type TableFilterType = \"text\" | \"enum\" | \"checkbox\";\n\nexport interface ITableOrders {\n [column: string]: string;\n}\n\nexport interface ITableColumn {\n title?: string;\n sort?: string;\n filter?: boolean;\n filterType?: TableFilterType;\n enum?: string[];\n enumPrefix?: string;\n [key: string]: any;\n}\n\nexport interface ITableColumns {\n [column: string]: ITableColumn;\n}\n\nexport type TableColumns = ITableOrders | ITableColumns | string[];\n\nexport interface ITableTemplate {\n column: string | string[];\n pure: boolean;\n ref: TemplateRef<any>;\n}\n\nexport interface ITableTemplates {\n [column: string]: ITableTemplate;\n}\n\nexport interface ITableDataQuery {\n [column: string]: string | string[] | boolean;\n}\n\nexport type TableDataItems = ReadonlyArray<any>;\n\nexport type TableDataLoader = (\n page: number, rowsPerPage: number, orderBy: string, orderDescending: boolean,\n filter: string, query: ITableDataQuery\n) => Promise<IPaginationData>;\n\nexport type DragDropEvent<K extends string = \"item\", T = any> = {\n [key in K]: T;\n} & {\n ev: DragEvent;\n elem: HTMLElement;\n source?: T;\n};\n\nexport type DragEventHandler<R = boolean, K extends string = \"item\"> = (ev: DragDropEvent<K>) => R;\n\n// Back compatibility\nexport type ITableDragEvent = DragDropEvent;\nexport type DynamicTableDragHandler<R = boolean> = DragEventHandler<R>;\n\n// --- Resource if ---\nexport class ResourceIfContext {\n resource: string;\n url: string;\n}\n\n// --- ComponentLoaderService ---\n\nexport type CssSelector = [tagName: string, attrName?: string, attrValue?: string];\n\nexport type CssSelectorList = CssSelector[];\n\nexport interface DynamicModuleInfo {\n moduleId: string;\n loadChildren: LoadChildrenCallback;\n routes?: Routes;\n initialNavigation?: boolean;\n}\n\nexport interface DynamicComponentLocation {\n moduleId: string;\n selector: string;\n}\n\nexport interface DynamicEntryComponents {\n components: Type<any>[];\n moduleId: string;\n}\n\nexport class IConfiguration {\n cdnUrl?: string;\n baseUrl?: string;\n baseDomain?: string;\n translationUrl?: string;\n translationExt?: string;\n [key: string]: any;\n}\n\nexport interface IConfigService {\n readonly http: IBaseHttpClient;\n readonly config: IConfiguration;\n readonly injector: Injector;\n readonly load: () => Promise<IConfiguration>;\n readonly rootElement: any;\n cloneRootElem(): any;\n prepareUrl(url: string, ending: string): string;\n getConfigValue(key: string): any;\n getQueryParameter(name: string, url?: string): string;\n}\n\nexport type ResizeEventStrategy = \"scroll\" | \"object\" | \"observer\";\n\n// --- Error handler service ---\nexport type ErrorHandlerCallback = (error: string) => any;\n\n// --- Global templates service\n\nexport type GlobalComponentModifier = (component: any) => any;\n\n// --- Module ---\nexport type AppInitializerFunc = () => Promise<void> | void;\n\nexport interface IModuleConfig {\n apiService?: Type<IApiService>\n authService?: Type<IAuthService>;\n iconService?: Type<IIconService>;\n languageService?: Type<ILanguageService>;\n toasterService?: Type<IToasterService>;\n promiseService?: Type<IPromiseService>;\n configService?: Type<IConfigService>;\n dialogService?: Type<IDialogService>;\n iconType?: Type<IconProps>;\n iconMap?: IconMap;\n buttonType?: Type<ButtonProps>;\n initializeApp?: (injector: Injector) => AppInitializerFunc;\n baseUrl?: (injector: Injector) => string;\n resizeDelay?: number;\n resizeStrategy?: ResizeEventStrategy;\n socketPath?: string;\n staticSchemas?: OpenApiSchemas;\n schemaSelector?: OpenApiSchemaSelector;\n}\n\n// --- Valued promise ---\nexport class ValuedPromise<T> extends Promise<T> {\n value: T;\n}\n","import {InjectionToken, Type} from \"@angular/core\";\nimport {Request} from \"express\";\nimport {\n ButtonProps,\n DynamicEntryComponents,\n DynamicModuleInfo,\n ErrorHandlerCallback,\n IApiService,\n IAuthService,\n IConfigService,\n IConfiguration,\n IconMap,\n IconProps,\n IDialogService,\n IIconService,\n ILanguageService,\n IPromiseService,\n IToasterService,\n OpenApiSchemas, OpenApiSchemaSelector,\n ResizeEventStrategy\n} from \"./common-types\";\n\nexport const ICON_TYPE = new InjectionToken<Type<IconProps>>(\"icon-component-type\");\nexport const ICON_MAP = new InjectionToken<IconMap>(\"icon-map\");\nexport const BUTTON_TYPE = new InjectionToken<Type<ButtonProps>>(\"button-component-type\");\nexport const OPTIONS_TOKEN = new InjectionToken<Record<string, any>>(\"custom-options-token\");\nexport const ICON_SERVICE: InjectionToken<IIconService> = new InjectionToken<IIconService>(\"icon-service\");\nexport const LANGUAGE_SERVICE: InjectionToken<ILanguageService> = new InjectionToken<ILanguageService>(\"language-service\");\nexport const AUTH_SERVICE: InjectionToken<IAuthService> = new InjectionToken<IAuthService>(\"auth-service\");\nexport const TOASTER_SERVICE: InjectionToken<IToasterService> = new InjectionToken<IToasterService>(\"toaster-service\");\nexport const DIALOG_SERVICE = new InjectionToken<IDialogService>(\"dialog-service\");\nexport const SOCKET_IO_PATH = new InjectionToken<string>(\"socket-io-path\");\nexport const PROMISE_SERVICE = new InjectionToken<IPromiseService>(\"promise-service\");\nexport const EXPRESS_REQUEST = new InjectionToken<Request>(\"express-request\");\nexport const API_SERVICE: InjectionToken<IApiService> = new InjectionToken<IApiService>(\"api-service\");\nexport const DYNAMIC_ENTRY_COMPONENTS = new InjectionToken<DynamicEntryComponents[]>(\"dynamic-entry-components\");\nexport const DYNAMIC_MODULE_INFO = new InjectionToken<DynamicModuleInfo[]>(\"dynamic-module-info\");\nexport const APP_BASE_URL = new InjectionToken<string>(\"app-base-url\");\nexport const CONFIG_SERVICE = new InjectionToken<IConfigService>(\"config-service\");\nexport const BASE_CONFIG = new InjectionToken<IConfiguration>(\"base-config\");\nexport const SCRIPT_PARAMS = new InjectionToken<any>(\"script-params\");\nexport const ROOT_ELEMENT = new InjectionToken<HTMLElement>(\"app-root-element\");\nexport const RESIZE_DELAY = new InjectionToken<number>(\"resize-event-delay\");\nexport const RESIZE_STRATEGY = new InjectionToken<ResizeEventStrategy>(\"resize-event-strategy\");\nexport const ERROR_HANDLER = new InjectionToken<ErrorHandlerCallback>(\"error-handler-callback\");\nexport const STATIC_SCHEMAS = new InjectionToken<OpenApiSchemas>(\"static-openapi-schemas\");\nexport const SCHEMA_SELECTOR = new InjectionToken<OpenApiSchemaSelector>(\"openapi-schema-selector\");\n","import {AjaxRequestCallback, IAjaxRequestDetails} from \"../common-types\";\n\nexport class AjaxRequestHandler {\n\n private static isOverridden: boolean = false;\n\n public params: any;\n\n constructor(private pattern: RegExp, private callback: AjaxRequestCallback) {\n this.params = {};\n if (typeof XMLHttpRequest !== \"undefined\" && !AjaxRequestHandler.isOverridden) {\n AjaxRequestHandler.isOverridden = true;\n const originalOpen = XMLHttpRequest.prototype.open;\n XMLHttpRequest.prototype.open = function (method: string, url: string): void {\n originalOpen.apply(this, arguments);\n window.dispatchEvent(new CustomEvent(\"ajaxRequest\", {\n detail: {\n request: this,\n method: method,\n url: url\n }\n }))\n };\n }\n }\n\n listen(): AjaxRequestHandler {\n if (typeof window === \"undefined\") return this;\n window.addEventListener(\"ajaxRequest\", this.listener);\n return this;\n }\n\n forget(): AjaxRequestHandler {\n if (typeof window === \"undefined\") return;\n window.removeEventListener(\"ajaxRequest\", this.listener);\n return this;\n }\n\n private listener = (event: CustomEvent): void => {\n const details: IAjaxRequestDetails = event.detail;\n if (this.pattern.test(details.url)) this.callback(details, this.params);\n };\n}\n","import {MaybeArray} from \"../helper-types\";\n\nexport type FilterPredicate = (value: any, key?: any, target?: any, source?: any) => boolean;\nexport type IterateCallback = (value: any, key: any) => void;\nexport type IterateRecursiveCallback = (value: any, key: any, path: string, obj: any) => void;\n\nexport function defaultPredicate(value: any, key?: any, target?: any, source?: any): boolean {\n return true;\n}\n\nexport function shouldCopyDefault(key: any, value: any): boolean {\n return true;\n}\n\nconst hasBlob = typeof Blob !== \"undefined\" && !!Blob;\nconst hasFile = typeof File !== \"undefined\" && !!File;\n\nexport class ObjectUtils {\n\n static compare(a: any, b: any): number {\n if ((a === null || b === null) || (typeof a != typeof b)) {\n return null;\n }\n if (typeof a === \"string\") {\n return (a).localeCompare(b);\n } else {\n if (a instanceof Date) {\n a = a.getTime();\n b = b.getTime();\n }\n if (a > b) {\n return 1;\n } else if (a < b) {\n return -1;\n }\n return 0;\n }\n }\n\n static getProperties(obj: any): string[] {\n if (!ObjectUtils.isObject(obj) && !ObjectUtils.isFunction(obj)) return [];\n const props = new Set<string>();\n Object.keys(obj).forEach(p => props.add(p));\n Object.getOwnPropertyNames(obj).forEach(p => props.add(p));\n return Array.from(props);\n }\n\n static equals(a: any, b: any, visited: Set<any> = null): boolean {\n visited = visited || new Set();\n if (visited.has(a) && visited.has(b)) return true;\n if (a === b) return true;\n if (a === null || b === null) return false;\n if (a !== a && b !== b) return true; // NaN === NaN\n const at = typeof a, bt = typeof b;\n let length: number, key: any, keySet: any;\n if (at == bt && at == \"object\") {\n visited.add(a);\n visited.add(b);\n if (Array.isArray(a)) {\n if (!Array.isArray(b)) return false;\n if ((length = a.length) == b.length) {\n for (key = 0; key < length; key++) {\n if (!ObjectUtils.equals(a[key], b[key], visited)) return false;\n }\n return true;\n }\n } else {\n if (Array.isArray(b)) {\n return false;\n }\n keySet = Object.create(null);\n for (key in a) {\n if (a.hasOwnProperty(key)) {\n if (!ObjectUtils.equals(a[key], b[key], visited)) {\n return false;\n }\n keySet[key] = true;\n }\n }\n for (key in b) {\n if (b.hasOwnProperty(key) && !(key in keySet) && typeof b[key] !== \"undefined\") {\n return false;\n }\n }\n return true;\n }\n }\n return false;\n }\n\n static evaluate(expr: string, context: any = {}, res: any = {}): any {\n expr = Object.keys(context).reduce((res, key) => `var ${key} = this['${key}'];\\n${res}`, expr);\n const lines = expr.split(\"\\n\");\n const lastLine = \"return \" + lines.pop().replace(\"return \", \"\");\n lines.push(lastLine);\n expr = lines.join(\"\\n\");\n let result = null;\n try {\n result = new Function(expr).call(context);\n } catch (e) {\n res.exception = e;\n console.log(`Failed to parse expression: ${e.message}`, expr, context);\n }\n res.result = result;\n return result;\n }\n\n static empty(obj: any): boolean {\n return !obj || Object.keys(obj).length == 0;\n }\n\n static iterate(obj: any, cb: IterateCallback): void {\n const keys: any[] = Array.isArray(obj)\n ? Array.from(obj.keys())\n : (ObjectUtils.isObject(obj) ? Object.keys(obj) : []);\n keys.forEach(\n // @dynamic\n key => {\n cb(obj[key], key);\n }\n );\n }\n\n static iterateRecursive(obj: any, cb: IterateRecursiveCallback, path: string = \"\"): void {\n return ObjectUtils.iterate(obj, (value, key) => {\n const subPath = !path ? key : `${path}.${key}`;\n cb(value, key, subPath, obj);\n ObjectUtils.iterateRecursive(value, cb, subPath);\n });\n }\n\n static getValue(obj: Object, key: string, defaultValue?: any, treeFallback: boolean = false): any {\n key = key || \"\";\n const keys = key.split(\".\");\n let curKey = \"\";\n do {\n curKey += keys.shift();\n if (ObjectUtils.isDefined(obj) && ObjectUtils.isDefined(obj[curKey]) && (typeof obj[curKey] === \"object\" || !keys.length)) {\n obj = obj[curKey];\n curKey = \"\";\n } else if (!keys.length) {\n defaultValue = typeof defaultValue == \"undefined\" ? key.replace(new RegExp(`${curKey}$`), `{${curKey}}`) : defaultValue;\n obj = treeFallback ? obj || defaultValue : defaultValue;\n } else {\n curKey += \".\";\n }\n } while (keys.length);\n return obj;\n }\n\n static mapToPath(target: any, source: any, path: string[]): any {\n if (typeof source === \"undefined\") return target;\n if (path.length == 0) return source;\n const key: any = path.shift();\n if (key == \"*\") {\n if (ObjectUtils.isArray(source)) {\n target = ObjectUtils.isArray(target) ? target : [];\n return source.map((item, index) => {\n return ObjectUtils.mapToPath(target[index], item, Array.from(path));\n });\n }\n if (ObjectUtils.isObject(source)) {\n target = ObjectUtils.isObject(target) ? target : {};\n return Object.keys(source).reduce((result, key) => {\n result[key] = ObjectUtils.mapToPath(target[key], source[key], Array.from(path));\n return result;\n }, {});\n }\n return ObjectUtils.isNullOrUndefined(target) ? null : target;\n }\n const isArray = ObjectUtils.isArray(target);\n target = ObjectUtils.isObject(target) || isArray ? target : {};\n target[key] = ObjectUtils.mapToPath(target[key], source, Array.from(path));\n return isNaN(key) || isArray ? target : Object.values(target);\n }\n\n static filter(obj: any, predicate: FilterPredicate): any {\n return ObjectUtils.copyRecursive(null, obj, predicate || defaultPredicate, new Map());\n }\n\n static copy<T>(obj: T): T {\n return ObjectUtils.copyRecursive(null, obj, defaultPredicate, new Map());\n }\n\n static assign<T>(target: T, source: any, predicate?: FilterPredicate): T {\n return ObjectUtils.copyRecursive(target, source, predicate || defaultPredicate, new Map());\n }\n\n static getType(obj: any): string {\n const regex = new RegExp(\"\\\\s([a-zA-Z]+)\");\n const target = !obj ? null : obj.constructor;\n const type = !target ? null : Reflect.getMetadata(\"objectType\", target);\n return (type || Object.prototype.toString.call(obj).match(regex)[1]).toLowerCase();\n }\n\n static isPrimitive(value: any): boolean {\n const type = typeof value;\n return value == null || (type !== \"object\" && type !== \"function\");\n }\n\n static isObject(value: any): boolean {\n return ObjectUtils.getType(value) === \"object\";\n }\n\n static isDefined(value: any): boolean {\n return typeof value !== \"undefined\" && value !== null;\n }\n\n static isNullOrUndefined(value: any): boolean {\n return typeof value == \"undefined\" || value == null;\n }\n\n static isString(value: any): value is string {\n return typeof value === \"string\";\n }\n\n static isStringWithValue(value: any): value is string {\n return ObjectUtils.isString(value) && value.length > 0;\n }\n\n static isFunction(value: any): value is Function {\n return typeof value === \"function\";\n }\n\n static isDate(value: any): value is Date {\n return null !== value && !isNaN(value) && \"undefined\" !== typeof value.getDate;\n }\n\n static isBlob(value: any): value is Blob {\n return (hasBlob && value instanceof Blob) || (hasFile && value instanceof File);\n }\n\n static isBoolean(value: any): value is boolean {\n return value === true || value === false;\n }\n\n static isNumber(value: any): value is number {\n if (typeof value !== \"number\") return false;\n const num = +value;\n if ((num - num) !== 0) {\n return false;\n }\n if (num === value) {\n return true;\n }\n }\n\n static isArray<T, U>(value: MaybeArray<T> | ReadonlyArray<T> | U): value is T[] {\n return Array.isArray(value);\n }\n\n static isSet(value: any): value is Set<any> {\n return value instanceof Set;\n }\n\n static isConstructor(value: any): boolean {\n return (value && typeof value === \"function\" && value.prototype && value.prototype.constructor) === value && value.name !== \"Object\";\n }\n\n static checkInterface(obj: any, interFaceObject: any): boolean {\n return ObjectUtils.isInterface(obj, interFaceObject);\n }\n\n static isInterface(obj: any, interFaceObject: any): boolean {\n if (!obj || typeof obj !== \"object\" || ObjectUtils.isArray(obj) || !ObjectUtils.isObject(interFaceObject)) return false;\n const keys = Object.keys(interFaceObject);\n for (const key of keys) {\n let type = interFaceObject[key] || \"\";\n if (type.startsWith(\"*\")) {\n type = type.substr(1);\n if (obj.hasOwnProperty(key) && ObjectUtils.getType(obj[key]) !== type) return false;\n } else if (!obj.hasOwnProperty(key) || ObjectUtils.getType(obj[key]) !== type) {\n return false;\n }\n }\n return true;\n }\n\n static pad(obj: any, width: number, chr: string = \"0\"): string {\n const str = ObjectUtils.isDefined(obj) ? obj.toString() : \"\";\n return str.length >= width ? str : new Array(width - str.length + 1).join(chr) + str;\n }\n\n private static copyRecursive(target: any, source: any, predicate: FilterPredicate, copies: Map<any, any>): any {\n if (ObjectUtils.isPrimitive(source) || ObjectUtils.isDate(source) || ObjectUtils.isBlob(source) || ObjectUtils.isFunction(source)) return source;\n if (copies.has(source)) return copies.get(source);\n if (ObjectUtils.isArray(source)) {\n target = ObjectUtils.isArray(target) ? Array.from(target) : [];\n copies.set(source, target);\n for (let index = 0; index < source.length; index++) {\n const item = source[index];\n if (!predicate(item, index, target, source)) continue;\n if (target.length > index)\n target[index] = ObjectUtils.copyRecursive(target[index], item, predicate, copies);\n else\n target.push(ObjectUtils.copyRecursive(null, item, predicate, copies));\n }\n return target;\n }\n\n // If object defines __shouldCopy as false, then don't copy it\n if (source.__shouldCopy === false) return source;\n // Copy object\n const shouldCopy = ObjectUtils.isFunction(source.__shouldCopy) ? source.__shouldCopy : shouldCopyDefault;\n if (ObjectUtils.isConstructor(source.constructor)) {\n if (!target) {\n try {\n target = new source.constructor();\n } catch (e) {\n const proto = source.constructor.prototype || source.prototype;\n target = Object.create(proto);\n }\n }\n } else {\n target = Object.assign({}, target || {});\n }\n // Set to copies to prevent circular references\n copies.set(source, target);\n\n // Copy map entries\n if (target instanceof Map) {\n if (source instanceof Map) {\n for (const [key, value] of source.entries()) {\n if (!predicate(value, key, target, source)) continue;\n target.set(key, !shouldCopy(key, value) ? value : ObjectUtils.copyRecursive(target.get(key), value, predicate, copies));\n }\n }\n return target;\n }\n\n // Copy object members\n const keys = Object.keys(source);\n for (const key of keys) {\n if (!predicate(source[key], key, target, source)) continue;\n target[key] = !shouldCopy(key, source[key]) ? source[key] : ObjectUtils.copyRecursive(target[key], source[key], predicate, copies);\n }\n\n // Copy object properties\n const descriptors = Object.getOwnPropertyDescriptors(source);\n for (const key of Object.keys(descriptors)) {\n if (keys.indexOf(key) >= 0) continue;\n Object.defineProperty(target, key, descriptors[key]);\n }\n return target;\n }\n}\n","import {ObjectUtils} from \"./object.utils\";\n\nexport class ArrayUtils {\n\n static has(arr: ReadonlyArray<any>, ...items: any[]): boolean {\n if (!ObjectUtils.isArray(arr) || !ObjectUtils.isArray(items)) return false;\n for (let i = 0; i < items.length; i++) {\n if (arr.indexOf(items[i]) >= 0) return true;\n }\n return false;\n }\n\n static match(arr: ReadonlyArray<any>, str: string): boolean {\n if (!ObjectUtils.isArray(arr) || !ObjectUtils.isString(str)) return false;\n for (let i = 0; i < arr.length; i++) {\n if (arr[i] instanceof RegExp) {\n const regex = <RegExp>arr[i];\n if (regex.test(str)) return true;\n }\n }\n return false;\n }\n\n static any<T>(arr: ReadonlyArray<T>, cb: (item: T) => boolean): boolean {\n if (!ObjectUtils.isArray(arr) || !ObjectUtils.isFunction(cb)) return false;\n for (let i = 0; i < arr.length; i++) {\n if (cb(arr[i])) return true;\n }\n return false;\n }\n\n static move<T>(arr: T[], oldIndex: number, newIndex: number): T[] {\n if (!ObjectUtils.isArray(arr)) return [];\n const length = arr.length;\n while (oldIndex < 0) {\n oldIndex += length;\n }\n while (newIndex < 0) {\n newIndex += length;\n }\n if (newIndex >= length) {\n let k = newIndex - length + 1;\n while (k--) {\n arr.push(undefined);\n }\n }\n arr.splice(newIndex, 0, arr.splice(oldIndex, 1)[0]);\n return arr;\n }\n\n static reversed<T>(arr: ReadonlyArray<T>): T[] {\n const result = [];\n if (!ObjectUtils.isArray(arr)) return result;\n for (let i = arr.length - 1; i >= 0; i--) {\n result.push(arr[i]);\n }\n return result;\n }\n\n static min<T>(arr: ReadonlyArray<T>, cb: (item: T, index?: number) => number): T {\n if (!ObjectUtils.isArray(arr)) return null;\n let min = Number.MAX_SAFE_INTEGER;\n let result = null;\n for (let i = 0; i < arr.length; i++) {\n const current = cb(arr[i], i);\n if (current < min || result === null) {\n min = current;\n result = arr[i];\n }\n }\n return result;\n }\n\n static max<T>(arr: ReadonlyArray<T>, cb: (item: T, index?: number) => number): T {\n if (!ObjectUtils.isArray(arr)) return null;\n let max = Number.MIN_SAFE_INTEGER;\n let result = null;\n for (let i = 0; i < arr.length; i++) {\n const current = cb(arr[i], i);\n if (current > max || result === null) {\n max = current;\n result = arr[i];\n }\n }\n return result;\n }\n\n static chunk<T>(arr: ReadonlyArray<T>, size: number): Array<T[]> {\n if (!ObjectUtils.isArray(arr)) return [];\n size = Math.max(1, size);\n const result = [];\n for (let i = 0; i < arr.length; i += size) {\n result.push(arr.slice(i, i + size))\n }\n return result\n }\n\n static unique<T>(arr: ReadonlyArray<T>): T[] {\n if (!ObjectUtils.isArray(arr)) return [];\n return arr.filter((value, index, self) => {\n return self.indexOf(value) === index;\n });\n }\n}\n","import \"reflect-metadata\";\nimport {Injector, TypeProvider} from \"@angular/core\";\nimport {ResolveFactory} from \"../common-types\";\nimport {ObjectUtils} from \"./object.utils\";\n\nexport class ReflectUtils {\n\n static defineMetadata(key: string, data: any, target: any, name?: string): void {\n Reflect.defineMetadata(key, data, target, name);\n }\n\n static getMetadata(key: string, target: any, name?: string): any {\n return Reflect.getMetadata(key, target, name);\n }\n\n static getOwnMetadata(key: string, target: any, name?: string): any {\n return Reflect.getOwnMetadata(key, target, name);\n }\n\n static resolve<T>(obj: T, injector: Injector): T extends ResolveFactory<infer R> ? R : T {\n if (!ObjectUtils.checkInterface(obj, {func: \"function\"})) return obj as any;\n const factory = <ResolveFactory>obj;\n let depends: TypeProvider[];\n if (factory.type) {\n const method = ObjectUtils.getProperties(factory.type).find(function (key) {\n return factory.type[key] === factory.func;\n });\n depends = ReflectUtils.getMetadata(\"factoryDependencies\", factory.type, method) || [];\n } else {\n depends = ReflectUtils.getMetadata(\"factoryDependencies\", factory.func) || [];\n }\n const parameters = depends.map(function (dep) {\n return injector.get(dep);\n }).concat(factory.params);\n return factory.func.apply(null, parameters);\n }\n}\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\";\nimport {\n ActivatedRouteSnapshot,\n ChildrenOutletContexts,\n Data,\n NavigationEnd,\n NavigationExtras,\n OutletContext,\n Params,\n Resolve,\n Route,\n Router,\n Scroll,\n UrlSegment,\n UrlTree\n} from \"@angular/router\";\nimport {BehaviorSubject, firstValueFrom, Observable, Observer, Subscription} from \"rxjs\";\nimport {debounceTime, distinctUntilChanged, filter, map, skipWhile,} from \"rxjs/operators\";\nimport {ObjectUtils} from \"../utils/object.utils\";\nimport {IRoute, NavigationUrlParam} from \"../common-types\";\nimport {UniversalService} from \"./universal.service\";\n\nexport const emptySnapshot = new ActivatedRouteSnapshot();\nexport const emptyData: Data = {id: \"\"};\nexport const emptyParams: Params = {};\nexport const emptySegments: UrlSegment[] = [];\nexport const emptyComponents: any[] = [];\n\nexport interface IStateInfo {\n url: string;\n segments: UrlSegment[];\n components: any[];\n}\n\n@Injectable()\nexport class StateService {\n\n readonly globalExtras: NavigationExtras;\n\n protected $snapshot: BehaviorSubject<ActivatedRouteSnapshot>;\n protected $component: BehaviorSubject<any>;\n protected stateInfo: IStateInfo;\n\n static toPath(route: Route, params: any): string {\n let path = route.path || \"\";\n ObjectUtils.iterate(params, (value: any, key: string) => {\n path = path.replace(`:${key}`, `${value}`);\n });\n return path;\n }\n\n get snapshot(): ActivatedRouteSnapshot {\n return this.$snapshot.value;\n }\n\n get component(): any {\n return this.$component.value;\n }\n\n get route(): IRoute {\n return this.snapshot.routeConfig;\n }\n\n get data(): Data {\n return this.snapshot.data || emptyData;\n }\n\n get params(): Params {\n return this.snapshot.params || emptyParams;\n }\n\n get queryParams(): Params {\n return this.snapshot.queryParams || emptyParams;\n }\n\n get url(): string {\n return this.stateInfo.url || \"\";\n }\n\n get urlSegments(): UrlSegment[] {\n return this.stateInfo.segments || emptySegments;\n }\n\n get components(): any[] {\n return this.stateInfo.components || emptyComponents;\n }\n\n get routerConfig(): IRoute[] {\n return this.router.config;\n }\n\n get $observable(): Observable<ActivatedRouteSnapshot> {\n return this.$snapshot.pipe(\n skipWhile(snapshot => snapshot === emptySnapshot),\n debounceTime(25)\n )\n }\n\n constructor(readonly injector: Injector,\n readonly zone: NgZone,\n readonly universal: UniversalService,\n @Optional() readonly router: Router = null,\n @Optional() readonly contexts: ChildrenOutletContexts = null) {\n this.globalExtras = {\n queryParamsHandling: \"merge\"\n };\n this.$snapshot = new BehaviorSubject(emptySnapshot);\n this.$component = new BehaviorSubject(null);\n this.stateInfo = {\n url: \"\",\n segments: [],\n components: []\n };\n this.router?.events\n .pipe(\n distinctUntilChanged(),\n map(event => {\n if (event instanceof Scroll) {\n return event.routerEvent;\n }\n return event;\n }),\n filter(e => e instanceof NavigationEnd),\n )\n .subscribe(() => {\n let context: OutletContext = this.contexts?.getContext(\"primary\");\n let segments = [];\n const components: any[] = [];\n const snapshots: ActivatedRouteSnapshot[] = [];\n while (context && context.route) {\n const snapshot = context.route.snapshot;\n snapshots.push(snapshot);\n segments = segments.concat(snapshot.url);\n if (context.outlet && context.outlet.component)\n components.push(context.outlet.component);\n context = context.children.getContext(\"primary\");\n }\n this.stateInfo = {\n url: segments.map(s => s.url).join(\"/\"),\n segments: segments,\n components: components\n };\n this.$snapshot.next(snapshots[snapshots.length - 1]);\n this.$component.next(components[components.length - 1]);\n });\n }\n\n async reload(): Promise<any> {\n const routerStateSnapshot = this.router.routerState.snapshot;\n const resolvers = this.route.resolve || {};\n const keys = Object.keys(resolvers);\n for (const key of keys) {\n const resolver = this.injector.get(resolvers[key]) as Resolve<any>;\n let resolved = resolver.resolve(this.snapshot, routerStateSnapshot);\n if (resolved instanceof Observable) {\n resolved = firstValueFrom(resolved);\n }\n if (resolved instanceof Promise) {\n resolved = await resolved;\n }\n this.data[key] = resolved;\n }\n }\n\n async navigateByUrl(url: string | UrlTree, navigationExtras: NavigationExtras = {}): Promise<boolean> {\n return this.navigate(url, navigationExtras);\n }\n\n async navigate(url: NavigationUrlParam, navigationExtras: NavigationExtras = {}): Promise<boolean> {\n if (!this.router) return false;\n const [tree, extras] = this.createUrlTree(url, navigationExtras);\n return this.zone.run(() => {\n return this.router.navigateByUrl(tree, extras);\n });\n }\n\n async open(url: NavigationUrlParam, target = \"_blank\", navigationExtras: NavigationExtras = {}): Promise<boolean> {\n if (!this.router) return false;\n const [tree, extras] = this.createUrlTree(url, navigationExtras);\n return this.zone.run(() => {\n return this.openInNewWindow(tree, target) || this.router.navigateByUrl(tree, extras);\n });\n }\n\n subscribeImmediately(\n next?: (value: ActivatedRouteSnapshot) => void,\n error?: (error: any) => void\n ): Subscription {\n return this.subscribe({\n next, error\n });\n }\n\n subscribe(osOrNext?: Partial<Observer<ActivatedRouteSnapshot>> | ((value: ActivatedRouteSnapshot) => void)): Subscription {\n return this.$observable.subscribe(osOrNext);\n }\n\n protected openInNewWindow(tree: UrlTree, target: string): boolean {\n if (!this.universal.isBrowser) return false;\n const baseUrl = window.location.href.replace(this.router.url, \"\");\n try {\n const serialized = this.router.serializeUrl(tree);\n const separator = serialized.startsWith(\"/\") ? \"\" : \"/\";\n window.open(baseUrl + separator + serialized, target);\n return true;\n } catch (e) {\n console.log(`Can't open new window: ${e}`);\n return false;\n }\n }\n\n protected createUrlTree(url: NavigationUrlParam, extras?: NavigationExtras): [UrlTree, NavigationExtras] {\n if (!this.router) return null;\n extras = Object.assign(extras, this.globalExtras, extras || {});\n if (ObjectUtils.isArray(url)) {\n return [this.router.createUrlTree(url, extras), extras]\n }\n if (ObjectUtils.isString(url)) {\n return [this.router.parseUrl(url), extras];\n }\n return [url, extras];\n }\n}\n","import {Inject, Injectable, Injector} from \"@angular/core\";\nimport {ActivatedRouteSnapshot, CanActivate, RouterStateSnapshot, UrlSegment} from \"@angular/router\";\nimport {FactoryDependencies, IAuthService, IRoute, RouteValidator} from \"../common-types\";\nimport {ReflectUtils} from \"./reflect.utils\";\nimport {ObjectUtils} from \"./object.utils\";\nimport {StateService} from \"../services/state.service\";\nimport {AUTH_SERVICE} from \"../tokens\";\n\n@Injectable()\nexport class AuthGuard implements CanActivate {\n\n static guardAuthenticated(auth: IAuthService): Promise<boolean> {\n return Promise.resolve(auth.isAuthenticated);\n }\n\n static guardNotAuthenticated(auth: IAuthService): Promise<boolean> {\n return Promise.resolve(!auth.isAuthenticated);\n }\n\n static guardNothing(): Promise<boolean> {\n return Promise.resolve(true);\n }\n\n @FactoryDependencies(AUTH_SERVICE)\n static guardAuthField(auth: IAuthService, expression: string = `auth.isAuthenticated`): RouteValidator {\n // @dynamic\n const lambda = (): Promise<boolean> => {\n return Promise.resolve(ObjectUtils.evaluate(expression, {auth}));\n };\n return lambda;\n }\n\n @FactoryDependencies(StateService)\n static guardStateField(state: StateService, expression: string = `state.data`): RouteValidator {\n // @dynamic\n const lambda = (): Promise<boolean> => {\n return Promise.resolve(ObjectUtils.evaluate(expression, {state}));\n };\n return lambda;\n }\n\n @FactoryDependencies(AUTH_SERVICE, StateService)\n static guardAuthStateField(auth: IAuthService, state: StateService, expression: string = `auth.isAuthenticated`): RouteValidator {\n // @dynamic\n const lambda = (): Promise<boolean> => {\n return Promise.resolve(ObjectUtils.evaluate(expression, {auth, state}));\n };\n return lambda;\n }\n\n static wildRouteMatch(segments: UrlSegment[]) {\n return {consumed: segments};\n }\n\n static noRouteMatch() {\n return null;\n }\n\n constructor(@Inject(Injector) readonly injector: Injector,\n @Inject(StateService) readonly state: StateService,\n @Inject(AUTH_SERVICE) readonly auth: IAuthService) {\n }\n\n checkRouteMenu(route: IRoute): Promise<boolean> {\n if (!route.data || !route.data.name) return Promise.resolve(false);\n return this.checkRoute(route);\n }\n\n checkRoute(route: IRoute, next?: ActivatedRouteSnapshot): Promise<boolean> {\n const routeData = route.data || {};\n if (!routeData.guards)\n return Promise.resolve(!route.canActivate || this.auth.isAuthenticated);\n return new Promise<boolean>(resolve => {\n const guards = routeData.guards.map(g => {\n const guard = ReflectUtils.resolve(g, this.injector);\n return guard(this.auth, route, next);\n });\n Promise.all(guards).then(results => {\n resolve(results.indexOf(false) < 0);\n });\n });\n }\n\n canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean> {\n const route = <IRoute>next.routeConfig;\n return new Promise<boolean>(resolve => {\n this.auth.checkAuthenticated().then(() => {\n this.checkRoute(route, next).then(hasRights => {\n resolve(hasRights);\n if (!hasRights) {\n this.getReturnState(route).then(returnState => {\n if (!returnState) return;\n this.state.navigate(returnState, {queryParams: next.queryParams});\n });\n }\n });\n });\n });\n }\n\n getConfig(route: IRoute, config: IRoute[], path: string[]): IRoute[] {\n if (!config) return null;\n const match = config.findIndex(t => t == route);\n if (match >= 0) return config;\n for (const subConfig of config) {\n if (subConfig.path)\n path.push(subConfig.path);\n const loadedChildren = (subConfig[\"_loadedConfig\"] || {routes: null}).routes || subConfig[\"_loadedRoutes\"];\n const match = this.getConfig(route, subConfig.children || loadedChildren, path);\n if (!match) {\n if (subConfig.path)\n path.length -= 1;\n continue;\n }\n return match;\n }\n return null;\n }\n\n getReturnState(route: IRoute): Promise<string[]> {\n if (!route) return Promise.resolve(null);\n if (ObjectUtils.isObject(route.data) && ObjectUtils.isArray(route.data.returnState)) {\n return Promise.resolve(route.data.returnState);\n }\n const path = [];\n const config = this.getConfig(route, this.state.routerConfig, path);\n return new Promise<string[]>(resolve => {\n this.getReturnStateRecursive(config).then(rs => {\n if (!ObjectUtils.isArray(rs)) {\n resolve(rs);\n return;\n }\n resolve(path.concat(rs));\n });\n });\n }\n\n private getReturnStateRecursive(config: IRoute[], c: number = 0): Promise<string[]> {\n if (!config || c >= config.length) return Promise.resolve(null);\n return new Promise<string[]>(resolve => {\n const route = config[c];\n const check = !route.component ? Promise.resolve(false) : this.checkRoute(route);\n check.then(res => {\n if (res) {\n resolve([route.path]);\n return;\n }\n this.getReturnStateRecursive(config, c + 1).then(resolve);\n });\n });\n }\n}\n","import {InjectionToken, Injector, Provider, Type} from \"@angular/core\";\nimport {CachedFactory, TypedProvider} from \"../common-types\";\n\nconst CACHED_TOKEN = new InjectionToken(\"cached-factory-token\");\n\nexport function createTypedProvider<T>(provide: InjectionToken<T>, p: TypedProvider<T>, multi: boolean = false): Provider {\n if ((\"useFactory\" in p && \"deps\" in p) || \"useValue\" in p || \"useExisting\" in p || \"useClass\" in p) {\n return {\n provide,\n multi,\n ...p\n } as Provider;\n }\n if (\"useToken\" in p) {\n return {\n provide,\n multi,\n useFactory: (i: T) => i,\n deps: [p.useToken]\n };\n }\n return {\n provide,\n multi,\n useClass: p as Type<T>\n };\n}\n\nexport function cachedFactory<T>(providers: TypedProvider<T>[]): CachedFactory<T> {\n let cached: ReadonlyArray<T> = null;\n return (injector: Injector) => {\n if (cached !== null) {\n return cached;\n }\n const subInjector = Injector.create({\n providers: providers.map(p=> createTypedProvider(CACHED_TOKEN, p, true)),\n parent: injector\n });\n cached = subInjector.get(CACHED_TOKEN) as ReadonlyArray<T>;\n return cached;\n };\n}\n","import {CanvasColor} from \"../common-types\";\nimport {ObjectUtils} from \"./object.utils\";\n\ndeclare const netscape: any;\n\nclass BlurStack {\n r: number = 0;\n g: number = 0;\n b: number = 0;\n a: number = 0;\n next: BlurStack = null;\n}\n\nconst mul_table = [\n 512, 512, 456, 512, 328, 456, 335, 512, 405, 328, 271, 456, 388, 335, 292, 512,\n 454, 405, 364, 328, 298, 271, 496, 456, 420, 388, 360, 335, 312, 292, 273, 512,\n 482, 454, 428, 405, 383, 364, 345, 328, 312, 298, 284, 271, 259, 496, 475, 456,\n 437, 420, 404, 388, 374, 360, 347, 335, 323, 312, 302, 292, 282, 273, 265, 512,\n 497, 482, 468, 454, 441, 428, 417, 405, 394, 383, 373, 364, 354, 345, 337, 328,\n 320, 312, 305, 298, 291, 284, 278, 271, 265, 259, 507, 496, 485, 475, 465, 456,\n 446, 437, 428, 420, 412, 404, 396, 388, 381, 374, 367, 360, 354, 347, 341, 335,\n 329, 323, 318, 312, 307, 302, 297, 292, 287, 282, 278, 273, 269, 265, 261, 512,\n 505, 497, 489, 482, 475, 468, 461, 454, 447, 441, 435, 428, 422, 417, 411, 405,\n 399, 394, 389, 383, 378, 373, 368, 364, 359, 354, 350, 345, 341, 337, 332, 328,\n 324, 320, 316, 312, 309, 305, 301, 298, 294, 291, 287, 284, 281, 278, 274, 271,\n 268, 265, 262, 259, 257, 507, 501, 496, 491, 485, 480, 475, 470, 465, 460, 456,\n 451, 446, 442, 437, 433, 428, 424, 420, 416, 412, 408, 404, 400, 396, 392, 388,\n 385, 381, 377, 374, 370, 367, 363, 360, 357, 354, 350, 347, 344, 341, 338, 335,\n 332, 329, 326, 323, 320, 318, 315, 312, 310, 307, 304, 302, 299, 297, 294, 292,\n 289, 287, 285, 282, 280, 278, 275, 273, 271, 269, 267, 265, 263, 261, 259];\n\nconst shg_table = [\n 9, 11, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 17,\n 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19,\n 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20,\n 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21,\n 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,\n 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22,\n 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,\n 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23,\n 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,\n 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,\n 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,\n 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24];\n\nexport class CanvasUtils {\n\n static manipulatePixels(canvas: HTMLCanvasElement, ctx: CanvasRenderingContext2D, colorTransformer: (color: CanvasColor, greyscale?: number) => CanvasColor): void {\n const imgData = ctx.getImageData(0, 0, canvas.width, canvas.height);\n const pixels = imgData.data;\n for (let i = 0, n = pixels.length; i < n; i += 4) {\n const clr = new CanvasColor(pixels[i], pixels[i + 1], pixels[i + 2], pixels[i + 3]);\n const greyscale = clr.r * .3 + clr.g * .59 + clr.b * .11;\n const color = colorTransformer(clr, greyscale);\n pixels[i] = color.r;\n pixels[i + 1] = color.g;\n pixels[i + 2] = color.b;\n pixels[i + 3] = color.a;\n }\n ctx.putImageData(imgData, 0, 0);\n }\n\n static thresholding(canvas: HTMLCanvasElement, ctx: CanvasRenderingContext2D, threshold: number = 50, colorTransformer: (color: CanvasColor, limit: boolean, greyscale?: number) => CanvasColor): void {\n const min = new CanvasColor(0, 0, 0, 255);\n const max = new CanvasColor(0, 0, 0, 0);\n colorTransformer = ObjectUtils.isFunction(colorTransformer) ? colorTransformer : ((color: CanvasColor, limit: boolean): CanvasColor => {\n return limit ? max : min;\n });\n CanvasUtils.manipulatePixels(canvas, ctx, (color, greyscale) => {\n return colorTransformer(color, greyscale > threshold, greyscale);\n });\n }\n\n static stackBlur(canvas: HTMLCanvasElement, ctx: CanvasRenderingContext2D, radius: number = 10): void {\n if (isNaN(radius) || radius < 1) return;\n radius |= 0;\n\n const top_x = 0;\n const top_y = 0;\n const width = canvas.width;\n const height = canvas.height;\n\n let imageData = null;\n\n try {\n try {\n imageData = ctx.getImageData(top_x, top_y, width, height);\n } catch (e) {\n\n // NOTE: this part is supposedly only needed if you want to work with local files\n // so it might be okay to remove the whole try/catch block and just use\n // imageData = ctx.getImageData( top_x, top_y, width, height );\n try {\n netscape.security.PrivilegeManager.enablePrivilege(\"UniversalBrowserRead\");\n imageData = ctx.getImageData(top_x, top_y, width, height);\n } catch (e) {\n alert(\"Cannot access local image\");\n throw new Error(\"unable to access local image data: \" + e);\n }\n }\n } catch (e) {\n alert(\"Cannot access image\");\n throw new Error(\"unable to access image data: \" + e);\n }\n\n const pixels = imageData.data;\n\n let x, y, i, p, yp, yi, yw, r_sum, g_sum, b_sum, a_sum,\n r_out_sum, g_out_sum, b_out_sum, a_out_sum,\n r_in_sum, g_in_sum, b_in_sum, a_in_sum,\n pr, pg, pb, pa, rbs;\n\n const div = radius + radius + 1;\n const widthMinus1 = width - 1;\n const heightMinus1 = height - 1;\n const radiusPlus1 = radius + 1;\n const sumFactor = radiusPlus1 * (radiusPlus1 + 1) / 2;\n\n const stackStart = new BlurStack();\n let stackEnd = null;\n let stack = stackStart;\n\n for (i = 1; i < div; i++) {\n stack = stack.next = new BlurStack();\n if (i == radiusPlus1) {\n stackEnd = stack;\n }\n }\n stack.next = stackStart;\n let stackIn = null;\n let stackOut = null;\n\n yw = yi = 0;\n\n const mul_sum = mul_table[radius];\n const shg_sum = shg_table[radius];\n\n for (y = 0; y < height; y++) {\n r_in_sum = g_in_sum = b_in_sum = a_in_sum = r_sum = g_sum = b_sum = a_sum = 0;\n\n r_out_sum = radiusPlus1 * (pr = pixels[yi]);\n g_out_sum = radiusPlus1 * (pg = pixels[yi + 1]);\n b_out_sum = radiusPlus1 * (pb = pixels[yi + 2]);\n a_out_sum = radiusPlus1 * (pa = pixels[yi + 3]);\n\n r_sum += sumFactor * pr;\n g_sum += sumFactor * pg;\n b_sum += sumFactor * pb;\n a_sum += sumFactor * pa;\n\n stack = stackStart;\n\n for (i = 0; i < radiusPlus1; i++) {\n stack.r = pr;\n stack.g = pg;\n stack.b = pb;\n stack.a = pa;\n stack = stack.next;\n }\n\n for (i = 1; i < radiusPlus1; i++) {\n p = yi + ((widthMinus1 < i ? widthMinus1 : i) << 2);\n r_sum += (stack.r = (pr = pixels[p])) * (rbs = radiusPlus1 - i);\n g_sum += (stack.g = (pg = pixels[p + 1])) * rbs;\n b_sum += (stack.b = (pb = pixels[p + 2])) * rbs;\n a_sum += (stack.a = (pa = pixels[p + 3])) * rbs;\n\n r_in_sum += pr;\n g_in_sum += pg;\n b_in_sum += pb;\n a_in_sum += pa;\n\n stack = stack.next;\n }\n\n\n stackIn = stackStart;\n stackOut = stackEnd;\n for (x = 0; x < width; x++) {\n pixels[yi + 3] = pa = (a_sum * mul_sum) >> shg_sum;\n if (pa != 0) {\n pa = 255 / pa;\n pixels[yi] = ((r_sum * mul_sum) >> shg_sum) * pa;\n pixels[yi + 1] = ((g_sum * mul_sum) >> shg_sum) * pa;\n pixels[yi + 2] = ((b_sum * mul_sum) >> shg_sum) * pa;\n } else {\n pixels[yi] = pixels[yi + 1] = pixels[yi + 2] = 0;\n }\n\n r_sum -= r_out_sum;\n g_sum -= g_out_sum;\n b_sum -= b_out_sum;\n a_sum -= a_out_sum;\n\n r_out_sum -= stackIn.r;\n g_out_sum -= stackIn.g;\n b_out_sum -= stackIn.b;\n a_out_sum -= stackIn.a;\n\n p = (yw + ((p = x + radius + 1) < widthMinus1 ? p : widthMinus1)) << 2;\n\n r_in_sum += (stackIn.r = pixels[p]);\n g_in_sum += (stackIn.g = pixels[p + 1]);\n b_in_sum += (stackIn.b = pixels[p + 2]);\n a_in_sum += (stackIn.a = pixels[p + 3]);\n\n r_sum += r_in_sum;\n g_sum += g_in_sum;\n b_sum += b_in_sum;\n a_sum += a_in_sum;\n\n stackIn = stackIn.next;\n\n r_out_sum += (pr = stackOut.r);\n g_out_sum += (pg = stackOut.g);\n b_out_sum += (pb = stackOut.b);\n a_out_sum += (pa = stackOut.a);\n\n r_in_sum -= pr;\n g_in_sum -= pg;\n b_in_sum -= pb;\n a_in_sum -= pa;\n\n stackOut = stackOut.next;\n\n yi += 4;\n }\n yw += width;\n }\n\n\n for (x = 0; x < width; x++) {\n g_in_sum = b_in_sum = a_in_sum = r_in_sum = g_sum = b_sum = a_sum = r_sum = 0;\n\n yi = x << 2;\n r_out_sum = radiusPlus1 * (pr = pixels[yi]);\n g_out_sum = radiusPlus1 * (pg = pixels[yi + 1]);\n b_out_sum = radiusPlus1 * (pb = pixels[yi + 2]);\n a_out_sum = radiusPlus1 * (pa = pixels[yi + 3]);\n\n r_sum += sumFactor * pr;\n g_sum += sumFactor * pg;\n b_sum += sumFactor * pb;\n a_sum += sumFactor * pa;\n\n stack = stackStart;\n\n for (i = 0; i < radiusPlus1; i++) {\n stack.r = pr;\n stack.g = pg;\n stack.b = pb;\n stack.a = pa;\n stack = stack.next;\n }\n\n yp = width;\n\n for (i = 1; i <= radius; i++) {\n yi = (yp + x) << 2;\n\n r_sum += (stack.r = (pr = pixels[yi])) * (rbs = radiusPlus1 - i);\n g_sum += (stack.g = (pg = pixels[yi + 1])) * rbs;\n b_sum += (stack.b = (pb = pixels[yi + 2])) * rbs;\n a_sum += (stack.a = (pa = pixels[yi + 3])) * rbs;\n\n r_in_sum += pr;\n g_in_sum += pg;\n b_in_sum += pb;\n a_in_sum += pa;\n\n stack = stack.next;\n\n if (i < heightMinus1) {\n yp += width;\n }\n }\n\n yi = x;\n stackIn = stackStart;\n stackOut = stackEnd;\n for (y = 0; y < height; y++) {\n p = yi << 2;\n pixels[p + 3] = pa = (a_sum * mul_sum) >> shg_sum;\n if (pa > 0) {\n pa = 255 / pa;\n pixels[p] = ((r_sum * mul_sum) >> shg_sum) * pa;\n pixels[p + 1] = ((g_sum * mul_sum) >> shg_sum) * pa;\n pixels[p + 2] = ((b_sum * mul_sum) >> shg_sum) * pa;\n } else {\n pixels[p] = pixels[p + 1] = pixels[p + 2] = 0;\n }\n\n r_sum -= r_out_sum;\n g_sum -= g_out_sum;\n b_sum -= b_out_sum;\n a_sum -= a_out_sum;\n\n r_out_sum -= stackIn.r;\n g_out_sum -= stackIn.g;\n b_out_sum -= stackIn.b;\n a_out_sum -= stackIn.a;\n\n p = (x + (((p = y + radiusPlus1) < heightMinus1 ? p : heightMinus1) * width)) << 2;\n\n r_sum += (r_in_sum += (stackIn.r = pixels[p]));\n g_sum += (g_in_sum += (stackIn.g = pixels[p + 1]));\n b_sum += (b_in_sum += (stackIn.b = pixels[p + 2]));\n a_sum += (a_in_sum += (stackIn.a = pixels[p + 3]));\n\n stackIn = stackIn.next;\n\n r_out_sum += (pr = stackOut.r);\n g_out_sum += (pg = stackOut.g);\n b_out_sum += (pb = stackOut.b);\n a_out_sum += (pa = stackOut.a);\n\n r_in_sum -= pr;\n g_in_sum -= pg;\n b_in_sum -= pb;\n a_in_sum -= pa;\n\n stackOut = stackOut.next;\n\n yi += width;\n }\n }\n\n ctx.putImageData(imageData, top_x, top_y);\n }\n\n static measureTextFontSize(maxWidth: number, maxHeight: number, lines: string[], font: string, lineHeightPercent: number = 1.1, canvas?: HTMLCanvasElement): number {\n\n const startSize: number = maxHeight;\n const context: CanvasRenderingContext2D = canvas.getContext(\"2d\");\n\n if (!canvas) {\n canvas = <HTMLCanvasElement>document.createElement(\"canvas\");\n document.body.appendChild(canvas);\n }\n\n canvas.width = maxWidth + maxHeight;\n canvas.height = maxHeight * 2;\n\n let fontSize: number = CanvasUtils.halveValidateFontSize(startSize, (size: number) => {\n CanvasUtils.setFontProps(context, font, size);\n const maxTextLinesWidth = CanvasUtils.getTextWidth(context, lines);\n return maxWidth - maxTextLinesWidth;\n });\n\n const bitmapHeight: number = CanvasUtils.getTextBitmapHeight(canvas, context, lines, font, fontSize, lineHeightPercent);\n if (bitmapHeight > maxHeight) {\n fontSize = CanvasUtils.halveValidateFontSize(fontSize, (size: number) => {\n return maxHeight - CanvasUtils.getTextBitmapHeight(canvas, context, lines, font, size, lineHeightPercent);\n });\n }\n\n return fontSize;\n }\n\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 {\n CanvasUtils.setFontProps(context, font, size, align, baseLine);\n for (let i: number = 0; i < lines.length; i++) {\n const line: string = lines[i];\n context.fillText(line, x, y);\n if (i < lines.length - 1) {\n y += size * lineHeightPercent;\n }\n }\n return y;\n }\n\n static wrapText(context: CanvasRenderingContext2D, text: string, x: number, y: number, maxWidth: number): void {\n const words = text.split(\" \");\n const lineHeight = context.measureText(\"M\").width * 1.3;\n const lines: string[] = [];\n let line = \"\";\n for (let n = 0; n < words.length; n++) {\n const testLine = line + words[n] + \" \";\n const metrics = context.measureText(testLine);\n const testWidth = metrics.width;\n if (testWidth > maxWidth && n > 0) {\n lines.push(line);\n line = words[n] + \" \";\n }\n else {\n line = testLine;\n }\n }\n lines.push(line);\n y -= lineHeight * .5 * lines.length;\n lines.forEach(l => {\n context.fillText(l, x, y);\n y += lineHeight;\n });\n }\n\n static setFontProps(context: CanvasRenderingContext2D, font: string, fontSize: number, align: string = \"left\", baseLine: string = \"top\"): void {\n context.font = `${fontSize}px ${font}`;\n context.textAlign = <any>align;\n context.textBaseline = <any>baseLine;\n }\n\n private static getTextWidth(context: CanvasRenderingContext2D, lines: string[]): number {\n let maxWidth: number = 0;\n for (let i: number = 0; i < lines.length; i++) {\n const line: string = lines[i];\n maxWidth = Math.max(maxWidth, context.measureText(line).width);\n }\n return maxWidth;\n }\n\n private static getTextBitmapHeight(canvas: HTMLCanvasElement, context: CanvasRenderingContext2D, lines: string[], font: string, fontSize: number, lineHeightPercent: number): number {\n const width: number = canvas.width;\n const height: number = canvas.height;\n context.clearRect(0, 0, width, height);\n\n const textY = CanvasUtils.drawLines(context, lines, font, fontSize, lineHeightPercent, \"left\", \"top\", fontSize * .5, fontSize * .5);\n const imageData: ImageData = context.getImageData(0, 0, width, height);\n\n let textHeight: number = 0;\n\n yLoop:for (let y: number = 0; y < height; y++) {\n for (let x: number = 0; x < width; x++) {\n const index: number = (x + y * width) * 4;\n if (imageData.data[index + 3] > 0) {\n textHeight = y + 1;\n continue yLoop;\n }\n }\n }\n\n return Math.max(textHeight, textY + fontSize);\n }\n\n private static halveValidateFontSize(startSize: number, callback: (size: number) => number): number {\n let fontSize: number = startSize;\n let lastFontSize: number = 0;\n let direction: number;\n\n for (let i: number = 0; i < 20; i++) {\n direction = callback(fontSize);\n const tempSize: number = fontSize;\n if (direction < 0) {\n fontSize = fontSize - (Math.abs(fontSize - lastFontSize) / 2);\n } else {\n fontSize = fontSize + (Math.abs(fontSize - lastFontSize) / 2);\n }\n lastFontSize = tempSize;\n if (Math.abs(fontSize - lastFontSize) < 0.1) {\n break;\n }\n }\n fontSize = Math.floor(fontSize);\n return fontSize;\n }\n}\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\";\nimport {DurationUnit} from \"../common-types\";\n\nexport class DateUtils {\n\n static isHoliday(date: Date): boolean {\n return DateTime.fromJSDate(date).isWeekend;\n }\n\n static isBusinessDay(date: Date): boolean {\n return !DateUtils.isHoliday(date);\n }\n\n static add(date: Date, amount: number = 1, unit: DurationUnit = \"days\"): Date {\n return DateTime.fromJSDate(date).plus({[unit]: amount}).toJSDate();\n }\n\n static businessAdd(date: Date, amount: number = 1, unit: DurationUnit = \"days\", freeDays: Date[] = []): Date {\n const signal = amount < 0 ? -1 : 1;\n const freeTimes = freeDays.map(d => DateTime.fromJSDate(d));\n let remaining = Math.abs(amount);\n let day = DateTime.fromJSDate(date);\n while (remaining) {\n day = day.plus({[unit]: signal});\n if (day.isWeekend && !freeTimes.some(m => m.hasSame(day, \"day\"))) {\n remaining--;\n }\n }\n return day.toJSDate();\n }\n\n static businessSubtract(date: Date, amount: number = 1, unit: DurationUnit = \"days\"): Date {\n return DateUtils.businessAdd(date, -amount, unit);\n }\n}\n","import {HttpClient} from \"@angular/common/http\";\nimport {firstValueFrom} from \"rxjs\";\nimport {ObjectUtils} from \"./object.utils\";\n\ndeclare const saveAs: any;\n\nexport class FileUtils {\n\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;\n\n static getExtension(file: File): string {\n return file ? file.name.substring(file.name.lastIndexOf(\".\")).toLowerCase() : null;\n }\n\n static getName(file: File): string {\n return file ? file.name.substring(0, file.name.lastIndexOf(\".\")) : null;\n }\n\n static toFile(blob: Blob, fileName: string): File {\n const data: any = blob;\n data.lastModifiedDate = new Date();\n data.name = fileName.split(/\\\\|\\//g).pop();\n return <File>data;\n }\n\n static dataToBlob(data: string): Blob {\n const parts = data.split(\",\");\n const byteString = atob(parts[1]);\n const mimeString = parts[0].split(\":\")[1].split(\";\")[0];\n\n const ab = new ArrayBuffer(byteString.length);\n const ia = new Uint8Array(ab);\n for (let i = 0; i < byteString.length; i++) {\n ia[i] = byteString.charCodeAt(i);\n }\n\n return new Blob([ab], {type: mimeString});\n }\n\n static saveBlob(blob: Blob, fileName: string): void {\n if (typeof saveAs == \"undefined\") {\n throw Error(\"FileSaver library is not loaded. Please load it: https://www.npmjs.com/package/file-saver\");\n }\n saveAs(blob, fileName);\n }\n\n static saveJson(json: any, fileName: string): void {\n if (!ObjectUtils.isObject(json)) return;\n FileUtils.saveBlob(new Blob([JSON.stringify(json, null, 4)]), fileName);\n }\n\n static readFileAsText(file: Blob): Promise<string> {\n return FileUtils.readFile(\n // @dynamic\n reader => reader.readAsText(file)\n );\n }\n\n static readFileAsDataURL(file: Blob): Promise<string> {\n return FileUtils.readFile(\n // @dynamic\n reader => reader.readAsDataURL(file)\n );\n }\n\n static base64ToBlob(base64: string, mimeType = \"application/octet-stream\") {\n // Decode the Base64 string into a binary string\n const byteCharacters = atob(base64);\n\n // Convert the binary string into an array of bytes\n const byteNumbers = Array.from(byteCharacters, char => char.charCodeAt(0));\n const byteArray = new Uint8Array(byteNumbers);\n\n // Create a Blob with the byte array and the specified MIME type\n return new Blob([byteArray], { type: mimeType });\n }\n\n static async readBlobFromUrl(http: HttpClient, url: string): Promise<Blob> {\n if (!url) {\n throw new Error(`The URL is not specified for readBlobFromUrl`);\n }\n if (url.match(FileUtils.base64)) {\n return FileUtils.base64ToBlob(url);\n }\n return firstValueFrom(http.get(url, {\n responseType: \"blob\"\n }));\n }\n\n static async readDataFromUrl(http: HttpClient, url: string): Promise<string> {\n if (!url) {\n throw new Error(`The URL is not specified for readBlobFromUrl`);\n }\n if (url.match(FileUtils.base64)) {\n return url;\n }\n const blob = await firstValueFrom(http.get(url, {\n responseType: \"blob\"\n }));\n return FileUtils.readFileAsDataURL(blob);\n }\n\n static getVideoCover(file: File, seekTo: number = null, quality: number = .75) {\n return new Promise<string>((resolve, reject) => {\n // load the file to a video player\n const videoPlayer = document.createElement(\"video\");\n videoPlayer.setAttribute(\"src\", URL.createObjectURL(file));\n videoPlayer.load();\n videoPlayer.addEventListener(\"error\", (ex) => {\n reject(\"error when loading video file\");\n });\n // load metadata of the video to get video duration and dimensions\n videoPlayer.addEventListener(\"loadedmetadata\", () => {\n if (isNaN(seekTo)) {\n seekTo = videoPlayer.duration / 2;\n }\n // seek to user defined timestamp (in seconds) if possible\n if (videoPlayer.duration < seekTo) {\n reject(\"video is too short.\");\n return;\n }\n // delay seeking or else \"seeked\" event won\"t fire on Safari\n setTimeout(() => {\n videoPlayer.currentTime = seekTo;\n }, 200);\n // extract video thumbnail once seeking is complete\n videoPlayer.addEventListener(\"seeked\", () => {\n // define a canvas to have the same dimension as the video\n const canvas = document.createElement(\"canvas\");\n canvas.width = videoPlayer.videoWidth;\n canvas.height = videoPlayer.videoHeight;\n // draw the video frame to canvas\n const ctx = canvas.getContext(\"2d\");\n ctx.drawImage(videoPlayer, 0, 0, canvas.width, canvas.height);\n // return the canvas image as a blob\n resolve(ctx.canvas.toDataURL(\n \"image/jpeg\",\n quality\n ));\n });\n });\n });\n }\n\n static async getFilePreview(file: File): Promise<string> {\n const type = file.type.toLowerCase();\n if (type.startsWith(\"image/\")) {\n return URL.createObjectURL(file);\n }\n if (type.startsWith(\"video/\")) {\n return FileUtils.getVideoCover(file);\n }\n return null;\n }\n\n private static readFile(callback: (reader: FileReader) => void): Promise<string> {\n return new Promise<string>(\n // @dynamic\n (resolve, reject) => {\n const reader = new FileReader();\n reader.onload = (event: any) => resolve(event.target.result);\n reader.onerror = reject;\n callback(reader);\n }\n );\n }\n}\n","export class ForbiddenZone {\n\n static isForbidden(name: string): boolean {\n return Zone.current.name === `forbidden-${name}`;\n }\n\n static run<T>(name: string, cb: () => T): T {\n const forbiddenZone = Zone.current.fork({\n name: `forbidden-${name}`\n });\n return forbiddenZone.run(cb);\n }\n}\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\";\nimport {InteractiveCanvas, InteractiveCanvasRenderer} from \"../../common-types\";\n\nexport class ExclusionsRenderer {\n\n constructor() {\n return Invokable.create(this);\n }\n\n async [Invokable.call](renderCanvas: InteractiveCanvas): Promise<void> {\n const ctx = renderCanvas.ctx;\n renderCanvas.excludedAreas?.forEach(shape => {\n ctx.save();\n ctx.translate(shape.x, shape.y);\n ctx.fillStyle = \"rgba(128,128,128,0.55)\";\n shape.draw(ctx);\n ctx.fill();\n ctx.restore();\n })\n }\n}\n\nexport interface ExclusionsRenderer extends InteractiveCanvasRenderer {\n}\n","import {Invokable} from \"invokable\";\nimport {InteractiveCanvas, InteractiveCanvasRenderer} from \"../../common-types\";\n\nconst rulerDash: number[] = [5, 5];\nconst emptyDash: number[] = [];\n\nexport class RulerCanvasRenderer {\n\n constructor() {\n return Invokable.create(this);\n }\n\n async [Invokable.call](renderCanvas: InteractiveCanvas): Promise<void> {\n const ctx = renderCanvas.ctx;\n ctx.lineWidth = 1;\n ctx.strokeStyle = \"rgba(128, 128, 128, 0.4)\";\n ctx.setLineDash(rulerDash);\n renderCanvas.cycles?.forEach(cycle => {\n ctx.beginPath();\n ctx.moveTo(0, cycle);\n ctx.lineTo(renderCanvas.canvasWidth, cycle);\n ctx.stroke();\n });\n const hw = renderCanvas.canvasWidth / 2;\n ctx.lineDashOffset = -renderCanvas.basePan;\n ctx.beginPath();\n ctx.moveTo(hw, 0);\n ctx.lineTo(hw, renderCanvas.canvasHeight);\n ctx.stroke();\n ctx.setLineDash(emptyDash);\n }\n}\n\nexport interface RulerCanvasRenderer extends InteractiveCanvasRenderer {\n}\n","import {IPoint} from \"../../common-types\";\n\nexport function dotProduct(a: IPoint, b: IPoint): number {\n return a.x * b.x + a.y * b.y;\n}\n\nexport function tripleProduct(a: IPoint, b: IPoint, c: IPoint): IPoint {\n const ac=a.x*c.x+a.y*c.y;\n const bc=b.x*c.x+b.y*c.y;\n return {x:b.x*ac-a.x*bc,y:b.y*ac-a.y*bc};\n}\n\nexport function isPoint(v: IPoint | number): v is IPoint {\n return typeof v === \"object\" && Number.isFinite(v.x) && Number.isFinite(v.y);\n}\n\nexport function ensurePoint(p: IPoint, fallback: IPoint = {x: 0, y: 0}): IPoint {\n return isPoint(p) ? {x: +p.x, y: +p.y} : fallback;\n}\n\nexport function perpendicular(p: IPoint): IPoint {\n return {x: -p.y, y: +p.x};\n}\n\nexport function negatePt(p: IPoint): IPoint {\n return {x: -p.x, y: -p.y};\n}\n\nexport function normalizePt(p: IPoint): IPoint {\n const length = lengthOfPt(p);\n return dividePts(p, length);\n}\n\nexport function addPts(a: IPoint, b: IPoint): IPoint {\n return {x: a.x + b.x, y: a.y + b.y};\n}\n\nexport function distanceSq(a: IPoint, b: IPoint): number {\n const x = b.x - a.x;\n const y = b.y - a.y;\n return x * x + y * y;\n}\n\nexport function distance(a: IPoint, b: IPoint): number {\n return Math.sqrt(distanceSq(a, b));\n}\n\nexport function lerpPts(a: IPoint, b: IPoint, t: number): IPoint {\n const diff = subPts(b, a);\n return addPts(a, multiplyPts(diff, t));\n}\n\nexport function lengthOfPt(p: IPoint): number {\n return Math.hypot(p.x, p.y);\n}\n\nexport function multiplyPts(a: IPoint, b: IPoint | number): IPoint {\n const s = isPoint(b) ? b : {x: b, y: b};\n return {x: a.x * s.x, y: a.y * s.y};\n}\n\nexport function dividePts(a: IPoint, b: IPoint | number): IPoint {\n const s = isPoint(b) ? b : {x: b, y: b};\n return {x: a.x / s.x, y: a.y / s.y};\n}\n\nexport function subPts(a: IPoint, b: IPoint): IPoint {\n return {x: a.x - b.x, y: a.y - b.y};\n}\n\nexport function rotateDeg(p: IPoint, ang: number): IPoint {\n return rotateRad(p, toRadians(ang));\n}\n\nexport function rotateRad(p: IPoint, ang: number): IPoint {\n const c = Math.cos(ang), s = Math.sin(ang);\n return {x: p.x * c - p.y * s, y: p.x * s + p.y * c};\n}\n\nexport function toDegrees(rad: number): number {\n return rad * 180 / Math.PI;\n}\n\nexport function toRadians(deg: number): number {\n return deg * Math.PI / 180;\n}\n","import {ObjectUtils} from \"./object.utils\";\nimport {RangeCoords} from \"../common-types\";\n\nexport const EPSILON = 1e-9;\n\n/**\n * Normalize a range\n * @param minOrRange\n * @param max\n */\nexport function normalizeRange(minOrRange: number | RangeCoords, max?: number): RangeCoords {\n const min = (Array.isArray(minOrRange) ? minOrRange[0] : minOrRange) ?? 0;\n max = (Array.isArray(minOrRange) ? minOrRange[1] : max) ?? 1;\n return (max < min) ? [max, min] : [min, max];\n}\n\n/**\n * Clamps a value to a range\n * @param value\n * @param min\n * @param max\n */\nexport function clamp(value: number, min: number | RangeCoords, max?: number): number {\n const range = normalizeRange(min, max);\n return Math.max(Math.min(value, range[1]), range[0]);\n}\n\n/**\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\n * @param value\n * @param min\n * @param max\n */\nexport function overflow(value: number, min: number | RangeCoords, max?: number) {\n const range = normalizeRange(min, max);\n const length = range[1] - range[0];\n return ((((value - range[0]) % length) + length) % length) + range[0];\n}\n\n/**\n * Checks if a number is equal to b number with epsilon tolerance\n * @param a\n * @param b\n * @param epsilon\n */\nexport function isEqual(a: number, b: number, epsilon: number = null): boolean {\n epsilon = ObjectUtils.isNumber(epsilon) ? epsilon : EPSILON;\n return Math.abs(a - b) <= epsilon;\n}\n\n/**\n * Checks if a number is equal to zero with epsilon tolerance\n * @param a\n * @param epsilon\n */\nexport function isZero(a: number, epsilon: number = null): boolean {\n return isEqual(a, 0, epsilon);\n}\n\nexport class MathUtils {\n\n static equal(a: number, b: number, epsilon: number = null): boolean {\n return isEqual(a, b, epsilon);\n }\n\n static clamp(value: number, min: number, max: number): number {\n return clamp(value, min, max);\n }\n\n static round(value: number, precision: number = 2, divider: number = 1): number {\n precision = Math.pow(10, precision);\n return Math.round(value * precision / divider) / precision;\n }\n\n static approxIndex(x: number, values: number[], epsilon: number = null): number {\n if (!Array.isArray(values) || values.length == 0) {\n return -1;\n }\n let s = 0;\n let e = values.length - 1;\n while (s <= e) {\n const i = Math.floor((s + e) / 2);\n const v = values[i];\n if (MathUtils.equal(v, x, epsilon)) {\n return i;\n }\n if (v < x) {\n s = i + 1;\n } else {\n e = i - 1;\n }\n }\n const m = Math.max(e, 0);\n const a = values[s];\n const b = values[m];\n return Math.abs(a - x) < Math.abs(b - x) ? s : m;\n }\n\n static approximate(x: number, values: number[], epsilon: number = null): number {\n const index = MathUtils.approxIndex(x, values, epsilon);\n return values[index] ?? null;\n }\n}\n","import {IPoint, IShape, ShapeDistance, ShapeIntersection} from \"../../common-types\";\nimport {tripleProduct, subPts, ensurePoint, negatePt, lerpPts, distance, addPts, normalizePt} from \"./functions\";\nimport {EPSILON} from \"../math.utils\";\n\ninterface SimplexLine {\n p: IPoint;\n a: IPoint;\n b: IPoint;\n}\n\ntype Simplex = SimplexLine[];\n\ninterface Dir {\n x: number;\n y: number;\n}\n\nconst MAX_ITERS = 40;\n\n// =========================\n// GJK distance (robust)\n// =========================\nexport function gjkDistance(A: IShape, B: IShape): ShapeDistance {\n // 1) Quick overlap\n const inter = gjkIntersection(A, B);\n if (inter.hit) {\n // Pass through pa/pb\n return { distance: 0, pa: inter.pa ?? null, pb: inter.pb ?? null };\n }\n\n const ca = A.center;\n const cb = B.center;\n\n // 2) Bisection along the center-line to find the first hit pose\n let s = 0;\n let e = 1;\n let iters = 0;\n\n // Keep the best \"hit\" snapshot and its center so we can map witnesses back\n let hitSnap: ReturnType<typeof gjkIntersection> | null = null;\n let hitCenter = ca;\n\n while ((e - s) > EPSILON && iters < MAX_ITERS) {\n iters++;\n const t = (e + s) * 0.5;\n\n // Assumes A.move(newCenter) returns a NEW shape whose center is exactly this point\n const aMoved = A.move(lerpPts(ca, cb, t));\n const test = gjkIntersection(aMoved, B);\n\n if (test.hit) {\n hitSnap = test;\n hitCenter = aMoved.center;\n e = t; // shrink toward contact\n } else {\n s = t; // still separated\n }\n }\n\n // 3) Make sure we end with a hit snapshot (in case we stopped on iteration cap)\n if (!hitSnap) {\n const aMoved = A.move(lerpPts(ca, cb, e));\n const test = gjkIntersection(aMoved, B);\n if (test.hit) {\n hitSnap = test;\n hitCenter = aMoved.center;\n } else {\n // Extremely degenerate: no hit even at e ~ 1 (shouldn't happen for non-degenerate shapes).\n // Fall back to center-line direction as a last resort.\n const dir = normalizePt(subPts(cb, ca));\n const pa0 = A.support(dir);\n const pb0 = B.support(negatePt(dir));\n return { distance: distance(pa0, pb0), pa: pa0, pb: pb0 };\n }\n }\n\n // 4) Map witnesses back to the original A pose\n // (We moved A by (hitCenter - ca); to undo, offset A's witness by (ca - hitCenter))\n const offset = subPts(ca, hitCenter);\n const pa0 = addPts(hitSnap!.pa, offset);\n const pb0 = hitSnap!.pb;\n\n // 5) True geometric separation is the distance between these boundary points\n const d = distance(pa0, pb0);\n\n return {\n distance: d,\n pa: d > 0 ? pa0 : null,\n pb: d > 0 ? pb0 : null\n };\n}\n\n// =========================\n// Boolean GJK (robust)\n// =========================\nexport function gjkIntersection(A: IShape, B: IShape): ShapeIntersection {\n const MAX = 64, EPS = 1e-12;\n const sup = (dir: IPoint): SimplexLine => {\n const a = ensurePoint(A.support(dir), A.center);\n const b = ensurePoint(B.support(negatePt(dir)), B.center);\n return {p: subPts(a, b), a, b};\n };\n // initial direction: center-to-center; fall back to x-axis\n let d = subPts(B.center, A.center);\n if (Math.abs(d.x) < EPS && Math.abs(d.y) < EPS) d = {x: 1, y: 0};\n\n const simplex: Simplex = [sup(d)];\n d = {x: -simplex[0].p.x, y: -simplex[0].p.y};\n\n for (let i = 0; i < MAX; i++) {\n // If direction collapses, steer toward origin from last point\n const dLen = Math.hypot(d.x, d.y);\n if (dLen <= EPS) {\n const last = simplex[simplex.length - 1];\n const AO = {x: -last.p.x, y: -last.p.y};\n const aoLen = Math.hypot(AO.x, AO.y);\n d = (aoLen > EPS) ? AO : {x: 1, y: 0};\n }\n\n const a = sup(d);\n const s = a.p.x * d.x + a.p.y * d.y;\n if (s < -1e-12) return {hit: false}; // definite separation\n if (Math.abs(s) <= 1e-12) { // tangential contact: use normal ±d\n const L = Math.hypot(d.x, d.y) || 1;\n const n = {x: d.x / L, y: d.y / L};\n const pa = ensurePoint(A.support(n), A.center);\n const pb = ensurePoint(B.support(negatePt(n)), B.center);\n const point = {x: (pa.x + pb.x) / 2, y: (pa.y + pb.y) / 2};\n return {hit: true, pa, pb, point};\n }\n\n simplex.push(a);\n {\n const info = doSimplexBoolean(simplex, d);\n if (info.hit) return info;\n }\n }\n // Max iterations without resolution → disjoint\n return {hit: false};\n}\n\nfunction doSimplexBoolean(simplex: Simplex, d: Dir): ShapeIntersection {\n const last = simplex[simplex.length - 1];\n const AO = {x: -last.p.x, y: -last.p.y};\n\n if (simplex.length === 2) {\n const B = simplex[0];\n const AB = {x: B.p.x - last.p.x, y: B.p.y - last.p.y};\n // Perpendicular to AB toward origin\n const abPerp = tripleProduct(AB, AO, AB);\n const perpLen2 = abPerp.x * abPerp.x + abPerp.y * abPerp.y;\n\n if (perpLen2 < 1e-24) {\n // Colinear: project origin onto segment AB\n const ab2 = AB.x * AB.x + AB.y * AB.y;\n if (ab2 > 0) {\n const t = ((AO.x * AB.x + AO.y * AB.y) / ab2);\n if (t >= 0 && t <= 1) {\n // Contact at segment\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)};\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)};\n const point = {x: (pa.x + pb.x) / 2, y: (pa.y + pb.y) / 2};\n return {hit: true, pa, pb, point};\n }\n }\n // Otherwise, move toward origin from A, keep only last point to progress\n d.x = -AO.x;\n d.y = -AO.y;\n simplex.splice(0, simplex.length - 1);\n return {hit: false};\n }\n d.x = abPerp.x;\n d.y = abPerp.y;\n return {hit: false};\n }\n\n // Triangle case: [C, B, A] with A = last\n const A = last, B = simplex[simplex.length - 2], C = simplex[simplex.length - 3];\n const AB = {x: B.p.x - A.p.x, y: B.p.y - A.p.y};\n const AC = {x: C.p.x - A.p.x, y: C.p.y - A.p.y};\n const perpAB = tripleProduct(AC, AB, AB);\n const perpAC = tripleProduct(AB, AC, AC);\n\n // If origin is outside AB region\n if (perpAB.x * AO.x + perpAB.y * AO.y > 0) {\n simplex.splice(simplex.length - 3, 1);\n d.x = perpAB.x;\n d.y = perpAB.y;\n return {hit: false};\n }\n // If origin is outside AC region\n if (perpAC.x * AO.x + perpAC.y * AO.y > 0) {\n simplex.splice(simplex.length - 2, 1);\n d.x = perpAC.x;\n d.y = perpAC.y;\n return {hit: false};\n }\n // Otherwise the origin is inside the triangle → overlap\n // Compute barycentric weights of origin w.r.t triangle (A,B,C)\n const v0 = AB; // B-A\n const v1 = AC; // C-A\n const b = {x: -A.p.x, y: -A.p.y};\n const det = v0.x * v1.y - v0.y * v1.x;\n let uA: number, uB: number, uC: number;\n if (Math.abs(det) > 1e-24) {\n const alpha = (b.x * v1.y - v1.x * b.y) / det; // weight for v0 (B)\n const beta = (v0.x * b.y - b.x * v0.y) / det; // weight for v1 (C)\n uB = alpha;\n uC = beta;\n uA = 1 - alpha - beta;\n } else {\n // Fallback: equal weights\n uA = uB = uC = 1 / 3;\n }\n const pa = {\n x: uA * A.a.x + uB * B.a.x + uC * C.a.x,\n y: uA * A.a.y + uB * B.a.y + uC * C.a.y\n };\n const pb = {\n x: uA * A.b.x + uB * B.b.x + uC * C.b.x,\n y: uA * A.b.y + uB * B.b.y + uC * C.b.y\n };\n const point = {x: (pa.x + pb.x) / 2, y: (pa.y + pb.y) / 2};\n return {hit: true, pa, pb, point};\n}\n","import {IPoint, IShape, ShapeDistance, ShapeIntersection} from \"../../common-types\";\nimport {gjkDistance, gjkIntersection} from \"./gjk\";\nimport {\n addPts,\n dotProduct,\n ensurePoint,\n isPoint,\n lengthOfPt,\n multiplyPts,\n perpendicular,\n rotateDeg,\n subPts,\n toRadians\n} from \"./functions\";\n\nabstract class Shape implements IShape {\n\n get center(): IPoint {\n return this.pt;\n }\n\n get x(): number {\n return this.center.x;\n }\n\n get y(): number {\n return this.center.y;\n }\n\n protected pt: IPoint;\n\n protected constructor(x: number, y: number) {\n this.pt = {x, y};\n }\n\n abstract draw(ctx: CanvasRenderingContext2D, ratio?: number): void;\n\n abstract support(dir: IPoint): IPoint;\n\n abstract move(pos: IPoint): IShape;\n\n intersection(shape: IShape): ShapeIntersection {\n return gjkIntersection(this, shape);\n }\n\n intersects(shape: IShape): boolean {\n return this.intersection(shape).hit;\n }\n\n minDistance(shape: IShape): ShapeDistance {\n return gjkDistance(this, shape);\n }\n\n distance(shape: IShape): number {\n return this.minDistance(shape).distance;\n }\n}\n\nexport class Point extends Shape {\n\n static Zero: Point = new Point(0, 0);\n\n get length(): number {\n return lengthOfPt(this);\n }\n\n get perpendicular(): Point {\n return new Point(perpendicular(this));\n }\n\n constructor(xOrP: number | IPoint, y: number = 0) {\n super(0, y);\n const x = Number(xOrP);\n this.pt = isPoint(xOrP) ? xOrP : {x: isNaN(x) ? 0 : xOrP as number, y};\n }\n\n draw(ctx: CanvasRenderingContext2D): void {\n ctx.beginPath();\n ctx.ellipse(0, 0, 1.5, 1.5, 0, 0, Math.PI * 2);\n ctx.closePath();\n }\n\n support(): IPoint {\n return this.center;\n }\n\n move(pos: IPoint): IShape {\n return new Point(pos);\n }\n\n add(p: IPoint): Point {\n return new Point(addPts(this, p));\n }\n\n subtract(p: IPoint): Point {\n return new Point(subPts(this, p));\n }\n\n multiply(p: IPoint | number): Point {\n return new Point(multiplyPts(this, p));\n }\n\n divide(p: IPoint | number): Point {\n return new Point(multiplyPts(this, p));\n }\n\n dot(p: IPoint): Point {\n return new Point(dotProduct(this, p));\n }\n\n lerp(p: Point, ratio: number): Point {\n const diff = p.subtract(this);\n return this.add(diff.multiply(ratio));\n }\n\n perpendicularTo(p: Point, length: number): Point {\n const diff = p.perpendicular.subtract(this.perpendicular);\n const ratio = length / diff.length;\n const center = this.lerp(p, .5);\n return center.add(diff.multiply(ratio));\n }\n\n circleWith(a: Point, b: Point): Circle {\n const yDelta_a = b.y - a.y;\n const xDelta_a = b.x - a.x;\n const yDelta_b = this.y - b.y;\n const xDelta_b = this.x - b.x;\n\n const aSlope = yDelta_a / xDelta_a;\n const bSlope = yDelta_b / xDelta_b;\n\n const x = (aSlope * bSlope * (a.y - this.y) + bSlope * (a.x + b.x) - aSlope * (b.x + this.x)) / (2 * (bSlope - aSlope));\n const y = -1 * (x - (a.x + b.x) / 2) / aSlope + (a.y + b.y) / 2;\n const center = new Point(x, y);\n return new Circle(center.x, center.y, center.distance(this));\n }\n\n tangents(c: Circle): Point[] {\n const pd = subPts(c.center, this);\n const a = Math.asin(c.radius / lengthOfPt(pd));\n const b = Math.atan2(pd.y, pd.x);\n // Tangent points\n let t = b - a;\n const t1 = new Point(c.x + c.radius * Math.sin(t), c.y + c.radius * -Math.cos(t));\n t = b + a;\n const t2 = new Point(c.x + c.radius * -Math.sin(t), c.y + c.radius * Math.cos(t));\n return [t1, t2];\n }\n\n angle(p: Point): number {\n const diff = p.subtract(this);\n return Math.atan2(diff.y, diff.x) * 180 / Math.PI;\n }\n\n rotateAround(p: Point, angle: number): Point {\n const rotation = (p.angle(this) + angle) * Math.PI / 180;\n const distance = p.distance(this);\n const rotated = new Point(Math.cos(rotation) * distance, Math.sin(rotation) * distance);\n return p.add(rotated);\n }\n}\n\nexport class Rect extends Shape {\n\n constructor(x: number, y: number,\n readonly width: number,\n readonly height: number,\n readonly rotation: number = 0) {\n super(x, y);\n }\n\n draw(ctx: CanvasRenderingContext2D, ratio: number): void {\n ratio = ratio ?? 1;\n const w = this.width * ratio;\n const h = this.height * ratio;\n const angle = toRadians(this.rotation);\n ctx.rotate(angle);\n ctx.beginPath();\n ctx.rect(-w / 2, -h / 2, w, h);\n ctx.closePath();\n ctx.rotate(-angle);\n }\n\n support(dir: IPoint) {\n const ang = this.rotation ?? 0;\n const dLocal = rotateDeg(ensurePoint(dir, {x: 1, y: 0}), -ang);\n const hw = Math.max(0, this.width / 2),\n hh = Math.max(0, this.height / 2);\n if (hw === 0 && hh === 0) return ensurePoint(this.center);\n const lx = dLocal.x >= 0 ? hw : -hw;\n const ly = dLocal.y >= 0 ? hh : -hh;\n return addPts(rotateDeg({x: lx, y: ly}, ang), this.center);\n }\n\n move(pos: IPoint): Rect {\n return new Rect(pos.x, pos.y, this.width, this.height, this.rotation);\n }\n}\n\nexport class Oval extends Shape {\n\n constructor(x: number, y: number,\n readonly width: number,\n readonly height: number,\n readonly rotation: number = 0) {\n super(x, y);\n }\n\n draw(ctx: CanvasRenderingContext2D, ratio: number): void {\n ratio = ratio ?? 1;\n const w = this.width * ratio;\n const h = this.height * ratio;\n const angle = toRadians(this.rotation);\n ctx.rotate(angle);\n ctx.beginPath();\n ctx.ellipse(0, 0, w / 2, h / 2, 0, 0, Math.PI * 2);\n ctx.closePath();\n ctx.rotate(-angle);\n }\n\n support(dir: IPoint) {\n const ang = this.rotation ?? 0;\n const d = rotateDeg(ensurePoint(dir, {x: 1, y: 0}), -ang);\n const a = Math.max(0, this.width / 2),\n b = Math.max(0, this.height / 2);\n if (a === 0 && b === 0) return ensurePoint(this.center);\n const q = Math.hypot(a * d.x, b * d.y) || 1;\n const lx = (a * a * d.x) / q, ly = (b * b * d.y) / q;\n return addPts(rotateDeg({x: lx, y: ly}, ang), this.center);\n }\n\n move(pos: IPoint): Oval {\n return new Oval(pos.x, pos.y, this.width, this.height, this.rotation);\n }\n}\n\nexport class Circle extends Oval {\n constructor(x: number, y: number, readonly radius: number, rotation: number = 0) {\n super(x, y, radius * 2, radius * 2, rotation);\n }\n\n move(pos: IPoint): Circle {\n return new Circle(pos.x, pos.y, this.radius, this.rotation);\n }\n}\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\";\n\nexport class LoaderUtils {\n\n private static promises: ILoaderPromises<ILoadableElement> = {};\n\n static loadScript(src: string, async: boolean = false, type: ScriptType = \"text/javascript\", parent?: Node) {\n return LoaderUtils.loadElement(src, parent, () => {\n const script = document.createElement(\"script\");\n script.type = type;\n script.src = LoaderUtils.updateSrc(src);\n script.async = async;\n return script;\n });\n }\n\n static loadStyle(src: string, parent?: Node) {\n return LoaderUtils.loadElement(src, parent, () => {\n const link = document.createElement(\"link\");\n link.rel = \"stylesheet\";\n link.type = \"text/css\";\n link.href = LoaderUtils.updateSrc(src);\n return link;\n });\n }\n\n private static updateSrc(src: string) {\n if (src?.startsWith(\"data:\")) {\n return src;\n }\n const url = new URL(src);\n url.searchParams.set(\"time\", String(Date.now()));\n return url.toString();\n }\n\n private static loadElement<T extends ILoadableElement>(src: string, parent: Node, setup: () => T): Promise<T> {\n const promises = LoaderUtils.promises as ILoaderPromises<T>;\n parent = parent || document;\n if (parent == document) {\n parent = document.body;\n }\n let {elem, promise} = promises[src] || {};\n if (elem) {\n if (parent === elem.parentElement) return promise;\n if (elem.parentElement) {\n elem.remove();\n }\n }\n elem = setup();\n promise = new Promise<T>((resolve, reject) => {\n if (elem.readyState) {\n // Internet explorer\n elem.onreadystatechange = () => {\n if (elem.readyState === \"loaded\" || elem.readyState === \"complete\") {\n elem.onreadystatechange = null;\n resolve(elem);\n }\n };\n } else {\n // Other browsers\n elem.onload = () => resolve(elem);\n }\n elem.onerror = (error: any) => reject(error);\n });\n parent.appendChild(elem);\n promises[src] = {elem, promise};\n return promise;\n }\n}\n","import {inject, Injector, Provider, Type, ValueProvider, ɵComponentDef as ComponentDef} from \"@angular/core\";\nimport {CssSelector, CssSelectorList, TypedFactoryProvider, TypedValueProvider} from \"../common-types\";\nimport {DYNAMIC_ENTRY_COMPONENTS, OPTIONS_TOKEN} from \"../tokens\";\n\nexport function isBrowser(): boolean {\n return typeof window !== \"undefined\";\n}\n\n/**\n * Returns an elements root\n * @param {HTMLElement} elem The element which root we need\n * @return {DocumentOrShadowRoot} The document or the elements shadow root\n */\nexport function getRoot(elem: HTMLElement): DocumentOrShadowRoot {\n if (!isBrowser()) return null;\n const root: ShadowRoot = elem?.getRootNode() as any;\n return root || document;\n}\n\nexport function switchClass(elem: HTMLElement, className: string, status?: boolean): void {\n if (!elem?.classList) return;\n status = status ?? !elem.classList.contains(className);\n if (status) {\n elem.classList.add(className);\n return;\n }\n elem.classList.remove(className);\n}\n\nexport function getCssVariables(elem: HTMLElement): Record<string, string> {\n if (\"computedStyleMap\" in elem) {\n const styles = Array.from(elem.computedStyleMap() as any) as [string, string][];\n return styles.reduce((res, [prop, val]) => {\n if (prop.startsWith(\"--\")) {\n res[prop] = val.toString();\n }\n return res;\n }, {} as Record<string, string>);\n }\n const res = {} as Record<string, string>;\n const styles = getComputedStyle(elem);\n for (let i = 0; i < styles.length; i++) {\n const propertyName = styles[i];\n if (propertyName.startsWith(\"--\")) {\n res[propertyName] = styles.getPropertyValue(propertyName);\n }\n }\n return res;\n}\n\nexport function checkTransitions(el: HTMLElement, cb: () => any): void {\n let hasTransitions = false;\n let called = false;\n const end = () => {\n if (called) return;\n called = true;\n cb();\n };\n el.onanimationstart = () => hasTransitions = true;\n el.ontransitionstart = () => hasTransitions = true;\n el.onanimationend = end;\n el.ontransitionend = end;\n setTimeout(() => {\n if (hasTransitions) return;\n end();\n }, 100);\n}\n\nexport function getComponentDef<T>(type: Type<T>): ComponentDef<T> {\n const def = type[\"ɵcmp\"] as ComponentDef<T>;\n if (!def) {\n throw new Error(`No Angular definition found for ${type.name}`);\n }\n return def;\n}\n\n// Helper function to match a search selector to a stored selector\nexport function parseSelector(selector: string | CssSelector): CssSelector {\n if (Array.isArray(selector)) {\n if (selector.length !== 1 && selector.length !== 3) {\n throw new Error(\"CSSSelector should contain 1 or 3 parts!\");\n }\n if (selector.some(t => typeof t !== \"string\")) {\n throw new Error(\"CSSSelector parts can only be strings\");\n }\n return selector;\n }\n if (selector.indexOf(\"#\") > 0) {\n const parts = selector.split(\"#\");\n selector = `${parts[0]}[id=${parts[1]}]`;\n }\n if (selector.indexOf(\".\") > 0) {\n const parts = selector.split(\".\");\n selector = `${parts[0]}[class=${parts[1]}]`;\n }\n const start = selector.indexOf(\"[\");\n const end = Math.max(selector.indexOf(\"]\"), Math.min(selector.length, start + 1));\n if (start >= 0) {\n const parts = selector.substring(start + 1, end).split(\"=\");\n return [\n selector.substring(0, start),\n parts[0],\n parts[1] || \"\"\n ]\n }\n return [selector];\n}\n\nexport function selectorMatchesList(list: CssSelectorList, selector: CssSelector) {\n for (const item of list) {\n if (selector.length === item.length && selector.every((s, i) => s === item[i])) {\n return true;\n }\n }\n return false;\n}\n\nexport function provideEntryComponents(components: Type<any>[], moduleId?: string): ValueProvider {\n return {\n provide: DYNAMIC_ENTRY_COMPONENTS,\n useValue: {\n components,\n moduleId\n },\n multi: true\n };\n}\n\nexport function provideOptions<O extends Record<string, any>>(options: O): Required<TypedValueProvider<O>> {\n return {\n provide: OPTIONS_TOKEN,\n useValue: options\n };\n}\n\nexport function provideWithOptions<O extends Record<string, any>, T = any>(type: Type<T>, options: O): TypedFactoryProvider<T> {\n return {\n useFactory: function (parent: Injector) {\n const providers: Provider[] = [\n provideOptions(options),\n {\n provide: type,\n useClass: type\n }\n ];\n return Injector.create({\n providers,\n parent\n }).get(type, null, {optional: true});\n },\n deps: [Injector]\n }\n}\n\nexport function injectOptions<O extends Record<string, any>>(defaults: O): O {\n const options = inject(OPTIONS_TOKEN, {optional: true}) as O;\n return Object.assign({}, defaults, options || {});\n}\n","import {ITimer} from \"../common-types\";\nimport {ObjectUtils} from \"./object.utils\";\n\ntype TimerFunc = (timer: ITimer) => void;\n\nexport class TimerUtils {\n\n static createTimeout(func?: Function, time?: number): ITimer {\n // @dynamic\n const run = (timer: ITimer) => {\n timer.clear();\n // If the time is zero or less, we run the function immediately because setTimeout puts it into the next \"frame\"\n if (timer.time <= 0) {\n timer.func();\n return;\n }\n timer.id = setTimeout(() => {\n timer.id = null;\n timer.func();\n }, timer.time);\n };\n // @dynamic\n const clear = (timer: ITimer) => {\n if (!timer.id) return;\n clearTimeout(timer.id);\n timer.id = null;\n };\n return TimerUtils.createTimer(run, clear, func, time);\n }\n\n static createInterval(func?: Function, time?: number): ITimer {\n // @dynamic\n const run = (timer: ITimer) => {\n timer.clear();\n timer.id = setInterval(timer.func, Math.max(timer.time, 5));\n };\n // @dynamic\n const clear = (timer: ITimer) => {\n if (!timer.id) return;\n clearInterval(timer.id);\n timer.id = null;\n };\n return TimerUtils.createTimer(run, clear, func, time);\n }\n\n private static createTimer(run: TimerFunc, clear: TimerFunc, func: Function, time: number): ITimer {\n const timer: ITimer = {};\n const setParams = (func: Function, time: number) => {\n timer.func = !ObjectUtils.isFunction(func) ? (() => {}) : func;\n timer.time = !ObjectUtils.isNumber(time) ? 100 : time;\n };\n timer.run = () => run(timer);\n timer.clear = () => clear(timer);\n timer.set = (func: Function, time: number) => {\n setParams(func, time);\n timer.run();\n };\n setParams(func, time);\n return timer;\n }\n}\n","import {from, Observable, Subject, Subscription} from \"rxjs\";\nimport {mergeMap} from \"rxjs/operators\";\n\nimport {ISearchObservable} from \"../common-types\";\nimport {TimerUtils} from \"./timer.utils\";\n\nexport interface ISubscriberInfo {\n subjects: Observable<any>[];\n cb: (ev?: Observable<any>, ...args: any[]) => any;\n timeout?: number;\n}\n\nexport class ObservableUtils {\n\n static toSearch(search: ISearchObservable): Observable<any> {\n return mergeMap(\n // @dynamic\n (token: string) => search.getSearchResults(token)\n )(\n Observable.create(\n // @dynamic\n (observer: any) => {\n observer.next(search.search);\n }\n )\n );\n }\n\n static multiSubscription(...subscriptions: Subscription[]): Subscription {\n // @dynamic\n const lambda = () => {\n subscriptions.forEach(s => {\n s?.unsubscribe();\n });\n };\n return new Subscription(lambda);\n }\n\n static subscribe(...subscribers: ISubscriberInfo[]): Subscription {\n const subscriptions: Subscription[] = [];\n subscribers.forEach(info => {\n let alreadyCalled = false;\n const timer = TimerUtils.createTimeout();\n info.subjects.forEach(subject => {\n const ss = subject.subscribe((value) => {\n alreadyCalled = true;\n timer.set(() => {\n info.cb(subject, value);\n }, info.timeout ?? 0);\n });\n subscriptions.push(ss);\n });\n if (alreadyCalled) return;\n info.cb();\n });\n return ObservableUtils.multiSubscription(...subscriptions);\n }\n\n static fromFunction(callbackFunc: () => any): Observable<any> {\n let subject: any;\n return new Observable<any>((subscriber) => {\n if (!subject) {\n subject = new Subject();\n try {\n subject = from(callbackFunc());\n } catch (err) {\n subject.error(err);\n }\n }\n return subject.subscribe(subscriber);\n });\n }\n}\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) {\n // Encode as UTF-8, then to Base64\n const utf8Bytes = new TextEncoder().encode(svgString);\n let binary = \"\";\n for (let i = 0; i < utf8Bytes.length; i++) {\n binary += String.fromCharCode(utf8Bytes[i]);\n }\n const base64 = btoa(binary);\n\n return `data:image/svg+xml;base64,${base64}`;\n}\n\nexport class StringUtils {\n\n static concat(separator: string, ...strings: string[]): string {\n return strings.filter(\n // @dynamic\n str => !!str\n ).join(separator);\n }\n\n static startsWith(str: string, ...starts: string[]): boolean {\n if (typeof str !== \"string\") return false;\n for (let i = 0; i < starts.length; i++) {\n if (str.startsWith(starts[i])) return true;\n }\n return false;\n }\n\n static has(str: string, ...parts: string[]): boolean {\n if (typeof str !== \"string\") return false;\n for (let i = 0; i < parts.length; i++) {\n if (str.indexOf(parts[i]) >= 0) return true;\n }\n return false;\n }\n\n static lcFirst(str: string): string {\n return typeof str === \"string\" ? str.charAt(0).toLowerCase() + str.substring(1) : \"\";\n }\n\n static ucFirst(str: string): string {\n return typeof str === \"string\" ? str.charAt(0).toUpperCase() + str.substring(1) : \"\";\n }\n\n static camelize(str: string): string {\n return StringUtils.ucFirst(str)\n .replace(/[-.]([a-z])/g, g => g[1].toUpperCase());\n }\n\n static isObjectId(id: string): boolean {\n return typeof id === \"string\" && id.length == 24 && !isNaN(Number(\"0x\" + id));\n }\n\n static parseDomain(baseUrl: string): string {\n try {\n const url = new URL(String(baseUrl || \"\"));\n const port = url.port && url.port !== \"443\" && url.port !== \"80\" ? `:${url.port}` : ``;\n return `${url.protocol}//${url.hostname}${port}/`;\n } catch {\n return \"/\";\n }\n }\n}\n","import {ObjectUtils} from \"./object.utils\";\n\nexport class SetUtils {\n static equals(set: Set<any>, obj: any): boolean {\n if (!ObjectUtils.isSet(set) || !ObjectUtils.isSet(obj))\n return false;\n if (set.size != obj.size)\n return false;\n for (const item in set) {\n if (!obj.has(item)) return false;\n }\n return true;\n }\n\n static addArray(set: Set<any>, items: any[]): void {\n if (!ObjectUtils.isSet(set) || !ObjectUtils.isArray(items)) return;\n items.forEach(i => set.add(i));\n }\n}\n","import {computed, untracked, type Signal, DestroyRef, inject, signal} from \"@angular/core\";\nimport {isBrowser} from \"./misc\";\n\n/**\n * Returns a signal that emits the previous value of the given signal.\n * The first time the signal is emitted, the previous value will be the same as the current value.\n *\n * @param s Signal to compute previous value for\n * @returns Signal that emits previous value of `s`\n */\nexport function computedPrevious<T>(s: Signal<T>): Signal<T> {\n let current = null as T;\n let previous = untracked(() => s()); // initial value is the current value\n\n return computed(() => {\n current = s();\n const result = previous;\n previous = current;\n return result;\n });\n}\n\n/**\n * Returns a signal that emits css styles form an element when it gets resized\n *\n * @param elem Element to compute styles for\n * @returns Signal that emits the calculated styles\n */\nexport function cssStyles<T>(elem: HTMLElement): Signal<CSSStyleDeclaration> {\n const styles = signal<CSSStyleDeclaration>({\n length: 0,\n getPropertyValue: () => null\n } as any);\n if (!elem || !isBrowser()) return styles;\n styles.set(getComputedStyle(elem));\n const observer = typeof ResizeObserver === \"function\" ? new ResizeObserver(() => {\n requestAnimationFrame(() => {\n styles.set(getComputedStyle(elem));\n });\n }) : null;\n const destroyRef = inject(DestroyRef, { optional: true });\n destroyRef?.onDestroy(() => {\n observer?.unobserve(elem);\n });\n observer?.observe(elem);\n return styles;\n}\n\n/**\n * Returns a signal that emits css variables form an element when it gets resized\n *\n * @param elem Element to compute variables for\n * @returns Signal that emits the calculated properties\n */\nexport function cssVariables<T>(elem: HTMLElement) {\n const styleSource = cssStyles(elem);\n return computed(() => {\n const styles = styleSource();\n const res = {} as Record<string, string>;\n for (let i = 0; i < styles.length; i++) {\n const propertyName = styles[i];\n if (propertyName.startsWith(\"--\")) {\n res[propertyName] = styles.getPropertyValue(propertyName);\n }\n }\n return res;\n });\n}\n","import {BehaviorSubject, Subject, Subscription} from \"rxjs\";\nimport type {ManagerOptions, SocketOptions, Socket} from \"socket.io-client\";\n\nexport type SocketFactory = (uri?: string, opts?: Partial<ManagerOptions & SocketOptions>) => Socket;\n\nexport type SocketDataValue = string | number | boolean | Date | Array<SocketDataValue> | Array<SocketDataObj>;\n\nexport interface SocketDataObj {\n [key: string]: SocketDataValue | SocketDataObj;\n}\n\nexport type SocketData = SocketDataValue | SocketDataObj;\n\nexport type ExtraHeaders = Record<string, string>;\n\nexport interface ResponseHandler {\n resolve: (data: SocketData) => void,\n reject: (error: SocketData) => void\n}\n\nfunction 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 Array.from(buf).map(pad4).join(\"\");\n }\n return new Array(8).fill(0).map(random4).join(\"\");\n}\n\nfunction pad4(num: number, index: number): string {\n const prefix = 1 < index && index < 6 ? \"-\" : \"\";\n let ret = num.toString(16);\n while (ret.length < 4) {\n ret = \"0\" + ret;\n }\n return prefix + ret;\n}\n\nfunction random4(_: number, index: number): string {\n const prefix = 1 < index && index < 6 ? \"-\" : \"\";\n return prefix + Math.floor((1 + Math.random()) * 0x10000)\n .toString(16)\n .substring(1);\n}\n\nexport class SocketClient {\n\n readonly status: BehaviorSubject<boolean>;\n\n protected readonly channels: Map<string, Subject<SocketData>>;\n protected readonly responseHandlers: Map<string, ResponseHandler>;\n protected sid: string;\n protected open: boolean;\n\n protected factory: Promise<SocketFactory>;\n protected ws: Promise<Socket>;\n\n get id(): string {\n return this.open ? this.sid : null;\n }\n\n constructor(readonly url: string,\n protected ioLoader: () => Promise<SocketFactory>) {\n this.status = new BehaviorSubject(false);\n this.channels = new Map([\n [\"connect\", new Subject<SocketData>()],\n [\"disconnect\", new Subject<SocketData>()],\n [\"error\", new Subject<SocketData>()]\n ]);\n this.responseHandlers = new Map();\n this.sid = null;\n this.open = false;\n }\n\n connect(extraHeaders: ExtraHeaders = {}): void {\n if (this.ws) return;\n const url = new URL(this.url);\n this.factory = this.factory || this.ioLoader();\n this.ws = new Promise((resolve, reject) => {\n this.factory.then(io => {\n const protocol = url.protocol.replace(\"http\", \"ws\");\n const ws = io(`${protocol}//${url.host}`, {\n extraHeaders,\n timeout: 5000,\n path: url.pathname\n });\n console.log(`socket connecting to: ${protocol}//${url.host}`, url.pathname);\n ws.on(`connect`, () => {\n console.log(`socket connected`);\n this.open = true;\n this.sid = ws.id;\n this.status.next(true);\n });\n ws.on(`disconnect`, () => {\n this.open = false;\n this.status.next(false);\n });\n for (const [event, subject] of this.channels.entries()) {\n ws.off(event);\n ws.on(event, (data: SocketData) => {\n this.handleResponse(event, data);\n subject.next(data);\n });\n }\n resolve(ws);\n }, reject);\n });\n }\n\n disconnect(): void {\n if (!this.ws) return;\n this.ws.then(ws => ws.disconnect());\n this.ws = null;\n }\n\n subscribe<T = SocketData>(event: string, cb: (value: T) => void): Subscription {\n if (!this.channels.has(event)) {\n this.channels.set(event, new Subject());\n this.ws?.then(ws => {\n ws.off(event);\n ws.on(event, (data: SocketData) => {\n this.handleResponse(event, data);\n this.channels.get(event).next(data);\n });\n });\n }\n return this.channels.get(event).subscribe(cb as any);\n }\n\n emit(event: string, content: SocketData): void {\n this.ws.then(ws => ws.emit(event, content));\n }\n\n async request(event: string, content: SocketDataObj): Promise<any> {\n const id = uuid();\n const ws = await this.ws;\n const promise = new Promise((resolve, reject) => {\n this.responseHandlers.set(id, {resolve, reject});\n setTimeout(() => {\n this.responseHandlers.delete(id);\n reject(`Timeout for ${event} request ${JSON.stringify(content)}`);\n }, 5000);\n });\n ws.emit(event, {...content, immediate_response_id: id});\n return promise;\n }\n\n protected handleResponse(event: string, content: SocketData): void {\n if (typeof content !== \"object\" || Array.isArray(content) || content instanceof Date) return;\n const id = content.immediate_response_id as string;\n const handler = this.responseHandlers.get(id);\n if (!handler) return;\n this.responseHandlers.delete(id);\n if (event === \"error\") {\n handler.reject(content);\n return;\n }\n handler.resolve(content);\n }\n}\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 {Injectable} from \"@angular/core\";\nimport {Subject} from \"rxjs\";\nimport {IUserData} from \"../common-types\";\n\n@Injectable()\nexport class EventsService {\n\n readonly eventForwarded: Subject<Event>;\n readonly stickyUpdated: Subject<boolean>;\n readonly languageChanged: Subject<string>;\n readonly editLanguageChanged: Subject<string>;\n readonly translationsEnabled: Subject<boolean>;\n readonly userChanged: Subject<any>;\n\n private sticky: boolean;\n private user: IUserData;\n\n get isSticky(): boolean {\n return this.sticky;\n }\n\n get isAuthenticated(): boolean {\n return !!this.user;\n }\n\n constructor() {\n this.eventForwarded = new Subject();\n this.stickyUpdated = new Subject();\n this.languageChanged = new Subject();\n this.editLanguageChanged = new Subject<string>();\n this.translationsEnabled = new Subject();\n this.userChanged = new Subject();\n this.sticky = false;\n this.user = null;\n this.userChanged.subscribe(user => {\n this.user = user;\n });\n }\n\n event(e: Event): void {\n this.eventForwarded.next(e);\n }\n\n updateSticky(sticky: boolean): void {\n this.sticky = sticky;\n this.stickyUpdated.next(sticky);\n }\n}\n","import {Injectable, Injector, Type} from \"@angular/core\";\nimport {StateService} from \"./state.service\";\nimport {IAclComponent, IRouteStateInfo} from \"../common-types\";\nimport {ObjectUtils} from \"../utils/object.utils\";\nimport {AuthGuard} from \"../utils/auth.guard\";\nimport {EventsService} from \"./events.service\";\n\nconst emptyGuards: any[] = [];\n\n@Injectable()\nexport class AclService {\n\n protected components: IRouteStateInfo[];\n\n constructor(readonly injector: Injector,\n readonly state: StateService,\n readonly events: EventsService) {\n this.components = [];\n this.events.userChanged.subscribe(() => {\n this.components.forEach(t => t.dirty = true);\n const info = this.getStateInfo();\n const check: Promise<boolean> = info && info.guard instanceof AuthGuard ? info.guard.checkRoute(info.route) : Promise.resolve(true);\n check.then(result => {\n if (result) {\n if (!info || !info.dirty) return;\n info.dirty = false;\n const component: IAclComponent = info.component;\n if (!info.component) return;\n if (info.first) {\n if (ObjectUtils.isFunction(component.onUserInitialized)) {\n component.onUserInitialized();\n }\n info.first = false;\n return;\n }\n if (ObjectUtils.isFunction(component.onUserChanged)) {\n component.onUserChanged();\n }\n return;\n }\n (info.guard as AuthGuard).getReturnState(info.route).then(returnState => {\n if (!returnState) return;\n this.state.navigate(returnState);\n });\n });\n });\n this.state.subscribe(() => {\n const info = this.getStateInfo();\n if (!info?.component) return;\n const component: IAclComponent = info.component;\n if (ObjectUtils.isFunction(component.onUserInitialized)) {\n component.onUserInitialized();\n }\n info.first = false;\n });\n }\n\n protected getStateInfo(): IRouteStateInfo {\n const route = this.state.route;\n if (!route) return null;\n let info = this.components.find(t => t.route == this.state.route);\n if (!info) {\n const guardType: Type<AuthGuard> = (route.canActivate || emptyGuards)[0];\n info = {\n route: this.state.route,\n guard: guardType ? this.injector.get(guardType) : null,\n dirty: true,\n first: true\n };\n this.components.push(info);\n }\n info.component = this.state.component;\n return info;\n }\n}\n","import {HttpHeaders, HttpParams, HttpUrlEncodingCodec} from \"@angular/common/http\";\nimport {HttpRequestHeaders, HttpRequestQuery} from \"../common-types\";\nimport {ObjectUtils} from \"../utils/object.utils\";\n\nexport class RequestBag {\n\n protected readonly headers: HttpRequestHeaders;\n protected readonly params: HttpRequestQuery;\n\n get requestHeaders(): Readonly<HttpRequestHeaders> {\n return this.headers;\n }\n\n get requestParams(): Readonly<HttpRequestQuery> {\n return this.params;\n }\n\n constructor(protected source?: RequestBag) {\n this.headers = {};\n this.params = {};\n }\n\n makeHeaders(headersObj?: HttpRequestHeaders | HttpHeaders, withCredentials: boolean = true): HttpHeaders {\n const source = this.convertHeaders(headersObj);\n const headers = Object.assign({}, this.source?.headers || {}, this.headers, source);\n const authHeader = headers[\"Authorization\"] as string || \"\";\n if (!withCredentials && !authHeader.startsWith(\"Bearer\")) {\n delete headers[\"Authorization\"];\n }\n return new HttpHeaders(headers);\n }\n\n makeParams(paramsObj?: HttpParams | HttpRequestQuery): HttpParams {\n const source = this.convertParams(paramsObj);\n const params = Object.assign({}, this.source?.params || {}, this.params, source);\n return new HttpParams({\n encoder: new HttpUrlEncodingCodec(),\n fromObject: Object.keys(params || {}).reduce((result, key) => {\n const value = params[key];\n result[key] = ObjectUtils.isObject(value) ? JSON.stringify(value) : (ObjectUtils.isNullOrUndefined(value) ? \"\" : value.toString());\n return result;\n }, {})\n });\n }\n\n setHeader(name: string, value?: string | string[]): void {\n if (value === undefined) {\n delete this.headers[name];\n return;\n }\n this.headers[name] = value;\n }\n\n getHeader(name: string): string {\n return String(this.headers[name] || \"\");\n }\n\n setParam(name: string, value?: any): void {\n if (value === undefined) {\n delete this.params[name];\n return;\n }\n this.params[name] = value;\n }\n\n convertHeaders(headers: HttpHeaders | HttpRequestHeaders): HttpRequestHeaders {\n if (headers instanceof HttpHeaders) {\n return headers.keys().reduce((res, key) => {\n res[key] = headers.getAll(key);\n return res;\n }, {} as HttpRequestHeaders);\n }\n return headers || {};\n }\n\n convertParams(params: HttpParams | HttpRequestQuery): HttpRequestQuery {\n if (params instanceof HttpParams) {\n return params.keys().reduce((res, key) => {\n res[key] = params.getAll(key);\n return res;\n }, {} as HttpRequestQuery);\n }\n return params || {};\n }\n}\n","import {Injectable} from \"@angular/core\";\nimport {HttpClient, HttpHandler, HttpHeaders} from \"@angular/common/http\";\nimport {RequestBag} from \"./request-bag\";\nimport {HttpRequestHeaders, HttpRequestQuery, IBaseHttpClient} from \"../common-types\";\n\n@Injectable()\nexport class BaseHttpClient extends HttpClient implements IBaseHttpClient {\n\n renewTokenFunc: () => void;\n\n readonly bag: RequestBag;\n\n constructor(handler: HttpHandler) {\n super(handler);\n this.bag = new RequestBag();\n }\n\n get requestHeaders(): Readonly<HttpRequestHeaders> {\n return this.bag.requestHeaders;\n }\n\n get requestParams(): Readonly<HttpRequestQuery> {\n return this.bag.requestParams;\n }\n\n setHeader(name: string, value?: string | string[]): void {\n this.bag.setHeader(name, value);\n }\n\n getHeader(name: string): string {\n return this.bag.getHeader(name);\n }\n\n setParam(name: string, value?: any): void {\n this.bag.setParam(name, value);\n }\n\n setExtraRequestParam(name: string, value?: any): void {\n this.bag.setParam(name, value);\n }\n\n makeHeaders(): HttpHeaders {\n return this.bag.makeHeaders();\n }\n}\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\";\nimport {BehaviorSubject, Observable, Subject, delay, timer} from \"rxjs\";\nimport {DateTime} from \"luxon\";\nimport {DurationUnit} from \"../common-types\";\nimport {EventsService} from \"./events.service\";\n\n@Injectable()\nexport class CacheService {\n\n get userChanged(): Observable<any> {\n return this.events.userChanged;\n }\n\n readonly ignore: Observable<any>;\n readonly permanent: Observable<any>;\n\n private caches: Map<string, any>;\n\n constructor(protected events: EventsService) {\n this.ignore = new BehaviorSubject(null).pipe(delay(5));\n this.permanent = new Subject();\n this.caches = new Map();\n }\n\n expiresIn(amount: number = 10, unit: DurationUnit = \"seconds\"): Observable<any> {\n const when = DateTime.now().plus({[unit]: amount}).toJSDate();\n return this.expiresAt(when);\n }\n\n expiresAt(when: Date): Observable<any> {\n const now = new Date().getTime();\n // Prevent negative delay\n const delay = Math.max(when.getTime() - now, 5);\n return timer(delay);\n }\n\n use<T>(key: string, valueCb: () => T, expires?: Observable<any>): T {\n if (this.caches.has(key)) {\n return this.caches.get(key);\n }\n const value = valueCb();\n this.caches.set(key, value);\n const subscription = (expires || this.permanent).subscribe(() => {\n this.caches.delete(key);\n subscription.unsubscribe();\n });\n return value;\n }\n}\n","import {Inject, Injectable, Injector, Optional} from \"@angular/core\";\nimport {HttpErrorResponse, HttpEventType, HttpHeaders, HttpParams, HttpResponse} from \"@angular/common/http\";\nimport {Request} from \"express\";\n\nimport {\n CacheExpireMode,\n HttpClientRequestOptions,\n HttpRequestHeaders,\n HttpRequestOptions,\n HttpRequestQuery,\n IConfigService,\n IHttpService,\n IIssueContext,\n ILanguageService,\n IPaginationData,\n IToasterService,\n ProgressListener,\n UploadData\n} from \"../common-types\";\n\nimport {ObjectUtils} from \"../utils/object.utils\";\nimport {MathUtils} from \"../utils/math.utils\";\n\nimport {BaseHttpClient} from \"./base-http.client\";\nimport {UniversalService} from \"./universal.service\";\nimport {StorageService} from \"./storage.service\";\nimport {timeout} from \"rxjs/operators\";\nimport {Observable, TimeoutError} from \"rxjs\";\nimport {CONFIG_SERVICE, EXPRESS_REQUEST, LANGUAGE_SERVICE, TOASTER_SERVICE} from \"../tokens\";\nimport {CacheService} from \"./cache.service\";\nimport {RequestBag} from \"./request-bag\";\nimport {md5} from \"../utils/crypto.utils\";\n\n@Injectable()\nexport class BaseHttpService implements IHttpService {\n\n get name(): string {\n return \"base\";\n }\n\n get requestHeaders(): Readonly<HttpRequestHeaders> {\n return this.bag.requestHeaders;\n }\n\n get requestParams(): Readonly<HttpRequestQuery> {\n return this.bag.requestParams;\n }\n\n protected get withCredentials(): boolean {\n return true;\n }\n\n get universal(): UniversalService {\n return this.storage.universal;\n }\n\n protected static failedRequests: Array<() => void> = [];\n\n protected readonly bag: RequestBag;\n\n protected static retryFailedRequests(): void {\n BaseHttpService.failedRequests.forEach(r => r());\n BaseHttpService.failedRequests = [];\n }\n\n constructor(readonly injector: Injector,\n readonly client: BaseHttpClient,\n readonly storage: StorageService,\n readonly caches: CacheService,\n @Inject(LANGUAGE_SERVICE) readonly language: ILanguageService,\n @Inject(TOASTER_SERVICE) readonly toaster: IToasterService,\n @Inject(CONFIG_SERVICE) readonly configs: IConfigService,\n @Optional() @Inject(EXPRESS_REQUEST) readonly request: Request = null\n ) {\n this.bag = new RequestBag(this.client.bag);\n this.initService();\n }\n\n protected initService(): void {\n\n }\n\n setHeader(name: string, value?: string | string[]): void {\n this.bag.setHeader(name, value);\n }\n\n setParam(name: string, value?: any): void {\n this.bag.setParam(name, value);\n }\n\n cached(mode: CacheExpireMode): Observable<any> {\n if (mode === \"auth\") {\n return this.caches.userChanged;\n }\n if (mode instanceof Date) {\n return this.caches.expiresAt(mode);\n }\n return mode === false ? this.caches.ignore : this.caches.permanent;\n }\n\n url(url: string): string {\n return url;\n }\n\n createUrl(url: string, params: HttpRequestQuery): string {\n const httpParams = this.bag.makeParams(params);\n const query = httpParams.keys().map(key => {\n return `${key}=${httpParams.get(key)}`;\n }).join(\"&\");\n return `${this.url(url)}?${query}`;\n }\n\n makeListParams(page: number, itemsPerPage: number, orderBy: string = null, orderDescending: boolean = null, filter: string = null): HttpRequestQuery {\n const params: HttpRequestQuery = {\n page: (page - 1),\n limit: itemsPerPage\n };\n if (!ObjectUtils.isNullOrUndefined(orderBy)) {\n params.sort = `${orderDescending ? \"-\" : \"\"}${orderBy}`;\n }\n if (!ObjectUtils.isNullOrUndefined(filter)) {\n params.filter = filter;\n }\n return params;\n }\n\n protected getPromise(url: string, options?: HttpRequestOptions, body?: any) {\n options = this.makeOptions(options, \"GET\", body);\n return this.toPromise(url, options);\n }\n\n protected deletePromise(url: string, options?: HttpRequestOptions, body?: any) {\n options = this.makeOptions(options, \"DELETE\", body);\n return this.toPromise(url, options);\n }\n\n protected postPromise(url: string, body?: any, options?: HttpRequestOptions) {\n options = this.makeOptions(options, \"POST\", body);\n return this.toPromise(url, options);\n }\n\n protected putPromise(url: string, body?: any, options?: HttpRequestOptions) {\n options = this.makeOptions(options, \"PUT\", body);\n return this.toPromise(url, options);\n }\n\n protected patchPromise(url: string, body?: any, options?: HttpRequestOptions) {\n options = this.makeOptions(options, \"PATCH\", body);\n return this.toPromise(url, options);\n }\n\n protected uploadPromise(url: string, body: UploadData, listener?: ProgressListener, options?: HttpRequestOptions) {\n const headers: any = {};\n if (body instanceof Blob) {\n headers[\"Content-Type\"] = \"application/octet-stream\";\n }\n options = this.makeOptions(Object.assign({\n headers: headers,\n reportProgress: true\n }, options), \"POST\", body);\n return this.toPromise(url, options, listener);\n }\n\n protected listPromise(url: string, options?: HttpClientRequestOptions): Promise<IPaginationData> {\n return new Promise<IPaginationData>(resolve => {\n this.getPromise(url, options).then(data => {\n if (ObjectUtils.isArray(data)) {\n resolve({\n total: data.length,\n items: data,\n meta: {}\n });\n return;\n }\n resolve({\n total: data.meta?.total || data?.total || data.items?.length || 0,\n items: data.items || [],\n meta: data.meta || {}\n });\n }, response => {\n if (response.status == 0 || response.status == 301) {\n resolve({\n total: 1,\n items: [{\n id: null,\n label: \"Not implemented.\"\n }],\n meta: {}\n });\n return true;\n }\n resolve({\n total: 0,\n items: [],\n meta: {}\n });\n return false;\n });\n });\n }\n\n protected handleUnauthorizedError(absoluteUrl: string, options: HttpClientRequestOptions, reject: () => void): void {\n reject();\n if (BaseHttpService.failedRequests.length > 1 || this.universal.isServer) return;\n console.log(\"User auth error\", absoluteUrl, options);\n }\n\n protected toastWarning(message: string, issueContext: IIssueContext, reason: any, options: HttpClientRequestOptions): void {\n this.toaster.warning(message, {issueContext, reason, options});\n }\n\n protected toastError(message: string, issueContext: IIssueContext, reason: any, options: HttpClientRequestOptions): void {\n this.toaster.warning(message, {issueContext, reason, options});\n }\n\n protected makeCacheKey(url: string, read: string, options: HttpRequestOptions): string {\n const headers = this.bag.convertHeaders(options?.headers);\n const params = this.bag.convertParams(options?.params);\n const hash = md5({url, read, options: {\n ...options,\n headers,\n params\n }});\n return `request-${hash}`;\n }\n\n protected toPromise(url: string, requestOptions: HttpRequestOptions, listener?: ProgressListener): Promise<any> {\n const {cache, read, ...options} = requestOptions;\n const absoluteUrl = this.absoluteUrl(url, options);\n const cacheKey = this.makeCacheKey(absoluteUrl, read, requestOptions);\n const issueContext: IIssueContext = {url: absoluteUrl};\n return this.caches.use(`${cacheKey}-${read}`, async () => {\n const response = await this.caches.use(cacheKey, () => new HttpPromise(response => {\n if (!response) {\n if (this.universal.isServer) return;\n console.log(\"You may not need a reject Handler for this request!\", this.name, url, options);\n return;\n }\n const reason = response.error || {};\n if (response.status == 0 || response.status == 301) {\n this.toastWarning(`${url} endpoint is not implemented! Click here, to quickly create an issue.`, issueContext, reason, options);\n return;\n }\n const regex = /((E11000 duplicate key error collection: (.)+\\.)|(_1 dup key:(.)+))/g;\n const message = ObjectUtils.isObject(reason.message)\n ? String(reason.message?.message || \"Unknown error\")\n : String(reason.message || \"Unknown error\");\n if (message && regex.test(message)) {\n this.toastError(\"message.duplicate-key.error.\" + message.replace(regex, \"\").replace(\" index: \", \"-\"), issueContext, reason, options);\n return;\n }\n this.toastWarning(`${url} endpoint error is not handled properly! Click here, to quickly create an issue.`, issueContext, reason, options);\n }, (resolve, reject) => {\n const request = this.client.request(options.method, absoluteUrl, options);\n const finalRequest = ObjectUtils.isNumber(options.timeout) && options.timeout > 0\n ? request.pipe(timeout(options.timeout)) : request;\n finalRequest.subscribe({\n next: event => {\n if (options.reportProgress && event?.type === HttpEventType.UploadProgress) {\n const progress = {\n percentage: MathUtils.round(event.loaded / event.total, 2, 0.01),\n loaded: event.loaded,\n total: event.total\n };\n if (listener) {\n listener(progress);\n }\n return;\n }\n resolve(event);\n const headers = options.headers as HttpHeaders;\n const authKey = \"Authorization\";\n // If we use token auth\n if (this.client.renewTokenFunc && headers.has(authKey)) {\n const currentTime = Date.now() + 60_000;\n const userTokenTime = this.getUserTokenTime() || currentTime;\n // And the stored token expiration time is almost ended\n if (currentTime >= userTokenTime) {\n this.client.renewTokenFunc();\n }\n }\n },\n error: (response: HttpErrorResponse | TimeoutError) => {\n if (response instanceof TimeoutError || response.status == 0 || response.status == 301) {\n reject(response);\n return;\n }\n const headers = options.headers as HttpHeaders;\n const authKey = \"Authorization\";\n // If an authorization header exists, and we still have an Unauthorized response prompt the user to log in again\n if (headers.has(authKey) && response.status == 401) {\n const pushed = this.pushFailedRequest(url, options, () => {\n options.headers = this.makeHeaders(options.originalHeaders);\n this.toPromise(url, options, listener).then(resolve, reject);\n });\n if (pushed) {\n this.handleUnauthorizedError(absoluteUrl, options, () => reject(response));\n return;\n }\n }\n reject(response);\n }\n });\n }), cache);\n return this.parseResponse(response, url, options, read);\n }, cache);\n }\n\n protected getUserTokenTime(): number {\n return this.storage.get(\"userTokenTime\");\n }\n\n protected pushFailedRequest(url: string, options: HttpClientRequestOptions, req: () => void): boolean {\n if (url.indexOf(\"token\") >= 0 || url === \"user\") return false;\n BaseHttpService.failedRequests.push(req);\n return true;\n }\n\n protected checkHeaders(headers: any): boolean {\n if (!headers || !headers.cookie || !headers.referer || !headers.host) {\n return false;\n }\n return headers.referer.indexOf(headers.host) >= 0;\n }\n\n protected makeOptions(options?: HttpRequestOptions, method: string = \"GET\", body?: any, cache?: Observable<any>): HttpClientRequestOptions {\n // Set base options\n options = options ? {...options} : {};\n options.cache = options.cache || cache || this.caches.ignore;\n options.method = method;\n options.observe = options.observe || \"body\";\n options.originalHeaders = options.originalHeaders || (options.headers as HttpRequestHeaders) || {};\n options.withCredentials = ObjectUtils.isBoolean(options.withCredentials) ? options.withCredentials : this.withCredentials;\n options.body = body || {};\n // Set cookies from server side request\n const headers = !this.request ? null : this.request.headers;\n if (this.checkHeaders(headers)) {\n options.headers[\"Cookie\"] = headers.cookie;\n }\n options.headers = this.makeHeaders(options);\n options.params = this.makeParams(options);\n return options;\n }\n\n protected makeHeaders(options: HttpClientRequestOptions): HttpHeaders {\n return this.bag.makeHeaders(options?.headers || {});\n }\n\n protected makeParams(options: HttpClientRequestOptions): HttpParams {\n return this.bag.makeParams(options?.params || {});\n }\n\n protected parseResponse(response: any, url: string, options: HttpClientRequestOptions, read: string): any {\n if (!read) return response;\n if (response instanceof HttpResponse) {\n response = response.body;\n }\n return ObjectUtils.isObject(response) ? response[read] : response;\n }\n\n protected parseUrl(url: string): string {\n return this.url(url).replace(/((?!:).\\/)\\//g, \"$1\");\n }\n\n protected absoluteUrl(url: string, options: HttpClientRequestOptions): string {\n return this.parseUrl(url);\n }\n\n protected expressRequestUrl(url: string): string {\n const req = this.request;\n if (!req || !url || url.startsWith(\"http\") || url.startsWith(\"//\")) return url;\n const separator = url.startsWith(\"/\") ? \"\" : \"/\";\n return `${req.protocol}://${req.get(\"host\")}${separator}${url}`;\n }\n}\n\ntype PromiseExecutor = (resolve: (value?: any | PromiseLike<any>) => void, reject: (reason?: any) => void) => void;\n\nclass HttpPromise extends Promise<any> {\n\n protected rejectHandler: (reason?: HttpErrorResponse) => void;\n protected hasRejectHandler: boolean;\n protected attachCount: number;\n protected runCount: number;\n\n constructor(rejectHandler: (reason?: HttpErrorResponse) => void, executor: PromiseExecutor) {\n super(executor);\n this.rejectHandler = rejectHandler;\n this.attachCount = 0;\n this.runCount = 0;\n }\n\n then<TResult1, TResult2>(onFulfilled?: ((value: any) => (PromiseLike<TResult1> | TResult1)) | null | undefined,\n onRejected?: ((reason: HttpErrorResponse) => (PromiseLike<TResult2> | TResult2)) | null | undefined): Promise<TResult1 | TResult2> {\n this.attachCount++;\n return super.then(value => {\n this.runCount++;\n return onFulfilled ? onFulfilled(value) : null;\n }, (reason: HttpErrorResponse) => {\n const result: any = onRejected ? onRejected(reason) : null;\n this.hasRejectHandler = this.hasRejectHandler || (onRejected && result !== false);\n this.runCount++;\n this.rejectHandler(this.runCount == this.attachCount && !this.hasRejectHandler ? reason : null);\n return result;\n });\n }\n\n catch<TResult = never>(onRejected?: ((reason: HttpErrorResponse) => (PromiseLike<TResult> | TResult)) | null | undefined): Promise<any | TResult> {\n return this.then(null, onRejected);\n }\n}\n","import {Injectable} from \"@angular/core\";\n\nimport {\n HttpRequestOptions,\n HttpRequestQuery,\n IApiService,\n IPaginationData,\n ProgressListener,\n UploadData\n} from \"../common-types\";\nimport {BaseHttpService} from \"./base-http.service\";\nimport {SOCKET_IO_PATH} from \"../tokens\";\n\n@Injectable()\nexport class ApiService extends BaseHttpService implements IApiService {\n\n get name(): string {\n return \"api\";\n }\n\n url(url: string): string {\n const config = this.configs.config;\n const baseUrl = this.expressRequestUrl(`${config.apiUrl}${url}`);\n const socket = this.injector.get(SOCKET_IO_PATH);\n if (url == \"api-docs\" || url == socket) {\n return baseUrl.replace(\"/api/\", \"/\");\n }\n return baseUrl;\n }\n\n get(url: string, options?: HttpRequestOptions, body?: any): Promise<any> {\n return this.getPromise(url, options, body);\n }\n\n delete(url: string, options?: HttpRequestOptions, body?: any): Promise<any> {\n return this.deletePromise(url, options, body);\n }\n\n post(url: string, body?: any, options?: HttpRequestOptions): Promise<any> {\n return this.postPromise(url, body, options);\n }\n\n put(url: string, body?: any, options?: HttpRequestOptions): Promise<any> {\n return this.putPromise(url, body, options);\n }\n\n patch(url: string, body?: any, options?: HttpRequestOptions): Promise<any> {\n return this.patchPromise(url, body, options);\n }\n\n upload(url: string, body: UploadData, listener?: ProgressListener, options?: HttpRequestOptions): Promise<any> {\n return this.uploadPromise(url, body, listener, options);\n }\n\n list(url: string, params: HttpRequestQuery, options?: HttpRequestOptions): Promise<IPaginationData> {\n options = options || {};\n options.params = Object.assign(options.params || {}, params || {});\n return this.listPromise(url, options);\n }\n}\n","import {IAuthService} from \"../common-types\";\n\nexport class StaticAuthService implements IAuthService {\n\n get isAuthenticated() {\n return false;\n }\n\n checkAuthenticated(): Promise<boolean> {\n return Promise.resolve(this.isAuthenticated);\n }\n}\n","import {Inject, Injectable, Injector, isDevMode, Optional} from \"@angular/core\";\nimport JSON5 from \"json5\";\nimport {UniversalService} from \"./universal.service\";\nimport {IConfigService, IConfiguration} from \"../common-types\";\nimport {StringUtils} from \"../utils/string.utils\";\nimport {APP_BASE_URL, BASE_CONFIG, ROOT_ELEMENT, SCRIPT_PARAMS} from \"../tokens\";\nimport {BaseHttpClient} from \"./base-http.client\";\n\n@Injectable()\nexport class ConfigService implements IConfigService {\n\n protected baseConfig: IConfiguration;\n protected loadedConfig: IConfiguration;\n protected scriptParameters: any;\n protected loader: Promise<IConfiguration>;\n protected readonly loaderFunc: () => Promise<IConfiguration>;\n\n get load(): () => Promise<IConfiguration> {\n return this.loaderFunc;\n }\n\n get config(): IConfiguration {\n return this.loadedConfig;\n }\n\n get configUrl(): string {\n return `${this.loadedConfig.baseUrl}config/config.json`;\n }\n\n constructor(readonly http: BaseHttpClient,\n readonly universal: UniversalService,\n readonly injector: Injector,\n @Inject(ROOT_ELEMENT) readonly rootElement: HTMLElement,\n @Inject(APP_BASE_URL) readonly baseUrl: string,\n @Optional() @Inject(BASE_CONFIG) baseConfig: IConfiguration = null,\n @Optional() @Inject(SCRIPT_PARAMS) scriptParams: any = null) {\n for (const key in []) {\n Object.defineProperty(Array.prototype, key, {\n enumerable: false\n });\n }\n this.baseConfig = baseConfig || {};\n this.loadedConfig = Object.assign(\n !this.baseUrl ? {} : {baseUrl: this.baseUrl, baseDomain: StringUtils.parseDomain(this.baseUrl)},\n this.baseConfig\n );\n this.scriptParameters = scriptParams || {};\n this.loaderFunc = () => {\n this.loader = this.loader || new Promise<any>((resolve, reject) => {\n this.loadJson().then(config => {\n this.loadedConfig = config = Object.assign(this.loadedConfig, config);\n this.prepareConfig(config).then(c => {\n this.loadedConfig = c;\n c.baseUrl = c.baseUrl || \"/\";\n resolve(c);\n });\n }, reject);\n });\n return this.loader;\n };\n this.initService();\n }\n\n protected initService(): void {\n\n }\n\n protected async loadJson(): Promise<IConfiguration> {\n if (this.universal.isServer) {\n return Promise.resolve(this.loadedConfig);\n }\n const configUrl = this.configUrl;\n try {\n const config5 = await this.http.get(isDevMode() ? `${configUrl}5` : configUrl, {responseType: \"text\"}).toPromise();\n return JSON5.parse(config5);\n } catch (e) {\n try {\n const config = await this.http.get(configUrl).toPromise();\n console.log(`Can't parse json5 config: ${e}`);\n return config;\n } catch (e) {\n throw new Error(`Config file not found at: ${configUrl}`);\n }\n }\n }\n\n protected prepareConfig(config: IConfiguration): Promise<IConfiguration> {\n return Promise.resolve(config);\n }\n\n cloneRootElem(): any {\n if (this.rootElement instanceof HTMLElement) {\n const clone = this.rootElement.cloneNode(true) as HTMLElement\n const children = Array.from(clone.childNodes);\n children.forEach(child => {\n if (child instanceof HTMLElement) {\n child.remove();\n }\n });\n return clone;\n }\n return this.rootElement;\n }\n\n prepareUrl(url: string, ending: string): string {\n const project = !this.loadedConfig ? \"\" : this.loadedConfig.project;\n const needsProtocol = url?.startsWith(\"//\") ?? false;\n url = !needsProtocol && url?.startsWith(\"/\") ? this.loadedConfig.baseDomain + url.substr(1) : url || \"\";\n url = `${url.replace(/\\/+$/, \"\")}${ending}`.replace(\"[project]\", project);\n return this.universal.isServer && needsProtocol ? `http:${url}` : url;\n }\n\n getConfigValue(key: string): any {\n return this.loadedConfig[key];\n }\n\n getQueryParameter(name: string, url?: string): string {\n url = url || (this.universal.isBrowser ? window.location.href : \"\");\n name = name.replace(/[\\[\\]]/g, \"\\\\$&\");\n const regex = new RegExp(\"[?&]\" + name + \"(=([^&#]*)|&|#|$)\"),\n results = regex.exec(url);\n if (!results) return null;\n if (!results[2]) return \"\";\n return decodeURIComponent(results[2].replace(/\\+/g, \" \"));\n }\n}\n","import {Inject, Injectable} from \"@angular/core\";\nimport {\n IConfirmMessageConfig,\n IConfirmDialogConfig,\n IDialogConfig,\n IDialogService,\n IToasterService\n} from \"../common-types\";\nimport {TOASTER_SERVICE} from \"../tokens\";\n\n@Injectable()\nexport class BaseDialogService<DR = any> implements IDialogService<DR> {\n\n constructor(@Inject(TOASTER_SERVICE) readonly toaster: IToasterService) {\n }\n\n dialog(config: IDialogConfig): DR {\n if (!config) return null;\n const button = !config.buttons ? null : config.buttons[0];\n if (!button) return null;\n this.toaster.handleAsyncMethod(button.method);\n return null;\n }\n\n confirm(config: IConfirmDialogConfig): DR {\n return this.dialog({\n id: config.id,\n title: config.title,\n message: config.message,\n messageContext: config.messageContext,\n size: config.size,\n buttons: [\n {\n text: config.okText,\n classes: config.okClasses,\n method: config.method\n },\n {\n text: config.cancelText || \"button.cancel\",\n classes: config.cancelClasses || \"btn-default\",\n method: config.cancelMethod\n }\n ],\n onClose: config.cancelMethod,\n templates: config.templates\n });\n }\n\n confirmMsg(message: string, config?: IConfirmMessageConfig): Promise<boolean> {\n return new Promise<boolean>(resolve => {\n this.confirm({\n ...(config || {}),\n message,\n method: async () => {\n resolve(true);\n return null;\n },\n cancelMethod: async () => {\n resolve(false);\n return null;\n }\n })\n });\n }\n}\n","import {ErrorHandler, Injectable, Injector} from \"@angular/core\";\nimport {UniversalService} from \"./universal.service\";\nimport {ErrorHandlerCallback, IToasterService} from \"../common-types\";\nimport {ERROR_HANDLER, TOASTER_SERVICE} from \"../tokens\";\nimport {md5} from \"../utils/crypto.utils\";\n\n@Injectable()\nexport class ErrorHandlerService extends ErrorHandler {\n\n private toaster: IToasterService;\n private universal: UniversalService;\n private errorCb: ErrorHandlerCallback;\n private readonly errorMap: any;\n\n constructor(readonly injector: Injector) {\n super();\n this.errorMap = {};\n }\n\n handleError(error: Error): void {\n this.universal = this.universal || this.injector.get(UniversalService);\n const date = new Date();\n try {\n this.errorCb = this.errorCb || this.injector.get(ERROR_HANDLER);\n this.errorCb(`[${date}]: ${error.message}\\n${error.stack}`);\n } catch (e) {\n if (!this.universal || this.universal.isServer) {\n console.error(`[${date}]: ${error.message}\\n${error.stack}`);\n return;\n }\n }\n if (!this.universal || this.universal.isServer) return;\n const key = md5(`${error.message} ${error.stack}`);\n if (this.errorMap[key] && this.errorMap[key].getTime() > date.getTime() - 5000) return;\n this.errorMap[key] = date;\n try {\n this.toaster = this.toaster || this.injector.get(TOASTER_SERVICE);\n this.toaster.error(`[${date}]: ${error.message}\\n${error.stack}`);\n } catch (e) {\n }\n console.error(`[${date}]: ${error.message}\\n${error.stack}`);\n }\n}\n","import {Inject, Injectable} from \"@angular/core\";\nimport {ILanguageService} from \"../common-types\";\nimport {ObjectUtils} from \"../utils/object.utils\";\nimport {EPSILON, MathUtils} from \"../utils/math.utils\";\nimport {LANGUAGE_SERVICE} from \"../tokens\";\n\n@Injectable()\nexport class FormatterService {\n\n get defaultPrecision(): number {\n return 2;\n }\n\n get defaultNumberFormat(): string {\n return `num + ' mm'`;\n }\n\n get defaultDivider(): number {\n return 1;\n }\n\n constructor(@Inject(LANGUAGE_SERVICE) public language: ILanguageService) {\n\n }\n\n roundNumber(value: number, precision?: number, divider?: number): number {\n return MathUtils.round(value, this.getPrecision(precision), divider || this.defaultDivider);\n }\n\n formatNumber(value: number | string, format?: string, precision?: number, divider?: number, minDigits?: number): string {\n precision = this.getPrecision(precision);\n minDigits = minDigits ?? precision;\n divider = divider || this.defaultDivider;\n value = (ObjectUtils.isNumber(value) ? <number>value : parseFloat(<string>value) ?? 0) / divider;\n const rounded = isNaN(value) || Math.abs(value) < EPSILON ? 0 : MathUtils.round(value, 10);\n const num = rounded.toLocaleString(this.language.currentLanguage, {\n minimumFractionDigits: minDigits,\n maximumFractionDigits: precision,\n useGrouping: false\n });\n return ObjectUtils.evaluate(format || this.defaultNumberFormat, {num});\n }\n\n formatMillimeter(value: number, precision?: number, divider?: number): string {\n return this.formatNumber(value, `num + ' mm'`, precision, divider);\n }\n\n protected getPrecision(precision: number): number {\n return ObjectUtils.isNumber(precision) ? precision : this.defaultPrecision;\n }\n}\n","import {EventEmitter, Injectable, TemplateRef} from \"@angular/core\";\nimport {ObjectUtils} from \"../utils/object.utils\";\nimport {GlobalComponentModifier} from \"../common-types\";\n\n@Injectable()\nexport class GlobalTemplateService {\n\n readonly templatesUpdated: EventEmitter<void>;\n\n protected globalTemplates: { [id: string]: TemplateRef<any> };\n protected componentModifiers: { [id: string]: GlobalComponentModifier };\n\n constructor() {\n this.templatesUpdated = new EventEmitter<any>();\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.emit();\n }\n\n remove(id: string): void {\n delete this.globalTemplates[id];\n this.templatesUpdated.emit();\n }\n\n addComponentModifier(id: string, modifier: GlobalComponentModifier): void {\n this.componentModifiers[id] = modifier;\n }\n}\n","import {Injectable} from \"@angular/core\";\n\nimport {HttpClientRequestOptions, IConfiguration, SvgDefinition, SvgSourceModifier} from \"../common-types\";\nimport {BaseHttpService} from \"./base-http.service\";\nimport {ObjectUtils} from \"../utils/object.utils\";\nimport {svgToDataUri} from \"../utils/string.utils\";\n\n@Injectable()\nexport class LocalHttpService extends BaseHttpService {\n\n protected svgs: Record<string, SvgDefinition>;\n protected images: Record<string, Promise<HTMLImageElement>>;\n\n get name(): string {\n return \"local-http\";\n }\n\n get config(): IConfiguration {\n return this.configs.config;\n }\n\n protected get withCredentials(): boolean {\n return false;\n }\n\n protected initService(): void {\n super.initService();\n this.svgs = {};\n this.images = {};\n }\n\n url(url: string): string {\n if (!url) return url;\n const config = this.config;\n const baseUrl = config.cdnUrl || config.baseUrl || \"\";\n return url.startsWith(\"data:\") || url.startsWith(\"http\") || url.startsWith(\"//\")\n ? url\n : `${baseUrl}${url}`;\n }\n\n get(url: string, options?: HttpClientRequestOptions, body?: any): Promise<any> {\n options = this.makeOptions(options, \"GET\", body, this.caches.permanent);\n return this.toPromise(url, options);\n }\n\n getImage(url: string): Promise<HTMLImageElement> {\n if (this.universal.isServer)\n return Promise.resolve(null);\n if (!url)\n return Promise.resolve(new Image());\n\n this.images[url] = this.images[url] || new Promise<HTMLImageElement>((resolve, reject) => {\n const image = new Image();\n image.crossOrigin = \"Anonymous\";\n image.src = this.url(url);\n image.onload = () => resolve(image);\n image.onerror = error => {\n console.warn(error);\n reject(`Can't load image from url: ${url}`);\n };\n });\n\n return this.images[url];\n }\n\n svgUrlFromSource(sourceStr: string, modifier?: SvgSourceModifier): string {\n if (!sourceStr.startsWith(\"<svg\")) {\n throw new Error(`Src is possibly not an svg.. '${sourceStr.substring(0, 10)}'`);\n }\n if (!this.svgs[sourceStr]) {\n const parser = document.createElement(\"div\");\n parser.innerHTML = sourceStr;\n const source = parser.querySelector(\"svg\");\n const width = parseFloat(source.getAttribute(\"width\"));\n const height = parseFloat(source.getAttribute(\"height\"));\n const vb = source.getAttribute(\"viewBox\").split(\" \").map(parseFloat);\n this.svgs[sourceStr] = {\n source,\n width: width || vb[2],\n height: height || vb[3],\n };\n }\n const def = this.svgs[sourceStr];\n const sourceClone = def.source.cloneNode(true) as SVGSVGElement;\n const svgModified = ObjectUtils.isFunction(modifier) ? modifier(sourceClone, def.width, def.height) : def.source.outerHTML;\n return svgToDataUri(svgModified)\n }\n\n svgFromSource(sourceStr: string, modifier?: SvgSourceModifier): Promise<HTMLImageElement> {\n return this.getImage(this.svgUrlFromSource(sourceStr, modifier));\n }\n\n async getSvgUrl(url: string, modifier?: SvgSourceModifier): Promise<string> {\n try {\n const svgSrc = await this.get(url, {responseType: \"text\"}) as string;\n return this.svgUrlFromSource(svgSrc, modifier);\n } catch (e) {\n throw new Error(`Can't get svg from url: ${url}, Error: ${e?.message}`);\n }\n }\n\n async getSvgImage(url: string, modifier?: SvgSourceModifier): Promise<HTMLImageElement> {\n try {\n const svgSrc = await this.get(url, {responseType: \"text\"}) as string;\n return await this.svgFromSource(svgSrc, modifier);\n } catch (e) {\n throw new Error(`Can't get svg from url: ${url}, Error: ${e?.message}`);\n }\n }\n}\n","import {EventEmitter, Injectable} from \"@angular/core\";\nimport {IIconService, SvgSourceModifier} from \"../common-types\";\nimport {LocalHttpService} from \"./local-http.service\";\n\ndeclare const icons: {\n [icon: string]: string;\n};\n\n@Injectable()\nexport class IconService implements IIconService {\n\n get isDisabled(): boolean {\n return this.disabled;\n }\n\n set isDisabled(value: boolean) {\n this.disabled = value;\n this.iconsLoaded.emit();\n }\n\n public readonly iconsLoaded: EventEmitter<any>;\n\n protected disabled: boolean;\n\n constructor(readonly http: LocalHttpService) {\n this.iconsLoaded = new EventEmitter<any>();\n this.disabled = false;\n }\n\n getIcon(icon: string, activeIcon: string, active: boolean): Promise<string> {\n icon = typeof icons == \"undefined\" ? icon : (icons[icon] || icon);\n activeIcon = typeof icons == \"undefined\" ? activeIcon : (icons[activeIcon] || icon);\n return Promise.resolve(active ? activeIcon : icon);\n }\n\n async getIconUrl(icon: string, modifier?: SvgSourceModifier): Promise<string> {\n const src = await this.getIcon(icon, icon, false);\n return this.http.svgUrlFromSource(src, modifier);\n }\n\n async getIconImage(icon: string, modifier?: SvgSourceModifier): Promise<HTMLImageElement> {\n const src = await this.getIcon(icon, icon, false);\n return this.http.svgFromSource(src, modifier);\n }\n}\n","import {Inject, Injectable} from \"@angular/core\";\nimport {\n GlobalTranslations,\n IConfigService,\n IConfiguration,\n ILanguageService,\n IPromiseService,\n ITranslation,\n ITranslations\n} from \"../common-types\";\nimport {ObjectUtils} from \"../utils/object.utils\";\nimport {EventsService} from \"./events.service\";\nimport {StorageService} from \"./storage.service\";\nimport {UniversalService} from \"./universal.service\";\nimport {BaseHttpClient} from \"./base-http.client\";\nimport {HttpClient} from \"@angular/common/http\";\nimport {CONFIG_SERVICE, PROMISE_SERVICE} from \"../tokens\";\n\nconst emptyDict: ITranslations = {};\n\n@Injectable()\nexport class StaticLanguageService implements ILanguageService {\n\n get defaultLanguage(): string {\n return this.configs.getQueryParameter(\"lang\") || this.storage.get(\"language\", this.getDefaultLanguage());\n }\n\n get dictionary(): ITranslations {\n return this.mergedTranslations[this.currentLanguage] || emptyDict;\n }\n\n set dictionary(value: ITranslations) {\n this.setDictionary(this.currentLang, value);\n this.mergeTranslations();\n }\n\n get languages(): ReadonlyArray<string> {\n return this.languageList;\n }\n\n get currentLanguage(): string {\n return this.currentLang || this.defaultLanguage;\n }\n\n set currentLanguage(lang: string) {\n this.currentLang = lang;\n this.events.languageChanged.next(lang);\n }\n\n get editLanguage(): string {\n return this.editLang || this.currentLanguage;\n }\n\n set editLanguage(lang: string) {\n this.editLang = lang || this.currentLanguage;\n this.events.editLanguageChanged.next(this.editLang);\n }\n\n get enableTranslations(): boolean {\n return this.enableTrans;\n }\n\n set enableTranslations(value: boolean) {\n this.enableTrans = value;\n this.events.translationsEnabled.next(value);\n }\n\n get disableTranslations(): boolean {\n return !this.enableTranslations;\n }\n\n set disableTranslations(value: boolean) {\n this.enableTranslations = !value;\n }\n\n get httpClient(): HttpClient {\n return this.client;\n }\n\n get config(): IConfiguration {\n return this.configs.config;\n }\n\n get universal(): UniversalService {\n return this.storage.universal;\n }\n\n protected editLang: string;\n protected currentLang: string;\n protected enableTrans: boolean;\n protected languageList: string[];\n protected readonly translations: GlobalTranslations;\n protected overrideTranslations: GlobalTranslations;\n protected mergedTranslations: GlobalTranslations;\n\n constructor(@Inject(EventsService) readonly events: EventsService,\n @Inject(StorageService) readonly storage: StorageService,\n @Inject(CONFIG_SERVICE) readonly configs: IConfigService,\n @Inject(PROMISE_SERVICE) protected promises: IPromiseService,\n @Inject(BaseHttpClient) protected client: BaseHttpClient) {\n this.editLang = null;\n this.currentLang = null;\n this.enableTrans = true;\n this.languageList = [];\n this.translations = {\n none: {}\n };\n this.overrideTranslations = {\n none: {}\n };\n this.mergedTranslations = this.translations;\n this.initService();\n }\n\n protected initService(): void {\n\n }\n\n replaceLanguages(languages: string[]): void {\n languages = Array.isArray(languages) && languages.length > 0 ? languages : this.languageList;\n this.languageList = Array.from(new Set<string>(languages));\n this.languageList.forEach(lang => {\n this.translations[lang] = this.translations[lang] || emptyDict;\n });\n }\n\n addLanguages(languages: string[]): void {\n if (!Array.isArray(languages) || languages.length == 0) return;\n this.replaceLanguages(this.languageList.concat(languages));\n }\n\n setOverrideTranslations(translations: GlobalTranslations): void {\n if (ObjectUtils.isObject(translations)) {\n this.overrideTranslations = translations;\n this.mergeTranslations();\n return;\n }\n this.overrideTranslations = {};\n this.mergedTranslations = this.translations;\n }\n\n getTranslationSync(key: string, params: Object = null): string {\n key = String(key ?? \"\");\n if (!key) return \"\";\n try {\n const lowerKey = key.toLocaleLowerCase();\n const dict = this.dictionary;\n if (lowerKey in dict && this.enableTranslations) {\n return this.interpolate(dict[lowerKey], params);\n }\n return this.interpolate(key, params);\n } catch (reason) {\n console.warn(\"ERROR IN TRANSLATIONS\", reason);\n return key;\n }\n }\n\n async getTranslation(key: string, params: any = null): Promise<string> {\n await this.loadDictionary();\n return this.getTranslationSync(key, params);\n }\n\n getTranslations(...keys: string[]): Promise<ITranslations> {\n return this.promises.create<ITranslations>(resolve => {\n this.promises.all(keys.map(key => this.getTranslation(key))).then(translations => {\n resolve(keys.reduce((result, key, i) => {\n result[key] = translations[i];\n return result;\n }, {}));\n });\n });\n }\n\n getTranslationFromObject(translations: ITranslations, params?: any, lang?: string): string {\n lang = lang || this.currentLanguage;\n return this.interpolate(translations ? (translations[lang] || \"\") : \"\")\n }\n\n getTranslationFromArray(translations: ITranslation[], params?: any, lang?: string): string {\n lang = lang || this.currentLanguage;\n const translation = translations ? translations.find(t => t.lang == lang) : null;\n return this.interpolate(translation ? translation.translation : \"\", params);\n }\n\n protected async loadDictionary(): Promise<ITranslations> {\n return this.dictionary;\n }\n\n protected setDictionary(lang: string, dictionary: ITranslations): ITranslations {\n this.translations[lang] = Object.keys(dictionary || {}).reduce((res, key) => {\n res[key.toLocaleLowerCase()] = dictionary[key];\n return res;\n }, {} as ITranslations);\n return this.translations[lang];\n }\n\n protected interpolate(expr: string | Function, params?: Object): string {\n if (typeof expr === \"string\") {\n return this.interpolateString(expr, params);\n }\n if (typeof expr === \"function\") {\n return expr(params);\n }\n return expr as string;\n }\n\n protected interpolateString(expr: string, params?: Object) {\n if (!expr || !params) return expr;\n return expr.replace(/{{\\s?([^{}\\s]*)\\s?}}/g, (substring: string, b: string) => {\n const r = ObjectUtils.getValue(params, b, \"\");\n return ObjectUtils.isDefined(r) ? r : substring;\n });\n }\n\n protected getDefaultLanguage(): string {\n if (!this.universal.isBrowser || typeof window.navigator === \"undefined\") {\n return \"de\";\n }\n let browserLang: string = (window.navigator.languages ? window.navigator.languages[0] : null)\n || window.navigator.language || window.navigator[\"browserLanguage\"] || window.navigator[\"userLanguage\"] || null;\n if (!browserLang) return browserLang;\n\n [\"-\", \"_\"].forEach(splitter => {\n if (browserLang.indexOf(splitter) >= 0) {\n browserLang = browserLang.split(splitter)[0];\n }\n })\n return browserLang;\n }\n\n protected mergeTranslations(): void {\n const languages = new Set([\n ...Object.keys(this.translations),\n ...Object.keys(this.overrideTranslations)\n ]);\n this.mergedTranslations = Array.from(languages).reduce((merged, language) => {\n merged[language] = {\n ...(this.translations[language] || emptyDict),\n ...(this.overrideTranslations[language] || emptyDict),\n };\n return merged;\n }, {} as GlobalTranslations);\n }\n}\n","import {Injectable} from \"@angular/core\";\nimport {BehaviorSubject, combineLatest, firstValueFrom, Observable} from \"rxjs\";\nimport {map} from \"rxjs/operators\";\nimport {ILanguageSetting, ILanguageSettings, ITranslations} from \"../common-types\";\nimport {StaticLanguageService} from \"./static-language.service\";\n\n@Injectable()\nexport class LanguageService extends StaticLanguageService {\n\n protected translationRequests: Record<string, Promise<ITranslations>>;\n protected settingsPromise: Promise<ILanguageSettings>;\n protected languageSettings: BehaviorSubject<ILanguageSettings>;\n\n get currentLanguage(): string {\n return this.currentLang || this.defaultLanguage;\n }\n\n set currentLanguage(lang: string) {\n this.useLanguage(lang).then(() => {\n this.events.languageChanged.next(lang);\n });\n }\n\n get settings(): ILanguageSetting {\n const settings = this.languageSettings.value;\n return !settings ? {} : settings.settings[this.currentLanguage] || {};\n }\n\n get $settings(): Observable<ILanguageSetting> {\n this.loadSettings().then(s => this.languageSettings.next(s));\n return combineLatest([this.languageSettings, this.events.languageChanged]).pipe(map(([settings, lang]) => {\n return !settings ? {} : settings.settings[lang as string] || {};\n }));\n }\n\n protected initService(): void {\n super.initService();\n this.client.setParam(\"language\", \"de\");\n this.translationRequests = {};\n this.languageSettings = new BehaviorSubject<ILanguageSettings>(null);\n if (this.universal.isServer) return;\n window[\"setLanguage\"] = (lang: string) => {\n this.currentLanguage = lang;\n };\n }\n\n async initFromSettings(): Promise<any> {\n const defaultLanguage = this.defaultLanguage;\n const settings = await this.loadSettings();\n this.languageSettings.next(settings);\n const devLanguages = settings.devLanguages || [];\n this.languageList = (settings.languages || []).filter(lang => {\n const unavailable = settings.settings[lang]?.unavailable;\n if (unavailable) {\n const parts = unavailable.split(\"/\");\n const value = parts[0] || parts[1];\n const flags = parts.length > 1 ? parts[parts.length - 1] : \"g\";\n if (new RegExp(value, flags).test(this.config.baseDomain)) return false;\n }\n return devLanguages.indexOf(lang) < 0;\n });\n if (this.languageList.length === 0) {\n this.languageList = [defaultLanguage];\n }\n const lang = this.languages.indexOf(defaultLanguage) < 0 ? settings.defaultLanguage || this.languageList[0] : defaultLanguage;\n await this.useLanguage(lang);\n this.events.languageChanged.next(lang);\n }\n\n protected async useLanguage(lang: string): Promise<ITranslations> {\n lang = this.languages.indexOf(lang) < 0 ? this.languages[0] : lang;\n this.client.setParam(\"language\", lang);\n if (lang === this.currentLang) return this.dictionary;\n this.storage.set(\"language\", lang);\n this.currentLang = lang;\n return this.loadDictionary();\n }\n\n getDictionary(lang: string): Promise<ITranslations> {\n lang = this.languages.includes(lang) ? lang : this.currentLanguage;\n const ext = this.config.translationExt || ``;\n this.translationRequests[lang] = this.translationRequests[lang] || firstValueFrom(this.client.get<ITranslations>(`${this.config.translationUrl}${lang}${ext}`))\n .then(response => {\n response = response || {};\n const dictionary = Object.keys(response).reduce((result, key) => {\n result[key.toLocaleLowerCase()] = response[key];\n return result;\n }, {} as ITranslations);\n this.translations[lang] = dictionary;\n this.mergeTranslations();\n return dictionary;\n }).catch(error => {\n console.warn(\"Translation dictionary problem:\", error);\n return {};\n })\n return this.translationRequests[lang];\n }\n\n protected async loadDictionary(): Promise<ITranslations> {\n return this.getDictionary(this.currentLang);\n }\n\n protected loadSettings(): Promise<ILanguageSettings> {\n const ext = this.config.translationExt || ``;\n this.settingsPromise = this.settingsPromise || firstValueFrom(this.client.get<ILanguageSettings>(`${this.config.translationUrl}languageSettings${ext}`))\n .catch(error => {\n console.warn(\"Translation settings problem:\", error);\n return {\n languages: [\"de\", \"en\", \"hu\"],\n devLanguages: [],\n defaultLanguage: \"de\",\n settings: {\n de: {},\n hu: {},\n en: {}\n }\n };\n });\n return this.settingsPromise;\n }\n}\n","import {Inject, Injectable, Injector} from \"@angular/core\";\nimport {\n DynamicSchemaRef,\n IApiService,\n OpenApiSchema,\n OpenApiSchemaProperty, OpenApiSchemaRef,\n OpenApiSchemas, OpenApiSchemaSelector\n} from \"../common-types\";\nimport {API_SERVICE, SCHEMA_SELECTOR, STATIC_SCHEMAS} from \"../tokens\";\nimport {ObjectUtils} from \"../utils/object.utils\";\n\n@Injectable()\nexport class OpenApiService {\n\n private apiDocs: Promise<any>;\n private schemas: Promise<OpenApiSchemas>;\n private readonly dynamicSchemas: Record<string, OpenApiSchema>;\n\n constructor(@Inject(API_SERVICE) readonly api: IApiService,\n @Inject(SCHEMA_SELECTOR) protected readonly schemaSelector: OpenApiSchemaSelector,\n @Inject(STATIC_SCHEMAS) protected readonly staticSchemas: OpenApiSchemas,\n protected readonly injector: Injector) {\n this.dynamicSchemas = {};\n }\n\n isDynamicSchema(value: any): value is Required<DynamicSchemaRef> {\n if (!ObjectUtils.isObject(value)) {\n return false;\n }\n const definition = value as DynamicSchemaRef;\n return ObjectUtils.isStringWithValue(definition.dynamicSchema)\n || ObjectUtils.isStringWithValue(definition.dynamicSchemaUrl)\n || ObjectUtils.isStringWithValue(definition.dynamicSchemaName);\n }\n\n async getSchemas(): Promise<OpenApiSchemas> {\n const cache = this.api.cached(\"auth\");\n const apiDocs = this.api.get(\"api-docs\", {cache});\n if (apiDocs !== this.apiDocs) {\n this.apiDocs = apiDocs;\n this.schemas = apiDocs.then(res => {\n return {\n ...this.extractSchemas({definitions: this.staticSchemas}),\n ...this.extractSchemas(res)\n };\n });\n }\n return this.schemas;\n }\n\n async getReferences(property: OpenApiSchemaProperty, schema: OpenApiSchema): Promise<OpenApiSchema[]> {\n const props = !property.items ? [property] : [property, property.items];\n const references: Array<OpenApiSchemaRef | DynamicSchemaRef> = [];\n for (const prop of props) {\n if (this.isDynamicSchema(prop) || ObjectUtils.isStringWithValue(prop.$ref)) {\n references.push(prop);\n continue;\n }\n if (ObjectUtils.isArray(prop.allOf)) {\n prop.allOf\n .filter(ref => ObjectUtils.isStringWithValue(ref.$ref))\n .forEach(ref => references.push(ref));\n }\n if (ObjectUtils.isArray(prop.oneOf)) {\n prop.oneOf\n .filter(ref => ObjectUtils.isStringWithValue(ref.$ref))\n .forEach(ref => references.push(ref));\n }\n }\n\n return Promise.all(references.map(ref => {\n if (this.isDynamicSchema(ref)) {\n return this.getDynamicSchema(ref);\n }\n return this.getSchema((ref as OpenApiSchemaRef).$ref.split(\"/\").pop());\n }));\n }\n\n async getSchema(name: string): Promise<OpenApiSchema> {\n const schemas = await this.getSchemas();\n return this.schemaSelector(name, schemas, this.injector) || null;\n }\n\n protected async getDynamicSchema(definition: DynamicSchemaRef): Promise<OpenApiSchema> {\n const cache = this.api.cached(\"auth\");\n const dynamicDocs = await this.api.get(\n definition.dynamicSchema || definition.dynamicSchemaUrl || \"dynamic-schemas\",\n {cache}\n );\n const dynamicSchemas = this.extractSchemas(dynamicDocs);\n const dynamicSchema = dynamicSchemas[definition.dynamicSchemaName || \"DTO\"];\n delete dynamicSchemas[definition.dynamicSchemaName || \"DTO\"];\n Object.assign(this.dynamicSchemas, dynamicSchemas);\n return dynamicSchema;\n }\n\n protected extractSchemas(res: any): OpenApiSchemas {\n const schemas: OpenApiSchemas = Object.assign({}, res.components?.schemas || res.definitions || {});\n Object.values(schemas).forEach(schema => {\n Object.keys(schema.properties || {}).forEach(p => {\n schema.properties[p].id = p;\n });\n });\n return schemas;\n }\n}\n","import {Inject, Injectable} from \"@angular/core\";\nimport {AsyncMethod, ILanguageService, IToasterService, ToastType} from \"../common-types\";\nimport {LANGUAGE_SERVICE} from \"../tokens\";\n\n@Injectable()\nexport class BaseToasterService<T = any, P extends Record<string, any> = {}> implements IToasterService {\n\n protected colorMap: Record<ToastType, string>;\n\n constructor(@Inject(LANGUAGE_SERVICE) protected language: ILanguageService) {\n this.colorMap = {\n info: \"#2F96B4\",\n success: \"#51A351\",\n warning: \"#F89406\",\n error: \"#BD362F\"\n };\n }\n\n info(message: string, params?: P) {\n this.translate(message, params, \"info\");\n }\n\n success(message: string, params?: P) {\n this.translate(message, params, \"success\");\n }\n\n warning(message: string, params?: P){\n this.translate(message, params, \"warning\");\n }\n\n error(message: string, params?: P) {\n this.translate(message, params, \"error\");\n }\n\n infoPromised(message: string, params?: P) {\n return this.translatePromised(message, params, \"info\");\n }\n\n successPromised(message: string, params?: P) {\n return this.translatePromised(message, params, \"success\");\n }\n\n warningPromised(message: string, params?: P) {\n return this.translatePromised(message, params, \"warning\");\n }\n\n errorPromised(message: string, params?: P) {\n return this.translatePromised(message, params, \"error\");\n }\n\n handleAsyncMethod(method: AsyncMethod): void {\n if (!method) return;\n method().then(result => {\n if (result) {\n this.success(result.message, result.context);\n }\n }, reason => {\n if (!reason || !reason.message)\n throw new Error(\"Reason must implement IAsyncMessage interface\");\n this.error(reason.message, reason.context);\n });\n }\n\n protected translate(message: string, params: P, type: ToastType): void {\n this.language.getTranslation(message, params).then(str => {\n this.show(str, type, params);\n });\n }\n\n protected async translatePromised(message: string, params: P, type: ToastType): Promise<T> {\n const str = await this.language.getTranslation(message, params);\n return this.show(str, type, params);\n }\n\n protected show(message: string, type: ToastType, params: P): T | Promise<T> {\n console.log(message, `background: ${this.colorMap[type]}; color: #ffffff`, params);\n return null;\n }\n}\n","import {\n ApplicationRef,\n ComponentRef,\n createComponent,\n EnvironmentInjector,\n Inject,\n Injectable,\n Injector,\n NgModuleRef,\n Optional,\n Type,\n ViewRef\n} from \"@angular/core\";\nimport {Route, Router} from \"@angular/router\";\nimport {firstValueFrom, Observable} from \"rxjs\";\n\nimport {\n CssSelectorList,\n DynamicComponentLocation,\n DynamicModuleInfo\n} from \"../common-types\";\nimport {getComponentDef, parseSelector, selectorMatchesList} from \"../utils/misc\";\nimport {DYNAMIC_ENTRY_COMPONENTS, DYNAMIC_MODULE_INFO, ROOT_ELEMENT} from \"../tokens\";\n\ninterface LoadedRouterConfig {\n routes: Route[];\n injector: EnvironmentInjector | undefined;\n}\n\ninterface RouterConfigLoader {\n loadChildren(parentInjector: Injector, route: Route): Observable<LoadedRouterConfig>;\n}\n\ninterface NavigationTransitions {\n configLoader: RouterConfigLoader;\n}\n\n@Injectable()\nexport class ComponentLoaderService {\n\n private readonly typeMap: Array<[string, CssSelectorList, Type<any>]>;\n private readonly moduleRegistry: DynamicModuleInfo[];\n private readonly moduleMap: Map<string, Promise<EnvironmentInjector>>;\n\n get injector(): Injector {\n return this.ngModule.injector;\n }\n\n constructor(\n protected appRef: ApplicationRef,\n protected ngModule: NgModuleRef<any>,\n @Inject(ROOT_ELEMENT) protected rootElement: HTMLElement,\n @Optional() @Inject(DYNAMIC_MODULE_INFO) moduleRegistry: DynamicModuleInfo[]\n ) {\n this.typeMap = [];\n this.moduleRegistry = moduleRegistry || [];\n this.moduleMap = new Map();\n this.populateTypeMap(\"root\", this.ngModule.injector);\n }\n\n findComponentType<T>(selector: string, moduleId: string = \"root\"): Type<T> {\n const cssSelector = parseSelector(selector);\n const results = new Map<string, Type<any>>();\n for (const item of this.typeMap) {\n if (selectorMatchesList(item[1], cssSelector)) {\n results.set(item[0], item[2]);\n }\n }\n const keys = Array.from(results.keys());\n const result = results.get(moduleId) || results.get(keys[0]);\n if (!result) {\n throw new Error(`Cannot find component by selector: ${selector} in module '${moduleId}' nor in any other module`);\n }\n return result;\n }\n\n async getComponentType(location: DynamicComponentLocation): Promise<Type<any>> {\n\n // Find module info\n const moduleInfoList = this.moduleRegistry\n .filter(info => info.moduleId === location.moduleId);\n\n if (moduleInfoList.length > 1) {\n throw new Error(`Module with id '${location.moduleId}' has been declared more than once.`)\n }\n\n const moduleInfo = moduleInfoList[0];\n\n if (!moduleInfo) {\n throw new Error(`Module with id '${location.moduleId}' not found.`);\n }\n\n await this.loadModule(moduleInfo);\n\n return this.findComponentType(location.selector, location.moduleId);\n }\n\n createComponent(componentType: Type<any>, projectableNodes?: any[], injector?: Injector, split?: boolean): ComponentRef<any> {\n if (projectableNodes) {\n projectableNodes = split ? projectableNodes.filter(node => {\n return node && node.nodeType !== Node.COMMENT_NODE;\n }).map(node => [node]) : [projectableNodes];\n } else {\n projectableNodes = [];\n }\n return createComponent(componentType, {\n environmentInjector: this.appRef.injector,\n elementInjector: injector || this.injector,\n projectableNodes\n });\n }\n\n bootstrap<T>(componentType: Type<T>, rootSelectorOrNode?: string | any): ComponentRef<T> {\n rootSelectorOrNode = rootSelectorOrNode || this.rootElement;\n return !rootSelectorOrNode ? null : this.appRef.bootstrap(componentType, rootSelectorOrNode);\n }\n\n attachView(viewRef: ViewRef): void {\n if (!viewRef) return;\n this.appRef.attachView(viewRef);\n }\n\n detachView(viewRef: ViewRef): void {\n if (!viewRef) return;\n this.appRef.detachView(viewRef);\n try {\n viewRef.destroy();\n } catch (e) {\n console.log(`Can't destroy view, maybe it is already destroyed?`);\n }\n }\n\n private populateTypeMap(moduleId: string, injector: EnvironmentInjector): void {\n const entries = injector.get(DYNAMIC_ENTRY_COMPONENTS) || [];\n if (entries.length == 0) {\n console.warn(\"Entry components not found in the module\", injector);\n }\n entries.forEach(entryComponents => {\n entryComponents.components.forEach(type => {\n const def = getComponentDef(type);\n this.typeMap.push([entryComponents.moduleId || moduleId, def.selectors as any, type]);\n });\n });\n }\n\n private async loadModule(moduleInfo: DynamicModuleInfo): Promise<EnvironmentInjector> {\n if (this.moduleMap.has(moduleInfo.moduleId)) {\n return this.moduleMap.get(moduleInfo.moduleId);\n }\n this.moduleMap.set(moduleInfo.moduleId, new Promise(async resolve => {\n const router = this.injector.get(Router);\n const loader = (router[\"navigationTransitions\"] as NavigationTransitions).configLoader;\n const loaded = await firstValueFrom(loader.loadChildren(this.injector, {\n loadChildren: moduleInfo.loadChildren\n }));\n if (moduleInfo.routes) {\n router.resetConfig(moduleInfo.routes);\n if (moduleInfo.initialNavigation !== false) {\n router.initialNavigation();\n }\n }\n this.populateTypeMap(moduleInfo.moduleId, loaded.injector);\n resolve(loaded.injector);\n }));\n return this.moduleMap.get(moduleInfo.moduleId);\n }\n}\n","import {Inject, Injectable} from \"@angular/core\";\nimport {DefaultUrlSerializer, UrlSegment, UrlSegmentGroup, UrlTree} from \"@angular/router\";\nimport {ILanguageService} from \"../common-types\";\nimport {LANGUAGE_SERVICE} from \"../tokens\";\n\nexport interface IUrlDictionary {\n [key: string]: string\n}\n\n@Injectable()\nexport class TranslatedUrlSerializer extends DefaultUrlSerializer {\n\n protected cache: {[lang: string]: IUrlDictionary};\n\n constructor(@Inject(LANGUAGE_SERVICE) readonly language: ILanguageService) {\n super();\n this.cache = {};\n }\n\n serialize(tree: UrlTree): string {\n const copy = new UrlTree();\n const dictionary = this.getDictionary(true);\n copy.root = this.modifyTreeRecursive(tree.root, segment => {\n segment.path = dictionary[segment.path] || segment.path;\n });\n copy.queryParams = tree.queryParams;\n return super.serialize(copy);\n }\n\n parse(url: string): UrlTree {\n const tree = super.parse(url);\n const dictionary = this.getDictionary(false);\n tree.root = this.modifyTreeRecursive(tree.root, segment => {\n segment.path = dictionary[segment.path] || segment.path;\n });\n return tree;\n }\n\n getDictionary(serialize: boolean): IUrlDictionary {\n const method = serialize ? `serialize` : `parse`;\n const key = `${this.language.currentLanguage}-${method}`;\n if (!this.cache[key]) {\n const dict = this.language.dictionary;\n this.cache[key] = Object.keys(dict).reduce((res, key) => {\n if (!key.startsWith(\"route.\")) return res;\n const value = dict[key];\n key = key.replace(\"route.\", \"\");\n res[serialize ? key : value] = serialize ? value : key;\n return res;\n }, {});\n }\n return this.cache[key];\n }\n\n modifyTreeRecursive(segmentGroup: UrlSegmentGroup, cb: (segment: UrlSegment) => void): UrlSegmentGroup {\n if (!segmentGroup) return null;\n const childrenArr = [];\n const children = Object.keys(segmentGroup.children || {}).reduce((res, key) => {\n const child = this.modifyTreeRecursive(segmentGroup.children[key], cb);\n childrenArr.push(child);\n res[key] = child;\n return res;\n }, {});\n const newGroup = new UrlSegmentGroup(segmentGroup.segments.map(s => {\n s = new UrlSegment(s.path, Object.assign({}, s.parameters));\n cb(s);\n return s;\n }), children);\n childrenArr.forEach(c => {\n c.parent = newGroup;\n });\n return newGroup;\n }\n}\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\";\nimport {BehaviorSubject, Subscription} from \"rxjs\";\nimport {IApiService} from \"../common-types\";\nimport {ExtraHeaders, SocketClient, SocketData, SocketDataObj} from \"../utils/socket-client\";\nimport {LoaderUtils} from \"../utils/loader.utils\";\nimport {API_SERVICE, SOCKET_IO_PATH} from \"../tokens\";\nimport {EventsService} from \"./events.service\";\n\n@Injectable()\nexport class SocketService implements OnDestroy {\n\n protected client: SocketClient;\n protected userSub: Subscription;\n\n get status(): BehaviorSubject<boolean> {\n return this.client.status;\n }\n\n get id(): string {\n return this.client.id;\n }\n\n constructor(@Inject(API_SERVICE) readonly api: IApiService,\n @Inject(SOCKET_IO_PATH) protected ioPath: string,\n protected events: EventsService) {\n\n const url = this.api.url(this.ioPath);\n this.client = new SocketClient(url, async () => {\n let script: HTMLScriptElement = null;\n try {\n script = await LoaderUtils.loadScript(`${url}/socket.io.js`);\n } catch (e) {\n script?.remove();\n await LoaderUtils.loadScript(`https://cdn.socket.io/4.7.4/socket.io.min.js`);\n }\n return window[\"io\"];\n });\n }\n\n withAuth(extraHeaders: ExtraHeaders = {}): void {\n this.userSub = this.events.userChanged.subscribe(user => {\n if (user) {\n this.connect(extraHeaders);\n return;\n }\n this.disconnect();\n });\n if (this.events.isAuthenticated) {\n this.connect(extraHeaders);\n }\n }\n\n ngOnDestroy(): void {\n this.userSub?.unsubscribe();\n this.disconnect();\n }\n\n connect(extraHeaders: ExtraHeaders = {}): void {\n if (this.userSub && this.events.isAuthenticated) {\n extraHeaders = {\n ...(extraHeaders || {}),\n ...Object.entries(this.api.client.requestHeaders || {}).reduce((res, entry) => {\n res[entry[0]] = Array.isArray(entry[1]) ? entry[1].join(\", \") : entry[1];\n return res;\n }, {})\n };\n }\n this.client.connect(extraHeaders);\n }\n\n disconnect(): void {\n this.client.disconnect();\n }\n\n subscribe(event: string, cb: (value: SocketData) => void): Subscription {\n return this.client.subscribe(event, cb);\n }\n\n emit(event: string, content: SocketData): void {\n this.client.emit(event, content);\n }\n\n request(event: string, content: SocketDataObj): Promise<any> {\n return this.client.request(event, content);\n }\n}\n","import {KeyValue} from \"@angular/common\";\n\nexport type DragHandlerEvents = \"dragstart\" | \"dragenter\" | \"dragleave\" | \"drop\";\nexport type DragEventListener = (ev: DragEvent) => boolean | void;\n\nexport class DragDropHandler {\n\n protected static handlers: Map<HTMLElement, DragDropHandler>;\n\n protected readonly onDragStart: DragEventListener;\n protected readonly onDragEnter: DragEventListener;\n protected readonly onDragOver: DragEventListener;\n protected readonly onDragLeave: DragEventListener;\n protected readonly onDrop: DragEventListener;\n\n protected first: boolean;\n protected second: boolean;\n protected dropEffect: \"none\" | \"copy\" | \"link\" | \"move\";\n protected effectAllowed: \"none\" | \"copy\" | \"copyLink\" | \"copyMove\" | \"link\" | \"linkMove\" | \"move\" | \"all\" | \"uninitialized\";\n protected listeners: Array<KeyValue<DragHandlerEvents, DragEventListener>>;\n\n static get(el: HTMLElement) {\n if (DragDropHandler.handlers?.has(el)) {\n return DragDropHandler.handlers.get(el);\n }\n return new DragDropHandler(el);\n }\n\n protected static add(el: HTMLElement, inst: DragDropHandler) {\n DragDropHandler.handlers = DragDropHandler.handlers || new Map();\n DragDropHandler.handlers.set(el, inst);\n }\n\n protected constructor(protected el: HTMLElement) {\n this.first = false;\n this.second = false;\n this.listeners = [];\n this.onDragStart = ev => {\n this.fireEvent(\"dragstart\", ev);\n this.effectAllowed = ev.dataTransfer.effectAllowed;\n this.dropEffect = ev.dataTransfer.dropEffect;\n };\n this.onDragEnter = ev => {\n if (this.first) {\n this.second = true;\n } else {\n this.first = true;\n this.fireEvent(\"dragenter\", ev);\n this.effectAllowed = ev.dataTransfer.effectAllowed;\n this.dropEffect = ev.dataTransfer.dropEffect;\n }\n };\n this.onDragOver = ev => {\n ev.preventDefault();\n ev.dataTransfer.effectAllowed = this.effectAllowed;\n ev.dataTransfer.dropEffect = this.dropEffect;\n };\n this.onDragLeave = ev => {\n if (this.second) {\n this.second = false\n } else if (this.first) {\n this.first = false\n }\n if (!this.first && !this.second) {\n this.fireEvent(\"dragleave\", ev);\n }\n };\n this.onDrop = ev => {\n this.first = false;\n this.second = false;\n this.fireEvent(\"drop\", ev);\n };\n this.el.addEventListener(\"dragstart\", this.onDragStart);\n this.el.addEventListener(\"dragenter\", this.onDragEnter);\n this.el.addEventListener(\"dragover\", this.onDragOver);\n this.el.addEventListener(\"dragleave\", this.onDragLeave);\n this.el.addEventListener(\"drop\", this.onDrop);\n DragDropHandler.add(this.el, this);\n }\n\n addListener(key: DragHandlerEvents, value: DragEventListener): void {\n this.listeners = [\n ...this.listeners,\n {key, value}\n ];\n }\n\n removeListener(type: DragHandlerEvents, listener: DragEventListener): void {\n this.listeners = this.listeners.filter(entry => entry.key !== type || entry.value !== listener);\n if (this.listeners.length > 0) return;\n this.destroy();\n }\n\n protected fireEvent(type: DragHandlerEvents, ev: DragEvent): void {\n this.listeners.forEach(entry => {\n if (entry.key !== type) return;\n entry.value(ev);\n });\n }\n\n protected destroy(): void {\n this.el.removeEventListener(\"dragstart\", this.onDragStart);\n this.el.removeEventListener(\"dragenter\", this.onDragEnter);\n this.el.removeEventListener(\"dragover\", this.onDragOver);\n this.el.removeEventListener(\"dragleave\", this.onDragLeave);\n this.el.removeEventListener(\"drop\", this.onDrop);\n DragDropHandler.handlers?.delete(this.el);\n }\n}\n","import {ɵDomEventsPlugin as EventManagerPlugin} from \"@angular/platform-browser\";\nimport {Inject, Injectable} from \"@angular/core\";\nimport {DOCUMENT} from \"@angular/common\";\nimport {UniversalService} from \"../services/universal.service\";\nimport {DragDropHandler, DragHandlerEvents} from \"./drag-drop-handler\";\n\nexport function emptyRemove(): void {\n\n}\n\n@Injectable()\nexport class DragDropEventPlugin extends EventManagerPlugin {\n\n private static EVENT_NAMES: DragHandlerEvents[] = [\"dragstart\", \"dragenter\", \"dragleave\", \"drop\"];\n\n constructor(@Inject(DOCUMENT) doc: any, private universal: UniversalService) {\n super(doc);\n }\n\n supports(eventName: DragHandlerEvents) {\n return DragDropEventPlugin.EVENT_NAMES.includes(eventName);\n }\n\n addEventListener(element: HTMLElement, eventName: DragHandlerEvents, handler: Function): Function {\n const zone = this.manager.getZone();\n return zone.runOutsideAngular(() => {\n if (this.universal.isServer) return emptyRemove;\n const callback = (e: DragEvent) => {\n zone.run(() => handler(e));\n };\n const dd = DragDropHandler.get(element);\n dd.addListener(eventName, callback);\n return () => dd.removeListener(eventName, callback);\n });\n }\n}\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\";\nimport {Inject, Injectable} from \"@angular/core\";\nimport {DOCUMENT} from \"@angular/common\";\n\nimport {ResizeEventStrategy} from \"../common-types\";\nimport {TimerUtils} from \"../utils/timer.utils\";\nimport {UniversalService} from \"../services/universal.service\";\nimport {ResizeDetector} from \"./resize-detector\";\nimport {RESIZE_DELAY, RESIZE_STRATEGY} from \"../tokens\";\n\nfunction emptyRemove(): void {\n\n}\n\nfunction isWindow(el: any): boolean {\n return typeof window !== \"undefined\" && el === window;\n}\n\n@Injectable()\nexport class ResizeEventPlugin extends EventManagerPlugin {\n\n static readonly EVENT_NAME: string = \"resize\";\n\n readonly detector: ResizeDetector;\n\n constructor(@Inject(DOCUMENT) doc: any,\n @Inject(RESIZE_DELAY) protected resizeDelay: number,\n @Inject(RESIZE_STRATEGY) protected resizeStrategy: ResizeEventStrategy,\n readonly universal: UniversalService) {\n super(doc);\n this.detector = new ResizeDetector(resizeStrategy);\n }\n\n supports(eventName: string) {\n return eventName === ResizeEventPlugin.EVENT_NAME;\n }\n\n addEventListener(element: HTMLElement, eventName: string, handler: Function): Function {\n const zone = this.manager.getZone();\n return zone.runOutsideAngular(() => {\n if (this.universal.isServer)\n return emptyRemove;\n const timer = TimerUtils.createTimeout();\n const cb = (el: any) => {\n timer.set(() => {\n zone.run(() => handler(el));\n }, this.resizeDelay);\n };\n if (isWindow(element)) {\n element.addEventListener(eventName, cb);\n }\n else {\n this.detector.listenTo(element, cb);\n }\n return () => {\n try {\n if (isWindow(element)) {\n element.removeEventListener(eventName, cb);\n }\n else {\n this.detector.uninstall(element);\n }\n }\n catch (e) {\n } finally {\n timer.clear();\n }\n };\n });\n }\n}\n","import {ɵDomEventsPlugin as EventManagerPlugin} from \"@angular/platform-browser\";\nimport {Inject, Injectable} from \"@angular/core\";\nimport {DOCUMENT} from \"@angular/common\";\nimport {UniversalService} from \"../services/universal.service\";\n\nexport function emptyRemove(): void {\n\n}\n\n@Injectable()\nexport class ScrollEventPlugin extends EventManagerPlugin {\n\n private static EVENT_NAME: string = \"scroll\";\n\n constructor(@Inject(DOCUMENT) doc: any, private universal: UniversalService) {\n super(doc);\n }\n\n supports(eventName: string) {\n return eventName === ScrollEventPlugin.EVENT_NAME;\n }\n\n addEventListener(element: HTMLElement, eventName: string, handler: Function): Function {\n const zone = this.manager.getZone();\n return zone.runOutsideAngular(() => {\n if (this.universal.isServer) return emptyRemove;\n const callback = (e: Event) => {\n zone.run(() => handler(e));\n };\n element.addEventListener(eventName, callback);\n return () => element.removeEventListener(eventName, callback);\n });\n }\n}\n","import {Pipe, PipeTransform} from \"@angular/core\";\n\n@Pipe({\n standalone: false,\n name: \"chunk\"\n})\nexport class ChunkPipe implements PipeTransform {\n transform(items: any[], count: number): any[] {\n const result: any[] = [];\n let subResult: any[] = null;\n items.forEach((item, index) => {\n if (index % count == 0) {\n subResult = [];\n result.push(subResult);\n }\n subResult.push(item);\n });\n return result;\n }\n}\n","import {Pipe, PipeTransform} from \"@angular/core\";\nimport {ObjectUtils} from \"../utils/object.utils\";\n\nexport interface IEntry {\n key: string;\n value: any;\n index: number;\n}\n\nconst emptyEntries: IEntry[] = [];\n\n@Pipe({\n standalone: false,\n name: \"entries\"\n})\nexport class EntriesPipe implements PipeTransform {\n\n transform(value: any): IEntry[] {\n if (!value) return emptyEntries;\n const entries: IEntry[] = [];\n ObjectUtils.iterate(value, (val, key) => {\n entries.push({\n key: key,\n value: val,\n index: entries.length\n });\n });\n return entries;\n }\n}\n","import {Pipe, PipeTransform} from \"@angular/core\";\nimport {IExtraProperties} from \"../common-types\";\nimport {ObjectUtils} from \"../utils/object.utils\";\n\n@Pipe({\n standalone: false,\n name: \"extraItemProperties\"\n})\nexport class ExtraItemPropertiesPipe implements PipeTransform {\n transform(items: any[], properties: IExtraProperties, params: any = {}): any[] {\n const keys = Object.keys(properties);\n keys.forEach(key => {\n const value = properties[key];\n properties[key] = ObjectUtils.isFunction(value) ? value : (item, index, params) => {\n return ObjectUtils.evaluate(value, {\n item: item,\n index: index,\n params: params\n });\n };\n });\n return (items || []).map((item, index) => keys.reduce((result, key) => {\n result[key] = properties[key](item, index, params);\n return result;\n }, {...item}));\n }\n}\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: \"filter\"\n})\nexport class FilterPipe implements PipeTransform {\n transform(values: any, filter: any = defaultFilter, params: any = {}): any {\n const isObject = ObjectUtils.isObject(values);\n if (!isObject && !ObjectUtils.isArray(values)) return [];\n const filterFunc = ObjectUtils.isFunction(filter) ? filter : (value, key, params, values) => {\n const index = key;\n return ObjectUtils.evaluate(filter, {value, key, params, values, index});\n };\n if (isObject) {\n return Object.keys(values).filter(key => {\n return filterFunc(values[key], key, params, values);\n }).reduce((result, key) => {\n result[key] = values[key];\n return result;\n }, {})\n }\n return values.filter((value, key) => {\n return filterFunc(value, key, params, values);\n });\n }\n}\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: \"find\"\n})\nexport class FindPipe implements PipeTransform {\n transform(values: any[], filter: any = defaultFilter, params?: any): any {\n if (!ObjectUtils.isArray(values)) return [];\n params = params || {};\n if (ObjectUtils.isObject(params)) {\n params.values = values;\n }\n const filterFunc = ObjectUtils.isFunction(filter) ? filter : (value, index, params, values) => {\n return ObjectUtils.evaluate(filter, {value, index, params, values});\n };\n return values.find((value, index) => filterFunc(value, index, params, values));\n }\n}\n","import {Pipe, PipeTransform} from \"@angular/core\";\nimport {FormatterService} from \"../services/formatter.service\";\n\n@Pipe({\n standalone: false,\n name: \"formatNumber\"\n})\nexport class FormatNumberPipe implements PipeTransform {\n\n constructor(private formatter: FormatterService) {\n }\n\n transform(value: number, format?: string, precision?: number, divider?: number): string {\n return this.formatter.formatNumber(value, format, precision, divider);\n }\n}\n","import {Pipe, PipeTransform} from \"@angular/core\";\nimport {ObjectUtils} from \"../utils/object.utils\";\n\n@Pipe({\n standalone: false,\n name: \"getOffset\"\n})\nexport class GetOffsetPipe implements PipeTransform {\n transform(value: any, offset: any): any {\n return value ? (ObjectUtils.isNullOrUndefined(offset) ? value : value[offset]) : null;\n }\n}\n","import {Pipe, PipeTransform} from \"@angular/core\";\nimport {ObjectUtils} from \"../utils/object.utils\";\n\n@Pipe({\n standalone: false,\n name: \"getType\"\n})\nexport class GetTypePipe implements PipeTransform {\n transform(value: any): any {\n return ObjectUtils.getType(value);\n }\n}\n","import {Pipe, PipeTransform} from \"@angular/core\";\nimport {ObjectUtils} from \"../utils/object.utils\";\n\n@Pipe({\n standalone: false,\n name: \"getValue\"\n})\nexport class GetValuePipe implements PipeTransform {\n\n transform(value: any, path: string, defaultVal: any = \"\"): any {\n return !value ? value : ObjectUtils.getValue(value, path, defaultVal);\n }\n}\n","import {OnDestroy, OnInit, Pipe, PipeTransform, TemplateRef} from \"@angular/core\";\nimport {Subscription} from \"rxjs\";\nimport {GlobalTemplateService} from \"../services/global-template.service\";\n\n@Pipe({\n standalone: false,\n pure: false,\n name: \"globalTemplate\"\n})\nexport class GlobalTemplatePipe implements PipeTransform, OnInit, OnDestroy {\n\n protected templatesUpdated: Subscription;\n\n protected cachedTemplateId: string;\n protected cachedTemplate: TemplateRef<any>;\n\n constructor(protected globalTemplates: GlobalTemplateService) {\n this.cachedTemplateId = null;\n this.cachedTemplate = null;\n }\n\n ngOnInit(): void {\n this.templatesUpdated = this.globalTemplates.templatesUpdated.subscribe(() => {\n this.cachedTemplate = null;\n });\n }\n\n ngOnDestroy(): void {\n if (this.templatesUpdated)\n this.templatesUpdated.unsubscribe();\n }\n\n transform(templateId: string, component?: any): TemplateRef<string> {\n if (!templateId) return null;\n if (this.cachedTemplate === null || this.cachedTemplateId !== templateId) {\n this.cachedTemplateId = templateId;\n this.cachedTemplate = this.globalTemplates.get(templateId, component);\n }\n return this.cachedTemplate;\n }\n}\n","import {Pipe, PipeTransform} from \"@angular/core\";\nimport {IGroupMap} from \"../common-types\";\nimport {ObjectUtils} from \"../utils/object.utils\";\n\n@Pipe({\n standalone: false,\n name: \"groupBy\"\n})\nexport class GroupByPipe implements PipeTransform {\n\n transform(records: ReadonlyArray<any>, column: string, map: IGroupMap = null): any {\n const groups = (records || []).reduce((result: any, item: any) => {\n const key = ObjectUtils.getValue(item, column) || \"\";\n const col = map ? (map[key] || \"\") : key;\n const group: any[] = result[col] || [];\n group.push(item);\n result[col] = group;\n return result;\n }, {});\n return Object.keys(groups).map(key => {\n return {group: key, items: groups[key]};\n });\n }\n}\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\";\nimport {ObjectUtils} from \"../utils/object.utils\";\n\n@Pipe({\n standalone: false,\n name: \"isType\"\n})\nexport class IsTypePipe implements PipeTransform {\n transform(value: any, type: string): any {\n return ObjectUtils.getType(value) === type;\n }\n}\n","import {Pipe, PipeTransform} from \"@angular/core\";\nimport {ObjectUtils} from \"../utils/object.utils\";\n\n@Pipe({\n standalone: false,\n name: \"join\"\n})\nexport class JoinPipe implements PipeTransform {\n\n transform(value: any, separator: string = \", \"): string {\n return (ObjectUtils.isArray(value))\n ? value.join(separator)\n : \"\";\n }\n}\n","import {Pipe, PipeTransform} from \"@angular/core\";\nimport {ObjectUtils} from \"../utils/object.utils\";\n\nconst emptyKeys: any[] = [];\n\n@Pipe({\n standalone: false,\n name: \"keys\"\n})\nexport class KeysPipe implements PipeTransform {\n\n transform(value: any): any[] {\n if (!value) return emptyKeys;\n return ObjectUtils.isArray(value)\n ? Array.from(value.keys())\n : Object.keys(value);\n }\n}\n","import {Pipe, PipeTransform} from \"@angular/core\";\nimport {ObjectUtils} from \"../utils/object.utils\";\n\nexport function defaultMapper(item) {\n return item;\n}\n\n@Pipe({\n standalone: false,\n name: \"map\"\n})\nexport class MapPipe implements PipeTransform {\n transform(values: any[], mapper: any = defaultMapper, params: any = {}): any[] {\n if (!ObjectUtils.isArray(values)) return [];\n const mapperFunc = ObjectUtils.isFunction(mapper) ? mapper : (value, index, params) => {\n return ObjectUtils.evaluate(mapper, {\n value: value,\n index: index,\n params: params\n });\n };\n return values.map((value, index) => mapperFunc(value, index, params));\n }\n}\n","import {Pipe, PipeTransform} from \"@angular/core\";\nimport {ObjectUtils} from \"../utils/object.utils\";\nimport {ArrayUtils} from \"../utils/array.utils\";\n\n@Pipe({\n standalone: false,\n name: \"max\"\n})\nexport class MaxPipe implements PipeTransform {\n transform(value: any[], selector: any = null, params: any = {}): number {\n selector = selector || (item => <number>item);\n const maxSelector: Function = ObjectUtils.isFunction(value) ? value : (item, index, params) => {\n return ObjectUtils.evaluate(selector, {\n item: item,\n index: index,\n params: params\n });\n };\n return ArrayUtils.max(value, (item, index) => maxSelector(item, index, params));\n }\n}\n","import {Pipe, PipeTransform} from \"@angular/core\";\nimport {ObjectUtils} from \"../utils/object.utils\";\nimport {ArrayUtils} from \"../utils/array.utils\";\n\n@Pipe({\n standalone: false,\n name: \"min\"\n})\nexport class MinPipe implements PipeTransform {\n transform(value: any, selector: any = null, params: any = {}): number {\n selector = selector || (item => <number>item);\n const minSelector: Function = ObjectUtils.isFunction(value) ? value : (item, index, params) => {\n return ObjectUtils.evaluate(selector, {\n item: item,\n index: index,\n params: params\n });\n };\n return ArrayUtils.min(value, (item, index) => minSelector(item, index, params));\n }\n}\n","import {Pipe, PipeTransform} from \"@angular/core\";\n\n@Pipe({\n standalone: false,\n name: \"pop\"\n})\nexport class PopPipe implements PipeTransform {\n\n transform(value: any[]): any {\n return !Array.isArray(value) ? null : Array.from(value).pop();\n }\n}\n","import {Pipe, PipeTransform} from \"@angular/core\";\nimport {ObjectUtils} from \"../utils/object.utils\";\n\nexport function defaultReducer(result) {\n return result;\n}\n\n@Pipe({\n standalone: false,\n name: \"reduce\"\n})\nexport class ReducePipe implements PipeTransform {\n transform(values: any[], source: any, reducer: any = defaultReducer, params: any = {}): any {\n if (!ObjectUtils.isArray(values)) return [];\n const mapperFunc = ObjectUtils.isFunction(reducer) ? reducer : (result, value, index, params) => {\n return ObjectUtils.evaluate(reducer, {\n result: result,\n value: value,\n index: index,\n params: params\n });\n };\n return values.reduce((result, value, index) => mapperFunc(result, value, index, params), source);\n }\n}\n","import {Pipe, PipeTransform} from \"@angular/core\";\nimport {ObjectUtils} from \"../utils/object.utils\";\n\nconst empty: any = {};\n\n@Pipe({\n standalone: false,\n name: \"remap\"\n})\nexport class RemapPipe implements PipeTransform {\n\n transform(map: any, source: any, defaultValue: string = \"key\"): any {\n if (!map) return empty;\n if (!source) return map;\n const remapped = ObjectUtils.filter({map: ObjectUtils.copy(map)}, (value, key, target) => {\n if (ObjectUtils.isArray(value) && value.every(ObjectUtils.isString)) {\n target[key] = value.reduce((result, k) => {\n result[k] = ObjectUtils.getValue(source, k, ObjectUtils.evaluate(defaultValue, {key: k, map: map, source: source}));\n return result;\n }, {});\n return false;\n }\n return true;\n });\n return remapped.map;\n }\n}\n","import {Pipe, PipeTransform} from \"@angular/core\";\nimport {ObjectUtils} from \"../utils/object.utils\";\n\n@Pipe({\n standalone: false,\n name: \"replace\"\n})\nexport class ReplacePipe implements PipeTransform {\n transform(value: string, from: string | RegExp, to: string): string {\n return ObjectUtils.isDefined(value) ? `${value}`.replace(from, to) : ``;\n }\n}\n","import {Pipe, PipeTransform} from \"@angular/core\";\nimport {ObjectUtils} from \"../utils/object.utils\";\n\nconst emptyArray: any[] = [];\n\n@Pipe({\n standalone: false,\n name: \"reverse\"\n})\nexport class ReversePipe implements PipeTransform {\n\n transform(value: any[]): any[] {\n if (!ObjectUtils.isArray(value)) return emptyArray;\n const result = [];\n for (let i = value.length - 1; i >= 0; i--) {\n result.push(value[i]);\n }\n return result;\n }\n}\n","import {Pipe, PipeTransform} from \"@angular/core\";\nimport {FormatterService} from \"../services/formatter.service\";\n\n@Pipe({\n standalone: false,\n name: \"round\"\n})\nexport class RoundPipe implements PipeTransform {\n\n constructor(private formatter: FormatterService) {\n }\n\n transform(value: number, precision: number = 2, divider: number = 1): number {\n return this.formatter.roundNumber(value, precision, divider);\n }\n}\n","import {Pipe, PipeTransform} from \"@angular/core\";\nimport {DomSanitizer, SafeHtml} from \"@angular/platform-browser\";\n\n@Pipe({\n standalone: false,\n name: \"safe\"\n})\nexport class SafeHtmlPipe implements PipeTransform {\n\n constructor(private sanitizer: DomSanitizer) {\n\n }\n\n transform(value: string, type: string = \"html\"): SafeHtml {\n switch (type) {\n case \"html\":\n return this.sanitizer.bypassSecurityTrustHtml(value);\n case \"style\":\n return this.sanitizer.bypassSecurityTrustStyle(value);\n case \"script\":\n return this.sanitizer.bypassSecurityTrustScript(value);\n case \"url\":\n return this.sanitizer.bypassSecurityTrustUrl(value);\n case \"resourceUrl\":\n return this.sanitizer.bypassSecurityTrustResourceUrl(value);\n default:\n throw new Error(`SafePipe unable to bypass security for invalid type: ${type}`);\n }\n }\n}\n","import {Pipe, PipeTransform} from \"@angular/core\";\n\n@Pipe({\n standalone: false,\n name: \"shift\"\n})\nexport class ShiftPipe implements PipeTransform {\n\n transform(value: any[]): any {\n return !Array.isArray(value) ? null : Array.from(value).shift();\n }\n}\n","import {Pipe, PipeTransform} from \"@angular/core\";\n\n@Pipe({\n standalone: false,\n name: \"split\"\n})\nexport class SplitPipe implements PipeTransform {\n\n transform(value: any, separator: string = \".\"): any[] {\n return `${value}`.split(separator);\n }\n}\n","import {Pipe} from \"@angular/core\";\nimport {AsyncPipe} from \"@angular/common\";\nimport {isObservable, Observable} from \"rxjs\";\n\n@Pipe({\n standalone: false,\n pure: false,\n name: \"syncAsync\"\n})\nexport class SyncAsyncPipe extends AsyncPipe {\n\n transform<T = any>(value: T | Promise<T> | Observable<T>): T {\n return isObservable(value) || (value instanceof Promise)\n ? super.transform(value)\n : value as T;\n }\n}\n","import {ChangeDetectorRef, Inject, Injectable, Pipe, PipeTransform} from \"@angular/core\";\nimport {ILanguageService, ITranslations, TranslationQuery} from \"../common-types\";\nimport {ObjectUtils} from \"../utils/object.utils\";\nimport {LANGUAGE_SERVICE} from \"../tokens\";\n\n@Injectable()\n@Pipe({\n standalone: false,\n name: \"translate\",\n pure: false\n})\nexport class TranslatePipe implements PipeTransform {\n\n private dictionary: ITranslations;\n private enabled: boolean;\n private query: TranslationQuery;\n private args: any[];\n private params: any;\n private lastValue: string;\n\n get currentLang(): string {\n return this.language.currentLanguage\n }\n\n constructor(readonly cdr: ChangeDetectorRef, @Inject(LANGUAGE_SERVICE) readonly language: ILanguageService) {\n\n }\n\n transform(query: TranslationQuery, ...args: any[]): string {\n if (!query) return \"\";\n let dirty = false;\n const dictionary = this.language.dictionary;\n if (this.dictionary !== dictionary) {\n this.dictionary = dictionary;\n dirty = true;\n }\n const enabled = this.language.enableTranslations;\n if (this.enabled !== enabled) {\n this.enabled = enabled;\n dirty = true;\n }\n if (!ObjectUtils.equals(this.query, query)) {\n this.query = query;\n dirty = true;\n }\n if (!ObjectUtils.equals(this.args, args)) {\n this.args = args;\n this.params = null;\n if (ObjectUtils.isDefined(args[0]) && args.length) {\n if (typeof args[0] === \"string\" && args[0].length) {\n const validArgs: string = args[0]\n .replace(/(\\')?([a-zA-Z0-9_]+)(\\')?(\\s)?:/g, `\"$2\":`)\n .replace(/:(\\s)?(\\')(.*?)(\\')/g, `:\"$3\"`);\n try {\n this.params = JSON.parse(validArgs);\n } catch (e) {\n throw new SyntaxError(`Wrong parameter in TranslatePipe. Expected a valid Object, received: ${args[0]}`);\n }\n } else if (typeof args[0] === \"object\" && !Array.isArray(args[0])) {\n this.params = args[0];\n }\n }\n dirty = true;\n }\n if (dirty) {\n if (typeof query === \"object\") {\n this.lastValue = Array.isArray(query)\n ? this.language.getTranslationFromArray(query, this.params)\n : this.language.getTranslationFromObject(query, this.params);\n return this.lastValue;\n }\n this.lastValue = this.language.getTranslationSync(query, this.params);\n this.language.getTranslation(query, this.params).then(value => {\n this.lastValue = value;\n if (!this.cdr[\"destroyed\"]) {\n this.cdr.detectChanges();\n }\n });\n }\n return this.lastValue;\n }\n}\n","import {Pipe, PipeTransform} from \"@angular/core\";\nimport {ObjectUtils} from \"../utils/object.utils\";\n\nconst emptyValues: any[] = [];\n\n@Pipe({\n standalone: false,\n name: \"values\"\n})\nexport class ValuesPipe implements PipeTransform {\n\n transform(value: any): any[] {\n if (!value) return emptyValues;\n return ObjectUtils.isArray(value)\n ? value\n : Object.keys(value).map(key => value[key]);\n }\n}\n","import {\n ChangeDetectorRef,\n Directive,\n effect,\n ElementRef,\n HostListener,\n inject,\n input,\n OnChanges,\n output,\n signal, untracked\n} from \"@angular/core\";\nimport {AsyncMethod, IAsyncMessage} from \"../common-types\";\nimport {TOASTER_SERVICE} from \"../tokens\";\nimport {computedPrevious} from \"../utils/signal-utils\";\nimport {switchClass} from \"../utils/misc\";\n\nasync function defaultMethod(): Promise<IAsyncMessage> {\n return null;\n}\n\n@Directive({\n standalone: false,\n selector: \"[__asmb__]\"\n})\nexport class AsyncMethodBase<T extends AsyncMethod = AsyncMethod> implements OnChanges {\n\n readonly disabled = signal(false);\n readonly context = input<any>({});\n\n readonly onSuccess = output<IAsyncMessage>();\n readonly onError = output<IAsyncMessage>();\n readonly toaster = inject(TOASTER_SERVICE);\n readonly cdr = inject(ChangeDetectorRef);\n readonly element = inject<ElementRef<HTMLElement>>(ElementRef);\n\n readonly loading = signal(false);\n readonly target = signal(this.element.nativeElement);\n readonly previousTarget = computedPrevious(this.target);\n\n constructor() {\n effect(() => {\n const target = this.target();\n if (!target) return;\n switchClass(target, \"async-target\", true);\n switchClass(target, \"disabled\", this.disabled());\n switchClass(target, \"loading\", this.loading());\n });\n effect(() => {\n const previous = this.previousTarget();\n if (!previous) return;\n switchClass(previous, \"async-target\", false);\n switchClass(previous, \"disabled\", false);\n switchClass(previous, \"loading\", false);\n });\n }\n\n ngOnChanges(): void {\n this.cdr.detectChanges();\n }\n\n @HostListener(\"click\", [\"$event\"])\n onClick(ev: MouseEvent) {\n return this.handleClick(ev);\n }\n\n callMethod(ev?: MouseEvent): boolean {\n if (this.loading()) return true;\n this.loading.set(true);\n const method = this.getMethod() || defaultMethod;\n const result = method(...this.getArgs(ev));\n if (!(result instanceof Promise)) {\n this.loading.set(false);\n return false;\n }\n result.then(result => {\n this.loading.set(false);\n if (result) {\n this.onSuccess.emit(result);\n this.toaster.success(result.message, result.context);\n }\n }, reason => {\n if (!reason || !reason.message)\n throw new Error(\"Reason must implement IAsyncMessage interface\");\n this.loading.set(false);\n this.onError.emit(reason);\n this.toaster.error(reason.message, reason.context);\n }).finally(() => {\n if (!this.cdr[\"destroyed\"]) {\n this.cdr.detectChanges();\n }\n });\n return true;\n }\n\n protected handleClick(ev: MouseEvent): boolean {\n ev?.preventDefault();\n if (this.disabled()) return true;\n this.callMethod(ev);\n return true;\n }\n\n protected getMethod(): T {\n return null;\n }\n\n protected getArgs(ev: MouseEvent): unknown[] {\n return untracked(() => [this.context(), ev]);\n }\n}\n","import {Directive, input, untracked} from \"@angular/core\";\nimport {AsyncMethod} from \"../common-types\";\nimport {AsyncMethodBase} from \"./async-method.base\";\n\n@Directive({\n standalone: false,\n selector: \"[async-method]\",\n exportAs: \"async-method\",\n providers: [\n {provide: AsyncMethodBase, useExisting: AsyncMethodDirective}\n ]\n})\nexport class AsyncMethodDirective extends AsyncMethodBase {\n\n readonly method = input<AsyncMethod>(null, {alias: \"async-method\"});\n\n protected getMethod() {\n return untracked(() => this.method());\n }\n}\n","import {Directive, ElementRef, Optional} from \"@angular/core\";\nimport {AsyncMethodBase} from \"./async-method.base\";\nimport {switchClass} from \"../utils/misc\";\n\n@Directive({\n standalone: false,\n selector: \"[async-method-target]\"\n})\nexport class AsyncMethodTargetDirective {\n\n constructor(protected element: ElementRef,\n @Optional() protected asyncMethod: AsyncMethodBase) {\n if (!asyncMethod) {\n switchClass(this.element.nativeElement, \"async-target\", true);\n return;\n }\n asyncMethod.target.set(element.nativeElement);\n }\n\n}\n","import {Directive, ElementRef, Input, OnChanges, Renderer2, SimpleChanges} from \"@angular/core\";\nimport {HttpClient} from \"@angular/common/http\";\nimport {FileUtils} from \"../utils/file.utils\";\nimport {UniversalService} from \"../services/universal.service\";\n\nconst defaultClass = \"default-image\";\nconst loadingClass = \"loading-image\";\n\n@Directive({\n standalone: false,\n selector: \"[background]\"\n})\nexport class BackgroundDirective implements OnChanges {\n\n @Input() background: string;\n @Input() backgroundSize: string;\n\n constructor(private http: HttpClient, private element: ElementRef, private renderer: Renderer2, private universal: UniversalService) {\n\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.universal.isServer) {\n this.setBackground(this.background);\n return;\n }\n this.renderer.removeClass(this.element.nativeElement, defaultClass);\n this.renderer.addClass(this.element.nativeElement, loadingClass);\n FileUtils.readDataFromUrl(this.http, this.background).then(url => {\n this.setBackground(url);\n }, () => {\n this.renderer.removeClass(this.element.nativeElement, loadingClass);\n this.renderer.addClass(this.element.nativeElement, defaultClass);\n });\n }\n\n private setBackground(url: string): void {\n this.renderer.removeClass(this.element.nativeElement, loadingClass);\n this.renderer.setStyle(this.element.nativeElement, \"background-image\", `url('${url}')`);\n if (!this.backgroundSize) return;\n this.renderer.setStyle(this.element.nativeElement, \"background-size\", this.backgroundSize);\n }\n}\n","import {Directive, Input, ViewContainerRef, OnChanges, SimpleChanges, ComponentRef, OnDestroy} from \"@angular/core\";\nimport {ComponentLoaderService} from \"../services/component-loader.service\";\n\n@Directive({\n standalone: false,\n selector: \"[loadComponent]\"\n})\nexport class ComponentLoaderDirective implements OnChanges, OnDestroy {\n\n @Input() module: string;\n @Input(\"loadComponent\") selector: string;\n\n private cr: ComponentRef<any>;\n\n constructor(private vcr: ViewContainerRef, private loader: ComponentLoaderService) {\n\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this.module || !this.selector) return;\n this.ngOnDestroy();\n this.loader.getComponentType({\n moduleId: this.module,\n selector: this.selector\n }).then(type => {\n this.cr = this.vcr.createComponent(type);\n this.cr.changeDetectorRef.markForCheck();\n this.cr.changeDetectorRef.detectChanges();\n });\n }\n\n ngOnDestroy(): void {\n if (!this.cr) return;\n this.cr.destroy();\n const index = this.vcr.indexOf(this.cr.hostView);\n if (index >= 0) {\n this.vcr.remove(index);\n }\n this.cr.hostView.destroy();\n }\n}\n","import {Directive, Input, TemplateRef} from \"@angular/core\";\nimport {ITableTemplate} from \"../common-types\";\n\n@Directive({\n standalone: false,\n selector: \"ng-template[column]\"\n})\n\nexport class DynamicTableTemplateDirective implements ITableTemplate {\n\n @Input() column: string | string[];\n @Input() pure: boolean;\n\n constructor(readonly ref: TemplateRef<any>) {\n }\n}\n","import {Directive, Input, OnDestroy, OnInit, TemplateRef} from \"@angular/core\";\nimport {GlobalTemplateService} from \"../services/global-template.service\";\n\n@Directive({\n standalone: false,\n selector: \"[globalTemplate]\"\n})\nexport class GlobalTemplateDirective implements OnInit, OnDestroy {\n\n @Input(\"globalTemplate\") id: string;\n\n constructor(readonly globalTemplates: GlobalTemplateService,\n readonly template: TemplateRef<any>) {\n\n }\n\n ngOnInit(): void {\n this.globalTemplates.add(this.id, this.template);\n }\n\n ngOnDestroy(): void {\n this.globalTemplates.remove(this.id);\n }\n}\n","import {\n Directive,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n SimpleChanges\n} from \"@angular/core\";\nimport {Subscription} from \"rxjs\";\nimport {IIconService} from \"../common-types\";\nimport {ICON_SERVICE} from \"../tokens\";\n\n@Directive({\n standalone: false,\n selector: \"i[icon],b[icon],p[icon],span[icon],a[icon],h1[icon],h2[icon],h3[icon],h4[icon]\"\n})\nexport class IconDirective implements OnChanges, OnInit, OnDestroy {\n\n @Input() icon: string;\n @Input() activeIcon: string;\n @Input() active: boolean;\n @Output() activeChange: EventEmitter<boolean>;\n\n @HostBinding(\"class.active\")\n get isActive() {\n return this.active;\n }\n\n protected iconsLoaded: Subscription;\n\n constructor(private element: ElementRef, private renderer: Renderer2, @Inject(ICON_SERVICE) private icons: IIconService) {\n this.renderer.addClass(this.element.nativeElement, \"svg-icon\");\n this.activeChange = new EventEmitter<boolean>();\n }\n\n ngOnInit(): void {\n this.iconsLoaded = this.icons.iconsLoaded.subscribe(() => this.changeIcon());\n }\n\n ngOnDestroy(): void {\n if (this.iconsLoaded)\n this.iconsLoaded.unsubscribe();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.icon) {\n this.renderer.removeClass(this.element.nativeElement, `svg-icon-${changes.icon.previousValue}`);\n this.renderer.addClass(this.element.nativeElement, `svg-icon-${changes.icon.currentValue}`);\n }\n this.changeIcon();\n }\n\n @HostListener(\"click\")\n click(): void {\n this.active = !this.active;\n this.activeChange.emit(this.active);\n this.changeIcon();\n }\n\n private changeIcon(): void {\n this.icons.getIcon(this.icon, this.activeIcon || `${this.icon}-active`, this.active).then(icon => {\n if (this.icons.isDisabled) return;\n this.element.nativeElement.innerHTML = icon;\n });\n }\n}\n","import {\n Directive, DoCheck,\n EmbeddedViewRef,\n Input,\n OnChanges,\n SimpleChange,\n SimpleChanges,\n TemplateRef,\n ViewContainerRef\n} from \"@angular/core\";\nimport {ObjectUtils} from \"../utils/object.utils\";\n\n@Directive({\n standalone: false,\n selector: \"[ngxTemplateOutlet]\"\n})\nexport class NgxTemplateOutletDirective implements OnChanges, DoCheck {\n\n private viewRef: EmbeddedViewRef<any>;\n\n @Input() public context: Object;\n @Input() public additionalContext: Object;\n @Input() public ngxTemplateOutlet: TemplateRef<any>;\n\n private static hasContextShapeChanged(ctxChange: SimpleChange): boolean {\n const prevCtxKeys = Object.keys(ctxChange.previousValue || {});\n const currCtxKeys = Object.keys(ctxChange.currentValue || {});\n\n if (prevCtxKeys.length === currCtxKeys.length) {\n for (const propName of currCtxKeys) {\n if (prevCtxKeys.indexOf(propName) === -1) {\n return true;\n }\n }\n return false;\n } else {\n return true;\n }\n }\n\n constructor(private _viewContainerRef: ViewContainerRef) {}\n\n ngOnChanges(changes: SimpleChanges) {\n const recreateView = this.shouldRecreateView(changes);\n if (recreateView) {\n if (this.viewRef)\n this._viewContainerRef.remove(this._viewContainerRef.indexOf(this.viewRef));\n if (this.ngxTemplateOutlet)\n this.viewRef = this._viewContainerRef.createEmbeddedView(this.ngxTemplateOutlet, {});\n }\n this.ngDoCheck();\n }\n\n ngDoCheck(): void {\n if (!this.viewRef) return;\n const context = this.viewRef.context;\n this.updateExistingContext(this.context, context);\n this.updateExistingContext(this.additionalContext, context);\n context.$implicit = context;\n }\n\n private shouldRecreateView(changes: SimpleChanges): boolean {\n const ctxChange = changes[\"context\"];\n const aCtxChange = changes[\"additionalContext\"];\n return !!changes[\"ngxTemplateOutlet\"]\n || (ctxChange && NgxTemplateOutletDirective.hasContextShapeChanged(ctxChange))\n || (aCtxChange && NgxTemplateOutletDirective.hasContextShapeChanged(aCtxChange));\n }\n\n private updateExistingContext(ctx: any, context: any): void {\n if (!ctx) return;\n let ctxProto = Object.getPrototypeOf(ctx);\n if (ctxProto == Object.prototype) {\n ctxProto = ctx;\n }\n const props = Object.getOwnPropertyNames(ctxProto);\n for (const propName of props) {\n const desc = Object.getOwnPropertyDescriptor(ctxProto, propName);\n // Copy if its a getter and it is not $implicit\n if (desc.get && propName !== \"$implicit\") {\n Object.defineProperty(context, propName, desc);\n continue;\n }\n const func: Function = ObjectUtils.isFunction(desc.value) ? desc.value.bind(ctx) : null;\n if (func && func !== ctxProto.constructor) {\n context[propName] = func;\n }\n }\n for (const propName of Object.keys(ctx)) {\n\n const desc = Object.getOwnPropertyDescriptor(ctxProto, propName);\n if (desc && desc.get && !desc.set) continue;\n context[propName] = ctx[propName];\n }\n }\n}\n","import {\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n NgZone,\n OnChanges,\n Output,\n Renderer2,\n SimpleChanges\n} from \"@angular/core\";\nimport {IPaginationData, ITimer, PaginationDataLoader, PaginationItemContext} from \"../common-types\";\nimport {TimerUtils} from \"../utils/timer.utils\";\n\n@Directive({\n standalone: false,\n selector: \"[pagination]\",\n exportAs: \"pagination\"\n})\nexport class PaginationDirective implements OnChanges {\n\n get total(): number {\n return this.data ? this.data.total : 0;\n }\n\n get items(): any[] {\n return this.data ? this.data.items : [];\n }\n\n @Input(\"pagination\") loader: PaginationDataLoader;\n @Input() page: number;\n @Input() itemsPerPage: number;\n @Input() updateTime: number;\n @Input() waitFor: Promise<any>;\n\n @Output() pageChange: EventEmitter<number>;\n @Output() onRefresh: EventEmitter<PaginationDirective>;\n\n maxPage: number;\n\n private data: IPaginationData;\n private updateTimer: ITimer;\n\n constructor(readonly zone: NgZone, readonly renderer: Renderer2, readonly element: ElementRef) {\n this.pageChange = new EventEmitter<number>();\n this.onRefresh = new EventEmitter<PaginationDirective>();\n this.updateTimer = TimerUtils.createTimeout(() => this.loadData(), this.updateTime);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!changes.loader && !changes.itemsPerPage && !changes.page) return;\n this.page = isNaN(this.page) || this.page < 1 ? 1 : this.page;\n this.itemsPerPage = isNaN(this.itemsPerPage) || this.itemsPerPage < 1 ? 20 : this.itemsPerPage;\n this.waitFor = this.waitFor || Promise.resolve(true);\n this.refresh();\n }\n\n refresh(time?: number): void {\n time = isNaN(time) || time <= 0 ? this.updateTime : time;\n this.updateTimer.time = isNaN(time) || time <= 0 ? 100 : time;\n Promise.resolve(this.waitFor).then(() => {\n this.updateTimer.run();\n });\n }\n\n paginate(page: number): void {\n this.page = page;\n this.pageChange.emit(page);\n this.refresh();\n }\n\n private loadData(): void {\n if (!this.loader) return;\n this.renderer.addClass(this.element.nativeElement, \"loading\");\n this.loader(this.page, this.itemsPerPage).then(data => {\n this.maxPage = !data || data.total <= 0 ? 1 : Math.floor((data.total - 1) / this.itemsPerPage) + 1;\n this.data = data;\n const baseIndex = (this.page - 1) * this.itemsPerPage;\n const items = (data.items || []);\n data.items = items.map((item, index) => {\n const ix = baseIndex + index;\n return item instanceof PaginationItemContext\n ? item\n : new PaginationItemContext(item, items, items.length, index, ix);\n });\n if (this.page > this.maxPage) {\n this.paginate(this.maxPage);\n return;\n }\n this.zone.run(() => {\n this.renderer.removeClass(this.element.nativeElement, \"loading\");\n this.onRefresh.emit(this)\n });\n });\n }\n}\n","import {Directive, OnDestroy, OnInit, TemplateRef, ViewContainerRef} from \"@angular/core\";\nimport {Subscription} from \"rxjs\";\nimport {PaginationDirective} from \"./pagination.directive\";\n\n@Directive({\n standalone: false,\n selector: \"[paginationItem]\"\n})\nexport class PaginationItemDirective implements OnInit, OnDestroy {\n\n private onRefresh: Subscription;\n\n constructor(private pagination: PaginationDirective, private viewContainer: ViewContainerRef, private templateRef: TemplateRef<any>) {\n\n }\n\n ngOnInit(): void {\n this.onRefresh = this.pagination.onRefresh.subscribe(() => this.renderView());\n }\n\n ngOnDestroy(): void {\n this.onRefresh.unsubscribe();\n }\n\n private renderView(): void {\n this.viewContainer.clear();\n this.pagination.items.forEach((item: any, ix: number) => {\n item.$implicit = item;\n item.rowIndex = ix;\n this.viewContainer.createEmbeddedView(this.templateRef, item);\n });\n }\n}\n","import {Directive, ViewContainerRef, TemplateRef, Input} from \"@angular/core\";\nimport {HttpClient} from \"@angular/common/http\";\nimport {ResourceIfContext} from \"../common-types\";\nimport {FileUtils} from \"../utils/file.utils\";\nimport {UniversalService} from \"../services/universal.service\";\n\n@Directive({\n standalone: false,\n selector: \"[resourceIf]\",\n exportAs: \"resourceIf\"\n})\nexport class ResourceIfDirective {\n\n private context: ResourceIfContext;\n private resource: string;\n\n @Input()\n set resourceIf(resource: string) {\n this.resource = resource;\n this.renderView();\n }\n\n get resourceIf(): string {\n return this.resource;\n }\n\n get url(): string {\n return this.context.url;\n }\n\n constructor(private http: HttpClient, private viewContainer: ViewContainerRef, private templateRef: TemplateRef<any>, private universal: UniversalService) {\n this.context = new ResourceIfContext();\n }\n\n private renderView(): void {\n this.context = new ResourceIfContext();\n this.context.resource = this.resource;\n this.viewContainer.clear();\n if (this.universal.isBrowser && this.resource) {\n FileUtils.readDataFromUrl(this.http, this.resource).then(url => {\n this.context.url = url;\n this.viewContainer.createEmbeddedView(this.templateRef, this.context);\n }, console.log);\n }\n }\n}\n","import {ChangeDetectorRef, Directive, ElementRef, HostBinding, HostListener, OnDestroy, OnInit} from \"@angular/core\";\nimport {Subscription} from \"rxjs\";\nimport {ITimer} from \"../common-types\";\nimport {TimerUtils} from \"../utils/timer.utils\";\nimport {EventsService} from \"../services/events.service\";\n\n@Directive({\n standalone: false,\n selector: \"[sticky]\"\n})\nexport class StickyDirective implements OnInit, OnDestroy {\n\n @HostBinding(\"class.sticky\") isSticky: boolean;\n @HostBinding(\"class.sticky-update\") isUpdating: boolean;\n parentElement: HTMLElement;\n\n private updateTimer: ITimer;\n private eventForwarded: Subscription;\n\n constructor(private cdr: ChangeDetectorRef, private events: EventsService, private element: ElementRef) {\n this.parentElement = this.element.nativeElement.parentElement;\n this.updateTimer = TimerUtils.createTimeout(() => {\n this.isUpdating = false;\n this.cdr.detectChanges();\n this.events.updateSticky(this.isSticky);\n }, 10);\n }\n\n ngOnInit(): void {\n this.eventForwarded = this.events.eventForwarded.subscribe((e: Event) => {\n if (e && e.type === \"scroll\") this.updateSticky();\n });\n }\n\n ngOnDestroy(): void {\n this.eventForwarded.unsubscribe();\n }\n\n @HostListener(\"window:resize\")\n @HostListener(\"window:scroll\")\n updateSticky(): void {\n const distanceToTop = this.parentElement.getBoundingClientRect().top;\n this.isSticky = distanceToTop < 1;\n this.isUpdating = true;\n this.cdr.detectChanges();\n this.updateTimer.run();\n }\n}\n","import {Directive, ElementRef, Input, OnDestroy, OnInit, Renderer2} from \"@angular/core\";\nimport {Subscription} from \"rxjs\";\nimport {EventsService} from \"../services/events.service\";\n\n@Directive({\n standalone: false,\n selector: \"[stickyClass]\"\n})\nexport class StickyClassDirective implements OnInit, OnDestroy {\n\n @Input() stickyClass: string;\n\n private stickyUpdated: Subscription;\n\n constructor(private events: EventsService, private element: ElementRef, private renderer: Renderer2) {\n }\n\n ngOnInit(): void {\n this.stickyUpdated = this.events.stickyUpdated.subscribe(() => {\n if (this.events.isSticky) {\n this.renderer.addClass(this.element.nativeElement, this.stickyClass || \"sticky-sibling\");\n return;\n }\n this.renderer.removeClass(this.element.nativeElement, this.stickyClass || \"sticky-sibling\");\n });\n }\n\n ngOnDestroy(): void {\n this.stickyUpdated.unsubscribe();\n }\n}\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\";\nimport {Subscription} from \"rxjs\";\nimport {\n arrow,\n autoPlacement,\n autoUpdate,\n computePosition,\n shift,\n MiddlewareData,\n Placement,\n Middleware, limitShift\n} from \"@floating-ui/dom\";\n\nimport {DropdownDirective} from \"./dropdown.directive\";\nimport {ObservableUtils} from \"../utils/observable.utils\";\nimport {getCssVariables} from \"../utils/misc\";\nimport {ROOT_ELEMENT} from \"../tokens\";\n\nconst rectProps = [\"x\", \"y\", \"width\", \"height\"];\n\ninterface ComputeResult {\n styles: {\n position: \"fixed\" | \"absolute\";\n left: string;\n top: string;\n right: string;\n bottom: string;\n },\n placement: Placement;\n isMobileView: boolean;\n middlewareData?: MiddlewareData;\n}\n\n@Directive({\n standalone: false,\n selector: \"[dropdownContent]\",\n exportAs: \"dropdown-content\",\n})\nexport class DropdownContentDirective implements OnInit, OnDestroy {\n\n protected subscription: Subscription;\n protected attachTo: HTMLElement;\n protected attachOutside: boolean;\n protected lastPlacement: string;\n protected cleanUp: () => void;\n\n constructor(protected vcr: ViewContainerRef,\n @Optional() @Inject(ROOT_ELEMENT) protected rootElem: HTMLElement,\n @Optional() protected dropdown: DropdownDirective,\n @Optional() readonly templateRef: TemplateRef<any>) {\n if (!this.dropdown) {\n throw new Error(\"DropdownDirective is required! Please use it inside a dd, drop-down directive attribute\");\n }\n if (!this.templateRef) {\n throw new Error(\"TemplateRef is required! Please use with *dropdownContent\");\n }\n this.lastPlacement = null;\n }\n\n ngOnInit() {\n this.subscription = ObservableUtils.multiSubscription(\n this.dropdown.onShown.subscribe(() => this.createView()),\n this.dropdown.onHidden.subscribe(() => this.destroyView())\n );\n }\n\n ngOnDestroy() {\n this.subscription?.unsubscribe();\n this.destroyView();\n }\n\n protected createView(init: boolean = false) {\n if (this.dropdown.contentElement) return;\n const mobileWidth = this.dropdown.mobileViewUnder || 0;\n const fixed = this.dropdown.fixed || false;\n const ref = this.dropdown.nativeElement;\n const [content, arrowEl] = this.createWrapper();\n this.dropdown.contentElement = content;\n // Set up floating UI positioning settings\n const middleware: Middleware[] = [];\n if (this.dropdown.autoPlacement) {\n middleware.push(\n shift({\n boundary: this.dropdown.boundary,\n limiter: limitShift()\n }),\n autoPlacement(this.dropdown.autoPlacement),\n );\n }\n middleware.push(\n arrow({element: arrowEl})\n );\n const compute = async (): Promise<ComputeResult> => {\n const isMobileView = window.innerWidth <= mobileWidth;\n if (isMobileView || fixed) {\n return {\n styles: {\n left: \"0px\", top: \"0px\", right: \"0px\", bottom: \"0px\",\n position: \"fixed\",\n },\n placement: \"top\",\n isMobileView\n };\n }\n const {x, y, placement, middlewareData} = await computePosition(\n ref,\n content,\n {\n strategy: \"absolute\",\n placement: this.dropdown.placement || \"bottom\",\n middleware\n }\n );\n\n return {\n styles: {\n left: `${x}px`, top: `${y}px`, right: null, bottom: null,\n position: \"absolute\",\n },\n placement,\n isMobileView,\n middlewareData\n };\n }\n // Set up floating UI auto update\n this.cleanUp = autoUpdate(\n ref,\n content,\n () => {\n compute().then(({styles, placement, isMobileView, middlewareData}) => {\n\n if (middlewareData?.arrow) {\n const {x, y} = middlewareData.arrow;\n Object.assign(arrowEl.style, {\n left: x != null ? `${x}px` : ``,\n top: y != null ? `${y}px` : ``,\n });\n }\n\n Object.assign(content.style, styles, {\n opacity: init ? \"0\" : \"1\",\n zIndex: `var(--dd-z-index, 100)`\n });\n\n const refRect = ref.getBoundingClientRect();\n const contentRect = content.getBoundingClientRect();\n const lastPlacement = this.lastPlacement;\n const newPlacement = `dropdown-placement-${placement}`;\n if (lastPlacement) {\n ref.classList.replace(lastPlacement, newPlacement);\n content.classList.replace(lastPlacement, newPlacement);\n } else {\n ref.classList.add(newPlacement);\n content.classList.add(newPlacement);\n }\n if (isMobileView || fixed) {\n if (!isMobileView) {\n content.classList.add(`dropdown-content-fixed`);\n content.classList.remove(`dropdown-content-mobile`);\n } else {\n content.classList.add(`dropdown-content-mobile`);\n content.classList.remove(`dropdown-content-fixed`);\n }\n content.classList.remove(`dropdown-content-desktop`);\n } else {\n content.classList.add(`dropdown-content-desktop`);\n content.classList.remove(`dropdown-content-mobile`);\n content.classList.remove(`dropdown-content-fixed`);\n }\n rectProps.forEach(prop => {\n content.style.setProperty(`--toggle-${prop}`, `${refRect[prop]}px`);\n ref.style.setProperty(`--content-${prop}`, `${contentRect[prop]}px`);\n });\n this.lastPlacement = newPlacement;\n });\n },\n );\n }\n\n protected destroyView() {\n if (!this.dropdown.contentElement) return;\n this.dropdown.contentElement.remove();\n this.dropdown.contentElement = null;\n this.vcr.clear();\n this.cleanUp?.();\n }\n\n protected whereToAttach(): HTMLElement {\n const target = this.dropdown.attachTo;\n if (target === \"root\" && this.rootElem) {\n return this.rootElem;\n }\n if (target instanceof ElementRef) {\n return target.nativeElement;\n }\n if (target instanceof HTMLElement) {\n return target;\n }\n const anchor = this.vcr.element.nativeElement as HTMLElement;\n return anchor?.parentElement || this.rootElem;\n }\n\n protected createWrapper() {\n const wrapper = document.createElement(\"div\");\n const arrow = document.createElement(\"div\");\n arrow.classList.add(`dropdown-content-arrow`);\n arrow.style.position = `absolute`;\n wrapper.appendChild(arrow);\n const ref = this.vcr.createEmbeddedView(this.templateRef);\n ref.rootNodes.forEach(node => wrapper.appendChild(node));\n ref.detectChanges();\n this.attachTo = this.whereToAttach();\n this.attachTo.appendChild(wrapper);\n this.attachOutside = !this.dropdown.nativeElement?.contains(this.attachTo);\n\n if (this.attachOutside) {\n const referenceStyles = getCssVariables(this.dropdown.nativeElement);\n const wrapperStyles = getCssVariables(wrapper);\n Object.keys(referenceStyles).forEach(key => {\n if (!wrapperStyles[key]) {\n wrapper.style.setProperty(key, referenceStyles[key]);\n }\n });\n }\n\n const autoPlacement = this.dropdown.autoPlacement;\n if (this.lastPlacement) {\n wrapper.classList.add(this.lastPlacement);\n }\n if (autoPlacement) {\n const vertical = autoPlacement.allowedPlacements.some(p => p.includes(\"top\") || p.includes(\"bottom\"));\n const horizontal = autoPlacement.allowedPlacements.some(p => p.includes(\"left\") || p.includes(\"right\"));\n if (vertical && horizontal) {\n wrapper.classList.add(`dropdown-content-axis-both`);\n } else {\n const axis = vertical ? \"vertical\" : \"horizontal\";\n wrapper.classList.add(`dropdown-content-axis-${axis}`);\n }\n }\n wrapper.classList.add(\"dropdown-content-wrap\");\n return [wrapper, arrow];\n }\n\n initialize(): void {\n this.createView(true);\n setTimeout(() => this.destroyView());\n }\n}\n","import {Directive, inject, input, untracked} from \"@angular/core\";\nimport {DropdownDirective} from \"./dropdown.directive\";\nimport {AsyncMethodBase} from \"./async-method.base\";\nimport {AsyncMethod} from \"../common-types\";\n\n@Directive({\n standalone: false,\n selector: \"[dropdownToggle]\",\n exportAs: \"dropdown-toggle\",\n providers: [\n {provide: AsyncMethodBase, useExisting: DropdownToggleDirective}\n ]\n})\nexport class DropdownToggleDirective extends AsyncMethodBase {\n\n readonly beforeOpen = input<AsyncMethod>(null);\n readonly switch = input(true);\n readonly dropdown = inject(DropdownDirective);\n\n protected getMethod() {\n return untracked(() => this.beforeOpen());\n }\n\n callMethod(ev: MouseEvent): boolean {\n if (this.dropdown.isOpened) {\n if (!this.switch()) return true;\n this.dropdown.hide();\n } else if (!super.callMethod(ev)) {\n this.dropdown.show();\n }\n return true;\n }\n}\n","import {Directive, ElementRef, inject, input, TemplateRef} from \"@angular/core\";\n\n@Directive({\n standalone: false,\n selector: \"[tabsItem]\"\n})\nexport class TabsItemDirective {\n\n readonly value = input(null, {alias: \"tabsItem\"});\n readonly label = input(\"\");\n readonly tooltip = input(\"\");\n readonly icon = input(\"\");\n readonly disabled = input(false);\n readonly classes = input<string | string[]>(\"\");\n\n readonly element = inject(ElementRef, {optional: true});\n readonly template = inject(TemplateRef, {optional: true});\n}\n","import {Directive, input} from \"@angular/core\";\nimport {TabsItemDirective} from \"./tabs-item.directive\";\n\n@Directive({\n standalone: false,\n selector: \"ng-template[tab]\",\n providers: [\n {provide: TabsItemDirective, useExisting: TabsTemplateDirective}\n ],\n})\nexport class TabsTemplateDirective extends TabsItemDirective {\n\n readonly value = input(null, {alias: \"tab\"});\n\n}\n","import {Directive, ElementRef, Input, OnChanges, Renderer2, SimpleChanges, ViewContainerRef} from \"@angular/core\";\nimport {UnorderedListStyle, UnorderedListTemplates, UnorderedListTemplate} from \"../common-types\";\nimport {ObjectUtils} from \"../utils/object.utils\";\nimport {StringUtils} from \"../utils/string.utils\";\n\n@Directive({\n standalone: false,\n selector: \"[unorderedListItem]\"\n})\nexport class UnorderedListItemDirective implements OnChanges {\n\n @Input(\"unorderedListItem\") item: any;\n @Input() type: string;\n @Input() data: any;\n @Input() keyPrefix: string;\n @Input() listStyle: UnorderedListStyle;\n @Input() path: string;\n @Input() level: number;\n @Input() templates: UnorderedListTemplate[];\n @Input() defaultTemplates: UnorderedListTemplates;\n\n isArray: boolean;\n isObject: boolean;\n valueIsArray: boolean;\n valueIsObject: boolean;\n valueType: string;\n\n get elem(): HTMLElement {\n return this.elementRef.nativeElement;\n }\n\n constructor(private elementRef: ElementRef, private renderer: Renderer2, private viewContainer: ViewContainerRef) {\n\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this.templates || !this.defaultTemplates || !this.item) return;\n const promise = this.item.value instanceof Promise ? this.item.value : Promise.resolve(this.item.value);\n promise.then(value => {\n this.item.value = value;\n this.path = ObjectUtils.isNullOrUndefined(this.path) ? \"\" : this.path.toString();\n this.isArray = ObjectUtils.isArray(this.data);\n this.isObject = ObjectUtils.isObject(this.data);\n this.valueIsArray = ObjectUtils.isArray(this.item.value);\n this.valueIsObject = ObjectUtils.isObject(this.item.value);\n this.valueType = ObjectUtils.getType(this.item.value);\n const context: any = this;\n const template = this\n .templates\n .find(t => t.type == this.type && ObjectUtils.evaluate(t.selector, context))?.templateRef || this.defaultTemplates[this.type];\n // Set view\n this.viewContainer.clear();\n this.viewContainer.createEmbeddedView(template, context);\n // Set classes\n if (this.type !== \"item\") return;\n this.item.classList = [];\n this.isClass(\"is-array\", this.valueIsArray);\n this.isClass(\"is-object\", this.valueIsObject);\n this.isClass(\"is-value\", !this.valueIsObject && !this.valueIsArray);\n this.isClass(`type-${this.valueType}`);\n this.isClass(`path-${this.path.replace(/\\./g, \"-\")}`);\n this.isClass(`key-${this.item.key}`);\n }, reason => {\n console.log(\"Can't handle promise rejection\", reason);\n });\n }\n\n private isClass(className: string, value: boolean = true): void {\n if (!value) return;\n this.item.classList.push(className);\n }\n}\n","import {Directive, Input, TemplateRef} from \"@angular/core\";\nimport {UnorderedListTemplate} from \"../common-types\";\n\n@Directive({\n standalone: false,\n selector: \"ng-template[type][selector]\"\n})\n\nexport class UnorderedListTemplateDirective implements UnorderedListTemplate {\n\n @Input() type: string;\n @Input() selector: string;\n\n constructor(readonly templateRef: TemplateRef<any>) {\n\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n ViewEncapsulation\n} from \"@angular/core\";\nimport {ButtonProps, ButtonSize, ButtonType} from \"../../common-types\";\nimport {BUTTON_TYPE} from \"../../tokens\";\n\n@Component({\n standalone: false,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: \"btn\",\n templateUrl: \"./btn.component.html\"\n})\nexport class BtnComponent {\n\n readonly label = input(\"\");\n readonly tooltip = input(\"\");\n readonly icon = input(\"\");\n readonly disabled = input(false);\n readonly type = input(\"primary\" as ButtonType);\n readonly size = input(\"normal\" as ButtonSize);\n\n readonly buttonType = inject(BUTTON_TYPE);\n readonly element = inject<ElementRef<HTMLElement>>(ElementRef);\n\n readonly buttonProps = computed<ButtonProps>(() => {\n return {\n label: this.label(),\n tooltip: this.tooltip(),\n icon: this.icon(),\n disabled: this.disabled(),\n type: this.type(),\n size: this.size()\n };\n });\n\n contains(target: EventTarget): boolean {\n return !(target instanceof HTMLElement) || this.element.nativeElement?.contains(target);\n }\n\n}\n","<ng-container [ngComponentOutlet]=\"buttonType\"\n [ngComponentOutletInputs]=\"$any(buttonProps())\"></ng-container>\n","import {ChangeDetectionStrategy, Component, computed, inject, input, ViewEncapsulation} from \"@angular/core\";\nimport {IconProps} from \"../../common-types\";\nimport {ICON_MAP, ICON_TYPE} from \"../../tokens\";\n\n@Component({\n standalone: false,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: \"icon\",\n templateUrl: \"./icon.component.html\"\n})\nexport class IconComponent {\n\n readonly name = input(\"trash\");\n\n readonly iconType = inject(ICON_TYPE);\n\n readonly iconMap = inject(ICON_MAP);\n\n readonly iconProps = computed<IconProps>(() => {\n const name = this.name();\n return {\n name: this.iconMap[name] || name,\n };\n });\n\n}\n","<ng-container [ngComponentOutlet]=\"iconType\"\n [ngComponentOutletInputs]=\"iconProps()\"></ng-container>\n","import {Component, Input, ViewEncapsulation} from \"@angular/core\";\nimport {ButtonProps, ButtonSize, ButtonType} from \"../../common-types\";\n\n@Component({\n standalone: false,\n encapsulation: ViewEncapsulation.None,\n selector: \"btn-default\",\n templateUrl: \"./btn-default.component.html\",\n styleUrls: [\"./btn-default.component.scss\"]\n})\nexport class BtnDefaultComponent implements ButtonProps {\n\n @Input() label: string;\n @Input() tooltip: string;\n @Input() icon: string;\n @Input() disabled: boolean;\n @Input() type: ButtonType;\n @Input() size: ButtonSize;\n\n get bsSize(): string {\n return this.size === \"small\" ? \"btn-sm\" : \"btn-md\";\n }\n\n}\n","<button class=\"default-btn btn\"\n type=\"button\"\n async-method-target\n [title]=\"!tooltip ? '' : tooltip | translate\"\n [ngClass]=\"['btn-' + type, bsSize]\">\n <icon [name]=\"icon\" *ngIf=\"icon\"></icon>\n <span *ngIf=\"label\">{{ label | translate }}</span>\n</button>\n","import {Component, ViewEncapsulation} from \"@angular/core\";\n\n@Component({\n standalone: false,\n selector: \"close-btn\",\n styleUrls: [\"./close-btn.component.scss\"],\n template: \"\",\n encapsulation: ViewEncapsulation.None\n})\nexport class CloseBtnComponent {\n\n}\n","import {\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input, OnChanges,\n Output, SimpleChanges,\n ViewChild,\n ViewEncapsulation\n} from \"@angular/core\";\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from \"@angular/forms\";\nimport {ObjectUtils} from \"../../utils/object.utils\";\nimport {ChipOption, ChipStatus, ChipValue} from \"../../common-types\";\nimport {AutoPlacementOptions} from \"@floating-ui/dom\";\nimport {DropdownDirective} from \"../../directives/dropdown.directive\";\n\n@Component({\n standalone: false,\n encapsulation: ViewEncapsulation.None,\n selector: \"chips\",\n templateUrl: \"./chips.component.html\",\n styleUrls: [\"./chips.component.scss\"],\n providers: [\n {provide: NG_VALUE_ACCESSOR, useExisting: ChipsComponent, multi: true}\n ],\n})\nexport class ChipsComponent implements ControlValueAccessor, OnChanges {\n\n @Input() testId: string;\n @Input() value: ChipValue | ChipValue[];\n @Input() multiple: boolean;\n @Input() disabled: boolean;\n @Input() type: string;\n @Input() min: number;\n @Input() max: number;\n @Input() minLength: number;\n @Input() maxLength: number;\n @Input() step: number;\n @Input() placeholder: string;\n @Input() unique: boolean;\n @Input() strict: boolean;\n @Input() options: ReadonlyArray<ChipOption>;\n\n @Output() valueChange: EventEmitter<ChipValue | ChipValue[]>;\n\n @ViewChild(\"chipDropdown\")\n chipDropdown: DropdownDirective;\n\n @ViewChild(\"chipButtons\")\n chipButtons: ElementRef<HTMLDivElement>;\n\n @ViewChild(\"chipInput\")\n chipInput: ElementRef<HTMLInputElement>;\n\n inputStyles: { [key: string]: string };\n valueOptions: ChipOption[];\n filteredOptions: ChipOption[];\n statuses: ChipStatus[];\n autoPlacement: AutoPlacementOptions;\n\n private undoList: Function[];\n private previousValue: string;\n\n onChange: any = () => { };\n onTouched: any = () => { };\n\n constructor(readonly cdr: ChangeDetectorRef) {\n this.testId = \"chips\";\n this.value = [];\n this.multiple = true;\n this.statuses = [];\n this.disabled = false;\n this.type = \"text\";\n this.min = -999999999;\n this.max = 999999999;\n this.minLength = 0;\n this.maxLength = this.max;\n this.step = 1;\n this.placeholder = \"\";\n this.unique = true;\n this.strict = true;\n this.valueChange = new EventEmitter();\n this.inputStyles = {};\n this.valueOptions = [];\n this.filteredOptions = [];\n this.autoPlacement = {\n autoAlignment: true,\n allowedPlacements: [\"top\", \"bottom\"]\n };\n this.undoList = [];\n this.previousValue = \"\";\n }\n\n registerOnChange(fn: any) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.value) {\n const value = changes.value.currentValue;\n this.valueOptions = this.createValueOptions(Array.isArray(value) ? value : [value]);\n this.value = this.updateValue();\n }\n this.filterOptions();\n }\n\n writeValue(value: ChipValue | ChipValue[]) {\n this.valueOptions = this.createValueOptions(Array.isArray(value) ? value : [value]);\n this.value = this.updateValue();\n this.filterOptions();\n this.cdr.markForCheck();\n }\n\n updateValues(val: ChipOption[]): void {\n this.valueOptions = Array.from(val);\n this.value = this.updateValue();\n this.onChange(this.value);\n this.valueChange.emit(this.value);\n this.filterOptions();\n this.cdr.markForCheck();\n }\n\n setDisabledState(val: boolean) {\n this.disabled = val === true;\n this.cdr.markForCheck();\n }\n\n removeItem(event: Event, ix: number): void {\n event.stopPropagation();\n if (this.disabled) return;\n this.makeUndo();\n this.updateValues(this.valueOptions.filter((v, i) => i !== ix));\n this.onTouched(this.value);\n this.chipInput.nativeElement.focus();\n }\n\n onResize(): void {\n const container = this.chipDropdown.nativeElement;\n const buttons = this.chipButtons.nativeElement;\n const style = getComputedStyle(buttons);\n const vertical = parseFloat(style.top);\n const horizontal = parseFloat(style.gap);\n this.inputStyles = buttons.offsetWidth > container.offsetWidth * .7\n ? {\n paddingTop: `${buttons.offsetHeight + vertical}px`,\n paddingLeft: `0px`\n } : {\n paddingLeft: `${buttons.offsetWidth + horizontal}px`,\n lineHeight: `${buttons.offsetHeight - vertical * 2}px`\n };\n }\n\n onInput(ev: KeyboardEvent): boolean {\n const input = ev.target as HTMLInputElement;\n const changed = input.value !== this.previousValue;\n this.previousValue = input.value;\n this.chipDropdown.show();\n if (ev.ctrlKey) {\n if (ev.key == \"z\") {\n const fn = this.undoList.pop();\n if (ObjectUtils.isFunction(fn)) {\n fn();\n }\n return false;\n }\n return false;\n }\n if (ev.key === \"Enter\" || ev.key === \"Tab\") {\n return this.enterOption(input.value);\n }\n if (ev.key === \"Backspace\" && !input.value && !changed && this.valueOptions.length > 0) {\n this.makeUndo();\n this.updateValues(this.valueOptions.slice(0, this.valueOptions.length - 1));\n this.onTouched(this.value);\n return false;\n }\n this.filterOptions();\n return true;\n }\n\n onBlur(ev: FocusEvent): void {\n if (this.chipDropdown.isOpened) return;\n const input = ev.target as HTMLInputElement;\n this.enterOption(input.value);\n }\n\n enterOption(src: string | number): boolean {\n const value = String(src);\n let option = this.createOption(value);\n if (!option && value && this.filteredOptions?.length === 1) {\n const regex = new RegExp(value, \"gi\");\n option = this.filteredOptions.find(o => o.label?.match(regex));\n }\n if (!option || (this.unique && this.valueOptions.findIndex(o => o.value === option.value) >= 0)) {\n return true;\n }\n this.makeUndo();\n this.updateValues(this.multiple ? this.valueOptions.concat(option) : [option]);\n this.onTouched(this.value);\n const input = this.chipInput?.nativeElement;\n if (input) {\n input.value = \"\";\n setTimeout(input.focus.bind(input), 500);\n }\n this.chipDropdown.hide();\n return false;\n }\n\n trackBy(index: number, option: ChipOption): string {\n return `${option.value}-${option.label}`;\n }\n\n protected makeUndo(): void {\n const value = this.valueOptions;\n this.undoList.push(() => this.updateValues(value));\n }\n\n protected createOption(value: string | number): ChipOption {\n const label = String(value);\n if (this.options) {\n const option =\n (!this.strict ? null : this.options.find(o => o.label === label)) ??\n this.options.find(o => o.value === value);\n return option ?? (this.strict || !label ? null : {\n value,\n label,\n });\n }\n return !label ? null : {\n value,\n label,\n };\n }\n\n protected createValueOptions(values: ChipValue[]): ChipOption[] {\n values = values.filter(ObjectUtils.isDefined).map(v => {\n if (this.type == \"number\") {\n v = String(v || \"0\").replace(/([^-\\d|.,])/gi, \"\").replace(/\\./gi, \",\");\n const value = Math.round((parseFloat(v.replace(/,/gi, \".\")) || 0) / this.step) * this.step;\n return Math.min(this.max, Math.max(this.min, value));\n }\n return String(v || \"0\").substring(0, this.maxLength);\n });\n const options = values.map(id => {\n return this.createOption(id);\n }).filter(o => !!o);\n return this.multiple ? options : options.slice(0, 1);\n }\n\n protected updateValue(): ChipValue | ChipValue[] {\n this.statuses = this.valueOptions.map(o => {\n if (this.type == \"number\") {\n return Number(o.value) < this.min ? \"invalid\" : \"valid\";\n }\n return String(o.value).length < this.minLength ? \"invalid\" : \"valid\";\n });\n return this.multiple\n ? this.valueOptions.map(o => o.value)\n : this.valueOptions[0]?.value ?? null;\n }\n\n protected filterOptions(): void {\n if (!this.options) {\n this.filteredOptions = null;\n return;\n }\n const value = (this.chipInput?.nativeElement?.value || \"\").toLowerCase();\n this.filteredOptions = this.options.filter(o => {\n return o.label?.toLowerCase().includes(value);\n });\n if (!this.unique) return;\n const values = this.valueOptions.map(o => o.value);\n this.filteredOptions = this.filteredOptions.filter(o => !values.includes(o.value));\n }\n}\n","<div dd\n attachTo=\"root\"\n [closeInside]=\"false\"\n [autoPlacement]=\"autoPlacement\"\n [ngClass]=\"{disabled: disabled}\" class=\"chips\" #chipDropdown=\"dropdown\">\n <input class=\"chips-input\"\n dropdownToggle\n [switch]=\"false\"\n [attr.data-testid]=\"testId + '-input'\"\n [type]=\"type == 'number' ? 'number': 'text'\"\n [min]=\"min\"\n [max]=\"max\"\n [step]=\"step\"\n [disabled]=\"disabled\"\n [placeholder]=\"valueOptions.length == 0 && placeholder | translate\"\n [ngStyle]=\"inputStyles\"\n (blur)=\"onBlur($event)\"\n (keyup)=\"onInput($event)\"\n #chipInput/>\n <div class=\"chips-buttons\" #chipButtons [ngClass]=\"{disabled: disabled}\" (resize)=\"onResize()\">\n <ng-container *ngFor=\"let item of valueOptions; let ix = index; trackBy:trackBy\">\n <a class=\"chips-button\" [ngClass]=\"'chips-' + statuses[ix]\" (dblclick)=\"removeItem($event, ix)\">\n @if (item.picture) {\n <img [src]=\"item.picture | safe:'url'\"\n class=\"chip-picture\"\n referrerpolicy=\"no-referrer\" [attr.alt]=\"item.label\">\n\n }\n <span class=\"chips-label\"\n [attr.data-testid]=\"testId + '-label-' + ix\">{{ item.label }} </span>\n <close-btn class=\"chips-remove\"\n [attr.data-testid]=\"testId + '-delete-' + ix\"\n (click)=\"removeItem($event, ix)\" *ngIf=\"!disabled\"></close-btn>\n </a>\n </ng-container>\n </div>\n @if (options) {\n <div class=\"chips-dropdown\" *dropdownContent>\n <button [ngClass]=\"option.classes\"\n [disabled]=\"option.disabled\"\n (click)=\"enterOption(option.value)\"\n *ngFor=\"let option of filteredOptions\">\n <div class=\"select-option\">\n @if (option?.picture) {\n <img [src]=\"option.picture | safe:'url'\"\n class=\"select-option-picture\"\n referrerpolicy=\"no-referrer\" [attr.alt]=\"option.label\">\n }\n <div class=\"select-option-label\">\n {{ option.label }}\n </div>\n </div>\n </button>\n </div>\n }\n</div>\n","import {\n ChangeDetectorRef,\n Component,\n ContentChild,\n forwardRef,\n Input,\n OnChanges,\n SimpleChanges,\n TemplateRef,\n ViewEncapsulation\n} from \"@angular/core\";\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from \"@angular/forms\";\n\nimport {DragEventHandler} from \"../../common-types\";\nimport {checkTransitions} from \"../../utils/misc\";\nimport {ObjectUtils} from \"../../utils/object.utils\";\nimport {ArrayUtils} from \"../../utils/array.utils\";\n\ntype DropListItem = Record<string, any>;\n\ntype DropListId = string | number;\n\n@Component({\n standalone: false,\n encapsulation: ViewEncapsulation.None,\n selector: \"drop-list\",\n styleUrls: [\"./drop-list.component.scss\"],\n templateUrl: \"./drop-list.component.html\",\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DropListComponent),\n multi: true,\n }],\n})\nexport class DropListComponent implements OnChanges, ControlValueAccessor {\n\n @Input() disabled: boolean;\n @Input() unique: boolean;\n @Input() message: string;\n @Input() idField: string;\n @Input() labelField: string;\n @Input() value: DropListId[];\n @Input() context: DropListItem[];\n @Input() prepareItem: (i: DropListItem) => void;\n @Input() checkFn: DragEventHandler<boolean, \"data\">;\n @Input() dropFn: DragEventHandler<boolean, \"data\">;\n\n @ContentChild(\"itemTemplate\")\n itemTemplate: TemplateRef<any>;\n\n onChange: Function;\n onTouched: Function;\n valueMap: Record<DropListId, DropListItem>;\n\n remove: (index: number) => void;\n\n constructor(private cdr: ChangeDetectorRef) {\n this.disabled = false;\n this.unique = false;\n this.idField = \"id\";\n this.labelField = \"label\";\n this.value = [];\n this.context = [];\n this.prepareItem = () => {};\n this.checkFn = () => false;\n this.dropFn = () => false;\n this.valueMap = {};\n this.remove = index => {\n this.changeValue(this.value.filter((_, i) => i !== index));\n };\n }\n\n onDragEnter(ev: DragEvent, elem: HTMLElement, data: any) {\n ev.preventDefault();\n if (!elem || !ObjectUtils.isFunction(this.checkFn) || !this.checkFn({ev, elem, data})) {\n ev.dataTransfer.effectAllowed = \"none\";\n ev.dataTransfer.dropEffect = \"none\";\n return;\n }\n ev.dataTransfer.effectAllowed = \"move\";\n ev.dataTransfer.dropEffect = \"move\";\n elem.classList.add(\"drop-allowed\");\n }\n\n onDragLeave(ev: DragEvent, elem: HTMLElement) {\n ev.dataTransfer.effectAllowed = \"none\";\n ev.dataTransfer.dropEffect = \"none\";\n elem.classList.remove(\"drop-allowed\");\n }\n\n onDrop(ev: DragEvent, elem: HTMLElement) {\n ev.preventDefault();\n ev.stopPropagation();\n if (!elem) {\n return;\n }\n const data = JSON.parse(ev.dataTransfer.getData(\"itemData\") || \"{}\");\n elem.classList.remove(\"drop-allowed\");\n checkTransitions(elem, () => {\n checkTransitions(elem, () => {\n if (elem && ObjectUtils.isFunction(this.dropFn) && this.dropFn({ev, elem, data})) {\n // If drop is handled from outside function\n return;\n }\n const id = data[this.idField] || data.id;\n this.changeValue(this.value.concat([id]));\n });\n elem.classList.remove(\"dropped\");\n });\n elem.classList.add(\"dropped\");\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.context || changes.idField) {\n this.valueMap = this.context?.reduce((res, item) => {\n // In case this is a dynamic form option which stores real value under props\n item = Object.assign({}, item, item.props || {});\n // Prepare item\n this.prepareItem(item);\n\n const id = item[this.idField] || item.id;\n res[id] = item;\n return res;\n }, {}) || {};\n this.cdr.detectChanges();\n }\n }\n\n registerOnChange(fn: any) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n setDisabledState(val: boolean): void {\n this.disabled = val === true;\n this.cdr.markForCheck();\n }\n\n writeValue(obj: any): void {\n this.value = Array.isArray(obj) ? obj : this.value;\n this.cdr.detectChanges();\n }\n\n protected changeValue(value: DropListId[]): void {\n this.value = this.unique ? ArrayUtils.unique(value) : value;\n this.onChange?.(value);\n this.onTouched?.();\n }\n}\n","<ng-template #defaultTemplate let-item=\"item\">\n <div class=\"drop-list-item-label\">\n {{ item | getValue:labelField }}\n </div>\n</ng-template>\n<div class=\"drop-list\"\n #list\n (dragenter)=\"onDragEnter($event, list, this)\"\n (dragleave)=\"onDragLeave($event, list)\"\n (drop)=\"onDrop($event, list)\">\n <div class=\"drop-list-message\"\n [ngClass]=\"{'has-value': value?.length}\"\n [innerHTML]=\"message | translate | safe:'html'\"\n *ngIf=\"message\">\n </div>\n <ng-container *ngFor=\"let id of value; let ix = index\">\n <div class=\"drop-list-item\">\n <ng-template #noItemTemplate>\n <div class=\"drop-list-item-label just-id\">\n {{ id }}\n </div>\n </ng-template>\n <ng-container [ngTemplateOutlet]=\"itemTemplate || defaultTemplate\"\n [ngTemplateOutletContext]=\"{item: valueMap[id], id: id, remove: remove}\"\n *ngIf=\"valueMap[id]; else noItemTemplate\"></ng-container>\n <a class=\"remove-item-btn\" (click)=\"remove(ix)\"></a>\n </div>\n </ng-container>\n</div>\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, 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\">\n <ul class=\"pg-list\">\n <li class=\"page-item\" [ngClass]=\"{disabled: !hasPrev}\" *ngIf=\"boundaryLinks\">\n <a class=\"page-link boundary-link previous\" (click)=\"paginate(1)\"></a>\n </li>\n <li class=\"page-item\" [ngClass]=\"{disabled: !hasPrev}\" *ngIf=\"directionLinks\">\n <a class=\"page-link direction-link previous\" (click)=\"paginate(pagination.page - 1)\"></a>\n </li>\n <li class=\"page-item\" [ngClass]=\"{active: pagination.page == page}\" *ngFor=\"let page of pages\">\n <a class=\"page-link\" [ngClass]=\"{active: pagination.page == page}\" (click)=\"paginate(page)\">{{ page }}</a>\n </li>\n <li class=\"page-item\" [ngClass]=\"{disabled: !hasNext}\" *ngIf=\"directionLinks\">\n <a class=\"page-link direction-link\" (click)=\"paginate(pagination.page + 1)\"></a>\n </li>\n <li class=\"page-item\" [ngClass]=\"{disabled: !hasNext}\" *ngIf=\"boundaryLinks\">\n <a class=\"page-link boundary-link\" (click)=\"paginate(pagination.maxPage)\"></a>\n </li>\n </ul>\n</div>\n","import {\n AfterContentInit,\n AfterViewInit,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n Input,\n OnChanges, OnDestroy,\n QueryList,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from \"@angular/core\";\n\nimport {\n DragEventHandler,\n IPaginationData,\n ITableColumns,\n ITableDataQuery,\n ITableTemplates,\n PaginationItemContext,\n TableColumns, TableDataItems,\n TableDataLoader\n} from \"../../common-types\";\nimport {ObjectUtils} from \"../../utils/object.utils\";\nimport {UniqueUtils} from \"../../utils/unique.utils\";\nimport {checkTransitions} from \"../../utils/misc\";\n\nimport {DynamicTableTemplateDirective} from \"../../directives/dynamic-table-template.directive\";\nimport {PaginationDirective} from \"../../directives/pagination.directive\";\nimport {DropdownDirective} from \"../../directives/dropdown.directive\";\nimport {MathUtils} from \"../../utils/math.utils\";\nimport {Observable, of, Subscription} from \"rxjs\";\n\n@Component({\n standalone: false,\n encapsulation: ViewEncapsulation.None,\n selector: \"dynamic-table\",\n styleUrls: [\"./dynamic-table.component.scss\"],\n templateUrl: \"./dynamic-table.component.html\",\n})\nexport class DynamicTableComponent implements AfterContentInit, AfterViewInit, OnChanges, OnDestroy {\n\n @Input() dataLoader: TableDataLoader;\n @Input() data: TableDataItems | Observable<TableDataItems>;\n @Input() selected: any;\n @Input() page: number;\n @Input() urlParam: string;\n @Input() parallelData: TableDataItems;\n @Input() columns: TableColumns;\n\n /**\n * Parameter for displaying a simple filter search box\n */\n @Input() showFilter: boolean;\n\n /**\n * Parameter for specifying a label for filter\n */\n @Input() filterLabel: string;\n\n /**\n * Parameter for specifying a placeholder for filter\n */\n @Input() placeholder: string;\n\n /**\n * Parameter for displaying an item per page selector dropdown with the specified numbers\n */\n @Input() showItems: number[];\n\n /**\n * Parameter for setting how many items should be displayed by default\n */\n @Input() itemsPerPage: number;\n @Input() updateTime: number;\n @Input() filterTime: number;\n @Input() maxPages: number;\n @Input() directionLinks: boolean;\n @Input() boundaryLinks: boolean;\n @Input() orderBy: string;\n @Input() orderDescending: boolean;\n @Input() testId: string;\n @Input() titlePrefix: string;\n\n @Input() dragStartFn: DragEventHandler;\n @Input() dragEnterFn: DragEventHandler;\n @Input() dropFn: DragEventHandler<void>;\n\n tableId: string;\n templates: ITableTemplates;\n filter: string;\n query: ITableDataQuery;\n hasQuery: boolean;\n realColumns: ITableColumns;\n cols: string[];\n sortable: boolean;\n\n get items(): any[] {\n return !this.pagination ? [] : this.pagination.items;\n }\n\n protected localData: TableDataItems;\n protected subscription: Subscription;\n\n @ContentChild(\"rowTemplate\", {static: true})\n rowTemplate: TemplateRef<any>;\n\n @ContentChild(\"wrapperTemplate\", {static: true})\n wrapperTemplate: TemplateRef<any>;\n\n @ViewChild(\"columnsTemplate\", {static: true})\n columnsTemplate: TemplateRef<any>;\n\n @ViewChild(\"defaultRowTemplate\", {static: true})\n defaultRowTemplate: TemplateRef<any>;\n\n @ViewChild(\"defaultWrapperTemplate\", {static: true})\n defaultWrapperTemplate: TemplateRef<any>;\n\n @ViewChild(\"pagination\")\n protected pagination: PaginationDirective;\n\n @ContentChildren(DynamicTableTemplateDirective)\n protected templateDirectives: QueryList<DynamicTableTemplateDirective>;\n\n protected static compare(orderBy: string, a: PaginationItemContext, b: PaginationItemContext): number {\n a = a.item ? a.item[orderBy] : null;\n b = b.item ? b.item[orderBy] : null;\n return ObjectUtils.compare(a, b);\n }\n\n constructor(protected element: ElementRef<HTMLElement>) {\n this.dataLoader = this.loadLocalData;\n this.placeholder = \"\";\n this.tableId = UniqueUtils.uuid();\n this.orderBy = \"\";\n this.orderDescending = false;\n this.templates = {};\n this.filter = \"\";\n this.query = {};\n this.hasQuery = false;\n this.testId = \"table\";\n this.titlePrefix = \"label\";\n this.realColumns = {};\n this.cols = [];\n this.sortable = false;\n this.localData = [];\n }\n\n setProperty(name: string, value: any): void {\n const elem = this.element.nativeElement;\n if (!elem) return;\n elem.style.setProperty(`--${name}`, value);\n }\n\n ngAfterContentInit(): void {\n this.templates = this.templateDirectives.reduce((result, directive) => {\n if (ObjectUtils.isArray(directive.column)) {\n directive.column.forEach(column => {\n result[column] = directive;\n });\n return result;\n }\n if (!ObjectUtils.isString(directive.column) || directive.column.length == 0) return result;\n result[directive.column] = directive;\n return result;\n }, {});\n }\n\n ngAfterViewInit(): void {\n this.rowTemplate = this.rowTemplate || this.defaultRowTemplate;\n }\n\n ngOnDestroy(): void {\n this.subscription?.unsubscribe();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const orderBy = this.orderBy;\n if (changes.columns) {\n const columns = changes.columns.currentValue || [];\n this.realColumns = ObjectUtils.isArray(columns) ? columns.reduce((result, column) => {\n if (!ObjectUtils.isString(column) || column.length == 0)\n return result;\n result[column] = {title: `${this.titlePrefix}.${column}`, sort: column};\n return result;\n }, {}) : Object.keys(columns).reduce((result, key) => {\n const value = columns[key];\n result[key] = !value || ObjectUtils.isString(value)\n ? {title: `${this.titlePrefix}.${key}`, sort: value}\n : value;\n return result;\n }, {} as ITableColumns);\n this.cols = Object.keys(this.realColumns);\n this.cols.forEach(col => {\n const column = this.realColumns[col];\n column.filterType = column.filterType || \"text\";\n });\n const sortable = this.cols.filter(c => this.realColumns[c].sort);\n const query = this.query || {};\n this.sortable = sortable.length > 0;\n this.orderBy = sortable.includes(this.orderBy) ? this.orderBy : sortable[0] || null;\n this.query = this.cols.reduce((res, col) => {\n const value = query[col];\n if (!value) return res;\n res[col] = value;\n return res;\n }, {});\n this.setProperty(\"cell-width\", MathUtils.round(100 / this.cols.length, 4) + \"%\");\n }\n this.hasQuery = this.cols.some(col => this.realColumns[col].filter);\n if (changes.orderBy && this.realColumns && this.cols) {\n const sortable = this.cols.filter(c => this.realColumns[c].sort);\n this.sortable = sortable.length > 0;\n this.orderBy = sortable.includes(this.orderBy) ? this.orderBy : sortable[0] || null;\n }\n if (!changes.data && !changes.parallelData && !changes.dataLoader && !changes.itemsPerPage && !changes.orderDescending && orderBy === this.orderBy) return;\n const source = this.data instanceof Observable ? this.data : of(this.data || []);\n this.subscription?.unsubscribe();\n this.subscription = source.subscribe(data => {\n this.localData = data;\n this.refresh();\n });\n }\n\n onDragStart(ev: DragEvent, elem: HTMLElement, item: any) {\n if (!elem || !item || !ObjectUtils.isFunction(this.dragStartFn) || !this.dragStartFn({ev, elem, item})) {\n ev.preventDefault();\n ev.stopPropagation();\n return;\n }\n ev.dataTransfer.setData(\"itemData\", JSON.stringify(item));\n ev.dataTransfer.setData(item.type, \"type\");\n ev.dataTransfer.setData(item.id, \"id\");\n }\n\n onDragEnter(ev: DragEvent, elem: HTMLElement, item: any) {\n ev.preventDefault();\n if (!elem || !item || !ObjectUtils.isFunction(this.dragEnterFn) || !this.dragEnterFn({ev, elem, item})) {\n ev.dataTransfer.effectAllowed = \"none\";\n ev.dataTransfer.dropEffect = \"none\";\n return;\n }\n ev.dataTransfer.effectAllowed = \"move\";\n ev.dataTransfer.dropEffect = \"move\";\n elem.classList.add(\"drop-allowed\");\n }\n\n onDragLeave(ev: DragEvent, elem: HTMLElement) {\n ev.dataTransfer.effectAllowed = \"none\";\n ev.dataTransfer.dropEffect = \"none\";\n elem.classList.remove(\"drop-allowed\");\n }\n\n onDrop(ev: DragEvent, elem: HTMLElement, item: any) {\n ev.preventDefault();\n ev.stopPropagation();\n if (!elem || !item || !ObjectUtils.isFunction(this.dropFn)) {\n return;\n }\n const source = JSON.parse(ev.dataTransfer.getData(\"itemData\"));\n elem.classList.remove(\"drop-allowed\");\n checkTransitions(elem, () => {\n checkTransitions(elem, () => {\n this.dropFn({ev, elem, item, source});\n });\n elem.classList.remove(\"dropped\");\n });\n elem.classList.add(\"dropped\");\n }\n\n refresh(time?: number): void {\n if (!this.pagination) return;\n this.pagination.refresh(time);\n }\n\n setFilter(filter: string) {\n this.filter = filter;\n this.refresh(this.filterTime ?? 300);\n }\n\n setSorting(column: string, toggle?: DropdownDirective) {\n if (toggle) {\n return;\n }\n this.orderDescending = column == this.orderBy && !this.orderDescending;\n this.orderBy = column;\n this.refresh();\n }\n\n setQueryValue(c: string, value: string | boolean) {\n const col = this.realColumns[c];\n if (!col?.filter) return;\n switch (col.filterType) {\n case \"enum\":\n const set = new Set((this.query[c] || []) as string[]);\n const val = `${value}`;\n if (set.has(val)) {\n set.delete(val);\n if (set.size === 0) {\n delete this.query[c];\n break;\n }\n } else {\n set.add(val);\n }\n this.query[c] = Array.from(set);\n break;\n case \"checkbox\":\n if (this.query[c]) {\n delete this.query[c];\n break;\n }\n this.query[c] = true;\n break;\n default:\n if (!value) {\n delete this.query[c];\n break;\n }\n this.query[c] = value;\n break;\n }\n this.refresh(this.filterTime ?? 300);\n }\n\n setItemsPerPage(count: number) {\n this.itemsPerPage = count;\n this.refresh();\n }\n\n loadData = (page: number, itemsPerPage: number): Promise<IPaginationData> => {\n const orderBy = this.realColumns[this.orderBy]?.sort;\n return this.dataLoader(page, itemsPerPage, orderBy, this.orderDescending, this.filter, this.query);\n };\n\n protected async loadLocalData(page: number, rowsPerPage: number, orderBy: string, orderDescending: boolean, filter: string, query: ITableDataQuery): Promise<IPaginationData> {\n if (!this.localData) {\n return {\n total: 0,\n items: []\n };\n }\n const compare: (a: any, b: any) => number = orderDescending\n ? (a, b) => DynamicTableComponent.compare(orderBy, b, a)\n : (a, b) => DynamicTableComponent.compare(orderBy, a, b);\n const from = (page - 1) * rowsPerPage;\n const dataLength = this.localData.length;\n const length = Math.min(rowsPerPage, dataLength - from);\n const parallelData = this.parallelData || [];\n const filterRx = ObjectUtils.isStringWithValue(filter) ? new RegExp(filter, \"gi\") : null;\n let filterFn = !filterRx ? () => true : (ctx: PaginationItemContext) => {\n return this.cols.some(col => {\n const value = ctx.item[col];\n return `${value}`.match(filterRx);\n });\n };\n filterFn = Object.entries(query).reduce((fn, [key, filterValue]) => {\n if (!filterValue) return fn;\n const column = this.realColumns[key];\n if (!column) return fn;\n switch (column.filterType) {\n case \"enum\":\n const filterArr = filterValue as string[];\n return filterArr.length == 0 ? fn : (ctx) => {\n const value = ctx.item[key];\n return filterArr.includes(value) && fn(ctx);\n }\n case \"checkbox\":\n return (ctx) => {\n const value = ctx.item[key];\n return !!value && fn(ctx);\n };\n }\n const filterRx = new RegExp(`${filterValue}`, \"gi\");\n return (ctx) => {\n const value = ctx.item[key];\n return `${value}`.match(filterRx) && fn(ctx);\n };\n }, filterFn);\n const data = this.localData.map((item, ix) => {\n return new PaginationItemContext(item, parallelData[ix] || {}, dataLength, ix, ix);\n }).filter(filterFn);\n const items = orderBy ? data.sort(compare).splice(from, length) : data.splice(from, length);\n items.forEach((context, ix) => {\n context.index = ix;\n });\n return {\n total: dataLength,\n items: items\n };\n }\n}\n","<ng-template #columnTemplate let-context let-column=\"column\" let-template=\"template\">\n <ng-template #defaultTemplate let-column=\"column\" let-item=\"item\">\n <span>{{ item[column] == undefined || item[column] == null ? '-' : item[column] }}</span>\n </ng-template>\n <ng-template #pureTemplate>\n <ng-container [ngxTemplateOutlet]=\"template.ref\" [context]=\"context\"></ng-container>\n </ng-template>\n <td [ngClass]=\"'column-' + column\"\n [attr.data-testid]=\"testId + '-' + column + '-' + context.rowIndex\"\n *ngIf=\"!template || !template.pure; else pureTemplate\">\n <ng-container [ngxTemplateOutlet]=\"!template ? defaultTemplate : template.ref\"\n [context]=\"context\"></ng-container>\n </td>\n</ng-template>\n\n<ng-template #columnsTemplate let-context>\n <ng-container *ngFor=\"let column of cols\"\n [ngxTemplateOutlet]=\"columnTemplate\"\n [context]=\"context\"\n [additionalContext]=\"{\n template: templates[column],\n column: column\n }\"></ng-container>\n</ng-template>\n\n<ng-template #defaultRowTemplate let-context>\n <tr #elem\n [draggable]=\"!!dragStartFn\"\n [ngClass]=\"{active: selected === context.item}\"\n (dragstart)=\"onDragStart($event, elem, context.item)\"\n (dragenter)=\"onDragEnter($event, elem, context.item)\"\n (dragleave)=\"onDragLeave($event, elem)\"\n (drop)=\"onDrop($event, elem, context.item)\">\n <ng-container [ngxTemplateOutlet]=\"columnsTemplate\" [context]=\"context\"></ng-container>\n </tr>\n</ng-template>\n\n<ng-template #headerTemplate let-column=\"column\" let-toggle=\"toggle\">\n <ng-template #defaultCol>\n <span>{{ realColumns[column].title | translate }}</span>\n </ng-template>\n <ng-template #emptyCol>\n <span>-</span>\n </ng-template>\n <ng-container *ngIf=\"realColumns[column]; else emptyCol\">\n <a *ngIf=\"realColumns[column].sort; else defaultCol\"\n [ngClass]=\"['sort', orderBy !== column ? '' : (orderDescending ? 'sort-desc' : 'sort-asc')]\"\n (click)=\"setSorting(column, toggle)\">\n <span>{{ realColumns[column].title | translate }}</span>\n </a>\n </ng-container>\n</ng-template>\n\n<div class=\"dynamic-table\">\n <div class=\"table-features-row\">\n <ng-content select=\"[table-features-before]\"></ng-content>\n @if (showFilter) {\n <div class=\"table-input-wrap table-search-filter\">\n <label *ngIf=\"filterLabel\" [attr.for]=\"tableId\">\n {{ filterLabel | translate }}\n </label>\n <input type=\"text\"\n class=\"search-input\"\n [attr.id]=\"tableId\"\n [attr.data-testid]=\"testId + '-filter-input'\"\n [placeholder]=\"placeholder | translate\"\n [ngModel]=\"filter\"\n (ngModelChange)=\"setFilter($event)\"/>\n </div>\n }\n @if (sortable) {\n <dropdown-box componentClass=\"sort-dropdown\" #sortDd>\n <ng-container toggle-content\n [ngTemplateOutlet]=\"headerTemplate\"\n [ngTemplateOutletContext]=\"{column: orderBy, toggle: sortDd}\"></ng-container>\n <ul>\n <ng-container *ngFor=\"let column of cols\">\n <li [ngClass]=\"'sort-column sort-' + column\" *ngIf=\"realColumns[column].sort\">\n <ng-container [ngTemplateOutlet]=\"headerTemplate\"\n [ngTemplateOutletContext]=\"{column: column}\"></ng-container>\n </li>\n </ng-container>\n </ul>\n </dropdown-box>\n }\n @if (showItems) {\n <div class=\"table-input-wrap table-items-count\">\n <label>\n {{ 'label.items.before' | translate }}\n </label>\n <dropdown-box>\n <ng-container toggle-content>\n {{ itemsPerPage }}\n </ng-container>\n <ul>\n <ng-container *ngFor=\"let count of showItems\">\n <li [ngClass]=\"'item-count count-' + count\" (click)=\"setItemsPerPage(count)\">\n {{ count }}\n </li>\n </ng-container>\n </ul>\n </dropdown-box>\n <label>\n {{ 'label.items.after' | translate }}\n </label>\n </div>\n }\n <ng-content select=\"[table-features-after]\"></ng-content>\n </div>\n <div class=\"table-content-row\"\n #pagination=\"pagination\"\n [pagination]=\"loadData\"\n [page]=\"page\"\n [itemsPerPage]=\"itemsPerPage\"\n [updateTime]=\"updateTime\">\n <pagination-menu [urlParam]=\"urlParam\" [maxSize]=\"maxPages\" [directionLinks]=\"directionLinks\"\n [boundaryLinks]=\"boundaryLinks\"></pagination-menu>\n <div class=\"table-responsive\">\n <ng-template #defaultWrapperTemplate>\n <table class=\"table table-striped\">\n <thead>\n <tr>\n <th *ngFor=\"let column of cols\" [ngClass]=\"'header-column column-' + column\">\n <ng-container [ngTemplateOutlet]=\"headerTemplate\"\n [ngTemplateOutletContext]=\"{column: column}\"></ng-container>\n </th>\n </tr>\n <tr *ngIf=\"hasQuery\">\n <th *ngFor=\"let column of cols\" [ngClass]=\"['column-' + column, 'filter-column']\">\n <ng-container *ngIf=\"realColumns[column].filter\" [ngSwitch]=\"realColumns[column].filterType\">\n <ng-container *ngSwitchCase=\"'enum'\">\n <ng-template #optionItem let-option=\"option\">\n {{ (realColumns[column].enumPrefix ? realColumns[column].enumPrefix + '.' + option : option) | translate }}\n </ng-template>\n <dropdown-box componentClass=\"filter-box\"\n [ngClass]=\"'filter-box-' + column\" [closeInside]=\"false\">\n <ng-container toggle-content>\n <span class=\"toggle-placeholder\" *ngIf=\"!query[column]\">\n {{ realColumns[column].title | translate }}\n </span>\n <span [ngClass]=\"['option-' + option, column + '-option-' + option, option]\"\n *ngFor=\"let option of query[column] | values; let ix = index\">\n <ng-container *ngIf=\"ix > 0\">, </ng-container>\n <ng-container [ngTemplateOutlet]=\"optionItem\"\n [ngTemplateOutletContext]=\"{option: option}\"></ng-container>\n </span>\n </ng-container>\n <ul>\n <li [ngClass]=\"[column + '-option', 'option-' + option, option]\"\n (click)=\"setQueryValue(column, option)\"\n *ngFor=\"let option of realColumns[column].enum\">\n <a [ngClass]=\"'toggle-link-' + column\">\n <input type=\"checkbox\" [checked]=\"query[column] | includes: option\">\n <ng-container [ngTemplateOutlet]=\"optionItem\"\n [ngTemplateOutletContext]=\"{option: option}\"></ng-container>\n </a>\n </li>\n </ul>\n </dropdown-box>\n </ng-container>\n <ng-container *ngSwitchCase=\"'checkbox'\">\n <input type=\"checkbox\"\n [attr.data-testid]=\"testId + '-filter-' + column\"\n [placeholder]=\"realColumns[column].title | translate\"\n [ngModel]=\"query[column]\"\n (ngModelChange)=\"setQueryValue(column, $event)\"/>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <input class=\"search-input\"\n type=\"text\"\n [attr.data-testid]=\"testId + '-filter-' + column\"\n [placeholder]=\"realColumns[column].title | translate\"\n [ngModel]=\"query[column]\"\n (ngModelChange)=\"setQueryValue(column, $event)\"/>\n </ng-container>\n </ng-container>\n </th>\n </tr>\n </thead>\n <tbody>\n <ng-container *paginationItem=\"let context\"\n [ngxTemplateOutlet]=\"rowTemplate\"\n [context]=\"context\"\n [additionalContext]=\"this\"></ng-container>\n </tbody>\n </table>\n </ng-template>\n\n <div class=\"table-wrapper\">\n <ng-content select=\"[table-top]\"></ng-content>\n <ng-container [ngxTemplateOutlet]=\"wrapperTemplate || defaultWrapperTemplate\"\n [context]=\"this\"></ng-container>\n <ng-content select=\"[table-bottom]\"></ng-content>\n </div>\n </div>\n <pagination-menu [urlParam]=\"urlParam\" [maxSize]=\"maxPages\" [directionLinks]=\"directionLinks\"\n [boundaryLinks]=\"boundaryLinks\"></pagination-menu>\n </div>\n</div>\n","import {Component, ViewEncapsulation} from \"@angular/core\";\n\n@Component({\n standalone: false,\n encapsulation: ViewEncapsulation.None,\n selector: \"fake-module-component\",\n template: \"\",\n})\nexport class FakeModuleComponent {\n\n}\n","import {Component, Input, ViewEncapsulation} from \"@angular/core\";\nimport {IconProps} from \"../../common-types\";\n\n@Component({\n standalone: false,\n encapsulation: ViewEncapsulation.None,\n selector: \"icon-default\",\n templateUrl: \"./icon-default.component.html\",\n styleUrls: [\"./icon-default.component.scss\"]\n})\nexport class IconDefaultComponent implements IconProps {\n\n @Input() name: string = \"trash\";\n\n}\n","<i class=\"fa-solid\" [ngClass]=\"'fa-' + name\"></i>\n","import {Component, Input, OnChanges} from \"@angular/core\";\nimport {\n CanvasItemDirection,\n Frame,\n InteractiveCanvas,\n InteractiveCanvasItem,\n InteractiveCanvasParams,\n IPoint,\n IShape\n} from \"../../common-types\";\nimport {Point, Rect} from \"../../utils/geometry\";\nimport {MaybePromise} from \"../../helper-types\";\nimport {clamp, overflow} from \"../../utils/math.utils\";\n\n@Component({\n standalone: false,\n selector: \"__interactive-item__\",\n template: \"\"\n})\nexport class InteractiveItemComponent implements OnChanges, InteractiveCanvasItem {\n\n protected pos: Point;\n protected mFrame: Rect;\n protected mShapes: IShape[];\n protected mDistances: Map<InteractiveCanvasItem, number>;\n\n get frame(): Frame {\n return this.mFrame;\n }\n\n get shapes(): ReadonlyArray<IShape> {\n return this.mShapes;\n }\n\n get x(): number {\n return this.pos.x;\n }\n\n @Input()\n set x(value: number) {\n if (isNaN(value) || value === this.pos.x) return;\n this.pos = new Point(value, this.pos.y);\n this.validPosition = this.pos;\n }\n\n get y(): number {\n return this.pos.y;\n }\n\n @Input()\n set y(value: number) {\n if (isNaN(value) || value === this.pos.y) return;\n this.pos = new Point(this.pos.x, value);\n this.validPosition = this.pos;\n }\n\n get position() {\n return this.pos;\n }\n\n @Input()\n set position(value: IPoint) {\n if (typeof value !== \"object\" || isNaN(value.x) || isNaN(value.y) || value === this.pos) return;\n this.pos = new Point(value.x, value.y);\n this.validPosition = this.pos;\n }\n\n get isValid(): boolean {\n return this.valid;\n }\n\n get validPosition(): IPoint {\n return this.validPos;\n }\n\n set validPosition(value: IPoint) {\n if (typeof value !== \"object\" || isNaN(value.x) || isNaN(value.y) || value === this.validPos) return;\n this.validPos = new Point(value.x, value.y);\n this.valid = true;\n }\n\n get hovered(): boolean {\n return this.canvas?.hoveredItem === this;\n }\n\n set hovered(value: boolean) {\n if (!this.canvas) return;\n this.canvas.hoveredItem = value ? this : null;\n }\n\n get selected(): boolean {\n return this.canvas?.selectedItem === this;\n }\n\n set selected(value: boolean) {\n if (!this.canvas) return;\n this.canvas.selectedItem = value ? this : null;\n }\n\n @Input() direction: CanvasItemDirection;\n @Input() disabled: boolean;\n\n active: boolean;\n canvas: InteractiveCanvas;\n index: number;\n canvasParams: InteractiveCanvasParams;\n\n protected valid: boolean;\n protected validPos: Point;\n\n constructor() {\n this.active = false;\n this.index = -1;\n this.canvasParams = {};\n this.valid = true;\n this.pos = Point.Zero;\n this.direction = \"none\";\n this.mFrame = new Rect(0, 0, 3, 3);\n this.mShapes = [];\n this.mDistances = new Map();\n }\n\n draw(ctx: CanvasRenderingContext2D, shape: IShape): MaybePromise<void> {\n shape.draw(ctx, 1);\n ctx.fill();\n ctx.stroke();\n }\n\n ngOnChanges(): void {\n if (!this.canvas) return;\n this.calcShapes();\n }\n\n calcShapes(): void {\n const ratio = this.canvas.ratio ?? 1;\n const x = this.pos.x * ratio;\n const y = this.pos.y * ratio;\n this.mShapes = this.canvas.cycles.map(pan => this.calcShape(x, y + pan));\n }\n\n hit(point: Point): boolean {\n for (const shape of this.shapes) {\n if (shape.intersects(point)) return true;\n }\n return false;\n }\n\n moveTo(x: number, y: number): void {\n if (!this.canvas || this.direction === \"none\") return;\n const target = this.restrictPosition(\n this.direction === \"vertical\" ? this.pos.x : x,\n this.direction === \"horizontal\" ? this.pos.y : y\n );\n this.pos = new Point(target);\n this.calcShapes();\n this.valid = this.checkIsValid();\n this.validPos = this.valid ? this.pos : this.validPos;\n }\n\n moveBy(dx: number, dy: number): void {\n const {x, y} = this.pos;\n this.moveTo(x + dx, y + dy);\n }\n\n moveX(x: number): void {\n this.moveTo(x, this.pos.y);\n }\n\n moveY(y: number): void {\n this.moveTo(this.pos.x, y);\n }\n\n moveEnd(): void {\n this.mDistances.clear();\n if (this.valid) return;\n this.pos = this.validPos;\n this.valid = true;\n this.calcShapes();\n }\n\n protected restrictPosition(x: number, y: number): IPoint {\n return {\n x: clamp(x, this.canvas.xRange),\n y: this.canvas.isInfinite\n ? overflow(y, this.canvas.yRange)\n : clamp(y, this.canvas.yRange)\n }\n }\n\n protected checkIsValid(): boolean {\n return this.isValidByParams() &&\n this.canvas.items.every(other => this === other || this.isValidByDistance(other));\n }\n\n protected isValidByParams(): boolean {\n return !this.shapes.some(shape => {\n return this.canvas.excludedAreas.some(ex => {\n return shape.intersects(ex);\n });\n });\n }\n\n protected isValidByDistance(other: InteractiveCanvasItem): boolean {\n if (!this.mDistances.has(other)) {\n this.mDistances.set(other, this.distToPixels(this.getMinDistance(other)));\n }\n const minPixels = this.mDistances.get(other);\n return !this.shapes.some(shape => {\n return other.shapes.some(os => {\n return shape.distance(os) <= minPixels;\n });\n });\n }\n\n protected distToPixels(value: number): number {\n return !this.canvas ? 1 : Math.max(1, (isNaN(value) || value < 0 ? 0 : value) * (this.canvas.ratio ?? 1));\n }\n\n protected getMinDistance(other: InteractiveCanvasItem): number {\n return !other ? 0 : null;\n }\n\n protected calcShape(x: number, y: number): IShape {\n return new Point(x, y);\n }\n}\n","import {\n Component,\n contentChildren,\n effect,\n ElementRef,\n HostListener, inject,\n input,\n model,\n OnDestroy,\n OnInit,\n output,\n Renderer2,\n untracked,\n ViewChild\n} from \"@angular/core\";\n\nimport {\n CanvasPaintFunc,\n CanvasResizeMode,\n InteractiveCanvas,\n InteractiveCanvasItem,\n InteractiveCanvasParams,\n InteractiveCanvasPointer,\n InteractiveCanvasRenderer,\n InteractivePanEvent,\n IPoint,\n RangeCoords\n} from \"../../common-types\";\nimport {Point, Rect, toRadians} from \"../../utils/geometry\";\nimport {normalizeRange, overflow} from \"../../utils/math.utils\";\nimport {UniversalService} from \"../../services/universal.service\";\n\nimport {InteractiveItemComponent} from \"./interactive-item.component\";\nimport {injectOptions} from \"../../utils/misc\";\n\nconst emptyDash: number[] = [];\n\n@Component({\n standalone: false,\n selector: \"interactive-canvas\",\n styleUrls: [\"./interactive-canvas.component.scss\"],\n templateUrl: \"./interactive-canvas.component.html\"\n})\nexport class InteractiveCanvasComponent implements InteractiveCanvas, OnInit, OnDestroy {\n\n /**\n * Injectable options\n * @private\n */\n protected readonly options = injectOptions({\n infinite: false,\n resizeMode: \"fit\" as CanvasResizeMode,\n panOffset: 0\n });\n\n protected readonly renderer = inject(Renderer2);\n\n protected readonly universal = inject(UniversalService);\n\n /**\n * Is the canvas infinitely scrollable?\n */\n readonly infinite = input(this.options.infinite);\n readonly resizeMode = input<CanvasResizeMode>(this.options.resizeMode);\n readonly horizontal = input(false);\n\n /**\n * Real life-size width of the canvas\n */\n readonly width = input(100);\n /**\n * Real life-size height of the canvas\n */\n readonly height = input(100);\n\n /**\n * Canvas params\n */\n readonly params = input({}, {\n transform: (v: InteractiveCanvasParams) => v || {}\n });\n\n /**\n * Model signal for selected index\n */\n readonly selectedIndex = model(0);\n /**\n * Relative offset of the panning. It is based on the rendered canvas height\n */\n readonly panOffset = input(this.options.panOffset);\n readonly renderCtx = input<Record<string, any>>({});\n readonly beforeItems = input<ReadonlyArray<InteractiveCanvasRenderer>>([]);\n readonly afterItems = input<ReadonlyArray<InteractiveCanvasRenderer>>([]);\n\n readonly onRotate = output<number>();\n readonly onItemPan = output<InteractivePanEvent>();\n readonly onItemPanned = output<InteractivePanEvent>();\n readonly onPan = output<InteractivePanEvent>();\n readonly onPanned = output<InteractivePanEvent>();\n\n readonly itemList = contentChildren(InteractiveItemComponent);\n\n get isInfinite(): boolean {\n return this.infinite();\n }\n\n get realWidth(): number {\n return this.width();\n }\n\n get realHeight(): number {\n return this.height();\n }\n\n get items(): ReadonlyArray<InteractiveItemComponent> {\n return this.itemList();\n }\n\n get canvas(): HTMLCanvasElement {\n return this.canvasElem?.nativeElement;\n }\n\n get lockedItem(): InteractiveItemComponent {\n return this.items[this.lockedIndex];\n }\n\n get selectedItem(): InteractiveItemComponent {\n return this.items[this.selectedIndex()];\n }\n\n set selectedItem(item: InteractiveItemComponent) {\n const ix = !item ? -1 : this.items.indexOf(item);\n const selected = untracked(() => this.selectedIndex());\n if (ix === selected) return;\n this.selectedIndex.set(ix);\n }\n\n get hoveredItem(): InteractiveItemComponent {\n return this.items[this.hoveredIndex];\n }\n\n set hoveredItem(item: InteractiveItemComponent) {\n this.hoveredIndex = !item ? -1 : this.items.indexOf(item);\n }\n\n xRange: RangeCoords;\n yRange: RangeCoords;\n\n ratio: number;\n styles: CSSStyleDeclaration;\n ctx: CanvasRenderingContext2D;\n canvasWidth: number;\n canvasHeight: number;\n fullHeight: number;\n viewRatio: number;\n\n rotation: number;\n basePan: number;\n cycles: number[];\n excludedAreas: Rect[];\n\n protected tempCanvas: HTMLCanvasElement;\n protected shouldDraw: boolean;\n protected hoveredIndex: number;\n\n @ViewChild(\"containerElem\", {static: true})\n protected containerElem: ElementRef<HTMLDivElement>;\n\n @ViewChild(\"canvasElem\", {static: true})\n protected canvasElem: ElementRef<HTMLCanvasElement>;\n\n protected touched: boolean;\n protected panStartRotation: number;\n protected panStartPos: IPoint;\n protected lockedIndex: number;\n protected oldLength: number;\n\n constructor() {\n this.tempCanvas = this.universal.isServer ? null : document.createElement(\"canvas\");\n this.shouldDraw = !this.universal.isServer;\n this.hoveredIndex = null;\n this.oldLength = 0;\n\n this.xRange = [0, 1];\n this.yRange = [0, 1];\n this.ratio = 1;\n this.styles = null;\n this.ctx = null;\n this.canvasWidth = 0;\n this.canvasHeight = 0;\n this.rotation = 0;\n this.basePan = 0;\n this.cycles = [0];\n this.excludedAreas = [];\n\n this.touched = false;\n this.panStartRotation = 0;\n this.panStartPos = Point.Zero;\n\n effect(() => {\n const items = this.itemList();\n const index = untracked(() => this.selectedIndex());\n const grow = items.length > this.oldLength;\n items.forEach((item, ix) => {\n item.canvas = this;\n item.index = ix;\n });\n this.fixRotation();\n const last = Math.max(0, items.length - 1);\n const selected = Math.min(grow ? last : index, last);\n this.selectedItem = items[selected];\n this.oldLength = items.length;\n });\n\n effect(() => {\n const realWidth = this.width();\n const realHeight = this.height();\n const params = this.params();\n this.xRange = normalizeRange(params.xRange || [0, realWidth]);\n this.yRange = normalizeRange(params.yRange || [0, realHeight]);\n this.resize();\n });\n }\n\n ngOnInit() {\n this.redraw();\n }\n\n ngOnDestroy() {\n this.shouldDraw = false;\n }\n\n async tempPaint(cb: CanvasPaintFunc): Promise<void> {\n const mainCanvas = this.canvas;\n const mainCtx = mainCanvas.getContext(\"2d\");\n const canvas = this.tempCanvas;\n const ctx = canvas.getContext(\"2d\");\n const transform = mainCtx.getTransform();\n\n canvas.width = mainCanvas.width;\n canvas.height = mainCanvas.height;\n\n ctx.globalCompositeOperation = \"source-over\";\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.setTransform(transform);\n\n mainCtx.resetTransform();\n mainCtx.globalCompositeOperation = await cb(ctx) || \"source-over\";\n mainCtx.drawImage(canvas, 0, 0);\n mainCtx.globalCompositeOperation = \"source-over\";\n mainCtx.setTransform(transform);\n\n ctx.resetTransform();\n }\n\n resize(): void {\n const realWidth = this.width();\n const realHeight = this.height();\n const horizontal = this.horizontal();\n const resizeMode = this.resizeMode();\n if (!this.canvasElem || !this.containerElem) return;\n\n const canvas = this.canvasElem.nativeElement;\n const container = this.containerElem.nativeElement;\n // Calculate canvas size\n const axisX = horizontal ? \"height\" : \"width\";\n const axisY = horizontal ? \"width\" : \"height\";\n const resize = resizeMode == \"fit\" ? Math.min : Math.max;\n canvas.width = container.clientWidth;\n canvas.height = container.clientHeight;\n this.ratio = resize(canvas[axisX] / realWidth, canvas[axisY] / realHeight);\n if (resizeMode == \"fit\") {\n canvas[axisX] = realWidth * this.ratio;\n canvas[axisY] = realHeight * this.ratio;\n }\n this.styles = getComputedStyle(canvas);\n this.ctx = canvas.getContext(\"2d\");\n this.canvasWidth = canvas[axisX];\n this.canvasHeight = canvas[axisY];\n this.fullHeight = this.realHeight * this.ratio;\n this.viewRatio = Math.round(this.canvasHeight / this.fullHeight * 100) / 100;\n this.fixRotation();\n }\n\n onTouchStart($event: TouchEvent): void {\n this.hoveredIndex = this.getIndexUnderPointer($event.touches.item(0));\n this.lockedIndex = this.hoveredIndex;\n this.selectItem();\n }\n\n @HostListener(\"window:touchend\")\n onTouchEnd(): void {\n this.touched = false;\n }\n\n onMouseDown($event: MouseEvent): void {\n this.lockedIndex = this.getIndexUnderPointer($event);\n this.selectItem();\n }\n\n @HostListener(\"window:mouseup\")\n onMouseUp(): void {\n this.touched = false;\n }\n\n onMouseMove($event: MouseEvent): void {\n if (this.touched) return;\n this.hoveredIndex = this.getIndexUnderPointer($event);\n this.updateCursor();\n }\n\n onMouseLeave(): void {\n if (this.touched) return;\n this.hoveredIndex = null;\n this.updateCursor();\n }\n\n onPanStart(): void {\n this.panStartRotation = this.rotation;\n this.panStartPos = this.lockedItem?.position || Point.Zero;\n }\n\n onPanMove($event: any): void {\n const item = this.lockedItem;\n const horizontal = untracked(() => this.horizontal());\n const deltaX = $event.deltaX / this.ratio;\n const deltaY = $event.deltaY / this.ratio;\n const data: InteractivePanEvent = {\n canvas: this,\n item,\n deltaX,\n deltaY\n };\n if (horizontal) {\n data.deltaX = -deltaY;\n data.deltaY = +deltaX;\n }\n if (item) {\n item.moveTo(this.panStartPos.x + data.deltaX, this.panStartPos.y + data.deltaY);\n this.onItemPan.emit(data);\n return;\n }\n const infinite = untracked(() => this.infinite());\n if (!infinite) return;\n this.rotation = this.panStartRotation + (horizontal ? deltaX : deltaY) / this.realHeight * 360;\n this.fixRotation();\n this.onPan.emit(data);\n }\n\n onPanEnd(): void {\n const item = this.lockedItem;\n const data: InteractivePanEvent = {\n canvas: this,\n deltaX: 0,\n deltaY: 0,\n item\n };\n if (item) {\n item.moveEnd();\n this.onItemPanned.emit(data);\n } else {\n this.onPanned.emit(data);\n }\n this.lockedIndex = -1;\n }\n\n protected fixRotation(): void {\n // No need to track params changes because this function will be called from an effect\n // already depending on params anyway\n const params = untracked(() => this.params());\n if (this.fullHeight <= 0) return;\n this.rotation = overflow(Math.round(this.rotation * 100) / 100, -180, 180);\n this.basePan = this.rotation / 360 * this.fullHeight\n + this.canvasHeight * untracked(() => this.panOffset());\n this.cycles = this.infinite\n ? [this.basePan - this.fullHeight, this.basePan, this.basePan + this.fullHeight] : [0];\n this.excludedAreas = (params.excludedAreas || []).flatMap(coords => {\n const x = coords.x * this.ratio;\n const y = coords.y * this.ratio;\n const width = coords.width * this.ratio;\n const height = coords.height * this.ratio;\n return this.cycles.map(cycle => {\n return new Rect(x, y + cycle, width, height);\n });\n });\n this.items.forEach(item => {\n item.canvasParams = params;\n item.calcShapes();\n });\n this.onRotate.emit(this.rotation);\n }\n\n protected selectItem(): void {\n this.touched = true;\n const item = this.items[this.lockedIndex];\n if (!item) return;\n this.selectedItem = item;\n }\n\n protected toCanvasPoint(pointer: InteractiveCanvasPointer): Point {\n if (!pointer || !this.canvas) return null;\n const canvasRect = this.canvas?.getBoundingClientRect();\n return this.horizontal()\n ? new Point(canvasRect.bottom - pointer.clientY, pointer.clientX - canvasRect.left)\n : new Point(pointer.clientX - canvasRect.left, pointer.clientY - canvasRect.top);\n }\n\n protected getIndexUnderPointer(pointer: InteractiveCanvasPointer): number {\n const point = this.toCanvasPoint(pointer);\n if (!point || !this.items) return -1;\n const length = this.items.length;\n for (let ix = 0; ix < length; ix++) {\n const item = this.items[ix];\n if (item?.hit(point)) {\n return item.disabled ? -1 : ix;\n }\n }\n return -1;\n }\n\n protected updateCursor(): void {\n const cursor = this.getCursor();\n this.renderer.setStyle(this.containerElem.nativeElement, \"cursor\", cursor);\n }\n\n protected getCursor(): string {\n const hovered = this.hoveredItem;\n if (!hovered) return \"default\";\n switch (hovered.direction) {\n case \"free\":\n return \"all-scroll\";\n case \"horizontal\":\n return \"\";\n case \"vertical\":\n return \"row-resize\";\n }\n return \"pointer\";\n }\n\n protected redraw() {\n if (!this.shouldDraw) return;\n if (!this.ctx) {\n requestAnimationFrame(() => this.redraw());\n return;\n }\n this.draw().then(() => {\n requestAnimationFrame(() => this.redraw());\n });\n }\n\n protected async drawItems(): Promise<void> {\n const ctx = this.ctx;\n const lockedItem = this.lockedItem;\n for (const item of this.items) {\n if (item !== lockedItem) {\n await this.drawItem(ctx, item);\n }\n }\n if (!lockedItem) return;\n await this.drawItem(ctx, lockedItem);\n }\n\n protected async drawItem(ctx: CanvasRenderingContext2D, item: InteractiveCanvasItem): Promise<void> {\n for (const shape of item.shapes) {\n ctx.save();\n ctx.translate(shape.x, shape.y);\n ctx.setLineDash(emptyDash);\n ctx.lineWidth = 1;\n ctx.strokeStyle = \"black\";\n ctx.fillStyle = \"white\";\n await item.draw(ctx, shape);\n ctx.restore();\n }\n }\n\n protected async draw() {\n const ctx = this.ctx;\n const canvas = ctx.canvas;\n if (canvas.width < 1 || canvas.height < 1) return;\n ctx.lineWidth = 1;\n ctx.strokeStyle = \"black\";\n ctx.fillStyle = \"white\";\n ctx.setLineDash(emptyDash);\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.save();\n if (this.horizontal()) {\n ctx.rotate(-Math.PI / 2);\n ctx.translate(-this.canvasWidth, 0);\n }\n const renderCtx = untracked(() => this.renderCtx());\n const beforeItems = untracked(() => this.beforeItems());\n const afterItems = untracked(() => this.afterItems());\n try {\n for (const renderer of beforeItems) {\n await renderer(this, renderCtx);\n }\n await this.drawItems();\n for (const renderer of afterItems) {\n await renderer(this, renderCtx);\n }\n } catch (e) {\n console.warn(`There was an error rendering the canvas: ${e}`);\n }\n ctx.restore();\n }\n}\n","<div #containerElem\n [ngClass]=\"['interactive-canvas-container', horizontal() ? 'horizontal' : 'vertical']\"\n (resize)=\"resize()\"\n (touchstart)=\"onTouchStart($event)\"\n (mousedown)=\"onMouseDown($event)\"\n (mousemove)=\"onMouseMove($event)\"\n (mouseleave)=\"onMouseLeave()\"\n (panend)=\"onPanEnd()\"\n (panmove)=\"onPanMove($event)\"\n (panstart)=\"onPanStart()\">\n <canvas #canvasElem class=\"interactive-canvas-element\"></canvas>\n</div>\n","import {Component, effect, input, untracked} from \"@angular/core\";\n\nimport {IShape} from \"../../common-types\";\nimport {Circle, Rect} from \"../../utils/geometry\";\nimport {InteractiveItemComponent} from \"./interactive-item.component\";\n\n@Component({\n standalone: false,\n selector: \"interactive-circle\",\n template: \"\",\n providers: [\n {provide: InteractiveItemComponent, useExisting: InteractiveCircleComponent},\n ]\n})\nexport class InteractiveCircleComponent extends InteractiveItemComponent {\n\n readonly radius = input(10);\n\n constructor() {\n super();\n effect(() => {\n const radius = this.radius();\n this.mFrame = new Rect(0, 0, radius * 2, radius * 2);\n });\n }\n\n protected calcShape(x: number, y: number): IShape {\n const radius = untracked(() => this.radius());\n return new Circle(x, y, radius * this.canvas.ratio);\n }\n}\n","import {Component, effect, input, untracked} from \"@angular/core\";\nimport {IShape} from \"../../common-types\";\nimport {Rect} from \"../../utils/geometry\";\nimport {InteractiveItemComponent} from \"./interactive-item.component\";\n\n@Component({\n standalone: false,\n selector: \"interactive-rect\",\n template: \"\",\n providers: [\n {provide: InteractiveItemComponent, useExisting: InteractiveRectComponent},\n ]\n})\nexport class InteractiveRectComponent extends InteractiveItemComponent {\n\n readonly width = input(10);\n readonly height = input(10);\n readonly rotation = input(0);\n\n constructor() {\n super();\n effect(() => {\n this.mFrame = new Rect(0, 0, this.width(), this.height(), this.rotation());\n });\n }\n\n protected calcShape(x: number, y: number): IShape {\n const ratio = this.canvas.ratio;\n const width = untracked(() => this.width());\n const height = untracked(() => this.height());\n const rotation = untracked(() => this.rotation());\n return new Rect(x, y, width * ratio, height * ratio, rotation);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n effect,\n input,\n model,\n output, signal,\n TemplateRef,\n ViewEncapsulation\n} from \"@angular/core\";\nimport {ButtonSize, ButtonType, TabOption, TabValue} from \"../../common-types\";\nimport {TabsItemDirective} from \"../../directives/tabs-item.directive\";\nimport {switchClass} from \"../../utils/misc\";\n\nexport interface ExtendedTabOption extends TabOption {\n active?: boolean;\n template?: TemplateRef<any>;\n className?: string;\n}\n\n@Component({\n standalone: false,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: \"tabs\",\n templateUrl: \"./tabs.component.html\",\n styleUrls: [\"./tabs.component.scss\"]\n})\nexport class TabsComponent {\n\n readonly value = model<TabValue>();\n readonly options = input<TabOption[]>([]);\n readonly type = input(\"primary\" as ButtonType);\n readonly size = input(\"normal\" as ButtonSize);\n readonly testId = input(\"tabs\");\n readonly tabsClass = input(\"basic-tabs\");\n readonly tabItems = contentChildren(TabsItemDirective);\n readonly selectedChange = output<TabOption>();\n readonly template = signal<TemplateRef<any>>(null);\n\n readonly tabs = computed(() => {\n const options = Array.from(this.options() || []) as ExtendedTabOption[];\n const current = this.value();\n this.tabItems().forEach(item => {\n const value = item.value();\n switchClass(item.element?.nativeElement, \"hidden-tab\", current !== value);\n\n if (options.some(o => o.value === value)) return;\n\n const label = item.label();\n\n if (!label) return;\n\n options.push({\n value,\n label,\n classes: item.classes(),\n tooltip: item.tooltip(),\n icon: item.icon(),\n disabled: item.disabled(),\n template: item.template\n });\n });\n options.forEach(o => {\n const active = current === o.value;\n const classes = (Array.isArray(o.classes) ? o.classes : [o.classes || \"\"]).filter(c => !!c);\n classes.push(active ? \"active\" : \"inactive\");\n o.active = active;\n o.className = classes.join(\" \");\n });\n return options;\n });\n\n constructor() {\n effect(() => {\n const tabOptions = this.tabs();\n const selectedOption = tabOptions.find(o => o.active);\n if (tabOptions.length && !selectedOption) {\n this.value.set(tabOptions[0].value);\n return;\n }\n if (selectedOption) {\n this.template.set(selectedOption.template);\n }\n });\n }\n\n select(option: TabOption): void {\n this.value.set(option.value);\n this.selectedChange.emit(option);\n }\n}\n","@let tabList = tabs();\n@let tabType = type();\n@let tabSize = size();\n@let tabTemplate = template();\n@let testIdPrefix = testId() || \"tabs\";\n@if (tabList.length) {\n <ul class=\"ui-tabs\" [ngClass]=\"[tabsClass(), 'type-' + tabType]\" [attr.data-testid]=\"testIdPrefix\">\n @for (option of tabList; track option.value) {\n <li [ngClass]=\"option.className\" [attr.data-testid]=\"testIdPrefix + '-' + option.value\">\n <btn [label]=\"option.label\"\n [tooltip]=\"option.tooltip\"\n [icon]=\"option.icon\"\n [disabled]=\"option.disabled\"\n [type]=\"option.active ? tabType : 'transparent'\"\n [size]=\"tabSize\"\n (click)=\"select(option)\"></btn>\n </li>\n }\n </ul>\n}\n@if (tabTemplate) {\n <div class=\"ui-tab\">\n <ng-container [ngTemplateOutlet]=\"tabTemplate\"></ng-container>\n </div>\n}\n<ng-content></ng-content>\n","import {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n Input,\n OnChanges,\n QueryList,\n SimpleChanges, TemplateRef, ViewChild\n} from \"@angular/core\";\nimport {UnorderedListStyle, UnorderedListTemplates, UnorderedListTemplate} from \"../../common-types\";\nimport {ObjectUtils} from \"../../utils/object.utils\";\nimport {UnorderedListTemplateDirective} from \"../../directives/unordered-list-template.directive\";\n\n@Component({\n standalone: false,\n selector: \"unordered-list\",\n templateUrl: \"./unordered-list.component.html\"\n})\nexport class UnorderedListComponent implements OnChanges, AfterContentInit, AfterViewInit {\n\n @Input() data: any;\n @Input() keyPrefix: string;\n @Input() listStyle: UnorderedListStyle;\n @Input() path: string;\n @Input() level: number;\n @Input() templates: UnorderedListTemplate[];\n\n isArray: boolean;\n isObject: boolean;\n defaultTemplates: UnorderedListTemplates;\n\n @ContentChildren(UnorderedListTemplateDirective)\n private templateDirectives: QueryList<UnorderedListTemplateDirective>;\n\n @ViewChild(\"defaultKeyTemplate\")\n private defaultKeyTemplate: TemplateRef<any>;\n @ViewChild(\"defaultValueTemplate\")\n private defaultValueTemplate: TemplateRef<any>;\n @ViewChild(\"defaultItemTemplate\")\n private defaultItemTemplate: TemplateRef<any>;\n\n constructor(private cdr: ChangeDetectorRef) {\n this.keyPrefix = \"\";\n this.listStyle = \"table\";\n this.path = \"\";\n this.level = 0;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.isArray = ObjectUtils.isArray(this.data);\n this.isObject = ObjectUtils.isObject(this.data);\n }\n\n ngAfterContentInit(): void {\n const templates = this.templateDirectives.toArray();\n this.templates = this.templates ? this.templates.concat(templates) : templates;\n this.cdr.detectChanges();\n }\n\n ngAfterViewInit(): void {\n this.defaultTemplates = {\n key: this.defaultKeyTemplate,\n value: this.defaultValueTemplate,\n item: this.defaultItemTemplate\n };\n this.cdr.detectChanges();\n }\n}\n","<ng-template let-keyPrefix=\"keyPrefix\" let-key=\"item.key\" let-isArray=\"isArray\" #defaultKeyTemplate>\n {{ (keyPrefix ? keyPrefix + key : key) | translate }}:\n</ng-template>\n<ng-template let-keyPrefix=\"keyPrefix\" let-listStyle=\"listStyle\" let-val=\"item.value\" let-path=\"path\"\n let-templates=\"templates\" let-isObject=\"valueIsObject\" let-isArray=\"valueIsArray\" #defaultValueTemplate>\n <ng-template #value>\n <span [innerHTML]=\"val\"></span>\n </ng-template>\n <unordered-list [data]=\"val\"\n [keyPrefix]=\"keyPrefix\"\n [listStyle]=\"listStyle\"\n [path]=\"path\"\n [level]=\"level + 1\"\n [templates]=\"templates\"\n *ngIf=\"(isObject || isArray); else value\"></unordered-list>\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 [unorderedListItem]=\"item\"\n type=\"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 [unorderedListItem]=\"item\"\n type=\"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 {\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Inject,\n Input,\n OnChanges,\n Output,\n ViewChild,\n ViewEncapsulation\n} from \"@angular/core\";\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from \"@angular/forms\";\nimport {HttpErrorResponse, HttpEventType, HttpResponse} from \"@angular/common/http\";\nimport {lastValueFrom} from \"rxjs\";\nimport {map} from \"rxjs/operators\";\n\nimport {\n IApiService,\n IBaseHttpClient,\n IFileUploadProcess,\n IFileUploadResult,\n IToasterService,\n UploadType\n} from \"../../common-types\";\nimport {API_SERVICE, TOASTER_SERVICE} from \"../../tokens\";\n\nimport {ArrayUtils} from \"../../utils/array.utils\";\nimport {ObjectUtils} from \"../../utils/object.utils\";\nimport {FileUtils} from \"../../utils/file.utils\";\nimport {BtnComponent} from \"../btn/btn.component\";\nimport {getRoot} from \"../../utils/misc\";\n\n@Component({\n standalone: false,\n selector: \"upload\",\n styleUrls: [\"./upload.component.scss\"],\n templateUrl: \"./upload.component.html\",\n encapsulation: ViewEncapsulation.None,\n providers: [\n {provide: NG_VALUE_ACCESSOR, useExisting: UploadComponent, multi: true}\n ],\n})\nexport class UploadComponent implements ControlValueAccessor, OnChanges {\n\n @Input() value: UploadType | UploadType[];\n @Input() disabled: boolean;\n @Input() inline: boolean;\n @Input() accept: string | string[];\n @Input() baseUrl: string;\n @Input() message: string;\n @Input() multiple: boolean;\n @Input() buttonText: string;\n @Input() makeUpload: (f: File) => any;\n @Input() preProcess: (f: File) => boolean;\n @Output() onUploaded: EventEmitter<IFileUploadResult[]>;\n @Output() onRemove: EventEmitter<UploadType[]>;\n\n @ViewChild(\"uploadBtn\")\n uploadBtn: BtnComponent;\n\n acceptAttr: string;\n isImage: boolean;\n dropAllowed: boolean;\n processing: IFileUploadProcess[];\n\n onChange: Function;\n onTouched: Function;\n\n protected rootElem: DocumentOrShadowRoot\n protected fileImageCache: Map<Blob, string>;\n protected acceptTypes: string[];\n\n get http(): IBaseHttpClient {\n return this.api.client;\n }\n\n get root(): DocumentOrShadowRoot {\n this.rootElem = this.rootElem || getRoot(this.element.nativeElement);\n return this.rootElem;\n }\n\n constructor(\n readonly cdr: ChangeDetectorRef,\n readonly element: ElementRef<HTMLElement>,\n @Inject(API_SERVICE) private api: IApiService,\n @Inject(TOASTER_SERVICE) private toaster: IToasterService\n ) {\n this.value = null;\n this.disabled = false;\n this.inline = false;\n this.fileImageCache = new Map();\n this.buttonText = \"button.select-files\";\n this.onUploaded = new EventEmitter();\n this.onRemove = new EventEmitter();\n this.onChange = () => {\n };\n this.onTouched = () => {\n };\n }\n\n onDragEnter(ev: DragEvent): void {\n if (this.disabled) {\n ev.preventDefault();\n return;\n }\n const transfer = ev.dataTransfer;\n let length = transfer.items?.length ?? 0;\n for (let i = 0; i < length; i++) {\n const item = transfer.items[i];\n if (this.checkType(item.type)) {\n ev.dataTransfer.effectAllowed = \"copy\";\n ev.dataTransfer.dropEffect = \"copy\";\n this.dropAllowed = true;\n return;\n }\n }\n length = transfer.files?.length ?? 0;\n for (let i = 0; i < length; i++) {\n const file = transfer.files[i];\n if (this.checkType(file.type)) {\n ev.dataTransfer.effectAllowed = \"copy\";\n ev.dataTransfer.dropEffect = \"copy\";\n this.dropAllowed = true;\n return;\n }\n }\n ev.preventDefault();\n }\n\n onDrop(): void {\n this.dropAllowed = false;\n }\n\n ngOnChanges(): void {\n this.accept = this.accept || \"\";\n this.acceptTypes = ObjectUtils.isStringWithValue(this.accept)\n ? this.accept.split(\",\")\n : (ObjectUtils.isArray(this.accept) ? this.accept : []);\n this.acceptTypes = this.acceptTypes.map(t => t.split(\"/\").pop().replace(/\\./, \"\"));\n this.acceptAttr = this.acceptTypes.map(t => `.${t}`).join(\",\");\n this.isImage = ArrayUtils.has(this.acceptTypes, \"png\", \"jpg\", \"jpeg\", \"webp\", \"gif\");\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: any) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n writeValue(value: UploadType | UploadType[]) {\n this.value = value;\n this.cdr.markForCheck();\n this.onChange(this.value);\n this.onTouched(this.value);\n }\n\n setDisabledState(val: boolean) {\n this.disabled = val === true;\n this.cdr.markForCheck();\n }\n\n removeItem(index?: number): void {\n if (this.multiple) {\n const current = Array.from((this.value as UploadType[]) || []);\n current.splice(index, 1);\n this.writeValue(current);\n this.onRemove.emit(current);\n return;\n }\n this.writeValue(null);\n this.onRemove.emit([]);\n }\n\n onInputClick(ev: MouseEvent): void {\n if (this.uploadBtn.contains(this.root.activeElement) && !this.processing) return;\n ev.preventDefault();\n }\n\n onInputChange(ev: Event): void {\n const input = ev.currentTarget as HTMLInputElement;\n if (this.processing) {\n input.value = \"\";\n return;\n }\n const length = input.files.length;\n if (length == 0) {\n this.writeValue(this.multiple ? [] : null);\n return;\n }\n const files: File[] = [];\n for (let i = 0; i < length; i++) {\n const file = input.files.item(i);\n if (this.checkType(file.type)) {\n files.push(file);\n }\n }\n if (files.length == 0) {\n this.toaster.error(\"message.invalid-files.error\");\n return;\n }\n this.processFiles(this.multiple ? files : files.slice(0, 1)).then(results => {\n const ids = results.map(t => t.file || t._id || t.id);\n this.writeValue(this.multiple\n ? Array.from(this.value as UploadType[]).concat(ids)\n : (ids[0] || this.value)\n );\n this.onUploaded.emit(results);\n });\n input.value = \"\";\n }\n\n getUrl(image: any): string {\n if (ObjectUtils.isBlob(image)) {\n if (!this.fileImageCache.has(image)) {\n this.fileImageCache.set(image, URL.createObjectURL(image));\n }\n return this.fileImageCache.get(image);\n }\n const url = !image ? null : image.imageUrl || image;\n if (!ObjectUtils.isString(url)) return null;\n if (url.startsWith(\"data:\")) return url;\n const baseUrl = this.baseUrl || this.api.url(\"assets\");\n const query = this.isImage ? `?type=preview` : ``;\n return `${baseUrl}/${url}${query}`;\n }\n\n async processFiles(files: File[]): Promise<IFileUploadResult[]> {\n if (this.processing) return null;\n const headers = this.http.makeHeaders();\n const makeUpload = ObjectUtils.isFunction(this.makeUpload) ? this.makeUpload : f => {\n const form = new FormData();\n form.append(\"file\", f);\n return form;\n };\n const preProcess = ObjectUtils.isFunction(this.preProcess) ? this.preProcess : () => {\n return false;\n };\n this.processing = files.filter(f => !preProcess(f)).map(file => {\n const process: IFileUploadProcess = {\n file,\n progress: 0\n };\n process.promise = FileUtils.getFilePreview(file).then(preview => {\n process.preview = preview;\n this.fileImageCache.set(file, preview);\n this.cdr.detectChanges();\n });\n return process;\n });\n const baseUrl = this.baseUrl || this.api.url(\"assets\");\n const requests = this.processing.map(async (p): Promise<IFileUploadResult> => {\n await p.promise;\n if (this.inline) {\n return {\n filename: p.file?.name,\n file: p.file,\n };\n }\n const request = this.http.post(baseUrl, makeUpload(p.file), {\n headers, observe: \"events\", reportProgress: true\n }).pipe(map(value => {\n if (value.type === HttpEventType.UploadProgress) {\n p.progress = Math.round(value.loaded / value.total * 100);\n this.cdr.detectChanges();\n }\n return value;\n }));\n return lastValueFrom(request)\n .then((res: HttpResponse<any>) => {\n const body = res.body;\n if (!ObjectUtils.isObject(body)) {\n return {id: body};\n }\n return body;\n }, (e: HttpErrorResponse) => {\n this.toaster.error(e.error?.message || e.message || `Can\"t upload file: ${p.file.name}`);\n return null;\n });\n });\n const results = await Promise.all(requests);\n this.processing = null;\n this.cdr.detectChanges();\n return results.filter(r => r !== null);\n }\n\n protected checkType(type: string): boolean {\n if (this.acceptTypes.length == 0) return true;\n type = type.split(\"/\").pop().replace(/\\./g, \"\");\n return this.acceptTypes.includes(type);\n }\n}\n","<ng-template #itemBgTemplate let-bg=\"bg\">\n @if (bg) {\n <div class=\"upload-item-bg\" [ngStyle]=\"{backgroundImage: `url('${bg}')`}\">\n <div>\n <img alt=\"item image\" [src]=\"bg | safe: 'url'\" />\n </div>\n </div>\n }\n</ng-template>\n<ng-template #itemTemplate let-item=\"item\" let-index=\"index\">\n <div class=\"upload-item\">\n <ng-container [ngTemplateOutlet]=\"itemBgTemplate\"\n [ngTemplateOutletContext]=\"{bg: isImage || (item | isType: 'file') ? getUrl(item) : null}\">\n </ng-container>\n @if (!disabled) {\n <close-btn class=\"remove-item-btn\" (click)=\"removeItem(index)\"></close-btn>\n }\n<!-- <btn size=\"small\" class=\"download-item-btn\" icon=\"download\"></btn>-->\n </div>\n</ng-template>\n\n<div class=\"file-upload\" [ngClass]=\"{disabled: disabled}\">\n <div class=\"upload-input\" [ngClass]=\"{'drop-allowed': dropAllowed}\">\n <input type=\"file\"\n #input\n [disabled]=\"disabled\"\n [multiple]=\"multiple\"\n [accept]=\"acceptAttr\"\n (dragenter)=\"onDragEnter($event)\"\n (dragleave)=\"onDrop()\"\n (drop)=\"onDrop()\"\n (click)=\"onInputClick($event)\"\n (blur)=\"onTouched($event)\"\n (change)=\"onInputChange($event)\"/>\n @if (message) {\n <div class=\"upload-message\"\n [ngClass]=\"{'has-value': $any(value)?.length}\"\n [innerHTML]=\"message | translate | safe:'html'\">\n </div>\n }\n <div class=\"upload-container\">\n\n <ng-container [ngTemplateOutlet]=\"itemTemplate\"\n [ngTemplateOutletContext]=\"{item: value, index: 0}\"\n *ngIf=\"!multiple && value\">\n </ng-container>\n <ng-container *ngIf=\"multiple\">\n <ng-container [ngTemplateOutlet]=\"itemTemplate\"\n [ngTemplateOutletContext]=\"{item: item, index: ix}\"\n *ngFor=\"let item of $any(value); let ix = index\">\n </ng-container>\n </ng-container>\n\n <div class=\"upload-item\" *ngFor=\"let proc of processing\">\n <ng-container [ngTemplateOutlet]=\"itemBgTemplate\"\n [ngTemplateOutletContext]=\"{bg: proc.preview}\">\n </ng-container>\n <div class=\"upload-progress\">\n <div class=\"upload-progress-num\">{{ proc.progress }}%</div>\n <div class=\"upload-progress-bar\" [ngStyle]=\"{width: proc.progress + '%'}\">\n\n </div>\n </div>\n </div>\n\n </div>\n @if (!disabled) {\n <btn class=\"upload-btn\" #uploadBtn [label]=\"buttonText\" (click)=\"input.click()\"></btn>\n }\n </div>\n</div>\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input, OnChanges,\n Output,\n ViewChild,\n ViewEncapsulation\n} from \"@angular/core\";\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from \"@angular/forms\";\nimport {getRoot} from \"../../utils/misc\";\nimport {LoaderUtils} from \"../../utils/loader.utils\";\n\ninterface Pell {\n content: HTMLElement;\n}\n\ndeclare const pell: {init: (config: Record<string, unknown>) => Pell};\n\n@Component({\n standalone: false,\n selector: \"wysiwyg\",\n styleUrls: [\"./wysiwyg.component.scss\"],\n templateUrl: \"./wysiwyg.component.html\",\n encapsulation: ViewEncapsulation.None,\n providers: [\n {provide: NG_VALUE_ACCESSOR, useExisting: WysiwygComponent, multi: true}\n ],\n})\nexport class WysiwygComponent implements ControlValueAccessor, OnChanges, AfterViewInit {\n\n @Input() value: string;\n @Input() disabled: boolean;\n @Output() valueChange: EventEmitter<string>;\n\n onChange: Function;\n onTouched: Function;\n\n protected rootElem: DocumentOrShadowRoot;\n protected editor: Pell;\n\n @ViewChild(\"editor\")\n protected editorElem: ElementRef<HTMLDivElement>;\n\n get root(): DocumentOrShadowRoot {\n this.rootElem = this.rootElem || getRoot(this.element.nativeElement);\n return this.rootElem;\n }\n\n get rootNode(): Node {\n return this.root as any;\n }\n\n constructor(\n readonly cdr: ChangeDetectorRef,\n readonly element: ElementRef<HTMLElement>\n ) {\n this.value = \"\";\n this.onChange = () => {\n };\n this.onTouched = () => {\n };\n }\n\n ngAfterViewInit(): void {\n Promise.all([\n LoaderUtils.loadScript(\"https://unpkg.com/pell\"),\n LoaderUtils.loadStyle(\"https://unpkg.com/pell/dist/pell.min.css\", this.rootNode)\n ]).then(() => {\n // Initialize pell on an HTMLElement\n this.editor = pell.init({\n // <HTMLElement>, required\n element: this.editorElem.nativeElement,\n\n // <Function>, required\n // Use the output html, triggered by element's `oninput` event\n onChange: (html: string) => {\n this.value = html;\n this.onChange(this.value);\n this.onTouched(this.value);\n },\n\n defaultParagraphSeparator: \"p\",\n actions: [\n \"bold\",\n \"italic\",\n \"underline\"\n ],\n });\n this.editor.content.innerHTML = this.value || \"\";\n });\n }\n\n ngOnChanges(): void {\n if (!this.editor) return;\n this.editor.content.innerHTML = this.value || \"\";\n }\n\n registerOnChange(fn: any) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n writeValue(value: string) {\n this.value = value;\n this.cdr.markForCheck();\n this.ngOnChanges();\n }\n}\n","<div class=\"wysiwyg form-control\" [ngClass]=\"{disabled: disabled}\">\n <div #editor></div>\n</div>\n","import {ErrorHandler} from \"@angular/core\";\nimport {EVENT_MANAGER_PLUGINS} from \"@angular/platform-browser\";\nimport {UrlSerializer} from \"@angular/router\";\nimport {DeviceDetectorService} from \"ngx-device-detector\";\n\nimport {AuthGuard} from \"./utils/auth.guard\";\nimport {AclService} from \"./services/acl.service\";\nimport {ApiService} from \"./services/api.service\";\nimport {StaticAuthService} from \"./services/auth.service\";\nimport {BaseHttpClient} from \"./services/base-http.client\";\nimport {BaseHttpService} from \"./services/base-http.service\";\nimport {ConfigService} from \"./services/config.service\";\nimport {BaseDialogService} from \"./services/base-dialog.service\";\nimport {ErrorHandlerService} from \"./services/error-handler.service\";\nimport {EventsService} from \"./services/events.service\";\nimport {FormatterService} from \"./services/formatter.service\";\nimport {GlobalTemplateService} from \"./services/global-template.service\";\nimport {IconService} from \"./services/icon.service\";\nimport {LanguageService} from \"./services/language.service\";\nimport {LocalHttpService} from \"./services/local-http.service\";\nimport {PromiseService} from \"./services/promise.service\";\nimport {SocketService} from \"./services/socket.service\";\nimport {OpenApiService} from \"./services/open-api.service\";\nimport {StateService} from \"./services/state.service\";\nimport {StaticLanguageService} from \"./services/static-language.service\";\nimport {StorageService} from \"./services/storage.service\";\nimport {BaseToasterService} from \"./services/base-toaster.service\";\nimport {CacheService} from \"./services/cache.service\";\nimport {ComponentLoaderService} from \"./services/component-loader.service\";\nimport {TranslatedUrlSerializer} from \"./services/translated-url.serializer\";\nimport {UniversalService} from \"./services/universal.service\";\nimport {DragDropEventPlugin} from \"./plugins/drag-drop-event.plugin\";\nimport {ResizeEventPlugin} from \"./plugins/resize-event.plugin\";\nimport {ScrollEventPlugin} from \"./plugins/scroll-event.plugin\";\nimport {AsyncMethodBase} from \"./directives/async-method.base\";\nimport {AsyncMethodDirective} from \"./directives/async-method.directive\";\nimport {AsyncMethodTargetDirective} from \"./directives/async-method-target.directive\";\nimport {BackgroundDirective} from \"./directives/background.directive\";\nimport {ComponentLoaderDirective} from \"./directives/component-loader.directive\";\nimport {DynamicTableTemplateDirective} from \"./directives/dynamic-table-template.directive\";\nimport {GlobalTemplateDirective} from \"./directives/global-template.directive\";\nimport {IconDirective} from \"./directives/icon.directive\";\nimport {NgxTemplateOutletDirective} from \"./directives/ngx-template-outlet.directive\";\nimport {PaginationDirective} from \"./directives/pagination.directive\";\nimport {PaginationItemDirective} from \"./directives/pagination-item.directive\";\nimport {ResourceIfDirective} from \"./directives/resource-if.directive\";\nimport {StickyDirective} from \"./directives/sticky.directive\";\nimport {StickyClassDirective} from \"./directives/sticky-class.directive\";\nimport {DropdownDirective} from \"./directives/dropdown.directive\";\nimport {DropdownContentDirective} from \"./directives/dropdown-content.directive\";\nimport {DropdownToggleDirective} from \"./directives/dropdown-toggle.directive\";\nimport {TabsItemDirective} from \"./directives/tabs-item.directive\";\nimport {TabsTemplateDirective} from \"./directives/tabs-template.directive\";\nimport {UnorderedListItemDirective} from \"./directives/unordered-list-item.directive\";\nimport {UnorderedListTemplateDirective} from \"./directives/unordered-list-template.directive\";\n\nimport {ChunkPipe} from \"./pipes/chunk.pipe\";\nimport {EntriesPipe} from \"./pipes/entries.pipe\";\nimport {ExtraItemPropertiesPipe} from \"./pipes/extra-item-properties.pipe\";\nimport {FilterPipe} from \"./pipes/filter.pipe\";\nimport {FindPipe} from \"./pipes/find.pipe\";\nimport {FormatNumberPipe} from \"./pipes/format-number.pipe\";\nimport {GetOffsetPipe} from \"./pipes/get-offset.pipe\";\nimport {GetTypePipe} from \"./pipes/get-type.pipe\";\nimport {GetValuePipe} from \"./pipes/get-value.pipe\";\nimport {GlobalTemplatePipe} from \"./pipes/global-template.pipe\";\nimport {GroupByPipe} from \"./pipes/group-by.pipe\";\nimport {IncludesPipe} from \"./pipes/includes.pipe\";\nimport {IsTypePipe} from \"./pipes/is-type.pipe\";\nimport {JoinPipe} from \"./pipes/join.pipe\";\nimport {KeysPipe} from \"./pipes/keys.pipe\";\nimport {MapPipe} from \"./pipes/map.pipe\";\nimport {MaxPipe} from \"./pipes/max.pipe\";\nimport {MinPipe} from \"./pipes/min.pipe\";\nimport {PopPipe} from \"./pipes/pop.pipe\";\nimport {ReducePipe} from \"./pipes/reduce.pipe\";\nimport {RemapPipe} from \"./pipes/remap.pipe\";\nimport {ReplacePipe} from \"./pipes/replace.pipe\";\nimport {ReversePipe} from \"./pipes/reverse.pipe\";\nimport {RoundPipe} from \"./pipes/round.pipe\";\nimport {SafeHtmlPipe} from \"./pipes/safe-html.pipe\";\nimport {ShiftPipe} from \"./pipes/shift.pipe\";\nimport {SplitPipe} from \"./pipes/split.pipe\";\nimport {SyncAsyncPipe} from \"./pipes/sync-async.pipe\";\nimport {TranslatePipe} from \"./pipes/translate.pipe\";\nimport {ValuesPipe} from \"./pipes/values.pipe\";\n\nimport {BtnComponent} from \"./components/btn/btn.component\";\nimport {BtnDefaultComponent} from \"./components/btn-default/btn-default.component\";\nimport {ChipsComponent} from \"./components/chips/chips.component\";\nimport {CloseBtnComponent} from \"./components/close-btn/close-btn.component\";\nimport {DropListComponent} from \"./components/drop-list/drop-list.component\";\nimport {DropdownBoxComponent} from \"./components/dropdown-box/dropdown-box.component\";\nimport {DynamicTableComponent} from \"./components/dynamic-table/dynamic-table.component\";\nimport {FakeModuleComponent} from \"./components/fake-module/fake-module.component\";\nimport {IconComponent} from \"./components/icon/icon.component\";\nimport {IconDefaultComponent} from \"./components/icon-default/icon-default.component\";\nimport {InteractiveCanvasComponent} from \"./components/interactive-canvas/interactive-canvas.component\";\nimport {InteractiveItemComponent} from \"./components/interactive-canvas/interactive-item.component\";\nimport {InteractiveCircleComponent} from \"./components/interactive-canvas/interactive-circle.component\";\nimport {InteractiveRectComponent} from \"./components/interactive-canvas/interactive-rect.component\";\nimport {PaginationMenuComponent} from \"./components/pagination-menu/pagination-menu.component\";\nimport {TabsComponent} from \"./components/tabs/tabs.component\";\nimport {UnorderedListComponent} from \"./components/unordered-list/unordered-list.component\";\nimport {UploadComponent} from \"./components/upload/upload.component\";\nimport {WysiwygComponent} from \"./components/wysiwyg/wysiwyg.component\";\n\n// --- Pipes ---\nexport const pipes = [\n ChunkPipe,\n EntriesPipe,\n ExtraItemPropertiesPipe,\n FilterPipe,\n FindPipe,\n FormatNumberPipe,\n GetOffsetPipe,\n GetTypePipe,\n GetValuePipe,\n GlobalTemplatePipe,\n GroupByPipe,\n IncludesPipe,\n IsTypePipe,\n JoinPipe,\n KeysPipe,\n MapPipe,\n MaxPipe,\n MinPipe,\n PopPipe,\n ReducePipe,\n RemapPipe,\n ReplacePipe,\n ReversePipe,\n RoundPipe,\n SafeHtmlPipe,\n ShiftPipe,\n SplitPipe,\n SyncAsyncPipe,\n TranslatePipe,\n ValuesPipe\n];\n\n// --- Directives ---\nexport const directives = [\n AsyncMethodBase,\n AsyncMethodDirective,\n AsyncMethodTargetDirective,\n BackgroundDirective,\n ComponentLoaderDirective,\n DynamicTableTemplateDirective,\n GlobalTemplateDirective,\n IconDirective,\n NgxTemplateOutletDirective,\n PaginationDirective,\n PaginationItemDirective,\n ResourceIfDirective,\n StickyDirective,\n StickyClassDirective,\n DropdownDirective,\n DropdownContentDirective,\n DropdownToggleDirective,\n TabsItemDirective,\n TabsTemplateDirective,\n UnorderedListItemDirective,\n UnorderedListTemplateDirective\n];\n\n// --- Components ---\nexport const components = [\n BtnComponent,\n BtnDefaultComponent,\n ChipsComponent,\n CloseBtnComponent,\n DropListComponent,\n DropdownBoxComponent,\n DynamicTableComponent,\n FakeModuleComponent,\n PaginationMenuComponent,\n IconComponent,\n IconDefaultComponent,\n InteractiveCanvasComponent,\n InteractiveItemComponent,\n InteractiveCircleComponent,\n InteractiveRectComponent,\n TabsComponent,\n UnorderedListComponent,\n UploadComponent,\n WysiwygComponent\n];\n\nexport const providers = [\n ...pipes,\n BaseHttpClient,\n BaseHttpService,\n AuthGuard,\n AclService,\n ApiService,\n StaticAuthService,\n ConfigService,\n BaseDialogService,\n ErrorHandlerService,\n EventsService,\n FormatterService,\n GlobalTemplateService,\n IconService,\n LanguageService,\n LocalHttpService,\n OpenApiService,\n PromiseService,\n SocketService,\n StateService,\n StaticLanguageService,\n StorageService,\n BaseToasterService,\n CacheService,\n ComponentLoaderService,\n TranslatedUrlSerializer,\n UniversalService,\n DeviceDetectorService,\n GlobalTemplateService,\n {\n provide: EVENT_MANAGER_PLUGINS,\n useClass: DragDropEventPlugin,\n multi: true\n },\n {\n provide: EVENT_MANAGER_PLUGINS,\n useClass: ResizeEventPlugin,\n multi: true\n },\n {\n provide: EVENT_MANAGER_PLUGINS,\n useClass: ScrollEventPlugin,\n multi: true\n },\n {\n provide: UrlSerializer,\n useExisting: TranslatedUrlSerializer\n },\n {\n provide: ErrorHandler,\n useExisting: ErrorHandlerService\n }\n];\n","import {\n EnvironmentProviders,\n inject,\n Injector,\n makeEnvironmentProviders,\n ModuleWithProviders,\n NgModule,\n provideAppInitializer,\n Provider\n} from \"@angular/core\";\nimport {APP_BASE_HREF, CommonModule} from \"@angular/common\";\nimport {FormsModule} from \"@angular/forms\";\nimport {DynamicModuleInfo, IModuleConfig, OpenApiSchemaSelector} from \"./common-types\";\nimport {\n API_SERVICE,\n APP_BASE_URL,\n AUTH_SERVICE,\n BUTTON_TYPE,\n CONFIG_SERVICE,\n DIALOG_SERVICE,\n DYNAMIC_MODULE_INFO,\n ICON_MAP,\n ICON_SERVICE,\n ICON_TYPE,\n LANGUAGE_SERVICE,\n PROMISE_SERVICE,\n RESIZE_DELAY,\n RESIZE_STRATEGY,\n ROOT_ELEMENT, SCHEMA_SELECTOR,\n SOCKET_IO_PATH,\n STATIC_SCHEMAS,\n TOASTER_SERVICE\n} from \"./tokens\";\n\nimport {components, directives, pipes, providers} from \"./ngx-utils.imports\";\nimport {ApiService} from \"./services/api.service\";\nimport {StaticAuthService} from \"./services/auth.service\";\nimport {IconService} from \"./services/icon.service\";\nimport {StaticLanguageService} from \"./services/static-language.service\";\nimport {BaseToasterService} from \"./services/base-toaster.service\";\nimport {PromiseService} from \"./services/promise.service\";\nimport {ConfigService} from \"./services/config.service\";\nimport {BaseDialogService} from \"./services/base-dialog.service\";\nimport {ROUTES} from \"@angular/router\";\nimport {AuthGuard} from \"./utils/auth.guard\";\nimport {FakeModuleComponent} from \"./components/fake-module/fake-module.component\";\nimport {BtnDefaultComponent} from \"./components/btn-default/btn-default.component\";\nimport {IconDefaultComponent} from \"./components/icon-default/icon-default.component\";\n\nexport function loadBaseUrl(): string {\n if (typeof (document) === \"undefined\" || typeof (location) === \"undefined\") return \"/\";\n const scripts = Array.from(document.scripts);\n const currentScript = (document.currentScript as HTMLScriptElement);\n let currentUrl = new URL(currentScript?.src ?? \"http://localhost:4200/\");\n if (!currentScript) {\n try {\n // noinspection ExceptionCaughtLocallyJS\n throw new Error();\n } catch (e) {\n const qualifiedUrl = location.protocol + \"//\" + location.host;\n const stack = (e.stack || \"\") as string;\n const srcUrl = (\n stack.match(new RegExp(qualifiedUrl + \".*?\\\\.js\", \"g\")) ||\n stack.match(/http([A-Z0-9:\\/\\-.]+)\\.js/gi) ||\n [`${qualifiedUrl}/main.js`]\n ).shift();\n currentUrl = new URL(srcUrl ?? \"\");\n }\n }\n const mainScript = scripts.find(s => {\n if (!s.src) return false;\n const sUrl = new URL(s.src);\n return currentUrl.host === sUrl.host && sUrl.pathname.includes(\"main\");\n });\n const scriptUrl = !mainScript ? currentUrl : new URL(mainScript.src);\n const path = scriptUrl.pathname?.split(\"/\") ?? [];\n path.pop();\n return `${scriptUrl.protocol}//${scriptUrl.host}${path.join(\"/\")}/`;\n}\n\nexport function loadBaseHref(baseUrl: string): string {\n try {\n return new URL(baseUrl).pathname;\n } catch (e) {\n console.log(e);\n return \"/\";\n }\n}\n\nexport function getRootElement(): HTMLElement {\n return typeof document !== \"undefined\" ? document.body : null;\n}\n\n@NgModule({\n declarations: [\n ...pipes,\n ...directives,\n ...components\n ],\n imports: [\n CommonModule,\n FormsModule\n ],\n exports: [\n ...pipes,\n ...directives,\n ...components,\n FormsModule\n ],\n providers: pipes\n})\nexport class NgxUtilsModule {\n\n private static getProviders(config?: IModuleConfig): (EnvironmentProviders | Provider)[] {\n return [\n ...providers,\n {\n provide: API_SERVICE,\n useExisting: (!config ? null : config.apiService) || ApiService\n },\n {\n provide: AUTH_SERVICE,\n useExisting: (!config ? null : config.authService) || StaticAuthService\n },\n {\n provide: ICON_SERVICE,\n useExisting: (!config ? null : config.iconService) || IconService\n },\n {\n provide: LANGUAGE_SERVICE,\n useExisting: (!config ? null : config.languageService) || StaticLanguageService\n },\n {\n provide: TOASTER_SERVICE,\n useExisting: (!config ? null : config.toasterService) || BaseToasterService\n },\n {\n provide: PROMISE_SERVICE,\n useExisting: (!config ? null : config.promiseService) || PromiseService\n },\n {\n provide: CONFIG_SERVICE,\n useExisting: (!config ? null : config.configService) || ConfigService\n },\n {\n provide: DIALOG_SERVICE,\n useExisting: (!config ? null : config.dialogService) || BaseDialogService\n },\n {\n provide: ICON_TYPE,\n useValue: (!config ? null : config.iconType) || IconDefaultComponent,\n },\n {\n provide: ICON_MAP,\n useValue: (!config ? null : config.iconMap) || {},\n },\n {\n provide: BUTTON_TYPE,\n useValue: (!config ? null : config.buttonType) || BtnDefaultComponent\n },\n {\n provide: APP_BASE_URL,\n useFactory: (!config ? null : config.baseUrl) || loadBaseUrl,\n deps: [Injector]\n },\n {\n provide: ROOT_ELEMENT,\n useFactory: getRootElement\n },\n {\n provide: RESIZE_DELAY,\n useValue: (!config ? null : config.resizeDelay) ?? 50,\n },\n {\n provide: RESIZE_STRATEGY,\n useValue: (!config ? null : config.resizeStrategy) ?? \"observer\",\n },\n {\n provide: SOCKET_IO_PATH,\n useValue: (!config ? null : config.socketPath) ?? \"socket.io\",\n },\n {\n provide: STATIC_SCHEMAS,\n useValue: (!config ? null : config.staticSchemas) ?? {},\n },\n {\n provide: SCHEMA_SELECTOR,\n useValue: (!config ? null : config.schemaSelector) ?? ((name, schemas) => {\n return schemas[name];\n }) as OpenApiSchemaSelector,\n },\n {\n provide: APP_BASE_HREF,\n useFactory: loadBaseHref,\n deps: [APP_BASE_URL]\n },\n provideAppInitializer(() => {\n if (config && config.initializeApp) {\n const initializer = config.initializeApp(inject(Injector));\n return initializer();\n }\n const configs = inject(CONFIG_SERVICE);\n return configs.load();\n }),\n ];\n }\n\n static forRoot(config?: IModuleConfig): ModuleWithProviders<NgxUtilsModule> {\n return {\n ngModule: NgxUtilsModule,\n providers: NgxUtilsModule.getProviders(config)\n };\n }\n\n static provideUtils(config?: IModuleConfig): EnvironmentProviders {\n return makeEnvironmentProviders(NgxUtilsModule.getProviders(config));\n }\n\n static useDynamic(moduleInfo: DynamicModuleInfo): ModuleWithProviders<NgxUtilsModule> {\n return {\n ngModule: NgxUtilsModule,\n providers: [\n {\n provide: ROUTES,\n multi: true,\n useValue: [\n {\n loadChildren: moduleInfo.loadChildren,\n matcher: AuthGuard.noRouteMatch\n },\n {\n component: FakeModuleComponent,\n matcher: AuthGuard.wildRouteMatch\n }\n ]\n },\n {\n provide: DYNAMIC_MODULE_INFO,\n useValue: moduleInfo,\n multi: true\n }\n ]\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.UniversalService","emptyDash","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.PaginationDirective","i3","i2","i3.NgxTemplateOutletDirective","i4.PaginationDirective","i5.PaginationItemDirective","i6.DropdownBoxComponent","i7.PaginationMenuComponent","i8.IncludesPipe","i9.TranslatePipe","i10.ValuesPipe","i2.BtnComponent","i3.EntriesPipe","i3.CloseBtnComponent","i4.IsTypePipe","i5.SafeHtmlPipe","i6.TranslatePipe"],"mappings":"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A,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;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,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,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"}
|
|
1
|
+
{"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/exclusions-renderer.ts","../../src/ngx-utils/utils/canvas-renderers/ruler-canvas.renderer.ts","../../src/ngx-utils/utils/geometry/functions.ts","../../src/ngx-utils/utils/math.utils.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/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/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\";\nimport {HttpClient, HttpHeaders} from \"@angular/common/http\";\nimport {ActivatedRouteSnapshot, Data, LoadChildrenCallback, Route, Routes, UrlTree} from \"@angular/router\";\nimport {Observable} from \"rxjs\";\nimport {DurationLikeObject} from \"luxon\";\n\nimport {MaybePromise, StringKeys} from \"./helper-types\";\n\n// --- Util\nexport type DurationUnit = StringKeys<DurationLikeObject>;\n\nexport interface TypedFactoryProvider<T> {\n provide?: any;\n useFactory: (...args: any[]) => T;\n deps: any[];\n}\n\nexport interface TypedValueProvider<T> {\n provide?: any;\n useValue: T;\n}\n\nexport interface TypedExistingProvider<T> {\n provide?: any;\n useExisting: Type<T>;\n}\n\nexport interface TypedClassProvider<T> {\n provide?: any;\n useClass: Type<T>;\n}\n\nexport interface TypedTokenProvider<T> {\n provide?: any;\n useToken: InjectionToken<T>;\n}\n\nexport type TypedProvider<T> = TypedFactoryProvider<T> | TypedValueProvider<T> |\n TypedExistingProvider<T> | TypedClassProvider<T> | TypedTokenProvider<T> | Type<T>;\n\nexport type CachedFactory<T> = (injector: Injector) => ReadonlyArray<T>;\n\nexport interface ResolveFactory<T = any> {\n type?: Function;\n func: (...args: any[]) => T;\n params?: any[];\n}\n\nexport interface IResolveFactory extends Omit<ResolveFactory, \"func\"> {\n func: Function;\n}\n\nexport class CanvasColor {\n constructor(public r: number, public g: number, public b: number, public a: number = 255) {\n\n }\n}\n\n// --- Icon service ---\nexport interface IIconService {\n isDisabled: boolean;\n iconsLoaded: EventEmitter<any>;\n getIcon(icon: string, activeIcon: string, active: boolean): Promise<string>;\n getIconUrl(icon: string, modifier?: SvgSourceModifier): Promise<string>;\n getIconImage(icon: string, modifier?: SvgSourceModifier): Promise<HTMLImageElement>;\n}\n\n// --- Language service ---\nexport interface ITranslation {\n lang: string;\n translation: string;\n}\n\nexport interface ITranslations {\n [key: string]: string;\n}\n\nexport type GlobalTranslations = Record<string, ITranslations>;\n\nexport interface ILanguageSetting {\n unavailable?: string;\n [key: string]: string | boolean | number;\n}\n\nexport interface ILanguageSettings {\n languages: string[];\n devLanguages: string[];\n defaultLanguage: string;\n settings?: {[lang: string]: ILanguageSetting};\n}\n\nexport interface ILanguageService {\n currentLanguage: string;\n editLanguage: string;\n enableTranslations: boolean;\n disableTranslations: boolean;\n defaultLanguage: string;\n dictionary: ITranslations;\n readonly languages: ReadonlyArray<string>;\n readonly httpClient: HttpClient;\n replaceLanguages(languages: string[]): void;\n addLanguages(languages: string[]): void;\n getTranslationSync(key: string, params?: Object): string;\n getTranslation(key: string, params?: Object): Promise<string>;\n getTranslations(...keys: string[]): Promise<ITranslations>;\n getTranslationFromObject(translations: ITranslations, params?: any, lang?: string): string;\n getTranslationFromArray(translations: ITranslation[], params?: any, lang?: string): string;\n}\n\n// --- Auth Service ---\nexport interface IUserData {\n _id?: string;\n id?: string;\n email?: string;\n [key: string]: any;\n}\n\nexport interface IAuthService {\n isAuthenticated: boolean;\n checkAuthenticated(): Promise<boolean>;\n}\n\nexport type RouteValidator = (auth: IAuthService, route?: IRoute, next?: ActivatedRouteSnapshot) => Promise<boolean>;\n\nexport interface IRouteData extends Data {\n returnState?: string[];\n guards?: Array<ResolveFactory<RouteValidator> | RouteValidator>;\n}\n\nexport interface IRoute extends Route {\n data?: IRouteData;\n}\n\n// --- Acl Service ---\nexport interface IAclComponent {\n onUserInitialized(): void;\n onUserChanged(): void;\n}\n\nexport interface IRouteStateInfo {\n route: IRoute;\n guard: any;\n dirty: boolean;\n first: boolean;\n component?: any;\n}\n\n// --- State Service ---\nexport type NavigationUrlParam = any[] | string | UrlTree;\n\n// --- Storage Service ---\nexport enum StorageMode {\n Local,\n Session\n}\n\n// --- Toaster Service ---\nexport type ToastType = \"info\" | \"success\" | \"warning\" | \"error\";\n\nexport interface IToasterService {\n error(message: string, params?: any): void;\n info(message: string, params?: any): void;\n success(message: string, params?: any): void;\n warning(message: string, params?: any): void;\n handleAsyncMethod(method: AsyncMethod, context?: any): void\n}\n\n// --- Dialog service ---\nexport interface IDialogButtonConfig {\n icon?: string;\n text?: string;\n classes?: string;\n method?: AsyncMethod;\n testId?: string;\n}\n\nexport interface IDialogConfig {\n id?: string;\n title?: string;\n message: string;\n messageContext?: any;\n buttons?: IDialogButtonConfig[];\n onClose?: AsyncMethod;\n size?: string;\n type?: string;\n templates?: { [id: string]: TemplateRef<any> };\n}\n\nexport interface IConfirmMessageConfig {\n id?: string;\n title?: string;\n messageContext?: any;\n size?: string;\n templates?: { [id: string]: TemplateRef<any> };\n okText?: string;\n okClasses?: string;\n cancelText?: string;\n cancelClasses?: string;\n}\n\nexport interface IConfirmDialogConfig extends IConfirmMessageConfig {\n message: string;\n method?: AsyncMethod;\n cancelMethod?: AsyncMethod;\n}\n\nexport interface IDialogService<DR = any> {\n dialog(config: IDialogConfig): DR;\n confirm(config: IConfirmDialogConfig): DR;\n confirmMsg(message: string, config?: IConfirmMessageConfig): Promise<boolean>;\n}\n\n// --- Socket service ---\n\n// --- Promise Service ---\n\nexport interface IPromiseService {\n zone: NgZone;\n count: number;\n onChanged: EventEmitter<number>;\n create<T>(executor: (resolve: (value?: T | PromiseLike<T>) => void, reject: (reason?: any) => void) => void): Promise<T>;\n all(promises: Promise<any>[]): Promise<any>;\n resolve<T>(value: T | PromiseLike<T>): Promise<T>;\n reject<T>(value: T | PromiseLike<T>): Promise<T>;\n}\n\n// --- Async method ---\nexport interface IAsyncMessage {\n message: string;\n context?: any;\n}\n\nexport type AsyncMethod = (context?: any, ev?: MouseEvent) => Promise<IAsyncMessage>;\n\n// --- Icon ---\nexport interface IconMap {\n [key: string]: string;\n}\n\nexport interface IconProps {\n name: string;\n}\n\n// --- Button ---\n\nexport type ButtonType = \"primary\" | \"secondary\" | \"transparent\";\n\nexport type ButtonSize = \"normal\" | \"small\";\n\nexport interface ButtonProps {\n label: string;\n tooltip: string;\n icon: string;\n disabled: boolean;\n type: ButtonType;\n size: ButtonSize;\n}\n\n// --- Tabs ---\n\nexport type TabValue = string | number;\n\nexport interface TabOption extends Omit<Partial<ButtonProps>, \"size\" | \"state\" | \"style\"> {\n value: TabValue;\n classes?: string | string[];\n}\n\n// --- Chips ---\nexport type ChipValue = string | number;\n\nexport type ChipStatus = \"valid\" | \"invalid\";\n\nexport interface ChipOption {\n label: string;\n value?: ChipValue;\n classes?: string;\n disabled?: boolean;\n picture?: string;\n group?: ChipOption[];\n}\n\n// --- Dropdown ---\nexport type DropdownAttachTo = \"root\" | HTMLElement | ElementRef<HTMLElement> | null;\n\n// --- Unordered list ---\nexport interface UnorderedListTemplate {\n readonly type: string;\n readonly selector: string;\n readonly templateRef: TemplateRef<any>\n}\n\nexport interface UnorderedListTemplates {\n [type: string]: TemplateRef<any>;\n}\n\nexport type UnorderedListStyle = \"table\" | \"list\";\n\n// --- Upload ---\n\nexport type UploadType = string | Blob;\n\nexport interface IFileUploadResult {\n _id?: string;\n id?: string;\n contentType?: string;\n createdAt?: Date;\n filename?: string;\n file?: Blob;\n}\n\nexport interface IFileUploadProcess {\n file: File;\n progress: number;\n preview?: string;\n promise?: Promise<void>;\n}\n\n// --- Ajax request ---\nexport interface IAjaxRequestDetails {\n request: XMLHttpRequest,\n method: string;\n url: string;\n}\n\nexport type AjaxRequestCallback = (details: IAjaxRequestDetails, params: any) => void;\n\n// --- Loader utils ---\nexport type ScriptType = \"text/javascript\" | \"module\";\n\nexport interface ILoadableElement extends HTMLElement {\n readyState?: string;\n onreadystatechange?: Function;\n}\n\nexport interface ILoaderPromises<T extends ILoadableElement> {\n [src: string]: {\n elem: T;\n promise: Promise<T>;\n }\n}\n\n// --- Observable utils ---\nexport interface ISearchObservable {\n search: string;\n getSearchResults(token: string): Promise<any[]>;\n}\n\n// --- Reflect utils ---\nexport function FactoryDependencies(...dependencies: Array<InjectionToken<any> | Provider>): MethodDecorator {\n return function (target: any, method: string): void {\n Reflect.defineMetadata(\"factoryDependencies\", dependencies, target, method);\n };\n}\n\nexport function ObjectType(type: string): ClassDecorator {\n return function (target: any): void {\n Reflect.defineMetadata(\"objectType\", type, target);\n };\n}\n\n// --- Timer utils ---\nexport interface ITimer {\n id?: any;\n func?: Function;\n time?: number;\n run?: () => void;\n set?: (func: Function, time: number) => void;\n clear?: () => void;\n}\n\n// --- ExtraItemProperties ---\nexport interface IExtraProperties {\n [prop: string]: any;\n}\n\n// --- Group by ---\nexport interface IGroupMap {\n [column: string]: any;\n}\n\n// --- Translate ---\nexport type TranslationQuery = string | ITranslations | ITranslation[];\n\n// --- Pagination ---\nexport interface IPageInfo {\n text: string;\n number: number;\n active: boolean;\n}\n\nexport interface IPaginationData {\n total: number;\n items: any[];\n meta?: any;\n}\n\nexport type PaginationDataLoader = (page: number, itemsPerPage: number) => Promise<IPaginationData>;\n\nexport class PaginationItemContext {\n\n constructor(readonly item: any,\n readonly parallelItem: any,\n readonly count: number,\n public index: number,\n public dataIndex: number) {\n }\n\n get first(): boolean {\n return this.index === 0;\n }\n\n get last(): boolean {\n return this.index === this.count - 1;\n }\n\n get even(): boolean {\n return this.index % 2 === 0;\n }\n\n get odd(): boolean {\n return !this.even;\n }\n\n // Support for old dynamic table implementation\n get row(): any {\n console.log(\"DynamicTable row is deprecated use item instead\");\n return this.item;\n }\n\n // Support for old dynamic table implementation\n get parallelRow(): any {\n console.log(\"DynamicTable parallelRow is deprecated use parallelItem instead\");\n return this.parallelItem;\n }\n}\n\n// --- Geometry ---\nexport interface IPoint {\n readonly x: number;\n readonly y: number;\n}\n\nexport interface ShapeIntersection {\n hit: boolean;\n pa?: IPoint;\n pb?: IPoint;\n point?: IPoint;\n}\n\nexport interface ShapeDistance {\n distance: number;\n pa?: IPoint;\n pb?: IPoint;\n}\n\nexport interface IShape extends IPoint {\n readonly center: IPoint;\n readonly subShapes?: ReadonlyArray<IShape>;\n getPath(x: number, y: number, ratio?: number): Path2D;\n support(dir: IPoint): IPoint;\n move(pos: IPoint): IShape;\n intersection(shape: IShape): ShapeIntersection;\n intersects(shape: IShape): boolean;\n minDistance(shape: IShape): ShapeDistance;\n distance(shape: IShape): number;\n}\n\n// --- Interactive canvas ---\n\nexport type CanvasResizeMode = \"fit\" | \"fill\";\n\nexport type CanvasItemDirection = \"horizontal\" | \"vertical\" | \"free\" | \"none\";\n\nexport type CanvasPaintFunc = (ctx: CanvasRenderingContext2D) => MaybePromise<GlobalCompositeOperation | null>;\n\nexport type RangeCoords = [from: number, to: number];\n\nexport interface RectCoords {\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\n/**\n * Rectangle frame interface\n */\nexport interface Frame extends IShape {\n width: number;\n height: number;\n rotation: number;\n}\n\n/**\n * Interface for an interactive canvas params\n */\nexport interface InteractiveCanvasParams {\n xRange?: RangeCoords;\n yRange?: RangeCoords;\n excludedAreas?: ReadonlyArray<RectCoords>;\n [key: string]: any;\n}\n\n/**\n * Interface for an interactive canvas item\n */\nexport interface InteractiveCanvasItem {\n readonly position: IPoint;\n readonly frame: Frame;\n readonly shapes: ReadonlyArray<IShape>;\n readonly isValid: boolean;\n readonly validPosition: IPoint;\n readonly hovered: boolean;\n readonly selected: boolean;\n readonly active: boolean;\n readonly canvas: InteractiveCanvas;\n readonly index: number;\n readonly canvasParams: InteractiveCanvasParams;\n draw(ctx: CanvasRenderingContext2D, shape: IShape): MaybePromise<void>;\n}\n\nexport type InteractiveCanvasItems = ReadonlyArray<InteractiveCanvasItem>;\n\n/**\n * Interface for an interactive canvas component\n * Some properties are optional for compatibility with other kind of renderer functions\n */\nexport interface InteractiveCanvas {\n // --- Getters ---\n readonly isInfinite?: boolean;\n readonly realWidth?: number;\n readonly realHeight?: number;\n readonly items?: InteractiveCanvasItems;\n readonly canvas: HTMLCanvasElement;\n readonly lockedItem?: InteractiveCanvasItem;\n // --- Getters / setters ---\n selectedItem?: InteractiveCanvasItem;\n hoveredItem?: InteractiveCanvasItem;\n // --- Calculated values on changes ---\n readonly xRange?: RangeCoords;\n readonly yRange?: RangeCoords;\n // --- Calculated values on resize ---\n readonly ratio: number;\n readonly styles: CSSStyleDeclaration;\n readonly ctx: CanvasRenderingContext2D;\n readonly canvasWidth: number;\n readonly canvasHeight: number;\n readonly fullHeight: number;\n readonly viewRatio: number;\n // --- Calculated values on rotation ---\n readonly rotation: number;\n readonly basePan: number;\n readonly cycles?: ReadonlyArray<number>;\n readonly excludedAreas?: ReadonlyArray<Frame>;\n // --- Optionals, for back compatibility ---\n rendered?: boolean;\n // --- Functions ---\n tempPaint(cb: CanvasPaintFunc): Promise<void>;\n}\n\nexport type InteractiveCanvasRenderer = (renderCanvas: InteractiveCanvas, renderCtx: Record<string, any>) => MaybePromise<void>;\n\nexport interface InteractivePanEvent {\n canvas: InteractiveCanvas;\n item: InteractiveCanvasItem;\n deltaX?: number;\n deltaY?: number;\n [key: string]: any;\n}\n\nexport interface InteractiveCanvasPointer {\n clientX: number;\n clientY: number;\n}\n\n// --- Http service ---\nexport interface HttpRequestHeaders {\n [header: string]: string | string[];\n}\n\nexport interface HttpRequestQuery {\n [key: string]: any;\n}\n\n/**\n * Base http request options that get sent to backend\n */\nexport interface HttpClientRequestOptions {\n method?: string;\n body?: any;\n headers?: HttpRequestHeaders | HttpHeaders;\n originalHeaders?: HttpRequestHeaders;\n params?: HttpRequestQuery;\n observe?: \"body\" | \"response\";\n /**\n * Used for uploads\n */\n reportProgress?: boolean;\n /**\n * Specifies the type of response\n */\n responseType?: \"arraybuffer\" | \"blob\" | \"json\" | \"text\";\n withCredentials?: boolean;\n timeout?: number;\n}\n\n/**\n * Extended http request options that the consumer can use\n */\nexport interface HttpRequestOptions extends HttpClientRequestOptions {\n /**\n * Read a specific property from the body if observe equals to 'body' and responseType equals to 'json'\n */\n read?: string;\n /**\n * Specifies when the cache for the request expires as an Observable\n */\n cache?: Observable<any>;\n}\n\n/**\n * Defines the type of uploadable content\n */\nexport type UploadData = Record<string, any> | ArrayBuffer | FormData;\n\nexport interface IIssueContext {\n url: string;\n}\n\nexport interface IProgress {\n percentage?: number;\n loaded?: number;\n total?: number;\n}\n\nexport type ProgressListener = (progress: IProgress) => void;\n\nexport type CacheExpireMode = boolean | \"auth\" | Date;\n\nexport interface IHttpService {\n readonly language: ILanguageService;\n readonly requestHeaders: Readonly<HttpRequestHeaders>;\n readonly requestParams: Readonly<HttpRequestQuery>;\n setHeader(name: string, value?: string | string[]): void;\n setParam(name: string, value?: any): void;\n cached(mode: CacheExpireMode): Observable<any>;\n url(url: string): string;\n makeListParams(page: number, itemsPerPage: number, orderBy?: string, orderDescending?: boolean, filter?: string): HttpRequestQuery;\n}\n\n// --- LocalHttp service ---\n\nexport interface SvgDefinition {\n source: SVGSVGElement;\n width: number;\n height: number;\n}\n\nexport type SvgSourceModifier = (svg: SVGSVGElement, width: number, height: number) => string;\n\n// --- Api service ---\n\nexport interface IBaseHttpClient extends HttpClient {\n readonly requestHeaders: Readonly<HttpRequestHeaders>;\n readonly requestParams: Readonly<HttpRequestQuery>;\n setHeader(name: string, value?: string | string[]): void;\n getHeader(name: string): string;\n setParam(name: string, value?: any): void;\n // Just a backwards compatibility method for end users..\n setExtraRequestParam(name: string, value?: any): void;\n makeHeaders(): HttpHeaders;\n}\n\nexport interface IApiService extends IHttpService {\n client: IBaseHttpClient;\n get(url: string, options?: HttpRequestOptions): Promise<any>;\n delete(url: string, options?: HttpRequestOptions): Promise<any>;\n post(url: string, body?: any, options?: HttpRequestOptions): Promise<any>;\n put(url: string, body?: any, options?: HttpRequestOptions): Promise<any>;\n patch(url: string, body?: any, options?: HttpRequestOptions): Promise<any>;\n upload(url: string, body: any, listener?: ProgressListener, options?: HttpRequestOptions): Promise<any>;\n list(url: string, params: HttpRequestQuery, options?: HttpRequestOptions): Promise<IPaginationData>;\n}\n\n// --- OpenApi service ---\nexport interface DynamicSchemaRef {\n dynamicSchema?: string;\n dynamicSchemaUrl?: string;\n dynamicSchemaName?: string;\n}\n\nexport interface OpenApiSchemaRef {\n $ref?: string;\n}\n\nexport interface OpenApiSchemaProperty extends DynamicSchemaRef, OpenApiSchemaRef {\n id: string;\n type?: string;\n format?: string;\n column?: boolean;\n additionalProperties?: any;\n allOf?: ReadonlyArray<OpenApiSchemaRef>;\n oneOf?: ReadonlyArray<OpenApiSchemaRef>;\n items?: OpenApiSchemaProperty;\n enum?: string[];\n [key: string]: any;\n}\n\nexport interface OpenApiSchema {\n properties: {\n [name: string]: OpenApiSchemaProperty;\n };\n required: string[];\n}\n\nexport interface OpenApiSchemas {\n [name: string]: OpenApiSchema;\n}\n\nexport type OpenApiSchemaSelector = (name: string, schemas: OpenApiSchemas, injector: Injector) => OpenApiSchema;\n\n// --- Dynamic table ---\nexport type TableFilterType = \"text\" | \"enum\" | \"checkbox\";\n\nexport interface ITableOrders {\n [column: string]: string;\n}\n\nexport interface ITableColumn {\n title?: string;\n sort?: string;\n filter?: boolean;\n filterType?: TableFilterType;\n enum?: string[];\n enumPrefix?: string;\n [key: string]: any;\n}\n\nexport interface ITableColumns {\n [column: string]: ITableColumn;\n}\n\nexport type TableColumns = ITableOrders | ITableColumns | string[];\n\nexport interface ITableTemplate {\n column: string | string[];\n pure: boolean;\n ref: TemplateRef<any>;\n}\n\nexport interface ITableTemplates {\n [column: string]: ITableTemplate;\n}\n\nexport interface ITableDataQuery {\n [column: string]: string | string[] | boolean;\n}\n\nexport type TableDataItems = ReadonlyArray<any>;\n\nexport type TableDataLoader = (\n page: number, rowsPerPage: number, orderBy: string, orderDescending: boolean,\n filter: string, query: ITableDataQuery\n) => Promise<IPaginationData>;\n\nexport type DragDropEvent<K extends string = \"item\", T = any> = {\n [key in K]: T;\n} & {\n ev: DragEvent;\n elem: HTMLElement;\n source?: T;\n};\n\nexport type DragEventHandler<R = boolean, K extends string = \"item\"> = (ev: DragDropEvent<K>) => R;\n\n// Back compatibility\nexport type ITableDragEvent = DragDropEvent;\nexport type DynamicTableDragHandler<R = boolean> = DragEventHandler<R>;\n\n// --- Resource if ---\nexport class ResourceIfContext {\n resource: string;\n url: string;\n}\n\n// --- ComponentLoaderService ---\n\nexport type CssSelector = [tagName: string, attrName?: string, attrValue?: string];\n\nexport type CssSelectorList = CssSelector[];\n\nexport interface DynamicModuleInfo {\n moduleId: string;\n loadChildren: LoadChildrenCallback;\n routes?: Routes;\n initialNavigation?: boolean;\n}\n\nexport interface DynamicComponentLocation {\n moduleId: string;\n selector: string;\n}\n\nexport interface DynamicEntryComponents {\n components: Type<any>[];\n moduleId: string;\n}\n\nexport class IConfiguration {\n cdnUrl?: string;\n baseUrl?: string;\n baseDomain?: string;\n translationUrl?: string;\n translationExt?: string;\n [key: string]: any;\n}\n\nexport interface IConfigService {\n readonly http: IBaseHttpClient;\n readonly config: IConfiguration;\n readonly injector: Injector;\n readonly load: () => Promise<IConfiguration>;\n readonly rootElement: any;\n cloneRootElem(): any;\n prepareUrl(url: string, ending: string): string;\n getConfigValue(key: string): any;\n getQueryParameter(name: string, url?: string): string;\n}\n\nexport type ResizeEventStrategy = \"scroll\" | \"object\" | \"observer\";\n\n// --- Error handler service ---\nexport type ErrorHandlerCallback = (error: string) => any;\n\n// --- Global templates service\n\nexport type GlobalComponentModifier = (component: any) => any;\n\n// --- Module ---\nexport type AppInitializerFunc = () => Promise<void> | void;\n\nexport interface IModuleConfig {\n apiService?: Type<IApiService>\n authService?: Type<IAuthService>;\n iconService?: Type<IIconService>;\n languageService?: Type<ILanguageService>;\n toasterService?: Type<IToasterService>;\n promiseService?: Type<IPromiseService>;\n configService?: Type<IConfigService>;\n dialogService?: Type<IDialogService>;\n iconType?: Type<IconProps>;\n iconMap?: IconMap;\n buttonType?: Type<ButtonProps>;\n initializeApp?: (injector: Injector) => AppInitializerFunc;\n baseUrl?: (injector: Injector) => string;\n resizeDelay?: number;\n resizeStrategy?: ResizeEventStrategy;\n socketPath?: string;\n staticSchemas?: OpenApiSchemas;\n schemaSelector?: OpenApiSchemaSelector;\n}\n\n// --- Valued promise ---\nexport class ValuedPromise<T> extends Promise<T> {\n value: T;\n}\n","import {InjectionToken, Type} from \"@angular/core\";\nimport {Request} from \"express\";\nimport {\n ButtonProps,\n DynamicEntryComponents,\n DynamicModuleInfo,\n ErrorHandlerCallback,\n IApiService,\n IAuthService,\n IConfigService,\n IConfiguration,\n IconMap,\n IconProps,\n IDialogService,\n IIconService,\n ILanguageService,\n IPromiseService,\n IToasterService,\n OpenApiSchemas, OpenApiSchemaSelector,\n ResizeEventStrategy\n} from \"./common-types\";\n\nexport const ICON_TYPE = new InjectionToken<Type<IconProps>>(\"icon-component-type\");\nexport const ICON_MAP = new InjectionToken<IconMap>(\"icon-map\");\nexport const BUTTON_TYPE = new InjectionToken<Type<ButtonProps>>(\"button-component-type\");\nexport const OPTIONS_TOKEN = new InjectionToken<Record<string, any>>(\"custom-options-token\");\nexport const ICON_SERVICE: InjectionToken<IIconService> = new InjectionToken<IIconService>(\"icon-service\");\nexport const LANGUAGE_SERVICE: InjectionToken<ILanguageService> = new InjectionToken<ILanguageService>(\"language-service\");\nexport const AUTH_SERVICE: InjectionToken<IAuthService> = new InjectionToken<IAuthService>(\"auth-service\");\nexport const TOASTER_SERVICE: InjectionToken<IToasterService> = new InjectionToken<IToasterService>(\"toaster-service\");\nexport const DIALOG_SERVICE = new InjectionToken<IDialogService>(\"dialog-service\");\nexport const SOCKET_IO_PATH = new InjectionToken<string>(\"socket-io-path\");\nexport const PROMISE_SERVICE = new InjectionToken<IPromiseService>(\"promise-service\");\nexport const EXPRESS_REQUEST = new InjectionToken<Request>(\"express-request\");\nexport const API_SERVICE: InjectionToken<IApiService> = new InjectionToken<IApiService>(\"api-service\");\nexport const DYNAMIC_ENTRY_COMPONENTS = new InjectionToken<DynamicEntryComponents[]>(\"dynamic-entry-components\");\nexport const DYNAMIC_MODULE_INFO = new InjectionToken<DynamicModuleInfo[]>(\"dynamic-module-info\");\nexport const APP_BASE_URL = new InjectionToken<string>(\"app-base-url\");\nexport const CONFIG_SERVICE = new InjectionToken<IConfigService>(\"config-service\");\nexport const BASE_CONFIG = new InjectionToken<IConfiguration>(\"base-config\");\nexport const SCRIPT_PARAMS = new InjectionToken<any>(\"script-params\");\nexport const ROOT_ELEMENT = new InjectionToken<HTMLElement>(\"app-root-element\");\nexport const RESIZE_DELAY = new InjectionToken<number>(\"resize-event-delay\");\nexport const RESIZE_STRATEGY = new InjectionToken<ResizeEventStrategy>(\"resize-event-strategy\");\nexport const ERROR_HANDLER = new InjectionToken<ErrorHandlerCallback>(\"error-handler-callback\");\nexport const STATIC_SCHEMAS = new InjectionToken<OpenApiSchemas>(\"static-openapi-schemas\");\nexport const SCHEMA_SELECTOR = new InjectionToken<OpenApiSchemaSelector>(\"openapi-schema-selector\");\n","import {AjaxRequestCallback, IAjaxRequestDetails} from \"../common-types\";\n\nexport class AjaxRequestHandler {\n\n private static isOverridden: boolean = false;\n\n public params: any;\n\n constructor(private pattern: RegExp, private callback: AjaxRequestCallback) {\n this.params = {};\n if (typeof XMLHttpRequest !== \"undefined\" && !AjaxRequestHandler.isOverridden) {\n AjaxRequestHandler.isOverridden = true;\n const originalOpen = XMLHttpRequest.prototype.open;\n XMLHttpRequest.prototype.open = function (method: string, url: string): void {\n originalOpen.apply(this, arguments);\n window.dispatchEvent(new CustomEvent(\"ajaxRequest\", {\n detail: {\n request: this,\n method: method,\n url: url\n }\n }))\n };\n }\n }\n\n listen(): AjaxRequestHandler {\n if (typeof window === \"undefined\") return this;\n window.addEventListener(\"ajaxRequest\", this.listener);\n return this;\n }\n\n forget(): AjaxRequestHandler {\n if (typeof window === \"undefined\") return;\n window.removeEventListener(\"ajaxRequest\", this.listener);\n return this;\n }\n\n private listener = (event: CustomEvent): void => {\n const details: IAjaxRequestDetails = event.detail;\n if (this.pattern.test(details.url)) this.callback(details, this.params);\n };\n}\n","import {MaybeArray} from \"../helper-types\";\n\nexport type FilterPredicate = (value: any, key?: any, target?: any, source?: any) => boolean;\nexport type IterateCallback = (value: any, key: any) => void;\nexport type IterateRecursiveCallback = (value: any, key: any, path: string, obj: any) => void;\n\nexport function defaultPredicate(value: any, key?: any, target?: any, source?: any): boolean {\n return true;\n}\n\nexport function shouldCopyDefault(key: any, value: any): boolean {\n return true;\n}\n\nconst hasBlob = typeof Blob !== \"undefined\" && !!Blob;\nconst hasFile = typeof File !== \"undefined\" && !!File;\n\nexport class ObjectUtils {\n\n static compare(a: any, b: any): number {\n if ((a === null || b === null) || (typeof a != typeof b)) {\n return null;\n }\n if (typeof a === \"string\") {\n return (a).localeCompare(b);\n } else {\n if (a instanceof Date) {\n a = a.getTime();\n b = b.getTime();\n }\n if (a > b) {\n return 1;\n } else if (a < b) {\n return -1;\n }\n return 0;\n }\n }\n\n static getProperties(obj: any): string[] {\n if (!ObjectUtils.isObject(obj) && !ObjectUtils.isFunction(obj)) return [];\n const props = new Set<string>();\n Object.keys(obj).forEach(p => props.add(p));\n Object.getOwnPropertyNames(obj).forEach(p => props.add(p));\n return Array.from(props);\n }\n\n static equals(a: any, b: any, visited: Set<any> = null): boolean {\n visited = visited || new Set();\n if (visited.has(a) && visited.has(b)) return true;\n if (a === b) return true;\n if (a === null || b === null) return false;\n if (a !== a && b !== b) return true; // NaN === NaN\n const at = typeof a, bt = typeof b;\n let length: number, key: any, keySet: any;\n if (at == bt && at == \"object\") {\n visited.add(a);\n visited.add(b);\n if (Array.isArray(a)) {\n if (!Array.isArray(b)) return false;\n if ((length = a.length) == b.length) {\n for (key = 0; key < length; key++) {\n if (!ObjectUtils.equals(a[key], b[key], visited)) return false;\n }\n return true;\n }\n } else {\n if (Array.isArray(b)) {\n return false;\n }\n keySet = Object.create(null);\n for (key in a) {\n if (a.hasOwnProperty(key)) {\n if (!ObjectUtils.equals(a[key], b[key], visited)) {\n return false;\n }\n keySet[key] = true;\n }\n }\n for (key in b) {\n if (b.hasOwnProperty(key) && !(key in keySet) && typeof b[key] !== \"undefined\") {\n return false;\n }\n }\n return true;\n }\n }\n return false;\n }\n\n static evaluate(expr: string, context: any = {}, res: any = {}): any {\n expr = Object.keys(context).reduce((res, key) => `var ${key} = this['${key}'];\\n${res}`, expr);\n const lines = expr.split(\"\\n\");\n const lastLine = \"return \" + lines.pop().replace(\"return \", \"\");\n lines.push(lastLine);\n expr = lines.join(\"\\n\");\n let result = null;\n try {\n result = new Function(expr).call(context);\n } catch (e) {\n res.exception = e;\n console.log(`Failed to parse expression: ${e.message}`, expr, context);\n }\n res.result = result;\n return result;\n }\n\n static empty(obj: any): boolean {\n return !obj || Object.keys(obj).length == 0;\n }\n\n static iterate(obj: any, cb: IterateCallback): void {\n const keys: any[] = Array.isArray(obj)\n ? Array.from(obj.keys())\n : (ObjectUtils.isObject(obj) ? Object.keys(obj) : []);\n keys.forEach(\n // @dynamic\n key => {\n cb(obj[key], key);\n }\n );\n }\n\n static iterateRecursive(obj: any, cb: IterateRecursiveCallback, path: string = \"\"): void {\n return ObjectUtils.iterate(obj, (value, key) => {\n const subPath = !path ? key : `${path}.${key}`;\n cb(value, key, subPath, obj);\n ObjectUtils.iterateRecursive(value, cb, subPath);\n });\n }\n\n static getValue(obj: Object, key: string, defaultValue?: any, treeFallback: boolean = false): any {\n key = key || \"\";\n const keys = key.split(\".\");\n let curKey = \"\";\n do {\n curKey += keys.shift();\n if (ObjectUtils.isDefined(obj) && ObjectUtils.isDefined(obj[curKey]) && (typeof obj[curKey] === \"object\" || !keys.length)) {\n obj = obj[curKey];\n curKey = \"\";\n } else if (!keys.length) {\n defaultValue = typeof defaultValue == \"undefined\" ? key.replace(new RegExp(`${curKey}$`), `{${curKey}}`) : defaultValue;\n obj = treeFallback ? obj || defaultValue : defaultValue;\n } else {\n curKey += \".\";\n }\n } while (keys.length);\n return obj;\n }\n\n static mapToPath(target: any, source: any, path: string[]): any {\n if (typeof source === \"undefined\") return target;\n if (path.length == 0) return source;\n const key: any = path.shift();\n if (key == \"*\") {\n if (ObjectUtils.isArray(source)) {\n target = ObjectUtils.isArray(target) ? target : [];\n return source.map((item, index) => {\n return ObjectUtils.mapToPath(target[index], item, Array.from(path));\n });\n }\n if (ObjectUtils.isObject(source)) {\n target = ObjectUtils.isObject(target) ? target : {};\n return Object.keys(source).reduce((result, key) => {\n result[key] = ObjectUtils.mapToPath(target[key], source[key], Array.from(path));\n return result;\n }, {});\n }\n return ObjectUtils.isNullOrUndefined(target) ? null : target;\n }\n const isArray = ObjectUtils.isArray(target);\n target = ObjectUtils.isObject(target) || isArray ? target : {};\n target[key] = ObjectUtils.mapToPath(target[key], source, Array.from(path));\n return isNaN(key) || isArray ? target : Object.values(target);\n }\n\n static filter(obj: any, predicate: FilterPredicate): any {\n return ObjectUtils.copyRecursive(null, obj, predicate || defaultPredicate, new Map());\n }\n\n static copy<T>(obj: T): T {\n return ObjectUtils.copyRecursive(null, obj, defaultPredicate, new Map());\n }\n\n static assign<T>(target: T, source: any, predicate?: FilterPredicate): T {\n return ObjectUtils.copyRecursive(target, source, predicate || defaultPredicate, new Map());\n }\n\n static getType(obj: any): string {\n const regex = new RegExp(\"\\\\s([a-zA-Z]+)\");\n const target = !obj ? null : obj.constructor;\n const type = !target ? null : Reflect.getMetadata(\"objectType\", target);\n return (type || Object.prototype.toString.call(obj).match(regex)[1]).toLowerCase();\n }\n\n static isPrimitive(value: any): boolean {\n const type = typeof value;\n return value == null || (type !== \"object\" && type !== \"function\");\n }\n\n static isObject(value: any): boolean {\n return ObjectUtils.getType(value) === \"object\";\n }\n\n static isDefined(value: any): boolean {\n return typeof value !== \"undefined\" && value !== null;\n }\n\n static isNullOrUndefined(value: any): boolean {\n return typeof value == \"undefined\" || value == null;\n }\n\n static isString(value: any): value is string {\n return typeof value === \"string\";\n }\n\n static isStringWithValue(value: any): value is string {\n return ObjectUtils.isString(value) && value.length > 0;\n }\n\n static isFunction(value: any): value is Function {\n return typeof value === \"function\";\n }\n\n static isDate(value: any): value is Date {\n return null !== value && !isNaN(value) && \"undefined\" !== typeof value.getDate;\n }\n\n static isBlob(value: any): value is Blob {\n return (hasBlob && value instanceof Blob) || (hasFile && value instanceof File);\n }\n\n static isBoolean(value: any): value is boolean {\n return value === true || value === false;\n }\n\n static isNumber(value: any): value is number {\n if (typeof value !== \"number\") return false;\n const num = +value;\n if ((num - num) !== 0) {\n return false;\n }\n if (num === value) {\n return true;\n }\n }\n\n static isArray<T, U>(value: MaybeArray<T> | ReadonlyArray<T> | U): value is T[] {\n return Array.isArray(value);\n }\n\n static isSet(value: any): value is Set<any> {\n return value instanceof Set;\n }\n\n static isConstructor(value: any): boolean {\n return (value && typeof value === \"function\" && value.prototype && value.prototype.constructor) === value && value.name !== \"Object\";\n }\n\n static checkInterface(obj: any, interFaceObject: any): boolean {\n return ObjectUtils.isInterface(obj, interFaceObject);\n }\n\n static isInterface(obj: any, interFaceObject: any): boolean {\n if (!obj || typeof obj !== \"object\" || ObjectUtils.isArray(obj) || !ObjectUtils.isObject(interFaceObject)) return false;\n const keys = Object.keys(interFaceObject);\n for (const key of keys) {\n let type = interFaceObject[key] || \"\";\n if (type.startsWith(\"*\")) {\n type = type.substr(1);\n if (obj.hasOwnProperty(key) && ObjectUtils.getType(obj[key]) !== type) return false;\n } else if (!obj.hasOwnProperty(key) || ObjectUtils.getType(obj[key]) !== type) {\n return false;\n }\n }\n return true;\n }\n\n static pad(obj: any, width: number, chr: string = \"0\"): string {\n const str = ObjectUtils.isDefined(obj) ? obj.toString() : \"\";\n return str.length >= width ? str : new Array(width - str.length + 1).join(chr) + str;\n }\n\n private static copyRecursive(target: any, source: any, predicate: FilterPredicate, copies: Map<any, any>): any {\n if (ObjectUtils.isPrimitive(source) || ObjectUtils.isDate(source) || ObjectUtils.isBlob(source) || ObjectUtils.isFunction(source)) return source;\n if (copies.has(source)) return copies.get(source);\n if (ObjectUtils.isArray(source)) {\n target = ObjectUtils.isArray(target) ? Array.from(target) : [];\n copies.set(source, target);\n for (let index = 0; index < source.length; index++) {\n const item = source[index];\n if (!predicate(item, index, target, source)) continue;\n if (target.length > index)\n target[index] = ObjectUtils.copyRecursive(target[index], item, predicate, copies);\n else\n target.push(ObjectUtils.copyRecursive(null, item, predicate, copies));\n }\n return target;\n }\n\n // If object defines __shouldCopy as false, then don't copy it\n if (source.__shouldCopy === false) return source;\n // Copy object\n const shouldCopy = ObjectUtils.isFunction(source.__shouldCopy) ? source.__shouldCopy : shouldCopyDefault;\n if (ObjectUtils.isConstructor(source.constructor)) {\n if (!target) {\n try {\n target = new source.constructor();\n } catch (e) {\n const proto = source.constructor.prototype || source.prototype;\n target = Object.create(proto);\n }\n }\n } else {\n target = Object.assign({}, target || {});\n }\n // Set to copies to prevent circular references\n copies.set(source, target);\n\n // Copy map entries\n if (target instanceof Map) {\n if (source instanceof Map) {\n for (const [key, value] of source.entries()) {\n if (!predicate(value, key, target, source)) continue;\n target.set(key, !shouldCopy(key, value) ? value : ObjectUtils.copyRecursive(target.get(key), value, predicate, copies));\n }\n }\n return target;\n }\n\n // Copy object members\n const keys = Object.keys(source);\n for (const key of keys) {\n if (!predicate(source[key], key, target, source)) continue;\n target[key] = !shouldCopy(key, source[key]) ? source[key] : ObjectUtils.copyRecursive(target[key], source[key], predicate, copies);\n }\n\n // Copy object properties\n const descriptors = Object.getOwnPropertyDescriptors(source);\n for (const key of Object.keys(descriptors)) {\n if (keys.indexOf(key) >= 0) continue;\n Object.defineProperty(target, key, descriptors[key]);\n }\n return target;\n }\n}\n","import {ObjectUtils} from \"./object.utils\";\n\nexport class ArrayUtils {\n\n static has(arr: ReadonlyArray<any>, ...items: any[]): boolean {\n if (!ObjectUtils.isArray(arr) || !ObjectUtils.isArray(items)) return false;\n for (let i = 0; i < items.length; i++) {\n if (arr.indexOf(items[i]) >= 0) return true;\n }\n return false;\n }\n\n static match(arr: ReadonlyArray<any>, str: string): boolean {\n if (!ObjectUtils.isArray(arr) || !ObjectUtils.isString(str)) return false;\n for (let i = 0; i < arr.length; i++) {\n if (arr[i] instanceof RegExp) {\n const regex = <RegExp>arr[i];\n if (regex.test(str)) return true;\n }\n }\n return false;\n }\n\n static any<T>(arr: ReadonlyArray<T>, cb: (item: T) => boolean): boolean {\n if (!ObjectUtils.isArray(arr) || !ObjectUtils.isFunction(cb)) return false;\n for (let i = 0; i < arr.length; i++) {\n if (cb(arr[i])) return true;\n }\n return false;\n }\n\n static move<T>(arr: T[], oldIndex: number, newIndex: number): T[] {\n if (!ObjectUtils.isArray(arr)) return [];\n const length = arr.length;\n while (oldIndex < 0) {\n oldIndex += length;\n }\n while (newIndex < 0) {\n newIndex += length;\n }\n if (newIndex >= length) {\n let k = newIndex - length + 1;\n while (k--) {\n arr.push(undefined);\n }\n }\n arr.splice(newIndex, 0, arr.splice(oldIndex, 1)[0]);\n return arr;\n }\n\n static reversed<T>(arr: ReadonlyArray<T>): T[] {\n const result = [];\n if (!ObjectUtils.isArray(arr)) return result;\n for (let i = arr.length - 1; i >= 0; i--) {\n result.push(arr[i]);\n }\n return result;\n }\n\n static min<T>(arr: ReadonlyArray<T>, cb: (item: T, index?: number) => number): T {\n if (!ObjectUtils.isArray(arr)) return null;\n let min = Number.MAX_SAFE_INTEGER;\n let result = null;\n for (let i = 0; i < arr.length; i++) {\n const current = cb(arr[i], i);\n if (current < min || result === null) {\n min = current;\n result = arr[i];\n }\n }\n return result;\n }\n\n static max<T>(arr: ReadonlyArray<T>, cb: (item: T, index?: number) => number): T {\n if (!ObjectUtils.isArray(arr)) return null;\n let max = Number.MIN_SAFE_INTEGER;\n let result = null;\n for (let i = 0; i < arr.length; i++) {\n const current = cb(arr[i], i);\n if (current > max || result === null) {\n max = current;\n result = arr[i];\n }\n }\n return result;\n }\n\n static chunk<T>(arr: ReadonlyArray<T>, size: number): Array<T[]> {\n if (!ObjectUtils.isArray(arr)) return [];\n size = Math.max(1, size);\n const result = [];\n for (let i = 0; i < arr.length; i += size) {\n result.push(arr.slice(i, i + size))\n }\n return result\n }\n\n static unique<T>(arr: ReadonlyArray<T>): T[] {\n if (!ObjectUtils.isArray(arr)) return [];\n return arr.filter((value, index, self) => {\n return self.indexOf(value) === index;\n });\n }\n}\n","import \"reflect-metadata\";\nimport {Injector, TypeProvider} from \"@angular/core\";\nimport {ResolveFactory} from \"../common-types\";\nimport {ObjectUtils} from \"./object.utils\";\n\nexport class ReflectUtils {\n\n static defineMetadata(key: string, data: any, target: any, name?: string): void {\n Reflect.defineMetadata(key, data, target, name);\n }\n\n static getMetadata(key: string, target: any, name?: string): any {\n return Reflect.getMetadata(key, target, name);\n }\n\n static getOwnMetadata(key: string, target: any, name?: string): any {\n return Reflect.getOwnMetadata(key, target, name);\n }\n\n static resolve<T>(obj: T, injector: Injector): T extends ResolveFactory<infer R> ? R : T {\n if (!ObjectUtils.checkInterface(obj, {func: \"function\"})) return obj as any;\n const factory = <ResolveFactory>obj;\n let depends: TypeProvider[];\n if (factory.type) {\n const method = ObjectUtils.getProperties(factory.type).find(function (key) {\n return factory.type[key] === factory.func;\n });\n depends = ReflectUtils.getMetadata(\"factoryDependencies\", factory.type, method) || [];\n } else {\n depends = ReflectUtils.getMetadata(\"factoryDependencies\", factory.func) || [];\n }\n const parameters = depends.map(function (dep) {\n return injector.get(dep);\n }).concat(factory.params);\n return factory.func.apply(null, parameters);\n }\n}\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\";\nimport {\n ActivatedRouteSnapshot,\n ChildrenOutletContexts,\n Data,\n NavigationEnd,\n NavigationExtras,\n OutletContext,\n Params,\n Resolve,\n Route,\n Router,\n Scroll,\n UrlSegment,\n UrlTree\n} from \"@angular/router\";\nimport {BehaviorSubject, firstValueFrom, Observable, Observer, Subscription} from \"rxjs\";\nimport {debounceTime, distinctUntilChanged, filter, map, skipWhile,} from \"rxjs/operators\";\nimport {ObjectUtils} from \"../utils/object.utils\";\nimport {IRoute, NavigationUrlParam} from \"../common-types\";\nimport {UniversalService} from \"./universal.service\";\n\nexport const emptySnapshot = new ActivatedRouteSnapshot();\nexport const emptyData: Data = {id: \"\"};\nexport const emptyParams: Params = {};\nexport const emptySegments: UrlSegment[] = [];\nexport const emptyComponents: any[] = [];\n\nexport interface IStateInfo {\n url: string;\n segments: UrlSegment[];\n components: any[];\n}\n\n@Injectable()\nexport class StateService {\n\n readonly globalExtras: NavigationExtras;\n\n protected $snapshot: BehaviorSubject<ActivatedRouteSnapshot>;\n protected $component: BehaviorSubject<any>;\n protected stateInfo: IStateInfo;\n\n static toPath(route: Route, params: any): string {\n let path = route.path || \"\";\n ObjectUtils.iterate(params, (value: any, key: string) => {\n path = path.replace(`:${key}`, `${value}`);\n });\n return path;\n }\n\n get snapshot(): ActivatedRouteSnapshot {\n return this.$snapshot.value;\n }\n\n get component(): any {\n return this.$component.value;\n }\n\n get route(): IRoute {\n return this.snapshot.routeConfig;\n }\n\n get data(): Data {\n return this.snapshot.data || emptyData;\n }\n\n get params(): Params {\n return this.snapshot.params || emptyParams;\n }\n\n get queryParams(): Params {\n return this.snapshot.queryParams || emptyParams;\n }\n\n get url(): string {\n return this.stateInfo.url || \"\";\n }\n\n get urlSegments(): UrlSegment[] {\n return this.stateInfo.segments || emptySegments;\n }\n\n get components(): any[] {\n return this.stateInfo.components || emptyComponents;\n }\n\n get routerConfig(): IRoute[] {\n return this.router.config;\n }\n\n get $observable(): Observable<ActivatedRouteSnapshot> {\n return this.$snapshot.pipe(\n skipWhile(snapshot => snapshot === emptySnapshot),\n debounceTime(25)\n )\n }\n\n constructor(readonly injector: Injector,\n readonly zone: NgZone,\n readonly universal: UniversalService,\n @Optional() readonly router: Router = null,\n @Optional() readonly contexts: ChildrenOutletContexts = null) {\n this.globalExtras = {\n queryParamsHandling: \"merge\"\n };\n this.$snapshot = new BehaviorSubject(emptySnapshot);\n this.$component = new BehaviorSubject(null);\n this.stateInfo = {\n url: \"\",\n segments: [],\n components: []\n };\n this.router?.events\n .pipe(\n distinctUntilChanged(),\n map(event => {\n if (event instanceof Scroll) {\n return event.routerEvent;\n }\n return event;\n }),\n filter(e => e instanceof NavigationEnd),\n )\n .subscribe(() => {\n let context: OutletContext = this.contexts?.getContext(\"primary\");\n let segments = [];\n const components: any[] = [];\n const snapshots: ActivatedRouteSnapshot[] = [];\n while (context && context.route) {\n const snapshot = context.route.snapshot;\n snapshots.push(snapshot);\n segments = segments.concat(snapshot.url);\n if (context.outlet && context.outlet.component)\n components.push(context.outlet.component);\n context = context.children.getContext(\"primary\");\n }\n this.stateInfo = {\n url: segments.map(s => s.url).join(\"/\"),\n segments: segments,\n components: components\n };\n this.$snapshot.next(snapshots[snapshots.length - 1]);\n this.$component.next(components[components.length - 1]);\n });\n }\n\n async reload(): Promise<any> {\n const routerStateSnapshot = this.router.routerState.snapshot;\n const resolvers = this.route.resolve || {};\n const keys = Object.keys(resolvers);\n for (const key of keys) {\n const resolver = this.injector.get(resolvers[key]) as Resolve<any>;\n let resolved = resolver.resolve(this.snapshot, routerStateSnapshot);\n if (resolved instanceof Observable) {\n resolved = firstValueFrom(resolved);\n }\n if (resolved instanceof Promise) {\n resolved = await resolved;\n }\n this.data[key] = resolved;\n }\n }\n\n async navigateByUrl(url: string | UrlTree, navigationExtras: NavigationExtras = {}): Promise<boolean> {\n return this.navigate(url, navigationExtras);\n }\n\n async navigate(url: NavigationUrlParam, navigationExtras: NavigationExtras = {}): Promise<boolean> {\n if (!this.router) return false;\n const [tree, extras] = this.createUrlTree(url, navigationExtras);\n return this.zone.run(() => {\n return this.router.navigateByUrl(tree, extras);\n });\n }\n\n async open(url: NavigationUrlParam, target = \"_blank\", navigationExtras: NavigationExtras = {}): Promise<boolean> {\n if (!this.router) return false;\n const [tree, extras] = this.createUrlTree(url, navigationExtras);\n return this.zone.run(() => {\n return this.openInNewWindow(tree, target) || this.router.navigateByUrl(tree, extras);\n });\n }\n\n subscribeImmediately(\n next?: (value: ActivatedRouteSnapshot) => void,\n error?: (error: any) => void\n ): Subscription {\n return this.subscribe({\n next, error\n });\n }\n\n subscribe(osOrNext?: Partial<Observer<ActivatedRouteSnapshot>> | ((value: ActivatedRouteSnapshot) => void)): Subscription {\n return this.$observable.subscribe(osOrNext);\n }\n\n protected openInNewWindow(tree: UrlTree, target: string): boolean {\n if (!this.universal.isBrowser) return false;\n const baseUrl = window.location.href.replace(this.router.url, \"\");\n try {\n const serialized = this.router.serializeUrl(tree);\n const separator = serialized.startsWith(\"/\") ? \"\" : \"/\";\n window.open(baseUrl + separator + serialized, target);\n return true;\n } catch (e) {\n console.log(`Can't open new window: ${e}`);\n return false;\n }\n }\n\n protected createUrlTree(url: NavigationUrlParam, extras?: NavigationExtras): [UrlTree, NavigationExtras] {\n if (!this.router) return null;\n extras = Object.assign(extras, this.globalExtras, extras || {});\n if (ObjectUtils.isArray(url)) {\n return [this.router.createUrlTree(url, extras), extras]\n }\n if (ObjectUtils.isString(url)) {\n return [this.router.parseUrl(url), extras];\n }\n return [url, extras];\n }\n}\n","import {Inject, Injectable, Injector} from \"@angular/core\";\nimport {ActivatedRouteSnapshot, CanActivate, RouterStateSnapshot, UrlSegment} from \"@angular/router\";\nimport {FactoryDependencies, IAuthService, IRoute, RouteValidator} from \"../common-types\";\nimport {ReflectUtils} from \"./reflect.utils\";\nimport {ObjectUtils} from \"./object.utils\";\nimport {StateService} from \"../services/state.service\";\nimport {AUTH_SERVICE} from \"../tokens\";\n\n@Injectable()\nexport class AuthGuard implements CanActivate {\n\n static guardAuthenticated(auth: IAuthService): Promise<boolean> {\n return Promise.resolve(auth.isAuthenticated);\n }\n\n static guardNotAuthenticated(auth: IAuthService): Promise<boolean> {\n return Promise.resolve(!auth.isAuthenticated);\n }\n\n static guardNothing(): Promise<boolean> {\n return Promise.resolve(true);\n }\n\n @FactoryDependencies(AUTH_SERVICE)\n static guardAuthField(auth: IAuthService, expression: string = `auth.isAuthenticated`): RouteValidator {\n // @dynamic\n const lambda = (): Promise<boolean> => {\n return Promise.resolve(ObjectUtils.evaluate(expression, {auth}));\n };\n return lambda;\n }\n\n @FactoryDependencies(StateService)\n static guardStateField(state: StateService, expression: string = `state.data`): RouteValidator {\n // @dynamic\n const lambda = (): Promise<boolean> => {\n return Promise.resolve(ObjectUtils.evaluate(expression, {state}));\n };\n return lambda;\n }\n\n @FactoryDependencies(AUTH_SERVICE, StateService)\n static guardAuthStateField(auth: IAuthService, state: StateService, expression: string = `auth.isAuthenticated`): RouteValidator {\n // @dynamic\n const lambda = (): Promise<boolean> => {\n return Promise.resolve(ObjectUtils.evaluate(expression, {auth, state}));\n };\n return lambda;\n }\n\n static wildRouteMatch(segments: UrlSegment[]) {\n return {consumed: segments};\n }\n\n static noRouteMatch() {\n return null;\n }\n\n constructor(@Inject(Injector) readonly injector: Injector,\n @Inject(StateService) readonly state: StateService,\n @Inject(AUTH_SERVICE) readonly auth: IAuthService) {\n }\n\n checkRouteMenu(route: IRoute): Promise<boolean> {\n if (!route.data || !route.data.name) return Promise.resolve(false);\n return this.checkRoute(route);\n }\n\n checkRoute(route: IRoute, next?: ActivatedRouteSnapshot): Promise<boolean> {\n const routeData = route.data || {};\n if (!routeData.guards)\n return Promise.resolve(!route.canActivate || this.auth.isAuthenticated);\n return new Promise<boolean>(resolve => {\n const guards = routeData.guards.map(g => {\n const guard = ReflectUtils.resolve(g, this.injector);\n return guard(this.auth, route, next);\n });\n Promise.all(guards).then(results => {\n resolve(results.indexOf(false) < 0);\n });\n });\n }\n\n canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean> {\n const route = <IRoute>next.routeConfig;\n return new Promise<boolean>(resolve => {\n this.auth.checkAuthenticated().then(() => {\n this.checkRoute(route, next).then(hasRights => {\n resolve(hasRights);\n if (!hasRights) {\n this.getReturnState(route).then(returnState => {\n if (!returnState) return;\n this.state.navigate(returnState, {queryParams: next.queryParams});\n });\n }\n });\n });\n });\n }\n\n getConfig(route: IRoute, config: IRoute[], path: string[]): IRoute[] {\n if (!config) return null;\n const match = config.findIndex(t => t == route);\n if (match >= 0) return config;\n for (const subConfig of config) {\n if (subConfig.path)\n path.push(subConfig.path);\n const loadedChildren = (subConfig[\"_loadedConfig\"] || {routes: null}).routes || subConfig[\"_loadedRoutes\"];\n const match = this.getConfig(route, subConfig.children || loadedChildren, path);\n if (!match) {\n if (subConfig.path)\n path.length -= 1;\n continue;\n }\n return match;\n }\n return null;\n }\n\n getReturnState(route: IRoute): Promise<string[]> {\n if (!route) return Promise.resolve(null);\n if (ObjectUtils.isObject(route.data) && ObjectUtils.isArray(route.data.returnState)) {\n return Promise.resolve(route.data.returnState);\n }\n const path = [];\n const config = this.getConfig(route, this.state.routerConfig, path);\n return new Promise<string[]>(resolve => {\n this.getReturnStateRecursive(config).then(rs => {\n if (!ObjectUtils.isArray(rs)) {\n resolve(rs);\n return;\n }\n resolve(path.concat(rs));\n });\n });\n }\n\n private getReturnStateRecursive(config: IRoute[], c: number = 0): Promise<string[]> {\n if (!config || c >= config.length) return Promise.resolve(null);\n return new Promise<string[]>(resolve => {\n const route = config[c];\n const check = !route.component ? Promise.resolve(false) : this.checkRoute(route);\n check.then(res => {\n if (res) {\n resolve([route.path]);\n return;\n }\n this.getReturnStateRecursive(config, c + 1).then(resolve);\n });\n });\n }\n}\n","import {InjectionToken, Injector, Provider, Type} from \"@angular/core\";\nimport {CachedFactory, TypedProvider} from \"../common-types\";\n\nconst CACHED_TOKEN = new InjectionToken(\"cached-factory-token\");\n\nexport function createTypedProvider<T>(provide: InjectionToken<T>, p: TypedProvider<T>, multi: boolean = false): Provider {\n if ((\"useFactory\" in p && \"deps\" in p) || \"useValue\" in p || \"useExisting\" in p || \"useClass\" in p) {\n return {\n provide,\n multi,\n ...p\n } as Provider;\n }\n if (\"useToken\" in p) {\n return {\n provide,\n multi,\n useFactory: (i: T) => i,\n deps: [p.useToken]\n };\n }\n return {\n provide,\n multi,\n useClass: p as Type<T>\n };\n}\n\nexport function cachedFactory<T>(providers: TypedProvider<T>[]): CachedFactory<T> {\n let cached: ReadonlyArray<T> = null;\n return (injector: Injector) => {\n if (cached !== null) {\n return cached;\n }\n const subInjector = Injector.create({\n providers: providers.map(p=> createTypedProvider(CACHED_TOKEN, p, true)),\n parent: injector\n });\n cached = subInjector.get(CACHED_TOKEN) as ReadonlyArray<T>;\n return cached;\n };\n}\n","import {CanvasColor} from \"../common-types\";\nimport {ObjectUtils} from \"./object.utils\";\n\ndeclare const netscape: any;\n\nclass BlurStack {\n r: number = 0;\n g: number = 0;\n b: number = 0;\n a: number = 0;\n next: BlurStack = null;\n}\n\nconst mul_table = [\n 512, 512, 456, 512, 328, 456, 335, 512, 405, 328, 271, 456, 388, 335, 292, 512,\n 454, 405, 364, 328, 298, 271, 496, 456, 420, 388, 360, 335, 312, 292, 273, 512,\n 482, 454, 428, 405, 383, 364, 345, 328, 312, 298, 284, 271, 259, 496, 475, 456,\n 437, 420, 404, 388, 374, 360, 347, 335, 323, 312, 302, 292, 282, 273, 265, 512,\n 497, 482, 468, 454, 441, 428, 417, 405, 394, 383, 373, 364, 354, 345, 337, 328,\n 320, 312, 305, 298, 291, 284, 278, 271, 265, 259, 507, 496, 485, 475, 465, 456,\n 446, 437, 428, 420, 412, 404, 396, 388, 381, 374, 367, 360, 354, 347, 341, 335,\n 329, 323, 318, 312, 307, 302, 297, 292, 287, 282, 278, 273, 269, 265, 261, 512,\n 505, 497, 489, 482, 475, 468, 461, 454, 447, 441, 435, 428, 422, 417, 411, 405,\n 399, 394, 389, 383, 378, 373, 368, 364, 359, 354, 350, 345, 341, 337, 332, 328,\n 324, 320, 316, 312, 309, 305, 301, 298, 294, 291, 287, 284, 281, 278, 274, 271,\n 268, 265, 262, 259, 257, 507, 501, 496, 491, 485, 480, 475, 470, 465, 460, 456,\n 451, 446, 442, 437, 433, 428, 424, 420, 416, 412, 408, 404, 400, 396, 392, 388,\n 385, 381, 377, 374, 370, 367, 363, 360, 357, 354, 350, 347, 344, 341, 338, 335,\n 332, 329, 326, 323, 320, 318, 315, 312, 310, 307, 304, 302, 299, 297, 294, 292,\n 289, 287, 285, 282, 280, 278, 275, 273, 271, 269, 267, 265, 263, 261, 259];\n\nconst shg_table = [\n 9, 11, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 17,\n 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19,\n 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20,\n 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21,\n 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,\n 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22,\n 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,\n 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23,\n 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,\n 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,\n 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,\n 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24];\n\nexport class CanvasUtils {\n\n static manipulatePixels(canvas: HTMLCanvasElement, ctx: CanvasRenderingContext2D, colorTransformer: (color: CanvasColor, greyscale?: number) => CanvasColor): void {\n const imgData = ctx.getImageData(0, 0, canvas.width, canvas.height);\n const pixels = imgData.data;\n for (let i = 0, n = pixels.length; i < n; i += 4) {\n const clr = new CanvasColor(pixels[i], pixels[i + 1], pixels[i + 2], pixels[i + 3]);\n const greyscale = clr.r * .3 + clr.g * .59 + clr.b * .11;\n const color = colorTransformer(clr, greyscale);\n pixels[i] = color.r;\n pixels[i + 1] = color.g;\n pixels[i + 2] = color.b;\n pixels[i + 3] = color.a;\n }\n ctx.putImageData(imgData, 0, 0);\n }\n\n static thresholding(canvas: HTMLCanvasElement, ctx: CanvasRenderingContext2D, threshold: number = 50, colorTransformer: (color: CanvasColor, limit: boolean, greyscale?: number) => CanvasColor): void {\n const min = new CanvasColor(0, 0, 0, 255);\n const max = new CanvasColor(0, 0, 0, 0);\n colorTransformer = ObjectUtils.isFunction(colorTransformer) ? colorTransformer : ((color: CanvasColor, limit: boolean): CanvasColor => {\n return limit ? max : min;\n });\n CanvasUtils.manipulatePixels(canvas, ctx, (color, greyscale) => {\n return colorTransformer(color, greyscale > threshold, greyscale);\n });\n }\n\n static stackBlur(canvas: HTMLCanvasElement, ctx: CanvasRenderingContext2D, radius: number = 10): void {\n if (isNaN(radius) || radius < 1) return;\n radius |= 0;\n\n const top_x = 0;\n const top_y = 0;\n const width = canvas.width;\n const height = canvas.height;\n\n let imageData = null;\n\n try {\n try {\n imageData = ctx.getImageData(top_x, top_y, width, height);\n } catch (e) {\n\n // NOTE: this part is supposedly only needed if you want to work with local files\n // so it might be okay to remove the whole try/catch block and just use\n // imageData = ctx.getImageData( top_x, top_y, width, height );\n try {\n netscape.security.PrivilegeManager.enablePrivilege(\"UniversalBrowserRead\");\n imageData = ctx.getImageData(top_x, top_y, width, height);\n } catch (e) {\n alert(\"Cannot access local image\");\n throw new Error(\"unable to access local image data: \" + e);\n }\n }\n } catch (e) {\n alert(\"Cannot access image\");\n throw new Error(\"unable to access image data: \" + e);\n }\n\n const pixels = imageData.data;\n\n let x, y, i, p, yp, yi, yw, r_sum, g_sum, b_sum, a_sum,\n r_out_sum, g_out_sum, b_out_sum, a_out_sum,\n r_in_sum, g_in_sum, b_in_sum, a_in_sum,\n pr, pg, pb, pa, rbs;\n\n const div = radius + radius + 1;\n const widthMinus1 = width - 1;\n const heightMinus1 = height - 1;\n const radiusPlus1 = radius + 1;\n const sumFactor = radiusPlus1 * (radiusPlus1 + 1) / 2;\n\n const stackStart = new BlurStack();\n let stackEnd = null;\n let stack = stackStart;\n\n for (i = 1; i < div; i++) {\n stack = stack.next = new BlurStack();\n if (i == radiusPlus1) {\n stackEnd = stack;\n }\n }\n stack.next = stackStart;\n let stackIn = null;\n let stackOut = null;\n\n yw = yi = 0;\n\n const mul_sum = mul_table[radius];\n const shg_sum = shg_table[radius];\n\n for (y = 0; y < height; y++) {\n r_in_sum = g_in_sum = b_in_sum = a_in_sum = r_sum = g_sum = b_sum = a_sum = 0;\n\n r_out_sum = radiusPlus1 * (pr = pixels[yi]);\n g_out_sum = radiusPlus1 * (pg = pixels[yi + 1]);\n b_out_sum = radiusPlus1 * (pb = pixels[yi + 2]);\n a_out_sum = radiusPlus1 * (pa = pixels[yi + 3]);\n\n r_sum += sumFactor * pr;\n g_sum += sumFactor * pg;\n b_sum += sumFactor * pb;\n a_sum += sumFactor * pa;\n\n stack = stackStart;\n\n for (i = 0; i < radiusPlus1; i++) {\n stack.r = pr;\n stack.g = pg;\n stack.b = pb;\n stack.a = pa;\n stack = stack.next;\n }\n\n for (i = 1; i < radiusPlus1; i++) {\n p = yi + ((widthMinus1 < i ? widthMinus1 : i) << 2);\n r_sum += (stack.r = (pr = pixels[p])) * (rbs = radiusPlus1 - i);\n g_sum += (stack.g = (pg = pixels[p + 1])) * rbs;\n b_sum += (stack.b = (pb = pixels[p + 2])) * rbs;\n a_sum += (stack.a = (pa = pixels[p + 3])) * rbs;\n\n r_in_sum += pr;\n g_in_sum += pg;\n b_in_sum += pb;\n a_in_sum += pa;\n\n stack = stack.next;\n }\n\n\n stackIn = stackStart;\n stackOut = stackEnd;\n for (x = 0; x < width; x++) {\n pixels[yi + 3] = pa = (a_sum * mul_sum) >> shg_sum;\n if (pa != 0) {\n pa = 255 / pa;\n pixels[yi] = ((r_sum * mul_sum) >> shg_sum) * pa;\n pixels[yi + 1] = ((g_sum * mul_sum) >> shg_sum) * pa;\n pixels[yi + 2] = ((b_sum * mul_sum) >> shg_sum) * pa;\n } else {\n pixels[yi] = pixels[yi + 1] = pixels[yi + 2] = 0;\n }\n\n r_sum -= r_out_sum;\n g_sum -= g_out_sum;\n b_sum -= b_out_sum;\n a_sum -= a_out_sum;\n\n r_out_sum -= stackIn.r;\n g_out_sum -= stackIn.g;\n b_out_sum -= stackIn.b;\n a_out_sum -= stackIn.a;\n\n p = (yw + ((p = x + radius + 1) < widthMinus1 ? p : widthMinus1)) << 2;\n\n r_in_sum += (stackIn.r = pixels[p]);\n g_in_sum += (stackIn.g = pixels[p + 1]);\n b_in_sum += (stackIn.b = pixels[p + 2]);\n a_in_sum += (stackIn.a = pixels[p + 3]);\n\n r_sum += r_in_sum;\n g_sum += g_in_sum;\n b_sum += b_in_sum;\n a_sum += a_in_sum;\n\n stackIn = stackIn.next;\n\n r_out_sum += (pr = stackOut.r);\n g_out_sum += (pg = stackOut.g);\n b_out_sum += (pb = stackOut.b);\n a_out_sum += (pa = stackOut.a);\n\n r_in_sum -= pr;\n g_in_sum -= pg;\n b_in_sum -= pb;\n a_in_sum -= pa;\n\n stackOut = stackOut.next;\n\n yi += 4;\n }\n yw += width;\n }\n\n\n for (x = 0; x < width; x++) {\n g_in_sum = b_in_sum = a_in_sum = r_in_sum = g_sum = b_sum = a_sum = r_sum = 0;\n\n yi = x << 2;\n r_out_sum = radiusPlus1 * (pr = pixels[yi]);\n g_out_sum = radiusPlus1 * (pg = pixels[yi + 1]);\n b_out_sum = radiusPlus1 * (pb = pixels[yi + 2]);\n a_out_sum = radiusPlus1 * (pa = pixels[yi + 3]);\n\n r_sum += sumFactor * pr;\n g_sum += sumFactor * pg;\n b_sum += sumFactor * pb;\n a_sum += sumFactor * pa;\n\n stack = stackStart;\n\n for (i = 0; i < radiusPlus1; i++) {\n stack.r = pr;\n stack.g = pg;\n stack.b = pb;\n stack.a = pa;\n stack = stack.next;\n }\n\n yp = width;\n\n for (i = 1; i <= radius; i++) {\n yi = (yp + x) << 2;\n\n r_sum += (stack.r = (pr = pixels[yi])) * (rbs = radiusPlus1 - i);\n g_sum += (stack.g = (pg = pixels[yi + 1])) * rbs;\n b_sum += (stack.b = (pb = pixels[yi + 2])) * rbs;\n a_sum += (stack.a = (pa = pixels[yi + 3])) * rbs;\n\n r_in_sum += pr;\n g_in_sum += pg;\n b_in_sum += pb;\n a_in_sum += pa;\n\n stack = stack.next;\n\n if (i < heightMinus1) {\n yp += width;\n }\n }\n\n yi = x;\n stackIn = stackStart;\n stackOut = stackEnd;\n for (y = 0; y < height; y++) {\n p = yi << 2;\n pixels[p + 3] = pa = (a_sum * mul_sum) >> shg_sum;\n if (pa > 0) {\n pa = 255 / pa;\n pixels[p] = ((r_sum * mul_sum) >> shg_sum) * pa;\n pixels[p + 1] = ((g_sum * mul_sum) >> shg_sum) * pa;\n pixels[p + 2] = ((b_sum * mul_sum) >> shg_sum) * pa;\n } else {\n pixels[p] = pixels[p + 1] = pixels[p + 2] = 0;\n }\n\n r_sum -= r_out_sum;\n g_sum -= g_out_sum;\n b_sum -= b_out_sum;\n a_sum -= a_out_sum;\n\n r_out_sum -= stackIn.r;\n g_out_sum -= stackIn.g;\n b_out_sum -= stackIn.b;\n a_out_sum -= stackIn.a;\n\n p = (x + (((p = y + radiusPlus1) < heightMinus1 ? p : heightMinus1) * width)) << 2;\n\n r_sum += (r_in_sum += (stackIn.r = pixels[p]));\n g_sum += (g_in_sum += (stackIn.g = pixels[p + 1]));\n b_sum += (b_in_sum += (stackIn.b = pixels[p + 2]));\n a_sum += (a_in_sum += (stackIn.a = pixels[p + 3]));\n\n stackIn = stackIn.next;\n\n r_out_sum += (pr = stackOut.r);\n g_out_sum += (pg = stackOut.g);\n b_out_sum += (pb = stackOut.b);\n a_out_sum += (pa = stackOut.a);\n\n r_in_sum -= pr;\n g_in_sum -= pg;\n b_in_sum -= pb;\n a_in_sum -= pa;\n\n stackOut = stackOut.next;\n\n yi += width;\n }\n }\n\n ctx.putImageData(imageData, top_x, top_y);\n }\n\n static measureTextFontSize(maxWidth: number, maxHeight: number, lines: string[], font: string, lineHeightPercent: number = 1.1, canvas?: HTMLCanvasElement): number {\n\n const startSize: number = maxHeight;\n const context: CanvasRenderingContext2D = canvas.getContext(\"2d\");\n\n if (!canvas) {\n canvas = <HTMLCanvasElement>document.createElement(\"canvas\");\n document.body.appendChild(canvas);\n }\n\n canvas.width = maxWidth + maxHeight;\n canvas.height = maxHeight * 2;\n\n let fontSize: number = CanvasUtils.halveValidateFontSize(startSize, (size: number) => {\n CanvasUtils.setFontProps(context, font, size);\n const maxTextLinesWidth = CanvasUtils.getTextWidth(context, lines);\n return maxWidth - maxTextLinesWidth;\n });\n\n const bitmapHeight: number = CanvasUtils.getTextBitmapHeight(canvas, context, lines, font, fontSize, lineHeightPercent);\n if (bitmapHeight > maxHeight) {\n fontSize = CanvasUtils.halveValidateFontSize(fontSize, (size: number) => {\n return maxHeight - CanvasUtils.getTextBitmapHeight(canvas, context, lines, font, size, lineHeightPercent);\n });\n }\n\n return fontSize;\n }\n\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 {\n CanvasUtils.setFontProps(context, font, size, align, baseLine);\n for (let i: number = 0; i < lines.length; i++) {\n const line: string = lines[i];\n context.fillText(line, x, y);\n if (i < lines.length - 1) {\n y += size * lineHeightPercent;\n }\n }\n return y;\n }\n\n static wrapText(context: CanvasRenderingContext2D, text: string, x: number, y: number, maxWidth: number): void {\n const words = text.split(\" \");\n const lineHeight = context.measureText(\"M\").width * 1.3;\n const lines: string[] = [];\n let line = \"\";\n for (let n = 0; n < words.length; n++) {\n const testLine = line + words[n] + \" \";\n const metrics = context.measureText(testLine);\n const testWidth = metrics.width;\n if (testWidth > maxWidth && n > 0) {\n lines.push(line);\n line = words[n] + \" \";\n }\n else {\n line = testLine;\n }\n }\n lines.push(line);\n y -= lineHeight * .5 * lines.length;\n lines.forEach(l => {\n context.fillText(l, x, y);\n y += lineHeight;\n });\n }\n\n static setFontProps(context: CanvasRenderingContext2D, font: string, fontSize: number, align: string = \"left\", baseLine: string = \"top\"): void {\n context.font = `${fontSize}px ${font}`;\n context.textAlign = <any>align;\n context.textBaseline = <any>baseLine;\n }\n\n private static getTextWidth(context: CanvasRenderingContext2D, lines: string[]): number {\n let maxWidth: number = 0;\n for (let i: number = 0; i < lines.length; i++) {\n const line: string = lines[i];\n maxWidth = Math.max(maxWidth, context.measureText(line).width);\n }\n return maxWidth;\n }\n\n private static getTextBitmapHeight(canvas: HTMLCanvasElement, context: CanvasRenderingContext2D, lines: string[], font: string, fontSize: number, lineHeightPercent: number): number {\n const width: number = canvas.width;\n const height: number = canvas.height;\n context.clearRect(0, 0, width, height);\n\n const textY = CanvasUtils.drawLines(context, lines, font, fontSize, lineHeightPercent, \"left\", \"top\", fontSize * .5, fontSize * .5);\n const imageData: ImageData = context.getImageData(0, 0, width, height);\n\n let textHeight: number = 0;\n\n yLoop:for (let y: number = 0; y < height; y++) {\n for (let x: number = 0; x < width; x++) {\n const index: number = (x + y * width) * 4;\n if (imageData.data[index + 3] > 0) {\n textHeight = y + 1;\n continue yLoop;\n }\n }\n }\n\n return Math.max(textHeight, textY + fontSize);\n }\n\n private static halveValidateFontSize(startSize: number, callback: (size: number) => number): number {\n let fontSize: number = startSize;\n let lastFontSize: number = 0;\n let direction: number;\n\n for (let i: number = 0; i < 20; i++) {\n direction = callback(fontSize);\n const tempSize: number = fontSize;\n if (direction < 0) {\n fontSize = fontSize - (Math.abs(fontSize - lastFontSize) / 2);\n } else {\n fontSize = fontSize + (Math.abs(fontSize - lastFontSize) / 2);\n }\n lastFontSize = tempSize;\n if (Math.abs(fontSize - lastFontSize) < 0.1) {\n break;\n }\n }\n fontSize = Math.floor(fontSize);\n return fontSize;\n }\n}\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\";\nimport {DurationUnit} from \"../common-types\";\n\nexport class DateUtils {\n\n static isHoliday(date: Date): boolean {\n return DateTime.fromJSDate(date).isWeekend;\n }\n\n static isBusinessDay(date: Date): boolean {\n return !DateUtils.isHoliday(date);\n }\n\n static add(date: Date, amount: number = 1, unit: DurationUnit = \"days\"): Date {\n return DateTime.fromJSDate(date).plus({[unit]: amount}).toJSDate();\n }\n\n static businessAdd(date: Date, amount: number = 1, unit: DurationUnit = \"days\", freeDays: Date[] = []): Date {\n const signal = amount < 0 ? -1 : 1;\n const freeTimes = freeDays.map(d => DateTime.fromJSDate(d));\n let remaining = Math.abs(amount);\n let day = DateTime.fromJSDate(date);\n while (remaining) {\n day = day.plus({[unit]: signal});\n if (day.isWeekend && !freeTimes.some(m => m.hasSame(day, \"day\"))) {\n remaining--;\n }\n }\n return day.toJSDate();\n }\n\n static businessSubtract(date: Date, amount: number = 1, unit: DurationUnit = \"days\"): Date {\n return DateUtils.businessAdd(date, -amount, unit);\n }\n}\n","import {HttpClient} from \"@angular/common/http\";\nimport {firstValueFrom} from \"rxjs\";\nimport {ObjectUtils} from \"./object.utils\";\n\ndeclare const saveAs: any;\n\nexport class FileUtils {\n\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;\n\n static getExtension(file: File): string {\n return file ? file.name.substring(file.name.lastIndexOf(\".\")).toLowerCase() : null;\n }\n\n static getName(file: File): string {\n return file ? file.name.substring(0, file.name.lastIndexOf(\".\")) : null;\n }\n\n static toFile(blob: Blob, fileName: string): File {\n const data: any = blob;\n data.lastModifiedDate = new Date();\n data.name = fileName.split(/\\\\|\\//g).pop();\n return <File>data;\n }\n\n static dataToBlob(data: string): Blob {\n const parts = data.split(\",\");\n const byteString = atob(parts[1]);\n const mimeString = parts[0].split(\":\")[1].split(\";\")[0];\n\n const ab = new ArrayBuffer(byteString.length);\n const ia = new Uint8Array(ab);\n for (let i = 0; i < byteString.length; i++) {\n ia[i] = byteString.charCodeAt(i);\n }\n\n return new Blob([ab], {type: mimeString});\n }\n\n static saveBlob(blob: Blob, fileName: string): void {\n if (typeof saveAs == \"undefined\") {\n throw Error(\"FileSaver library is not loaded. Please load it: https://www.npmjs.com/package/file-saver\");\n }\n saveAs(blob, fileName);\n }\n\n static saveJson(json: any, fileName: string): void {\n if (!ObjectUtils.isObject(json)) return;\n FileUtils.saveBlob(new Blob([JSON.stringify(json, null, 4)]), fileName);\n }\n\n static readFileAsText(file: Blob): Promise<string> {\n return FileUtils.readFile(\n // @dynamic\n reader => reader.readAsText(file)\n );\n }\n\n static readFileAsDataURL(file: Blob): Promise<string> {\n return FileUtils.readFile(\n // @dynamic\n reader => reader.readAsDataURL(file)\n );\n }\n\n static base64ToBlob(base64: string, mimeType = \"application/octet-stream\") {\n // Decode the Base64 string into a binary string\n const byteCharacters = atob(base64);\n\n // Convert the binary string into an array of bytes\n const byteNumbers = Array.from(byteCharacters, char => char.charCodeAt(0));\n const byteArray = new Uint8Array(byteNumbers);\n\n // Create a Blob with the byte array and the specified MIME type\n return new Blob([byteArray], { type: mimeType });\n }\n\n static async readBlobFromUrl(http: HttpClient, url: string): Promise<Blob> {\n if (!url) {\n throw new Error(`The URL is not specified for readBlobFromUrl`);\n }\n if (url.match(FileUtils.base64)) {\n return FileUtils.base64ToBlob(url);\n }\n return firstValueFrom(http.get(url, {\n responseType: \"blob\"\n }));\n }\n\n static async readDataFromUrl(http: HttpClient, url: string): Promise<string> {\n if (!url) {\n throw new Error(`The URL is not specified for readBlobFromUrl`);\n }\n if (url.match(FileUtils.base64)) {\n return url;\n }\n const blob = await firstValueFrom(http.get(url, {\n responseType: \"blob\"\n }));\n return FileUtils.readFileAsDataURL(blob);\n }\n\n static getVideoCover(file: File, seekTo: number = null, quality: number = .75) {\n return new Promise<string>((resolve, reject) => {\n // load the file to a video player\n const videoPlayer = document.createElement(\"video\");\n videoPlayer.setAttribute(\"src\", URL.createObjectURL(file));\n videoPlayer.load();\n videoPlayer.addEventListener(\"error\", (ex) => {\n reject(\"error when loading video file\");\n });\n // load metadata of the video to get video duration and dimensions\n videoPlayer.addEventListener(\"loadedmetadata\", () => {\n if (isNaN(seekTo)) {\n seekTo = videoPlayer.duration / 2;\n }\n // seek to user defined timestamp (in seconds) if possible\n if (videoPlayer.duration < seekTo) {\n reject(\"video is too short.\");\n return;\n }\n // delay seeking or else \"seeked\" event won\"t fire on Safari\n setTimeout(() => {\n videoPlayer.currentTime = seekTo;\n }, 200);\n // extract video thumbnail once seeking is complete\n videoPlayer.addEventListener(\"seeked\", () => {\n // define a canvas to have the same dimension as the video\n const canvas = document.createElement(\"canvas\");\n canvas.width = videoPlayer.videoWidth;\n canvas.height = videoPlayer.videoHeight;\n // draw the video frame to canvas\n const ctx = canvas.getContext(\"2d\");\n ctx.drawImage(videoPlayer, 0, 0, canvas.width, canvas.height);\n // return the canvas image as a blob\n resolve(ctx.canvas.toDataURL(\n \"image/jpeg\",\n quality\n ));\n });\n });\n });\n }\n\n static async getFilePreview(file: File): Promise<string> {\n const type = file.type.toLowerCase();\n if (type.startsWith(\"image/\")) {\n return URL.createObjectURL(file);\n }\n if (type.startsWith(\"video/\")) {\n return FileUtils.getVideoCover(file);\n }\n return null;\n }\n\n private static readFile(callback: (reader: FileReader) => void): Promise<string> {\n return new Promise<string>(\n // @dynamic\n (resolve, reject) => {\n const reader = new FileReader();\n reader.onload = (event: any) => resolve(event.target.result);\n reader.onerror = reject;\n callback(reader);\n }\n );\n }\n}\n","export class ForbiddenZone {\n\n static isForbidden(name: string): boolean {\n return Zone.current.name === `forbidden-${name}`;\n }\n\n static run<T>(name: string, cb: () => T): T {\n const forbiddenZone = Zone.current.fork({\n name: `forbidden-${name}`\n });\n return forbiddenZone.run(cb);\n }\n}\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\";\nimport {InteractiveCanvas, InteractiveCanvasRenderer} from \"../../common-types\";\n\nexport class ExclusionsRenderer {\n\n constructor() {\n return Invokable.create(this);\n }\n\n async [Invokable.call](renderCanvas: InteractiveCanvas): Promise<void> {\n const ctx = renderCanvas.ctx;\n renderCanvas.excludedAreas?.forEach(shape => {\n ctx.fillStyle = \"rgba(128,128,128,0.55)\";\n const path = shape.getPath(shape.x, shape.y, 1);\n ctx.fill(path);\n })\n }\n}\n\nexport interface ExclusionsRenderer extends InteractiveCanvasRenderer {\n}\n","import {Invokable} from \"invokable\";\nimport {InteractiveCanvas, InteractiveCanvasRenderer} from \"../../common-types\";\n\nconst rulerDash: number[] = [5, 5];\nconst emptyDash: number[] = [];\n\nexport class RulerCanvasRenderer {\n\n constructor() {\n return Invokable.create(this);\n }\n\n async [Invokable.call](renderCanvas: InteractiveCanvas): Promise<void> {\n const ctx = renderCanvas.ctx;\n ctx.lineWidth = 1;\n ctx.strokeStyle = \"rgba(128, 128, 128, 0.4)\";\n ctx.setLineDash(rulerDash);\n renderCanvas.cycles?.forEach(cycle => {\n ctx.beginPath();\n ctx.moveTo(0, cycle);\n ctx.lineTo(renderCanvas.canvasWidth, cycle);\n ctx.stroke();\n });\n const hw = renderCanvas.canvasWidth / 2;\n ctx.lineDashOffset = -renderCanvas.basePan;\n ctx.beginPath();\n ctx.moveTo(hw, 0);\n ctx.lineTo(hw, renderCanvas.canvasHeight);\n ctx.stroke();\n ctx.setLineDash(emptyDash);\n }\n}\n\nexport interface RulerCanvasRenderer extends InteractiveCanvasRenderer {\n}\n","import {IPoint} from \"../../common-types\";\n\nexport function dotProduct(a: IPoint, b: IPoint): number {\n return a.x * b.x + a.y * b.y;\n}\n\nexport function tripleProduct(a: IPoint, b: IPoint, c: IPoint): IPoint {\n const ac=a.x*c.x+a.y*c.y;\n const bc=b.x*c.x+b.y*c.y;\n return {x:b.x*ac-a.x*bc,y:b.y*ac-a.y*bc};\n}\n\nexport function isPoint(v: IPoint | number): v is IPoint {\n return typeof v === \"object\" && Number.isFinite(v.x) && Number.isFinite(v.y);\n}\n\nexport function ensurePoint(p: IPoint, fallback: IPoint = {x: 0, y: 0}): IPoint {\n return isPoint(p) ? {x: +p.x, y: +p.y} : fallback;\n}\n\nexport function perpendicular(p: IPoint): IPoint {\n return {x: -p.y, y: +p.x};\n}\n\nexport function negatePt(p: IPoint): IPoint {\n return {x: -p.x, y: -p.y};\n}\n\nexport function normalizePt(p: IPoint): IPoint {\n const length = lengthOfPt(p);\n return dividePts(p, length);\n}\n\nexport function addPts(a: IPoint, b: IPoint): IPoint {\n return {x: a.x + b.x, y: a.y + b.y};\n}\n\nexport function distanceSq(a: IPoint, b: IPoint): number {\n const x = b.x - a.x;\n const y = b.y - a.y;\n return x * x + y * y;\n}\n\nexport function distance(a: IPoint, b: IPoint): number {\n return Math.sqrt(distanceSq(a, b));\n}\n\nexport function lerpPts(a: IPoint, b: IPoint, t: number): IPoint {\n const diff = subPts(b, a);\n return addPts(a, multiplyPts(diff, t));\n}\n\nexport function lengthOfPt(p: IPoint): number {\n return Math.hypot(p.x, p.y);\n}\n\nexport function multiplyPts(a: IPoint, b: IPoint | number): IPoint {\n const s = isPoint(b) ? b : {x: b, y: b};\n return {x: a.x * s.x, y: a.y * s.y};\n}\n\nexport function dividePts(a: IPoint, b: IPoint | number): IPoint {\n const s = isPoint(b) ? b : {x: b, y: b};\n return {x: a.x / s.x, y: a.y / s.y};\n}\n\nexport function subPts(a: IPoint, b: IPoint): IPoint {\n return {x: a.x - b.x, y: a.y - b.y};\n}\n\nexport function rotateDeg(p: IPoint, ang: number): IPoint {\n return rotateRad(p, toRadians(ang));\n}\n\nexport function rotateRad(p: IPoint, ang: number): IPoint {\n const c = Math.cos(ang), s = Math.sin(ang);\n return {x: p.x * c - p.y * s, y: p.x * s + p.y * c};\n}\n\nexport function toDegrees(rad: number): number {\n return rad * 180 / Math.PI;\n}\n\nexport function toRadians(deg: number): number {\n return deg * Math.PI / 180;\n}\n","import {ObjectUtils} from \"./object.utils\";\nimport {RangeCoords} from \"../common-types\";\n\nexport const EPSILON = 1e-9;\n\n/**\n * Normalize a range\n * @param minOrRange\n * @param max\n */\nexport function normalizeRange(minOrRange: number | RangeCoords, max?: number): RangeCoords {\n const min = (Array.isArray(minOrRange) ? minOrRange[0] : minOrRange) ?? 0;\n max = (Array.isArray(minOrRange) ? minOrRange[1] : max) ?? 1;\n return (max < min) ? [max, min] : [min, max];\n}\n\n/**\n * Clamps a value to a range\n * @param value\n * @param min\n * @param max\n */\nexport function clamp(value: number, min: number | RangeCoords, max?: number): number {\n const range = normalizeRange(min, max);\n return Math.max(Math.min(value, range[1]), range[0]);\n}\n\n/**\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\n * @param value\n * @param min\n * @param max\n */\nexport function overflow(value: number, min: number | RangeCoords, max?: number) {\n const range = normalizeRange(min, max);\n const length = range[1] - range[0];\n return ((((value - range[0]) % length) + length) % length) + range[0];\n}\n\n/**\n * Checks if a number is equal to b number with epsilon tolerance\n * @param a\n * @param b\n * @param epsilon\n */\nexport function isEqual(a: number, b: number, epsilon: number = null): boolean {\n epsilon = ObjectUtils.isNumber(epsilon) ? epsilon : EPSILON;\n return Math.abs(a - b) <= epsilon;\n}\n\n/**\n * Checks if a number is equal to zero with epsilon tolerance\n * @param a\n * @param epsilon\n */\nexport function isZero(a: number, epsilon: number = null): boolean {\n return isEqual(a, 0, epsilon);\n}\n\nexport class MathUtils {\n\n static equal(a: number, b: number, epsilon: number = null): boolean {\n return isEqual(a, b, epsilon);\n }\n\n static clamp(value: number, min: number, max: number): number {\n return clamp(value, min, max);\n }\n\n static round(value: number, precision: number = 2, divider: number = 1): number {\n precision = Math.pow(10, precision);\n return Math.round(value * precision / divider) / precision;\n }\n\n static approxIndex(x: number, values: number[], epsilon: number = null): number {\n if (!Array.isArray(values) || values.length == 0) {\n return -1;\n }\n let s = 0;\n let e = values.length - 1;\n while (s <= e) {\n const i = Math.floor((s + e) / 2);\n const v = values[i];\n if (MathUtils.equal(v, x, epsilon)) {\n return i;\n }\n if (v < x) {\n s = i + 1;\n } else {\n e = i - 1;\n }\n }\n const m = Math.max(e, 0);\n const a = values[s];\n const b = values[m];\n return Math.abs(a - x) < Math.abs(b - x) ? s : m;\n }\n\n static approximate(x: number, values: number[], epsilon: number = null): number {\n const index = MathUtils.approxIndex(x, values, epsilon);\n return values[index] ?? null;\n }\n}\n","import {IPoint, IShape, ShapeDistance, ShapeIntersection} from \"../../common-types\";\nimport {tripleProduct, subPts, ensurePoint, negatePt, lerpPts, distance, addPts, normalizePt} from \"./functions\";\nimport {EPSILON} from \"../math.utils\";\n\ninterface SimplexLine {\n p: IPoint;\n a: IPoint;\n b: IPoint;\n}\n\ntype Simplex = SimplexLine[];\n\ninterface Dir {\n x: number;\n y: number;\n}\n\nconst MAX_ITERS = 40;\n\n// =========================\n// GJK distance (robust)\n// =========================\nexport function gjkDistance(A: IShape, B: IShape): ShapeDistance {\n // 1) Quick overlap\n const inter = gjkIntersection(A, B);\n if (inter.hit) {\n // Pass through pa/pb\n return { distance: 0, pa: inter.pa ?? null, pb: inter.pb ?? null };\n }\n\n const ca = A.center;\n const cb = B.center;\n\n // 2) Bisection along the center-line to find the first hit pose\n let s = 0;\n let e = 1;\n let iters = 0;\n\n // Keep the best \"hit\" snapshot and its center so we can map witnesses back\n let hitSnap: ShapeIntersection | null = null;\n let hitCenter = ca;\n\n while ((e - s) > EPSILON && iters < MAX_ITERS) {\n iters++;\n const t = (e + s) * 0.5;\n\n // Assumes A.move(newCenter) returns a NEW shape whose center is exactly this point\n const aMoved = A.move(lerpPts(ca, cb, t));\n const test = gjkIntersection(aMoved, B);\n\n if (test.hit) {\n hitSnap = test;\n hitCenter = aMoved.center;\n e = t; // shrink toward contact\n } else {\n s = t; // still separated\n }\n }\n\n // 3) Make sure we end with a hit snapshot (in case we stopped on iteration cap)\n if (!hitSnap) {\n const aMoved = A.move(lerpPts(ca, cb, e));\n const test = gjkIntersection(aMoved, B);\n if (test.hit) {\n hitSnap = test;\n hitCenter = aMoved.center;\n } else {\n // Extremely degenerate: no hit even at e ~ 1 (shouldn't happen for non-degenerate shapes).\n // Fall back to center-line direction as a last resort.\n const dir = normalizePt(subPts(cb, ca));\n const pa0 = A.support(dir);\n const pb0 = B.support(negatePt(dir));\n return { distance: distance(pa0, pb0), pa: pa0, pb: pb0 };\n }\n }\n\n // 4) Map witnesses back to the original A pose\n // (We moved A by (hitCenter - ca); to undo, offset A's witness by (ca - hitCenter))\n const offset = subPts(ca, hitCenter);\n const pa0 = addPts(hitSnap!.pa, offset);\n const pb0 = hitSnap!.pb;\n\n // 5) True geometric separation is the distance between these boundary points\n const d = distance(pa0, pb0);\n\n return {\n distance: d,\n pa: d > 0 ? pa0 : null,\n pb: d > 0 ? pb0 : null\n };\n}\n\n// =========================\n// Boolean GJK (robust)\n// =========================\nexport function gjkIntersection(A: IShape, B: IShape): ShapeIntersection {\n for (const AA of getShapes(A)) {\n for (const BB of getShapes(B)) {\n const int = gjkIntersectionSingle(AA, BB);\n if (int.hit) return int;\n }\n }\n return {hit: false};\n}\n\nfunction gjkIntersectionSingle(A: IShape, B: IShape): ShapeIntersection {\n const MAX = 64, EPS = 1e-12;\n const sup = (dir: IPoint): SimplexLine => {\n const a = ensurePoint(A.support(dir), A.center);\n const b = ensurePoint(B.support(negatePt(dir)), B.center);\n return {p: subPts(a, b), a, b};\n };\n // initial direction: center-to-center; fall back to x-axis\n let d = subPts(B.center, A.center);\n if (Math.abs(d.x) < EPS && Math.abs(d.y) < EPS) d = {x: 1, y: 0};\n\n const simplex: Simplex = [sup(d)];\n d = {x: -simplex[0].p.x, y: -simplex[0].p.y};\n\n for (let i = 0; i < MAX; i++) {\n // If direction collapses, steer toward origin from last point\n const dLen = Math.hypot(d.x, d.y);\n if (dLen <= EPS) {\n const last = simplex[simplex.length - 1];\n const AO = {x: -last.p.x, y: -last.p.y};\n const aoLen = Math.hypot(AO.x, AO.y);\n d = (aoLen > EPS) ? AO : {x: 1, y: 0};\n }\n\n const a = sup(d);\n const s = a.p.x * d.x + a.p.y * d.y;\n if (s < -1e-12) return {hit: false}; // definite separation\n if (Math.abs(s) <= 1e-12) { // tangential contact: use normal ±d\n const L = Math.hypot(d.x, d.y) || 1;\n const n = {x: d.x / L, y: d.y / L};\n const pa = ensurePoint(A.support(n), A.center);\n const pb = ensurePoint(B.support(negatePt(n)), B.center);\n const point = {x: (pa.x + pb.x) / 2, y: (pa.y + pb.y) / 2};\n return {hit: true, pa, pb, point};\n }\n\n simplex.push(a);\n {\n const info = doSimplexBoolean(simplex, d);\n if (info.hit) return info;\n }\n }\n // Max iterations without resolution → disjoint\n return {hit: false};\n}\n\nfunction* getShapes(shape: IShape, worldX: number = 0, worldY: number = 0): Generator<IShape> {\n if (!shape) return;\n\n // Calculate this specific shape's actual world position\n const currentWorldX = worldX + shape.x;\n const currentWorldY = worldY + shape.y;\n\n if (!shape.subShapes || shape.subShapes.length === 0) {\n // Yield a temporary 'leaf' shape moved to the correct world coordinate\n yield shape.move({ x: currentWorldX, y: currentWorldY });\n return;\n }\n\n // Recurse into children, passing down the current world position\n for (const sub of shape.subShapes) {\n yield* getShapes(sub, currentWorldX, currentWorldY);\n }\n}\n\nfunction doSimplexBoolean(simplex: Simplex, d: Dir): ShapeIntersection {\n const last = simplex[simplex.length - 1];\n const AO = {x: -last.p.x, y: -last.p.y};\n\n if (simplex.length === 2) {\n const B = simplex[0];\n const AB = {x: B.p.x - last.p.x, y: B.p.y - last.p.y};\n // Perpendicular to AB toward origin\n const abPerp = tripleProduct(AB, AO, AB);\n const perpLen2 = abPerp.x * abPerp.x + abPerp.y * abPerp.y;\n\n if (perpLen2 < 1e-24) {\n // Colinear: project origin onto segment AB\n const ab2 = AB.x * AB.x + AB.y * AB.y;\n if (ab2 > 0) {\n const t = ((AO.x * AB.x + AO.y * AB.y) / ab2);\n if (t >= 0 && t <= 1) {\n // Contact at segment\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)};\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)};\n const point = {x: (pa.x + pb.x) / 2, y: (pa.y + pb.y) / 2};\n return {hit: true, pa, pb, point};\n }\n }\n // Otherwise, move toward origin from A, keep only last point to progress\n d.x = -AO.x;\n d.y = -AO.y;\n simplex.splice(0, simplex.length - 1);\n return {hit: false};\n }\n d.x = abPerp.x;\n d.y = abPerp.y;\n return {hit: false};\n }\n\n // Triangle case: [C, B, A] with A = last\n const A = last, B = simplex[simplex.length - 2], C = simplex[simplex.length - 3];\n const AB = {x: B.p.x - A.p.x, y: B.p.y - A.p.y};\n const AC = {x: C.p.x - A.p.x, y: C.p.y - A.p.y};\n const perpAB = tripleProduct(AC, AB, AB);\n const perpAC = tripleProduct(AB, AC, AC);\n\n // If origin is outside AB region\n if (perpAB.x * AO.x + perpAB.y * AO.y > 0) {\n simplex.splice(simplex.length - 3, 1);\n d.x = perpAB.x;\n d.y = perpAB.y;\n return {hit: false};\n }\n // If origin is outside AC region\n if (perpAC.x * AO.x + perpAC.y * AO.y > 0) {\n simplex.splice(simplex.length - 2, 1);\n d.x = perpAC.x;\n d.y = perpAC.y;\n return {hit: false};\n }\n // Otherwise the origin is inside the triangle → overlap\n // Compute barycentric weights of origin w.r.t triangle (A,B,C)\n const v0 = AB; // B-A\n const v1 = AC; // C-A\n const b = {x: -A.p.x, y: -A.p.y};\n const det = v0.x * v1.y - v0.y * v1.x;\n let uA: number, uB: number, uC: number;\n if (Math.abs(det) > 1e-24) {\n const alpha = (b.x * v1.y - v1.x * b.y) / det; // weight for v0 (B)\n const beta = (v0.x * b.y - b.x * v0.y) / det; // weight for v1 (C)\n uB = alpha;\n uC = beta;\n uA = 1 - alpha - beta;\n } else {\n // Fallback: equal weights\n uA = uB = uC = 1 / 3;\n }\n const pa = {\n x: uA * A.a.x + uB * B.a.x + uC * C.a.x,\n y: uA * A.a.y + uB * B.a.y + uC * C.a.y\n };\n const pb = {\n x: uA * A.b.x + uB * B.b.x + uC * C.b.x,\n y: uA * A.b.y + uB * B.b.y + uC * C.b.y\n };\n const point = {x: (pa.x + pb.x) / 2, y: (pa.y + pb.y) / 2};\n return {hit: true, pa, pb, point};\n}\n","import {IPoint, IShape, ShapeDistance, ShapeIntersection} from \"../../common-types\";\nimport {gjkDistance, gjkIntersection} from \"./gjk\";\nimport {\n addPts,\n dotProduct,\n ensurePoint,\n isPoint,\n lengthOfPt,\n multiplyPts,\n perpendicular,\n rotateDeg,\n subPts,\n toRadians\n} from \"./functions\";\n\nabstract class Shape implements IShape {\n\n get center(): IPoint {\n return this.pt;\n }\n\n get x(): number {\n return this.center.x;\n }\n\n get y(): number {\n return this.center.y;\n }\n\n protected pt: IPoint;\n\n protected constructor(x: number, y: number) {\n this.pt = {x, y};\n }\n\n abstract getPath(x: number, y: number, ratio?: number): Path2D;\n\n abstract support(dir: IPoint): IPoint;\n\n abstract move(pos: IPoint): IShape;\n\n intersection(shape: IShape): ShapeIntersection {\n return gjkIntersection(this, shape);\n }\n\n intersects(shape: IShape): boolean {\n return this.intersection(shape).hit;\n }\n\n minDistance(shape: IShape): ShapeDistance {\n return gjkDistance(this, shape);\n }\n\n distance(shape: IShape): number {\n return this.minDistance(shape).distance;\n }\n}\n\nexport class Point extends Shape {\n\n static Zero: Point = new Point(0, 0);\n\n get length(): number {\n return lengthOfPt(this);\n }\n\n get perpendicular(): Point {\n return new Point(perpendicular(this));\n }\n\n constructor(xOrP: number | IPoint, y: number = 0) {\n super(0, y);\n const x = Number(xOrP);\n this.pt = isPoint(xOrP) ? xOrP : {x: isNaN(x) ? 0 : xOrP as number, y};\n }\n\n getPath(x: number, y: number): Path2D {\n const path = new Path2D();\n path.ellipse(x, y, 1.5, 1.5, 0, 0, Math.PI * 2);\n return path;\n }\n\n support(): IPoint {\n return this.center;\n }\n\n move(pos: IPoint): IShape {\n return new Point(pos);\n }\n\n add(p: IPoint): Point {\n return new Point(addPts(this, p));\n }\n\n subtract(p: IPoint): Point {\n return new Point(subPts(this, p));\n }\n\n multiply(p: IPoint | number): Point {\n return new Point(multiplyPts(this, p));\n }\n\n divide(p: IPoint | number): Point {\n return new Point(multiplyPts(this, p));\n }\n\n dot(p: IPoint): Point {\n return new Point(dotProduct(this, p));\n }\n\n lerp(p: Point, ratio: number): Point {\n const diff = p.subtract(this);\n return this.add(diff.multiply(ratio));\n }\n\n perpendicularTo(p: Point, length: number): Point {\n const diff = p.perpendicular.subtract(this.perpendicular);\n const ratio = length / diff.length;\n const center = this.lerp(p, .5);\n return center.add(diff.multiply(ratio));\n }\n\n circleWith(a: Point, b: Point): Circle {\n const yDelta_a = b.y - a.y;\n const xDelta_a = b.x - a.x;\n const yDelta_b = this.y - b.y;\n const xDelta_b = this.x - b.x;\n\n const aSlope = yDelta_a / xDelta_a;\n const bSlope = yDelta_b / xDelta_b;\n\n const x = (aSlope * bSlope * (a.y - this.y) + bSlope * (a.x + b.x) - aSlope * (b.x + this.x)) / (2 * (bSlope - aSlope));\n const y = -1 * (x - (a.x + b.x) / 2) / aSlope + (a.y + b.y) / 2;\n const center = new Point(x, y);\n return new Circle(center.x, center.y, center.distance(this));\n }\n\n tangents(c: Circle): Point[] {\n const pd = subPts(c.center, this);\n const a = Math.asin(c.radius / lengthOfPt(pd));\n const b = Math.atan2(pd.y, pd.x);\n // Tangent points\n let t = b - a;\n const t1 = new Point(c.x + c.radius * Math.sin(t), c.y + c.radius * -Math.cos(t));\n t = b + a;\n const t2 = new Point(c.x + c.radius * -Math.sin(t), c.y + c.radius * Math.cos(t));\n return [t1, t2];\n }\n\n angle(p: Point): number {\n const diff = p.subtract(this);\n return Math.atan2(diff.y, diff.x) * 180 / Math.PI;\n }\n\n rotateAround(p: Point, angle: number): Point {\n const rotation = (p.angle(this) + angle) * Math.PI / 180;\n const distance = p.distance(this);\n const rotated = new Point(Math.cos(rotation) * distance, Math.sin(rotation) * distance);\n return p.add(rotated);\n }\n}\n\nexport class Rect extends Shape {\n\n constructor(x: number, y: number,\n readonly width: number,\n readonly height: number,\n readonly rotation: number = 0) {\n super(x, y);\n }\n\n getPath(x: number, y: number, ratio?: number): Path2D {\n ratio = ratio ?? 1;\n const w = this.width * ratio;\n const h = this.height * ratio;\n\n // 1. Create the local path for the rectangle (centered at 0,0)\n const rectPath = new Path2D();\n rectPath.rect(-w / 2, -h / 2, w, h);\n\n // 2. Create a DOMMatrix to handle the rotation\n const matrix = new DOMMatrix()\n .translate(x, y) // Move to position\n .rotate(this.rotation); // Apply rotation (in degrees)\n\n // 3. Create the final path and apply the matrix\n const finalPath = new Path2D();\n finalPath.addPath(rectPath, matrix);\n\n return finalPath;\n }\n\n support(dir: IPoint) {\n const ang = this.rotation ?? 0;\n const dLocal = rotateDeg(ensurePoint(dir, {x: 1, y: 0}), -ang);\n const hw = Math.max(0, this.width / 2),\n hh = Math.max(0, this.height / 2);\n if (hw === 0 && hh === 0) return ensurePoint(this.center);\n const lx = dLocal.x >= 0 ? hw : -hw;\n const ly = dLocal.y >= 0 ? hh : -hh;\n return addPts(rotateDeg({x: lx, y: ly}, ang), this.center);\n }\n\n move(pos: IPoint): Rect {\n return new Rect(pos.x, pos.y, this.width, this.height, this.rotation);\n }\n}\n\nexport class Oval extends Shape {\n\n constructor(x: number, y: number,\n readonly width: number,\n readonly height: number,\n readonly rotation: number = 0) {\n super(x, y);\n }\n\n getPath(x: number, y: number, ratio: number = 1): Path2D {\n // 1. Calculate radii based on ratio\n const radiusX = (this.width * ratio) / 2;\n const radiusY = (this.height * ratio) / 2;\n\n // 2. Create the local ellipse at (0,0)\n const ovalPath = new Path2D();\n // Parameters: x, y, radiusX, radiusY, rotation, startAngle, endAngle\n ovalPath.ellipse(0, 0, radiusX, radiusY, 0, 0, Math.PI * 2);\n ovalPath.closePath();\n\n // 3. Create the transformation matrix\n // Note: We use the passed in x and y here\n const matrix = new DOMMatrix()\n .translate(x, y)\n .rotate(this.rotation);\n\n // 4. Combine them\n const path = new Path2D();\n path.addPath(ovalPath, matrix);\n\n return path;\n }\n\n support(dir: IPoint) {\n const ang = this.rotation ?? 0;\n const d = rotateDeg(ensurePoint(dir, {x: 1, y: 0}), -ang);\n const a = Math.max(0, this.width / 2),\n b = Math.max(0, this.height / 2);\n if (a === 0 && b === 0) return ensurePoint(this.center);\n const q = Math.hypot(a * d.x, b * d.y) || 1;\n const lx = (a * a * d.x) / q, ly = (b * b * d.y) / q;\n return addPts(rotateDeg({x: lx, y: ly}, ang), this.center);\n }\n\n move(pos: IPoint): Oval {\n return new Oval(pos.x, pos.y, this.width, this.height, this.rotation);\n }\n}\n\nexport class Circle extends Oval {\n constructor(x: number, y: number, readonly radius: number, rotation: number = 0) {\n super(x, y, radius * 2, radius * 2, rotation);\n }\n\n move(pos: IPoint): Circle {\n return new Circle(pos.x, pos.y, this.radius, this.rotation);\n }\n}\n\nexport class ShapeGroup extends Shape {\n\n constructor(x: number, y: number, readonly subShapes: ReadonlyArray<IShape>) {\n super(x, y);\n }\n\n getPath(x: number, y: number, ratio: number = 1): Path2D {\n const groupPath = new Path2D();\n\n for (const shape of this.subShapes) {\n // Calculate child's position relative to the Group's (x, y)\n const childPath = shape.getPath(x + shape.x, y + shape.y, ratio);\n\n // Add it to our master group path\n groupPath.addPath(childPath);\n }\n\n return groupPath;\n }\n\n support(): IPoint {\n return this.center;\n }\n\n move(pos: IPoint): IShape {\n return new ShapeGroup(pos.x, pos.y, this.subShapes);\n }\n}\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\";\n\nexport class LoaderUtils {\n\n private static promises: ILoaderPromises<ILoadableElement> = {};\n\n static loadScript(src: string, async: boolean = false, type: ScriptType = \"text/javascript\", parent?: Node) {\n return LoaderUtils.loadElement(src, parent, () => {\n const script = document.createElement(\"script\");\n script.type = type;\n script.src = LoaderUtils.updateSrc(src);\n script.async = async;\n return script;\n });\n }\n\n static loadStyle(src: string, parent?: Node) {\n return LoaderUtils.loadElement(src, parent, () => {\n const link = document.createElement(\"link\");\n link.rel = \"stylesheet\";\n link.type = \"text/css\";\n link.href = LoaderUtils.updateSrc(src);\n return link;\n });\n }\n\n private static updateSrc(src: string) {\n if (src?.startsWith(\"data:\")) {\n return src;\n }\n const url = new URL(src);\n url.searchParams.set(\"time\", String(Date.now()));\n return url.toString();\n }\n\n private static loadElement<T extends ILoadableElement>(src: string, parent: Node, setup: () => T): Promise<T> {\n const promises = LoaderUtils.promises as ILoaderPromises<T>;\n parent = parent || document;\n if (parent == document) {\n parent = document.body;\n }\n let {elem, promise} = promises[src] || {};\n if (elem) {\n if (parent === elem.parentElement) return promise;\n if (elem.parentElement) {\n elem.remove();\n }\n }\n elem = setup();\n promise = new Promise<T>((resolve, reject) => {\n if (elem.readyState) {\n // Internet explorer\n elem.onreadystatechange = () => {\n if (elem.readyState === \"loaded\" || elem.readyState === \"complete\") {\n elem.onreadystatechange = null;\n resolve(elem);\n }\n };\n } else {\n // Other browsers\n elem.onload = () => resolve(elem);\n }\n elem.onerror = (error: any) => reject(error);\n });\n parent.appendChild(elem);\n promises[src] = {elem, promise};\n return promise;\n }\n}\n","import {inject, Injector, Provider, Type, ValueProvider, ɵComponentDef as ComponentDef} from \"@angular/core\";\nimport {CssSelector, CssSelectorList, TypedFactoryProvider, TypedValueProvider} from \"../common-types\";\nimport {DYNAMIC_ENTRY_COMPONENTS, OPTIONS_TOKEN} from \"../tokens\";\n\nexport function isBrowser(): boolean {\n return typeof window !== \"undefined\";\n}\n\n/**\n * Returns an elements root\n * @param {HTMLElement} elem The element which root we need\n * @return {DocumentOrShadowRoot} The document or the elements shadow root\n */\nexport function getRoot(elem: HTMLElement): DocumentOrShadowRoot {\n if (!isBrowser()) return null;\n const root: ShadowRoot = elem?.getRootNode() as any;\n return root || document;\n}\n\nexport function switchClass(elem: HTMLElement, className: string, status?: boolean): void {\n if (!elem?.classList) return;\n status = status ?? !elem.classList.contains(className);\n if (status) {\n elem.classList.add(className);\n return;\n }\n elem.classList.remove(className);\n}\n\nexport function getCssVariables(elem: HTMLElement): Record<string, string> {\n if (\"computedStyleMap\" in elem) {\n const styles = Array.from(elem.computedStyleMap() as any) as [string, string][];\n return styles.reduce((res, [prop, val]) => {\n if (prop.startsWith(\"--\")) {\n res[prop] = val.toString();\n }\n return res;\n }, {} as Record<string, string>);\n }\n const res = {} as Record<string, string>;\n const styles = getComputedStyle(elem);\n for (let i = 0; i < styles.length; i++) {\n const propertyName = styles[i];\n if (propertyName.startsWith(\"--\")) {\n res[propertyName] = styles.getPropertyValue(propertyName);\n }\n }\n return res;\n}\n\nexport function checkTransitions(el: HTMLElement, cb: () => any): void {\n let hasTransitions = false;\n let called = false;\n const end = () => {\n if (called) return;\n called = true;\n cb();\n };\n el.onanimationstart = () => hasTransitions = true;\n el.ontransitionstart = () => hasTransitions = true;\n el.onanimationend = end;\n el.ontransitionend = end;\n setTimeout(() => {\n if (hasTransitions) return;\n end();\n }, 100);\n}\n\nexport function getComponentDef<T>(type: Type<T>): ComponentDef<T> {\n const def = type[\"ɵcmp\"] as ComponentDef<T>;\n if (!def) {\n throw new Error(`No Angular definition found for ${type.name}`);\n }\n return def;\n}\n\n// Helper function to match a search selector to a stored selector\nexport function parseSelector(selector: string | CssSelector): CssSelector {\n if (Array.isArray(selector)) {\n if (selector.length !== 1 && selector.length !== 3) {\n throw new Error(\"CSSSelector should contain 1 or 3 parts!\");\n }\n if (selector.some(t => typeof t !== \"string\")) {\n throw new Error(\"CSSSelector parts can only be strings\");\n }\n return selector;\n }\n if (selector.indexOf(\"#\") > 0) {\n const parts = selector.split(\"#\");\n selector = `${parts[0]}[id=${parts[1]}]`;\n }\n if (selector.indexOf(\".\") > 0) {\n const parts = selector.split(\".\");\n selector = `${parts[0]}[class=${parts[1]}]`;\n }\n const start = selector.indexOf(\"[\");\n const end = Math.max(selector.indexOf(\"]\"), Math.min(selector.length, start + 1));\n if (start >= 0) {\n const parts = selector.substring(start + 1, end).split(\"=\");\n return [\n selector.substring(0, start),\n parts[0],\n parts[1] || \"\"\n ]\n }\n return [selector];\n}\n\nexport function selectorMatchesList(list: CssSelectorList, selector: CssSelector) {\n for (const item of list) {\n if (selector.length === item.length && selector.every((s, i) => s === item[i])) {\n return true;\n }\n }\n return false;\n}\n\nexport function provideEntryComponents(components: Type<any>[], moduleId?: string): ValueProvider {\n return {\n provide: DYNAMIC_ENTRY_COMPONENTS,\n useValue: {\n components,\n moduleId\n },\n multi: true\n };\n}\n\nexport function provideOptions<O extends Record<string, any>>(options: O): Required<TypedValueProvider<O>> {\n return {\n provide: OPTIONS_TOKEN,\n useValue: options\n };\n}\n\nexport function provideWithOptions<O extends Record<string, any>, T = any>(type: Type<T>, options: O): TypedFactoryProvider<T> {\n return {\n useFactory: function (parent: Injector) {\n const providers: Provider[] = [\n provideOptions(options),\n {\n provide: type,\n useClass: type\n }\n ];\n return Injector.create({\n providers,\n parent\n }).get(type, null, {optional: true});\n },\n deps: [Injector]\n }\n}\n\nexport function injectOptions<O extends Record<string, any>>(defaults: O): O {\n const options = inject(OPTIONS_TOKEN, {optional: true}) as O;\n return Object.assign({}, defaults, options || {});\n}\n","import {ITimer} from \"../common-types\";\nimport {ObjectUtils} from \"./object.utils\";\n\ntype TimerFunc = (timer: ITimer) => void;\n\nexport class TimerUtils {\n\n static createTimeout(func?: Function, time?: number): ITimer {\n // @dynamic\n const run = (timer: ITimer) => {\n timer.clear();\n // If the time is zero or less, we run the function immediately because setTimeout puts it into the next \"frame\"\n if (timer.time <= 0) {\n timer.func();\n return;\n }\n timer.id = setTimeout(() => {\n timer.id = null;\n timer.func();\n }, timer.time);\n };\n // @dynamic\n const clear = (timer: ITimer) => {\n if (!timer.id) return;\n clearTimeout(timer.id);\n timer.id = null;\n };\n return TimerUtils.createTimer(run, clear, func, time);\n }\n\n static createInterval(func?: Function, time?: number): ITimer {\n // @dynamic\n const run = (timer: ITimer) => {\n timer.clear();\n timer.id = setInterval(timer.func, Math.max(timer.time, 5));\n };\n // @dynamic\n const clear = (timer: ITimer) => {\n if (!timer.id) return;\n clearInterval(timer.id);\n timer.id = null;\n };\n return TimerUtils.createTimer(run, clear, func, time);\n }\n\n private static createTimer(run: TimerFunc, clear: TimerFunc, func: Function, time: number): ITimer {\n const timer: ITimer = {};\n const setParams = (func: Function, time: number) => {\n timer.func = !ObjectUtils.isFunction(func) ? (() => {}) : func;\n timer.time = !ObjectUtils.isNumber(time) ? 100 : time;\n };\n timer.run = () => run(timer);\n timer.clear = () => clear(timer);\n timer.set = (func: Function, time: number) => {\n setParams(func, time);\n timer.run();\n };\n setParams(func, time);\n return timer;\n }\n}\n","import {from, Observable, Subject, Subscription} from \"rxjs\";\nimport {mergeMap} from \"rxjs/operators\";\n\nimport {ISearchObservable} from \"../common-types\";\nimport {TimerUtils} from \"./timer.utils\";\n\nexport interface ISubscriberInfo {\n subjects: Observable<any>[];\n cb: (ev?: Observable<any>, ...args: any[]) => any;\n timeout?: number;\n}\n\nexport class ObservableUtils {\n\n static toSearch(search: ISearchObservable): Observable<any> {\n return mergeMap(\n // @dynamic\n (token: string) => search.getSearchResults(token)\n )(\n Observable.create(\n // @dynamic\n (observer: any) => {\n observer.next(search.search);\n }\n )\n );\n }\n\n static multiSubscription(...subscriptions: Subscription[]): Subscription {\n // @dynamic\n const lambda = () => {\n subscriptions.forEach(s => {\n s?.unsubscribe();\n });\n };\n return new Subscription(lambda);\n }\n\n static subscribe(...subscribers: ISubscriberInfo[]): Subscription {\n const subscriptions: Subscription[] = [];\n subscribers.forEach(info => {\n let alreadyCalled = false;\n const timer = TimerUtils.createTimeout();\n info.subjects.forEach(subject => {\n const ss = subject.subscribe((value) => {\n alreadyCalled = true;\n timer.set(() => {\n info.cb(subject, value);\n }, info.timeout ?? 0);\n });\n subscriptions.push(ss);\n });\n if (alreadyCalled) return;\n info.cb();\n });\n return ObservableUtils.multiSubscription(...subscriptions);\n }\n\n static fromFunction(callbackFunc: () => any): Observable<any> {\n let subject: any;\n return new Observable<any>((subscriber) => {\n if (!subject) {\n subject = new Subject();\n try {\n subject = from(callbackFunc());\n } catch (err) {\n subject.error(err);\n }\n }\n return subject.subscribe(subscriber);\n });\n }\n}\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) {\n // Encode as UTF-8, then to Base64\n const utf8Bytes = new TextEncoder().encode(svgString);\n let binary = \"\";\n for (let i = 0; i < utf8Bytes.length; i++) {\n binary += String.fromCharCode(utf8Bytes[i]);\n }\n const base64 = btoa(binary);\n\n return `data:image/svg+xml;base64,${base64}`;\n}\n\nexport class StringUtils {\n\n static concat(separator: string, ...strings: string[]): string {\n return strings.filter(\n // @dynamic\n str => !!str\n ).join(separator);\n }\n\n static startsWith(str: string, ...starts: string[]): boolean {\n if (typeof str !== \"string\") return false;\n for (let i = 0; i < starts.length; i++) {\n if (str.startsWith(starts[i])) return true;\n }\n return false;\n }\n\n static has(str: string, ...parts: string[]): boolean {\n if (typeof str !== \"string\") return false;\n for (let i = 0; i < parts.length; i++) {\n if (str.indexOf(parts[i]) >= 0) return true;\n }\n return false;\n }\n\n static lcFirst(str: string): string {\n return typeof str === \"string\" ? str.charAt(0).toLowerCase() + str.substring(1) : \"\";\n }\n\n static ucFirst(str: string): string {\n return typeof str === \"string\" ? str.charAt(0).toUpperCase() + str.substring(1) : \"\";\n }\n\n static camelize(str: string): string {\n return StringUtils.ucFirst(str)\n .replace(/[-.]([a-z])/g, g => g[1].toUpperCase());\n }\n\n static isObjectId(id: string): boolean {\n return typeof id === \"string\" && id.length == 24 && !isNaN(Number(\"0x\" + id));\n }\n\n static parseDomain(baseUrl: string): string {\n try {\n const url = new URL(String(baseUrl || \"\"));\n const port = url.port && url.port !== \"443\" && url.port !== \"80\" ? `:${url.port}` : ``;\n return `${url.protocol}//${url.hostname}${port}/`;\n } catch {\n return \"/\";\n }\n }\n}\n","import {ObjectUtils} from \"./object.utils\";\n\nexport class SetUtils {\n static equals(set: Set<any>, obj: any): boolean {\n if (!ObjectUtils.isSet(set) || !ObjectUtils.isSet(obj))\n return false;\n if (set.size != obj.size)\n return false;\n for (const item in set) {\n if (!obj.has(item)) return false;\n }\n return true;\n }\n\n static addArray(set: Set<any>, items: any[]): void {\n if (!ObjectUtils.isSet(set) || !ObjectUtils.isArray(items)) return;\n items.forEach(i => set.add(i));\n }\n}\n","import {computed, untracked, type Signal, DestroyRef, inject, signal} from \"@angular/core\";\nimport {isBrowser} from \"./misc\";\n\n/**\n * Returns a signal that emits the previous value of the given signal.\n * The first time the signal is emitted, the previous value will be the same as the current value.\n *\n * @param s Signal to compute previous value for\n * @returns Signal that emits previous value of `s`\n */\nexport function computedPrevious<T>(s: Signal<T>): Signal<T> {\n let current = null as T;\n let previous = untracked(() => s()); // initial value is the current value\n\n return computed(() => {\n current = s();\n const result = previous;\n previous = current;\n return result;\n });\n}\n\n/**\n * Returns a signal that emits css styles form an element when it gets resized\n *\n * @param elem Element to compute styles for\n * @returns Signal that emits the calculated styles\n */\nexport function cssStyles<T>(elem: HTMLElement): Signal<CSSStyleDeclaration> {\n const styles = signal<CSSStyleDeclaration>({\n length: 0,\n getPropertyValue: () => null\n } as any);\n if (!elem || !isBrowser()) return styles;\n styles.set(getComputedStyle(elem));\n const observer = typeof ResizeObserver === \"function\" ? new ResizeObserver(() => {\n requestAnimationFrame(() => {\n styles.set(getComputedStyle(elem));\n });\n }) : null;\n const destroyRef = inject(DestroyRef, { optional: true });\n destroyRef?.onDestroy(() => {\n observer?.unobserve(elem);\n });\n observer?.observe(elem);\n return styles;\n}\n\n/**\n * Returns a signal that emits css variables form an element when it gets resized\n *\n * @param elem Element to compute variables for\n * @returns Signal that emits the calculated properties\n */\nexport function cssVariables<T>(elem: HTMLElement) {\n const styleSource = cssStyles(elem);\n return computed(() => {\n const styles = styleSource();\n const res = {} as Record<string, string>;\n for (let i = 0; i < styles.length; i++) {\n const propertyName = styles[i];\n if (propertyName.startsWith(\"--\")) {\n res[propertyName] = styles.getPropertyValue(propertyName);\n }\n }\n return res;\n });\n}\n","import {BehaviorSubject, Subject, Subscription} from \"rxjs\";\nimport type {ManagerOptions, SocketOptions, Socket} from \"socket.io-client\";\n\nexport type SocketFactory = (uri?: string, opts?: Partial<ManagerOptions & SocketOptions>) => Socket;\n\nexport type SocketDataValue = string | number | boolean | Date | Array<SocketDataValue> | Array<SocketDataObj>;\n\nexport interface SocketDataObj {\n [key: string]: SocketDataValue | SocketDataObj;\n}\n\nexport type SocketData = SocketDataValue | SocketDataObj;\n\nexport type ExtraHeaders = Record<string, string>;\n\nexport interface ResponseHandler {\n resolve: (data: SocketData) => void,\n reject: (error: SocketData) => void\n}\n\nfunction 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 Array.from(buf).map(pad4).join(\"\");\n }\n return new Array(8).fill(0).map(random4).join(\"\");\n}\n\nfunction pad4(num: number, index: number): string {\n const prefix = 1 < index && index < 6 ? \"-\" : \"\";\n let ret = num.toString(16);\n while (ret.length < 4) {\n ret = \"0\" + ret;\n }\n return prefix + ret;\n}\n\nfunction random4(_: number, index: number): string {\n const prefix = 1 < index && index < 6 ? \"-\" : \"\";\n return prefix + Math.floor((1 + Math.random()) * 0x10000)\n .toString(16)\n .substring(1);\n}\n\nexport class SocketClient {\n\n readonly status: BehaviorSubject<boolean>;\n\n protected readonly channels: Map<string, Subject<SocketData>>;\n protected readonly responseHandlers: Map<string, ResponseHandler>;\n protected sid: string;\n protected open: boolean;\n\n protected factory: Promise<SocketFactory>;\n protected ws: Promise<Socket>;\n\n get id(): string {\n return this.open ? this.sid : null;\n }\n\n constructor(readonly url: string,\n protected ioLoader: () => Promise<SocketFactory>) {\n this.status = new BehaviorSubject(false);\n this.channels = new Map([\n [\"connect\", new Subject<SocketData>()],\n [\"disconnect\", new Subject<SocketData>()],\n [\"error\", new Subject<SocketData>()]\n ]);\n this.responseHandlers = new Map();\n this.sid = null;\n this.open = false;\n }\n\n connect(extraHeaders: ExtraHeaders = {}): void {\n if (this.ws) return;\n const url = new URL(this.url);\n this.factory = this.factory || this.ioLoader();\n this.ws = new Promise((resolve, reject) => {\n this.factory.then(io => {\n const protocol = url.protocol.replace(\"http\", \"ws\");\n const ws = io(`${protocol}//${url.host}`, {\n extraHeaders,\n timeout: 5000,\n path: url.pathname\n });\n console.log(`socket connecting to: ${protocol}//${url.host}`, url.pathname);\n ws.on(`connect`, () => {\n console.log(`socket connected`);\n this.open = true;\n this.sid = ws.id;\n this.status.next(true);\n });\n ws.on(`disconnect`, () => {\n this.open = false;\n this.status.next(false);\n });\n for (const [event, subject] of this.channels.entries()) {\n ws.off(event);\n ws.on(event, (data: SocketData) => {\n this.handleResponse(event, data);\n subject.next(data);\n });\n }\n resolve(ws);\n }, reject);\n });\n }\n\n disconnect(): void {\n if (!this.ws) return;\n this.ws.then(ws => ws.disconnect());\n this.ws = null;\n }\n\n subscribe<T = SocketData>(event: string, cb: (value: T) => void): Subscription {\n if (!this.channels.has(event)) {\n this.channels.set(event, new Subject());\n this.ws?.then(ws => {\n ws.off(event);\n ws.on(event, (data: SocketData) => {\n this.handleResponse(event, data);\n this.channels.get(event).next(data);\n });\n });\n }\n return this.channels.get(event).subscribe(cb as any);\n }\n\n emit(event: string, content: SocketData): void {\n this.ws.then(ws => ws.emit(event, content));\n }\n\n async request(event: string, content: SocketDataObj): Promise<any> {\n const id = uuid();\n const ws = await this.ws;\n const promise = new Promise((resolve, reject) => {\n this.responseHandlers.set(id, {resolve, reject});\n setTimeout(() => {\n this.responseHandlers.delete(id);\n reject(`Timeout for ${event} request ${JSON.stringify(content)}`);\n }, 5000);\n });\n ws.emit(event, {...content, immediate_response_id: id});\n return promise;\n }\n\n protected handleResponse(event: string, content: SocketData): void {\n if (typeof content !== \"object\" || Array.isArray(content) || content instanceof Date) return;\n const id = content.immediate_response_id as string;\n const handler = this.responseHandlers.get(id);\n if (!handler) return;\n this.responseHandlers.delete(id);\n if (event === \"error\") {\n handler.reject(content);\n return;\n }\n handler.resolve(content);\n }\n}\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 {Injectable} from \"@angular/core\";\nimport {Subject} from \"rxjs\";\nimport {IUserData} from \"../common-types\";\n\n@Injectable()\nexport class EventsService {\n\n readonly eventForwarded: Subject<Event>;\n readonly stickyUpdated: Subject<boolean>;\n readonly languageChanged: Subject<string>;\n readonly editLanguageChanged: Subject<string>;\n readonly translationsEnabled: Subject<boolean>;\n readonly userChanged: Subject<any>;\n\n private sticky: boolean;\n private user: IUserData;\n\n get isSticky(): boolean {\n return this.sticky;\n }\n\n get isAuthenticated(): boolean {\n return !!this.user;\n }\n\n constructor() {\n this.eventForwarded = new Subject();\n this.stickyUpdated = new Subject();\n this.languageChanged = new Subject();\n this.editLanguageChanged = new Subject<string>();\n this.translationsEnabled = new Subject();\n this.userChanged = new Subject();\n this.sticky = false;\n this.user = null;\n this.userChanged.subscribe(user => {\n this.user = user;\n });\n }\n\n event(e: Event): void {\n this.eventForwarded.next(e);\n }\n\n updateSticky(sticky: boolean): void {\n this.sticky = sticky;\n this.stickyUpdated.next(sticky);\n }\n}\n","import {Injectable, Injector, Type} from \"@angular/core\";\nimport {StateService} from \"./state.service\";\nimport {IAclComponent, IRouteStateInfo} from \"../common-types\";\nimport {ObjectUtils} from \"../utils/object.utils\";\nimport {AuthGuard} from \"../utils/auth.guard\";\nimport {EventsService} from \"./events.service\";\n\nconst emptyGuards: any[] = [];\n\n@Injectable()\nexport class AclService {\n\n protected components: IRouteStateInfo[];\n\n constructor(readonly injector: Injector,\n readonly state: StateService,\n readonly events: EventsService) {\n this.components = [];\n this.events.userChanged.subscribe(() => {\n this.components.forEach(t => t.dirty = true);\n const info = this.getStateInfo();\n const check: Promise<boolean> = info && info.guard instanceof AuthGuard ? info.guard.checkRoute(info.route) : Promise.resolve(true);\n check.then(result => {\n if (result) {\n if (!info || !info.dirty) return;\n info.dirty = false;\n const component: IAclComponent = info.component;\n if (!info.component) return;\n if (info.first) {\n if (ObjectUtils.isFunction(component.onUserInitialized)) {\n component.onUserInitialized();\n }\n info.first = false;\n return;\n }\n if (ObjectUtils.isFunction(component.onUserChanged)) {\n component.onUserChanged();\n }\n return;\n }\n (info.guard as AuthGuard).getReturnState(info.route).then(returnState => {\n if (!returnState) return;\n this.state.navigate(returnState);\n });\n });\n });\n this.state.subscribe(() => {\n const info = this.getStateInfo();\n if (!info?.component) return;\n const component: IAclComponent = info.component;\n if (ObjectUtils.isFunction(component.onUserInitialized)) {\n component.onUserInitialized();\n }\n info.first = false;\n });\n }\n\n protected getStateInfo(): IRouteStateInfo {\n const route = this.state.route;\n if (!route) return null;\n let info = this.components.find(t => t.route == this.state.route);\n if (!info) {\n const guardType: Type<AuthGuard> = (route.canActivate || emptyGuards)[0];\n info = {\n route: this.state.route,\n guard: guardType ? this.injector.get(guardType) : null,\n dirty: true,\n first: true\n };\n this.components.push(info);\n }\n info.component = this.state.component;\n return info;\n }\n}\n","import {HttpHeaders, HttpParams, HttpUrlEncodingCodec} from \"@angular/common/http\";\nimport {HttpRequestHeaders, HttpRequestQuery} from \"../common-types\";\nimport {ObjectUtils} from \"../utils/object.utils\";\n\nexport class RequestBag {\n\n protected readonly headers: HttpRequestHeaders;\n protected readonly params: HttpRequestQuery;\n\n get requestHeaders(): Readonly<HttpRequestHeaders> {\n return this.headers;\n }\n\n get requestParams(): Readonly<HttpRequestQuery> {\n return this.params;\n }\n\n constructor(protected source?: RequestBag) {\n this.headers = {};\n this.params = {};\n }\n\n makeHeaders(headersObj?: HttpRequestHeaders | HttpHeaders, withCredentials: boolean = true): HttpHeaders {\n const source = this.convertHeaders(headersObj);\n const headers = Object.assign({}, this.source?.headers || {}, this.headers, source);\n const authHeader = headers[\"Authorization\"] as string || \"\";\n if (!withCredentials && !authHeader.startsWith(\"Bearer\")) {\n delete headers[\"Authorization\"];\n }\n return new HttpHeaders(headers);\n }\n\n makeParams(paramsObj?: HttpParams | HttpRequestQuery): HttpParams {\n const source = this.convertParams(paramsObj);\n const params = Object.assign({}, this.source?.params || {}, this.params, source);\n return new HttpParams({\n encoder: new HttpUrlEncodingCodec(),\n fromObject: Object.keys(params || {}).reduce((result, key) => {\n const value = params[key];\n result[key] = ObjectUtils.isObject(value) ? JSON.stringify(value) : (ObjectUtils.isNullOrUndefined(value) ? \"\" : value.toString());\n return result;\n }, {})\n });\n }\n\n setHeader(name: string, value?: string | string[]): void {\n if (value === undefined) {\n delete this.headers[name];\n return;\n }\n this.headers[name] = value;\n }\n\n getHeader(name: string): string {\n return String(this.headers[name] || \"\");\n }\n\n setParam(name: string, value?: any): void {\n if (value === undefined) {\n delete this.params[name];\n return;\n }\n this.params[name] = value;\n }\n\n convertHeaders(headers: HttpHeaders | HttpRequestHeaders): HttpRequestHeaders {\n if (headers instanceof HttpHeaders) {\n return headers.keys().reduce((res, key) => {\n res[key] = headers.getAll(key);\n return res;\n }, {} as HttpRequestHeaders);\n }\n return headers || {};\n }\n\n convertParams(params: HttpParams | HttpRequestQuery): HttpRequestQuery {\n if (params instanceof HttpParams) {\n return params.keys().reduce((res, key) => {\n res[key] = params.getAll(key);\n return res;\n }, {} as HttpRequestQuery);\n }\n return params || {};\n }\n}\n","import {Injectable} from \"@angular/core\";\nimport {HttpClient, HttpHandler, HttpHeaders} from \"@angular/common/http\";\nimport {RequestBag} from \"./request-bag\";\nimport {HttpRequestHeaders, HttpRequestQuery, IBaseHttpClient} from \"../common-types\";\n\n@Injectable()\nexport class BaseHttpClient extends HttpClient implements IBaseHttpClient {\n\n renewTokenFunc: () => void;\n\n readonly bag: RequestBag;\n\n constructor(handler: HttpHandler) {\n super(handler);\n this.bag = new RequestBag();\n }\n\n get requestHeaders(): Readonly<HttpRequestHeaders> {\n return this.bag.requestHeaders;\n }\n\n get requestParams(): Readonly<HttpRequestQuery> {\n return this.bag.requestParams;\n }\n\n setHeader(name: string, value?: string | string[]): void {\n this.bag.setHeader(name, value);\n }\n\n getHeader(name: string): string {\n return this.bag.getHeader(name);\n }\n\n setParam(name: string, value?: any): void {\n this.bag.setParam(name, value);\n }\n\n setExtraRequestParam(name: string, value?: any): void {\n this.bag.setParam(name, value);\n }\n\n makeHeaders(): HttpHeaders {\n return this.bag.makeHeaders();\n }\n}\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\";\nimport {BehaviorSubject, Observable, Subject, delay, timer} from \"rxjs\";\nimport {DateTime} from \"luxon\";\nimport {DurationUnit} from \"../common-types\";\nimport {EventsService} from \"./events.service\";\n\n@Injectable()\nexport class CacheService {\n\n get userChanged(): Observable<any> {\n return this.events.userChanged;\n }\n\n readonly ignore: Observable<any>;\n readonly permanent: Observable<any>;\n\n private caches: Map<string, any>;\n\n constructor(protected events: EventsService) {\n this.ignore = new BehaviorSubject(null).pipe(delay(5));\n this.permanent = new Subject();\n this.caches = new Map();\n }\n\n expiresIn(amount: number = 10, unit: DurationUnit = \"seconds\"): Observable<any> {\n const when = DateTime.now().plus({[unit]: amount}).toJSDate();\n return this.expiresAt(when);\n }\n\n expiresAt(when: Date): Observable<any> {\n const now = new Date().getTime();\n // Prevent negative delay\n const delay = Math.max(when.getTime() - now, 5);\n return timer(delay);\n }\n\n use<T>(key: string, valueCb: () => T, expires?: Observable<any>): T {\n if (this.caches.has(key)) {\n return this.caches.get(key);\n }\n const value = valueCb();\n this.caches.set(key, value);\n const subscription = (expires || this.permanent).subscribe(() => {\n this.caches.delete(key);\n subscription.unsubscribe();\n });\n return value;\n }\n}\n","import {Inject, Injectable, Injector, Optional} from \"@angular/core\";\nimport {HttpErrorResponse, HttpEventType, HttpHeaders, HttpParams, HttpResponse} from \"@angular/common/http\";\nimport {Request} from \"express\";\n\nimport {\n CacheExpireMode,\n HttpClientRequestOptions,\n HttpRequestHeaders,\n HttpRequestOptions,\n HttpRequestQuery,\n IConfigService,\n IHttpService,\n IIssueContext,\n ILanguageService,\n IPaginationData,\n IToasterService,\n ProgressListener,\n UploadData\n} from \"../common-types\";\n\nimport {ObjectUtils} from \"../utils/object.utils\";\nimport {MathUtils} from \"../utils/math.utils\";\n\nimport {BaseHttpClient} from \"./base-http.client\";\nimport {UniversalService} from \"./universal.service\";\nimport {StorageService} from \"./storage.service\";\nimport {timeout} from \"rxjs/operators\";\nimport {Observable, TimeoutError} from \"rxjs\";\nimport {CONFIG_SERVICE, EXPRESS_REQUEST, LANGUAGE_SERVICE, TOASTER_SERVICE} from \"../tokens\";\nimport {CacheService} from \"./cache.service\";\nimport {RequestBag} from \"./request-bag\";\nimport {md5} from \"../utils/crypto.utils\";\n\n@Injectable()\nexport class BaseHttpService implements IHttpService {\n\n get name(): string {\n return \"base\";\n }\n\n get requestHeaders(): Readonly<HttpRequestHeaders> {\n return this.bag.requestHeaders;\n }\n\n get requestParams(): Readonly<HttpRequestQuery> {\n return this.bag.requestParams;\n }\n\n protected get withCredentials(): boolean {\n return true;\n }\n\n get universal(): UniversalService {\n return this.storage.universal;\n }\n\n protected static failedRequests: Array<() => void> = [];\n\n protected readonly bag: RequestBag;\n\n protected static retryFailedRequests(): void {\n BaseHttpService.failedRequests.forEach(r => r());\n BaseHttpService.failedRequests = [];\n }\n\n constructor(readonly injector: Injector,\n readonly client: BaseHttpClient,\n readonly storage: StorageService,\n readonly caches: CacheService,\n @Inject(LANGUAGE_SERVICE) readonly language: ILanguageService,\n @Inject(TOASTER_SERVICE) readonly toaster: IToasterService,\n @Inject(CONFIG_SERVICE) readonly configs: IConfigService,\n @Optional() @Inject(EXPRESS_REQUEST) readonly request: Request = null\n ) {\n this.bag = new RequestBag(this.client.bag);\n this.initService();\n }\n\n protected initService(): void {\n\n }\n\n setHeader(name: string, value?: string | string[]): void {\n this.bag.setHeader(name, value);\n }\n\n setParam(name: string, value?: any): void {\n this.bag.setParam(name, value);\n }\n\n cached(mode: CacheExpireMode): Observable<any> {\n if (mode === \"auth\") {\n return this.caches.userChanged;\n }\n if (mode instanceof Date) {\n return this.caches.expiresAt(mode);\n }\n return mode === false ? this.caches.ignore : this.caches.permanent;\n }\n\n url(url: string): string {\n return url;\n }\n\n createUrl(url: string, params: HttpRequestQuery): string {\n const httpParams = this.bag.makeParams(params);\n const query = httpParams.keys().map(key => {\n return `${key}=${httpParams.get(key)}`;\n }).join(\"&\");\n return `${this.url(url)}?${query}`;\n }\n\n makeListParams(page: number, itemsPerPage: number, orderBy: string = null, orderDescending: boolean = null, filter: string = null): HttpRequestQuery {\n const params: HttpRequestQuery = {\n page: (page - 1),\n limit: itemsPerPage\n };\n if (!ObjectUtils.isNullOrUndefined(orderBy)) {\n params.sort = `${orderDescending ? \"-\" : \"\"}${orderBy}`;\n }\n if (!ObjectUtils.isNullOrUndefined(filter)) {\n params.filter = filter;\n }\n return params;\n }\n\n protected getPromise(url: string, options?: HttpRequestOptions, body?: any) {\n options = this.makeOptions(options, \"GET\", body);\n return this.toPromise(url, options);\n }\n\n protected deletePromise(url: string, options?: HttpRequestOptions, body?: any) {\n options = this.makeOptions(options, \"DELETE\", body);\n return this.toPromise(url, options);\n }\n\n protected postPromise(url: string, body?: any, options?: HttpRequestOptions) {\n options = this.makeOptions(options, \"POST\", body);\n return this.toPromise(url, options);\n }\n\n protected putPromise(url: string, body?: any, options?: HttpRequestOptions) {\n options = this.makeOptions(options, \"PUT\", body);\n return this.toPromise(url, options);\n }\n\n protected patchPromise(url: string, body?: any, options?: HttpRequestOptions) {\n options = this.makeOptions(options, \"PATCH\", body);\n return this.toPromise(url, options);\n }\n\n protected uploadPromise(url: string, body: UploadData, listener?: ProgressListener, options?: HttpRequestOptions) {\n const headers: any = {};\n if (body instanceof Blob) {\n headers[\"Content-Type\"] = \"application/octet-stream\";\n }\n options = this.makeOptions(Object.assign({\n headers: headers,\n reportProgress: true\n }, options), \"POST\", body);\n return this.toPromise(url, options, listener);\n }\n\n protected listPromise(url: string, options?: HttpClientRequestOptions): Promise<IPaginationData> {\n return new Promise<IPaginationData>(resolve => {\n this.getPromise(url, options).then(data => {\n if (ObjectUtils.isArray(data)) {\n resolve({\n total: data.length,\n items: data,\n meta: {}\n });\n return;\n }\n resolve({\n total: data.meta?.total || data?.total || data.items?.length || 0,\n items: data.items || [],\n meta: data.meta || {}\n });\n }, response => {\n if (response.status == 0 || response.status == 301) {\n resolve({\n total: 1,\n items: [{\n id: null,\n label: \"Not implemented.\"\n }],\n meta: {}\n });\n return true;\n }\n resolve({\n total: 0,\n items: [],\n meta: {}\n });\n return false;\n });\n });\n }\n\n protected handleUnauthorizedError(absoluteUrl: string, options: HttpClientRequestOptions, reject: () => void): void {\n reject();\n if (BaseHttpService.failedRequests.length > 1 || this.universal.isServer) return;\n console.log(\"User auth error\", absoluteUrl, options);\n }\n\n protected toastWarning(message: string, issueContext: IIssueContext, reason: any, options: HttpClientRequestOptions): void {\n this.toaster.warning(message, {issueContext, reason, options});\n }\n\n protected toastError(message: string, issueContext: IIssueContext, reason: any, options: HttpClientRequestOptions): void {\n this.toaster.warning(message, {issueContext, reason, options});\n }\n\n protected makeCacheKey(url: string, read: string, options: HttpRequestOptions): string {\n const headers = this.bag.convertHeaders(options?.headers);\n const params = this.bag.convertParams(options?.params);\n const hash = md5({url, read, options: {\n ...options,\n headers,\n params\n }});\n return `request-${hash}`;\n }\n\n protected toPromise(url: string, requestOptions: HttpRequestOptions, listener?: ProgressListener): Promise<any> {\n const {cache, read, ...options} = requestOptions;\n const absoluteUrl = this.absoluteUrl(url, options);\n const cacheKey = this.makeCacheKey(absoluteUrl, read, requestOptions);\n const issueContext: IIssueContext = {url: absoluteUrl};\n return this.caches.use(`${cacheKey}-${read}`, async () => {\n const response = await this.caches.use(cacheKey, () => new HttpPromise(response => {\n if (!response) {\n if (this.universal.isServer) return;\n console.log(\"You may not need a reject Handler for this request!\", this.name, url, options);\n return;\n }\n const reason = response.error || {};\n if (response.status == 0 || response.status == 301) {\n this.toastWarning(`${url} endpoint is not implemented! Click here, to quickly create an issue.`, issueContext, reason, options);\n return;\n }\n const regex = /((E11000 duplicate key error collection: (.)+\\.)|(_1 dup key:(.)+))/g;\n const message = ObjectUtils.isObject(reason.message)\n ? String(reason.message?.message || \"Unknown error\")\n : String(reason.message || \"Unknown error\");\n if (message && regex.test(message)) {\n this.toastError(\"message.duplicate-key.error.\" + message.replace(regex, \"\").replace(\" index: \", \"-\"), issueContext, reason, options);\n return;\n }\n this.toastWarning(`${url} endpoint error is not handled properly! Click here, to quickly create an issue.`, issueContext, reason, options);\n }, (resolve, reject) => {\n const request = this.client.request(options.method, absoluteUrl, options);\n const finalRequest = ObjectUtils.isNumber(options.timeout) && options.timeout > 0\n ? request.pipe(timeout(options.timeout)) : request;\n finalRequest.subscribe({\n next: event => {\n if (options.reportProgress && event?.type === HttpEventType.UploadProgress) {\n const progress = {\n percentage: MathUtils.round(event.loaded / event.total, 2, 0.01),\n loaded: event.loaded,\n total: event.total\n };\n if (listener) {\n listener(progress);\n }\n return;\n }\n resolve(event);\n const headers = options.headers as HttpHeaders;\n const authKey = \"Authorization\";\n // If we use token auth\n if (this.client.renewTokenFunc && headers.has(authKey)) {\n const currentTime = Date.now() + 60_000;\n const userTokenTime = this.getUserTokenTime() || currentTime;\n // And the stored token expiration time is almost ended\n if (currentTime >= userTokenTime) {\n this.client.renewTokenFunc();\n }\n }\n },\n error: (response: HttpErrorResponse | TimeoutError) => {\n if (response instanceof TimeoutError || response.status == 0 || response.status == 301) {\n reject(response);\n return;\n }\n const headers = options.headers as HttpHeaders;\n const authKey = \"Authorization\";\n // If an authorization header exists, and we still have an Unauthorized response prompt the user to log in again\n if (headers.has(authKey) && response.status == 401) {\n const pushed = this.pushFailedRequest(url, options, () => {\n options.headers = this.makeHeaders(options.originalHeaders);\n this.toPromise(url, options, listener).then(resolve, reject);\n });\n if (pushed) {\n this.handleUnauthorizedError(absoluteUrl, options, () => reject(response));\n return;\n }\n }\n reject(response);\n }\n });\n }), cache);\n return this.parseResponse(response, url, options, read);\n }, cache);\n }\n\n protected getUserTokenTime(): number {\n return this.storage.get(\"userTokenTime\");\n }\n\n protected pushFailedRequest(url: string, options: HttpClientRequestOptions, req: () => void): boolean {\n if (url.indexOf(\"token\") >= 0 || url === \"user\") return false;\n BaseHttpService.failedRequests.push(req);\n return true;\n }\n\n protected checkHeaders(headers: any): boolean {\n if (!headers || !headers.cookie || !headers.referer || !headers.host) {\n return false;\n }\n return headers.referer.indexOf(headers.host) >= 0;\n }\n\n protected makeOptions(options?: HttpRequestOptions, method: string = \"GET\", body?: any, cache?: Observable<any>): HttpClientRequestOptions {\n // Set base options\n options = options ? {...options} : {};\n options.cache = options.cache || cache || this.caches.ignore;\n options.method = method;\n options.observe = options.observe || \"body\";\n options.originalHeaders = options.originalHeaders || (options.headers as HttpRequestHeaders) || {};\n options.withCredentials = ObjectUtils.isBoolean(options.withCredentials) ? options.withCredentials : this.withCredentials;\n options.body = body || {};\n // Set cookies from server side request\n const headers = !this.request ? null : this.request.headers;\n if (this.checkHeaders(headers)) {\n options.headers[\"Cookie\"] = headers.cookie;\n }\n options.headers = this.makeHeaders(options);\n options.params = this.makeParams(options);\n return options;\n }\n\n protected makeHeaders(options: HttpClientRequestOptions): HttpHeaders {\n return this.bag.makeHeaders(options?.headers || {});\n }\n\n protected makeParams(options: HttpClientRequestOptions): HttpParams {\n return this.bag.makeParams(options?.params || {});\n }\n\n protected parseResponse(response: any, url: string, options: HttpClientRequestOptions, read: string): any {\n if (!read) return response;\n if (response instanceof HttpResponse) {\n response = response.body;\n }\n return ObjectUtils.isObject(response) ? response[read] : response;\n }\n\n protected parseUrl(url: string): string {\n return this.url(url).replace(/((?!:).\\/)\\//g, \"$1\");\n }\n\n protected absoluteUrl(url: string, options: HttpClientRequestOptions): string {\n return this.parseUrl(url);\n }\n\n protected expressRequestUrl(url: string): string {\n const req = this.request;\n if (!req || !url || url.startsWith(\"http\") || url.startsWith(\"//\")) return url;\n const separator = url.startsWith(\"/\") ? \"\" : \"/\";\n return `${req.protocol}://${req.get(\"host\")}${separator}${url}`;\n }\n}\n\ntype PromiseExecutor = (resolve: (value?: any | PromiseLike<any>) => void, reject: (reason?: any) => void) => void;\n\nclass HttpPromise extends Promise<any> {\n\n protected rejectHandler: (reason?: HttpErrorResponse) => void;\n protected hasRejectHandler: boolean;\n protected attachCount: number;\n protected runCount: number;\n\n constructor(rejectHandler: (reason?: HttpErrorResponse) => void, executor: PromiseExecutor) {\n super(executor);\n this.rejectHandler = rejectHandler;\n this.attachCount = 0;\n this.runCount = 0;\n }\n\n then<TResult1, TResult2>(onFulfilled?: ((value: any) => (PromiseLike<TResult1> | TResult1)) | null | undefined,\n onRejected?: ((reason: HttpErrorResponse) => (PromiseLike<TResult2> | TResult2)) | null | undefined): Promise<TResult1 | TResult2> {\n this.attachCount++;\n return super.then(value => {\n this.runCount++;\n return onFulfilled ? onFulfilled(value) : null;\n }, (reason: HttpErrorResponse) => {\n const result: any = onRejected ? onRejected(reason) : null;\n this.hasRejectHandler = this.hasRejectHandler || (onRejected && result !== false);\n this.runCount++;\n this.rejectHandler(this.runCount == this.attachCount && !this.hasRejectHandler ? reason : null);\n return result;\n });\n }\n\n catch<TResult = never>(onRejected?: ((reason: HttpErrorResponse) => (PromiseLike<TResult> | TResult)) | null | undefined): Promise<any | TResult> {\n return this.then(null, onRejected);\n }\n}\n","import {Injectable} from \"@angular/core\";\n\nimport {\n HttpRequestOptions,\n HttpRequestQuery,\n IApiService,\n IPaginationData,\n ProgressListener,\n UploadData\n} from \"../common-types\";\nimport {BaseHttpService} from \"./base-http.service\";\nimport {SOCKET_IO_PATH} from \"../tokens\";\n\n@Injectable()\nexport class ApiService extends BaseHttpService implements IApiService {\n\n get name(): string {\n return \"api\";\n }\n\n url(url: string): string {\n const config = this.configs.config;\n const baseUrl = this.expressRequestUrl(`${config.apiUrl}${url}`);\n const socket = this.injector.get(SOCKET_IO_PATH);\n if (url == \"api-docs\" || url == socket) {\n return baseUrl.replace(\"/api/\", \"/\");\n }\n return baseUrl;\n }\n\n get(url: string, options?: HttpRequestOptions, body?: any): Promise<any> {\n return this.getPromise(url, options, body);\n }\n\n delete(url: string, options?: HttpRequestOptions, body?: any): Promise<any> {\n return this.deletePromise(url, options, body);\n }\n\n post(url: string, body?: any, options?: HttpRequestOptions): Promise<any> {\n return this.postPromise(url, body, options);\n }\n\n put(url: string, body?: any, options?: HttpRequestOptions): Promise<any> {\n return this.putPromise(url, body, options);\n }\n\n patch(url: string, body?: any, options?: HttpRequestOptions): Promise<any> {\n return this.patchPromise(url, body, options);\n }\n\n upload(url: string, body: UploadData, listener?: ProgressListener, options?: HttpRequestOptions): Promise<any> {\n return this.uploadPromise(url, body, listener, options);\n }\n\n list(url: string, params: HttpRequestQuery, options?: HttpRequestOptions): Promise<IPaginationData> {\n options = options || {};\n options.params = Object.assign(options.params || {}, params || {});\n return this.listPromise(url, options);\n }\n}\n","import {IAuthService} from \"../common-types\";\n\nexport class StaticAuthService implements IAuthService {\n\n get isAuthenticated() {\n return false;\n }\n\n checkAuthenticated(): Promise<boolean> {\n return Promise.resolve(this.isAuthenticated);\n }\n}\n","import {Inject, Injectable, Injector, isDevMode, Optional} from \"@angular/core\";\nimport JSON5 from \"json5\";\nimport {UniversalService} from \"./universal.service\";\nimport {IConfigService, IConfiguration} from \"../common-types\";\nimport {StringUtils} from \"../utils/string.utils\";\nimport {APP_BASE_URL, BASE_CONFIG, ROOT_ELEMENT, SCRIPT_PARAMS} from \"../tokens\";\nimport {BaseHttpClient} from \"./base-http.client\";\n\n@Injectable()\nexport class ConfigService implements IConfigService {\n\n protected baseConfig: IConfiguration;\n protected loadedConfig: IConfiguration;\n protected scriptParameters: any;\n protected loader: Promise<IConfiguration>;\n protected readonly loaderFunc: () => Promise<IConfiguration>;\n\n get load(): () => Promise<IConfiguration> {\n return this.loaderFunc;\n }\n\n get config(): IConfiguration {\n return this.loadedConfig;\n }\n\n get configUrl(): string {\n return `${this.loadedConfig.baseUrl}config/config.json`;\n }\n\n constructor(readonly http: BaseHttpClient,\n readonly universal: UniversalService,\n readonly injector: Injector,\n @Inject(ROOT_ELEMENT) readonly rootElement: HTMLElement,\n @Inject(APP_BASE_URL) readonly baseUrl: string,\n @Optional() @Inject(BASE_CONFIG) baseConfig: IConfiguration = null,\n @Optional() @Inject(SCRIPT_PARAMS) scriptParams: any = null) {\n for (const key in []) {\n Object.defineProperty(Array.prototype, key, {\n enumerable: false\n });\n }\n this.baseConfig = baseConfig || {};\n this.loadedConfig = Object.assign(\n !this.baseUrl ? {} : {baseUrl: this.baseUrl, baseDomain: StringUtils.parseDomain(this.baseUrl)},\n this.baseConfig\n );\n this.scriptParameters = scriptParams || {};\n this.loaderFunc = () => {\n this.loader = this.loader || new Promise<any>((resolve, reject) => {\n this.loadJson().then(config => {\n this.loadedConfig = config = Object.assign(this.loadedConfig, config);\n this.prepareConfig(config).then(c => {\n this.loadedConfig = c;\n c.baseUrl = c.baseUrl || \"/\";\n resolve(c);\n });\n }, reject);\n });\n return this.loader;\n };\n this.initService();\n }\n\n protected initService(): void {\n\n }\n\n protected async loadJson(): Promise<IConfiguration> {\n if (this.universal.isServer) {\n return Promise.resolve(this.loadedConfig);\n }\n const configUrl = this.configUrl;\n try {\n const config5 = await this.http.get(isDevMode() ? `${configUrl}5` : configUrl, {responseType: \"text\"}).toPromise();\n return JSON5.parse(config5);\n } catch (e) {\n try {\n const config = await this.http.get(configUrl).toPromise();\n console.log(`Can't parse json5 config: ${e}`);\n return config;\n } catch (e) {\n throw new Error(`Config file not found at: ${configUrl}`);\n }\n }\n }\n\n protected prepareConfig(config: IConfiguration): Promise<IConfiguration> {\n return Promise.resolve(config);\n }\n\n cloneRootElem(): any {\n if (this.rootElement instanceof HTMLElement) {\n const clone = this.rootElement.cloneNode(true) as HTMLElement\n const children = Array.from(clone.childNodes);\n children.forEach(child => {\n if (child instanceof HTMLElement) {\n child.remove();\n }\n });\n return clone;\n }\n return this.rootElement;\n }\n\n prepareUrl(url: string, ending: string): string {\n const project = !this.loadedConfig ? \"\" : this.loadedConfig.project;\n const needsProtocol = url?.startsWith(\"//\") ?? false;\n url = !needsProtocol && url?.startsWith(\"/\") ? this.loadedConfig.baseDomain + url.substr(1) : url || \"\";\n url = `${url.replace(/\\/+$/, \"\")}${ending}`.replace(\"[project]\", project);\n return this.universal.isServer && needsProtocol ? `http:${url}` : url;\n }\n\n getConfigValue(key: string): any {\n return this.loadedConfig[key];\n }\n\n getQueryParameter(name: string, url?: string): string {\n url = url || (this.universal.isBrowser ? window.location.href : \"\");\n name = name.replace(/[\\[\\]]/g, \"\\\\$&\");\n const regex = new RegExp(\"[?&]\" + name + \"(=([^&#]*)|&|#|$)\"),\n results = regex.exec(url);\n if (!results) return null;\n if (!results[2]) return \"\";\n return decodeURIComponent(results[2].replace(/\\+/g, \" \"));\n }\n}\n","import {Inject, Injectable} from \"@angular/core\";\nimport {\n IConfirmMessageConfig,\n IConfirmDialogConfig,\n IDialogConfig,\n IDialogService,\n IToasterService\n} from \"../common-types\";\nimport {TOASTER_SERVICE} from \"../tokens\";\n\n@Injectable()\nexport class BaseDialogService<DR = any> implements IDialogService<DR> {\n\n constructor(@Inject(TOASTER_SERVICE) readonly toaster: IToasterService) {\n }\n\n dialog(config: IDialogConfig): DR {\n if (!config) return null;\n const button = !config.buttons ? null : config.buttons[0];\n if (!button) return null;\n this.toaster.handleAsyncMethod(button.method);\n return null;\n }\n\n confirm(config: IConfirmDialogConfig): DR {\n return this.dialog({\n id: config.id,\n title: config.title,\n message: config.message,\n messageContext: config.messageContext,\n size: config.size,\n buttons: [\n {\n text: config.okText,\n classes: config.okClasses,\n method: config.method\n },\n {\n text: config.cancelText || \"button.cancel\",\n classes: config.cancelClasses || \"btn-default\",\n method: config.cancelMethod\n }\n ],\n onClose: config.cancelMethod,\n templates: config.templates\n });\n }\n\n confirmMsg(message: string, config?: IConfirmMessageConfig): Promise<boolean> {\n return new Promise<boolean>(resolve => {\n this.confirm({\n ...(config || {}),\n message,\n method: async () => {\n resolve(true);\n return null;\n },\n cancelMethod: async () => {\n resolve(false);\n return null;\n }\n })\n });\n }\n}\n","import {ErrorHandler, Injectable, Injector} from \"@angular/core\";\nimport {UniversalService} from \"./universal.service\";\nimport {ErrorHandlerCallback, IToasterService} from \"../common-types\";\nimport {ERROR_HANDLER, TOASTER_SERVICE} from \"../tokens\";\nimport {md5} from \"../utils/crypto.utils\";\n\n@Injectable()\nexport class ErrorHandlerService extends ErrorHandler {\n\n private toaster: IToasterService;\n private universal: UniversalService;\n private errorCb: ErrorHandlerCallback;\n private readonly errorMap: any;\n\n constructor(readonly injector: Injector) {\n super();\n this.errorMap = {};\n }\n\n handleError(error: Error): void {\n this.universal = this.universal || this.injector.get(UniversalService);\n const date = new Date();\n try {\n this.errorCb = this.errorCb || this.injector.get(ERROR_HANDLER);\n this.errorCb(`[${date}]: ${error.message}\\n${error.stack}`);\n } catch (e) {\n if (!this.universal || this.universal.isServer) {\n console.error(`[${date}]: ${error.message}\\n${error.stack}`);\n return;\n }\n }\n if (!this.universal || this.universal.isServer) return;\n const key = md5(`${error.message} ${error.stack}`);\n if (this.errorMap[key] && this.errorMap[key].getTime() > date.getTime() - 5000) return;\n this.errorMap[key] = date;\n try {\n this.toaster = this.toaster || this.injector.get(TOASTER_SERVICE);\n this.toaster.error(`[${date}]: ${error.message}\\n${error.stack}`);\n } catch (e) {\n }\n console.error(`[${date}]: ${error.message}\\n${error.stack}`);\n }\n}\n","import {Inject, Injectable} from \"@angular/core\";\nimport {ILanguageService} from \"../common-types\";\nimport {ObjectUtils} from \"../utils/object.utils\";\nimport {EPSILON, MathUtils} from \"../utils/math.utils\";\nimport {LANGUAGE_SERVICE} from \"../tokens\";\n\n@Injectable()\nexport class FormatterService {\n\n get defaultPrecision(): number {\n return 2;\n }\n\n get defaultNumberFormat(): string {\n return `num + ' mm'`;\n }\n\n get defaultDivider(): number {\n return 1;\n }\n\n constructor(@Inject(LANGUAGE_SERVICE) public language: ILanguageService) {\n\n }\n\n roundNumber(value: number, precision?: number, divider?: number): number {\n return MathUtils.round(value, this.getPrecision(precision), divider || this.defaultDivider);\n }\n\n formatNumber(value: number | string, format?: string, precision?: number, divider?: number, minDigits?: number): string {\n precision = this.getPrecision(precision);\n minDigits = minDigits ?? precision;\n divider = divider || this.defaultDivider;\n value = (ObjectUtils.isNumber(value) ? <number>value : parseFloat(<string>value) ?? 0) / divider;\n const rounded = isNaN(value) || Math.abs(value) < EPSILON ? 0 : MathUtils.round(value, 10);\n const num = rounded.toLocaleString(this.language.currentLanguage, {\n minimumFractionDigits: minDigits,\n maximumFractionDigits: precision,\n useGrouping: false\n });\n return ObjectUtils.evaluate(format || this.defaultNumberFormat, {num});\n }\n\n formatMillimeter(value: number, precision?: number, divider?: number): string {\n return this.formatNumber(value, `num + ' mm'`, precision, divider);\n }\n\n protected getPrecision(precision: number): number {\n return ObjectUtils.isNumber(precision) ? precision : this.defaultPrecision;\n }\n}\n","import {EventEmitter, Injectable, TemplateRef} from \"@angular/core\";\nimport {ObjectUtils} from \"../utils/object.utils\";\nimport {GlobalComponentModifier} from \"../common-types\";\n\n@Injectable()\nexport class GlobalTemplateService {\n\n readonly templatesUpdated: EventEmitter<void>;\n\n protected globalTemplates: { [id: string]: TemplateRef<any> };\n protected componentModifiers: { [id: string]: GlobalComponentModifier };\n\n constructor() {\n this.templatesUpdated = new EventEmitter<any>();\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.emit();\n }\n\n remove(id: string): void {\n delete this.globalTemplates[id];\n this.templatesUpdated.emit();\n }\n\n addComponentModifier(id: string, modifier: GlobalComponentModifier): void {\n this.componentModifiers[id] = modifier;\n }\n}\n","import {Injectable} from \"@angular/core\";\n\nimport {HttpClientRequestOptions, IConfiguration, SvgDefinition, SvgSourceModifier} from \"../common-types\";\nimport {BaseHttpService} from \"./base-http.service\";\nimport {ObjectUtils} from \"../utils/object.utils\";\nimport {svgToDataUri} from \"../utils/string.utils\";\n\n@Injectable()\nexport class LocalHttpService extends BaseHttpService {\n\n protected svgs: Record<string, SvgDefinition>;\n protected images: Record<string, Promise<HTMLImageElement>>;\n\n get name(): string {\n return \"local-http\";\n }\n\n get config(): IConfiguration {\n return this.configs.config;\n }\n\n protected get withCredentials(): boolean {\n return false;\n }\n\n protected initService(): void {\n super.initService();\n this.svgs = {};\n this.images = {};\n }\n\n url(url: string): string {\n if (!url) return url;\n const config = this.config;\n const baseUrl = config.cdnUrl || config.baseUrl || \"\";\n return url.startsWith(\"data:\") || url.startsWith(\"http\") || url.startsWith(\"//\")\n ? url\n : `${baseUrl}${url}`;\n }\n\n get(url: string, options?: HttpClientRequestOptions, body?: any): Promise<any> {\n options = this.makeOptions(options, \"GET\", body, this.caches.permanent);\n return this.toPromise(url, options);\n }\n\n getImage(url: string): Promise<HTMLImageElement> {\n if (this.universal.isServer)\n return Promise.resolve(null);\n if (!url)\n return Promise.resolve(new Image());\n\n this.images[url] = this.images[url] || new Promise<HTMLImageElement>((resolve, reject) => {\n const image = new Image();\n image.crossOrigin = \"Anonymous\";\n image.src = this.url(url);\n image.onload = () => resolve(image);\n image.onerror = error => {\n console.warn(error);\n reject(`Can't load image from url: ${url}`);\n };\n });\n\n return this.images[url];\n }\n\n svgUrlFromSource(sourceStr: string, modifier?: SvgSourceModifier): string {\n if (!sourceStr.startsWith(\"<svg\")) {\n throw new Error(`Src is possibly not an svg.. '${sourceStr.substring(0, 10)}'`);\n }\n if (!this.svgs[sourceStr]) {\n const parser = document.createElement(\"div\");\n parser.innerHTML = sourceStr;\n const source = parser.querySelector(\"svg\");\n const width = parseFloat(source.getAttribute(\"width\"));\n const height = parseFloat(source.getAttribute(\"height\"));\n const vb = source.getAttribute(\"viewBox\").split(\" \").map(parseFloat);\n this.svgs[sourceStr] = {\n source,\n width: width || vb[2],\n height: height || vb[3],\n };\n }\n const def = this.svgs[sourceStr];\n const sourceClone = def.source.cloneNode(true) as SVGSVGElement;\n const svgModified = ObjectUtils.isFunction(modifier) ? modifier(sourceClone, def.width, def.height) : def.source.outerHTML;\n return svgToDataUri(svgModified)\n }\n\n svgFromSource(sourceStr: string, modifier?: SvgSourceModifier): Promise<HTMLImageElement> {\n return this.getImage(this.svgUrlFromSource(sourceStr, modifier));\n }\n\n async getSvgUrl(url: string, modifier?: SvgSourceModifier): Promise<string> {\n try {\n const svgSrc = await this.get(url, {responseType: \"text\"}) as string;\n return this.svgUrlFromSource(svgSrc, modifier);\n } catch (e) {\n throw new Error(`Can't get svg from url: ${url}, Error: ${e?.message}`);\n }\n }\n\n async getSvgImage(url: string, modifier?: SvgSourceModifier): Promise<HTMLImageElement> {\n try {\n const svgSrc = await this.get(url, {responseType: \"text\"}) as string;\n return await this.svgFromSource(svgSrc, modifier);\n } catch (e) {\n throw new Error(`Can't get svg from url: ${url}, Error: ${e?.message}`);\n }\n }\n}\n","import {EventEmitter, Injectable} from \"@angular/core\";\nimport {IIconService, SvgSourceModifier} from \"../common-types\";\nimport {LocalHttpService} from \"./local-http.service\";\n\ndeclare const icons: {\n [icon: string]: string;\n};\n\n@Injectable()\nexport class IconService implements IIconService {\n\n get isDisabled(): boolean {\n return this.disabled;\n }\n\n set isDisabled(value: boolean) {\n this.disabled = value;\n this.iconsLoaded.emit();\n }\n\n public readonly iconsLoaded: EventEmitter<any>;\n\n protected disabled: boolean;\n\n constructor(readonly http: LocalHttpService) {\n this.iconsLoaded = new EventEmitter<any>();\n this.disabled = false;\n }\n\n getIcon(icon: string, activeIcon: string, active: boolean): Promise<string> {\n icon = typeof icons == \"undefined\" ? icon : (icons[icon] || icon);\n activeIcon = typeof icons == \"undefined\" ? activeIcon : (icons[activeIcon] || icon);\n return Promise.resolve(active ? activeIcon : icon);\n }\n\n async getIconUrl(icon: string, modifier?: SvgSourceModifier): Promise<string> {\n const src = await this.getIcon(icon, icon, false);\n return this.http.svgUrlFromSource(src, modifier);\n }\n\n async getIconImage(icon: string, modifier?: SvgSourceModifier): Promise<HTMLImageElement> {\n const src = await this.getIcon(icon, icon, false);\n return this.http.svgFromSource(src, modifier);\n }\n}\n","import {Inject, Injectable} from \"@angular/core\";\nimport {\n GlobalTranslations,\n IConfigService,\n IConfiguration,\n ILanguageService,\n IPromiseService,\n ITranslation,\n ITranslations\n} from \"../common-types\";\nimport {ObjectUtils} from \"../utils/object.utils\";\nimport {EventsService} from \"./events.service\";\nimport {StorageService} from \"./storage.service\";\nimport {UniversalService} from \"./universal.service\";\nimport {BaseHttpClient} from \"./base-http.client\";\nimport {HttpClient} from \"@angular/common/http\";\nimport {CONFIG_SERVICE, PROMISE_SERVICE} from \"../tokens\";\n\nconst emptyDict: ITranslations = {};\n\n@Injectable()\nexport class StaticLanguageService implements ILanguageService {\n\n get defaultLanguage(): string {\n return this.configs.getQueryParameter(\"lang\") || this.storage.get(\"language\", this.getDefaultLanguage());\n }\n\n get dictionary(): ITranslations {\n return this.mergedTranslations[this.currentLanguage] || emptyDict;\n }\n\n set dictionary(value: ITranslations) {\n this.setDictionary(this.currentLang, value);\n this.mergeTranslations();\n }\n\n get languages(): ReadonlyArray<string> {\n return this.languageList;\n }\n\n get currentLanguage(): string {\n return this.currentLang || this.defaultLanguage;\n }\n\n set currentLanguage(lang: string) {\n this.currentLang = lang;\n this.events.languageChanged.next(lang);\n }\n\n get editLanguage(): string {\n return this.editLang || this.currentLanguage;\n }\n\n set editLanguage(lang: string) {\n this.editLang = lang || this.currentLanguage;\n this.events.editLanguageChanged.next(this.editLang);\n }\n\n get enableTranslations(): boolean {\n return this.enableTrans;\n }\n\n set enableTranslations(value: boolean) {\n this.enableTrans = value;\n this.events.translationsEnabled.next(value);\n }\n\n get disableTranslations(): boolean {\n return !this.enableTranslations;\n }\n\n set disableTranslations(value: boolean) {\n this.enableTranslations = !value;\n }\n\n get httpClient(): HttpClient {\n return this.client;\n }\n\n get config(): IConfiguration {\n return this.configs.config;\n }\n\n get universal(): UniversalService {\n return this.storage.universal;\n }\n\n protected editLang: string;\n protected currentLang: string;\n protected enableTrans: boolean;\n protected languageList: string[];\n protected readonly translations: GlobalTranslations;\n protected overrideTranslations: GlobalTranslations;\n protected mergedTranslations: GlobalTranslations;\n\n constructor(@Inject(EventsService) readonly events: EventsService,\n @Inject(StorageService) readonly storage: StorageService,\n @Inject(CONFIG_SERVICE) readonly configs: IConfigService,\n @Inject(PROMISE_SERVICE) protected promises: IPromiseService,\n @Inject(BaseHttpClient) protected client: BaseHttpClient) {\n this.editLang = null;\n this.currentLang = null;\n this.enableTrans = true;\n this.languageList = [];\n this.translations = {\n none: {}\n };\n this.overrideTranslations = {\n none: {}\n };\n this.mergedTranslations = this.translations;\n this.initService();\n }\n\n protected initService(): void {\n\n }\n\n replaceLanguages(languages: string[]): void {\n languages = Array.isArray(languages) && languages.length > 0 ? languages : this.languageList;\n this.languageList = Array.from(new Set<string>(languages));\n this.languageList.forEach(lang => {\n this.translations[lang] = this.translations[lang] || emptyDict;\n });\n }\n\n addLanguages(languages: string[]): void {\n if (!Array.isArray(languages) || languages.length == 0) return;\n this.replaceLanguages(this.languageList.concat(languages));\n }\n\n setOverrideTranslations(translations: GlobalTranslations): void {\n if (ObjectUtils.isObject(translations)) {\n this.overrideTranslations = translations;\n this.mergeTranslations();\n return;\n }\n this.overrideTranslations = {};\n this.mergedTranslations = this.translations;\n }\n\n getTranslationSync(key: string, params: Object = null): string {\n key = String(key ?? \"\");\n if (!key) return \"\";\n try {\n const lowerKey = key.toLocaleLowerCase();\n const dict = this.dictionary;\n if (lowerKey in dict && this.enableTranslations) {\n return this.interpolate(dict[lowerKey], params);\n }\n return this.interpolate(key, params);\n } catch (reason) {\n console.warn(\"ERROR IN TRANSLATIONS\", reason);\n return key;\n }\n }\n\n async getTranslation(key: string, params: any = null): Promise<string> {\n await this.loadDictionary();\n return this.getTranslationSync(key, params);\n }\n\n getTranslations(...keys: string[]): Promise<ITranslations> {\n return this.promises.create<ITranslations>(resolve => {\n this.promises.all(keys.map(key => this.getTranslation(key))).then(translations => {\n resolve(keys.reduce((result, key, i) => {\n result[key] = translations[i];\n return result;\n }, {}));\n });\n });\n }\n\n getTranslationFromObject(translations: ITranslations, params?: any, lang?: string): string {\n lang = lang || this.currentLanguage;\n return this.interpolate(translations ? (translations[lang] || \"\") : \"\")\n }\n\n getTranslationFromArray(translations: ITranslation[], params?: any, lang?: string): string {\n lang = lang || this.currentLanguage;\n const translation = translations ? translations.find(t => t.lang == lang) : null;\n return this.interpolate(translation ? translation.translation : \"\", params);\n }\n\n protected async loadDictionary(): Promise<ITranslations> {\n return this.dictionary;\n }\n\n protected setDictionary(lang: string, dictionary: ITranslations): ITranslations {\n this.translations[lang] = Object.keys(dictionary || {}).reduce((res, key) => {\n res[key.toLocaleLowerCase()] = dictionary[key];\n return res;\n }, {} as ITranslations);\n return this.translations[lang];\n }\n\n protected interpolate(expr: string | Function, params?: Object): string {\n if (typeof expr === \"string\") {\n return this.interpolateString(expr, params);\n }\n if (typeof expr === \"function\") {\n return expr(params);\n }\n return expr as string;\n }\n\n protected interpolateString(expr: string, params?: Object) {\n if (!expr || !params) return expr;\n return expr.replace(/{{\\s?([^{}\\s]*)\\s?}}/g, (substring: string, b: string) => {\n const r = ObjectUtils.getValue(params, b, \"\");\n return ObjectUtils.isDefined(r) ? r : substring;\n });\n }\n\n protected getDefaultLanguage(): string {\n if (!this.universal.isBrowser || typeof window.navigator === \"undefined\") {\n return \"de\";\n }\n let browserLang: string = (window.navigator.languages ? window.navigator.languages[0] : null)\n || window.navigator.language || window.navigator[\"browserLanguage\"] || window.navigator[\"userLanguage\"] || null;\n if (!browserLang) return browserLang;\n\n [\"-\", \"_\"].forEach(splitter => {\n if (browserLang.indexOf(splitter) >= 0) {\n browserLang = browserLang.split(splitter)[0];\n }\n })\n return browserLang;\n }\n\n protected mergeTranslations(): void {\n const languages = new Set([\n ...Object.keys(this.translations),\n ...Object.keys(this.overrideTranslations)\n ]);\n this.mergedTranslations = Array.from(languages).reduce((merged, language) => {\n merged[language] = {\n ...(this.translations[language] || emptyDict),\n ...(this.overrideTranslations[language] || emptyDict),\n };\n return merged;\n }, {} as GlobalTranslations);\n }\n}\n","import {Injectable} from \"@angular/core\";\nimport {BehaviorSubject, combineLatest, firstValueFrom, Observable} from \"rxjs\";\nimport {map} from \"rxjs/operators\";\nimport {ILanguageSetting, ILanguageSettings, ITranslations} from \"../common-types\";\nimport {StaticLanguageService} from \"./static-language.service\";\n\n@Injectable()\nexport class LanguageService extends StaticLanguageService {\n\n protected translationRequests: Record<string, Promise<ITranslations>>;\n protected settingsPromise: Promise<ILanguageSettings>;\n protected languageSettings: BehaviorSubject<ILanguageSettings>;\n\n get currentLanguage(): string {\n return this.currentLang || this.defaultLanguage;\n }\n\n set currentLanguage(lang: string) {\n this.useLanguage(lang).then(() => {\n this.events.languageChanged.next(lang);\n });\n }\n\n get settings(): ILanguageSetting {\n const settings = this.languageSettings.value;\n return !settings ? {} : settings.settings[this.currentLanguage] || {};\n }\n\n get $settings(): Observable<ILanguageSetting> {\n this.loadSettings().then(s => this.languageSettings.next(s));\n return combineLatest([this.languageSettings, this.events.languageChanged]).pipe(map(([settings, lang]) => {\n return !settings ? {} : settings.settings[lang as string] || {};\n }));\n }\n\n protected initService(): void {\n super.initService();\n this.client.setParam(\"language\", \"de\");\n this.translationRequests = {};\n this.languageSettings = new BehaviorSubject<ILanguageSettings>(null);\n if (this.universal.isServer) return;\n window[\"setLanguage\"] = (lang: string) => {\n this.currentLanguage = lang;\n };\n }\n\n async initFromSettings(): Promise<any> {\n const defaultLanguage = this.defaultLanguage;\n const settings = await this.loadSettings();\n this.languageSettings.next(settings);\n const devLanguages = settings.devLanguages || [];\n this.languageList = (settings.languages || []).filter(lang => {\n const unavailable = settings.settings[lang]?.unavailable;\n if (unavailable) {\n const parts = unavailable.split(\"/\");\n const value = parts[0] || parts[1];\n const flags = parts.length > 1 ? parts[parts.length - 1] : \"g\";\n if (new RegExp(value, flags).test(this.config.baseDomain)) return false;\n }\n return devLanguages.indexOf(lang) < 0;\n });\n if (this.languageList.length === 0) {\n this.languageList = [defaultLanguage];\n }\n const lang = this.languages.indexOf(defaultLanguage) < 0 ? settings.defaultLanguage || this.languageList[0] : defaultLanguage;\n await this.useLanguage(lang);\n this.events.languageChanged.next(lang);\n }\n\n protected async useLanguage(lang: string): Promise<ITranslations> {\n lang = this.languages.indexOf(lang) < 0 ? this.languages[0] : lang;\n this.client.setParam(\"language\", lang);\n if (lang === this.currentLang) return this.dictionary;\n this.storage.set(\"language\", lang);\n this.currentLang = lang;\n return this.loadDictionary();\n }\n\n getDictionary(lang: string): Promise<ITranslations> {\n lang = this.languages.includes(lang) ? lang : this.currentLanguage;\n const ext = this.config.translationExt || ``;\n this.translationRequests[lang] = this.translationRequests[lang] || firstValueFrom(this.client.get<ITranslations>(`${this.config.translationUrl}${lang}${ext}`))\n .then(response => {\n response = response || {};\n const dictionary = Object.keys(response).reduce((result, key) => {\n result[key.toLocaleLowerCase()] = response[key];\n return result;\n }, {} as ITranslations);\n this.translations[lang] = dictionary;\n this.mergeTranslations();\n return dictionary;\n }).catch(error => {\n console.warn(\"Translation dictionary problem:\", error);\n return {};\n })\n return this.translationRequests[lang];\n }\n\n protected async loadDictionary(): Promise<ITranslations> {\n return this.getDictionary(this.currentLang);\n }\n\n protected loadSettings(): Promise<ILanguageSettings> {\n const ext = this.config.translationExt || ``;\n this.settingsPromise = this.settingsPromise || firstValueFrom(this.client.get<ILanguageSettings>(`${this.config.translationUrl}languageSettings${ext}`))\n .catch(error => {\n console.warn(\"Translation settings problem:\", error);\n return {\n languages: [\"de\", \"en\", \"hu\"],\n devLanguages: [],\n defaultLanguage: \"de\",\n settings: {\n de: {},\n hu: {},\n en: {}\n }\n };\n });\n return this.settingsPromise;\n }\n}\n","import {Inject, Injectable, Injector} from \"@angular/core\";\nimport {\n DynamicSchemaRef,\n IApiService,\n OpenApiSchema,\n OpenApiSchemaProperty, OpenApiSchemaRef,\n OpenApiSchemas, OpenApiSchemaSelector\n} from \"../common-types\";\nimport {API_SERVICE, SCHEMA_SELECTOR, STATIC_SCHEMAS} from \"../tokens\";\nimport {ObjectUtils} from \"../utils/object.utils\";\n\n@Injectable()\nexport class OpenApiService {\n\n private apiDocs: Promise<any>;\n private schemas: Promise<OpenApiSchemas>;\n private readonly dynamicSchemas: Record<string, OpenApiSchema>;\n\n constructor(@Inject(API_SERVICE) readonly api: IApiService,\n @Inject(SCHEMA_SELECTOR) protected readonly schemaSelector: OpenApiSchemaSelector,\n @Inject(STATIC_SCHEMAS) protected readonly staticSchemas: OpenApiSchemas,\n protected readonly injector: Injector) {\n this.dynamicSchemas = {};\n }\n\n isDynamicSchema(value: any): value is Required<DynamicSchemaRef> {\n if (!ObjectUtils.isObject(value)) {\n return false;\n }\n const definition = value as DynamicSchemaRef;\n return ObjectUtils.isStringWithValue(definition.dynamicSchema)\n || ObjectUtils.isStringWithValue(definition.dynamicSchemaUrl)\n || ObjectUtils.isStringWithValue(definition.dynamicSchemaName);\n }\n\n async getSchemas(): Promise<OpenApiSchemas> {\n const cache = this.api.cached(\"auth\");\n const apiDocs = this.api.get(\"api-docs\", {cache});\n if (apiDocs !== this.apiDocs) {\n this.apiDocs = apiDocs;\n this.schemas = apiDocs.then(res => {\n return {\n ...this.extractSchemas({definitions: this.staticSchemas}),\n ...this.extractSchemas(res)\n };\n });\n }\n return this.schemas;\n }\n\n async getReferences(property: OpenApiSchemaProperty, schema: OpenApiSchema): Promise<OpenApiSchema[]> {\n const props = !property.items ? [property] : [property, property.items];\n const references: Array<OpenApiSchemaRef | DynamicSchemaRef> = [];\n for (const prop of props) {\n if (this.isDynamicSchema(prop) || ObjectUtils.isStringWithValue(prop.$ref)) {\n references.push(prop);\n continue;\n }\n if (ObjectUtils.isArray(prop.allOf)) {\n prop.allOf\n .filter(ref => ObjectUtils.isStringWithValue(ref.$ref))\n .forEach(ref => references.push(ref));\n }\n if (ObjectUtils.isArray(prop.oneOf)) {\n prop.oneOf\n .filter(ref => ObjectUtils.isStringWithValue(ref.$ref))\n .forEach(ref => references.push(ref));\n }\n }\n\n return Promise.all(references.map(ref => {\n if (this.isDynamicSchema(ref)) {\n return this.getDynamicSchema(ref);\n }\n return this.getSchema((ref as OpenApiSchemaRef).$ref.split(\"/\").pop());\n }));\n }\n\n async getSchema(name: string): Promise<OpenApiSchema> {\n const schemas = await this.getSchemas();\n return this.schemaSelector(name, schemas, this.injector) || null;\n }\n\n protected async getDynamicSchema(definition: DynamicSchemaRef): Promise<OpenApiSchema> {\n const cache = this.api.cached(\"auth\");\n const dynamicDocs = await this.api.get(\n definition.dynamicSchema || definition.dynamicSchemaUrl || \"dynamic-schemas\",\n {cache}\n );\n const dynamicSchemas = this.extractSchemas(dynamicDocs);\n const dynamicSchema = dynamicSchemas[definition.dynamicSchemaName || \"DTO\"];\n delete dynamicSchemas[definition.dynamicSchemaName || \"DTO\"];\n Object.assign(this.dynamicSchemas, dynamicSchemas);\n return dynamicSchema;\n }\n\n protected extractSchemas(res: any): OpenApiSchemas {\n const schemas: OpenApiSchemas = Object.assign({}, res.components?.schemas || res.definitions || {});\n Object.values(schemas).forEach(schema => {\n Object.keys(schema.properties || {}).forEach(p => {\n schema.properties[p].id = p;\n });\n });\n return schemas;\n }\n}\n","import {Inject, Injectable} from \"@angular/core\";\nimport {AsyncMethod, ILanguageService, IToasterService, ToastType} from \"../common-types\";\nimport {LANGUAGE_SERVICE} from \"../tokens\";\n\n@Injectable()\nexport class BaseToasterService<T = any, P extends Record<string, any> = {}> implements IToasterService {\n\n protected colorMap: Record<ToastType, string>;\n\n constructor(@Inject(LANGUAGE_SERVICE) protected language: ILanguageService) {\n this.colorMap = {\n info: \"#2F96B4\",\n success: \"#51A351\",\n warning: \"#F89406\",\n error: \"#BD362F\"\n };\n }\n\n info(message: string, params?: P) {\n this.translate(message, params, \"info\");\n }\n\n success(message: string, params?: P) {\n this.translate(message, params, \"success\");\n }\n\n warning(message: string, params?: P){\n this.translate(message, params, \"warning\");\n }\n\n error(message: string, params?: P) {\n this.translate(message, params, \"error\");\n }\n\n infoPromised(message: string, params?: P) {\n return this.translatePromised(message, params, \"info\");\n }\n\n successPromised(message: string, params?: P) {\n return this.translatePromised(message, params, \"success\");\n }\n\n warningPromised(message: string, params?: P) {\n return this.translatePromised(message, params, \"warning\");\n }\n\n errorPromised(message: string, params?: P) {\n return this.translatePromised(message, params, \"error\");\n }\n\n handleAsyncMethod(method: AsyncMethod): void {\n if (!method) return;\n method().then(result => {\n if (result) {\n this.success(result.message, result.context);\n }\n }, reason => {\n if (!reason || !reason.message)\n throw new Error(\"Reason must implement IAsyncMessage interface\");\n this.error(reason.message, reason.context);\n });\n }\n\n protected translate(message: string, params: P, type: ToastType): void {\n this.language.getTranslation(message, params).then(str => {\n this.show(str, type, params);\n });\n }\n\n protected async translatePromised(message: string, params: P, type: ToastType): Promise<T> {\n const str = await this.language.getTranslation(message, params);\n return this.show(str, type, params);\n }\n\n protected show(message: string, type: ToastType, params: P): T | Promise<T> {\n console.log(message, `background: ${this.colorMap[type]}; color: #ffffff`, params);\n return null;\n }\n}\n","import {\n ApplicationRef,\n ComponentRef,\n createComponent,\n EnvironmentInjector,\n Inject,\n Injectable,\n Injector,\n NgModuleRef,\n Optional,\n Type,\n ViewRef\n} from \"@angular/core\";\nimport {Route, Router} from \"@angular/router\";\nimport {firstValueFrom, Observable} from \"rxjs\";\n\nimport {\n CssSelectorList,\n DynamicComponentLocation,\n DynamicModuleInfo\n} from \"../common-types\";\nimport {getComponentDef, parseSelector, selectorMatchesList} from \"../utils/misc\";\nimport {DYNAMIC_ENTRY_COMPONENTS, DYNAMIC_MODULE_INFO, ROOT_ELEMENT} from \"../tokens\";\n\ninterface LoadedRouterConfig {\n routes: Route[];\n injector: EnvironmentInjector | undefined;\n}\n\ninterface RouterConfigLoader {\n loadChildren(parentInjector: Injector, route: Route): Observable<LoadedRouterConfig>;\n}\n\ninterface NavigationTransitions {\n configLoader: RouterConfigLoader;\n}\n\n@Injectable()\nexport class ComponentLoaderService {\n\n private readonly typeMap: Array<[string, CssSelectorList, Type<any>]>;\n private readonly moduleRegistry: DynamicModuleInfo[];\n private readonly moduleMap: Map<string, Promise<EnvironmentInjector>>;\n\n get injector(): Injector {\n return this.ngModule.injector;\n }\n\n constructor(\n protected appRef: ApplicationRef,\n protected ngModule: NgModuleRef<any>,\n @Inject(ROOT_ELEMENT) protected rootElement: HTMLElement,\n @Optional() @Inject(DYNAMIC_MODULE_INFO) moduleRegistry: DynamicModuleInfo[]\n ) {\n this.typeMap = [];\n this.moduleRegistry = moduleRegistry || [];\n this.moduleMap = new Map();\n this.populateTypeMap(\"root\", this.ngModule.injector);\n }\n\n findComponentType<T>(selector: string, moduleId: string = \"root\"): Type<T> {\n const cssSelector = parseSelector(selector);\n const results = new Map<string, Type<any>>();\n for (const item of this.typeMap) {\n if (selectorMatchesList(item[1], cssSelector)) {\n results.set(item[0], item[2]);\n }\n }\n const keys = Array.from(results.keys());\n const result = results.get(moduleId) || results.get(keys[0]);\n if (!result) {\n throw new Error(`Cannot find component by selector: ${selector} in module '${moduleId}' nor in any other module`);\n }\n return result;\n }\n\n async getComponentType(location: DynamicComponentLocation): Promise<Type<any>> {\n\n // Find module info\n const moduleInfoList = this.moduleRegistry\n .filter(info => info.moduleId === location.moduleId);\n\n if (moduleInfoList.length > 1) {\n throw new Error(`Module with id '${location.moduleId}' has been declared more than once.`)\n }\n\n const moduleInfo = moduleInfoList[0];\n\n if (!moduleInfo) {\n throw new Error(`Module with id '${location.moduleId}' not found.`);\n }\n\n await this.loadModule(moduleInfo);\n\n return this.findComponentType(location.selector, location.moduleId);\n }\n\n createComponent(componentType: Type<any>, projectableNodes?: any[], injector?: Injector, split?: boolean): ComponentRef<any> {\n if (projectableNodes) {\n projectableNodes = split ? projectableNodes.filter(node => {\n return node && node.nodeType !== Node.COMMENT_NODE;\n }).map(node => [node]) : [projectableNodes];\n } else {\n projectableNodes = [];\n }\n return createComponent(componentType, {\n environmentInjector: this.appRef.injector,\n elementInjector: injector || this.injector,\n projectableNodes\n });\n }\n\n bootstrap<T>(componentType: Type<T>, rootSelectorOrNode?: string | any): ComponentRef<T> {\n rootSelectorOrNode = rootSelectorOrNode || this.rootElement;\n return !rootSelectorOrNode ? null : this.appRef.bootstrap(componentType, rootSelectorOrNode);\n }\n\n attachView(viewRef: ViewRef): void {\n if (!viewRef) return;\n this.appRef.attachView(viewRef);\n }\n\n detachView(viewRef: ViewRef): void {\n if (!viewRef) return;\n this.appRef.detachView(viewRef);\n try {\n viewRef.destroy();\n } catch (e) {\n console.log(`Can't destroy view, maybe it is already destroyed?`);\n }\n }\n\n private populateTypeMap(moduleId: string, injector: EnvironmentInjector): void {\n const entries = injector.get(DYNAMIC_ENTRY_COMPONENTS) || [];\n if (entries.length == 0) {\n console.warn(\"Entry components not found in the module\", injector);\n }\n entries.forEach(entryComponents => {\n entryComponents.components.forEach(type => {\n const def = getComponentDef(type);\n this.typeMap.push([entryComponents.moduleId || moduleId, def.selectors as any, type]);\n });\n });\n }\n\n private async loadModule(moduleInfo: DynamicModuleInfo): Promise<EnvironmentInjector> {\n if (this.moduleMap.has(moduleInfo.moduleId)) {\n return this.moduleMap.get(moduleInfo.moduleId);\n }\n this.moduleMap.set(moduleInfo.moduleId, new Promise(async resolve => {\n const router = this.injector.get(Router);\n const loader = (router[\"navigationTransitions\"] as NavigationTransitions).configLoader;\n const loaded = await firstValueFrom(loader.loadChildren(this.injector, {\n loadChildren: moduleInfo.loadChildren\n }));\n if (moduleInfo.routes) {\n router.resetConfig(moduleInfo.routes);\n if (moduleInfo.initialNavigation !== false) {\n router.initialNavigation();\n }\n }\n this.populateTypeMap(moduleInfo.moduleId, loaded.injector);\n resolve(loaded.injector);\n }));\n return this.moduleMap.get(moduleInfo.moduleId);\n }\n}\n","import {Inject, Injectable} from \"@angular/core\";\nimport {DefaultUrlSerializer, UrlSegment, UrlSegmentGroup, UrlTree} from \"@angular/router\";\nimport {ILanguageService} from \"../common-types\";\nimport {LANGUAGE_SERVICE} from \"../tokens\";\n\nexport interface IUrlDictionary {\n [key: string]: string\n}\n\n@Injectable()\nexport class TranslatedUrlSerializer extends DefaultUrlSerializer {\n\n protected cache: {[lang: string]: IUrlDictionary};\n\n constructor(@Inject(LANGUAGE_SERVICE) readonly language: ILanguageService) {\n super();\n this.cache = {};\n }\n\n serialize(tree: UrlTree): string {\n const copy = new UrlTree();\n const dictionary = this.getDictionary(true);\n copy.root = this.modifyTreeRecursive(tree.root, segment => {\n segment.path = dictionary[segment.path] || segment.path;\n });\n copy.queryParams = tree.queryParams;\n return super.serialize(copy);\n }\n\n parse(url: string): UrlTree {\n const tree = super.parse(url);\n const dictionary = this.getDictionary(false);\n tree.root = this.modifyTreeRecursive(tree.root, segment => {\n segment.path = dictionary[segment.path] || segment.path;\n });\n return tree;\n }\n\n getDictionary(serialize: boolean): IUrlDictionary {\n const method = serialize ? `serialize` : `parse`;\n const key = `${this.language.currentLanguage}-${method}`;\n if (!this.cache[key]) {\n const dict = this.language.dictionary;\n this.cache[key] = Object.keys(dict).reduce((res, key) => {\n if (!key.startsWith(\"route.\")) return res;\n const value = dict[key];\n key = key.replace(\"route.\", \"\");\n res[serialize ? key : value] = serialize ? value : key;\n return res;\n }, {});\n }\n return this.cache[key];\n }\n\n modifyTreeRecursive(segmentGroup: UrlSegmentGroup, cb: (segment: UrlSegment) => void): UrlSegmentGroup {\n if (!segmentGroup) return null;\n const childrenArr = [];\n const children = Object.keys(segmentGroup.children || {}).reduce((res, key) => {\n const child = this.modifyTreeRecursive(segmentGroup.children[key], cb);\n childrenArr.push(child);\n res[key] = child;\n return res;\n }, {});\n const newGroup = new UrlSegmentGroup(segmentGroup.segments.map(s => {\n s = new UrlSegment(s.path, Object.assign({}, s.parameters));\n cb(s);\n return s;\n }), children);\n childrenArr.forEach(c => {\n c.parent = newGroup;\n });\n return newGroup;\n }\n}\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\";\nimport {BehaviorSubject, Subscription} from \"rxjs\";\nimport {IApiService} from \"../common-types\";\nimport {ExtraHeaders, SocketClient, SocketData, SocketDataObj} from \"../utils/socket-client\";\nimport {LoaderUtils} from \"../utils/loader.utils\";\nimport {API_SERVICE, SOCKET_IO_PATH} from \"../tokens\";\nimport {EventsService} from \"./events.service\";\n\n@Injectable()\nexport class SocketService implements OnDestroy {\n\n protected client: SocketClient;\n protected userSub: Subscription;\n\n get status(): BehaviorSubject<boolean> {\n return this.client.status;\n }\n\n get id(): string {\n return this.client.id;\n }\n\n constructor(@Inject(API_SERVICE) readonly api: IApiService,\n @Inject(SOCKET_IO_PATH) protected ioPath: string,\n protected events: EventsService) {\n\n const url = this.api.url(this.ioPath);\n this.client = new SocketClient(url, async () => {\n let script: HTMLScriptElement = null;\n try {\n script = await LoaderUtils.loadScript(`${url}/socket.io.js`);\n } catch (e) {\n script?.remove();\n await LoaderUtils.loadScript(`https://cdn.socket.io/4.7.4/socket.io.min.js`);\n }\n return window[\"io\"];\n });\n }\n\n withAuth(extraHeaders: ExtraHeaders = {}): void {\n this.userSub = this.events.userChanged.subscribe(user => {\n if (user) {\n this.connect(extraHeaders);\n return;\n }\n this.disconnect();\n });\n if (this.events.isAuthenticated) {\n this.connect(extraHeaders);\n }\n }\n\n ngOnDestroy(): void {\n this.userSub?.unsubscribe();\n this.disconnect();\n }\n\n connect(extraHeaders: ExtraHeaders = {}): void {\n if (this.userSub && this.events.isAuthenticated) {\n extraHeaders = {\n ...(extraHeaders || {}),\n ...Object.entries(this.api.client.requestHeaders || {}).reduce((res, entry) => {\n res[entry[0]] = Array.isArray(entry[1]) ? entry[1].join(\", \") : entry[1];\n return res;\n }, {})\n };\n }\n this.client.connect(extraHeaders);\n }\n\n disconnect(): void {\n this.client.disconnect();\n }\n\n subscribe(event: string, cb: (value: SocketData) => void): Subscription {\n return this.client.subscribe(event, cb);\n }\n\n emit(event: string, content: SocketData): void {\n this.client.emit(event, content);\n }\n\n request(event: string, content: SocketDataObj): Promise<any> {\n return this.client.request(event, content);\n }\n}\n","import {KeyValue} from \"@angular/common\";\n\nexport type DragHandlerEvents = \"dragstart\" | \"dragenter\" | \"dragleave\" | \"drop\";\nexport type DragEventListener = (ev: DragEvent) => boolean | void;\n\nexport class DragDropHandler {\n\n protected static handlers: Map<HTMLElement, DragDropHandler>;\n\n protected readonly onDragStart: DragEventListener;\n protected readonly onDragEnter: DragEventListener;\n protected readonly onDragOver: DragEventListener;\n protected readonly onDragLeave: DragEventListener;\n protected readonly onDrop: DragEventListener;\n\n protected first: boolean;\n protected second: boolean;\n protected dropEffect: \"none\" | \"copy\" | \"link\" | \"move\";\n protected effectAllowed: \"none\" | \"copy\" | \"copyLink\" | \"copyMove\" | \"link\" | \"linkMove\" | \"move\" | \"all\" | \"uninitialized\";\n protected listeners: Array<KeyValue<DragHandlerEvents, DragEventListener>>;\n\n static get(el: HTMLElement) {\n if (DragDropHandler.handlers?.has(el)) {\n return DragDropHandler.handlers.get(el);\n }\n return new DragDropHandler(el);\n }\n\n protected static add(el: HTMLElement, inst: DragDropHandler) {\n DragDropHandler.handlers = DragDropHandler.handlers || new Map();\n DragDropHandler.handlers.set(el, inst);\n }\n\n protected constructor(protected el: HTMLElement) {\n this.first = false;\n this.second = false;\n this.listeners = [];\n this.onDragStart = ev => {\n this.fireEvent(\"dragstart\", ev);\n this.effectAllowed = ev.dataTransfer.effectAllowed;\n this.dropEffect = ev.dataTransfer.dropEffect;\n };\n this.onDragEnter = ev => {\n if (this.first) {\n this.second = true;\n } else {\n this.first = true;\n this.fireEvent(\"dragenter\", ev);\n this.effectAllowed = ev.dataTransfer.effectAllowed;\n this.dropEffect = ev.dataTransfer.dropEffect;\n }\n };\n this.onDragOver = ev => {\n ev.preventDefault();\n ev.dataTransfer.effectAllowed = this.effectAllowed;\n ev.dataTransfer.dropEffect = this.dropEffect;\n };\n this.onDragLeave = ev => {\n if (this.second) {\n this.second = false\n } else if (this.first) {\n this.first = false\n }\n if (!this.first && !this.second) {\n this.fireEvent(\"dragleave\", ev);\n }\n };\n this.onDrop = ev => {\n this.first = false;\n this.second = false;\n this.fireEvent(\"drop\", ev);\n };\n this.el.addEventListener(\"dragstart\", this.onDragStart);\n this.el.addEventListener(\"dragenter\", this.onDragEnter);\n this.el.addEventListener(\"dragover\", this.onDragOver);\n this.el.addEventListener(\"dragleave\", this.onDragLeave);\n this.el.addEventListener(\"drop\", this.onDrop);\n DragDropHandler.add(this.el, this);\n }\n\n addListener(key: DragHandlerEvents, value: DragEventListener): void {\n this.listeners = [\n ...this.listeners,\n {key, value}\n ];\n }\n\n removeListener(type: DragHandlerEvents, listener: DragEventListener): void {\n this.listeners = this.listeners.filter(entry => entry.key !== type || entry.value !== listener);\n if (this.listeners.length > 0) return;\n this.destroy();\n }\n\n protected fireEvent(type: DragHandlerEvents, ev: DragEvent): void {\n this.listeners.forEach(entry => {\n if (entry.key !== type) return;\n entry.value(ev);\n });\n }\n\n protected destroy(): void {\n this.el.removeEventListener(\"dragstart\", this.onDragStart);\n this.el.removeEventListener(\"dragenter\", this.onDragEnter);\n this.el.removeEventListener(\"dragover\", this.onDragOver);\n this.el.removeEventListener(\"dragleave\", this.onDragLeave);\n this.el.removeEventListener(\"drop\", this.onDrop);\n DragDropHandler.handlers?.delete(this.el);\n }\n}\n","import {ɵDomEventsPlugin as EventManagerPlugin} from \"@angular/platform-browser\";\nimport {Inject, Injectable} from \"@angular/core\";\nimport {DOCUMENT} from \"@angular/common\";\nimport {UniversalService} from \"../services/universal.service\";\nimport {DragDropHandler, DragHandlerEvents} from \"./drag-drop-handler\";\n\nexport function emptyRemove(): void {\n\n}\n\n@Injectable()\nexport class DragDropEventPlugin extends EventManagerPlugin {\n\n private static EVENT_NAMES: DragHandlerEvents[] = [\"dragstart\", \"dragenter\", \"dragleave\", \"drop\"];\n\n constructor(@Inject(DOCUMENT) doc: any, private universal: UniversalService) {\n super(doc);\n }\n\n supports(eventName: DragHandlerEvents) {\n return DragDropEventPlugin.EVENT_NAMES.includes(eventName);\n }\n\n addEventListener(element: HTMLElement, eventName: DragHandlerEvents, handler: Function): Function {\n const zone = this.manager.getZone();\n return zone.runOutsideAngular(() => {\n if (this.universal.isServer) return emptyRemove;\n const callback = (e: DragEvent) => {\n zone.run(() => handler(e));\n };\n const dd = DragDropHandler.get(element);\n dd.addListener(eventName, callback);\n return () => dd.removeListener(eventName, callback);\n });\n }\n}\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\";\nimport {Inject, Injectable} from \"@angular/core\";\nimport {DOCUMENT} from \"@angular/common\";\n\nimport {ResizeEventStrategy} from \"../common-types\";\nimport {TimerUtils} from \"../utils/timer.utils\";\nimport {UniversalService} from \"../services/universal.service\";\nimport {ResizeDetector} from \"./resize-detector\";\nimport {RESIZE_DELAY, RESIZE_STRATEGY} from \"../tokens\";\n\nfunction emptyRemove(): void {\n\n}\n\nfunction isWindow(el: any): boolean {\n return typeof window !== \"undefined\" && el === window;\n}\n\n@Injectable()\nexport class ResizeEventPlugin extends EventManagerPlugin {\n\n static readonly EVENT_NAME: string = \"resize\";\n\n readonly detector: ResizeDetector;\n\n constructor(@Inject(DOCUMENT) doc: any,\n @Inject(RESIZE_DELAY) protected resizeDelay: number,\n @Inject(RESIZE_STRATEGY) protected resizeStrategy: ResizeEventStrategy,\n readonly universal: UniversalService) {\n super(doc);\n this.detector = new ResizeDetector(resizeStrategy);\n }\n\n supports(eventName: string) {\n return eventName === ResizeEventPlugin.EVENT_NAME;\n }\n\n addEventListener(element: HTMLElement, eventName: string, handler: Function): Function {\n const zone = this.manager.getZone();\n return zone.runOutsideAngular(() => {\n if (this.universal.isServer)\n return emptyRemove;\n const timer = TimerUtils.createTimeout();\n const cb = (el: any) => {\n timer.set(() => {\n zone.run(() => handler(el));\n }, this.resizeDelay);\n };\n if (isWindow(element)) {\n element.addEventListener(eventName, cb);\n }\n else {\n this.detector.listenTo(element, cb);\n }\n return () => {\n try {\n if (isWindow(element)) {\n element.removeEventListener(eventName, cb);\n }\n else {\n this.detector.uninstall(element);\n }\n }\n catch (e) {\n } finally {\n timer.clear();\n }\n };\n });\n }\n}\n","import {ɵDomEventsPlugin as EventManagerPlugin} from \"@angular/platform-browser\";\nimport {Inject, Injectable} from \"@angular/core\";\nimport {DOCUMENT} from \"@angular/common\";\nimport {UniversalService} from \"../services/universal.service\";\n\nexport function emptyRemove(): void {\n\n}\n\n@Injectable()\nexport class ScrollEventPlugin extends EventManagerPlugin {\n\n private static EVENT_NAME: string = \"scroll\";\n\n constructor(@Inject(DOCUMENT) doc: any, private universal: UniversalService) {\n super(doc);\n }\n\n supports(eventName: string) {\n return eventName === ScrollEventPlugin.EVENT_NAME;\n }\n\n addEventListener(element: HTMLElement, eventName: string, handler: Function): Function {\n const zone = this.manager.getZone();\n return zone.runOutsideAngular(() => {\n if (this.universal.isServer) return emptyRemove;\n const callback = (e: Event) => {\n zone.run(() => handler(e));\n };\n element.addEventListener(eventName, callback);\n return () => element.removeEventListener(eventName, callback);\n });\n }\n}\n","import {Pipe, PipeTransform} from \"@angular/core\";\n\n@Pipe({\n standalone: false,\n name: \"chunk\"\n})\nexport class ChunkPipe implements PipeTransform {\n transform(items: any[], count: number): any[] {\n const result: any[] = [];\n let subResult: any[] = null;\n items.forEach((item, index) => {\n if (index % count == 0) {\n subResult = [];\n result.push(subResult);\n }\n subResult.push(item);\n });\n return result;\n }\n}\n","import {Pipe, PipeTransform} from \"@angular/core\";\nimport {ObjectUtils} from \"../utils/object.utils\";\n\nexport interface IEntry {\n key: string;\n value: any;\n index: number;\n}\n\nconst emptyEntries: IEntry[] = [];\n\n@Pipe({\n standalone: false,\n name: \"entries\"\n})\nexport class EntriesPipe implements PipeTransform {\n\n transform(value: any): IEntry[] {\n if (!value) return emptyEntries;\n const entries: IEntry[] = [];\n ObjectUtils.iterate(value, (val, key) => {\n entries.push({\n key: key,\n value: val,\n index: entries.length\n });\n });\n return entries;\n }\n}\n","import {Pipe, PipeTransform} from \"@angular/core\";\nimport {IExtraProperties} from \"../common-types\";\nimport {ObjectUtils} from \"../utils/object.utils\";\n\n@Pipe({\n standalone: false,\n name: \"extraItemProperties\"\n})\nexport class ExtraItemPropertiesPipe implements PipeTransform {\n transform(items: any[], properties: IExtraProperties, params: any = {}): any[] {\n const keys = Object.keys(properties);\n keys.forEach(key => {\n const value = properties[key];\n properties[key] = ObjectUtils.isFunction(value) ? value : (item, index, params) => {\n return ObjectUtils.evaluate(value, {\n item: item,\n index: index,\n params: params\n });\n };\n });\n return (items || []).map((item, index) => keys.reduce((result, key) => {\n result[key] = properties[key](item, index, params);\n return result;\n }, {...item}));\n }\n}\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: \"filter\"\n})\nexport class FilterPipe implements PipeTransform {\n transform(values: any, filter: any = defaultFilter, params: any = {}): any {\n const isObject = ObjectUtils.isObject(values);\n if (!isObject && !ObjectUtils.isArray(values)) return [];\n const filterFunc = ObjectUtils.isFunction(filter) ? filter : (value, key, params, values) => {\n const index = key;\n return ObjectUtils.evaluate(filter, {value, key, params, values, index});\n };\n if (isObject) {\n return Object.keys(values).filter(key => {\n return filterFunc(values[key], key, params, values);\n }).reduce((result, key) => {\n result[key] = values[key];\n return result;\n }, {})\n }\n return values.filter((value, key) => {\n return filterFunc(value, key, params, values);\n });\n }\n}\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: \"find\"\n})\nexport class FindPipe implements PipeTransform {\n transform(values: any[], filter: any = defaultFilter, params?: any): any {\n if (!ObjectUtils.isArray(values)) return [];\n params = params || {};\n if (ObjectUtils.isObject(params)) {\n params.values = values;\n }\n const filterFunc = ObjectUtils.isFunction(filter) ? filter : (value, index, params, values) => {\n return ObjectUtils.evaluate(filter, {value, index, params, values});\n };\n return values.find((value, index) => filterFunc(value, index, params, values));\n }\n}\n","import {Pipe, PipeTransform} from \"@angular/core\";\nimport {FormatterService} from \"../services/formatter.service\";\n\n@Pipe({\n standalone: false,\n name: \"formatNumber\"\n})\nexport class FormatNumberPipe implements PipeTransform {\n\n constructor(private formatter: FormatterService) {\n }\n\n transform(value: number, format?: string, precision?: number, divider?: number): string {\n return this.formatter.formatNumber(value, format, precision, divider);\n }\n}\n","import {Pipe, PipeTransform} from \"@angular/core\";\nimport {ObjectUtils} from \"../utils/object.utils\";\n\n@Pipe({\n standalone: false,\n name: \"getOffset\"\n})\nexport class GetOffsetPipe implements PipeTransform {\n transform(value: any, offset: any): any {\n return value ? (ObjectUtils.isNullOrUndefined(offset) ? value : value[offset]) : null;\n }\n}\n","import {Pipe, PipeTransform} from \"@angular/core\";\nimport {ObjectUtils} from \"../utils/object.utils\";\n\n@Pipe({\n standalone: false,\n name: \"getType\"\n})\nexport class GetTypePipe implements PipeTransform {\n transform(value: any): any {\n return ObjectUtils.getType(value);\n }\n}\n","import {Pipe, PipeTransform} from \"@angular/core\";\nimport {ObjectUtils} from \"../utils/object.utils\";\n\n@Pipe({\n standalone: false,\n name: \"getValue\"\n})\nexport class GetValuePipe implements PipeTransform {\n\n transform(value: any, path: string, defaultVal: any = \"\"): any {\n return !value ? value : ObjectUtils.getValue(value, path, defaultVal);\n }\n}\n","import {OnDestroy, OnInit, Pipe, PipeTransform, TemplateRef} from \"@angular/core\";\nimport {Subscription} from \"rxjs\";\nimport {GlobalTemplateService} from \"../services/global-template.service\";\n\n@Pipe({\n standalone: false,\n pure: false,\n name: \"globalTemplate\"\n})\nexport class GlobalTemplatePipe implements PipeTransform, OnInit, OnDestroy {\n\n protected templatesUpdated: Subscription;\n\n protected cachedTemplateId: string;\n protected cachedTemplate: TemplateRef<any>;\n\n constructor(protected globalTemplates: GlobalTemplateService) {\n this.cachedTemplateId = null;\n this.cachedTemplate = null;\n }\n\n ngOnInit(): void {\n this.templatesUpdated = this.globalTemplates.templatesUpdated.subscribe(() => {\n this.cachedTemplate = null;\n });\n }\n\n ngOnDestroy(): void {\n if (this.templatesUpdated)\n this.templatesUpdated.unsubscribe();\n }\n\n transform(templateId: string, component?: any): TemplateRef<string> {\n if (!templateId) return null;\n if (this.cachedTemplate === null || this.cachedTemplateId !== templateId) {\n this.cachedTemplateId = templateId;\n this.cachedTemplate = this.globalTemplates.get(templateId, component);\n }\n return this.cachedTemplate;\n }\n}\n","import {Pipe, PipeTransform} from \"@angular/core\";\nimport {IGroupMap} from \"../common-types\";\nimport {ObjectUtils} from \"../utils/object.utils\";\n\n@Pipe({\n standalone: false,\n name: \"groupBy\"\n})\nexport class GroupByPipe implements PipeTransform {\n\n transform(records: ReadonlyArray<any>, column: string, map: IGroupMap = null): any {\n const groups = (records || []).reduce((result: any, item: any) => {\n const key = ObjectUtils.getValue(item, column) || \"\";\n const col = map ? (map[key] || \"\") : key;\n const group: any[] = result[col] || [];\n group.push(item);\n result[col] = group;\n return result;\n }, {});\n return Object.keys(groups).map(key => {\n return {group: key, items: groups[key]};\n });\n }\n}\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\";\nimport {ObjectUtils} from \"../utils/object.utils\";\n\n@Pipe({\n standalone: false,\n name: \"isType\"\n})\nexport class IsTypePipe implements PipeTransform {\n transform(value: any, type: string): any {\n return ObjectUtils.getType(value) === type;\n }\n}\n","import {Pipe, PipeTransform} from \"@angular/core\";\nimport {ObjectUtils} from \"../utils/object.utils\";\n\n@Pipe({\n standalone: false,\n name: \"join\"\n})\nexport class JoinPipe implements PipeTransform {\n\n transform(value: any, separator: string = \", \"): string {\n return (ObjectUtils.isArray(value))\n ? value.join(separator)\n : \"\";\n }\n}\n","import {Pipe, PipeTransform} from \"@angular/core\";\nimport {ObjectUtils} from \"../utils/object.utils\";\n\nconst emptyKeys: any[] = [];\n\n@Pipe({\n standalone: false,\n name: \"keys\"\n})\nexport class KeysPipe implements PipeTransform {\n\n transform(value: any): any[] {\n if (!value) return emptyKeys;\n return ObjectUtils.isArray(value)\n ? Array.from(value.keys())\n : Object.keys(value);\n }\n}\n","import {Pipe, PipeTransform} from \"@angular/core\";\nimport {ObjectUtils} from \"../utils/object.utils\";\n\nexport function defaultMapper(item) {\n return item;\n}\n\n@Pipe({\n standalone: false,\n name: \"map\"\n})\nexport class MapPipe implements PipeTransform {\n transform(values: any[], mapper: any = defaultMapper, params: any = {}): any[] {\n if (!ObjectUtils.isArray(values)) return [];\n const mapperFunc = ObjectUtils.isFunction(mapper) ? mapper : (value, index, params) => {\n return ObjectUtils.evaluate(mapper, {\n value: value,\n index: index,\n params: params\n });\n };\n return values.map((value, index) => mapperFunc(value, index, params));\n }\n}\n","import {Pipe, PipeTransform} from \"@angular/core\";\nimport {ObjectUtils} from \"../utils/object.utils\";\nimport {ArrayUtils} from \"../utils/array.utils\";\n\n@Pipe({\n standalone: false,\n name: \"max\"\n})\nexport class MaxPipe implements PipeTransform {\n transform(value: any[], selector: any = null, params: any = {}): number {\n selector = selector || (item => <number>item);\n const maxSelector: Function = ObjectUtils.isFunction(value) ? value : (item, index, params) => {\n return ObjectUtils.evaluate(selector, {\n item: item,\n index: index,\n params: params\n });\n };\n return ArrayUtils.max(value, (item, index) => maxSelector(item, index, params));\n }\n}\n","import {Pipe, PipeTransform} from \"@angular/core\";\nimport {ObjectUtils} from \"../utils/object.utils\";\nimport {ArrayUtils} from \"../utils/array.utils\";\n\n@Pipe({\n standalone: false,\n name: \"min\"\n})\nexport class MinPipe implements PipeTransform {\n transform(value: any, selector: any = null, params: any = {}): number {\n selector = selector || (item => <number>item);\n const minSelector: Function = ObjectUtils.isFunction(value) ? value : (item, index, params) => {\n return ObjectUtils.evaluate(selector, {\n item: item,\n index: index,\n params: params\n });\n };\n return ArrayUtils.min(value, (item, index) => minSelector(item, index, params));\n }\n}\n","import {Pipe, PipeTransform} from \"@angular/core\";\n\n@Pipe({\n standalone: false,\n name: \"pop\"\n})\nexport class PopPipe implements PipeTransform {\n\n transform(value: any[]): any {\n return !Array.isArray(value) ? null : Array.from(value).pop();\n }\n}\n","import {Pipe, PipeTransform} from \"@angular/core\";\nimport {ObjectUtils} from \"../utils/object.utils\";\n\nexport function defaultReducer(result) {\n return result;\n}\n\n@Pipe({\n standalone: false,\n name: \"reduce\"\n})\nexport class ReducePipe implements PipeTransform {\n transform(values: any[], source: any, reducer: any = defaultReducer, params: any = {}): any {\n if (!ObjectUtils.isArray(values)) return [];\n const mapperFunc = ObjectUtils.isFunction(reducer) ? reducer : (result, value, index, params) => {\n return ObjectUtils.evaluate(reducer, {\n result: result,\n value: value,\n index: index,\n params: params\n });\n };\n return values.reduce((result, value, index) => mapperFunc(result, value, index, params), source);\n }\n}\n","import {Pipe, PipeTransform} from \"@angular/core\";\nimport {ObjectUtils} from \"../utils/object.utils\";\n\nconst empty: any = {};\n\n@Pipe({\n standalone: false,\n name: \"remap\"\n})\nexport class RemapPipe implements PipeTransform {\n\n transform(map: any, source: any, defaultValue: string = \"key\"): any {\n if (!map) return empty;\n if (!source) return map;\n const remapped = ObjectUtils.filter({map: ObjectUtils.copy(map)}, (value, key, target) => {\n if (ObjectUtils.isArray(value) && value.every(ObjectUtils.isString)) {\n target[key] = value.reduce((result, k) => {\n result[k] = ObjectUtils.getValue(source, k, ObjectUtils.evaluate(defaultValue, {key: k, map: map, source: source}));\n return result;\n }, {});\n return false;\n }\n return true;\n });\n return remapped.map;\n }\n}\n","import {Pipe, PipeTransform} from \"@angular/core\";\nimport {ObjectUtils} from \"../utils/object.utils\";\n\n@Pipe({\n standalone: false,\n name: \"replace\"\n})\nexport class ReplacePipe implements PipeTransform {\n transform(value: string, from: string | RegExp, to: string): string {\n return ObjectUtils.isDefined(value) ? `${value}`.replace(from, to) : ``;\n }\n}\n","import {Pipe, PipeTransform} from \"@angular/core\";\nimport {ObjectUtils} from \"../utils/object.utils\";\n\nconst emptyArray: any[] = [];\n\n@Pipe({\n standalone: false,\n name: \"reverse\"\n})\nexport class ReversePipe implements PipeTransform {\n\n transform(value: any[]): any[] {\n if (!ObjectUtils.isArray(value)) return emptyArray;\n const result = [];\n for (let i = value.length - 1; i >= 0; i--) {\n result.push(value[i]);\n }\n return result;\n }\n}\n","import {Pipe, PipeTransform} from \"@angular/core\";\nimport {FormatterService} from \"../services/formatter.service\";\n\n@Pipe({\n standalone: false,\n name: \"round\"\n})\nexport class RoundPipe implements PipeTransform {\n\n constructor(private formatter: FormatterService) {\n }\n\n transform(value: number, precision: number = 2, divider: number = 1): number {\n return this.formatter.roundNumber(value, precision, divider);\n }\n}\n","import {Pipe, PipeTransform} from \"@angular/core\";\nimport {DomSanitizer, SafeHtml} from \"@angular/platform-browser\";\n\n@Pipe({\n standalone: false,\n name: \"safe\"\n})\nexport class SafeHtmlPipe implements PipeTransform {\n\n constructor(private sanitizer: DomSanitizer) {\n\n }\n\n transform(value: string, type: string = \"html\"): SafeHtml {\n switch (type) {\n case \"html\":\n return this.sanitizer.bypassSecurityTrustHtml(value);\n case \"style\":\n return this.sanitizer.bypassSecurityTrustStyle(value);\n case \"script\":\n return this.sanitizer.bypassSecurityTrustScript(value);\n case \"url\":\n return this.sanitizer.bypassSecurityTrustUrl(value);\n case \"resourceUrl\":\n return this.sanitizer.bypassSecurityTrustResourceUrl(value);\n default:\n throw new Error(`SafePipe unable to bypass security for invalid type: ${type}`);\n }\n }\n}\n","import {Pipe, PipeTransform} from \"@angular/core\";\n\n@Pipe({\n standalone: false,\n name: \"shift\"\n})\nexport class ShiftPipe implements PipeTransform {\n\n transform(value: any[]): any {\n return !Array.isArray(value) ? null : Array.from(value).shift();\n }\n}\n","import {Pipe, PipeTransform} from \"@angular/core\";\n\n@Pipe({\n standalone: false,\n name: \"split\"\n})\nexport class SplitPipe implements PipeTransform {\n\n transform(value: any, separator: string = \".\"): any[] {\n return `${value}`.split(separator);\n }\n}\n","import {Pipe} from \"@angular/core\";\nimport {AsyncPipe} from \"@angular/common\";\nimport {isObservable, Observable} from \"rxjs\";\n\n@Pipe({\n standalone: false,\n pure: false,\n name: \"syncAsync\"\n})\nexport class SyncAsyncPipe extends AsyncPipe {\n\n transform<T = any>(value: T | Promise<T> | Observable<T>): T {\n return isObservable(value) || (value instanceof Promise)\n ? super.transform(value)\n : value as T;\n }\n}\n","import {ChangeDetectorRef, Inject, Injectable, Pipe, PipeTransform} from \"@angular/core\";\nimport {ILanguageService, ITranslations, TranslationQuery} from \"../common-types\";\nimport {ObjectUtils} from \"../utils/object.utils\";\nimport {LANGUAGE_SERVICE} from \"../tokens\";\n\n@Injectable()\n@Pipe({\n standalone: false,\n name: \"translate\",\n pure: false\n})\nexport class TranslatePipe implements PipeTransform {\n\n private dictionary: ITranslations;\n private enabled: boolean;\n private query: TranslationQuery;\n private args: any[];\n private params: any;\n private lastValue: string;\n\n get currentLang(): string {\n return this.language.currentLanguage\n }\n\n constructor(readonly cdr: ChangeDetectorRef, @Inject(LANGUAGE_SERVICE) readonly language: ILanguageService) {\n\n }\n\n transform(query: TranslationQuery, ...args: any[]): string {\n if (!query) return \"\";\n let dirty = false;\n const dictionary = this.language.dictionary;\n if (this.dictionary !== dictionary) {\n this.dictionary = dictionary;\n dirty = true;\n }\n const enabled = this.language.enableTranslations;\n if (this.enabled !== enabled) {\n this.enabled = enabled;\n dirty = true;\n }\n if (!ObjectUtils.equals(this.query, query)) {\n this.query = query;\n dirty = true;\n }\n if (!ObjectUtils.equals(this.args, args)) {\n this.args = args;\n this.params = null;\n if (ObjectUtils.isDefined(args[0]) && args.length) {\n if (typeof args[0] === \"string\" && args[0].length) {\n const validArgs: string = args[0]\n .replace(/(\\')?([a-zA-Z0-9_]+)(\\')?(\\s)?:/g, `\"$2\":`)\n .replace(/:(\\s)?(\\')(.*?)(\\')/g, `:\"$3\"`);\n try {\n this.params = JSON.parse(validArgs);\n } catch (e) {\n throw new SyntaxError(`Wrong parameter in TranslatePipe. Expected a valid Object, received: ${args[0]}`);\n }\n } else if (typeof args[0] === \"object\" && !Array.isArray(args[0])) {\n this.params = args[0];\n }\n }\n dirty = true;\n }\n if (dirty) {\n if (typeof query === \"object\") {\n this.lastValue = Array.isArray(query)\n ? this.language.getTranslationFromArray(query, this.params)\n : this.language.getTranslationFromObject(query, this.params);\n return this.lastValue;\n }\n this.lastValue = this.language.getTranslationSync(query, this.params);\n this.language.getTranslation(query, this.params).then(value => {\n this.lastValue = value;\n if (!this.cdr[\"destroyed\"]) {\n this.cdr.detectChanges();\n }\n });\n }\n return this.lastValue;\n }\n}\n","import {Pipe, PipeTransform} from \"@angular/core\";\nimport {ObjectUtils} from \"../utils/object.utils\";\n\nconst emptyValues: any[] = [];\n\n@Pipe({\n standalone: false,\n name: \"values\"\n})\nexport class ValuesPipe implements PipeTransform {\n\n transform(value: any): any[] {\n if (!value) return emptyValues;\n return ObjectUtils.isArray(value)\n ? value\n : Object.keys(value).map(key => value[key]);\n }\n}\n","import {\n ChangeDetectorRef,\n Directive,\n effect,\n ElementRef,\n HostListener,\n inject,\n input,\n OnChanges,\n output,\n signal, untracked\n} from \"@angular/core\";\nimport {AsyncMethod, IAsyncMessage} from \"../common-types\";\nimport {TOASTER_SERVICE} from \"../tokens\";\nimport {computedPrevious} from \"../utils/signal-utils\";\nimport {switchClass} from \"../utils/misc\";\n\n@Directive({\n standalone: false,\n selector: \"[__asmb__]\"\n})\nexport class AsyncMethodBase<T extends AsyncMethod = AsyncMethod> implements OnChanges {\n\n readonly disabled = signal(false);\n readonly context = input<any>({});\n\n readonly onSuccess = output<IAsyncMessage>();\n readonly onError = output<IAsyncMessage>();\n readonly toaster = inject(TOASTER_SERVICE);\n readonly cdr = inject(ChangeDetectorRef);\n readonly element = inject<ElementRef<HTMLElement>>(ElementRef);\n\n readonly loading = signal(false);\n readonly target = signal(this.element.nativeElement);\n readonly previousTarget = computedPrevious(this.target);\n\n constructor() {\n effect(() => {\n const target = this.target();\n if (!target) return;\n switchClass(target, \"async-target\", true);\n switchClass(target, \"disabled\", this.disabled());\n switchClass(target, \"loading\", this.loading());\n });\n effect(() => {\n const previous = this.previousTarget();\n if (!previous) return;\n switchClass(previous, \"async-target\", false);\n switchClass(previous, \"disabled\", false);\n switchClass(previous, \"loading\", false);\n });\n }\n\n ngOnChanges(): void {\n this.cdr.detectChanges();\n }\n\n @HostListener(\"click\", [\"$event\"])\n onClick(ev: MouseEvent) {\n return this.handleClick(ev);\n }\n\n callMethod(ev?: MouseEvent): boolean {\n if (this.loading()) return true;\n this.loading.set(true);\n const method = this.getMethod();\n const result = !method ? null : method(...this.getArgs(ev));\n if (!(result instanceof Promise)) {\n this.loading.set(false);\n return false;\n }\n result.then(msg => {\n this.loading.set(false);\n if (msg) {\n this.onSuccess.emit(msg);\n this.toaster.success(msg.message, msg.context);\n }\n }, reason => {\n if (!reason || !reason.message)\n throw new Error(\"Reason must implement IAsyncMessage interface\");\n this.loading.set(false);\n this.onError.emit(reason);\n this.toaster.error(reason.message, reason.context);\n }).finally(() => {\n if (!this.cdr[\"destroyed\"]) {\n this.cdr.detectChanges();\n }\n });\n return true;\n }\n\n protected handleClick(ev: MouseEvent): boolean {\n ev?.preventDefault();\n if (this.disabled()) return true;\n this.callMethod(ev);\n return true;\n }\n\n protected getMethod(): T {\n return null;\n }\n\n protected getArgs(ev: MouseEvent): unknown[] {\n return untracked(() => [this.context(), ev]);\n }\n}\n","import {Directive, input, untracked} from \"@angular/core\";\nimport {AsyncMethod} from \"../common-types\";\nimport {AsyncMethodBase} from \"./async-method.base\";\n\n@Directive({\n standalone: false,\n selector: \"[async-method]\",\n exportAs: \"async-method\",\n providers: [\n {provide: AsyncMethodBase, useExisting: AsyncMethodDirective}\n ]\n})\nexport class AsyncMethodDirective extends AsyncMethodBase {\n\n readonly method = input<AsyncMethod>(null, {alias: \"async-method\"});\n\n protected getMethod() {\n return untracked(() => this.method());\n }\n}\n","import {Directive, ElementRef, Optional} from \"@angular/core\";\nimport {AsyncMethodBase} from \"./async-method.base\";\nimport {switchClass} from \"../utils/misc\";\n\n@Directive({\n standalone: false,\n selector: \"[async-method-target]\"\n})\nexport class AsyncMethodTargetDirective {\n\n constructor(protected element: ElementRef,\n @Optional() protected asyncMethod: AsyncMethodBase) {\n if (!asyncMethod) {\n switchClass(this.element.nativeElement, \"async-target\", true);\n return;\n }\n asyncMethod.target.set(element.nativeElement);\n }\n\n}\n","import {Directive, ElementRef, Input, OnChanges, Renderer2, SimpleChanges} from \"@angular/core\";\nimport {HttpClient} from \"@angular/common/http\";\nimport {FileUtils} from \"../utils/file.utils\";\nimport {UniversalService} from \"../services/universal.service\";\n\nconst defaultClass = \"default-image\";\nconst loadingClass = \"loading-image\";\n\n@Directive({\n standalone: false,\n selector: \"[background]\"\n})\nexport class BackgroundDirective implements OnChanges {\n\n @Input() background: string;\n @Input() backgroundSize: string;\n\n constructor(private http: HttpClient, private element: ElementRef, private renderer: Renderer2, private universal: UniversalService) {\n\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.universal.isServer) {\n this.setBackground(this.background);\n return;\n }\n this.renderer.removeClass(this.element.nativeElement, defaultClass);\n this.renderer.addClass(this.element.nativeElement, loadingClass);\n FileUtils.readDataFromUrl(this.http, this.background).then(url => {\n this.setBackground(url);\n }, () => {\n this.renderer.removeClass(this.element.nativeElement, loadingClass);\n this.renderer.addClass(this.element.nativeElement, defaultClass);\n });\n }\n\n private setBackground(url: string): void {\n this.renderer.removeClass(this.element.nativeElement, loadingClass);\n this.renderer.setStyle(this.element.nativeElement, \"background-image\", `url('${url}')`);\n if (!this.backgroundSize) return;\n this.renderer.setStyle(this.element.nativeElement, \"background-size\", this.backgroundSize);\n }\n}\n","import {Directive, Input, ViewContainerRef, OnChanges, SimpleChanges, ComponentRef, OnDestroy} from \"@angular/core\";\nimport {ComponentLoaderService} from \"../services/component-loader.service\";\n\n@Directive({\n standalone: false,\n selector: \"[loadComponent]\"\n})\nexport class ComponentLoaderDirective implements OnChanges, OnDestroy {\n\n @Input() module: string;\n @Input(\"loadComponent\") selector: string;\n\n private cr: ComponentRef<any>;\n\n constructor(private vcr: ViewContainerRef, private loader: ComponentLoaderService) {\n\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this.module || !this.selector) return;\n this.ngOnDestroy();\n this.loader.getComponentType({\n moduleId: this.module,\n selector: this.selector\n }).then(type => {\n this.cr = this.vcr.createComponent(type);\n this.cr.changeDetectorRef.markForCheck();\n this.cr.changeDetectorRef.detectChanges();\n });\n }\n\n ngOnDestroy(): void {\n if (!this.cr) return;\n this.cr.destroy();\n const index = this.vcr.indexOf(this.cr.hostView);\n if (index >= 0) {\n this.vcr.remove(index);\n }\n this.cr.hostView.destroy();\n }\n}\n","import {Directive, Input, TemplateRef} from \"@angular/core\";\nimport {ITableTemplate} from \"../common-types\";\n\n@Directive({\n standalone: false,\n selector: \"ng-template[column]\"\n})\n\nexport class DynamicTableTemplateDirective implements ITableTemplate {\n\n @Input() column: string | string[];\n @Input() pure: boolean;\n\n constructor(readonly ref: TemplateRef<any>) {\n }\n}\n","import {Directive, Input, OnDestroy, OnInit, TemplateRef} from \"@angular/core\";\nimport {GlobalTemplateService} from \"../services/global-template.service\";\n\n@Directive({\n standalone: false,\n selector: \"[globalTemplate]\"\n})\nexport class GlobalTemplateDirective implements OnInit, OnDestroy {\n\n @Input(\"globalTemplate\") id: string;\n\n constructor(readonly globalTemplates: GlobalTemplateService,\n readonly template: TemplateRef<any>) {\n\n }\n\n ngOnInit(): void {\n this.globalTemplates.add(this.id, this.template);\n }\n\n ngOnDestroy(): void {\n this.globalTemplates.remove(this.id);\n }\n}\n","import {\n Directive,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n SimpleChanges\n} from \"@angular/core\";\nimport {Subscription} from \"rxjs\";\nimport {IIconService} from \"../common-types\";\nimport {ICON_SERVICE} from \"../tokens\";\n\n@Directive({\n standalone: false,\n selector: \"i[icon],b[icon],p[icon],span[icon],a[icon],h1[icon],h2[icon],h3[icon],h4[icon]\"\n})\nexport class IconDirective implements OnChanges, OnInit, OnDestroy {\n\n @Input() icon: string;\n @Input() activeIcon: string;\n @Input() active: boolean;\n @Output() activeChange: EventEmitter<boolean>;\n\n @HostBinding(\"class.active\")\n get isActive() {\n return this.active;\n }\n\n protected iconsLoaded: Subscription;\n\n constructor(private element: ElementRef, private renderer: Renderer2, @Inject(ICON_SERVICE) private icons: IIconService) {\n this.renderer.addClass(this.element.nativeElement, \"svg-icon\");\n this.activeChange = new EventEmitter<boolean>();\n }\n\n ngOnInit(): void {\n this.iconsLoaded = this.icons.iconsLoaded.subscribe(() => this.changeIcon());\n }\n\n ngOnDestroy(): void {\n if (this.iconsLoaded)\n this.iconsLoaded.unsubscribe();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.icon) {\n this.renderer.removeClass(this.element.nativeElement, `svg-icon-${changes.icon.previousValue}`);\n this.renderer.addClass(this.element.nativeElement, `svg-icon-${changes.icon.currentValue}`);\n }\n this.changeIcon();\n }\n\n @HostListener(\"click\")\n click(): void {\n this.active = !this.active;\n this.activeChange.emit(this.active);\n this.changeIcon();\n }\n\n private changeIcon(): void {\n this.icons.getIcon(this.icon, this.activeIcon || `${this.icon}-active`, this.active).then(icon => {\n if (this.icons.isDisabled) return;\n this.element.nativeElement.innerHTML = icon;\n });\n }\n}\n","import {\n Directive, DoCheck,\n EmbeddedViewRef,\n Input,\n OnChanges,\n SimpleChange,\n SimpleChanges,\n TemplateRef,\n ViewContainerRef\n} from \"@angular/core\";\nimport {ObjectUtils} from \"../utils/object.utils\";\n\n@Directive({\n standalone: false,\n selector: \"[ngxTemplateOutlet]\"\n})\nexport class NgxTemplateOutletDirective implements OnChanges, DoCheck {\n\n private viewRef: EmbeddedViewRef<any>;\n\n @Input() public context: Object;\n @Input() public additionalContext: Object;\n @Input() public ngxTemplateOutlet: TemplateRef<any>;\n\n private static hasContextShapeChanged(ctxChange: SimpleChange): boolean {\n const prevCtxKeys = Object.keys(ctxChange.previousValue || {});\n const currCtxKeys = Object.keys(ctxChange.currentValue || {});\n\n if (prevCtxKeys.length === currCtxKeys.length) {\n for (const propName of currCtxKeys) {\n if (prevCtxKeys.indexOf(propName) === -1) {\n return true;\n }\n }\n return false;\n } else {\n return true;\n }\n }\n\n constructor(private _viewContainerRef: ViewContainerRef) {}\n\n ngOnChanges(changes: SimpleChanges) {\n const recreateView = this.shouldRecreateView(changes);\n if (recreateView) {\n if (this.viewRef)\n this._viewContainerRef.remove(this._viewContainerRef.indexOf(this.viewRef));\n if (this.ngxTemplateOutlet)\n this.viewRef = this._viewContainerRef.createEmbeddedView(this.ngxTemplateOutlet, {});\n }\n this.ngDoCheck();\n }\n\n ngDoCheck(): void {\n if (!this.viewRef) return;\n const context = this.viewRef.context;\n this.updateExistingContext(this.context, context);\n this.updateExistingContext(this.additionalContext, context);\n context.$implicit = context;\n }\n\n private shouldRecreateView(changes: SimpleChanges): boolean {\n const ctxChange = changes[\"context\"];\n const aCtxChange = changes[\"additionalContext\"];\n return !!changes[\"ngxTemplateOutlet\"]\n || (ctxChange && NgxTemplateOutletDirective.hasContextShapeChanged(ctxChange))\n || (aCtxChange && NgxTemplateOutletDirective.hasContextShapeChanged(aCtxChange));\n }\n\n private updateExistingContext(ctx: any, context: any): void {\n if (!ctx) return;\n let ctxProto = Object.getPrototypeOf(ctx);\n if (ctxProto == Object.prototype) {\n ctxProto = ctx;\n }\n const props = Object.getOwnPropertyNames(ctxProto);\n for (const propName of props) {\n const desc = Object.getOwnPropertyDescriptor(ctxProto, propName);\n // Copy if its a getter and it is not $implicit\n if (desc.get && propName !== \"$implicit\") {\n Object.defineProperty(context, propName, desc);\n continue;\n }\n const func: Function = ObjectUtils.isFunction(desc.value) ? desc.value.bind(ctx) : null;\n if (func && func !== ctxProto.constructor) {\n context[propName] = func;\n }\n }\n for (const propName of Object.keys(ctx)) {\n\n const desc = Object.getOwnPropertyDescriptor(ctxProto, propName);\n if (desc && desc.get && !desc.set) continue;\n context[propName] = ctx[propName];\n }\n }\n}\n","import {\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n NgZone,\n OnChanges,\n Output,\n Renderer2,\n SimpleChanges\n} from \"@angular/core\";\nimport {IPaginationData, ITimer, PaginationDataLoader, PaginationItemContext} from \"../common-types\";\nimport {TimerUtils} from \"../utils/timer.utils\";\n\n@Directive({\n standalone: false,\n selector: \"[pagination]\",\n exportAs: \"pagination\"\n})\nexport class PaginationDirective implements OnChanges {\n\n get total(): number {\n return this.data ? this.data.total : 0;\n }\n\n get items(): any[] {\n return this.data ? this.data.items : [];\n }\n\n @Input(\"pagination\") loader: PaginationDataLoader;\n @Input() page: number;\n @Input() itemsPerPage: number;\n @Input() updateTime: number;\n @Input() waitFor: Promise<any>;\n\n @Output() pageChange: EventEmitter<number>;\n @Output() onRefresh: EventEmitter<PaginationDirective>;\n\n maxPage: number;\n\n private data: IPaginationData;\n private updateTimer: ITimer;\n\n constructor(readonly zone: NgZone, readonly renderer: Renderer2, readonly element: ElementRef) {\n this.pageChange = new EventEmitter<number>();\n this.onRefresh = new EventEmitter<PaginationDirective>();\n this.updateTimer = TimerUtils.createTimeout(() => this.loadData(), this.updateTime);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!changes.loader && !changes.itemsPerPage && !changes.page) return;\n this.page = isNaN(this.page) || this.page < 1 ? 1 : this.page;\n this.itemsPerPage = isNaN(this.itemsPerPage) || this.itemsPerPage < 1 ? 20 : this.itemsPerPage;\n this.waitFor = this.waitFor || Promise.resolve(true);\n this.refresh();\n }\n\n refresh(time?: number): void {\n time = isNaN(time) || time <= 0 ? this.updateTime : time;\n this.updateTimer.time = isNaN(time) || time <= 0 ? 100 : time;\n Promise.resolve(this.waitFor).then(() => {\n this.updateTimer.run();\n });\n }\n\n paginate(page: number): void {\n this.page = page;\n this.pageChange.emit(page);\n this.refresh();\n }\n\n private loadData(): void {\n if (!this.loader) return;\n this.renderer.addClass(this.element.nativeElement, \"loading\");\n this.loader(this.page, this.itemsPerPage).then(data => {\n this.maxPage = !data || data.total <= 0 ? 1 : Math.floor((data.total - 1) / this.itemsPerPage) + 1;\n this.data = data;\n const baseIndex = (this.page - 1) * this.itemsPerPage;\n const items = (data.items || []);\n data.items = items.map((item, index) => {\n const ix = baseIndex + index;\n return item instanceof PaginationItemContext\n ? item\n : new PaginationItemContext(item, items, items.length, index, ix);\n });\n if (this.page > this.maxPage) {\n this.paginate(this.maxPage);\n return;\n }\n this.zone.run(() => {\n this.renderer.removeClass(this.element.nativeElement, \"loading\");\n this.onRefresh.emit(this)\n });\n });\n }\n}\n","import {Directive, OnDestroy, OnInit, TemplateRef, ViewContainerRef} from \"@angular/core\";\nimport {Subscription} from \"rxjs\";\nimport {PaginationDirective} from \"./pagination.directive\";\n\n@Directive({\n standalone: false,\n selector: \"[paginationItem]\"\n})\nexport class PaginationItemDirective implements OnInit, OnDestroy {\n\n private onRefresh: Subscription;\n\n constructor(private pagination: PaginationDirective, private viewContainer: ViewContainerRef, private templateRef: TemplateRef<any>) {\n\n }\n\n ngOnInit(): void {\n this.onRefresh = this.pagination.onRefresh.subscribe(() => this.renderView());\n }\n\n ngOnDestroy(): void {\n this.onRefresh.unsubscribe();\n }\n\n private renderView(): void {\n this.viewContainer.clear();\n this.pagination.items.forEach((item: any, ix: number) => {\n item.$implicit = item;\n item.rowIndex = ix;\n this.viewContainer.createEmbeddedView(this.templateRef, item);\n });\n }\n}\n","import {Directive, ViewContainerRef, TemplateRef, Input} from \"@angular/core\";\nimport {HttpClient} from \"@angular/common/http\";\nimport {ResourceIfContext} from \"../common-types\";\nimport {FileUtils} from \"../utils/file.utils\";\nimport {UniversalService} from \"../services/universal.service\";\n\n@Directive({\n standalone: false,\n selector: \"[resourceIf]\",\n exportAs: \"resourceIf\"\n})\nexport class ResourceIfDirective {\n\n private context: ResourceIfContext;\n private resource: string;\n\n @Input()\n set resourceIf(resource: string) {\n this.resource = resource;\n this.renderView();\n }\n\n get resourceIf(): string {\n return this.resource;\n }\n\n get url(): string {\n return this.context.url;\n }\n\n constructor(private http: HttpClient, private viewContainer: ViewContainerRef, private templateRef: TemplateRef<any>, private universal: UniversalService) {\n this.context = new ResourceIfContext();\n }\n\n private renderView(): void {\n this.context = new ResourceIfContext();\n this.context.resource = this.resource;\n this.viewContainer.clear();\n if (this.universal.isBrowser && this.resource) {\n FileUtils.readDataFromUrl(this.http, this.resource).then(url => {\n this.context.url = url;\n this.viewContainer.createEmbeddedView(this.templateRef, this.context);\n }, console.log);\n }\n }\n}\n","import {ChangeDetectorRef, Directive, ElementRef, HostBinding, HostListener, OnDestroy, OnInit} from \"@angular/core\";\nimport {Subscription} from \"rxjs\";\nimport {ITimer} from \"../common-types\";\nimport {TimerUtils} from \"../utils/timer.utils\";\nimport {EventsService} from \"../services/events.service\";\n\n@Directive({\n standalone: false,\n selector: \"[sticky]\"\n})\nexport class StickyDirective implements OnInit, OnDestroy {\n\n @HostBinding(\"class.sticky\") isSticky: boolean;\n @HostBinding(\"class.sticky-update\") isUpdating: boolean;\n parentElement: HTMLElement;\n\n private updateTimer: ITimer;\n private eventForwarded: Subscription;\n\n constructor(private cdr: ChangeDetectorRef, private events: EventsService, private element: ElementRef) {\n this.parentElement = this.element.nativeElement.parentElement;\n this.updateTimer = TimerUtils.createTimeout(() => {\n this.isUpdating = false;\n this.cdr.detectChanges();\n this.events.updateSticky(this.isSticky);\n }, 10);\n }\n\n ngOnInit(): void {\n this.eventForwarded = this.events.eventForwarded.subscribe((e: Event) => {\n if (e && e.type === \"scroll\") this.updateSticky();\n });\n }\n\n ngOnDestroy(): void {\n this.eventForwarded.unsubscribe();\n }\n\n @HostListener(\"window:resize\")\n @HostListener(\"window:scroll\")\n updateSticky(): void {\n const distanceToTop = this.parentElement.getBoundingClientRect().top;\n this.isSticky = distanceToTop < 1;\n this.isUpdating = true;\n this.cdr.detectChanges();\n this.updateTimer.run();\n }\n}\n","import {Directive, ElementRef, Input, OnDestroy, OnInit, Renderer2} from \"@angular/core\";\nimport {Subscription} from \"rxjs\";\nimport {EventsService} from \"../services/events.service\";\n\n@Directive({\n standalone: false,\n selector: \"[stickyClass]\"\n})\nexport class StickyClassDirective implements OnInit, OnDestroy {\n\n @Input() stickyClass: string;\n\n private stickyUpdated: Subscription;\n\n constructor(private events: EventsService, private element: ElementRef, private renderer: Renderer2) {\n }\n\n ngOnInit(): void {\n this.stickyUpdated = this.events.stickyUpdated.subscribe(() => {\n if (this.events.isSticky) {\n this.renderer.addClass(this.element.nativeElement, this.stickyClass || \"sticky-sibling\");\n return;\n }\n this.renderer.removeClass(this.element.nativeElement, this.stickyClass || \"sticky-sibling\");\n });\n }\n\n ngOnDestroy(): void {\n this.stickyUpdated.unsubscribe();\n }\n}\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\";\nimport {Subscription} from \"rxjs\";\nimport {\n arrow,\n autoPlacement,\n autoUpdate,\n computePosition,\n shift,\n MiddlewareData,\n Placement,\n Middleware, limitShift\n} from \"@floating-ui/dom\";\n\nimport {DropdownDirective} from \"./dropdown.directive\";\nimport {ObservableUtils} from \"../utils/observable.utils\";\nimport {getCssVariables} from \"../utils/misc\";\nimport {ROOT_ELEMENT} from \"../tokens\";\n\nconst rectProps = [\"x\", \"y\", \"width\", \"height\"];\n\ninterface ComputeResult {\n styles: {\n position: \"fixed\" | \"absolute\";\n left: string;\n top: string;\n right: string;\n bottom: string;\n },\n placement: Placement;\n isMobileView: boolean;\n middlewareData?: MiddlewareData;\n}\n\n@Directive({\n standalone: false,\n selector: \"[dropdownContent]\",\n exportAs: \"dropdown-content\",\n})\nexport class DropdownContentDirective implements OnInit, OnDestroy {\n\n protected subscription: Subscription;\n protected attachTo: HTMLElement;\n protected attachOutside: boolean;\n protected lastPlacement: string;\n protected cleanUp: () => void;\n\n constructor(protected vcr: ViewContainerRef,\n @Optional() @Inject(ROOT_ELEMENT) protected rootElem: HTMLElement,\n @Optional() protected dropdown: DropdownDirective,\n @Optional() readonly templateRef: TemplateRef<any>) {\n if (!this.dropdown) {\n throw new Error(\"DropdownDirective is required! Please use it inside a dd, drop-down directive attribute\");\n }\n if (!this.templateRef) {\n throw new Error(\"TemplateRef is required! Please use with *dropdownContent\");\n }\n this.lastPlacement = null;\n }\n\n ngOnInit() {\n this.subscription = ObservableUtils.multiSubscription(\n this.dropdown.onShown.subscribe(() => this.createView()),\n this.dropdown.onHidden.subscribe(() => this.destroyView())\n );\n }\n\n ngOnDestroy() {\n this.subscription?.unsubscribe();\n this.destroyView();\n }\n\n protected createView(init: boolean = false) {\n if (this.dropdown.contentElement) return;\n const mobileWidth = this.dropdown.mobileViewUnder || 0;\n const fixed = this.dropdown.fixed || false;\n const ref = this.dropdown.nativeElement;\n const [content, arrowEl] = this.createWrapper();\n this.dropdown.contentElement = content;\n // Set up floating UI positioning settings\n const middleware: Middleware[] = [];\n if (this.dropdown.autoPlacement) {\n middleware.push(\n shift({\n boundary: this.dropdown.boundary,\n limiter: limitShift()\n }),\n autoPlacement(this.dropdown.autoPlacement),\n );\n }\n middleware.push(\n arrow({element: arrowEl})\n );\n const compute = async (): Promise<ComputeResult> => {\n const isMobileView = window.innerWidth <= mobileWidth;\n if (isMobileView || fixed) {\n return {\n styles: {\n left: \"0px\", top: \"0px\", right: \"0px\", bottom: \"0px\",\n position: \"fixed\",\n },\n placement: \"top\",\n isMobileView\n };\n }\n const {x, y, placement, middlewareData} = await computePosition(\n ref,\n content,\n {\n strategy: \"absolute\",\n placement: this.dropdown.placement || \"bottom\",\n middleware\n }\n );\n\n return {\n styles: {\n left: `${x}px`, top: `${y}px`, right: null, bottom: null,\n position: \"absolute\",\n },\n placement,\n isMobileView,\n middlewareData\n };\n }\n // Set up floating UI auto update\n this.cleanUp = autoUpdate(\n ref,\n content,\n () => {\n compute().then(({styles, placement, isMobileView, middlewareData}) => {\n\n if (middlewareData?.arrow) {\n const {x, y} = middlewareData.arrow;\n Object.assign(arrowEl.style, {\n left: x != null ? `${x}px` : ``,\n top: y != null ? `${y}px` : ``,\n });\n }\n\n Object.assign(content.style, styles, {\n opacity: init ? \"0\" : \"1\",\n zIndex: `var(--dd-z-index, 100)`\n });\n\n const refRect = ref.getBoundingClientRect();\n const contentRect = content.getBoundingClientRect();\n const lastPlacement = this.lastPlacement;\n const newPlacement = `dropdown-placement-${placement}`;\n if (lastPlacement) {\n ref.classList.replace(lastPlacement, newPlacement);\n content.classList.replace(lastPlacement, newPlacement);\n } else {\n ref.classList.add(newPlacement);\n content.classList.add(newPlacement);\n }\n if (isMobileView || fixed) {\n if (!isMobileView) {\n content.classList.add(`dropdown-content-fixed`);\n content.classList.remove(`dropdown-content-mobile`);\n } else {\n content.classList.add(`dropdown-content-mobile`);\n content.classList.remove(`dropdown-content-fixed`);\n }\n content.classList.remove(`dropdown-content-desktop`);\n } else {\n content.classList.add(`dropdown-content-desktop`);\n content.classList.remove(`dropdown-content-mobile`);\n content.classList.remove(`dropdown-content-fixed`);\n }\n rectProps.forEach(prop => {\n content.style.setProperty(`--toggle-${prop}`, `${refRect[prop]}px`);\n ref.style.setProperty(`--content-${prop}`, `${contentRect[prop]}px`);\n });\n this.lastPlacement = newPlacement;\n });\n },\n );\n }\n\n protected destroyView() {\n if (!this.dropdown.contentElement) return;\n this.dropdown.contentElement.remove();\n this.dropdown.contentElement = null;\n this.vcr.clear();\n this.cleanUp?.();\n }\n\n protected whereToAttach(): HTMLElement {\n const target = this.dropdown.attachTo;\n if (target === \"root\" && this.rootElem) {\n return this.rootElem;\n }\n if (target instanceof ElementRef) {\n return target.nativeElement;\n }\n if (target instanceof HTMLElement) {\n return target;\n }\n const anchor = this.vcr.element.nativeElement as HTMLElement;\n return anchor?.parentElement || this.rootElem;\n }\n\n protected createWrapper() {\n const wrapper = document.createElement(\"div\");\n const arrow = document.createElement(\"div\");\n arrow.classList.add(`dropdown-content-arrow`);\n arrow.style.position = `absolute`;\n wrapper.appendChild(arrow);\n const ref = this.vcr.createEmbeddedView(this.templateRef);\n ref.rootNodes.forEach(node => wrapper.appendChild(node));\n ref.detectChanges();\n this.attachTo = this.whereToAttach();\n this.attachTo.appendChild(wrapper);\n this.attachOutside = !this.dropdown.nativeElement?.contains(this.attachTo);\n\n if (this.attachOutside) {\n const referenceStyles = getCssVariables(this.dropdown.nativeElement);\n const wrapperStyles = getCssVariables(wrapper);\n Object.keys(referenceStyles).forEach(key => {\n if (!wrapperStyles[key]) {\n wrapper.style.setProperty(key, referenceStyles[key]);\n }\n });\n }\n\n const autoPlacement = this.dropdown.autoPlacement;\n if (this.lastPlacement) {\n wrapper.classList.add(this.lastPlacement);\n }\n if (autoPlacement) {\n const vertical = autoPlacement.allowedPlacements.some(p => p.includes(\"top\") || p.includes(\"bottom\"));\n const horizontal = autoPlacement.allowedPlacements.some(p => p.includes(\"left\") || p.includes(\"right\"));\n if (vertical && horizontal) {\n wrapper.classList.add(`dropdown-content-axis-both`);\n } else {\n const axis = vertical ? \"vertical\" : \"horizontal\";\n wrapper.classList.add(`dropdown-content-axis-${axis}`);\n }\n }\n wrapper.classList.add(\"dropdown-content-wrap\");\n return [wrapper, arrow];\n }\n\n initialize(): void {\n this.createView(true);\n setTimeout(() => this.destroyView());\n }\n}\n","import {Directive, inject, input, untracked} from \"@angular/core\";\nimport {DropdownDirective} from \"./dropdown.directive\";\nimport {AsyncMethodBase} from \"./async-method.base\";\nimport {AsyncMethod} from \"../common-types\";\n\n@Directive({\n standalone: false,\n selector: \"[dropdownToggle]\",\n exportAs: \"dropdown-toggle\",\n providers: [\n {provide: AsyncMethodBase, useExisting: DropdownToggleDirective}\n ]\n})\nexport class DropdownToggleDirective extends AsyncMethodBase {\n\n readonly beforeOpen = input<AsyncMethod>(null);\n readonly switch = input(true);\n readonly dropdown = inject(DropdownDirective);\n\n protected getMethod() {\n return untracked(() => this.beforeOpen());\n }\n\n callMethod(ev: MouseEvent): boolean {\n if (this.dropdown.isOpened) {\n if (!this.switch()) return true;\n this.dropdown.hide();\n } else if (!super.callMethod(ev)) {\n this.dropdown.show();\n }\n return true;\n }\n}\n","import {Directive, ElementRef, inject, input, TemplateRef} from \"@angular/core\";\n\n@Directive({\n standalone: false,\n selector: \"[tabsItem]\"\n})\nexport class TabsItemDirective {\n\n readonly value = input(null, {alias: \"tabsItem\"});\n readonly label = input(\"\");\n readonly tooltip = input(\"\");\n readonly icon = input(\"\");\n readonly disabled = input(false);\n readonly classes = input<string | string[]>(\"\");\n\n readonly element = inject(ElementRef, {optional: true});\n readonly template = inject(TemplateRef, {optional: true});\n}\n","import {Directive, input} from \"@angular/core\";\nimport {TabsItemDirective} from \"./tabs-item.directive\";\n\n@Directive({\n standalone: false,\n selector: \"ng-template[tab]\",\n providers: [\n {provide: TabsItemDirective, useExisting: TabsTemplateDirective}\n ],\n})\nexport class TabsTemplateDirective extends TabsItemDirective {\n\n readonly value = input(null, {alias: \"tab\"});\n\n}\n","import {Directive, ElementRef, Input, OnChanges, Renderer2, SimpleChanges, ViewContainerRef} from \"@angular/core\";\nimport {UnorderedListStyle, UnorderedListTemplates, UnorderedListTemplate} from \"../common-types\";\nimport {ObjectUtils} from \"../utils/object.utils\";\nimport {StringUtils} from \"../utils/string.utils\";\n\n@Directive({\n standalone: false,\n selector: \"[unorderedListItem]\"\n})\nexport class UnorderedListItemDirective implements OnChanges {\n\n @Input(\"unorderedListItem\") item: any;\n @Input() type: string;\n @Input() data: any;\n @Input() keyPrefix: string;\n @Input() listStyle: UnorderedListStyle;\n @Input() path: string;\n @Input() level: number;\n @Input() templates: UnorderedListTemplate[];\n @Input() defaultTemplates: UnorderedListTemplates;\n\n isArray: boolean;\n isObject: boolean;\n valueIsArray: boolean;\n valueIsObject: boolean;\n valueType: string;\n\n get elem(): HTMLElement {\n return this.elementRef.nativeElement;\n }\n\n constructor(private elementRef: ElementRef, private renderer: Renderer2, private viewContainer: ViewContainerRef) {\n\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!this.templates || !this.defaultTemplates || !this.item) return;\n const promise = this.item.value instanceof Promise ? this.item.value : Promise.resolve(this.item.value);\n promise.then(value => {\n this.item.value = value;\n this.path = ObjectUtils.isNullOrUndefined(this.path) ? \"\" : this.path.toString();\n this.isArray = ObjectUtils.isArray(this.data);\n this.isObject = ObjectUtils.isObject(this.data);\n this.valueIsArray = ObjectUtils.isArray(this.item.value);\n this.valueIsObject = ObjectUtils.isObject(this.item.value);\n this.valueType = ObjectUtils.getType(this.item.value);\n const context: any = this;\n const template = this\n .templates\n .find(t => t.type == this.type && ObjectUtils.evaluate(t.selector, context))?.templateRef || this.defaultTemplates[this.type];\n // Set view\n this.viewContainer.clear();\n this.viewContainer.createEmbeddedView(template, context);\n // Set classes\n if (this.type !== \"item\") return;\n this.item.classList = [];\n this.isClass(\"is-array\", this.valueIsArray);\n this.isClass(\"is-object\", this.valueIsObject);\n this.isClass(\"is-value\", !this.valueIsObject && !this.valueIsArray);\n this.isClass(`type-${this.valueType}`);\n this.isClass(`path-${this.path.replace(/\\./g, \"-\")}`);\n this.isClass(`key-${this.item.key}`);\n }, reason => {\n console.log(\"Can't handle promise rejection\", reason);\n });\n }\n\n private isClass(className: string, value: boolean = true): void {\n if (!value) return;\n this.item.classList.push(className);\n }\n}\n","import {Directive, Input, TemplateRef} from \"@angular/core\";\nimport {UnorderedListTemplate} from \"../common-types\";\n\n@Directive({\n standalone: false,\n selector: \"ng-template[type][selector]\"\n})\n\nexport class UnorderedListTemplateDirective implements UnorderedListTemplate {\n\n @Input() type: string;\n @Input() selector: string;\n\n constructor(readonly templateRef: TemplateRef<any>) {\n\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n ViewEncapsulation\n} from \"@angular/core\";\nimport {ButtonProps, ButtonSize, ButtonType} from \"../../common-types\";\nimport {BUTTON_TYPE} from \"../../tokens\";\n\n@Component({\n standalone: false,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: \"btn\",\n templateUrl: \"./btn.component.html\"\n})\nexport class BtnComponent {\n\n readonly label = input(\"\");\n readonly tooltip = input(\"\");\n readonly icon = input(\"\");\n readonly disabled = input(false);\n readonly type = input(\"primary\" as ButtonType);\n readonly size = input(\"normal\" as ButtonSize);\n\n readonly buttonType = inject(BUTTON_TYPE);\n readonly element = inject<ElementRef<HTMLElement>>(ElementRef);\n\n readonly buttonProps = computed<ButtonProps>(() => {\n return {\n label: this.label(),\n tooltip: this.tooltip(),\n icon: this.icon(),\n disabled: this.disabled(),\n type: this.type(),\n size: this.size()\n };\n });\n\n contains(target: EventTarget): boolean {\n return !(target instanceof HTMLElement) || this.element.nativeElement?.contains(target);\n }\n\n}\n","<ng-container [ngComponentOutlet]=\"buttonType\"\n [ngComponentOutletInputs]=\"$any(buttonProps())\"></ng-container>\n","import {ChangeDetectionStrategy, Component, computed, inject, input, ViewEncapsulation} from \"@angular/core\";\nimport {IconProps} from \"../../common-types\";\nimport {ICON_MAP, ICON_TYPE} from \"../../tokens\";\n\n@Component({\n standalone: false,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: \"icon\",\n templateUrl: \"./icon.component.html\"\n})\nexport class IconComponent {\n\n readonly name = input(\"trash\");\n\n readonly iconType = inject(ICON_TYPE);\n\n readonly iconMap = inject(ICON_MAP);\n\n readonly iconProps = computed<IconProps>(() => {\n const name = this.name();\n return {\n name: this.iconMap[name] || name,\n };\n });\n\n}\n","<ng-container [ngComponentOutlet]=\"iconType\"\n [ngComponentOutletInputs]=\"iconProps()\"></ng-container>\n","import {Component, Input, ViewEncapsulation} from \"@angular/core\";\nimport {ButtonProps, ButtonSize, ButtonType} from \"../../common-types\";\n\n@Component({\n standalone: false,\n encapsulation: ViewEncapsulation.None,\n selector: \"btn-default\",\n templateUrl: \"./btn-default.component.html\",\n styleUrls: [\"./btn-default.component.scss\"]\n})\nexport class BtnDefaultComponent implements ButtonProps {\n\n @Input() label: string;\n @Input() tooltip: string;\n @Input() icon: string;\n @Input() disabled: boolean;\n @Input() type: ButtonType;\n @Input() size: ButtonSize;\n\n get bsSize(): string {\n return this.size === \"small\" ? \"btn-sm\" : \"btn-md\";\n }\n\n}\n","<button class=\"default-btn btn\"\n type=\"button\"\n async-method-target\n [title]=\"!tooltip ? '' : tooltip | translate\"\n [ngClass]=\"['btn-' + type, bsSize]\">\n <icon [name]=\"icon\" *ngIf=\"icon\"></icon>\n <span *ngIf=\"label\">{{ label | translate }}</span>\n</button>\n","import {Component, ViewEncapsulation} from \"@angular/core\";\n\n@Component({\n standalone: false,\n selector: \"close-btn\",\n styleUrls: [\"./close-btn.component.scss\"],\n template: \"\",\n encapsulation: ViewEncapsulation.None\n})\nexport class CloseBtnComponent {\n\n}\n","import {\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input, OnChanges,\n Output, SimpleChanges,\n ViewChild,\n ViewEncapsulation\n} from \"@angular/core\";\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from \"@angular/forms\";\nimport {ObjectUtils} from \"../../utils/object.utils\";\nimport {ChipOption, ChipStatus, ChipValue} from \"../../common-types\";\nimport {AutoPlacementOptions} from \"@floating-ui/dom\";\nimport {DropdownDirective} from \"../../directives/dropdown.directive\";\n\n@Component({\n standalone: false,\n encapsulation: ViewEncapsulation.None,\n selector: \"chips\",\n templateUrl: \"./chips.component.html\",\n styleUrls: [\"./chips.component.scss\"],\n providers: [\n {provide: NG_VALUE_ACCESSOR, useExisting: ChipsComponent, multi: true}\n ],\n})\nexport class ChipsComponent implements ControlValueAccessor, OnChanges {\n\n @Input() testId: string;\n @Input() value: ChipValue | ChipValue[];\n @Input() multiple: boolean;\n @Input() disabled: boolean;\n @Input() type: string;\n @Input() min: number;\n @Input() max: number;\n @Input() minLength: number;\n @Input() maxLength: number;\n @Input() step: number;\n @Input() placeholder: string;\n @Input() unique: boolean;\n @Input() strict: boolean;\n @Input() options: ReadonlyArray<ChipOption>;\n\n @Output() valueChange: EventEmitter<ChipValue | ChipValue[]>;\n\n @ViewChild(\"chipDropdown\")\n chipDropdown: DropdownDirective;\n\n @ViewChild(\"chipButtons\")\n chipButtons: ElementRef<HTMLDivElement>;\n\n @ViewChild(\"chipInput\")\n chipInput: ElementRef<HTMLInputElement>;\n\n inputStyles: { [key: string]: string };\n valueOptions: ChipOption[];\n filteredOptions: ChipOption[];\n statuses: ChipStatus[];\n autoPlacement: AutoPlacementOptions;\n\n private undoList: Function[];\n private previousValue: string;\n\n onChange: any = () => { };\n onTouched: any = () => { };\n\n constructor(readonly cdr: ChangeDetectorRef) {\n this.testId = \"chips\";\n this.value = [];\n this.multiple = true;\n this.statuses = [];\n this.disabled = false;\n this.type = \"text\";\n this.min = -999999999;\n this.max = 999999999;\n this.minLength = 0;\n this.maxLength = this.max;\n this.step = 1;\n this.placeholder = \"\";\n this.unique = true;\n this.strict = true;\n this.valueChange = new EventEmitter();\n this.inputStyles = {};\n this.valueOptions = [];\n this.filteredOptions = [];\n this.autoPlacement = {\n autoAlignment: true,\n allowedPlacements: [\"top\", \"bottom\"]\n };\n this.undoList = [];\n this.previousValue = \"\";\n }\n\n registerOnChange(fn: any) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.value) {\n const value = changes.value.currentValue;\n this.valueOptions = this.createValueOptions(Array.isArray(value) ? value : [value]);\n this.value = this.updateValue();\n }\n this.filterOptions();\n }\n\n writeValue(value: ChipValue | ChipValue[]) {\n this.valueOptions = this.createValueOptions(Array.isArray(value) ? value : [value]);\n this.value = this.updateValue();\n this.filterOptions();\n this.cdr.markForCheck();\n }\n\n updateValues(val: ChipOption[]): void {\n this.valueOptions = Array.from(val);\n this.value = this.updateValue();\n this.onChange(this.value);\n this.valueChange.emit(this.value);\n this.filterOptions();\n this.cdr.markForCheck();\n }\n\n setDisabledState(val: boolean) {\n this.disabled = val === true;\n this.cdr.markForCheck();\n }\n\n removeItem(event: Event, ix: number): void {\n event.stopPropagation();\n if (this.disabled) return;\n this.makeUndo();\n this.updateValues(this.valueOptions.filter((v, i) => i !== ix));\n this.onTouched(this.value);\n this.chipInput.nativeElement.focus();\n }\n\n onResize(): void {\n const container = this.chipDropdown.nativeElement;\n const buttons = this.chipButtons.nativeElement;\n const style = getComputedStyle(buttons);\n const vertical = parseFloat(style.top);\n const horizontal = parseFloat(style.gap);\n this.inputStyles = buttons.offsetWidth > container.offsetWidth * .7\n ? {\n paddingTop: `${buttons.offsetHeight + vertical}px`,\n paddingLeft: `0px`\n } : {\n paddingLeft: `${buttons.offsetWidth + horizontal}px`,\n lineHeight: `${buttons.offsetHeight - vertical * 2}px`\n };\n }\n\n onInput(ev: KeyboardEvent): boolean {\n const input = ev.target as HTMLInputElement;\n const changed = input.value !== this.previousValue;\n this.previousValue = input.value;\n this.chipDropdown.show();\n if (ev.ctrlKey) {\n if (ev.key == \"z\") {\n const fn = this.undoList.pop();\n if (ObjectUtils.isFunction(fn)) {\n fn();\n }\n return false;\n }\n return false;\n }\n if (ev.key === \"Enter\" || ev.key === \"Tab\") {\n return this.enterOption(input.value);\n }\n if (ev.key === \"Backspace\" && !input.value && !changed && this.valueOptions.length > 0) {\n this.makeUndo();\n this.updateValues(this.valueOptions.slice(0, this.valueOptions.length - 1));\n this.onTouched(this.value);\n return false;\n }\n this.filterOptions();\n return true;\n }\n\n onBlur(ev: FocusEvent): void {\n if (this.chipDropdown.isOpened) return;\n const input = ev.target as HTMLInputElement;\n this.enterOption(input.value);\n }\n\n enterOption(src: string | number): boolean {\n const value = String(src);\n let option = this.createOption(value);\n if (!option && value && this.filteredOptions?.length === 1) {\n const regex = new RegExp(value, \"gi\");\n option = this.filteredOptions.find(o => o.label?.match(regex));\n }\n if (!option || (this.unique && this.valueOptions.findIndex(o => o.value === option.value) >= 0)) {\n return true;\n }\n this.makeUndo();\n this.updateValues(this.multiple ? this.valueOptions.concat(option) : [option]);\n this.onTouched(this.value);\n const input = this.chipInput?.nativeElement;\n if (input) {\n input.value = \"\";\n setTimeout(input.focus.bind(input), 500);\n }\n this.chipDropdown.hide();\n return false;\n }\n\n trackBy(index: number, option: ChipOption): string {\n return `${option.value}-${option.label}`;\n }\n\n protected makeUndo(): void {\n const value = this.valueOptions;\n this.undoList.push(() => this.updateValues(value));\n }\n\n protected createOption(value: string | number): ChipOption {\n const label = String(value);\n if (this.options) {\n const option =\n (!this.strict ? null : this.options.find(o => o.label === label)) ??\n this.options.find(o => o.value === value);\n return option ?? (this.strict || !label ? null : {\n value,\n label,\n });\n }\n return !label ? null : {\n value,\n label,\n };\n }\n\n protected createValueOptions(values: ChipValue[]): ChipOption[] {\n values = values.filter(ObjectUtils.isDefined).map(v => {\n if (this.type == \"number\") {\n v = String(v || \"0\").replace(/([^-\\d|.,])/gi, \"\").replace(/\\./gi, \",\");\n const value = Math.round((parseFloat(v.replace(/,/gi, \".\")) || 0) / this.step) * this.step;\n return Math.min(this.max, Math.max(this.min, value));\n }\n return String(v || \"0\").substring(0, this.maxLength);\n });\n const options = values.map(id => {\n return this.createOption(id);\n }).filter(o => !!o);\n return this.multiple ? options : options.slice(0, 1);\n }\n\n protected updateValue(): ChipValue | ChipValue[] {\n this.statuses = this.valueOptions.map(o => {\n if (this.type == \"number\") {\n return Number(o.value) < this.min ? \"invalid\" : \"valid\";\n }\n return String(o.value).length < this.minLength ? \"invalid\" : \"valid\";\n });\n return this.multiple\n ? this.valueOptions.map(o => o.value)\n : this.valueOptions[0]?.value ?? null;\n }\n\n protected filterOptions(): void {\n if (!this.options) {\n this.filteredOptions = null;\n return;\n }\n const value = (this.chipInput?.nativeElement?.value || \"\").toLowerCase();\n this.filteredOptions = this.options.filter(o => {\n return o.label?.toLowerCase().includes(value);\n });\n if (!this.unique) return;\n const values = this.valueOptions.map(o => o.value);\n this.filteredOptions = this.filteredOptions.filter(o => !values.includes(o.value));\n }\n}\n","<div dd\n attachTo=\"root\"\n [closeInside]=\"false\"\n [autoPlacement]=\"autoPlacement\"\n [ngClass]=\"{disabled: disabled}\" class=\"chips\" #chipDropdown=\"dropdown\">\n <input class=\"chips-input\"\n dropdownToggle\n [switch]=\"false\"\n [attr.data-testid]=\"testId + '-input'\"\n [type]=\"type == 'number' ? 'number': 'text'\"\n [min]=\"min\"\n [max]=\"max\"\n [step]=\"step\"\n [disabled]=\"disabled\"\n [placeholder]=\"valueOptions.length == 0 && placeholder | translate\"\n [ngStyle]=\"inputStyles\"\n (blur)=\"onBlur($event)\"\n (keyup)=\"onInput($event)\"\n #chipInput/>\n <div class=\"chips-buttons\" #chipButtons [ngClass]=\"{disabled: disabled}\" (resize)=\"onResize()\">\n <ng-container *ngFor=\"let item of valueOptions; let ix = index; trackBy:trackBy\">\n <a class=\"chips-button\" [ngClass]=\"'chips-' + statuses[ix]\" (dblclick)=\"removeItem($event, ix)\">\n @if (item.picture) {\n <img [src]=\"item.picture | safe:'url'\"\n class=\"chip-picture\"\n referrerpolicy=\"no-referrer\" [attr.alt]=\"item.label\">\n\n }\n <span class=\"chips-label\"\n [attr.data-testid]=\"testId + '-label-' + ix\">{{ item.label }} </span>\n <close-btn class=\"chips-remove\"\n [attr.data-testid]=\"testId + '-delete-' + ix\"\n (click)=\"removeItem($event, ix)\" *ngIf=\"!disabled\"></close-btn>\n </a>\n </ng-container>\n </div>\n @if (options) {\n <div class=\"chips-dropdown\" *dropdownContent>\n <button [ngClass]=\"option.classes\"\n [disabled]=\"option.disabled\"\n (click)=\"enterOption(option.value)\"\n *ngFor=\"let option of filteredOptions\">\n <div class=\"select-option\">\n @if (option?.picture) {\n <img [src]=\"option.picture | safe:'url'\"\n class=\"select-option-picture\"\n referrerpolicy=\"no-referrer\" [attr.alt]=\"option.label\">\n }\n <div class=\"select-option-label\">\n {{ option.label }}\n </div>\n </div>\n </button>\n </div>\n }\n</div>\n","import {\n ChangeDetectorRef,\n Component,\n ContentChild,\n forwardRef,\n Input,\n OnChanges,\n SimpleChanges,\n TemplateRef,\n ViewEncapsulation\n} from \"@angular/core\";\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from \"@angular/forms\";\n\nimport {DragEventHandler} from \"../../common-types\";\nimport {checkTransitions} from \"../../utils/misc\";\nimport {ObjectUtils} from \"../../utils/object.utils\";\nimport {ArrayUtils} from \"../../utils/array.utils\";\n\ntype DropListItem = Record<string, any>;\n\ntype DropListId = string | number;\n\n@Component({\n standalone: false,\n encapsulation: ViewEncapsulation.None,\n selector: \"drop-list\",\n styleUrls: [\"./drop-list.component.scss\"],\n templateUrl: \"./drop-list.component.html\",\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DropListComponent),\n multi: true,\n }],\n})\nexport class DropListComponent implements OnChanges, ControlValueAccessor {\n\n @Input() disabled: boolean;\n @Input() unique: boolean;\n @Input() message: string;\n @Input() idField: string;\n @Input() labelField: string;\n @Input() value: DropListId[];\n @Input() context: DropListItem[];\n @Input() prepareItem: (i: DropListItem) => void;\n @Input() checkFn: DragEventHandler<boolean, \"data\">;\n @Input() dropFn: DragEventHandler<boolean, \"data\">;\n\n @ContentChild(\"itemTemplate\")\n itemTemplate: TemplateRef<any>;\n\n onChange: Function;\n onTouched: Function;\n valueMap: Record<DropListId, DropListItem>;\n\n remove: (index: number) => void;\n\n constructor(private cdr: ChangeDetectorRef) {\n this.disabled = false;\n this.unique = false;\n this.idField = \"id\";\n this.labelField = \"label\";\n this.value = [];\n this.context = [];\n this.prepareItem = () => {};\n this.checkFn = () => false;\n this.dropFn = () => false;\n this.valueMap = {};\n this.remove = index => {\n this.changeValue(this.value.filter((_, i) => i !== index));\n };\n }\n\n onDragEnter(ev: DragEvent, elem: HTMLElement, data: any) {\n ev.preventDefault();\n if (!elem || !ObjectUtils.isFunction(this.checkFn) || !this.checkFn({ev, elem, data})) {\n ev.dataTransfer.effectAllowed = \"none\";\n ev.dataTransfer.dropEffect = \"none\";\n return;\n }\n ev.dataTransfer.effectAllowed = \"move\";\n ev.dataTransfer.dropEffect = \"move\";\n elem.classList.add(\"drop-allowed\");\n }\n\n onDragLeave(ev: DragEvent, elem: HTMLElement) {\n ev.dataTransfer.effectAllowed = \"none\";\n ev.dataTransfer.dropEffect = \"none\";\n elem.classList.remove(\"drop-allowed\");\n }\n\n onDrop(ev: DragEvent, elem: HTMLElement) {\n ev.preventDefault();\n ev.stopPropagation();\n if (!elem) {\n return;\n }\n const data = JSON.parse(ev.dataTransfer.getData(\"itemData\") || \"{}\");\n elem.classList.remove(\"drop-allowed\");\n checkTransitions(elem, () => {\n checkTransitions(elem, () => {\n if (elem && ObjectUtils.isFunction(this.dropFn) && this.dropFn({ev, elem, data})) {\n // If drop is handled from outside function\n return;\n }\n const id = data[this.idField] || data.id;\n this.changeValue(this.value.concat([id]));\n });\n elem.classList.remove(\"dropped\");\n });\n elem.classList.add(\"dropped\");\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.context || changes.idField) {\n this.valueMap = this.context?.reduce((res, item) => {\n // In case this is a dynamic form option which stores real value under props\n item = Object.assign({}, item, item.props || {});\n // Prepare item\n this.prepareItem(item);\n\n const id = item[this.idField] || item.id;\n res[id] = item;\n return res;\n }, {}) || {};\n this.cdr.detectChanges();\n }\n }\n\n registerOnChange(fn: any) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n setDisabledState(val: boolean): void {\n this.disabled = val === true;\n this.cdr.markForCheck();\n }\n\n writeValue(obj: any): void {\n this.value = Array.isArray(obj) ? obj : this.value;\n this.cdr.detectChanges();\n }\n\n protected changeValue(value: DropListId[]): void {\n this.value = this.unique ? ArrayUtils.unique(value) : value;\n this.onChange?.(value);\n this.onTouched?.();\n }\n}\n","<ng-template #defaultTemplate let-item=\"item\">\n <div class=\"drop-list-item-label\">\n {{ item | getValue:labelField }}\n </div>\n</ng-template>\n<div class=\"drop-list\"\n #list\n (dragenter)=\"onDragEnter($event, list, this)\"\n (dragleave)=\"onDragLeave($event, list)\"\n (drop)=\"onDrop($event, list)\">\n <div class=\"drop-list-message\"\n [ngClass]=\"{'has-value': value?.length}\"\n [innerHTML]=\"message | translate | safe:'html'\"\n *ngIf=\"message\">\n </div>\n <ng-container *ngFor=\"let id of value; let ix = index\">\n <div class=\"drop-list-item\">\n <ng-template #noItemTemplate>\n <div class=\"drop-list-item-label just-id\">\n {{ id }}\n </div>\n </ng-template>\n <ng-container [ngTemplateOutlet]=\"itemTemplate || defaultTemplate\"\n [ngTemplateOutletContext]=\"{item: valueMap[id], id: id, remove: remove}\"\n *ngIf=\"valueMap[id]; else noItemTemplate\"></ng-container>\n <a class=\"remove-item-btn\" (click)=\"remove(ix)\"></a>\n </div>\n </ng-container>\n</div>\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, 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\">\n <ul class=\"pg-list\">\n <li class=\"page-item\" [ngClass]=\"{disabled: !hasPrev}\" *ngIf=\"boundaryLinks\">\n <a class=\"page-link boundary-link previous\" (click)=\"paginate(1)\"></a>\n </li>\n <li class=\"page-item\" [ngClass]=\"{disabled: !hasPrev}\" *ngIf=\"directionLinks\">\n <a class=\"page-link direction-link previous\" (click)=\"paginate(pagination.page - 1)\"></a>\n </li>\n <li class=\"page-item\" [ngClass]=\"{active: pagination.page == page}\" *ngFor=\"let page of pages\">\n <a class=\"page-link\" [ngClass]=\"{active: pagination.page == page}\" (click)=\"paginate(page)\">{{ page }}</a>\n </li>\n <li class=\"page-item\" [ngClass]=\"{disabled: !hasNext}\" *ngIf=\"directionLinks\">\n <a class=\"page-link direction-link\" (click)=\"paginate(pagination.page + 1)\"></a>\n </li>\n <li class=\"page-item\" [ngClass]=\"{disabled: !hasNext}\" *ngIf=\"boundaryLinks\">\n <a class=\"page-link boundary-link\" (click)=\"paginate(pagination.maxPage)\"></a>\n </li>\n </ul>\n</div>\n","import {\n AfterContentInit,\n AfterViewInit,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n Input,\n OnChanges, OnDestroy,\n QueryList,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from \"@angular/core\";\n\nimport {\n DragEventHandler,\n IPaginationData,\n ITableColumns,\n ITableDataQuery,\n ITableTemplates,\n PaginationItemContext,\n TableColumns, TableDataItems,\n TableDataLoader\n} from \"../../common-types\";\nimport {ObjectUtils} from \"../../utils/object.utils\";\nimport {UniqueUtils} from \"../../utils/unique.utils\";\nimport {checkTransitions} from \"../../utils/misc\";\n\nimport {DynamicTableTemplateDirective} from \"../../directives/dynamic-table-template.directive\";\nimport {PaginationDirective} from \"../../directives/pagination.directive\";\nimport {DropdownDirective} from \"../../directives/dropdown.directive\";\nimport {MathUtils} from \"../../utils/math.utils\";\nimport {Observable, of, Subscription} from \"rxjs\";\n\n@Component({\n standalone: false,\n encapsulation: ViewEncapsulation.None,\n selector: \"dynamic-table\",\n styleUrls: [\"./dynamic-table.component.scss\"],\n templateUrl: \"./dynamic-table.component.html\",\n})\nexport class DynamicTableComponent implements AfterContentInit, AfterViewInit, OnChanges, OnDestroy {\n\n @Input() dataLoader: TableDataLoader;\n @Input() data: TableDataItems | Observable<TableDataItems>;\n @Input() selected: any;\n @Input() page: number;\n @Input() urlParam: string;\n @Input() parallelData: TableDataItems;\n @Input() columns: TableColumns;\n\n /**\n * Parameter for displaying a simple filter search box\n */\n @Input() showFilter: boolean;\n\n /**\n * Parameter for specifying a label for filter\n */\n @Input() filterLabel: string;\n\n /**\n * Parameter for specifying a placeholder for filter\n */\n @Input() placeholder: string;\n\n /**\n * Parameter for displaying an item per page selector dropdown with the specified numbers\n */\n @Input() showItems: number[];\n\n /**\n * Parameter for setting how many items should be displayed by default\n */\n @Input() itemsPerPage: number;\n @Input() updateTime: number;\n @Input() filterTime: number;\n @Input() maxPages: number;\n @Input() directionLinks: boolean;\n @Input() boundaryLinks: boolean;\n @Input() orderBy: string;\n @Input() orderDescending: boolean;\n @Input() testId: string;\n @Input() titlePrefix: string;\n\n @Input() dragStartFn: DragEventHandler;\n @Input() dragEnterFn: DragEventHandler;\n @Input() dropFn: DragEventHandler<void>;\n\n tableId: string;\n templates: ITableTemplates;\n filter: string;\n query: ITableDataQuery;\n hasQuery: boolean;\n realColumns: ITableColumns;\n cols: string[];\n sortable: boolean;\n\n get items(): any[] {\n return !this.pagination ? [] : this.pagination.items;\n }\n\n protected localData: TableDataItems;\n protected subscription: Subscription;\n\n @ContentChild(\"rowTemplate\", {static: true})\n rowTemplate: TemplateRef<any>;\n\n @ContentChild(\"wrapperTemplate\", {static: true})\n wrapperTemplate: TemplateRef<any>;\n\n @ViewChild(\"columnsTemplate\", {static: true})\n columnsTemplate: TemplateRef<any>;\n\n @ViewChild(\"defaultRowTemplate\", {static: true})\n defaultRowTemplate: TemplateRef<any>;\n\n @ViewChild(\"defaultWrapperTemplate\", {static: true})\n defaultWrapperTemplate: TemplateRef<any>;\n\n @ViewChild(\"pagination\")\n protected pagination: PaginationDirective;\n\n @ContentChildren(DynamicTableTemplateDirective)\n protected templateDirectives: QueryList<DynamicTableTemplateDirective>;\n\n protected static compare(orderBy: string, a: PaginationItemContext, b: PaginationItemContext): number {\n a = a.item ? a.item[orderBy] : null;\n b = b.item ? b.item[orderBy] : null;\n return ObjectUtils.compare(a, b);\n }\n\n constructor(protected element: ElementRef<HTMLElement>) {\n this.dataLoader = this.loadLocalData;\n this.placeholder = \"\";\n this.tableId = UniqueUtils.uuid();\n this.orderBy = \"\";\n this.orderDescending = false;\n this.templates = {};\n this.filter = \"\";\n this.query = {};\n this.hasQuery = false;\n this.testId = \"table\";\n this.titlePrefix = \"label\";\n this.realColumns = {};\n this.cols = [];\n this.sortable = false;\n this.localData = [];\n }\n\n setProperty(name: string, value: any): void {\n const elem = this.element.nativeElement;\n if (!elem) return;\n elem.style.setProperty(`--${name}`, value);\n }\n\n ngAfterContentInit(): void {\n this.templates = this.templateDirectives.reduce((result, directive) => {\n if (ObjectUtils.isArray(directive.column)) {\n directive.column.forEach(column => {\n result[column] = directive;\n });\n return result;\n }\n if (!ObjectUtils.isString(directive.column) || directive.column.length == 0) return result;\n result[directive.column] = directive;\n return result;\n }, {});\n }\n\n ngAfterViewInit(): void {\n this.rowTemplate = this.rowTemplate || this.defaultRowTemplate;\n }\n\n ngOnDestroy(): void {\n this.subscription?.unsubscribe();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const orderBy = this.orderBy;\n if (changes.columns) {\n const columns = changes.columns.currentValue || [];\n this.realColumns = ObjectUtils.isArray(columns) ? columns.reduce((result, column) => {\n if (!ObjectUtils.isString(column) || column.length == 0)\n return result;\n result[column] = {title: `${this.titlePrefix}.${column}`, sort: column};\n return result;\n }, {}) : Object.keys(columns).reduce((result, key) => {\n const value = columns[key];\n result[key] = !value || ObjectUtils.isString(value)\n ? {title: `${this.titlePrefix}.${key}`, sort: value}\n : value;\n return result;\n }, {} as ITableColumns);\n this.cols = Object.keys(this.realColumns);\n this.cols.forEach(col => {\n const column = this.realColumns[col];\n column.filterType = column.filterType || \"text\";\n });\n const sortable = this.cols.filter(c => this.realColumns[c].sort);\n const query = this.query || {};\n this.sortable = sortable.length > 0;\n this.orderBy = sortable.includes(this.orderBy) ? this.orderBy : sortable[0] || null;\n this.query = this.cols.reduce((res, col) => {\n const value = query[col];\n if (!value) return res;\n res[col] = value;\n return res;\n }, {});\n this.setProperty(\"cell-width\", MathUtils.round(100 / this.cols.length, 4) + \"%\");\n }\n this.hasQuery = this.cols.some(col => this.realColumns[col].filter);\n if (changes.orderBy && this.realColumns && this.cols) {\n const sortable = this.cols.filter(c => this.realColumns[c].sort);\n this.sortable = sortable.length > 0;\n this.orderBy = sortable.includes(this.orderBy) ? this.orderBy : sortable[0] || null;\n }\n if (!changes.data && !changes.parallelData && !changes.dataLoader && !changes.itemsPerPage && !changes.orderDescending && orderBy === this.orderBy) return;\n const source = this.data instanceof Observable ? this.data : of(this.data || []);\n this.subscription?.unsubscribe();\n this.subscription = source.subscribe(data => {\n this.localData = data;\n this.refresh();\n });\n }\n\n onDragStart(ev: DragEvent, elem: HTMLElement, item: any) {\n if (!elem || !item || !ObjectUtils.isFunction(this.dragStartFn) || !this.dragStartFn({ev, elem, item})) {\n ev.preventDefault();\n ev.stopPropagation();\n return;\n }\n ev.dataTransfer.setData(\"itemData\", JSON.stringify(item));\n ev.dataTransfer.setData(item.type, \"type\");\n ev.dataTransfer.setData(item.id, \"id\");\n }\n\n onDragEnter(ev: DragEvent, elem: HTMLElement, item: any) {\n ev.preventDefault();\n if (!elem || !item || !ObjectUtils.isFunction(this.dragEnterFn) || !this.dragEnterFn({ev, elem, item})) {\n ev.dataTransfer.effectAllowed = \"none\";\n ev.dataTransfer.dropEffect = \"none\";\n return;\n }\n ev.dataTransfer.effectAllowed = \"move\";\n ev.dataTransfer.dropEffect = \"move\";\n elem.classList.add(\"drop-allowed\");\n }\n\n onDragLeave(ev: DragEvent, elem: HTMLElement) {\n ev.dataTransfer.effectAllowed = \"none\";\n ev.dataTransfer.dropEffect = \"none\";\n elem.classList.remove(\"drop-allowed\");\n }\n\n onDrop(ev: DragEvent, elem: HTMLElement, item: any) {\n ev.preventDefault();\n ev.stopPropagation();\n if (!elem || !item || !ObjectUtils.isFunction(this.dropFn)) {\n return;\n }\n const source = JSON.parse(ev.dataTransfer.getData(\"itemData\"));\n elem.classList.remove(\"drop-allowed\");\n checkTransitions(elem, () => {\n checkTransitions(elem, () => {\n this.dropFn({ev, elem, item, source});\n });\n elem.classList.remove(\"dropped\");\n });\n elem.classList.add(\"dropped\");\n }\n\n refresh(time?: number): void {\n if (!this.pagination) return;\n this.pagination.refresh(time);\n }\n\n setFilter(filter: string) {\n this.filter = filter;\n this.refresh(this.filterTime ?? 300);\n }\n\n setSorting(column: string, toggle?: DropdownDirective) {\n if (toggle) {\n return;\n }\n this.orderDescending = column == this.orderBy && !this.orderDescending;\n this.orderBy = column;\n this.refresh();\n }\n\n setQueryValue(c: string, value: string | boolean) {\n const col = this.realColumns[c];\n if (!col?.filter) return;\n switch (col.filterType) {\n case \"enum\":\n const set = new Set((this.query[c] || []) as string[]);\n const val = `${value}`;\n if (set.has(val)) {\n set.delete(val);\n if (set.size === 0) {\n delete this.query[c];\n break;\n }\n } else {\n set.add(val);\n }\n this.query[c] = Array.from(set);\n break;\n case \"checkbox\":\n if (this.query[c]) {\n delete this.query[c];\n break;\n }\n this.query[c] = true;\n break;\n default:\n if (!value) {\n delete this.query[c];\n break;\n }\n this.query[c] = value;\n break;\n }\n this.refresh(this.filterTime ?? 300);\n }\n\n setItemsPerPage(count: number) {\n this.itemsPerPage = count;\n this.refresh();\n }\n\n loadData = (page: number, itemsPerPage: number): Promise<IPaginationData> => {\n const orderBy = this.realColumns[this.orderBy]?.sort;\n return this.dataLoader(page, itemsPerPage, orderBy, this.orderDescending, this.filter, this.query);\n };\n\n protected async loadLocalData(page: number, rowsPerPage: number, orderBy: string, orderDescending: boolean, filter: string, query: ITableDataQuery): Promise<IPaginationData> {\n if (!this.localData) {\n return {\n total: 0,\n items: []\n };\n }\n const compare: (a: any, b: any) => number = orderDescending\n ? (a, b) => DynamicTableComponent.compare(orderBy, b, a)\n : (a, b) => DynamicTableComponent.compare(orderBy, a, b);\n const from = (page - 1) * rowsPerPage;\n const dataLength = this.localData.length;\n const length = Math.min(rowsPerPage, dataLength - from);\n const parallelData = this.parallelData || [];\n const filterRx = ObjectUtils.isStringWithValue(filter) ? new RegExp(filter, \"gi\") : null;\n let filterFn = !filterRx ? () => true : (ctx: PaginationItemContext) => {\n return this.cols.some(col => {\n const value = ctx.item[col];\n return `${value}`.match(filterRx);\n });\n };\n filterFn = Object.entries(query).reduce((fn, [key, filterValue]) => {\n if (!filterValue) return fn;\n const column = this.realColumns[key];\n if (!column) return fn;\n switch (column.filterType) {\n case \"enum\":\n const filterArr = filterValue as string[];\n return filterArr.length == 0 ? fn : (ctx) => {\n const value = ctx.item[key];\n return filterArr.includes(value) && fn(ctx);\n }\n case \"checkbox\":\n return (ctx) => {\n const value = ctx.item[key];\n return !!value && fn(ctx);\n };\n }\n const filterRx = new RegExp(`${filterValue}`, \"gi\");\n return (ctx) => {\n const value = ctx.item[key];\n return `${value}`.match(filterRx) && fn(ctx);\n };\n }, filterFn);\n const data = this.localData.map((item, ix) => {\n return new PaginationItemContext(item, parallelData[ix] || {}, dataLength, ix, ix);\n }).filter(filterFn);\n const items = orderBy ? data.sort(compare).splice(from, length) : data.splice(from, length);\n items.forEach((context, ix) => {\n context.index = ix;\n });\n return {\n total: dataLength,\n items: items\n };\n }\n}\n","<ng-template #columnTemplate let-context let-column=\"column\" let-template=\"template\">\n <ng-template #defaultTemplate let-column=\"column\" let-item=\"item\">\n <span>{{ item[column] == undefined || item[column] == null ? '-' : item[column] }}</span>\n </ng-template>\n <ng-template #pureTemplate>\n <ng-container [ngxTemplateOutlet]=\"template.ref\" [context]=\"context\"></ng-container>\n </ng-template>\n <td [ngClass]=\"'column-' + column\"\n [attr.data-testid]=\"testId + '-' + column + '-' + context.rowIndex\"\n *ngIf=\"!template || !template.pure; else pureTemplate\">\n <ng-container [ngxTemplateOutlet]=\"!template ? defaultTemplate : template.ref\"\n [context]=\"context\"></ng-container>\n </td>\n</ng-template>\n\n<ng-template #columnsTemplate let-context>\n <ng-container *ngFor=\"let column of cols\"\n [ngxTemplateOutlet]=\"columnTemplate\"\n [context]=\"context\"\n [additionalContext]=\"{\n template: templates[column],\n column: column\n }\"></ng-container>\n</ng-template>\n\n<ng-template #defaultRowTemplate let-context>\n <tr #elem\n [draggable]=\"!!dragStartFn\"\n [ngClass]=\"{active: selected === context.item}\"\n (dragstart)=\"onDragStart($event, elem, context.item)\"\n (dragenter)=\"onDragEnter($event, elem, context.item)\"\n (dragleave)=\"onDragLeave($event, elem)\"\n (drop)=\"onDrop($event, elem, context.item)\">\n <ng-container [ngxTemplateOutlet]=\"columnsTemplate\" [context]=\"context\"></ng-container>\n </tr>\n</ng-template>\n\n<ng-template #headerTemplate let-column=\"column\" let-toggle=\"toggle\">\n <ng-template #defaultCol>\n <span>{{ realColumns[column].title | translate }}</span>\n </ng-template>\n <ng-template #emptyCol>\n <span>-</span>\n </ng-template>\n <ng-container *ngIf=\"realColumns[column]; else emptyCol\">\n <a *ngIf=\"realColumns[column].sort; else defaultCol\"\n [ngClass]=\"['sort', orderBy !== column ? '' : (orderDescending ? 'sort-desc' : 'sort-asc')]\"\n (click)=\"setSorting(column, toggle)\">\n <span>{{ realColumns[column].title | translate }}</span>\n </a>\n </ng-container>\n</ng-template>\n\n<div class=\"dynamic-table\">\n <div class=\"table-features-row\">\n <ng-content select=\"[table-features-before]\"></ng-content>\n @if (showFilter) {\n <div class=\"table-input-wrap table-search-filter\">\n <label *ngIf=\"filterLabel\" [attr.for]=\"tableId\">\n {{ filterLabel | translate }}\n </label>\n <input type=\"text\"\n class=\"search-input\"\n [attr.id]=\"tableId\"\n [attr.data-testid]=\"testId + '-filter-input'\"\n [placeholder]=\"placeholder | translate\"\n [ngModel]=\"filter\"\n (ngModelChange)=\"setFilter($event)\"/>\n </div>\n }\n @if (sortable) {\n <dropdown-box componentClass=\"sort-dropdown\" #sortDd>\n <ng-container toggle-content\n [ngTemplateOutlet]=\"headerTemplate\"\n [ngTemplateOutletContext]=\"{column: orderBy, toggle: sortDd}\"></ng-container>\n <ul>\n <ng-container *ngFor=\"let column of cols\">\n <li [ngClass]=\"'sort-column sort-' + column\" *ngIf=\"realColumns[column].sort\">\n <ng-container [ngTemplateOutlet]=\"headerTemplate\"\n [ngTemplateOutletContext]=\"{column: column}\"></ng-container>\n </li>\n </ng-container>\n </ul>\n </dropdown-box>\n }\n @if (showItems) {\n <div class=\"table-input-wrap table-items-count\">\n <label>\n {{ 'label.items.before' | translate }}\n </label>\n <dropdown-box>\n <ng-container toggle-content>\n {{ itemsPerPage }}\n </ng-container>\n <ul>\n <ng-container *ngFor=\"let count of showItems\">\n <li [ngClass]=\"'item-count count-' + count\" (click)=\"setItemsPerPage(count)\">\n {{ count }}\n </li>\n </ng-container>\n </ul>\n </dropdown-box>\n <label>\n {{ 'label.items.after' | translate }}\n </label>\n </div>\n }\n <ng-content select=\"[table-features-after]\"></ng-content>\n </div>\n <div class=\"table-content-row\"\n #pagination=\"pagination\"\n [pagination]=\"loadData\"\n [page]=\"page\"\n [itemsPerPage]=\"itemsPerPage\"\n [updateTime]=\"updateTime\">\n <pagination-menu [urlParam]=\"urlParam\" [maxSize]=\"maxPages\" [directionLinks]=\"directionLinks\"\n [boundaryLinks]=\"boundaryLinks\"></pagination-menu>\n <div class=\"table-responsive\">\n <ng-template #defaultWrapperTemplate>\n <table class=\"table table-striped\">\n <thead>\n <tr>\n <th *ngFor=\"let column of cols\" [ngClass]=\"'header-column column-' + column\">\n <ng-container [ngTemplateOutlet]=\"headerTemplate\"\n [ngTemplateOutletContext]=\"{column: column}\"></ng-container>\n </th>\n </tr>\n <tr *ngIf=\"hasQuery\">\n <th *ngFor=\"let column of cols\" [ngClass]=\"['column-' + column, 'filter-column']\">\n <ng-container *ngIf=\"realColumns[column].filter\" [ngSwitch]=\"realColumns[column].filterType\">\n <ng-container *ngSwitchCase=\"'enum'\">\n <ng-template #optionItem let-option=\"option\">\n {{ (realColumns[column].enumPrefix ? realColumns[column].enumPrefix + '.' + option : option) | translate }}\n </ng-template>\n <dropdown-box componentClass=\"filter-box\"\n [ngClass]=\"'filter-box-' + column\" [closeInside]=\"false\">\n <ng-container toggle-content>\n <span class=\"toggle-placeholder\" *ngIf=\"!query[column]\">\n {{ realColumns[column].title | translate }}\n </span>\n <span [ngClass]=\"['option-' + option, column + '-option-' + option, option]\"\n *ngFor=\"let option of query[column] | values; let ix = index\">\n <ng-container *ngIf=\"ix > 0\">, </ng-container>\n <ng-container [ngTemplateOutlet]=\"optionItem\"\n [ngTemplateOutletContext]=\"{option: option}\"></ng-container>\n </span>\n </ng-container>\n <ul>\n <li [ngClass]=\"[column + '-option', 'option-' + option, option]\"\n (click)=\"setQueryValue(column, option)\"\n *ngFor=\"let option of realColumns[column].enum\">\n <a [ngClass]=\"'toggle-link-' + column\">\n <input type=\"checkbox\" [checked]=\"query[column] | includes: option\">\n <ng-container [ngTemplateOutlet]=\"optionItem\"\n [ngTemplateOutletContext]=\"{option: option}\"></ng-container>\n </a>\n </li>\n </ul>\n </dropdown-box>\n </ng-container>\n <ng-container *ngSwitchCase=\"'checkbox'\">\n <input type=\"checkbox\"\n [attr.data-testid]=\"testId + '-filter-' + column\"\n [placeholder]=\"realColumns[column].title | translate\"\n [ngModel]=\"query[column]\"\n (ngModelChange)=\"setQueryValue(column, $event)\"/>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <input class=\"search-input\"\n type=\"text\"\n [attr.data-testid]=\"testId + '-filter-' + column\"\n [placeholder]=\"realColumns[column].title | translate\"\n [ngModel]=\"query[column]\"\n (ngModelChange)=\"setQueryValue(column, $event)\"/>\n </ng-container>\n </ng-container>\n </th>\n </tr>\n </thead>\n <tbody>\n <ng-container *paginationItem=\"let context\"\n [ngxTemplateOutlet]=\"rowTemplate\"\n [context]=\"context\"\n [additionalContext]=\"this\"></ng-container>\n </tbody>\n </table>\n </ng-template>\n\n <div class=\"table-wrapper\">\n <ng-content select=\"[table-top]\"></ng-content>\n <ng-container [ngxTemplateOutlet]=\"wrapperTemplate || defaultWrapperTemplate\"\n [context]=\"this\"></ng-container>\n <ng-content select=\"[table-bottom]\"></ng-content>\n </div>\n </div>\n <pagination-menu [urlParam]=\"urlParam\" [maxSize]=\"maxPages\" [directionLinks]=\"directionLinks\"\n [boundaryLinks]=\"boundaryLinks\"></pagination-menu>\n </div>\n</div>\n","import {Component, ViewEncapsulation} from \"@angular/core\";\n\n@Component({\n standalone: false,\n encapsulation: ViewEncapsulation.None,\n selector: \"fake-module-component\",\n template: \"\",\n})\nexport class FakeModuleComponent {\n\n}\n","import {Component, Input, ViewEncapsulation} from \"@angular/core\";\nimport {IconProps} from \"../../common-types\";\n\n@Component({\n standalone: false,\n encapsulation: ViewEncapsulation.None,\n selector: \"icon-default\",\n templateUrl: \"./icon-default.component.html\",\n styleUrls: [\"./icon-default.component.scss\"]\n})\nexport class IconDefaultComponent implements IconProps {\n\n @Input() name: string = \"trash\";\n\n}\n","<i class=\"fa-solid\" [ngClass]=\"'fa-' + name\"></i>\n","import {Component, Input, OnChanges} from \"@angular/core\";\nimport {\n CanvasItemDirection,\n Frame,\n InteractiveCanvas,\n InteractiveCanvasItem,\n InteractiveCanvasParams,\n IPoint,\n IShape\n} from \"../../common-types\";\nimport {Point, Rect} from \"../../utils/geometry\";\nimport {MaybePromise} from \"../../helper-types\";\nimport {clamp, overflow} from \"../../utils/math.utils\";\n\n@Component({\n standalone: false,\n selector: \"__interactive-item__\",\n template: \"\"\n})\nexport class InteractiveItemComponent implements OnChanges, InteractiveCanvasItem {\n\n protected pos: Point;\n protected mFrame: Rect;\n protected mShapes: IShape[];\n protected mDistances: Map<InteractiveCanvasItem, number>;\n\n get frame(): Frame {\n return this.mFrame;\n }\n\n get shapes(): ReadonlyArray<IShape> {\n return this.mShapes;\n }\n\n get x(): number {\n return this.pos.x;\n }\n\n @Input()\n set x(value: number) {\n if (isNaN(value) || value === this.pos.x) return;\n this.pos = new Point(value, this.pos.y);\n this.validPosition = this.pos;\n }\n\n get y(): number {\n return this.pos.y;\n }\n\n @Input()\n set y(value: number) {\n if (isNaN(value) || value === this.pos.y) return;\n this.pos = new Point(this.pos.x, value);\n this.validPosition = this.pos;\n }\n\n get position() {\n return this.pos;\n }\n\n @Input()\n set position(value: IPoint) {\n if (typeof value !== \"object\" || isNaN(value.x) || isNaN(value.y) || value === this.pos) return;\n this.pos = new Point(value.x, value.y);\n this.validPosition = this.pos;\n }\n\n get isValid(): boolean {\n return this.valid;\n }\n\n get validPosition(): IPoint {\n return this.validPos;\n }\n\n set validPosition(value: IPoint) {\n if (typeof value !== \"object\" || isNaN(value.x) || isNaN(value.y) || value === this.validPos) return;\n this.validPos = new Point(value.x, value.y);\n this.valid = true;\n }\n\n get hovered(): boolean {\n return this.canvas?.hoveredItem === this;\n }\n\n set hovered(value: boolean) {\n if (!this.canvas) return;\n this.canvas.hoveredItem = value ? this : null;\n }\n\n get selected(): boolean {\n return this.canvas?.selectedItem === this;\n }\n\n set selected(value: boolean) {\n if (!this.canvas) return;\n this.canvas.selectedItem = value ? this : null;\n }\n\n @Input() direction: CanvasItemDirection;\n @Input() disabled: boolean;\n\n active: boolean;\n canvas: InteractiveCanvas;\n index: number;\n canvasParams: InteractiveCanvasParams;\n\n protected valid: boolean;\n protected validPos: Point;\n\n constructor() {\n this.active = false;\n this.index = -1;\n this.canvasParams = {};\n this.valid = true;\n this.pos = Point.Zero;\n this.direction = \"none\";\n this.mFrame = new Rect(0, 0, 3, 3);\n this.mShapes = [];\n this.mDistances = new Map();\n }\n\n draw(ctx: CanvasRenderingContext2D, shape: IShape): MaybePromise<void> {\n const path = shape.getPath(0, 0, 1);\n ctx.fill(path);\n ctx.stroke(path);\n }\n\n ngOnChanges(): void {\n if (!this.canvas) return;\n this.calcShapes();\n }\n\n calcShapes(): void {\n const ratio = this.canvas.ratio ?? 1;\n const x = this.pos.x * ratio;\n const y = this.pos.y * ratio;\n this.mShapes = this.canvas.cycles.map(pan => this.calcShape(x, y + pan));\n }\n\n hit(point: Point): boolean {\n for (const shape of this.shapes) {\n if (shape.intersects(point)) return true;\n }\n return false;\n }\n\n moveTo(x: number, y: number): void {\n if (!this.canvas || this.direction === \"none\") return;\n const target = this.restrictPosition(\n this.direction === \"vertical\" ? this.pos.x : x,\n this.direction === \"horizontal\" ? this.pos.y : y\n );\n this.pos = new Point(target);\n this.calcShapes();\n this.valid = this.checkIsValid();\n this.validPos = this.valid ? this.pos : this.validPos;\n }\n\n moveBy(dx: number, dy: number): void {\n const {x, y} = this.pos;\n this.moveTo(x + dx, y + dy);\n }\n\n moveX(x: number): void {\n this.moveTo(x, this.pos.y);\n }\n\n moveY(y: number): void {\n this.moveTo(this.pos.x, y);\n }\n\n moveEnd(): void {\n this.mDistances.clear();\n if (this.valid) return;\n this.pos = this.validPos;\n this.valid = true;\n this.calcShapes();\n }\n\n protected restrictPosition(x: number, y: number): IPoint {\n return {\n x: clamp(x, this.canvas.xRange),\n y: this.canvas.isInfinite\n ? overflow(y, this.canvas.yRange)\n : clamp(y, this.canvas.yRange)\n }\n }\n\n protected checkIsValid(): boolean {\n return this.isValidByParams() &&\n this.canvas.items.every(other => this === other || this.isValidByDistance(other));\n }\n\n protected isValidByParams(): boolean {\n return !this.shapes.some(shape => {\n return this.canvas.excludedAreas.some(ex => {\n return shape.intersects(ex);\n });\n });\n }\n\n protected isValidByDistance(other: InteractiveCanvasItem): boolean {\n if (!this.mDistances.has(other)) {\n this.mDistances.set(other, this.distToPixels(this.getMinDistance(other)));\n }\n const minPixels = this.mDistances.get(other);\n return !this.shapes.some(shape => {\n return other.shapes.some(os => {\n return shape.distance(os) <= minPixels;\n });\n });\n }\n\n protected distToPixels(value: number): number {\n return !this.canvas ? 1 : Math.max(1, (isNaN(value) || value < 0 ? 0 : value) * (this.canvas.ratio ?? 1));\n }\n\n protected getMinDistance(other: InteractiveCanvasItem): number {\n return !other ? 0 : null;\n }\n\n protected calcShape(x: number, y: number): IShape {\n return new Point(x, y);\n }\n}\n","import {\n Component,\n contentChildren,\n effect,\n ElementRef,\n HostListener, inject,\n input,\n model,\n OnDestroy,\n OnInit,\n output,\n Renderer2,\n untracked,\n ViewChild\n} from \"@angular/core\";\n\nimport {\n CanvasPaintFunc,\n CanvasResizeMode,\n InteractiveCanvas,\n InteractiveCanvasItem,\n InteractiveCanvasParams,\n InteractiveCanvasPointer,\n InteractiveCanvasRenderer,\n InteractivePanEvent,\n IPoint,\n RangeCoords\n} from \"../../common-types\";\nimport {Point, Rect, toRadians} from \"../../utils/geometry\";\nimport {normalizeRange, overflow} from \"../../utils/math.utils\";\nimport {UniversalService} from \"../../services/universal.service\";\n\nimport {InteractiveItemComponent} from \"./interactive-item.component\";\nimport {injectOptions} from \"../../utils/misc\";\n\nconst emptyDash: number[] = [];\n\n@Component({\n standalone: false,\n selector: \"interactive-canvas\",\n styleUrls: [\"./interactive-canvas.component.scss\"],\n templateUrl: \"./interactive-canvas.component.html\"\n})\nexport class InteractiveCanvasComponent implements InteractiveCanvas, OnInit, OnDestroy {\n\n /**\n * Injectable options\n * @private\n */\n protected readonly options = injectOptions({\n infinite: false,\n resizeMode: \"fit\" as CanvasResizeMode,\n panOffset: 0\n });\n\n protected readonly renderer = inject(Renderer2);\n\n protected readonly universal = inject(UniversalService);\n\n /**\n * Is the canvas infinitely scrollable?\n */\n readonly infinite = input(this.options.infinite);\n readonly resizeMode = input<CanvasResizeMode>(this.options.resizeMode);\n readonly horizontal = input(false);\n\n /**\n * Real life-size width of the canvas\n */\n readonly width = input(100);\n /**\n * Real life-size height of the canvas\n */\n readonly height = input(100);\n\n /**\n * Canvas params\n */\n readonly params = input({}, {\n transform: (v: InteractiveCanvasParams) => v || {}\n });\n\n /**\n * Model signal for selected index\n */\n readonly selectedIndex = model(0);\n /**\n * Relative offset of the panning. It is based on the rendered canvas height\n */\n readonly panOffset = input(this.options.panOffset);\n readonly renderCtx = input<Record<string, any>>({});\n readonly beforeItems = input<ReadonlyArray<InteractiveCanvasRenderer>>([]);\n readonly afterItems = input<ReadonlyArray<InteractiveCanvasRenderer>>([]);\n\n readonly onRotate = output<number>();\n readonly onItemPan = output<InteractivePanEvent>();\n readonly onItemPanned = output<InteractivePanEvent>();\n readonly onPan = output<InteractivePanEvent>();\n readonly onPanned = output<InteractivePanEvent>();\n\n readonly itemList = contentChildren(InteractiveItemComponent);\n\n get isInfinite(): boolean {\n return this.infinite();\n }\n\n get realWidth(): number {\n return this.width();\n }\n\n get realHeight(): number {\n return this.height();\n }\n\n get items(): ReadonlyArray<InteractiveItemComponent> {\n return this.itemList();\n }\n\n get canvas(): HTMLCanvasElement {\n return this.canvasElem?.nativeElement;\n }\n\n get lockedItem(): InteractiveItemComponent {\n return this.items[this.lockedIndex];\n }\n\n get selectedItem(): InteractiveItemComponent {\n return this.items[this.selectedIndex()];\n }\n\n set selectedItem(item: InteractiveItemComponent) {\n const ix = !item ? -1 : this.items.indexOf(item);\n const selected = untracked(() => this.selectedIndex());\n if (ix === selected) return;\n this.selectedIndex.set(ix);\n }\n\n get hoveredItem(): InteractiveItemComponent {\n return this.items[this.hoveredIndex];\n }\n\n set hoveredItem(item: InteractiveItemComponent) {\n this.hoveredIndex = !item ? -1 : this.items.indexOf(item);\n }\n\n xRange: RangeCoords;\n yRange: RangeCoords;\n\n ratio: number;\n styles: CSSStyleDeclaration;\n ctx: CanvasRenderingContext2D;\n canvasWidth: number;\n canvasHeight: number;\n fullHeight: number;\n viewRatio: number;\n\n rotation: number;\n basePan: number;\n cycles: number[];\n excludedAreas: Rect[];\n\n protected tempCanvas: HTMLCanvasElement;\n protected shouldDraw: boolean;\n protected hoveredIndex: number;\n\n @ViewChild(\"containerElem\", {static: true})\n protected containerElem: ElementRef<HTMLDivElement>;\n\n @ViewChild(\"canvasElem\", {static: true})\n protected canvasElem: ElementRef<HTMLCanvasElement>;\n\n protected touched: boolean;\n protected panStartRotation: number;\n protected panStartPos: IPoint;\n protected lockedIndex: number;\n protected oldLength: number;\n\n constructor() {\n this.tempCanvas = this.universal.isServer ? null : document.createElement(\"canvas\");\n this.shouldDraw = !this.universal.isServer;\n this.hoveredIndex = null;\n this.oldLength = 0;\n\n this.xRange = [0, 1];\n this.yRange = [0, 1];\n this.ratio = 1;\n this.styles = null;\n this.ctx = null;\n this.canvasWidth = 0;\n this.canvasHeight = 0;\n this.rotation = 0;\n this.basePan = 0;\n this.cycles = [0];\n this.excludedAreas = [];\n\n this.touched = false;\n this.panStartRotation = 0;\n this.panStartPos = Point.Zero;\n\n effect(() => {\n const items = this.itemList();\n const index = untracked(() => this.selectedIndex());\n const grow = items.length > this.oldLength;\n items.forEach((item, ix) => {\n item.canvas = this;\n item.index = ix;\n });\n this.fixRotation();\n const last = Math.max(0, items.length - 1);\n const selected = Math.min(grow ? last : index, last);\n this.selectedItem = items[selected];\n this.oldLength = items.length;\n });\n\n effect(() => {\n const realWidth = this.width();\n const realHeight = this.height();\n const params = this.params();\n this.xRange = normalizeRange(params.xRange || [0, realWidth]);\n this.yRange = normalizeRange(params.yRange || [0, realHeight]);\n this.resize();\n });\n }\n\n ngOnInit() {\n this.redraw();\n }\n\n ngOnDestroy() {\n this.shouldDraw = false;\n }\n\n async tempPaint(cb: CanvasPaintFunc): Promise<void> {\n const mainCanvas = this.canvas;\n const mainCtx = mainCanvas.getContext(\"2d\");\n const canvas = this.tempCanvas;\n const ctx = canvas.getContext(\"2d\");\n const transform = mainCtx.getTransform();\n\n canvas.width = mainCanvas.width;\n canvas.height = mainCanvas.height;\n\n ctx.globalCompositeOperation = \"source-over\";\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.setTransform(transform);\n\n mainCtx.resetTransform();\n mainCtx.globalCompositeOperation = await cb(ctx) || \"source-over\";\n mainCtx.drawImage(canvas, 0, 0);\n mainCtx.globalCompositeOperation = \"source-over\";\n mainCtx.setTransform(transform);\n\n ctx.resetTransform();\n }\n\n resize(): void {\n const realWidth = this.width();\n const realHeight = this.height();\n const horizontal = this.horizontal();\n const resizeMode = this.resizeMode();\n if (!this.canvasElem || !this.containerElem) return;\n\n const canvas = this.canvasElem.nativeElement;\n const container = this.containerElem.nativeElement;\n // Calculate canvas size\n const axisX = horizontal ? \"height\" : \"width\";\n const axisY = horizontal ? \"width\" : \"height\";\n const resize = resizeMode == \"fit\" ? Math.min : Math.max;\n canvas.width = container.clientWidth;\n canvas.height = container.clientHeight;\n this.ratio = resize(canvas[axisX] / realWidth, canvas[axisY] / realHeight);\n if (resizeMode == \"fit\") {\n canvas[axisX] = realWidth * this.ratio;\n canvas[axisY] = realHeight * this.ratio;\n }\n this.styles = getComputedStyle(canvas);\n this.ctx = canvas.getContext(\"2d\");\n this.canvasWidth = canvas[axisX];\n this.canvasHeight = canvas[axisY];\n this.fullHeight = this.realHeight * this.ratio;\n this.viewRatio = Math.round(this.canvasHeight / this.fullHeight * 100) / 100;\n this.fixRotation();\n }\n\n onTouchStart($event: TouchEvent): void {\n this.hoveredIndex = this.getIndexUnderPointer($event.touches.item(0));\n this.lockedIndex = this.hoveredIndex;\n this.selectItem();\n }\n\n @HostListener(\"window:touchend\")\n onTouchEnd(): void {\n this.touched = false;\n }\n\n onMouseDown($event: MouseEvent): void {\n this.lockedIndex = this.getIndexUnderPointer($event);\n this.selectItem();\n }\n\n @HostListener(\"window:mouseup\")\n onMouseUp(): void {\n this.touched = false;\n }\n\n onMouseMove($event: MouseEvent): void {\n if (this.touched) return;\n this.hoveredIndex = this.getIndexUnderPointer($event);\n this.updateCursor();\n }\n\n onMouseLeave(): void {\n if (this.touched) return;\n this.hoveredIndex = null;\n this.updateCursor();\n }\n\n onPanStart(): void {\n this.panStartRotation = this.rotation;\n this.panStartPos = this.lockedItem?.position || Point.Zero;\n }\n\n onPanMove($event: any): void {\n const item = this.lockedItem;\n const horizontal = untracked(() => this.horizontal());\n const deltaX = $event.deltaX / this.ratio;\n const deltaY = $event.deltaY / this.ratio;\n const data: InteractivePanEvent = {\n canvas: this,\n item,\n deltaX,\n deltaY\n };\n if (horizontal) {\n data.deltaX = -deltaY;\n data.deltaY = +deltaX;\n }\n if (item) {\n item.moveTo(this.panStartPos.x + data.deltaX, this.panStartPos.y + data.deltaY);\n this.onItemPan.emit(data);\n return;\n }\n const infinite = untracked(() => this.infinite());\n if (!infinite) return;\n this.rotation = this.panStartRotation + (horizontal ? deltaX : deltaY) / this.realHeight * 360;\n this.fixRotation();\n this.onPan.emit(data);\n }\n\n onPanEnd(): void {\n const item = this.lockedItem;\n const data: InteractivePanEvent = {\n canvas: this,\n deltaX: 0,\n deltaY: 0,\n item\n };\n if (item) {\n item.moveEnd();\n this.onItemPanned.emit(data);\n } else {\n this.onPanned.emit(data);\n }\n this.lockedIndex = -1;\n }\n\n protected fixRotation(): void {\n // No need to track params changes because this function will be called from an effect\n // already depending on params anyway\n const params = untracked(() => this.params());\n if (this.fullHeight <= 0) return;\n this.rotation = overflow(Math.round(this.rotation * 100) / 100, -180, 180);\n this.basePan = this.rotation / 360 * this.fullHeight\n + this.canvasHeight * untracked(() => this.panOffset());\n this.cycles = this.infinite\n ? [this.basePan - this.fullHeight, this.basePan, this.basePan + this.fullHeight] : [0];\n this.excludedAreas = (params.excludedAreas || []).flatMap(coords => {\n const x = coords.x * this.ratio;\n const y = coords.y * this.ratio;\n const width = coords.width * this.ratio;\n const height = coords.height * this.ratio;\n return this.cycles.map(cycle => {\n return new Rect(x, y + cycle, width, height);\n });\n });\n this.items.forEach(item => {\n item.canvasParams = params;\n item.calcShapes();\n });\n this.onRotate.emit(this.rotation);\n }\n\n protected selectItem(): void {\n this.touched = true;\n const item = this.items[this.lockedIndex];\n if (!item) return;\n this.selectedItem = item;\n }\n\n protected toCanvasPoint(pointer: InteractiveCanvasPointer): Point {\n if (!pointer || !this.canvas) return null;\n const canvasRect = this.canvas?.getBoundingClientRect();\n return this.horizontal()\n ? new Point(canvasRect.bottom - pointer.clientY, pointer.clientX - canvasRect.left)\n : new Point(pointer.clientX - canvasRect.left, pointer.clientY - canvasRect.top);\n }\n\n protected getIndexUnderPointer(pointer: InteractiveCanvasPointer): number {\n const point = this.toCanvasPoint(pointer);\n if (!point || !this.items) return -1;\n const length = this.items.length;\n for (let ix = 0; ix < length; ix++) {\n const item = this.items[ix];\n if (item?.hit(point)) {\n return item.disabled ? -1 : ix;\n }\n }\n return -1;\n }\n\n protected updateCursor(): void {\n const cursor = this.getCursor();\n this.renderer.setStyle(this.containerElem.nativeElement, \"cursor\", cursor);\n }\n\n protected getCursor(): string {\n const hovered = this.hoveredItem;\n if (!hovered) return \"default\";\n switch (hovered.direction) {\n case \"free\":\n return \"all-scroll\";\n case \"horizontal\":\n return \"\";\n case \"vertical\":\n return \"row-resize\";\n }\n return \"pointer\";\n }\n\n protected redraw() {\n if (!this.shouldDraw) return;\n if (!this.ctx) {\n requestAnimationFrame(() => this.redraw());\n return;\n }\n this.draw().then(() => {\n requestAnimationFrame(() => this.redraw());\n });\n }\n\n protected async drawItems(): Promise<void> {\n const ctx = this.ctx;\n const lockedItem = this.lockedItem;\n for (const item of this.items) {\n if (item !== lockedItem) {\n await this.drawItem(ctx, item);\n }\n }\n if (!lockedItem) return;\n await this.drawItem(ctx, lockedItem);\n }\n\n protected async drawItem(ctx: CanvasRenderingContext2D, item: InteractiveCanvasItem): Promise<void> {\n for (const shape of item.shapes) {\n ctx.save();\n ctx.translate(shape.x, shape.y);\n ctx.setLineDash(emptyDash);\n ctx.lineWidth = 1;\n ctx.strokeStyle = \"black\";\n ctx.fillStyle = \"white\";\n await item.draw(ctx, shape);\n ctx.restore();\n }\n }\n\n protected async draw() {\n const ctx = this.ctx;\n const canvas = ctx.canvas;\n if (canvas.width < 1 || canvas.height < 1) return;\n ctx.lineWidth = 1;\n ctx.strokeStyle = \"black\";\n ctx.fillStyle = \"white\";\n ctx.setLineDash(emptyDash);\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.save();\n if (this.horizontal()) {\n ctx.rotate(-Math.PI / 2);\n ctx.translate(-this.canvasWidth, 0);\n }\n const renderCtx = untracked(() => this.renderCtx());\n const beforeItems = untracked(() => this.beforeItems());\n const afterItems = untracked(() => this.afterItems());\n try {\n for (const renderer of beforeItems) {\n await renderer(this, renderCtx);\n }\n await this.drawItems();\n for (const renderer of afterItems) {\n await renderer(this, renderCtx);\n }\n } catch (e) {\n console.warn(`There was an error rendering the canvas: ${e}`);\n }\n ctx.restore();\n }\n}\n","<div #containerElem\n [ngClass]=\"['interactive-canvas-container', horizontal() ? 'horizontal' : 'vertical']\"\n (resize)=\"resize()\"\n (touchstart)=\"onTouchStart($event)\"\n (mousedown)=\"onMouseDown($event)\"\n (mousemove)=\"onMouseMove($event)\"\n (mouseleave)=\"onMouseLeave()\"\n (panend)=\"onPanEnd()\"\n (panmove)=\"onPanMove($event)\"\n (panstart)=\"onPanStart()\">\n <canvas #canvasElem class=\"interactive-canvas-element\"></canvas>\n</div>\n","import {Component, effect, input, untracked} from \"@angular/core\";\n\nimport {IShape} from \"../../common-types\";\nimport {Circle, Rect} from \"../../utils/geometry\";\nimport {InteractiveItemComponent} from \"./interactive-item.component\";\n\n@Component({\n standalone: false,\n selector: \"interactive-circle\",\n template: \"\",\n providers: [\n {provide: InteractiveItemComponent, useExisting: InteractiveCircleComponent},\n ]\n})\nexport class InteractiveCircleComponent extends InteractiveItemComponent {\n\n readonly radius = input(10);\n\n constructor() {\n super();\n effect(() => {\n const radius = this.radius();\n this.mFrame = new Rect(0, 0, radius * 2, radius * 2);\n });\n }\n\n protected calcShape(x: number, y: number): IShape {\n const radius = untracked(() => this.radius());\n return new Circle(x, y, radius * this.canvas.ratio);\n }\n}\n","import {Component, effect, input, untracked} from \"@angular/core\";\nimport {IShape} from \"../../common-types\";\nimport {Rect} from \"../../utils/geometry\";\nimport {InteractiveItemComponent} from \"./interactive-item.component\";\n\n@Component({\n standalone: false,\n selector: \"interactive-rect\",\n template: \"\",\n providers: [\n {provide: InteractiveItemComponent, useExisting: InteractiveRectComponent},\n ]\n})\nexport class InteractiveRectComponent extends InteractiveItemComponent {\n\n readonly width = input(10);\n readonly height = input(10);\n readonly rotation = input(0);\n\n constructor() {\n super();\n effect(() => {\n this.mFrame = new Rect(0, 0, this.width(), this.height(), this.rotation());\n });\n }\n\n protected calcShape(x: number, y: number): IShape {\n const ratio = this.canvas.ratio;\n const width = untracked(() => this.width());\n const height = untracked(() => this.height());\n const rotation = untracked(() => this.rotation());\n return new Rect(x, y, width * ratio, height * ratio, rotation);\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n effect,\n input,\n model,\n output, signal,\n TemplateRef,\n ViewEncapsulation\n} from \"@angular/core\";\nimport {ButtonSize, ButtonType, TabOption, TabValue} from \"../../common-types\";\nimport {TabsItemDirective} from \"../../directives/tabs-item.directive\";\nimport {switchClass} from \"../../utils/misc\";\n\nexport interface ExtendedTabOption extends TabOption {\n active?: boolean;\n template?: TemplateRef<any>;\n className?: string;\n}\n\n@Component({\n standalone: false,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: \"tabs\",\n templateUrl: \"./tabs.component.html\",\n styleUrls: [\"./tabs.component.scss\"]\n})\nexport class TabsComponent {\n\n readonly value = model<TabValue>();\n readonly options = input<TabOption[]>([]);\n readonly type = input(\"primary\" as ButtonType);\n readonly size = input(\"normal\" as ButtonSize);\n readonly testId = input(\"tabs\");\n readonly tabsClass = input(\"basic-tabs\");\n readonly tabItems = contentChildren(TabsItemDirective);\n readonly selectedChange = output<TabOption>();\n readonly template = signal<TemplateRef<any>>(null);\n\n readonly tabs = computed(() => {\n const options = Array.from(this.options() || []) as ExtendedTabOption[];\n const current = this.value();\n this.tabItems().forEach(item => {\n const value = item.value();\n switchClass(item.element?.nativeElement, \"hidden-tab\", current !== value);\n\n if (options.some(o => o.value === value)) return;\n\n const label = item.label();\n\n if (!label) return;\n\n options.push({\n value,\n label,\n classes: item.classes(),\n tooltip: item.tooltip(),\n icon: item.icon(),\n disabled: item.disabled(),\n template: item.template\n });\n });\n options.forEach(o => {\n const active = current === o.value;\n const classes = (Array.isArray(o.classes) ? o.classes : [o.classes || \"\"]).filter(c => !!c);\n classes.push(active ? \"active\" : \"inactive\");\n o.active = active;\n o.className = classes.join(\" \");\n });\n return options;\n });\n\n constructor() {\n effect(() => {\n const tabOptions = this.tabs();\n const selectedOption = tabOptions.find(o => o.active);\n if (tabOptions.length && !selectedOption) {\n this.value.set(tabOptions[0].value);\n return;\n }\n if (selectedOption) {\n this.template.set(selectedOption.template);\n }\n });\n }\n\n select(option: TabOption): void {\n this.value.set(option.value);\n this.selectedChange.emit(option);\n }\n}\n","@let tabList = tabs();\n@let tabType = type();\n@let tabSize = size();\n@let tabTemplate = template();\n@let testIdPrefix = testId() || \"tabs\";\n@if (tabList.length) {\n <ul class=\"ui-tabs\" [ngClass]=\"[tabsClass(), 'type-' + tabType]\" [attr.data-testid]=\"testIdPrefix\">\n @for (option of tabList; track option.value) {\n <li [ngClass]=\"option.className\" [attr.data-testid]=\"testIdPrefix + '-' + option.value\">\n <btn [label]=\"option.label\"\n [tooltip]=\"option.tooltip\"\n [icon]=\"option.icon\"\n [disabled]=\"option.disabled\"\n [type]=\"option.active ? tabType : 'transparent'\"\n [size]=\"tabSize\"\n (click)=\"select(option)\"></btn>\n </li>\n }\n </ul>\n}\n@if (tabTemplate) {\n <div class=\"ui-tab\">\n <ng-container [ngTemplateOutlet]=\"tabTemplate\"></ng-container>\n </div>\n}\n<ng-content></ng-content>\n","import {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n Input,\n OnChanges,\n QueryList,\n SimpleChanges, TemplateRef, ViewChild\n} from \"@angular/core\";\nimport {UnorderedListStyle, UnorderedListTemplates, UnorderedListTemplate} from \"../../common-types\";\nimport {ObjectUtils} from \"../../utils/object.utils\";\nimport {UnorderedListTemplateDirective} from \"../../directives/unordered-list-template.directive\";\n\n@Component({\n standalone: false,\n selector: \"unordered-list\",\n templateUrl: \"./unordered-list.component.html\"\n})\nexport class UnorderedListComponent implements OnChanges, AfterContentInit, AfterViewInit {\n\n @Input() data: any;\n @Input() keyPrefix: string;\n @Input() listStyle: UnorderedListStyle;\n @Input() path: string;\n @Input() level: number;\n @Input() templates: UnorderedListTemplate[];\n\n isArray: boolean;\n isObject: boolean;\n defaultTemplates: UnorderedListTemplates;\n\n @ContentChildren(UnorderedListTemplateDirective)\n private templateDirectives: QueryList<UnorderedListTemplateDirective>;\n\n @ViewChild(\"defaultKeyTemplate\")\n private defaultKeyTemplate: TemplateRef<any>;\n @ViewChild(\"defaultValueTemplate\")\n private defaultValueTemplate: TemplateRef<any>;\n @ViewChild(\"defaultItemTemplate\")\n private defaultItemTemplate: TemplateRef<any>;\n\n constructor(private cdr: ChangeDetectorRef) {\n this.keyPrefix = \"\";\n this.listStyle = \"table\";\n this.path = \"\";\n this.level = 0;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.isArray = ObjectUtils.isArray(this.data);\n this.isObject = ObjectUtils.isObject(this.data);\n }\n\n ngAfterContentInit(): void {\n const templates = this.templateDirectives.toArray();\n this.templates = this.templates ? this.templates.concat(templates) : templates;\n this.cdr.detectChanges();\n }\n\n ngAfterViewInit(): void {\n this.defaultTemplates = {\n key: this.defaultKeyTemplate,\n value: this.defaultValueTemplate,\n item: this.defaultItemTemplate\n };\n this.cdr.detectChanges();\n }\n}\n","<ng-template let-keyPrefix=\"keyPrefix\" let-key=\"item.key\" let-isArray=\"isArray\" #defaultKeyTemplate>\n {{ (keyPrefix ? keyPrefix + key : key) | translate }}:\n</ng-template>\n<ng-template let-keyPrefix=\"keyPrefix\" let-listStyle=\"listStyle\" let-val=\"item.value\" let-path=\"path\"\n let-templates=\"templates\" let-isObject=\"valueIsObject\" let-isArray=\"valueIsArray\" #defaultValueTemplate>\n <ng-template #value>\n <span [innerHTML]=\"val\"></span>\n </ng-template>\n <unordered-list [data]=\"val\"\n [keyPrefix]=\"keyPrefix\"\n [listStyle]=\"listStyle\"\n [path]=\"path\"\n [level]=\"level + 1\"\n [templates]=\"templates\"\n *ngIf=\"(isObject || isArray); else value\"></unordered-list>\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 [unorderedListItem]=\"item\"\n type=\"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 [unorderedListItem]=\"item\"\n type=\"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 {\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Inject,\n Input,\n OnChanges,\n Output,\n ViewChild,\n ViewEncapsulation\n} from \"@angular/core\";\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from \"@angular/forms\";\nimport {HttpErrorResponse, HttpEventType, HttpResponse} from \"@angular/common/http\";\nimport {lastValueFrom} from \"rxjs\";\nimport {map} from \"rxjs/operators\";\n\nimport {\n IApiService,\n IBaseHttpClient,\n IFileUploadProcess,\n IFileUploadResult,\n IToasterService,\n UploadType\n} from \"../../common-types\";\nimport {API_SERVICE, TOASTER_SERVICE} from \"../../tokens\";\n\nimport {ArrayUtils} from \"../../utils/array.utils\";\nimport {ObjectUtils} from \"../../utils/object.utils\";\nimport {FileUtils} from \"../../utils/file.utils\";\nimport {BtnComponent} from \"../btn/btn.component\";\nimport {getRoot} from \"../../utils/misc\";\n\n@Component({\n standalone: false,\n selector: \"upload\",\n styleUrls: [\"./upload.component.scss\"],\n templateUrl: \"./upload.component.html\",\n encapsulation: ViewEncapsulation.None,\n providers: [\n {provide: NG_VALUE_ACCESSOR, useExisting: UploadComponent, multi: true}\n ],\n})\nexport class UploadComponent implements ControlValueAccessor, OnChanges {\n\n @Input() value: UploadType | UploadType[];\n @Input() disabled: boolean;\n @Input() inline: boolean;\n @Input() accept: string | string[];\n @Input() baseUrl: string;\n @Input() message: string;\n @Input() multiple: boolean;\n @Input() buttonText: string;\n @Input() makeUpload: (f: File) => any;\n @Input() preProcess: (f: File) => boolean;\n @Output() onUploaded: EventEmitter<IFileUploadResult[]>;\n @Output() onRemove: EventEmitter<UploadType[]>;\n\n @ViewChild(\"uploadBtn\")\n uploadBtn: BtnComponent;\n\n acceptAttr: string;\n isImage: boolean;\n dropAllowed: boolean;\n processing: IFileUploadProcess[];\n\n onChange: Function;\n onTouched: Function;\n\n protected rootElem: DocumentOrShadowRoot\n protected fileImageCache: Map<Blob, string>;\n protected acceptTypes: string[];\n\n get http(): IBaseHttpClient {\n return this.api.client;\n }\n\n get root(): DocumentOrShadowRoot {\n this.rootElem = this.rootElem || getRoot(this.element.nativeElement);\n return this.rootElem;\n }\n\n constructor(\n readonly cdr: ChangeDetectorRef,\n readonly element: ElementRef<HTMLElement>,\n @Inject(API_SERVICE) private api: IApiService,\n @Inject(TOASTER_SERVICE) private toaster: IToasterService\n ) {\n this.value = null;\n this.disabled = false;\n this.inline = false;\n this.fileImageCache = new Map();\n this.buttonText = \"button.select-files\";\n this.onUploaded = new EventEmitter();\n this.onRemove = new EventEmitter();\n this.onChange = () => {\n };\n this.onTouched = () => {\n };\n }\n\n onDragEnter(ev: DragEvent): void {\n if (this.disabled) {\n ev.preventDefault();\n return;\n }\n const transfer = ev.dataTransfer;\n let length = transfer.items?.length ?? 0;\n for (let i = 0; i < length; i++) {\n const item = transfer.items[i];\n if (this.checkType(item.type)) {\n ev.dataTransfer.effectAllowed = \"copy\";\n ev.dataTransfer.dropEffect = \"copy\";\n this.dropAllowed = true;\n return;\n }\n }\n length = transfer.files?.length ?? 0;\n for (let i = 0; i < length; i++) {\n const file = transfer.files[i];\n if (this.checkType(file.type)) {\n ev.dataTransfer.effectAllowed = \"copy\";\n ev.dataTransfer.dropEffect = \"copy\";\n this.dropAllowed = true;\n return;\n }\n }\n ev.preventDefault();\n }\n\n onDrop(): void {\n this.dropAllowed = false;\n }\n\n ngOnChanges(): void {\n this.accept = this.accept || \"\";\n this.acceptTypes = ObjectUtils.isStringWithValue(this.accept)\n ? this.accept.split(\",\")\n : (ObjectUtils.isArray(this.accept) ? this.accept : []);\n this.acceptTypes = this.acceptTypes.map(t => t.split(\"/\").pop().replace(/\\./, \"\"));\n this.acceptAttr = this.acceptTypes.map(t => `.${t}`).join(\",\");\n this.isImage = ArrayUtils.has(this.acceptTypes, \"png\", \"jpg\", \"jpeg\", \"webp\", \"gif\");\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: any) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n writeValue(value: UploadType | UploadType[]) {\n this.value = value;\n this.cdr.markForCheck();\n this.onChange(this.value);\n this.onTouched(this.value);\n }\n\n setDisabledState(val: boolean) {\n this.disabled = val === true;\n this.cdr.markForCheck();\n }\n\n removeItem(index?: number): void {\n if (this.multiple) {\n const current = Array.from((this.value as UploadType[]) || []);\n current.splice(index, 1);\n this.writeValue(current);\n this.onRemove.emit(current);\n return;\n }\n this.writeValue(null);\n this.onRemove.emit([]);\n }\n\n onInputClick(ev: MouseEvent): void {\n if (this.uploadBtn.contains(this.root.activeElement) && !this.processing) return;\n ev.preventDefault();\n }\n\n onInputChange(ev: Event): void {\n const input = ev.currentTarget as HTMLInputElement;\n if (this.processing) {\n input.value = \"\";\n return;\n }\n const length = input.files.length;\n if (length == 0) {\n this.writeValue(this.multiple ? [] : null);\n return;\n }\n const files: File[] = [];\n for (let i = 0; i < length; i++) {\n const file = input.files.item(i);\n if (this.checkType(file.type)) {\n files.push(file);\n }\n }\n if (files.length == 0) {\n this.toaster.error(\"message.invalid-files.error\");\n return;\n }\n this.processFiles(this.multiple ? files : files.slice(0, 1)).then(results => {\n const ids = results.map(t => t.file || t._id || t.id);\n this.writeValue(this.multiple\n ? Array.from(this.value as UploadType[]).concat(ids)\n : (ids[0] || this.value)\n );\n this.onUploaded.emit(results);\n });\n input.value = \"\";\n }\n\n getUrl(image: any): string {\n if (ObjectUtils.isBlob(image)) {\n if (!this.fileImageCache.has(image)) {\n this.fileImageCache.set(image, URL.createObjectURL(image));\n }\n return this.fileImageCache.get(image);\n }\n const url = !image ? null : image.imageUrl || image;\n if (!ObjectUtils.isString(url)) return null;\n if (url.startsWith(\"data:\")) return url;\n const baseUrl = this.baseUrl || this.api.url(\"assets\");\n const query = this.isImage ? `?type=preview` : ``;\n return `${baseUrl}/${url}${query}`;\n }\n\n async processFiles(files: File[]): Promise<IFileUploadResult[]> {\n if (this.processing) return null;\n const headers = this.http.makeHeaders();\n const makeUpload = ObjectUtils.isFunction(this.makeUpload) ? this.makeUpload : f => {\n const form = new FormData();\n form.append(\"file\", f);\n return form;\n };\n const preProcess = ObjectUtils.isFunction(this.preProcess) ? this.preProcess : () => {\n return false;\n };\n this.processing = files.filter(f => !preProcess(f)).map(file => {\n const process: IFileUploadProcess = {\n file,\n progress: 0\n };\n process.promise = FileUtils.getFilePreview(file).then(preview => {\n process.preview = preview;\n this.fileImageCache.set(file, preview);\n this.cdr.detectChanges();\n });\n return process;\n });\n const baseUrl = this.baseUrl || this.api.url(\"assets\");\n const requests = this.processing.map(async (p): Promise<IFileUploadResult> => {\n await p.promise;\n if (this.inline) {\n return {\n filename: p.file?.name,\n file: p.file,\n };\n }\n const request = this.http.post(baseUrl, makeUpload(p.file), {\n headers, observe: \"events\", reportProgress: true\n }).pipe(map(value => {\n if (value.type === HttpEventType.UploadProgress) {\n p.progress = Math.round(value.loaded / value.total * 100);\n this.cdr.detectChanges();\n }\n return value;\n }));\n return lastValueFrom(request)\n .then((res: HttpResponse<any>) => {\n const body = res.body;\n if (!ObjectUtils.isObject(body)) {\n return {id: body};\n }\n return body;\n }, (e: HttpErrorResponse) => {\n this.toaster.error(e.error?.message || e.message || `Can\"t upload file: ${p.file.name}`);\n return null;\n });\n });\n const results = await Promise.all(requests);\n this.processing = null;\n this.cdr.detectChanges();\n return results.filter(r => r !== null);\n }\n\n protected checkType(type: string): boolean {\n if (this.acceptTypes.length == 0) return true;\n type = type.split(\"/\").pop().replace(/\\./g, \"\");\n return this.acceptTypes.includes(type);\n }\n}\n","<ng-template #itemBgTemplate let-bg=\"bg\">\n @if (bg) {\n <div class=\"upload-item-bg\" [ngStyle]=\"{backgroundImage: `url('${bg}')`}\">\n <div>\n <img alt=\"item image\" [src]=\"bg | safe: 'url'\" />\n </div>\n </div>\n }\n</ng-template>\n<ng-template #itemTemplate let-item=\"item\" let-index=\"index\">\n <div class=\"upload-item\">\n <ng-container [ngTemplateOutlet]=\"itemBgTemplate\"\n [ngTemplateOutletContext]=\"{bg: isImage || (item | isType: 'file') ? getUrl(item) : null}\">\n </ng-container>\n @if (!disabled) {\n <close-btn class=\"remove-item-btn\" (click)=\"removeItem(index)\"></close-btn>\n }\n<!-- <btn size=\"small\" class=\"download-item-btn\" icon=\"download\"></btn>-->\n </div>\n</ng-template>\n\n<div class=\"file-upload\" [ngClass]=\"{disabled: disabled}\">\n <div class=\"upload-input\" [ngClass]=\"{'drop-allowed': dropAllowed}\">\n <input type=\"file\"\n #input\n [disabled]=\"disabled\"\n [multiple]=\"multiple\"\n [accept]=\"acceptAttr\"\n (dragenter)=\"onDragEnter($event)\"\n (dragleave)=\"onDrop()\"\n (drop)=\"onDrop()\"\n (click)=\"onInputClick($event)\"\n (blur)=\"onTouched($event)\"\n (change)=\"onInputChange($event)\"/>\n @if (message) {\n <div class=\"upload-message\"\n [ngClass]=\"{'has-value': $any(value)?.length}\"\n [innerHTML]=\"message | translate | safe:'html'\">\n </div>\n }\n <div class=\"upload-container\">\n\n <ng-container [ngTemplateOutlet]=\"itemTemplate\"\n [ngTemplateOutletContext]=\"{item: value, index: 0}\"\n *ngIf=\"!multiple && value\">\n </ng-container>\n <ng-container *ngIf=\"multiple\">\n <ng-container [ngTemplateOutlet]=\"itemTemplate\"\n [ngTemplateOutletContext]=\"{item: item, index: ix}\"\n *ngFor=\"let item of $any(value); let ix = index\">\n </ng-container>\n </ng-container>\n\n <div class=\"upload-item\" *ngFor=\"let proc of processing\">\n <ng-container [ngTemplateOutlet]=\"itemBgTemplate\"\n [ngTemplateOutletContext]=\"{bg: proc.preview}\">\n </ng-container>\n <div class=\"upload-progress\">\n <div class=\"upload-progress-num\">{{ proc.progress }}%</div>\n <div class=\"upload-progress-bar\" [ngStyle]=\"{width: proc.progress + '%'}\">\n\n </div>\n </div>\n </div>\n\n </div>\n @if (!disabled) {\n <btn class=\"upload-btn\" #uploadBtn [label]=\"buttonText\" (click)=\"input.click()\"></btn>\n }\n </div>\n</div>\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input, OnChanges,\n Output,\n ViewChild,\n ViewEncapsulation\n} from \"@angular/core\";\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from \"@angular/forms\";\nimport {getRoot} from \"../../utils/misc\";\nimport {LoaderUtils} from \"../../utils/loader.utils\";\n\ninterface Pell {\n content: HTMLElement;\n}\n\ndeclare const pell: {init: (config: Record<string, unknown>) => Pell};\n\n@Component({\n standalone: false,\n selector: \"wysiwyg\",\n styleUrls: [\"./wysiwyg.component.scss\"],\n templateUrl: \"./wysiwyg.component.html\",\n encapsulation: ViewEncapsulation.None,\n providers: [\n {provide: NG_VALUE_ACCESSOR, useExisting: WysiwygComponent, multi: true}\n ],\n})\nexport class WysiwygComponent implements ControlValueAccessor, OnChanges, AfterViewInit {\n\n @Input() value: string;\n @Input() disabled: boolean;\n @Output() valueChange: EventEmitter<string>;\n\n onChange: Function;\n onTouched: Function;\n\n protected rootElem: DocumentOrShadowRoot;\n protected editor: Pell;\n\n @ViewChild(\"editor\")\n protected editorElem: ElementRef<HTMLDivElement>;\n\n get root(): DocumentOrShadowRoot {\n this.rootElem = this.rootElem || getRoot(this.element.nativeElement);\n return this.rootElem;\n }\n\n get rootNode(): Node {\n return this.root as any;\n }\n\n constructor(\n readonly cdr: ChangeDetectorRef,\n readonly element: ElementRef<HTMLElement>\n ) {\n this.value = \"\";\n this.onChange = () => {\n };\n this.onTouched = () => {\n };\n }\n\n ngAfterViewInit(): void {\n Promise.all([\n LoaderUtils.loadScript(\"https://unpkg.com/pell\"),\n LoaderUtils.loadStyle(\"https://unpkg.com/pell/dist/pell.min.css\", this.rootNode)\n ]).then(() => {\n // Initialize pell on an HTMLElement\n this.editor = pell.init({\n // <HTMLElement>, required\n element: this.editorElem.nativeElement,\n\n // <Function>, required\n // Use the output html, triggered by element's `oninput` event\n onChange: (html: string) => {\n this.value = html;\n this.onChange(this.value);\n this.onTouched(this.value);\n },\n\n defaultParagraphSeparator: \"p\",\n actions: [\n \"bold\",\n \"italic\",\n \"underline\"\n ],\n });\n this.editor.content.innerHTML = this.value || \"\";\n });\n }\n\n ngOnChanges(): void {\n if (!this.editor) return;\n this.editor.content.innerHTML = this.value || \"\";\n }\n\n registerOnChange(fn: any) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n writeValue(value: string) {\n this.value = value;\n this.cdr.markForCheck();\n this.ngOnChanges();\n }\n}\n","<div class=\"wysiwyg form-control\" [ngClass]=\"{disabled: disabled}\">\n <div #editor></div>\n</div>\n","import {ErrorHandler} from \"@angular/core\";\nimport {EVENT_MANAGER_PLUGINS} from \"@angular/platform-browser\";\nimport {UrlSerializer} from \"@angular/router\";\nimport {DeviceDetectorService} from \"ngx-device-detector\";\n\nimport {AuthGuard} from \"./utils/auth.guard\";\nimport {AclService} from \"./services/acl.service\";\nimport {ApiService} from \"./services/api.service\";\nimport {StaticAuthService} from \"./services/auth.service\";\nimport {BaseHttpClient} from \"./services/base-http.client\";\nimport {BaseHttpService} from \"./services/base-http.service\";\nimport {ConfigService} from \"./services/config.service\";\nimport {BaseDialogService} from \"./services/base-dialog.service\";\nimport {ErrorHandlerService} from \"./services/error-handler.service\";\nimport {EventsService} from \"./services/events.service\";\nimport {FormatterService} from \"./services/formatter.service\";\nimport {GlobalTemplateService} from \"./services/global-template.service\";\nimport {IconService} from \"./services/icon.service\";\nimport {LanguageService} from \"./services/language.service\";\nimport {LocalHttpService} from \"./services/local-http.service\";\nimport {PromiseService} from \"./services/promise.service\";\nimport {SocketService} from \"./services/socket.service\";\nimport {OpenApiService} from \"./services/open-api.service\";\nimport {StateService} from \"./services/state.service\";\nimport {StaticLanguageService} from \"./services/static-language.service\";\nimport {StorageService} from \"./services/storage.service\";\nimport {BaseToasterService} from \"./services/base-toaster.service\";\nimport {CacheService} from \"./services/cache.service\";\nimport {ComponentLoaderService} from \"./services/component-loader.service\";\nimport {TranslatedUrlSerializer} from \"./services/translated-url.serializer\";\nimport {UniversalService} from \"./services/universal.service\";\nimport {DragDropEventPlugin} from \"./plugins/drag-drop-event.plugin\";\nimport {ResizeEventPlugin} from \"./plugins/resize-event.plugin\";\nimport {ScrollEventPlugin} from \"./plugins/scroll-event.plugin\";\nimport {AsyncMethodBase} from \"./directives/async-method.base\";\nimport {AsyncMethodDirective} from \"./directives/async-method.directive\";\nimport {AsyncMethodTargetDirective} from \"./directives/async-method-target.directive\";\nimport {BackgroundDirective} from \"./directives/background.directive\";\nimport {ComponentLoaderDirective} from \"./directives/component-loader.directive\";\nimport {DynamicTableTemplateDirective} from \"./directives/dynamic-table-template.directive\";\nimport {GlobalTemplateDirective} from \"./directives/global-template.directive\";\nimport {IconDirective} from \"./directives/icon.directive\";\nimport {NgxTemplateOutletDirective} from \"./directives/ngx-template-outlet.directive\";\nimport {PaginationDirective} from \"./directives/pagination.directive\";\nimport {PaginationItemDirective} from \"./directives/pagination-item.directive\";\nimport {ResourceIfDirective} from \"./directives/resource-if.directive\";\nimport {StickyDirective} from \"./directives/sticky.directive\";\nimport {StickyClassDirective} from \"./directives/sticky-class.directive\";\nimport {DropdownDirective} from \"./directives/dropdown.directive\";\nimport {DropdownContentDirective} from \"./directives/dropdown-content.directive\";\nimport {DropdownToggleDirective} from \"./directives/dropdown-toggle.directive\";\nimport {TabsItemDirective} from \"./directives/tabs-item.directive\";\nimport {TabsTemplateDirective} from \"./directives/tabs-template.directive\";\nimport {UnorderedListItemDirective} from \"./directives/unordered-list-item.directive\";\nimport {UnorderedListTemplateDirective} from \"./directives/unordered-list-template.directive\";\n\nimport {ChunkPipe} from \"./pipes/chunk.pipe\";\nimport {EntriesPipe} from \"./pipes/entries.pipe\";\nimport {ExtraItemPropertiesPipe} from \"./pipes/extra-item-properties.pipe\";\nimport {FilterPipe} from \"./pipes/filter.pipe\";\nimport {FindPipe} from \"./pipes/find.pipe\";\nimport {FormatNumberPipe} from \"./pipes/format-number.pipe\";\nimport {GetOffsetPipe} from \"./pipes/get-offset.pipe\";\nimport {GetTypePipe} from \"./pipes/get-type.pipe\";\nimport {GetValuePipe} from \"./pipes/get-value.pipe\";\nimport {GlobalTemplatePipe} from \"./pipes/global-template.pipe\";\nimport {GroupByPipe} from \"./pipes/group-by.pipe\";\nimport {IncludesPipe} from \"./pipes/includes.pipe\";\nimport {IsTypePipe} from \"./pipes/is-type.pipe\";\nimport {JoinPipe} from \"./pipes/join.pipe\";\nimport {KeysPipe} from \"./pipes/keys.pipe\";\nimport {MapPipe} from \"./pipes/map.pipe\";\nimport {MaxPipe} from \"./pipes/max.pipe\";\nimport {MinPipe} from \"./pipes/min.pipe\";\nimport {PopPipe} from \"./pipes/pop.pipe\";\nimport {ReducePipe} from \"./pipes/reduce.pipe\";\nimport {RemapPipe} from \"./pipes/remap.pipe\";\nimport {ReplacePipe} from \"./pipes/replace.pipe\";\nimport {ReversePipe} from \"./pipes/reverse.pipe\";\nimport {RoundPipe} from \"./pipes/round.pipe\";\nimport {SafeHtmlPipe} from \"./pipes/safe-html.pipe\";\nimport {ShiftPipe} from \"./pipes/shift.pipe\";\nimport {SplitPipe} from \"./pipes/split.pipe\";\nimport {SyncAsyncPipe} from \"./pipes/sync-async.pipe\";\nimport {TranslatePipe} from \"./pipes/translate.pipe\";\nimport {ValuesPipe} from \"./pipes/values.pipe\";\n\nimport {BtnComponent} from \"./components/btn/btn.component\";\nimport {BtnDefaultComponent} from \"./components/btn-default/btn-default.component\";\nimport {ChipsComponent} from \"./components/chips/chips.component\";\nimport {CloseBtnComponent} from \"./components/close-btn/close-btn.component\";\nimport {DropListComponent} from \"./components/drop-list/drop-list.component\";\nimport {DropdownBoxComponent} from \"./components/dropdown-box/dropdown-box.component\";\nimport {DynamicTableComponent} from \"./components/dynamic-table/dynamic-table.component\";\nimport {FakeModuleComponent} from \"./components/fake-module/fake-module.component\";\nimport {IconComponent} from \"./components/icon/icon.component\";\nimport {IconDefaultComponent} from \"./components/icon-default/icon-default.component\";\nimport {InteractiveCanvasComponent} from \"./components/interactive-canvas/interactive-canvas.component\";\nimport {InteractiveItemComponent} from \"./components/interactive-canvas/interactive-item.component\";\nimport {InteractiveCircleComponent} from \"./components/interactive-canvas/interactive-circle.component\";\nimport {InteractiveRectComponent} from \"./components/interactive-canvas/interactive-rect.component\";\nimport {PaginationMenuComponent} from \"./components/pagination-menu/pagination-menu.component\";\nimport {TabsComponent} from \"./components/tabs/tabs.component\";\nimport {UnorderedListComponent} from \"./components/unordered-list/unordered-list.component\";\nimport {UploadComponent} from \"./components/upload/upload.component\";\nimport {WysiwygComponent} from \"./components/wysiwyg/wysiwyg.component\";\n\n// --- Pipes ---\nexport const pipes = [\n ChunkPipe,\n EntriesPipe,\n ExtraItemPropertiesPipe,\n FilterPipe,\n FindPipe,\n FormatNumberPipe,\n GetOffsetPipe,\n GetTypePipe,\n GetValuePipe,\n GlobalTemplatePipe,\n GroupByPipe,\n IncludesPipe,\n IsTypePipe,\n JoinPipe,\n KeysPipe,\n MapPipe,\n MaxPipe,\n MinPipe,\n PopPipe,\n ReducePipe,\n RemapPipe,\n ReplacePipe,\n ReversePipe,\n RoundPipe,\n SafeHtmlPipe,\n ShiftPipe,\n SplitPipe,\n SyncAsyncPipe,\n TranslatePipe,\n ValuesPipe\n];\n\n// --- Directives ---\nexport const directives = [\n AsyncMethodBase,\n AsyncMethodDirective,\n AsyncMethodTargetDirective,\n BackgroundDirective,\n ComponentLoaderDirective,\n DynamicTableTemplateDirective,\n GlobalTemplateDirective,\n IconDirective,\n NgxTemplateOutletDirective,\n PaginationDirective,\n PaginationItemDirective,\n ResourceIfDirective,\n StickyDirective,\n StickyClassDirective,\n DropdownDirective,\n DropdownContentDirective,\n DropdownToggleDirective,\n TabsItemDirective,\n TabsTemplateDirective,\n UnorderedListItemDirective,\n UnorderedListTemplateDirective\n];\n\n// --- Components ---\nexport const components = [\n BtnComponent,\n BtnDefaultComponent,\n ChipsComponent,\n CloseBtnComponent,\n DropListComponent,\n DropdownBoxComponent,\n DynamicTableComponent,\n FakeModuleComponent,\n PaginationMenuComponent,\n IconComponent,\n IconDefaultComponent,\n InteractiveCanvasComponent,\n InteractiveItemComponent,\n InteractiveCircleComponent,\n InteractiveRectComponent,\n TabsComponent,\n UnorderedListComponent,\n UploadComponent,\n WysiwygComponent\n];\n\nexport const providers = [\n ...pipes,\n BaseHttpClient,\n BaseHttpService,\n AuthGuard,\n AclService,\n ApiService,\n StaticAuthService,\n ConfigService,\n BaseDialogService,\n ErrorHandlerService,\n EventsService,\n FormatterService,\n GlobalTemplateService,\n IconService,\n LanguageService,\n LocalHttpService,\n OpenApiService,\n PromiseService,\n SocketService,\n StateService,\n StaticLanguageService,\n StorageService,\n BaseToasterService,\n CacheService,\n ComponentLoaderService,\n TranslatedUrlSerializer,\n UniversalService,\n DeviceDetectorService,\n GlobalTemplateService,\n {\n provide: EVENT_MANAGER_PLUGINS,\n useClass: DragDropEventPlugin,\n multi: true\n },\n {\n provide: EVENT_MANAGER_PLUGINS,\n useClass: ResizeEventPlugin,\n multi: true\n },\n {\n provide: EVENT_MANAGER_PLUGINS,\n useClass: ScrollEventPlugin,\n multi: true\n },\n {\n provide: UrlSerializer,\n useExisting: TranslatedUrlSerializer\n },\n {\n provide: ErrorHandler,\n useExisting: ErrorHandlerService\n }\n];\n","import {\n EnvironmentProviders,\n inject,\n Injector,\n makeEnvironmentProviders,\n ModuleWithProviders,\n NgModule,\n provideAppInitializer,\n Provider\n} from \"@angular/core\";\nimport {APP_BASE_HREF, CommonModule} from \"@angular/common\";\nimport {FormsModule} from \"@angular/forms\";\nimport {DynamicModuleInfo, IModuleConfig, OpenApiSchemaSelector} from \"./common-types\";\nimport {\n API_SERVICE,\n APP_BASE_URL,\n AUTH_SERVICE,\n BUTTON_TYPE,\n CONFIG_SERVICE,\n DIALOG_SERVICE,\n DYNAMIC_MODULE_INFO,\n ICON_MAP,\n ICON_SERVICE,\n ICON_TYPE,\n LANGUAGE_SERVICE,\n PROMISE_SERVICE,\n RESIZE_DELAY,\n RESIZE_STRATEGY,\n ROOT_ELEMENT, SCHEMA_SELECTOR,\n SOCKET_IO_PATH,\n STATIC_SCHEMAS,\n TOASTER_SERVICE\n} from \"./tokens\";\n\nimport {components, directives, pipes, providers} from \"./ngx-utils.imports\";\nimport {ApiService} from \"./services/api.service\";\nimport {StaticAuthService} from \"./services/auth.service\";\nimport {IconService} from \"./services/icon.service\";\nimport {StaticLanguageService} from \"./services/static-language.service\";\nimport {BaseToasterService} from \"./services/base-toaster.service\";\nimport {PromiseService} from \"./services/promise.service\";\nimport {ConfigService} from \"./services/config.service\";\nimport {BaseDialogService} from \"./services/base-dialog.service\";\nimport {ROUTES} from \"@angular/router\";\nimport {AuthGuard} from \"./utils/auth.guard\";\nimport {FakeModuleComponent} from \"./components/fake-module/fake-module.component\";\nimport {BtnDefaultComponent} from \"./components/btn-default/btn-default.component\";\nimport {IconDefaultComponent} from \"./components/icon-default/icon-default.component\";\n\nexport function loadBaseUrl(): string {\n if (typeof (document) === \"undefined\" || typeof (location) === \"undefined\") return \"/\";\n const scripts = Array.from(document.scripts);\n const currentScript = (document.currentScript as HTMLScriptElement);\n let currentUrl = new URL(currentScript?.src ?? \"http://localhost:4200/\");\n if (!currentScript) {\n try {\n // noinspection ExceptionCaughtLocallyJS\n throw new Error();\n } catch (e) {\n const qualifiedUrl = location.protocol + \"//\" + location.host;\n const stack = (e.stack || \"\") as string;\n const srcUrl = (\n stack.match(new RegExp(qualifiedUrl + \".*?\\\\.js\", \"g\")) ||\n stack.match(/http([A-Z0-9:\\/\\-.]+)\\.js/gi) ||\n [`${qualifiedUrl}/main.js`]\n ).shift();\n currentUrl = new URL(srcUrl ?? \"\");\n }\n }\n const mainScript = scripts.find(s => {\n if (!s.src) return false;\n const sUrl = new URL(s.src);\n return currentUrl.host === sUrl.host && sUrl.pathname.includes(\"main\");\n });\n const scriptUrl = !mainScript ? currentUrl : new URL(mainScript.src);\n const path = scriptUrl.pathname?.split(\"/\") ?? [];\n path.pop();\n return `${scriptUrl.protocol}//${scriptUrl.host}${path.join(\"/\")}/`;\n}\n\nexport function loadBaseHref(baseUrl: string): string {\n try {\n return new URL(baseUrl).pathname;\n } catch (e) {\n console.log(e);\n return \"/\";\n }\n}\n\nexport function getRootElement(): HTMLElement {\n return typeof document !== \"undefined\" ? document.body : null;\n}\n\n@NgModule({\n declarations: [\n ...pipes,\n ...directives,\n ...components\n ],\n imports: [\n CommonModule,\n FormsModule\n ],\n exports: [\n ...pipes,\n ...directives,\n ...components,\n FormsModule\n ],\n providers: pipes\n})\nexport class NgxUtilsModule {\n\n private static getProviders(config?: IModuleConfig): (EnvironmentProviders | Provider)[] {\n return [\n ...providers,\n {\n provide: API_SERVICE,\n useExisting: (!config ? null : config.apiService) || ApiService\n },\n {\n provide: AUTH_SERVICE,\n useExisting: (!config ? null : config.authService) || StaticAuthService\n },\n {\n provide: ICON_SERVICE,\n useExisting: (!config ? null : config.iconService) || IconService\n },\n {\n provide: LANGUAGE_SERVICE,\n useExisting: (!config ? null : config.languageService) || StaticLanguageService\n },\n {\n provide: TOASTER_SERVICE,\n useExisting: (!config ? null : config.toasterService) || BaseToasterService\n },\n {\n provide: PROMISE_SERVICE,\n useExisting: (!config ? null : config.promiseService) || PromiseService\n },\n {\n provide: CONFIG_SERVICE,\n useExisting: (!config ? null : config.configService) || ConfigService\n },\n {\n provide: DIALOG_SERVICE,\n useExisting: (!config ? null : config.dialogService) || BaseDialogService\n },\n {\n provide: ICON_TYPE,\n useValue: (!config ? null : config.iconType) || IconDefaultComponent,\n },\n {\n provide: ICON_MAP,\n useValue: (!config ? null : config.iconMap) || {},\n },\n {\n provide: BUTTON_TYPE,\n useValue: (!config ? null : config.buttonType) || BtnDefaultComponent\n },\n {\n provide: APP_BASE_URL,\n useFactory: (!config ? null : config.baseUrl) || loadBaseUrl,\n deps: [Injector]\n },\n {\n provide: ROOT_ELEMENT,\n useFactory: getRootElement\n },\n {\n provide: RESIZE_DELAY,\n useValue: (!config ? null : config.resizeDelay) ?? 50,\n },\n {\n provide: RESIZE_STRATEGY,\n useValue: (!config ? null : config.resizeStrategy) ?? \"observer\",\n },\n {\n provide: SOCKET_IO_PATH,\n useValue: (!config ? null : config.socketPath) ?? \"socket.io\",\n },\n {\n provide: STATIC_SCHEMAS,\n useValue: (!config ? null : config.staticSchemas) ?? {},\n },\n {\n provide: SCHEMA_SELECTOR,\n useValue: (!config ? null : config.schemaSelector) ?? ((name, schemas) => {\n return schemas[name];\n }) as OpenApiSchemaSelector,\n },\n {\n provide: APP_BASE_HREF,\n useFactory: loadBaseHref,\n deps: [APP_BASE_URL]\n },\n provideAppInitializer(() => {\n if (config && config.initializeApp) {\n const initializer = config.initializeApp(inject(Injector));\n return initializer();\n }\n const configs = inject(CONFIG_SERVICE);\n return configs.load();\n }),\n ];\n }\n\n static forRoot(config?: IModuleConfig): ModuleWithProviders<NgxUtilsModule> {\n return {\n ngModule: NgxUtilsModule,\n providers: NgxUtilsModule.getProviders(config)\n };\n }\n\n static provideUtils(config?: IModuleConfig): EnvironmentProviders {\n return makeEnvironmentProviders(NgxUtilsModule.getProviders(config));\n }\n\n static useDynamic(moduleInfo: DynamicModuleInfo): ModuleWithProviders<NgxUtilsModule> {\n return {\n ngModule: NgxUtilsModule,\n providers: [\n {\n provide: ROUTES,\n multi: true,\n useValue: [\n {\n loadChildren: moduleInfo.loadChildren,\n matcher: AuthGuard.noRouteMatch\n },\n {\n component: FakeModuleComponent,\n matcher: AuthGuard.wildRouteMatch\n }\n ]\n },\n {\n provide: DYNAMIC_MODULE_INFO,\n useValue: moduleInfo,\n multi: true\n }\n ]\n };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.UniversalService","emptyDash","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.PaginationDirective","i3","i2","i3.NgxTemplateOutletDirective","i4.PaginationDirective","i5.PaginationItemDirective","i6.DropdownBoxComponent","i7.PaginationMenuComponent","i8.IncludesPipe","i9.TranslatePipe","i10.ValuesPipe","i2.BtnComponent","i3.EntriesPipe","i3.CloseBtnComponent","i4.IsTypePipe","i5.SafeHtmlPipe","i6.TranslatePipe"],"mappings":"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A,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;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,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,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"}
|