{"version":3,"file":"saydar-table-builder.mjs","sources":["../../../projects/angular-utilities/src/http-request-state/types.ts","../../../projects/angular-utilities/src/http-request-state/helpers.ts","../../../projects/angular-utilities/src/rxjs/defaultShareReplay.ts","../../../projects/angular-utilities/src/http-request-state/directives/request-state-directive.ts","../../../projects/angular-utilities/src/http-request-state/directives/HttpStateDirectiveBase.ts","../../../projects/angular-utilities/src/http-request-state/directives/http-error-state-directive.ts","../../../projects/angular-utilities/src/http-request-state/directives/http-inProgress-state-directive.ts","../../../projects/angular-utilities/src/http-request-state/directives/http-notStarted-state-directive.ts","../../../projects/angular-utilities/src/http-request-state/directives/http-success-state-directive.ts","../../../projects/angular-utilities/src/http-request-state/rxjs/getRequestorBody.ts","../../../projects/angular-utilities/src/http-request-state/rxjs/getRequestorState.ts","../../../projects/angular-utilities/src/http-request-state/rxjs/tapError.ts","../../../projects/angular-utilities/src/http-request-state/rxjs/tapSuccess.ts","../../../projects/angular-utilities/src/rxjs/mapError.ts","../../../projects/angular-utilities/src/http-request-state/http-request-state.ts","../../../projects/angular-utilities/src/http-request-state/http-state-module.ts","../../../projects/angular-utilities/src/http-request-state/HttpRequestStateStore.ts","../../../projects/angular-utilities/src/http-request-state/HttpRequestStateFactory.ts","../../../projects/angular-utilities/src/table-builder/interfaces/report-def.ts","../../../projects/angular-utilities/src/rxjs/rxjs-operators.ts","../../../projects/angular-utilities/src/table-builder/classes/TableBuilderConfig.ts","../../../projects/angular-utilities/src/utilities/pipes/phone.pipe.ts","../../../projects/angular-utilities/src/utilities/directives/prevent-enter.directive.ts","../../../projects/angular-utilities/src/utilities/directives/stop-propagation.directive.ts","../../../projects/angular-utilities/src/utilities/directives/auto-focus.directive.ts","../../../projects/angular-utilities/src/utilities/directives/clickSubject.ts","../../../projects/angular-utilities/src/utilities/directives/clickEmitterDirective.ts","../../../projects/angular-utilities/src/utilities/directives/dialog-service.ts","../../../projects/angular-utilities/src/utilities/directives/dialog.ts","../../../projects/angular-utilities/src/utilities/directives/styler.ts","../../../projects/angular-utilities/src/utilities/directives/mat-toggle-group-directive.ts","../../../projects/angular-utilities/src/utilities/directives/trim-whitespace.directive.ts","../../../projects/angular-utilities/src/utilities/pipes/function.pipe.ts","../../../projects/angular-utilities/src/utilities/pipes/space-case.pipes.ts","../../../projects/angular-utilities/src/utilities/directives/conditional-classes.directive.ts","../../../projects/angular-utilities/src/utilities/module.ts","../../../projects/angular-utilities/src/table-builder/services/transform-creator.ts","../../../projects/angular-utilities/src/table-builder/classes/table-builder-general-settings.ts","../../../projects/angular-utilities/src/table-builder/classes/TableState.ts","../../../projects/angular-utilities/src/table-builder/enums/filterTypes.ts","../../../projects/angular-utilities/src/table-builder/functions/null-filter-function.ts","../../../projects/angular-utilities/src/table-builder/functions/split-comma-value.ts","../../../projects/angular-utilities/src/table-builder/functions/wildcard-to-regex.ts","../../../projects/angular-utilities/src/table-builder/functions/string-filter-function.ts","../../../projects/angular-utilities/src/table-builder/functions/number-filter-function.ts","../../../projects/angular-utilities/src/table-builder/functions/date-filter-function.ts","../../../projects/angular-utilities/src/table-builder/functions/boolean-filter-function.ts","../../../projects/angular-utilities/src/table-builder/classes/filter-info.ts","../../../projects/angular-utilities/src/table-builder/classes/table-store.ts","../../../projects/angular-utilities/src/table-builder/components/array-column.component.ts","../../../projects/angular-utilities/src/table-builder/components/link-column.component.ts","../../../projects/angular-utilities/src/table-builder/components/initialization-component/initialization-component.ts","../../../projects/angular-utilities/src/table-builder/components/initialization-component/initialization-component.html","../../../projects/angular-utilities/src/table-builder/services/table-template-service.ts","../../../projects/angular-utilities/src/table-builder/components/filter/in-list/in-list-filter.component.ts","../../../projects/angular-utilities/src/table-builder/components/header-menu/header-menu.component.ts","../../../projects/angular-utilities/src/table-builder/components/header-menu/header-menu.component.html","../../../projects/angular-utilities/src/rxjs/subjectifier.ts","../../../projects/angular-utilities/src/table-builder/directives/resize-column.directive.ts","../../../projects/angular-utilities/src/table-builder/pipes/column-total.pipe.ts","../../../projects/angular-utilities/src/table-builder/components/column-builder/column-builder.component.ts","../../../projects/angular-utilities/src/table-builder/components/column-builder/column-builder.component.html","../../../projects/angular-utilities/src/table-builder/classes/MatTableObservableDataSource.ts","../../../projects/angular-utilities/src/table-builder/functions/sort-data-function.ts","../../../projects/angular-utilities/src/table-builder/classes/GenericTableDataSource.ts","../../../projects/angular-utilities/src/table-builder/components/generic-table/paginator.component.ts","../../../projects/angular-utilities/src/table-builder/components/generic-table/generic-table.component.ts","../../../projects/angular-utilities/src/table-builder/components/generic-table/generic-table.component.html","../../../projects/angular-utilities/src/table-builder/components/generic-table/generic-table-vs.component.html","../../../projects/angular-utilities/src/table-builder/directives/custom-cell-directive.ts","../../../projects/angular-utilities/src/table-builder/components/gen-col-displayer/gen-col-displayer.component.ts","../../../projects/angular-utilities/src/table-builder/components/gen-col-displayer/gen-col-displayer.component.html","../../../projects/angular-utilities/src/table-builder/components/table-container-filter/table-wrapper-filter-store.ts","../../../projects/angular-utilities/src/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.ts","../../../projects/angular-utilities/src/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.html","../../../projects/angular-utilities/src/table-builder/components/date-filter/date-filter.component.ts","../../../projects/angular-utilities/src/table-builder/components/date-filter/date-filter.component.html","../../../projects/angular-utilities/src/table-builder/functions/paste-preservation.ts","../../../projects/angular-utilities/src/table-builder/directives/preserve-paste-delimiters.directive.ts","../../../projects/angular-utilities/src/table-builder/components/in-filter/in-filter.component.ts","../../../projects/angular-utilities/src/table-builder/components/in-filter/in-filter.component.html","../../../projects/angular-utilities/src/table-builder/components/number-filter/number-filter.component.ts","../../../projects/angular-utilities/src/table-builder/components/number-filter/number-filter.component.html","../../../projects/angular-utilities/src/table-builder/components/date-time-filter/date-time-filter.component.ts","../../../projects/angular-utilities/src/table-builder/components/date-time-filter/date-time-filter.component.html","../../../projects/angular-utilities/src/table-builder/components/filter/filter.component.ts","../../../projects/angular-utilities/src/table-builder/components/filter/filter.component.html","../../../projects/angular-utilities/src/table-builder/material.module.ts","../../../projects/angular-utilities/src/table-builder/directives/multi-sort.directive.ts","../../../projects/angular-utilities/src/table-builder/directives/tb-filter.directive.ts","../../../projects/angular-utilities/src/table-builder/directives/table-wrapper.directive.ts","../../../projects/angular-utilities/src/table-builder/classes/data-filter.ts","../../../projects/angular-utilities/src/table-builder/functions/download-data.ts","../../../projects/angular-utilities/src/table-builder/services/export-to-csv.service.ts","../../../projects/angular-utilities/src/table-builder/classes/DefaultSettings.ts","../../../projects/angular-utilities/src/table-builder/ngrx/selectors.ts","../../../projects/angular-utilities/src/table-builder/ngrx/actions.ts","../../../projects/angular-utilities/src/table-builder/services/link-creator.service.ts","../../../projects/angular-utilities/src/table-builder/components/columns-panel/columns-panel.component.ts","../../../projects/angular-utilities/src/table-builder/components/columns-panel/columns-panel.component.html","../../../projects/angular-utilities/src/table-builder/pipes/key-display.ts","../../../projects/angular-utilities/src/table-builder/pipes/format-filter-value.pipe.ts","../../../projects/angular-utilities/src/table-builder/pipes/as-filter-pills.pipe.ts","../../../projects/angular-utilities/src/table-builder/pipes/format-filter-type.pipe.ts","../../../projects/angular-utilities/src/table-builder/components/table-container-filter/filter-list/filter-list.component.ts","../../../projects/angular-utilities/src/table-builder/components/table-container-filter/filter-list/filter-list.component.html","../../../projects/angular-utilities/src/table-builder/components/group-by-list/group-by-list.component.ts","../../../projects/angular-utilities/src/table-builder/components/group-by-list/group-by-list.component.html","../../../projects/angular-utilities/src/table-builder/components/table-container/table-container.ts","../../../projects/angular-utilities/src/table-builder/components/table-container/table-container.html","../../../projects/angular-utilities/src/table-builder/ngrx/reducer.ts","../../../projects/angular-utilities/src/table-builder/ngrx/effects.ts","../../../projects/angular-utilities/src/table-builder/components/sort-menu/sort-menu.component-store.ts","../../../projects/angular-utilities/src/table-builder/components/sort-menu/sort-menu.component.ts","../../../projects/angular-utilities/src/table-builder/components/sort-menu/sort-menu.component.html","../../../projects/angular-utilities/src/table-builder/table-builder.module.ts","../../../projects/angular-utilities/src/table-builder/classes/table-builder.ts","../../../projects/angular-utilities/src/table-builder/directives/virtual-scroll-viewport.directive.ts","../../../projects/angular-utilities/src/action-state/ngrx.ts","../../../projects/angular-utilities/src/action-state/ngrx-ext/ngrx-ext.module.ts","../../../projects/angular-utilities/src/action-state/action-state-spinner/action-state-spinner.component.ts","../../../projects/angular-utilities/src/action-state/action-state-spinner/action-state-spinner.component.html","../../../projects/angular-utilities/src/action-state/action-state-ui/action-state-ui.module.ts","../../../projects/angular-utilities/src/action-state/index.ts","../../../projects/angular-utilities/src/ngrx/actionable-selector.ts","../../../projects/angular-utilities/src/public-api.ts","../../../projects/angular-utilities/src/saydar-table-builder.ts"],"sourcesContent":["import { Observable } from 'rxjs';\r\nexport enum HttpRequestStatus {\r\n    notStarted,\r\n    inProgress,\r\n    success,\r\n    fail,\r\n    cancelled,\r\n  }\r\n\r\n  export type HttpRequestStateCancelled = {\r\n    status: HttpRequestStatus.cancelled\r\n  }\r\n\r\n  export type HttpRequestStateNotStarted = {\r\n    status: HttpRequestStatus.notStarted\r\n  }\r\n\r\n  export type HttpRequestStateInProgress = {\r\n    status: HttpRequestStatus.inProgress\r\n  }\r\n\r\n  export type HttpRequestStateSuccess<T> = {\r\n    status: HttpRequestStatus.success;\r\n    body: T;\r\n  }\r\n\r\n  export type HttpRequestStateError = {\r\n    status: HttpRequestStatus.fail;\r\n    error: any;\r\n  }\r\n\r\n\r\n  export type HttpRequestState<T = any> =\r\n    HttpRequestStateCancelled |\r\n    HttpRequestStateNotStarted |\r\n    HttpRequestStateInProgress |\r\n    HttpRequestStateSuccess<T> |\r\n    HttpRequestStateError ;\r\n\r\nexport enum HttpRequestStrategy {\r\n  concurrent = 1,\r\n  singleUse = 2,\r\n  cancelPrevious = 3,\r\n  sequential = 4,\r\n}\r\nexport interface RequestStateOptions {\r\n  strategy?: HttpRequestStrategy\r\n}\r\n\r\nexport type HttpRequestFactory<TParam extends any[], T> = (...params: [...TParam]) => Observable<T>\r\n","import { HttpRequestState, HttpRequestStateError, HttpRequestStateInProgress, HttpRequestStateNotStarted, HttpRequestStateSuccess, HttpRequestStatus } from \"./types\";\r\n\r\nexport function isErrorState<T>(state: HttpRequestState<T>): state is HttpRequestStateError {\r\n  return state.status === HttpRequestStatus.fail;\r\n}\r\n\r\nexport function isSuccessState<T>(state: HttpRequestState<T>): state is HttpRequestStateSuccess<T> {\r\n  return state.status === HttpRequestStatus.success;\r\n}\r\n\r\nexport function isSuccessOrErrorState<T>(state: HttpRequestState<T>): state is (HttpRequestStateSuccess<T> | HttpRequestStateError) {\r\n  return state.status === HttpRequestStatus.success || state.status === HttpRequestStatus.fail;\r\n}\r\n\r\nexport function createSuccess<T>(body: T): HttpRequestStateSuccess<T> {\r\n  return { status: HttpRequestStatus.success, body };\r\n}\r\n\r\nexport function createFailure(error: any): HttpRequestStateError {\r\n  return { status: HttpRequestStatus.fail, error };\r\n}\r\n\r\nexport const notStarted: HttpRequestStateNotStarted = { status: HttpRequestStatus.notStarted };\r\n\r\n\r\nexport const inProgress: HttpRequestStateInProgress = { status: HttpRequestStatus.inProgress };\r\n\r\nexport function statusIsSuccessOrInProgress( status: HttpRequestStatus) {\r\n  return [HttpRequestStatus.success, HttpRequestStatus.inProgress].includes(status);\r\n}","import { Observable } from 'rxjs';\nimport { shareReplay } from 'rxjs/operators';\n\nexport function defaultShareReplay<T>() {\n  return function (src: Observable<T>): Observable<T> {\n    return src.pipe(shareReplay({ refCount: true, bufferSize: 1 }));\n  };\n}","import { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';\r\nimport { defaultShareReplay } from '../../rxjs/defaultShareReplay';\r\nimport { isObservable, Observable, Subject, Unsubscribable } from 'rxjs';\r\nimport { map, switchAll } from 'rxjs/operators';\r\nimport { HttpRequestStateStore } from '../HttpRequestStateStore';\r\nimport { HttpRequestState, HttpRequestStatus } from '../types';\r\n\r\nexport interface HttpRequestStateViewContext<T> {\r\n  $implicit?: HttpRequestStateAny<T>;\r\n  state?: HttpRequestStateAny<T>;\r\n  status: {\r\n    inProgress: boolean;\r\n    notStarted: boolean;\r\n    success: boolean;\r\n    error: boolean;\r\n  };\r\n}\r\n\r\n@Directive({ selector: '[httpRequestState]' })\r\nexport class HttpRequestStateDirective<TParam extends any[], T> {\r\n\r\n  readonly ViewContext: HttpRequestStateViewContext<T> = {\r\n    $implicit: undefined,\r\n    state: undefined,\r\n    status: {\r\n      inProgress: false,\r\n      notStarted: true,\r\n      success: false,\r\n      error: false,\r\n    }\r\n  };\r\n\r\n\r\n  subject = new Subject<Observable<HttpRequestState<T>>>();\r\n  state = this.subject.pipe(switchAll(), defaultShareReplay());\r\n  subscription: Unsubscribable;\r\n  hooks: ((state: HttpRequestState<T>) => void)[] = [];\r\n\r\n  @Input('httpRequestState') set stateStore(store: HttpRequestStateStore<TParam, T> | Observable<HttpRequestState<T>>) {\r\n    if (isObservable(store)) {\r\n      this.subject.next(store);\r\n    } else {\r\n      this.subject.next(store.state$.pipe(map(state => state.response)));\r\n    }\r\n\r\n  }\r\n  constructor(\r\n    private templateRef: TemplateRef<any>,\r\n    private viewContainer: ViewContainerRef,\r\n  ) {\r\n    this.viewContainer.createEmbeddedView(this.templateRef, this.ViewContext);\r\n    this.subscription = this.state.subscribe(state => {\r\n      this.ViewContext.$implicit = state;\r\n      this.ViewContext.state = state;\r\n      this.ViewContext.status.inProgress = state.status === HttpRequestStatus.inProgress;\r\n      this.ViewContext.status.notStarted = state.status === HttpRequestStatus.notStarted;\r\n      this.ViewContext.status.success = state.status === HttpRequestStatus.success;\r\n      this.ViewContext.status.error = state.status === HttpRequestStatus.fail;\r\n      this.hooks.forEach(hook => hook(state));\r\n    });\r\n  }\r\n\r\n\r\n  ngOnDestroy() {\r\n    this.viewContainer.clear();\r\n    this.subscription.unsubscribe();\r\n  }\r\n\r\n  static ngTemplateContextGuard<T>(dir: HttpRequestStateDirective<any, T>, ctx: any): ctx is HttpRequestStateViewContext<T> {\r\n    return true;\r\n  }\r\n\r\n}\r\n\r\nexport type HttpRequestStateAny<T> = {\r\n  status: HttpRequestStatus;\r\n  body?: T;\r\n  error?: any;\r\n}\r\n","import { Directive, Injector, TemplateRef, ViewContainerRef } from '@angular/core';\r\nimport { HttpRequestState } from '../types';\r\nimport { HttpRequestStateDirective } from './request-state-directive';\r\n\r\n@Directive()\r\nexport abstract class HttpStateDirectiveBase {\r\n    hasView = false;\r\n    constructor(\r\n        private injector: Injector,\r\n        protected templateRef: TemplateRef<any>,\r\n        protected viewContainer: ViewContainerRef,\r\n    ) {\r\n\r\n    }\r\n\r\n    ngOnInit() {\r\n        const parent = this.injector.get(HttpRequestStateDirective);\r\n        if(parent == null) {\r\n            throw new Error('You can only use an http state directive as a child of the httpRequestState directive.');\r\n        }\r\n        parent.hooks.push(this.baseRender);\r\n        this.baseRender(parent.ViewContext.state as unknown as HttpRequestState);\r\n    }\r\n\r\n    ngOnDestroy() {\r\n        \r\n    }\r\n\r\n    private baseRender = (state:HttpRequestState ) : void => {\r\n        if (this.hasView) {\r\n            this.viewContainer.clear();\r\n            this.hasView = false;\r\n        }\r\n        this.hasView = this.render(state);\r\n    }\r\n\r\n    abstract render: (state: HttpRequestState) => boolean;\r\n}\r\n","import { Directive, Injector, TemplateRef, ViewContainerRef } from '@angular/core';\r\nimport { isErrorState } from '../helpers';\r\nimport { HttpRequestState } from '../types';\r\nimport { HttpStateDirectiveBase } from './HttpStateDirectiveBase';\r\n\r\n@Directive({ selector: '[httpErrorState]' })\r\nexport class HttpErrorStateDirective<TParam extends any[], T> extends HttpStateDirectiveBase {\r\n\r\n  constructor(\r\n    injector: Injector,\r\n    templateRef: TemplateRef<any>,\r\n    viewContainer: ViewContainerRef,\r\n  ) {\r\n    super(injector, templateRef, viewContainer);\r\n  }\r\n\r\n  render = (state: HttpRequestState<any>) => {\r\n    if (isErrorState(state)) {\r\n      this.viewContainer.createEmbeddedView(this.templateRef, { $implicit: state.error });\r\n      return true;\r\n    }\r\n    return false;\r\n  };\r\n\r\n  ngOnInit() {\r\n    super.ngOnInit();\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    super.ngOnDestroy();\r\n  }\r\n}","import { Directive, Injector, TemplateRef, ViewContainerRef } from '@angular/core';\r\nimport { HttpStateDirectiveBase } from './HttpStateDirectiveBase';\r\nimport { HttpRequestState, HttpRequestStatus } from '../types'\r\n\r\n\r\n@Directive({ selector: '[httpInProgressState]' })\r\nexport class HttpInProgressStateDirective  extends HttpStateDirectiveBase {\r\n    render = (state: HttpRequestState<any>) => {\r\n        if(state.status === HttpRequestStatus.inProgress){\r\n            this.viewContainer.createEmbeddedView(this.templateRef );\r\n            return true;\r\n        }\r\n        return false;\r\n    };\r\n\r\n    constructor(\r\n       injector: Injector,\r\n        templateRef: TemplateRef<any>,\r\n        viewContainer: ViewContainerRef,\r\n    ) {\r\n        super(injector,templateRef,viewContainer);\r\n    }\r\n\r\n    ngOnInit() {\r\n        super.ngOnInit();\r\n    }\r\n\r\n    ngOnDestroy() {\r\n        super.ngOnDestroy();\r\n    }\r\n\r\n}\r\n","import { Directive, Injector, TemplateRef, ViewContainerRef } from '@angular/core';\r\nimport { HttpRequestState, HttpRequestStatus } from '../types';\r\nimport { HttpStateDirectiveBase } from './HttpStateDirectiveBase';\r\n\r\n\r\n@Directive({ selector: '[httpNotStartedState]' })\r\nexport class HttpNotStartedStateDirective<TParam extends any[],T> extends HttpStateDirectiveBase {\r\n    render = (state: HttpRequestState<any>) => {\r\n        if(state.status === HttpRequestStatus.notStarted){\r\n            this.viewContainer.createEmbeddedView(this.templateRef );\r\n            return true;\r\n        }\r\n        return false;\r\n    };\r\n\r\n    constructor(\r\n        injector: Injector,\r\n        templateRef: TemplateRef<any>,\r\n        viewContainer: ViewContainerRef,\r\n    ) {\r\n        super(injector,templateRef,viewContainer);\r\n    }\r\n\r\n    ngOnInit() {\r\n        super.ngOnInit();\r\n    }\r\n\r\n    ngOnDestroy() {\r\n        super.ngOnDestroy();\r\n    }\r\n}\r\n","import { Directive, Injector, Input, TemplateRef, ViewContainerRef } from '@angular/core';\r\nimport { isSuccessState } from '../helpers';\r\nimport { HttpStateDirectiveBase } from './HttpStateDirectiveBase';\r\nimport { HttpRequestState } from '../types';\r\nimport { HttpRequestStateStore } from '../HttpRequestStateStore';\r\nimport { Observable } from 'rxjs';\r\n\r\nexport interface HttpSuccessStateViewContext<T> {\r\n  $implicit: T;\r\n}\r\n@Directive({ selector: '[httpSuccessState]' })\r\nexport class HttpSuccessStateDirective<T> extends HttpStateDirectiveBase {\r\n  @Input() httpSuccessStateTypeSafety?: HttpRequestStateStore<any, T> | Observable<HttpRequestState<T>>;\r\n  render = (state: HttpRequestState<T>) => {\r\n    if (isSuccessState(state)) {\r\n      this.viewContainer.createEmbeddedView(this.templateRef, { $implicit: state.body });\r\n      return true;\r\n    }\r\n    return false;\r\n  };\r\n  constructor(\r\n    injector: Injector,\r\n    templateRef: TemplateRef<{ $implicit: T }>,\r\n    viewContainer: ViewContainerRef,\r\n  ) {\r\n    super(injector, templateRef, viewContainer);\r\n  }\r\n\r\n  ngOnInit() {\r\n    super.ngOnInit();\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    super.ngOnDestroy();\r\n  }\r\n\r\n  static ngTemplateContextGuard<T>(dir: HttpSuccessStateDirective<T>, ctx: any): ctx is HttpSuccessStateViewContext<T> {\r\n    return true;\r\n  }\r\n}\r\n","import { isSuccessState } from '../helpers';\nimport { HttpRequestState } from '../types';\nimport { Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\n\nexport const getRequestorBody = <T>(source: Observable<HttpRequestState<T>>) =>\n  source.pipe(\n    filter(isSuccessState),\n    map( res => res.body)\n  );","import { HttpRequestState } from '../types';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nexport const getRequestorStatus = <T>(source: Observable<HttpRequestState<T>>) =>\n  source.pipe(\n    map( res => res.status)\n  );","import { Observable } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\nimport { HttpRequestState } from '../types';\r\nimport { isErrorState } from '../helpers';\r\n\r\nexport function tapError(onError: (error: any) => void) {\r\n  return function (src: Observable<HttpRequestState>): Observable<HttpRequestState> {\r\n    return src.pipe(\r\n        tap( result => {\r\n            if(isErrorState(result)) {\r\n                onError(result.error);\r\n            }\r\n        })\r\n    );\r\n  };\r\n}\r\n","import { Observable } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\nimport { HttpRequestState } from '../types';\r\nimport { isSuccessState } from '../helpers';\r\n\r\nexport function tapSuccess<T>(onSuccess: (body: T) => void) {\r\n  return function (src: Observable<HttpRequestState<T>>): Observable<HttpRequestState<T>> {\r\n    return src.pipe(\r\n        tap( result => {\r\n            if(isSuccessState(result)) {\r\n                onSuccess(result.body);\r\n            }\r\n        })\r\n    );\r\n  };\r\n}\r\n","import { Observable, of } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\n\nexport function mapError<T, TResult>(projection: (error: any) => TResult) {\n  return function (src: Observable<T>): Observable<T | TResult> {\n    return src.pipe(catchError(e => of(projection(e))),);\n  };\n}","import { map, startWith, switchMap } from 'rxjs/operators';\r\nimport { getRequestorBody } from './rxjs/getRequestorBody';\r\nimport { getRequestorStatus } from './rxjs/getRequestorState';\r\nimport { mapError } from '../rxjs/mapError';\r\nimport { defaultShareReplay } from '../rxjs/defaultShareReplay';\r\nimport { Observable, of, ReplaySubject } from 'rxjs';\r\nimport { HttpRequestFactory, HttpRequestState, HttpRequestStatus } from './types';\r\nimport { createFailure, createSuccess, inProgress, notStarted } from './helpers';\r\n\r\nexport type HttpRequestState$ <T> = Observable<HttpRequestState<T>>;\r\n\r\nexport interface HttpRequestor <Res, Req> {\r\n  httpState$: Observable<HttpRequestState<Res>>;\r\n  status$: Observable<HttpRequestStatus>;\r\n  body$: Observable<Res>;\r\n  request: Req;\r\n}\r\n\r\nexport function httpRequest<T = any>(req: Observable<T>): HttpRequestState$<T> {\r\n  return req.pipe(\r\n    map(createSuccess),\r\n    mapError(createFailure),\r\n    startWith(inProgress),\r\n    defaultShareReplay()\r\n  );\r\n}\r\n\r\nexport function httpRequestor<TParam extends any[], T>(req: HttpRequestFactory<TParam,T> ): HttpRequestor<T, (...params: [...TParam]) => Observable<HttpRequestState<T>>> {\r\n  const request$ = new ReplaySubject<[...TParam]>(1);\r\n  const httpState$ : HttpRequestState$<T> = request$.pipe(\r\n    switchMap( (params) => httpRequest<T>(req(...params)) ),\r\n    startWith(notStarted),\r\n    defaultShareReplay(),\r\n  );\r\n  const request = (...params: [...TParam]) => {\r\n    request$.next(params);\r\n    return httpState$;\r\n  };\r\n  return ({\r\n    request,\r\n    httpState$,\r\n    body$: httpState$.pipe(getRequestorBody),\r\n    status$: httpState$.pipe(getRequestorStatus)\r\n  });\r\n}\r\n\r\nexport function chainRequest<TParam extends any[], T, TT>(\r\n  httpState$: Observable<HttpRequestState<T>>,\r\n  request:HttpRequestFactory<TParam,TT>,\r\n  requestParams: ((responseFromPrevious: T) => [...TParam]) | (() => [...TParam])\r\n  ): Observable<HttpRequestState<TT>> {\r\n  return httpState$.pipe(\r\n    switchMap( res => {\r\n      if(res.status === HttpRequestStatus.success) {\r\n        const secondReq = httpRequestor<[...TParam], TT>(request);\r\n        const param = requestParams(res.body);\r\n        secondReq.request(...param );\r\n        return secondReq.httpState$;\r\n      } else {\r\n        return of(res);\r\n      }\r\n    }),\r\n  );\r\n}\r\n\r\n\r\n\r\n\r\n\r\n","import { NgModule } from '@angular/core';\nimport { HttpSuccessStateDirective } from './directives/http-success-state-directive';\nimport { HttpRequestStateDirective } from './directives/request-state-directive';\nimport { HttpErrorStateDirective } from './directives/http-error-state-directive';\nimport { HttpInProgressStateDirective } from './directives/http-inProgress-state-directive';\nimport { HttpNotStartedStateDirective } from './directives/http-notStarted-state-directive';\n\n/** @deprecated Import the standalone directives directly instead. */\n@NgModule({\n    imports: [\n        HttpSuccessStateDirective,\n        HttpRequestStateDirective,\n        HttpErrorStateDirective,\n        HttpInProgressStateDirective,\n        HttpNotStartedStateDirective,\n    ],\n    exports: [\n        HttpSuccessStateDirective,\n        HttpRequestStateDirective,\n        HttpErrorStateDirective,\n        HttpInProgressStateDirective,\n        HttpNotStartedStateDirective,\n    ]\n}) export class HttpRequestModule {\n\n}\n","import { Observable, of, Subscription } from 'rxjs';\r\nimport { ComponentStore } from '@ngrx/component-store';\r\nimport { HttpRequestFactory, HttpRequestStrategy, HttpRequestStatus, HttpRequestState, RequestStateOptions, HttpRequestStateCancelled } from './types';\r\nimport { createFailure, createSuccess, inProgress, isErrorState, isSuccessOrErrorState, isSuccessState, notStarted } from './helpers';\r\nimport { concatMap, filter, map, mergeMap, pluck, startWith, switchMap, tap } from 'rxjs/operators';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { mapError } from '../rxjs/mapError';\r\nimport { defaultShareReplay } from '../rxjs/defaultShareReplay';\r\nimport { Directive } from '@angular/core';\r\n\r\nexport interface RequestResponse<TParam extends any[],T> {\r\n  requestParams: [...TParam];\r\n  response: HttpRequestState<T>;\r\n}\r\n\r\n@Directive()\r\nexport class HttpRequestStateStore<TParam extends any[], T> extends ComponentStore<RequestResponse<TParam,T>> {\r\n\r\n    constructor(private req: HttpRequestFactory<TParam,T> ,private options?: RequestStateOptions) {\r\n      super({ requestParams: null as any ,response: notStarted });\r\n      this.request = (this.options?.strategy === HttpRequestStrategy.singleUse) ? this.singleUseRequest :  this.flattenedRequest;\r\n    }\r\n\r\n    reset() {\r\n      this.setState({ requestParams:null as any, response: notStarted });\r\n    }\r\n\r\n    private flatteningStrategy = () => {\r\n      if(this.options?.strategy === HttpRequestStrategy.concurrent)\r\n        return mergeMap( (params: [...TParam]) => this.createRequest(...params));\r\n      if(this.options?.strategy === HttpRequestStrategy.sequential)\r\n        return concatMap( (params: [...TParam]) => this.createRequest(...params));\r\n      return switchMap( (params: [...TParam]) => ((params[0] as any) instanceof CancellationToken) ?\r\n        of({ requestParams: params[0], response: { status: HttpRequestStatus.cancelled } as HttpRequestStateCancelled } ) : this.createRequest(...params) );\r\n    }\r\n\r\n    private requestEffect: (value: [...TParam] ) => Subscription = this.effect((obs: Observable<[...TParam]>) => {\r\n      return (obs).pipe(\r\n        this.flatteningStrategy(),\r\n        tap<RequestResponse<TParam, T>>(state => this.setState(state)),\r\n      );\r\n    });\r\n\r\n    private flattenedRequest = (...value: [...TParam]) => {\r\n      return this.requestEffect(value) as Subscription;\r\n    }\r\n    private singleUseRequest = (...value: [...TParam]) => {\r\n      if (this.get().response.status !== HttpRequestStatus.notStarted) {\r\n        throw new Error(\"state can not be reused. either reset the state by calling reset() or use a state requester that allows concurrent requests.\");\r\n      }\r\n      return this.requestEffect(value) as Subscription;\r\n    }\r\n\r\n    selectHttpState$ = this.state$.pipe(map(a => a.response));\r\n\r\n    selectStatus$ = this.selectHttpState$.pipe(map(a => a.status));\r\n\r\n    selectError$ = this.state$.pipe(\r\n      map(r => r.response),\r\n      filter(isErrorState),\r\n      map( state => state.error)\r\n    );\r\n\r\n    selectResponse$ = this.state$.pipe(\r\n      map(r => r.response),\r\n      filter(isSuccessState),\r\n      map( state => state.body)\r\n    );\r\n    selectSuccessOrError$ = this.state$.pipe(\r\n      map(r => r.response),\r\n      filter(isSuccessOrErrorState),\r\n      map( () => null)\r\n    );\r\n\r\n    errorHandled = false;\r\n    onError( cb: (error: HttpErrorResponse) => void) {\r\n      this.errorHandled = true;\r\n      this.on(this.selectError$, cb);\r\n      return this;\r\n    }\r\n\r\n    onSuccess( cb: (body: T) => void) {\r\n      this.on(this.selectResponse$, cb);\r\n      return this;\r\n    }\r\n\r\n    onSuccessOrError(cb: () => void){\r\n      this.on(this.selectSuccessOrError$, cb);\r\n      return this;\r\n    }\r\n\r\n    onSuccessWithRequest(func: (state: {\r\n      requestParams: [...TParam];\r\n      body: T;\r\n    }) => void) {\r\n      this.onUpdate(({ requestParams, response }) => {\r\n        if(isSuccessState(response)){\r\n          func({requestParams,body: response.body});\r\n        }\r\n      });\r\n      return this;\r\n    }\r\n\r\n    onErrorWithRequest(func: (state: {\r\n      error: HttpErrorResponse;\r\n      requestParams: [...TParam];\r\n    }) => void) {\r\n      this.onUpdate( ({ requestParams, response }) => {\r\n        if(isErrorState(response)){\r\n          func({ requestParams, error: response.error });\r\n        }\r\n      });\r\n      return this;\r\n    }\r\n\r\n    private createRequest(...params: [...TParam]): Observable<RequestResponse<TParam,T>> {\r\n      return this.req(...params).pipe(\r\n        map(createSuccess),\r\n        mapError(createFailure),\r\n        startWith(inProgress),\r\n        map( state => ({ requestParams: params, response: state })),\r\n        defaultShareReplay()\r\n      );\r\n    }\r\n\r\n    onUpdate(func: (state: {\r\n      requestParams: [...TParam];\r\n      response: HttpRequestState<T>;\r\n    }) => void) {\r\n      this.on(this.state$, func);\r\n    }\r\n\r\n    on = <V>(srcObservable: Observable<V>, func: (obj: V) => void): Subscription => {\r\n      return this.effect((src: Observable<V>) => {\r\n        return src.pipe(tap(func));\r\n      })(srcObservable) as Subscription;\r\n    }\r\n\r\n    request: (...value: [...TParam] ) => Subscription;\r\n\r\n    ngOnDestroy() {\r\n      super.ngOnDestroy();\r\n    }\r\n\r\n  }\r\n\r\n  export class CancellationToken {}\r\n","import { Injectable, OnDestroy } from \"@angular/core\";\r\nimport { HttpRequestFactory, RequestStateOptions } from \"./types\";\r\nimport { HttpRequestStateStore } from './HttpRequestStateStore';\r\nimport { Observable } from \"rxjs\";\r\n\r\n@Injectable()\r\nexport class HttpRequestStateFactory  implements OnDestroy {\r\n\r\n  constructor() {}\r\n  ngOnDestroy(): void {\r\n    this.requestors.forEach( request => request.ngOnDestroy());\r\n  }\r\n  private requestors: OnDestroy[] = [];\r\n  create<TParam extends any[], T>( req: HttpRequestFactory<TParam,T>, options?: RequestStateOptions ) : HttpRequestStateStore<TParam,T> {\r\n    const requestor = new HttpRequestStateStore(req, options);\r\n    this.requestors.push(requestor);\r\n    return requestor;\r\n  }\r\n\r\n  createHttpClient<T>( r: (o: Observable<T> ) => Observable<T> , options?: RequestStateOptions )  {\r\n    const requestor = new HttpRequestStateStore(r, options);\r\n    this.requestors.push(requestor);\r\n    return requestor;\r\n  }\r\n\r\n}","import { Dictionary } from './dictionary';\nimport { PipeTransform, Predicate, TemplateRef } from '@angular/core';\nimport { TableBuilderExport } from '../classes/TableBuilderConfig';\nimport { QueryParamsHandling } from '@angular/router';\n\n\nexport enum FieldType {\n    Unknown = 0,\n    Date = 1,\n    Link = 2,\n    ImageUrl = 3,\n    Currency = 4,\n    Array = 5,\n    Hidden = 6,\n    Number = 7,\n    String = 8,\n    Boolean = 9,\n    PhoneNumber = 10,\n    Expression = 11,\n    Enum = 12,\n    DateTime = 13,\n}\n\nexport enum SortDirection {\n    asc= 'asc',\n    desc= 'desc'\n}\n\nexport enum Target {\n  Blank = '_blank',\n  Self = '_self',\n  Parent = '_parent',\n  Top = '_top'\n}\n\nexport interface MetaData<T = any, AdditionalFields extends string[] = []> {\n  key: (keyof T | AdditionalFields[number]) & string;\n  displayName?: string;\n  fieldType: FieldType;\n  additional?: Additional<T>;\n  order?: number;\n  preSort?: SortDef;\n  _internalNotUserDefined?: boolean;\n  width?: string;\n  noExport?: boolean;\n  noFilter?: boolean;\n  customCell?: boolean;\n  transform?: ((o: T, ...args: any[])=> any) | ((o: string, ...args: any[])=> any) | PipeTransform;\n  click?: (element: T, key: string ) => void;\n  template?: TemplateRef<any>;\n  classes?: Dictionary<Predicate<T>>;\n  toolTip?: string;\n  useIcon?: boolean;\n}\nexport interface  ReportDef<DataType = any> {\n    data: DataType[];\n    metaData: MetaData [];\n    totalRecords?: number;\n    count: number;\n}\n\nexport interface SortDef {\n    direction: SortDirection;\n    precedence?: number;\n}\n\nexport interface FilterOptions {\n  filterableValues : string[]\n}\nexport interface DateTimeOptions {\n  format?: string;\n  includeSeconds?: boolean;\n  includeMilliseconds: boolean;\n}\ntype interpolatedRoute = string;\nexport interface Additional<T = any> {\n  link? : {\n    base?: string;\n    urlKey?: string;\n    target?: Target;\n    useRouterLink?: boolean;\n    /**\n     * If you want to use a route with interpolated params, you can use this. Wrap the property name in curly braces.\n     * For example, if interpolatedRoute = /users/{id}/edit, {id} will be replaced with the value of the element's id property.\n     */\n    interpolatedRoute?: interpolatedRoute;\n    routerLinkOptions?:{\n      queryParams?: [string, interpolatedRoute][];\n      fragment?: string;\n      preserveFragment?: boolean;\n      queryParamsHandling?: QueryParamsHandling;\n    }\n  }\n  /**\n   * @deprecated Please use link.base\n   */\n  base?: string;\n  /**\n   * @deprecated Please use link.urlKey\n   */\n  urlKey?: string;\n  /**\n   * @deprecated Please use link.target\n   */\n  target?: Target;\n  /**\n   * @deprecated Please use link.useRouterLink\n   */\n  useRouterLink?: boolean;\n  footer?: { type: 'sum' };\n  grouping?: { groupBy?: boolean, sum?: boolean; groupTitleFn?: (val: any) => string }\n  export?: TableBuilderExport;\n  dateFormat?: string;\n  dateTimeOptions?:  DateTimeOptions;\n  filterOptions?: FilterOptions;\n  styles?: Dictionary<string>;\n  columnPartStyles?: {\n    header?: Dictionary<string>,\n    body?: Dictionary<string>,\n    footer?: Dictionary<string>,\n  }\n  enumMap?: {[key:number]:string};\n  boolean? : {\n    showForFalse? : true | { icon : string },\n    forTrue? : { icon : string }\n  }\n}\n\nexport enum ArrayStyle {\n  CommaDelimited,\n  NewLine\n}\n\nexport interface ArrayAdditional extends Additional {\n    metaData?: MetaData;\n    limit?: number;\n    arrayStyle?: ArrayStyle;\n}\n","import { Predicate } from '@angular/core';\nimport { flatten } from 'lodash';\nimport {\n  filter,\n  first,\n  map,\n  pairwise,\n  startWith,\n  Observable,\n  combineLatest,\n  Subscription,\n  MonoTypeOperatorFunction,\n  OperatorFunction,\n  concatMap,\n  merge,\n  of,\n  delay\n} from 'rxjs';\n\n\nexport const onceWhen = <T>(predicate: Predicate<T>) => (src: Observable<T>) : Observable<T> => {\n  return src.pipe(filter(predicate),first());\n}\n\nexport const mapArray = <T, U>(mapFunc: (src: T) => U ) => (source: Observable<T[]>) =>\n  source.pipe( map( src => src.map(mapFunc) ) );\n\nexport  const filterArray = <T>(filterFunc: (src: T) => boolean ) => (source: Observable<T[]>) =>\n  source.pipe( map( src => src.filter(filterFunc) ) );\n\nexport function onWait<T,V extends T>(val: V) : MonoTypeOperatorFunction<T> {\n  return (source: Observable<T>) => {\n    return new Observable<T>(subscriber => {\n      let emitted = false;\n      setTimeout(() => {\n        if(!emitted) {\n          subscriber.next(val);\n        }\n      }, 0);\n      source.subscribe({\n        next(x) { emitted = true; subscriber.next(x) },\n        error(err) { emitted = true; subscriber.error(err) },\n        complete() { emitted = true; subscriber.complete(); }\n      });\n    });\n  }\n\n}\n\nexport const combineArrays = <T>(sources: Observable<T[]>[]): Observable<T[]> => {\n  return combineLatest(\n    sources.map( src => src.pipe(onWait([])))\n  ).pipe(\n    map( res => flatten(res) )\n  );\n};\n\nexport function switchOff( switchSource: Observable<boolean>, defaultState: boolean = true) {\n  return <T>(source: Observable<T>) : Observable<T> => {\n    return new Observable(subsciber => {\n      let isOn = defaultState;\n      const subscription = new Subscription();\n      subscription.add( switchSource.subscribe( on => isOn = on ));\n      subscription.add(source.subscribe({\n        next(value) {\n          if(isOn) {\n            subsciber.next(value);\n          }\n        },\n        error: error => subsciber.error(error),\n        complete: () => subsciber.complete()\n      }));\n      return subscription;\n    });\n  }\n}\n\nexport function skipOneWhen( skipper: Observable<any> ) {\n  return <T>(source: Observable<T>) : Observable<T> => {\n    return new Observable(subsriber => {\n      const subscription = new Subscription();\n      let skipNext = false;\n      subscription.add(skipper.subscribe( _ => skipNext = true));\n      subscription.add(source.subscribe({\n        next(value) {\n          if(skipNext) {\n            skipNext = false;\n          } else {\n            subsriber.next(value);\n          }\n        },\n        error: error => subsriber.error(error),\n        complete: () => subsriber.complete()\n      }));\n      return subscription;\n    });\n  }\n}\n\nexport function previousAndCurrent<T>(startingValue : T) : OperatorFunction<T, [T, T]> {\n  return (source: Observable<T>) => {\n    return source.pipe(startWith(startingValue), pairwise());\n  }\n}\n\nexport function notNull<T>(): OperatorFunction<(T | null | undefined), T> {\n  return  (source: Observable<T | null | undefined>) => {\n    return  source.pipe(filter( (o: T | null | undefined): o is T => o != null) )\n  }\n}\n\nexport function delayOn<T>(predicate: (t: T) => boolean, delayTime: number) {\n  return (src: Observable<T>) => {\n    return src.pipe(\n      concatMap(r => {\n        if (predicate(r)) {\n          return merge(\n            of({ r }),\n            of(null).pipe(delay(delayTime))\n          ).pipe(\n            notNull(),\n            map(d => d.r)\n          );\n        } else {\n          return of(r);\n        }\n      })\n    );\n  };\n}\n","import { InjectionToken } from '@angular/core';\nimport { TableState } from './TableState';\nimport { DefaultSettings } from './DefaultSettings';\nimport { ArrayAdditional, FieldType } from '../interfaces/report-def';\nexport interface TableBuilderConfig {\n  defaultTableState: Partial<TableState>;\n  export?: TableBuilderExport;\n  defaultSettings?: DefaultSettings;\n  arrayInfo?: ArrayAdditional;\n  transformers?: Partial<{ [key in keyof typeof FieldType]: (val: any) => any }>\n}\n\nexport interface TableBuilderExport {\n  dateFormat?: string;\n  dateTimeFormat?: string;\n  onSave?: (event?: any) => void;\n  prepend? : string;\n}\n\nexport const TableBuilderConfigToken = new InjectionToken<TableBuilderConfig>('TableBuilderConfig');\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n    name: 'phone',\n    standalone: false\n})\nexport class PhoneNumberPipe implements PipeTransform {\n\n  transform(phoneNum: string): any {\n    if (phoneNum) {\n      phoneNum = phoneNum.replace(/\\D/g,'');\n      if(phoneNum[0] === '1') {\n        phoneNum = phoneNum.substring(1);\n      }\n      return '(' +  phoneNum.slice(0, 3) + ') ' + phoneNum.slice(3, 6) + '-' + phoneNum.slice(6, 10) + ' ' + phoneNum.slice(10);\n    }\n  }\n}\n","import { Directive, HostListener } from '@angular/core';\n\n@Directive({\n    selector: 'preventEnter',\n    standalone: false\n})\nexport class PreventEnterDirective {\n\n  @HostListener('keydown.enter')\n  onKeyDown() {\n      return false\n  }\n}\n","import {Directive, HostListener} from \"@angular/core\";\n\n@Directive({\n    selector: \"[stop-propagation]\",\n    standalone: false\n})\nexport class StopPropagationDirective\n{\n    @HostListener(\"click\", [\"$event\"])\n    public onClick(event: any): void\n    {\n        event.stopPropagation();\n    }\n\n    @HostListener(\"mousedown\", [\"$event\"])\n    public onMousedown(event: any): void\n    {\n        event.stopPropagation();\n    }\n}\n","import { Directive, ElementRef, AfterViewInit, Input } from '@angular/core';\n\n@Directive({\n    selector: '[autoFocus]',\n    standalone: false\n})\nexport class AutoFocusDirective implements AfterViewInit {\n\n  @Input() autoFocus = true;\n  constructor(private elementRef: ElementRef) { }\n\n  ngAfterViewInit() {\n    if(this.autoFocus){\n      setTimeout(() => {\n        this.elementRef.nativeElement.focus();\n      });\n    }\n  }\n\n}\n","import { Directive, Input } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Directive({\n    selector: '[clickSubject]',\n    exportAs: 'clickSubject',\n    host: {\n        '(click)': 'next(this._val)'\n    },\n    standalone: false\n}) export class ClickSubjectDirective<T = boolean> extends Subject<T> {\n  constructor( ) {\n    super();\n  }\n  _val!: T;\n\n  @Input('clickSubject') set clickSubject( val: T) {\n    this._val = val;\n  }\n}\n","import { Directive } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n\n@Directive({\n    selector: '[clickEmitter]',\n    exportAs: 'clickEmitter',\n    host: {\n        '(click)': 'next(true)'\n    },\n    standalone: false\n}) export class ClickEmitterDirective extends Subject<boolean> {\n  constructor() {\n    super();\n  }\n}\n","import { Injectable} from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\n\n@Injectable({\n  providedIn: 'root'\n})\n\nexport class DialogService {\n  allOpenOpDialogs: MatDialogRef<any>[] = [];\n\n  addDialogRef(ref: MatDialogRef<any>) {\n    this.allOpenOpDialogs.push(ref);\n  }\n\n  removeDialogRef(ref: MatDialogRef<any>) {\n    this.allOpenOpDialogs = this.allOpenOpDialogs.filter(rf => ref.id !== rf.id);\n  }\n\n  closeAllOpDialogs() {\n    this.allOpenOpDialogs.forEach(ref => ref.close());\n  }\n}\n","import { Directive, TemplateRef, Input, OnDestroy, Component, Output, EventEmitter, ViewContainerRef, Injector, ComponentFactoryResolver } from '@angular/core';\nimport { MatDialog, MatDialogRef, MatDialogConfig } from '@angular/material/dialog';\nimport { Observable, Subscription, Subject } from 'rxjs';\nimport { switchAll } from 'rxjs/operators';\nimport { DialogService } from './dialog-service';\n\n\ninterface DialogViewContext<T> {\n  $implicit: T,\n  opDialog: T,\n  close: () => void,\n\n}\n\n@Component({\n    selector: 'app-dialog-content',\n    template: ``,\n    standalone: false\n})\nexport class DialogWrapper<T = any> {\n  viewEmbeded = false;\n  viewContext = {\n    close: () => {},\n  } as DialogViewContext<T>;\n  set template(tmpl: TemplateRef<DialogViewContext<T>>) {\n    if (this.viewEmbeded) {\n      this.vcr.clear();\n    }\n    this.viewEmbeded = true;\n    this.vcr.createEmbeddedView(tmpl, this.viewContext);\n  }\n\n  set close(closeMethod: () => void ) {\n    this.viewContext.close = closeMethod;\n  }\n\n  set data(value: T) {\n    this.viewContext.$implicit = value;\n    this.viewContext.opDialog = value;\n  }\n  constructor(private vcr: ViewContainerRef ) {\n  }\n\n}\n\n\nconst defaultDialogConfig: MatDialogConfig = {\n  maxHeight: '95vh',\n}\n\n\n@Directive(\n  {\n    selector: '[opDialog]',\n    standalone: false\n}\n) export class DialogDirective<T> implements OnDestroy {\n  @Output() opDialogClosed: EventEmitter<boolean> = new EventEmitter();\n  _dialogConfig: MatDialogConfig<T> = defaultDialogConfig;\n  @Input() add_opDialog_Class = true;\n  @Input() set opDialogConfig(config: MatDialogConfig<T>) {\n    \n    this._dialogConfig = { ...defaultDialogConfig, ...config };\n  }\n\n  get opDialogConfig() : MatDialogConfig<T> {\n    return this._dialogConfig;\n  }\n  @Input('opDialog') set state(open_close: Observable<T>) {\n    this._data.next(open_close);\n  }\n  @Input('opDialogOrigin') nativeElement? : HTMLElement;\n  dialogRef?: MatDialogRef<any, boolean>;\n  subscription: Subscription;\n  componentWrapper?: DialogWrapper<T>;\n\n  constructor(\n    private templateRef: TemplateRef<DialogViewContext<T>>,\n    private dialog: MatDialog,\n    private service: DialogService) {\n    this.subscription = this._data.pipe(\n      switchAll()\n    ).subscribe(d => {\n      if (d) {\n        this.opDialogConfig.data = d;\n        this.setDialogState(true);\n      } else {\n        this.setDialogState(false);\n      }\n    });\n  }\n\n  _data = new Subject<Observable<T>>();\n\n  close() {\n    this.dialogRef?.close();\n  }\n\n  initDialog() {\n    if(this.nativeElement){\n      const rect = this.nativeElement.getBoundingClientRect();\n      const position = { left: `${rect.left}px`, top: `${rect.bottom - 50}px` };\n      this.opDialogConfig = {...this.opDialogConfig , position};\n    }\n    if (this.add_opDialog_Class) {\n      this.opDialogConfig.panelClass = [...(Array.isArray(this.opDialogConfig.panelClass) ? this.opDialogConfig.panelClass : this.opDialogConfig.panelClass ? [this.opDialogConfig.panelClass] : []), 'opDialog'];\n    }\n    this.dialogRef = this.dialog.open(DialogWrapper, this.opDialogConfig);\n    this.componentWrapper = this.dialogRef.componentInstance;\n    this.componentWrapper!.close = () => this.dialogRef?.close();\n    this.componentWrapper!.data = this.opDialogConfig.data as T;\n    this.componentWrapper!.template = this.templateRef;\n    if (!this.opDialogConfig.disableClose) {\n      this.service.addDialogRef(this.dialogRef);\n    }\n    const sub = this.dialogRef.afterClosed().subscribe(() => {\n      this.opDialogClosed.emit(true);\n      this.service.removeDialogRef(this.dialogRef!);\n      this.dialogRef = undefined;\n      sub.unsubscribe();\n    });\n  }\n\n  setDialogState(open: boolean) {\n    if (open) {\n      if (!this.dialogRef) {\n        this.initDialog();\n      } else {\n        this.componentWrapper!.data = this.opDialogConfig.data as T;\n      }\n    } else if (!open && this.dialogRef) {\n      this.dialogRef.close();\n    }\n  }\n\n  ngOnDestroy() {\n    if (this.subscription) {\n      this.subscription.unsubscribe();\n    }\n  }\n\n static ngTemplateContextGuard<T>(dir: DialogDirective<T>, ctx: any): ctx is DialogViewContext<Exclude<T, false|0|''|null|undefined>> {\n   return true;\n }\n\n}\n","import { Directive,  Input, ElementRef } from '@angular/core';\r\n\r\n\r\n@Directive({\n    selector: '[styler]',\n    standalone: false\n}) export class StylerDirective {\r\n  @Input() set styler(styles){\r\n    if(styles){\r\n      Object.keys(styles).forEach( style => {\r\n        this.el.nativeElement.style[style] = styles[style];\r\n      });\r\n    }\r\n  };\r\n  constructor(private el: ElementRef) {\r\n }\r\n}\r\n","import { ContentChildren, Directive, Input, Output, QueryList } from \"@angular/core\";\nimport { MatSlideToggle } from \"@angular/material/slide-toggle\";\nimport { merge, Observable, ReplaySubject, scan, startWith, switchMap } from \"rxjs\";\n\n\n@Directive(\n  {\n    selector: '[opMatSlideToggleGroup]',\n    standalone: false\n}\n) export class MatSlideToggleGroupDirective  {\n  @Input() allowMultiple = false;\n\n  _toggles!: QueryList<MatSlideToggle>;\n  @ContentChildren(MatSlideToggle) set toggles(val: QueryList<MatSlideToggle>) {\n    this._toggles = val;\n    this._ready.next(true);\n  }\n\n  private _ready = new ReplaySubject<boolean>(1);\n\n  @Output() get valueEmitter() : Observable<{[key:string]: boolean}> {\n    return this._ready.pipe( switchMap( _ => this.getObs()));\n  }\n\n\n  getInitValue() {\n    const startValue = this._toggles.reduce( (prev,cur) => {\n      if(!cur.name) {\n        throw new Error('toggle must have the name attribute set');\n      }\n      prev[cur.name] = cur.checked\n      return prev;\n    }, {} as {[k:string]: boolean});\n    return startValue;\n  }\n\n  getObs() {\n    var toggleChanges = merge(...this._toggles.map( toggle => toggle.change ));\n\n    const startValue = this.getInitValue();\n\n    return toggleChanges.pipe(\n      scan( (prev,cur) => {\n        const toggleName = cur.source.name!;\n        const newVal = {...prev,[toggleName]:cur.checked};\n        if(cur.checked && !this.allowMultiple) {\n          Object.keys(prev)\n            .filter( key => key !== toggleName && prev[key])\n            .forEach( key => {\n              newVal[key] = false;\n              this._toggles.find( toggle => toggle.name === key)!.toggle();\n            });\n        }\n        return newVal;\n      },startValue),\n      startWith(startValue),\n    );\n\n  }\n\n}\n","import { Directive, ElementRef, HostListener } from '@angular/core';\n\n@Directive({\n    selector: 'input[trimWhitespace]',\n    standalone: false\n})\nexport class TrimWhitespaceDirective {\n\n  constructor(private elem: ElementRef) { }\n\n  @HostListener('blur') onBlur() {\n    const inputString = this.elem.nativeElement.value;\n    if(inputString) {\n      const newValue = inputString.trim().replace(/\\t/g, '');\n      if(inputString !== newValue) {\n        this.elem.nativeElement.value = newValue;\n        this.elem.nativeElement.dispatchEvent(new Event('input', {bubbles:true}));\n      }\n    }\n  }\n}","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n    name: 'func',\n    standalone: false\n})\nexport class FunctionPipe implements PipeTransform {\n  transform(func: ( (...args: any[])=> any ) | string, ...args: any[]): any {\n    if(typeof func === 'string') {\n      const [instance, ...tail] = args;\n      const method = instance[func].bind(instance);\n      return method(...tail);\n    }\n      return func(...args);\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n    name: 'spaceCase',\n    standalone: false\n})\nexport class SpaceCasePipe implements PipeTransform {\n  transform(value: string): string {\n    return  spaceCase(value);\n  }\n}\n\n/**\n * Adds a space before uppercase letters that either\n * 1. follows a lowercase letter or digit\n * 2. or precedes a lowercase letter and follows an alpha-numeric character\n * \n * Uppercases the first digit\n * \n * Turns underscores into spaces\n */\nexport function spaceCase(value: string){\n  const phrase = value?.replace(/([a-z0-9])([A-Z])|([a-zA-Z0-9])([A-Z])(?=[a-z])|_/g, '$1$3 $2$4')\n  // uppercase the first character of every word\n  return phrase?.replace(/(^| )(\\w)/g, x => x.toUpperCase());\n}\n","import { Directive, ElementRef, Input, Renderer2, SimpleChanges } from '@angular/core';\nimport { Dictionary, Predicate } from '@ngrx/entity';\n\n@Directive({\n    selector: '[conditionalClasses]',\n    standalone: false\n})\nexport class ConditionalClassesDirective {\n\n  constructor(private el: ElementRef, private renderer: Renderer2) {\n  }\n\n @Input() element?: any;\n @Input('conditionalClasses') classes?: Dictionary<Predicate<any>>;\n\n classesApplied: string[] = [];\n\n ngOnChanges(changes: SimpleChanges) {\n  let toApply: string [] = [];\n  if(this.classes) {\n    toApply = Object.keys(this.classes)\n    .filter( key => this.classes![key]!(this.element) );\n  }\n\n  var classesNotYetApplied = toApply.filter( c => !this.classesApplied.includes(c) );\n  var classesToRemove = this.classesApplied.filter( c => !toApply.includes(c));\n\n  classesToRemove.forEach( c => this.renderer.removeClass( this.el.nativeElement, c ) );\n\n  classesNotYetApplied.forEach( c => this.renderer.addClass( this.el.nativeElement , c ) );\n\n  this.classesApplied = toApply;\n }\n\n\n}\n","import { NgModule } from \"@angular/core\";\nimport { AutoFocusDirective } from \"./directives/auto-focus.directive\";\nimport { ClickEmitterDirective } from \"./directives/clickEmitterDirective\";\nimport { ClickSubjectDirective } from \"./directives/clickSubject\";\nimport { ConditionalClassesDirective } from \"./directives/conditional-classes.directive\";\nimport { DialogDirective } from \"./directives/dialog\";\nimport { DialogService } from \"./directives/dialog-service\";\nimport { MatSlideToggleGroupDirective } from \"./directives/mat-toggle-group-directive\";\nimport { PreventEnterDirective } from \"./directives/prevent-enter.directive\";\nimport { StopPropagationDirective } from \"./directives/stop-propagation.directive\";\nimport { TrimWhitespaceDirective } from \"./directives/trim-whitespace.directive\";\nimport { StylerDirective } from \"./directives/styler\";\nimport { FunctionPipe } from \"./pipes/function.pipe\";\nimport { PhoneNumberPipe } from \"./pipes/phone.pipe\";\nimport { SpaceCasePipe } from \"./pipes/space-case.pipes\";\n\n@NgModule({\n  imports: [\n\n  ],\n    exports: [\n        StopPropagationDirective,\n        PreventEnterDirective,\n        SpaceCasePipe,\n        PhoneNumberPipe,\n        FunctionPipe,\n        StopPropagationDirective,\n        TrimWhitespaceDirective,\n        StylerDirective,\n        PreventEnterDirective,\n        AutoFocusDirective,\n        ClickSubjectDirective,\n        ClickEmitterDirective,\n        DialogDirective,\n        MatSlideToggleGroupDirective,\n        ConditionalClassesDirective,\n    ],\n    declarations: [\n        SpaceCasePipe,\n        PhoneNumberPipe,\n        FunctionPipe,\n        StopPropagationDirective,\n        StylerDirective,\n        PreventEnterDirective,\n        AutoFocusDirective,\n        TrimWhitespaceDirective,\n        ClickSubjectDirective,\n        ClickEmitterDirective,\n        DialogDirective,\n        MatSlideToggleGroupDirective,\n        ConditionalClassesDirective,\n    ],\n    providers : [\n      DialogService\n    ]\n})\nexport class UtilitiesModule {\n}\n","import { PipeTransform, Inject, Injectable } from '@angular/core';\nimport { FieldType, MetaData } from '../interfaces/report-def';\nimport { DatePipe, CurrencyPipe } from '@angular/common';\nimport { PhoneNumberPipe } from '../../utilities/pipes/phone.pipe';\nimport { TableBuilderConfigToken, TableBuilderConfig } from '../classes/TableBuilderConfig';\nimport { SpaceCasePipe } from '../../utilities';\nimport { get } from 'lodash';\nexport function isPipe(o : any ): o is PipeTransform {\n  return typeof ((o as PipeTransform).transform ) === 'function';\n}\n\n@Injectable({\n  providedIn:  'root',\n})\nexport class TransformCreator {\n  constructor(\n    private datePipe: DatePipe,\n    private currencyPipe: CurrencyPipe,\n    private phonePipe: PhoneNumberPipe,\n    private casePipe: SpaceCasePipe,\n    @Inject(TableBuilderConfigToken) private config: TableBuilderConfig,\n  ) {}\n  createTransformer(metaData: MetaData): ((value: any, ...args: any[]) => any)  {\n    const defaultFunc = (value: any) => get( value, metaData.key);\n    if(metaData.transform) {\n      if(isPipe(metaData.transform)){\n        return (value: any) =>  (metaData!.transform as PipeTransform).transform(defaultFunc(value));\n      }\n      return metaData.fieldType === FieldType.Expression ? metaData.transform : (value: any) => (metaData.transform as (a:any,b:any)=>any)(defaultFunc(value),value);\n    }\n    if (this.config.transformers && this.config.transformers[metaData.fieldType]) {\n      var tranformer =  this.config.transformers![metaData.fieldType]!;\n      return (value: any) => tranformer(defaultFunc(value));\n    }\n    const defaultDateFormat = this.config.defaultSettings?.dateFormat ?? 'shortDate';\n    const defaultDateTimeFormat = this.config.defaultSettings?.dateTimeFormat ?? 'short';\n    switch(metaData.fieldType) {\n      case FieldType.Date:\n        const dateFormat = metaData.additional?.dateFormat ?? defaultDateFormat;\n        return (value: any) => this.datePipe.transform(defaultFunc(value), dateFormat);\n      case FieldType.DateTime:\n        const dateTimeFormat = metaData.additional?.dateTimeOptions?.format ?? defaultDateTimeFormat;\n        return (value: any) => this.datePipe.transform(defaultFunc(value), dateTimeFormat);\n      case FieldType.Currency:\n          return (value: any) =>  this.currencyPipe.transform(defaultFunc(value));\n      case FieldType.PhoneNumber:\n        return  (value: any) =>  this.phonePipe.transform(defaultFunc(value));\n      case FieldType.Enum:\n        return (value: any) =>  this.casePipe.transform(metaData.additional?.enumMap![defaultFunc(value)] as string) ;\n      case FieldType.Boolean:\n        let forTrue = 'check'\n        let forFalse = '';\n        if(metaData.additional?.boolean?.forTrue) {\n          forTrue = metaData?.additional.boolean.forTrue.icon;\n        }\n        if(metaData.additional?.boolean?.showForFalse === true) {\n          forFalse = 'clear';\n        } else if (metaData.additional?.boolean?.showForFalse?.icon) {\n          forFalse = metaData.additional?.boolean?.showForFalse?.icon;\n        }\n        return (value: any) => defaultFunc(value) ? forTrue : forFalse ;\n    }\n      return defaultFunc;\n  }\n\n}\n","import { merge } from \"lodash\";\n\nexport class GeneralTableSettings {\n  constructor(settings? : TableBuilderSettings){\n    if(settings){\n      merge(this.headerSettings, settings.headerSettings);\n      merge(this.footerSettings, settings.footerSettings);\n      merge(this.columnHeaderSettings, settings.columnHeaderSettings);\n    }\n  }\n  headerSettings = new TableWrapperHeaderSettings();\n  footerSettings = new TableWrapperFooterSettings();\n  columnHeaderSettings = new TableColumnHeaderSettings();\n}\n\nexport interface TableBuilderSettings {\n  headerSettings? : Partial<TableWrapperHeaderSettings>;\n  footerSettings? : Partial<TableWrapperFooterSettings>;\n  columnHeaderSettings? : Partial<TableColumnHeaderSettings>;\n}\n\nexport class TableWrapperHeaderSettings {\n  hideExport = false\n  hideFilter = false\n  hideColumnSettings = false\n  hideHeader = false\n  hideSort = false\n  collapse = false\n  showTitleWhenCollapsed = true;\n}\n\nexport class TableWrapperFooterSettings {\n  collapse = false\n}\n\nexport class TableColumnHeaderSettings {\n  noFilters = false;\n  noHeader = false;\n}\n\nexport class PesrsistedTableSettings {\n  constructor(tableSettings? :GeneralTableSettings | PesrsistedTableSettings){\n    if (tableSettings){\n      this.collapseHeader = (tableSettings as GeneralTableSettings).headerSettings?.collapse ?? (tableSettings as PesrsistedTableSettings).collapseHeader;\n      this.collapseFooter = (tableSettings as GeneralTableSettings).footerSettings?.collapse ?? (tableSettings as PesrsistedTableSettings).collapseFooter;\n    }\n  }\n  collapseHeader = false;\n  collapseFooter = false;\n}\n\nexport class NotPersisitedTableSettings {\n  constructor(tableSettings? :GeneralTableSettings){\n    if(tableSettings){\n      this.hideExport = tableSettings.headerSettings.hideExport;\n      this.hideColumnSettings = tableSettings.headerSettings.hideColumnSettings;\n      this.hideFilter = tableSettings.headerSettings.hideFilter;\n      this.hideSort = tableSettings.headerSettings.hideSort;\n      this.showTitleWhenHeaderCollapsed = tableSettings.headerSettings.showTitleWhenCollapsed;\n      this.hideHeader = tableSettings.headerSettings.hideHeader;\n      this.hideColumnHeaderFilters = tableSettings.columnHeaderSettings.noFilters;\n      this.hideColumnHeader = tableSettings.columnHeaderSettings.noHeader;\n    }\n  }\n  hideExport = true\n  hideFilter = true\n  hideColumnSettings = true\n  hideSort = true\n  showTitleWhenHeaderCollapsed = true;\n  hideHeader = true\n  hideColumnHeaderFilters = true;\n  hideColumnHeader = true;\n}\n","import { CustomFilter, FilterInfo } from './filter-info';\r\nimport { Dictionary } from '../interfaces/dictionary';\r\nimport { Sort } from '@angular/material/sort';\r\nimport { MetaData, Target } from '../interfaces/report-def';\r\nimport { NotPersisitedTableSettings, PesrsistedTableSettings } from './table-builder-general-settings';\r\n\r\nexport interface Group {\r\n  groupName?: string;\r\n  parentGroupName?: string;\r\n  isExpanded?: boolean;\r\n}\r\n\r\nexport interface PersistedTableState {\r\n  hiddenKeys?: string [];\r\n  pageSize?: number;\r\n  filters: Dictionary<FilterInfo | CustomFilter>;\r\n  sorted : Sort [];\r\n  userDefined : {order:Dictionary<number>,widths:Dictionary<number>,table:{width?:number}};\r\n  persistedTableSettings : PesrsistedTableSettings;\r\n  groupByKeys: string[];\r\n  groups: Group[];\r\n}\r\n\r\nexport interface TableState extends Required<PersistedTableState> {\r\n  initializationState: InitializationState;\r\n  metaData: Dictionary<MetaData>;\r\n  notPersisitedTableSettings : NotPersisitedTableSettings;\r\n  linkMaps:{[key:string]:{\r\n    link: (t:any)=>string,\r\n    useRouterLink: boolean,\r\n    target: Target\r\n  }};\r\n}\r\ntype RequireNull<T> = { [K in keyof T]: null };\r\nclass KeysToDelete implements  RequireNull<Omit<TableState, keyof PersistedTableState>> {\r\n  initializationState = null;\r\n  metaData = null;\r\n  notPersisitedTableSettings = null;\r\n  linkMaps = null;\r\n}\r\nexport const keysToDelete = Object.keys(new KeysToDelete());\r\n\r\nexport enum InitializationState {\r\n  Created,\r\n  MetaDataLoaded,\r\n  LoadedFromStore,\r\n  Ready,\r\n}\r\n\r\nexport const defaultTableState: TableState = {\r\n  initializationState: InitializationState.Created,\r\n  metaData: {},\r\n  filters: {},\r\n  hiddenKeys: [],\r\n  sorted: [],\r\n  userDefined:{order:{},widths:{},table:{}},\r\n  persistedTableSettings : new PesrsistedTableSettings(),\r\n  notPersisitedTableSettings : new NotPersisitedTableSettings(),\r\n  pageSize: 10,\r\n  linkMaps:{},\r\n  groupByKeys: [],\r\n  groups: []\r\n};\r\n","\nexport enum FilterType {\n    NumberEquals = 'Equals',\n    NumberNotEqual = 'Does Not Equal',\n    NumberGreaterThan = 'Greater Than',\n    NumberLessThan = 'Less Than',\n    NumberBetween = 'Between',\n    StringEquals = 'Equals',\n    StringContains = 'Contains',\n    StringDoesNotContain = 'Does Not Contain',\n    StringStartWith = 'Start With',\n    StringEndsWith = 'Ends With',\n    DateIsOn = 'Is on',\n    DateIsNotOn = 'Is Not On',\n    DateOnOrAfter = 'On or After',\n    DateOnOrBefore = 'On or Before',\n    DateBetween = 'Between',\n    DateTimeIsAt = 'Is At',\n    DateTimeIsNotAt = 'Is Not At',\n    DateTimeAtOrAfter = 'At or After',\n    DateTimeAtOrBefore = 'At or Before',\n    DateTimeBetween = 'Between',\n    BooleanEquals = 'Is',\n    IsNull = 'Is Blank',\n    Or = 'Or',\n    And = 'And',\n    In = 'In',\n    Custom = 'Custom',\n}\n\nexport const NumberFilterMap:FilterToFiltersMap = {\n    [FilterType.NumberEquals]: [FilterType.NumberEquals],\n    [FilterType.NumberNotEqual]: [FilterType.NumberNotEqual],\n    [FilterType.NumberGreaterThan]: [FilterType.NumberGreaterThan],\n    [FilterType.NumberLessThan]: [FilterType.NumberLessThan],\n    [FilterType.NumberBetween]: [FilterType.NumberBetween],\n    [FilterType.IsNull]: [FilterType.IsNull],\n    [FilterType.In]: [FilterType.In],\n};\n\nexport const StringFilterMap:FilterToFiltersMap = {\n    [FilterType.StringContains]: [FilterType.StringContains],\n    [FilterType.StringEquals]: [FilterType.StringEquals],\n    [FilterType.StringDoesNotContain]: [FilterType.StringDoesNotContain],\n    [FilterType.StringStartWith]: [FilterType.StringStartWith],\n    [FilterType.StringEndsWith]: [FilterType.StringEndsWith],\n    [FilterType.IsNull]: [FilterType.IsNull],\n    [FilterType.In]: [FilterType.In],\n};\n\nexport const DateFilterMap:FilterToFiltersMap = {\n    [FilterType.DateIsOn]: [FilterType.DateIsOn],\n    [FilterType.DateIsNotOn]: [FilterType.DateIsNotOn],\n    [FilterType.DateOnOrAfter]: [FilterType.DateOnOrAfter],\n    [FilterType.DateOnOrBefore]: [FilterType.DateOnOrBefore],\n    [FilterType.DateBetween]: [FilterType.DateBetween],\n    [FilterType.IsNull]: [FilterType.IsNull],\n};\n\nexport const DateTimeFilterMap:FilterToFiltersMap = {\n  ...DateFilterMap,\n  [FilterType.DateTimeIsAt]: [FilterType.DateTimeIsAt],\n  [FilterType.DateTimeIsNotAt]: [FilterType.DateTimeIsNotAt],\n  [FilterType.DateTimeAtOrAfter]: [FilterType.DateTimeAtOrAfter],\n  [FilterType.DateTimeAtOrBefore]: [FilterType.DateTimeAtOrBefore],\n  [FilterType.DateTimeBetween]: [FilterType.DateTimeBetween],\n};\n\nexport const BooleanFilterMap :FilterToFiltersMap = {\n    [FilterType.BooleanEquals]: [FilterType.BooleanEquals],\n    [FilterType.IsNull]: [FilterType.IsNull],\n};\n\nexport const EnumFilterMap : FilterToFiltersMap = {\n  [FilterType.IsNull] : [FilterType.IsNull],\n  [FilterType.In] : [FilterType.In]\n}\n\nexport type FilterToFiltersMap = Partial<{[key in FilterType]: FilterType[]}>;\n","import { FilterFunc, FilterInfo } from '../classes/filter-info';\n\nexport const isNull:FilterFunc<boolean,any> = (filterInfo:FilterInfo) => {\n  const func = filterInfo.filterValue ?\n    (val: any) => val == null || val === ''\n    :\n    (val: any) => val != null && val !== '';\n    return func;\n}\n","// Splits on comma, tab, newline, or carriage return (consecutive delimiters collapse).\n// Plain space is deliberately excluded: legitimate filter values often contain spaces\n// (company names, addresses, descriptions) and a user can't accidentally type tab or\n// newline into a single-line input — so these are unambiguous \"I copy-pasted multiple\n// values\" signals.\nconst DELIMITERS = /[,\\t\\n\\r]+/;\n\nexport function splitCommaValue<T>(value: T): T | string[] {\n  if (typeof value === 'string' && DELIMITERS.test(value)) {\n    return value.split(DELIMITERS).map(s => s.trim()).filter(s => s);\n  }\n  return value;\n}\n","export type WildcardAnchor = 'none' | 'start' | 'end' | 'both';\n\nexport function hasWildcard(s: unknown): s is string {\n  return typeof s === 'string' && /[*?]/.test(s);\n}\n\nexport function wildcardToRegex(pattern: string, anchor: WildcardAnchor): RegExp {\n  const escaped = pattern\n    .replace(/[.+^${}()|[\\]\\\\]/g, '\\\\$&')\n    .replace(/\\*/g, '.*')\n    .replace(/\\?/g, '.');\n  const prefix = anchor === 'start' || anchor === 'both' ? '^' : '';\n  const suffix = anchor === 'end'   || anchor === 'both' ? '$' : '';\n  return new RegExp(prefix + escaped + suffix, 'i');\n}\n","import { FilterFunc, FilterInfo } from '../classes/filter-info';\nimport { FilterType } from '../enums/filterTypes';\nimport { Dictionary } from '../interfaces/dictionary';\nimport { isNull } from './null-filter-function';\nimport { splitCommaValue } from './split-comma-value';\nimport { hasWildcard, wildcardToRegex, WildcardAnchor } from './wildcard-to-regex';\n\n\ntype LiteralOp = (val: string, fv: string) => boolean;\ntype SegmentMatcher = (preppedVal: string) => boolean;\n\nconst makeSegmentMatcher = (segment: unknown, anchor: WildcardAnchor, literalOp: LiteralOp): SegmentMatcher => {\n  const prepped = prepareForStringCompare(segment);\n  if (hasWildcard(prepped)) {\n    const re = wildcardToRegex(prepped, anchor);\n    return (val) => re.test(val);\n  }\n  return (val) => literalOp(val, prepped);\n};\n\nconst makeStringFunc = (anchor: WildcardAnchor, literalOp: LiteralOp): FilterFunc<string> =>\n  (filterInfo: FilterInfo) => {\n    const filterValue = splitCommaValue(filterInfo.filterValue);\n    const segments = Array.isArray(filterValue) ? filterValue : [filterValue];\n    const matchers = segments.map(seg => makeSegmentMatcher(seg, anchor, literalOp));\n    return (val) => {\n      const prepped = prepareForStringCompare(val) ?? '';\n      return matchers.some(m => m(prepped));\n    };\n  };\n\nconst stringEqualFunc      = makeStringFunc('both',  (a, b) => a === b);\nconst stringContainsFunc   = makeStringFunc('none',  (a, b) => a.includes(b));\nconst stringStartsWithFunc = makeStringFunc('start', (a, b) => a.startsWith(b));\nconst stringEndsWithFunc   = makeStringFunc('end',   (a, b) => a.endsWith(b));\n\nconst stringDoesNotContainFunc: FilterFunc<string> = (filterInfo: FilterInfo) => {\n  const match = makeSegmentMatcher(filterInfo.filterValue, 'none', (a, b) => a.includes(b));\n  return (val) => !match(prepareForStringCompare(val) ?? '');\n}\n\nconst multipleStringValuesEqualsFunc: FilterFunc<string[], string> = (filterInfo: FilterInfo) => {\n  const filterVals = filterInfo.filterValue.map((v: string) => prepareForStringCompare(v));\n  return ((val) => filterVals.some((s: string) => prepareForStringCompare(val) === s));\n}\n\nexport const StringFilterFuncs: { [k: string]: FilterFunc<any, any> } = {\n  [FilterType.StringEquals]: stringEqualFunc,\n  [FilterType.StringContains]: stringContainsFunc,\n  [FilterType.StringDoesNotContain]: stringDoesNotContainFunc,\n  [FilterType.StringStartWith]: stringStartsWithFunc,\n  [FilterType.StringEndsWith]: stringEndsWithFunc,\n  [FilterType.IsNull]: isNull,\n  [FilterType.In]: multipleStringValuesEqualsFunc,\n};\n\nexport const EnumFilterFuncs: Dictionary<FilterFunc<any, any>> = {\n  [FilterType.IsNull]: isNull,\n  [FilterType.In]: multipleStringValuesEqualsFunc,\n};\n\nexport const prepareForStringCompare = (val: any): string => val?.toString().trim().toLowerCase();\n","import { Range, FilterFunc, FilterInfo } from '../classes/filter-info';\nimport { FilterType } from '../enums/filterTypes';\nimport { Dictionary } from '../interfaces/dictionary';\nimport { isNull } from './null-filter-function';\nimport { splitCommaValue } from './split-comma-value';\n\ntype NumberFilterFunc = FilterFunc<number>\n\nconst numberEqalsFunc: NumberFilterFunc = (filterInfo: FilterInfo<number>) => {\n  const split = splitCommaValue(filterInfo.filterValue);\n  if (Array.isArray(split)) {\n    const nums = split.map(s => Number(s)).filter(n => !isNaN(n));\n    return (val: number): boolean => nums.some(v => val === v);\n  }\n  return (val: number): boolean => val === filterInfo.filterValue;\n}\n\nconst numberNotEqualFunc: NumberFilterFunc = (filterInfo: FilterInfo<number>) => (val: number): boolean => {\n  return val !== filterInfo.filterValue;\n}\n\nconst numberGreaterThanFunc: NumberFilterFunc = (filterInfo: FilterInfo<number>) => (val: number): boolean => {\n  return val > filterInfo.filterValue;\n}\n\nconst numberLessThanFunc: NumberFilterFunc = (filterInfo: FilterInfo<number>) => (val: number): boolean => {\n  return val < filterInfo.filterValue;\n}\n\nconst numberBetweenFunc: FilterFunc<Range<number>, number> = (filterInfo: FilterInfo) => {\n  const startVal = Number(filterInfo.filterValue.Start);\n  const endVal = Number(filterInfo.filterValue.End);\n  return ((val) => (val > startVal) && (val < endVal));\n}\n\nexport const multipleNumberValuesEqualsFunc: FilterFunc<number[], number> = (filterInfo: FilterInfo) => {\n  return ((val) => filterInfo.filterValue.some((value: any) => val === value));\n}\n\nexport const NumberFilterFuncs: Dictionary<FilterFunc<any, any>> = {\n  [FilterType.NumberEquals]: numberEqalsFunc,\n  [FilterType.NumberNotEqual]: numberNotEqualFunc,\n  [FilterType.NumberGreaterThan]: numberGreaterThanFunc,\n  [FilterType.NumberLessThan]: numberLessThanFunc,\n  [FilterType.NumberBetween]: numberBetweenFunc,\n  [FilterType.IsNull]: isNull,\n  [FilterType.In]: multipleNumberValuesEqualsFunc,\n};\n","import { FilterFunc, FilterInfo, Range } from '../classes/filter-info';\nimport { FilterType } from '../enums/filterTypes';\nimport { Dictionary } from '../interfaces/dictionary';\nimport { FieldType } from '../interfaces/report-def';\nimport { isNull } from './null-filter-function';\n\n/**\n * Parse any date-ish value into a local-midnight Date.\n *\n * Handles three trap cases:\n *  1. Date-only ISO (\"2026-05-06\") — `new Date()` parses as UTC midnight, so a US-East\n *     user comparing against a row at local midnight would shift by a day. We parse\n *     YYYY-MM-DD explicitly to local midnight instead.\n *  2. String row values like \"2026/05/06\" or \".NET DateTime\" (\"2026-05-06T00:00:00\") —\n *     the previous code path called `.getTime()` directly on strings (returned\n *     undefined for FieldType.Date). We always pass through `new Date()`.\n *  3. Date objects with embedded time — we strip to local midnight so date-only filters\n *     match regardless of time-of-day in the row.\n */\nconst toLocalMidnight = (v: any): Date | null => {\n  if (v == null || v === '') return null;\n  // YYYY-MM-DD or YYYY/MM/DD prefix — parse the date components explicitly so the\n  // result is local midnight (not UTC midnight). Covers `<input type=\"date\">` output\n  // and slash-separated date strings used in some example/seed data.\n  if (typeof v === 'string') {\n    const m = v.match(/^(\\d{4})[-/](\\d{1,2})[-/](\\d{1,2})/);\n    if (m) {\n      return new Date(Number(m[1]), Number(m[2]) - 1, Number(m[3]));\n    }\n  }\n  const d = new Date(v);\n  if (isNaN(d.getTime())) return null;\n  d.setHours(0, 0, 0, 0);\n  return d;\n};\n\n/**\n * For DateTime fields with a DateTime filter (Is At, At Or After, etc.) we keep the\n * full timestamp. Date-style filters (Is On, etc.) on either Date or DateTime fields\n * normalize both sides to local midnight via toLocalMidnight().\n */\nconst normalize = (filterInfo: FilterInfo, val: any): Date | null => {\n  // DateTime filters need exact timestamp; just coerce to Date.\n  if (filterInfo.fieldType === FieldType.DateTime && !DateFilterFuncs[filterInfo.filterType]) {\n    if (val == null || val === '') return null;\n    const d = new Date(val);\n    return isNaN(d.getTime()) ? null : d;\n  }\n  return toLocalMidnight(val);\n};\n\nconst dateIsOnFunc:FilterFunc<Date> = (filterInfo:FilterInfo) => {\n  const isOnVal = normalize(filterInfo, filterInfo.filterValue)?.getTime();\n  return ((val)=> normalize(filterInfo, val)?.getTime() === isOnVal);\n}\n\nconst dateIsNotOnFunc:FilterFunc<Date> = (filterInfo:FilterInfo) => {\n  const isNotOnVal = normalize(filterInfo, filterInfo.filterValue)?.getTime();\n  return ((val)=> normalize(filterInfo, val)?.getTime() !== isNotOnVal);\n}\n\nconst dateIsOnOrAfterFunc:FilterFunc<Date> = (filterInfo:FilterInfo) => {\n  const afterVal = normalize(filterInfo, filterInfo.filterValue)?.getTime();\n  return ((val)=> {\n    const t = normalize(filterInfo, val)?.getTime();\n    return t !== undefined && afterVal !== undefined && t >= afterVal;\n  });\n}\n\nconst dateIsOnOrBeforeFunc:FilterFunc<Date> = (filterInfo:FilterInfo) => {\n  const beforeVal = normalize(filterInfo, filterInfo.filterValue)?.getTime();\n  return ((val)=> {\n    const t = normalize(filterInfo, val)?.getTime();\n    return t !== undefined && beforeVal !== undefined && t <= beforeVal;\n  });\n}\n\nconst dateBetweenFunc:FilterFunc<Range<Date>,Date> = (filterInfo:FilterInfo) => {\n  const startVal = normalize(filterInfo, filterInfo.filterValue.Start)?.getTime();\n  const endVal = normalize(filterInfo, filterInfo.filterValue.End)?.getTime();\n  return ((val)=> {\n    const t = normalize(filterInfo, val)?.getTime();\n    return t !== undefined && startVal !== undefined && endVal !== undefined && t >= startVal && t <= endVal;\n  });\n}\n\nexport const DateFilterFuncs: Dictionary<FilterFunc<any,any>> = {\n    [FilterType.DateIsOn]: dateIsOnFunc,\n    [FilterType.DateIsNotOn]: dateIsNotOnFunc,\n    [FilterType.DateOnOrAfter]: dateIsOnOrAfterFunc,\n    [FilterType.DateOnOrBefore]: dateIsOnOrBeforeFunc,\n    [FilterType.DateBetween]: dateBetweenFunc,\n    [FilterType.IsNull]: isNull,\n};\n\nexport const DateTimeFilterFuncs: Dictionary<FilterFunc<any,any>> = {\n  ...DateFilterFuncs,\n  [FilterType.DateTimeIsAt]: dateIsOnFunc,\n  [FilterType.DateTimeIsNotAt]: dateIsNotOnFunc,\n  [FilterType.DateTimeAtOrAfter]: dateIsOnOrAfterFunc,\n  [FilterType.DateTimeAtOrBefore]: dateIsOnOrBeforeFunc,\n  [FilterType.DateTimeBetween]: dateBetweenFunc,\n  [FilterType.IsNull]: isNull,\n};\n","import { FilterFunc, FilterInfo } from '../classes/filter-info';\nimport { FilterType } from '../enums/filterTypes';\nimport { Dictionary } from '../interfaces/dictionary';\nimport { isNull } from './null-filter-function';\n\nconst  booleanEqualsFunc : FilterFunc<boolean> = (filterInfo:FilterInfo) => (val): boolean  => {\n    return filterInfo.filterValue === val;\n}\n\nexport const BooleanFilterFuncs: Dictionary<FilterFunc<any,any>> = {\n     [FilterType.BooleanEquals]: booleanEqualsFunc,\n     [FilterType.IsNull]: isNull,\n};\n","import { StringFilterMap, DateFilterMap, NumberFilterMap, BooleanFilterMap, FilterType, FilterToFiltersMap, EnumFilterMap, DateTimeFilterMap } from '../enums/filterTypes';\nimport { EnumFilterFuncs, StringFilterFuncs } from '../functions/string-filter-function';\nimport { NumberFilterFuncs } from '../functions/number-filter-function';\nimport { DateFilterFuncs, DateTimeFilterFuncs } from '../functions/date-filter-function';\nimport { BooleanFilterFuncs } from '../functions/boolean-filter-function';\nimport { FieldType } from '../interfaces/report-def';\nimport { Dictionary } from '../interfaces/dictionary';\nimport { Predicate } from '@angular/core';\nimport { get } from 'lodash';\n\ntype FilterTypeMapType = { [key in FieldType]: FilterToFiltersMap};\nexport type UnmappedTypes = FieldType.Expression |\n  FieldType.Hidden |\n  FieldType.ImageUrl;\n\n\nexport type mappedFieldTypes =\n  FieldType.Unknown |\n  FieldType.Date |\n  FieldType.DateTime |\n  FieldType.Currency |\n  FieldType.Array |\n  FieldType.Number |\n  FieldType.String |\n  FieldType.Boolean |\n  FieldType.PhoneNumber |\n  FieldType.Link |\n  FieldType.Enum;\n\nexport const filterTypeMap: Omit<FilterTypeMapType, UnmappedTypes> = {\n  [FieldType.Unknown] : StringFilterMap,\n  [FieldType.Date] : DateFilterMap,\n  [FieldType.DateTime]: DateTimeFilterMap,\n  [FieldType.Currency] : NumberFilterMap,\n  [FieldType.Array] : StringFilterMap,\n  [FieldType.Number] : NumberFilterMap,\n  [FieldType.String] : StringFilterMap,\n  [FieldType.Boolean] : BooleanFilterMap,\n  [FieldType.PhoneNumber] : StringFilterMap,\n  [FieldType.Link] : StringFilterMap,\n  [FieldType.Enum] : EnumFilterMap,\n};\n\nconst filterFactoryMap: Dictionary<FilterFunc<any,any>> = {\n  [FilterType.And] : (filter: FilterInfo ): ((obj: any) => boolean) =>  {\n    const filters = (filter.filterValue as FilterInfo[]).map(createFilterFunc);\n    return (obj: any) : boolean => filters.every( f => f(obj));\n  },\n  [FilterType.In] : (filter: FilterInfo ): (obj: any) => boolean =>  {\n    const filters = (filter.filterValue as FilterInfo[]).map(createFilterFunc);\n    return (obj: any) : boolean => filters.some( f => f(obj));\n  },\n};\n\nconst filterTypeFuncMap : Dictionary<Dictionary<FilterFunc<any,any>>> = {\n  [FieldType.String] : StringFilterFuncs,\n  [FieldType.Array] : StringFilterFuncs,\n  [FieldType.Currency] : NumberFilterFuncs,\n  [FieldType.PhoneNumber] : StringFilterFuncs,\n  [FieldType.Date] : DateFilterFuncs,\n  [FieldType.DateTime] : DateTimeFilterFuncs,\n  [FieldType.Number] : NumberFilterFuncs,\n  [FieldType.Boolean] : BooleanFilterFuncs,\n  [FieldType.Unknown] : StringFilterFuncs,\n  [FieldType.Enum] : EnumFilterFuncs ,\n  [FieldType.Link] : StringFilterFuncs,\n};\n\nexport interface FilterState {\n  filterId: string;\n  filterType: FilterType;\n  filterValue?: any;\n  active?: boolean;\n\n}\n\nexport interface FilterInfo<T extends FieldType = any> extends FilterState {\n    key: string;\n    fieldType: T;\n    _isExternalyManaged?: boolean;\n}\n\nexport interface PartialFilter<T extends FieldType = any> {\n  filterId?: string;\n  key: string;\n  fieldType: T;\n  filterType?: FilterType;\n  filterValue?: any;\n}\n\n\n\nexport interface CustomFilter<T extends FieldType = any>  extends FilterState {\n  predicate: Predicate<T>;\n  filterType: FilterType.Custom;\n}\n\nexport function isCustomFilter(filter : FilterInfo | CustomFilter) :  filter is CustomFilter {\n  return filter && filter.filterType === FilterType.Custom;\n}\n\nexport function isFilterInfo(filter : FilterInfo | CustomFilter) :  filter is FilterInfo {\n  return  filter && typeof (filter as FilterInfo).key === 'string' && filter.filterType !== FilterType.Custom;\n}\n\nconst defaultPredicate: Predicate<any> = () => true;\n\nexport function createFilterFunc(filter: FilterInfo | CustomFilter): Predicate<any>  {\n  if(isCustomFilter(filter)) {\n    return filter.active ? filter.predicate : defaultPredicate;\n  }\n  if (filter.filterValue === undefined) {\n    return defaultPredicate;\n  }\n\n  const func = filterTypeFuncMap[filter.fieldType][filter.filterType](filter);\n  if(!func) {\n    if(filterFactoryMap[filter.filterType]){\n      return filterFactoryMap[filter.filterType!](filter);\n    }\n  }\n\n  const cannotBeTrueForNull = !FalseyValueCanBeIncludedFilterTypes.includes(filter.filterType!);\n  return (rowObj) => {\n    const value = get(rowObj, filter.key);\n    return ((value == undefined) && cannotBeTrueForNull)\n      ? false\n      : func( value);\n  };\n}\n\nexport type FilterFunc<T,V = T> = (filterInfo:FilterInfo) => (val:V) => boolean;\nexport type Range<T> = {Start:T,End:T};\n\nconst FalseyValueCanBeIncludedFilterTypes = [FilterType.IsNull,FilterType.NumberNotEqual,FilterType.DateIsNotOn,FilterType.StringDoesNotContain];\n","import { FieldType, MetaData, SortDef } from '../interfaces/report-def';\nimport { v4 as uuid } from 'uuid';\nimport { Observable } from 'rxjs';\nimport { defaultTableState, Group, InitializationState, keysToDelete, PersistedTableState, TableState } from './TableState';\nimport { Injectable, Inject, Predicate } from '@angular/core';\nimport { TableBuilderConfig, TableBuilderConfigToken } from './TableBuilderConfig';\nimport { CustomFilter, FilterInfo, isCustomFilter, isFilterInfo } from './filter-info';\nimport { Sort, SortDirection }  from '@angular/material/sort' ;\nimport { ComponentStore } from '@ngrx/component-store'  ;\nimport update from 'immutability-helper';\nimport { Dictionary } from '../interfaces/dictionary';\nimport { filter, last, map, tap } from 'rxjs/operators'\nimport { moveItemInArray } from '@angular/cdk/drag-drop';\nimport { notNull, onceWhen } from '../../rxjs/rxjs-operators';\nimport { GeneralTableSettings, NotPersisitedTableSettings, PesrsistedTableSettings } from './table-builder-general-settings';\nimport * as _ from 'lodash';\n\nexport function stateIs(initializationState: InitializationState) {\n  return (state: TableState) => state.initializationState === initializationState;\n}\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class TableStore extends ComponentStore<TableState> {\n\n  constructor(@Inject(TableBuilderConfigToken) config: TableBuilderConfig) {\n   super( { ...defaultTableState, ...config.defaultTableState});\n  }\n\n  getSavableState() : Observable<PersistedTableState> {\n    return  this.state$.pipe(\n      map( s => {\n        const savableState = {...s} as Partial<TableState>;\n        keysToDelete.forEach(key => delete savableState[key]);\n        return savableState as PersistedTableState;\n      })\n    );\n  }\n\n  on = <V>(srcObservable: Observable<V>, func: (obj: V) => void) => {\n    this.effect(() => srcObservable.pipe(\n      tap(func)\n    ))\n  }\n\n  onLast(callback: (state: TableState) => void ) {\n    this.on(this.state$.pipe(last()),callback);\n  }\n\n  readonly metaData$ = this.select( state => state.metaData);\n\n  readonly metaDataArray$ = this.select(\n    this.state$,\n    orderMetaData\n  );\n\n  getMetaData$ = (key: string) : Observable<MetaData> => {\n    return this.select( state => state.metaData[key]  ).pipe(\n      tap(meta => {if(!meta)console.warn(`Meta data with key ${key} not found`)}),\n      notNull())\n  }\n\n  getUserDefinedWidth$ = (key:string) => this.select(state => state.userDefined.widths[key]);\n  getUserDefinedWidths$ = this.select(state => state.userDefined.widths);\n\n  private displayedColumns =  (state:TableState) => orderMetaData(state).map(md => md.key)\n    .filter(key => !state.hiddenKeys.includes(key) && state.metaData[key].fieldType !== FieldType.Hidden);\n  readonly displayedColumns$ = this.select(this.displayedColumns);\n  readonly hideColumn = this.updater((state, key: string) => ({\n    ...state,\n    hiddenKeys: [...state.hiddenKeys.filter( k => k !== key), key],\n    sorted: state.sorted.filter( s => s.active !== key),\n  }));\n\n  readonly showColumnAt = this.updater((state, payload: { key: string; newOrder: number }) => {\n    const { key, newOrder } = payload;\n    const hiddenKeys = state.hiddenKeys.filter(k => k !== key);\n    const viewable = orderViewableMetaData({ ...state, hiddenKeys })\n      .map(m => m.key)\n      .filter(k => k !== key);\n    const insertAt = Math.max(0, Math.min(newOrder, viewable.length));\n    viewable.splice(insertAt, 0, key);\n    const newViewableOrder = viewable.reduce((acc: Dictionary<number>, k, i) => {\n      acc[k] = i; return acc;\n    }, {});\n    const userDefinedOrder = { ...state.userDefined.order, ...newViewableOrder };\n    return { ...state, hiddenKeys, userDefined: { ...state.userDefined, order: userDefinedOrder } };\n  });\n\n  readonly cycleColumnSort = this.updater((state, key: string) => {\n    const idx = state.sorted.findIndex(s => s.active === key);\n    if (idx === -1) {\n      return { ...state, sorted: [{ active: key, direction: 'asc' as SortDirection }, ...state.sorted] };\n    }\n    if (state.sorted[idx].direction === 'asc') {\n      const next = state.sorted.map((s, i) => i === idx ? { ...s, direction: 'desc' as SortDirection } : s);\n      return { ...state, sorted: next };\n    }\n    return { ...state, sorted: state.sorted.filter((_, i) => i !== idx) };\n  });\n\n  // Reorder a column within the visible columns (excludes user-hidden columns from the index space).\n  // Hidden columns stay in their existing slots; only visible columns get rearranged.\n  readonly reorderVisibleColumn = this.updater((state, payload: { previousVisibleIndex: number; currentVisibleIndex: number }) => {\n    const { previousVisibleIndex, currentVisibleIndex } = payload;\n    const allViewable = orderViewableMetaData(state).map(m => m.key);\n    const hiddenSet = new Set(state.hiddenKeys);\n    const visibleSeq = allViewable.filter(k => !hiddenSet.has(k));\n    const newVisibleSeq = [...visibleSeq];\n    moveItemInArray(newVisibleSeq, previousVisibleIndex, currentVisibleIndex);\n    let vi = 0;\n    const newAll = allViewable.map(k => hiddenSet.has(k) ? k : newVisibleSeq[vi++]);\n    const newOrder = newAll.reduce((acc: Dictionary<number>, k, i) => { acc[k] = i; return acc; }, {});\n    return { ...state, userDefined: { ...state.userDefined, order: newOrder } };\n  });\n\n  readonly resetState = this.updater((state) => {\n    const hiddenColumns = Object.values(state.metaData)\n      .filter(md => md.fieldType === FieldType.Hidden)\n      .map(md => md.key);\n    const sorted = this.createPreSort(state.metaData);\n    return update(state, {\n       hiddenKeys: { $set: [...hiddenColumns] },\n       filters: { $set: {} },\n       sorted: {$set: sorted},\n       userDefined : {$set: {widths:{},order:{},table:{}}},\n      });\n  });\n\n  readonly showColumn = this.updater((state, key: string) => ({\n    ...state,\n    hiddenKeys: state.hiddenKeys.filter( k => k !== key),\n  }));\n\n  readonly setHiddenColumns = this.updater((state, displayCols: {key: string, visible: boolean}[]) => {\n\n    var hiddenKeysSet= new Set<string>(\n      [\n        ...displayCols.filter(col => !col.visible).map(col => col.key),\n        ...Object.values(state.metaData).filter(md => md.fieldType === FieldType.Hidden).map(md => md.key)\n      ]\n    );\n\n    return update( state , { hiddenKeys: {$set: [...hiddenKeysSet]}});\n  });\n\n\n  setUserDefinedWidth = this.updater((state,colWidths:{key: string, widthInPixel:number}[]) => {\n    const userDefinedWidths = {...state.userDefined.widths};\n    colWidths.forEach(cw => {\n      userDefinedWidths[cw.key] = cw.widthInPixel;\n    });\n    return {...state, userDefined: {...state.userDefined,widths:userDefinedWidths}};\n  });\n\n  setUserDefinedOrder = this.updater((state,moved:{newOrder:number,oldOrder:number})=>{\n    const {newOrder ,oldOrder} = moved;\n    const mdsArr = orderViewableMetaData(state);\n    moveItemInArray(mdsArr,oldOrder,newOrder);\n\n    const userDefinedOrder = mdsArr.reduce((aggregate: any,current,index) => {\n      aggregate[current.key] = index;\n      return aggregate\n    },{});\n    return({...state, userDefined:{...state.userDefined,order:userDefinedOrder}})\n  })\n\n\n  readonly filters$ = this.select(state => state.filters );\n\n  readonly getFilter$ = (filterId: string) : Observable<FilterInfo | CustomFilter | undefined> => {\n    return this.select( state => state.filters[filterId] );\n  }\n  readonly addFilter = this.updater( (state, filter: FilterInfo | CustomFilter ) => {\n    return this.addFiltersToState(state, [filter]);\n  });\n\n  readonly addFilters = this.updater((state,filters:(FilterInfo | CustomFilter )[])=>{\n    return this.addFiltersToState(state, filters);\n  })\n\n\n  private addFiltersToState = (state:TableState,filters:(FilterInfo | CustomFilter)[]) : TableState => {\n\n    var customFilters = filters.filter(  isCustomFilter );\n\n    var filterInfos = filters.filter(isFilterInfo);\n\n    const filtersObj = filterInfos\n      .filter(fltr => Object.keys(state.metaData).some(key => key === fltr.key) || console.warn(`Meta data with key ${fltr.key} not found`))\n      .reduce((filtersObj: {[k: string]: any},filter)=>{\n        if (!filter.filterId) {\n          filter.filterId = uuid();\n        }\n        filtersObj[filter.filterId] = filter;\n        return filtersObj;\n      },{});\n\n      customFilters.forEach( fltr => {\n        if(!fltr.filterId) {\n          fltr.filterId = uuid();\n        }\n        filtersObj[fltr.filterId] = fltr;\n      })\n    return {\n      ...state,\n      filters : {...state.filters, ...filtersObj }\n    };\n  }\n\n  readonly removeFilter = this.updater( (state, filterId: string) =>\n    update(state, {filters: {$unset : [filterId ]}})\n  );\n\n  readonly removeFilters = this.updater( (state, filterIds: string[]) =>\n    update(state, {filters: {$unset : [...filterIds ]}})\n  );\n\n  readonly clearFilters = this.updater((state)=>\n    ({...state,filters:{}}))\n\n\n  readonly sorted$ = this.state$.pipe(\n    filter(stateIs(InitializationState.Ready)),\n    map( state => state.sorted)\n  );\n\n  createPreSort = (metaDatas: Dictionary<MetaData>): Sort[] => {\n    return Object.values(metaDatas).filter(( metaData ) : metaData is MetaData & {preSort: SortDef} => !!metaData.preSort)\n    .sort(({  preSort: ps1  }, { preSort: ps2 } ) => (ps1.precedence || Number.MAX_VALUE) - ( ps2.precedence || Number.MAX_VALUE))\n    .map(( {key, preSort} ) => ({ active: key, direction: preSort.direction }))\n  }\n  readonly setSort = this.updater<{key: string, direction?: SortDirection}>((state, {key, direction} ) => {\n    const sortArray = state.sorted.filter( s => s.active !== key );\n    if(direction) {\n      sortArray.unshift({active: key, direction});\n    }\n    return {\n      ...state,\n      sorted: sortArray,\n    };\n  });\n\n  readonly setAllSort = this.updater((state,sortArray:Sort[])=>{\n    return {\n      ...state,\n      sorted: sortArray,\n    };\n  });\n\n  updateStateFunc = (state: TableState, incomingTableState: Partial<TableState>) : TableState => {\n    const metaData = state.metaData;\n    const sorted = incomingTableState.sorted?.length ? incomingTableState.sorted\n      : state.initializationState === InitializationState.Created ? this.createPreSort(metaData) : state.sorted;\n    return {...state, ...incomingTableState, metaData , sorted};\n  }\n\n  readonly setPageSize = this.updater( (state, pageSize: number)=> ({...state,pageSize}));\n\n  readonly updateState = this.updater<Partial<TableState>>(this.updateStateFunc);\n\n  cleanPersistedState(state: TableState,pState: PersistedTableState) {\n    const metas = Object.values(state.metaData);\n    const filters = Object.values(pState.filters).filter(fltr => isCustomFilter(fltr) || metas.some(m => m.key === fltr.key)).reduce((obj: any, filter) => {\n      obj[filter.filterId!] = pState.filters[filter.filterId!];\n      return obj;\n    }, {});\n    const sorted = pState.sorted.filter(s => metas.some(m => m.key === s.active));\n    return ({...pState,filters,sorted})\n  }\n\n  readonly updateStateFromPersistedState = this.updater( ( state: TableState, persistedState: PersistedTableState) : TableState => {\n    const incomingTableState: Partial<TableState> = this.cleanPersistedState(state,persistedState);\n    const newState =  this.updateStateFunc(state,incomingTableState);\n    newState.initializationState = state.initializationState === InitializationState.MetaDataLoaded ? InitializationState.LoadedFromStore : state.initializationState;\n    return newState;\n  });\n\n  getUserDefinedTableSize$ = this.select(state => state.userDefined.table.width);\n  setTableWidth = this.updater((state,widthInpixels:number) => ({...state,userDefined: {...state.userDefined,table:{width:widthInpixels}}})) ;\n\n  mergeMeta = (orig: MetaData, merge: MetaData): MetaData => {\n    return {\n        key: orig.key,\n        displayName: merge.displayName ?? orig.displayName,\n        fieldType: merge.fieldType || orig.fieldType,\n        additional: {...orig.additional, ...merge.additional},\n        order: merge.order ?? orig.order,\n        preSort: merge.preSort ?? orig.preSort,\n        _internalNotUserDefined: merge._internalNotUserDefined || orig._internalNotUserDefined,\n        width: merge.width ?? orig.width,\n        noExport: merge.noExport || orig.noExport,\n        noFilter: merge.noFilter || orig.noFilter,\n        customCell: merge.customCell ?? orig.customCell,\n        transform: merge.transform ?? orig.transform,\n        click: merge.click ?? orig.click,\n    };\n  }\n\n  readonly setIntializationState = this.updater( (state, initializationState:  InitializationState) => {\n    return {...state, initializationState};\n  });\n\n  runOnceWhen(predicate: Predicate<TableState>, func: (state:TableState) => void) {\n    const obs = this.state$.pipe(onceWhen(predicate));\n    this.on(obs, (state) => {\n      func(state);\n    });\n  }\n\n  onReady( func: (state: TableState) => void ) {\n    this.runOnceWhen(stateIs(InitializationState.Ready),func);\n  }\n\n  readonly setMetaData = this.updater((state, md: MetaData[] | MetaData ) => {\n    const metaData = ( Array.isArray(md) ? [...md] : [md] )\n      .reduce((prev: Dictionary<MetaData>,curr) => {\n        if(prev[curr.key]) {\n          prev[curr.key] = this.mergeMeta(prev[curr.key],curr);\n        } else {\n          prev[curr.key] = curr;\n        }\n        return prev;\n      } ,{});\n    let sorted = state.sorted;\n    if(sorted.length === 0) {\n      sorted = this.createPreSort(metaData);\n    }\n    const order = this.initializeOrder(state, metaData);\n    const initializationState = state.initializationState == InitializationState.Created ?  InitializationState.MetaDataLoaded : state.initializationState;\n    return {...state, initializationState, metaData, sorted, userDefined:{...state.userDefined,order:order}};\n  });\n\n  private initializeOrder = (state:TableState,mds: Dictionary<MetaData>) : Dictionary<number> => {\n    const viewableMetaDataArr = Object.values(mds).filter(a => a.fieldType !== FieldType.Hidden);\n    let userDefinedOrder = state.userDefined.order;\n    if(viewableMetaDataArr.some(meta => userDefinedOrder[meta.key] == null)){\n      return {}\n    }\n    return userDefinedOrder;\n  }\n\n  toggleCollapseHeader = this.updater((state)=>{\n    const tableSettings = {...state.persistedTableSettings};\n    tableSettings.collapseHeader = !tableSettings.collapseHeader;\n    return ({...state,persistedTableSettings : new PesrsistedTableSettings(tableSettings)});\n  })\n\n  toggleCollapseFooter = this.updater((state)=>{\n    const tableSettings = {...state.persistedTableSettings};\n    tableSettings.collapseFooter = !tableSettings.collapseFooter;\n    return ({...state,persistedTableSettings : new PesrsistedTableSettings(tableSettings)});\n  })\n\n  addGroupByKey = this.updater((state, groupByKey: string) => ({\n    ...state,\n    groupByKeys: [...state.groupByKeys, groupByKey]\n  }));\n\n  removeGroupByKey = this.updater((state, groupByKey: string) => ({\n    ...state,\n    groupByKeys: state.groupByKeys.filter(key => groupByKey != key)\n  }));\n\n  updateGroups = this.updater((state, groups: Group[]) => {\n    const groupNames = groups.map(g => g.groupName);\n    return {\n      ...state,\n      groups: [...state.groups.filter(g => !_.includes(groupNames, g.groupName)), ...groups]\n    };\n  });\n\n  groupByKeys$ = this.select(state => state.groupByKeys);\n  groups$ = this.select(state => state.groups);\n\n  setTableSettings = this.updater((state,settings:GeneralTableSettings)=>{\n    const s:TableState = {\n      ...state,\n      persistedTableSettings : new PesrsistedTableSettings(settings),\n      notPersisitedTableSettings : new NotPersisitedTableSettings(settings)\n      };\n    return s;\n  });\n\n  tableSettings$ = this.select(state => {\n    const ts : PesrsistedTableSettings & NotPersisitedTableSettings =\n      {...state.persistedTableSettings,...state.notPersisitedTableSettings};\n    return ts;\n  })\n\n  setLinkMaps = this.updater((state,maps: any)=>{\n    return {...state,linkMaps:maps};\n  });\n  getLinkMap = (md:MetaData) =>{\n    return  this.select(state => {\n      return state.linkMaps[md.key]})};\n}\nexport const orderViewableMetaData = (state:TableState) => orderMetaData(state).filter(a => a.fieldType !== FieldType.Hidden);\n\nexport const orderMetaData = (state:TableState) => {\n  const userOrderArr = Object.entries(state.userDefined.order);\n  return userOrderArr.length ?\n   Object.values(state.metaData).sort((a,b)=> state.userDefined.order[a.key] - state.userDefined.order[b.key])\n   :\n   Object.values(state.metaData).sort((a,b)=> a.order! - b.order!)\n}\n","import { ChangeDetectionStrategy, Component, Input, Inject } from '@angular/core';\r\nimport { ArrayStyle, ArrayAdditional, MetaData } from '../interfaces/report-def';\r\nimport { TableBuilderConfigToken, TableBuilderConfig } from '../classes/TableBuilderConfig';\r\n\r\n\r\n@Component({\n    selector: 'tb-array-column',\n    template: `\n  <ng-container  *ngIf=\"array.length === 0; else hasVals\">-</ng-container>\n  <ng-template #hasVals>\n    <ng-container [ngSwitch]=\"additional.arrayStyle\">\n      <ng-container *ngSwitchCase=\"ArrayStyle.CommaDelimited\">\n        <span *ngFor=\"let val of array; last as isLast\">{{val}}<ng-container *ngIf=\"!isLast\">, </ng-container> </span>\n      </ng-container>\n      <ng-container *ngSwitchCase=\"ArrayStyle.NewLine\">\n        <span *ngFor=\"let val of array; last as isLast\">{{val}}<ng-container *ngIf=\"!isLast\"><br /></ng-container> </span>\n      </ng-container>\n    </ng-container>\n  </ng-template>\n  `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\r\nexport class ArrayColumnComponent {\r\n  ArrayStyle = ArrayStyle;\r\n  additional!: ArrayAdditional;\r\n  @Input() array!: any[];\r\n  @Input() metaData!: MetaData;\r\n\r\n  constructor( @Inject(TableBuilderConfigToken) private config: TableBuilderConfig\r\n    ) {\r\n\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.additional = this.metaData?.additional ??  this.config.arrayInfo ?? { limit: 3, arrayStyle: ArrayStyle.NewLine } as ArrayAdditional;\r\n    this.array = (this.array ?? []).slice(0, this.additional.limit );\r\n\r\n  }\r\n}\r\n","import { Component, Input } from \"@angular/core\";\nimport { TableStore } from \"../classes/table-store\";\nimport { MetaData } from \"../interfaces/report-def\";\n\n@Component({\n    selector: \"tb-link-column\",\n    template: `\n  <ng-container *ngrxLet=\"(link | func : (metaData)) as linkInfo\">\n    <a *ngIf=\"$any(linkInfo).useRouterLink; else hrefLink\" target=\"{{$any(linkInfo).target}}\"\n      [routerLink]=\" [($any(linkInfo).link | func : element)]\"\n      [queryParams]=\"$any(linkInfo).routerLinkOptions.queryParams | func : element\"\n      [fragment]=\"$any(linkInfo).routerLinkOptions.fragment\"\n      [preserveFragment]=\"$any(linkInfo).routerLinkOptions.preserveFragment\"\n      [queryParamsHandling]=\"$any(linkInfo).routerLinkOptions.queryParamsHandling\"\n    >\n      {{transform | func : element}}\n    </a>\n    <ng-template #hrefLink>\n      <a target=\"{{$any(linkInfo).target}}\"\n        href=\"{{($any(linkInfo).link | func : element)}}\">\n        {{transform | func : element}}\n      </a>\n    </ng-template>\n  </ng-container>\n  `,\n    standalone: false\n})export class LinkColumnComponent {\n  @Input() metaData!: MetaData;\n  @Input() element!: any;\n  @Input() transform = (a:any)=>a;\n  constructor(protected store: TableStore) {  }\n  link =  (metaData : MetaData) => this.store.getLinkMap(metaData);\n\n}","import { Component, TemplateRef, ViewChild } from \"@angular/core\";\n\n@Component({\n    templateUrl: './initialization-component.html',\n    standalone: false\n})\nexport class InitializationComponent {\n  @ViewChild('link', {static: true}) linkTemplate! : TemplateRef<any>;\n  @ViewChild('imageUrl', {static: true}) imageUrlTemplate! : TemplateRef<any>;\n  @ViewChild('currency', {static: true}) currencyTemplate! : TemplateRef<any>;\n  @ViewChild('array', {static: true}) arrayTemplate! : TemplateRef<any>;\n  @ViewChild('default', {static: true}) defaultTemplate! : TemplateRef<any>;\n  @ViewChild('defaultWithIcon', {static: true}) defaultWithIcon! : TemplateRef<any>;\n}\n","<ng-template #link  let-element='element' let-metaData='metaData' let-transform='transform'>\n  <tb-link-column [element]=\"element\" [metaData]=\"metaData\" [transform]=\"transform\"></tb-link-column>\n</ng-template>\n\n<ng-template #imageUrl  let-element='element' let-metaData='metaData'>\n  <span>\n    <img src=\"{{element[metaData.key]}}\" height=\"75px\" width=\"75px\" />\n  </span>\n</ng-template>\n\n<ng-template #array let-element='element' let-metaData='metaData'>\n  <tb-array-column [array]='element[metaData.key]' [metaData]='metaData'></tb-array-column>\n</ng-template>\n\n<ng-template #default let-element='element' let-metaData='metaData' let-transform='transform' >\n  <span>{{ transform | func : element }}</span>\n</ng-template>\n\n<ng-template #defaultWithIcon let-element='element' let-metaData='metaData' let-transform='transform' >\n  <mat-icon>{{ transform | func : element }}</mat-icon>\n</ng-template>\n","import { ComponentFactoryResolver, Injector } from \"@angular/core\";\nimport { Injectable, TemplateRef } from \"@angular/core\";\nimport { TableStore } from \"../classes/table-store\";\nimport { InitializationComponent } from \"../components/initialization-component/initialization-component\";\nimport { FieldType, MetaData } from \"../interfaces/report-def\";\n\n@Injectable({providedIn: 'root'})\nexport class TableTemplateService {\n  instance!: InitializationComponent;\n  templates;\n\n  initTemplates() {\n    this.templates = { };\n    this.templates[FieldType.Array] = this.instance.arrayTemplate;\n    this.templates[FieldType.Boolean] = this.instance.defaultWithIcon;\n    this.templates[FieldType.Currency] = this.instance.defaultTemplate;\n    this.templates[FieldType.Date] = this.instance.defaultTemplate;\n    this.templates[FieldType.DateTime] = this.instance.defaultTemplate;\n    this.templates[FieldType.Expression] = this.instance.defaultTemplate;\n    this.templates[FieldType.ImageUrl] = this.instance.imageUrlTemplate;\n    this.templates[FieldType.Link] = this.instance.linkTemplate;\n    this.templates[FieldType.Number] = this.instance.defaultTemplate;\n    this.templates[FieldType.PhoneNumber] = this.instance.defaultTemplate;\n    this.templates[FieldType.String] = this.instance.defaultTemplate;\n    this.templates[FieldType.Unknown] = this.instance.defaultTemplate;\n    this.templates[FieldType.Enum] = this.instance.defaultTemplate;\n  }\n  getTemplate(metaData: MetaData) : TemplateRef<any> {\n\n    let tmp =  this.templates[metaData.fieldType];\n    if(metaData.useIcon) {\n      if(tmp === this.instance.defaultTemplate) {\n        tmp = this.instance.defaultWithIcon;\n      }\n    }\n    return tmp;\n  }\n\n  constructor(resolver: ComponentFactoryResolver, i: Injector,  ) {\n        const factory = resolver.resolveComponentFactory(InitializationComponent);\n        const c = factory.create(i);\n        this.instance = c.instance;\n        this.initTemplates();\n  }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, ViewContainerRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\nimport { Observable } from 'rxjs';\nimport { map, tap } from 'rxjs/operators';\nimport { TableStore } from '../../../classes/table-store';\nimport { Dictionary } from '../../../interfaces/dictionary';\nimport { FieldType, MetaData } from '../../../interfaces/report-def';\n\n\n@Component({\n    selector: 'tb-in-list-filter , [tb-in-list-filter]',\n    template: `\n  <div *ngFor=\"let item of keyValues$ | async| keyvalue\" >\n    <mat-checkbox [checked]='selectedKeys.includes(item.key)' stop-propagation (change)='selectFilterChanged($event, item.key)' >\n      {{metaData.fieldType === FieldType.Enum ? (item.value | spaceCase) : item.value}}\n    </mat-checkbox>\n  </div>\n  `,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [{\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: InListFilterComponent,\n            multi: true\n        }],\n    standalone: false\n})\nexport class InListFilterComponent implements ControlValueAccessor {\n\n  constructor(private ref: ChangeDetectorRef, private tableState: TableStore ) {}\n  value: string[] = [];\n  FieldType = FieldType;\n  writeValue(obj: string[]): void {\n    this.value = obj;\n\n    if(this.value) {\n      this.selectedKeys = this.value.map( f => f );\n    }\n    this.ref.markForCheck();\n  }\n\n  onChange = (_: any) => { };\n\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n  onTouched = () => { };\n  registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n  @Input() key!: string;\n\n  keyValues$! : Observable<Dictionary<string>>;\n  selectedKeys : string[] = [];\n  metaData!: MetaData;\n\n  ngOnInit() {\n    this.keyValues$ = this.tableState.getMetaData$(this.key).pipe(\n      tap(metaData => this.metaData = metaData),\n      map( metaData => {\n        if(metaData.additional?.filterOptions?.filterableValues ) {\n          return  metaData.additional.filterOptions.filterableValues.reduce( (prev: any, cur)=> { prev[cur] = cur; return prev }, {});\n        } else {\n          if(metaData.fieldType === FieldType.Enum ) {\n            return metaData.additional!.enumMap;\n          }\n        }\n        return {};\n      })\n    );\n  }\n\n  selectFilterChanged($event, val) {\n    if($event.checked) {\n      this.selectedKeys.push(val);\n    } else {\n      this.selectedKeys = this.selectedKeys.filter( item => item !== val);\n    }\n\n   this.value = this.selectedKeys;\n    this.onChange(this.value);\n  }\n\n}\n","import { ChangeDetectionStrategy, Component, Input, ViewChild } from '@angular/core';\r\nimport { FieldType, MetaData } from '../../interfaces/report-def';\r\nimport { FilterType } from '../../enums/filterTypes';\r\nimport { FilterInfo } from '../../classes/filter-info';\r\nimport { TableStore } from '../../classes/table-store';\r\nimport { MatMenuTrigger } from '@angular/material/menu';\r\n\r\n@Component({\n    selector: 'tb-header-menu',\n    templateUrl: './header-menu.component.html',\n    styleUrls: ['./header-menu.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\r\nexport class HeaderMenuComponent {\r\n  FieldType = FieldType;\r\n  FilterType = FilterType;\r\n  myFilterType!: FilterType;\r\n  myFilterValue: any;\r\n\r\n  @Input() filter!: Partial<FilterInfo>;\r\n\r\n  @Input() metaData!: MetaData;\r\n  @ViewChild(MatMenuTrigger) trigger!: MatMenuTrigger;\r\n  constructor( public tableState: TableStore) {}\r\n\r\n  hideField(key: string) {\r\n    this.tableState.hideColumn(key);\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.resetFilterType();\r\n  }\r\n\r\n  resetFilterType() {\r\n    if(this.metaData.additional?.filterOptions?.filterableValues) {\r\n      this.myFilterType = FilterType.In;\r\n      return;\r\n    }\r\n    switch (this.metaData.fieldType) {\r\n      case FieldType.String:\r\n      case FieldType.Link:\r\n      case FieldType.PhoneNumber:\r\n      case FieldType.Array:\r\n      case FieldType.Unknown:\r\n        this.myFilterType = FilterType.StringContains;\r\n        break;\r\n      case FieldType.Currency:\r\n      case FieldType.Number:\r\n        this.myFilterType = FilterType.NumberEquals;\r\n        break;\r\n      case FieldType.Boolean:\r\n          this.myFilterType = FilterType.BooleanEquals;\r\n          break;\r\n      case FieldType.Date:\r\n      case FieldType.DateTime:\r\n          this.myFilterType = FilterType.DateIsOn;\r\n          break;\r\n      case FieldType.Enum:\r\n        this.myFilterType = FilterType.In;\r\n        break;\r\n    }\r\n  }\r\n\r\n  setStringFilterType() {\r\n    this.myFilterType = this.myFilterType === FilterType.StringContains ? FilterType.StringDoesNotContain : FilterType.StringContains;\r\n  }\r\n\r\n  setFilterType(filterType: FilterType) {\r\n    if (filterType === this.myFilterType) {\r\n      this.resetFilterType();\r\n    } else {\r\n      this.myFilterType = filterType;\r\n    }\r\n  }\r\n\r\n  onEnter(filter: FilterInfo) {\r\n    if (filter.filterValue != undefined && filter.filterType) {\r\n      this.tableState.addFilter(filter);\r\n      this.trigger.closeMenu();\r\n    }\r\n  }\r\n}\r\n","<button mat-icon-button class=\"open-menu-icon-button\" disableRipple [matMenuTriggerFor]=\"menu\" [matMenuTriggerRestoreFocus]=\"false\">\r\n  <mat-icon class=\"menu-icon\">more_vert</mat-icon>\r\n</button>\r\n<mat-menu #menu=\"matMenu\" >\r\n  <button mat-menu-item (click)=\"tableState.addGroupByKey(metaData.key)\">\r\n    <mat-icon class=\"tb-icon-primary\">group</mat-icon>\r\n    <span>Group By</span>\r\n  </button>\r\n  <button mat-menu-item (click)=hideField(metaData.key)>\r\n    <mat-icon class=\"tb-icon-primary\">visibility_off</mat-icon>\r\n    <span>Hide Column</span>\r\n  </button>\r\n  <ng-form #myForm=\"ngForm\" [ngSwitch]=\"true\" (keydown.enter)=\"onEnter(myForm.value)\" class=\"tb-header-filter\">\r\n      <input type=\"hidden\" name=\"filterId\"  [ngModel]=\"'header-column-' + metaData.key\" />\r\n      <input type=\"hidden\" name=\"filterType\"  [ngModel]=\"myFilterType\" />\r\n      <input type=\"hidden\" name=\"key\"  [ngModel]=\"metaData.key\" />\r\n      <input type=\"hidden\" name=\"fieldType\"  [ngModel]=\"metaData.fieldType\" />\r\n\r\n      <ng-container *ngIf=\"(myFilterType === FilterType.Or || myFilterType === FilterType.In); else defaultFilter\">\r\n          <tb-in-list-filter name='filterValue' [key]='metaData.key' [(ngModel)]='myFilterValue' >\r\n          </tb-in-list-filter>\r\n      </ng-container>\r\n\r\n\r\n      <ng-template #defaultFilter>\r\n        <ng-container *ngSwitchCase=\"metaData.fieldType === FieldType.Link || metaData.fieldType === FieldType.String || metaData.fieldType === FieldType.Array || metaData.fieldType === FieldType.Unknown || metaData.fieldType === FieldType.PhoneNumber\">\r\n          <mat-form-field stop-propagation class=\"font auto-width\">\r\n            <mat-icon matPrefix class=\"search-icon\">search</mat-icon>\r\n            <mat-label>{{myFilterType === FilterType.StringDoesNotContain ? 'Does Not Contain...' : 'Contains...'}}</mat-label>\r\n            <input matInput name=\"filterValue\" [ngModel]=\"filter.filterValue\" />\r\n            <span matSuffix [matTooltip]=\"myFilterType === FilterType.StringDoesNotContain ? 'Contains' : 'Does Not Contain'\">\r\n              <button mat-icon-button (click)=\"setStringFilterType()\" class=\"header-filter-icon-button\">\r\n                <mat-icon class=\"tb-icon-primary\" [class.chosen-icon]=\"myFilterType === FilterType.StringDoesNotContain\">\r\n                  block\r\n                </mat-icon>\r\n              </button>\r\n            </span>\r\n          </mat-form-field>\r\n        </ng-container>\r\n\r\n        <ng-container *ngSwitchCase=\"metaData.fieldType === FieldType.Number || metaData.fieldType === FieldType.Currency\">\r\n          <mat-form-field class=\"auto-width\"  stop-propagation>\r\n           \r\n            <mat-label>{{myFilterType === FilterType.NumberEquals ? 'Equals...' : myFilterType === FilterType.NumberLessThan ? 'Less Than...' : 'More Than...'}}</mat-label>\r\n            <input matInput type='number'  name=\"filterValue\" [ngModel]=\"filter.filterValue\" />\r\n            <span matPrefix class=\"tb-header-prefix\">\r\n              <button mat-icon-button disableRipple class=\"header-filter-icon-button\" (click)=\"setFilterType(FilterType.NumberLessThan)\"\r\n              [ngClass]=\"{'chosen-icon': myFilterType === FilterType.NumberLessThan }\">\r\n                <mat-icon  class=\"suffix-icons\"\r\n                  >\r\n                  arrow_back_ios</mat-icon>\r\n              </button>\r\n              <button mat-icon-button disableRipple class=\"header-filter-icon-button\" (click)=\"setFilterType(FilterType.NumberGreaterThan)\"\r\n              [ngClass]=\"{'chosen-icon': myFilterType === FilterType.NumberGreaterThan }\" >\r\n                <mat-icon  class=\"suffix-icons\"\r\n                >\r\n                  arrow_forward_ios</mat-icon>\r\n              </button>\r\n              <button mat-icon-button disableRipple class=\"header-filter-icon-button\" (click)=\"setFilterType(FilterType.NumberEquals)\"\r\n              [ngClass]=\"{'chosen-icon': myFilterType === FilterType.NumberEquals }\">\r\n                <span class=\"suffix-icons\"\r\n                >\r\n                  =</span>\r\n              </button>\r\n            </span>\r\n          </mat-form-field>\r\n        </ng-container>\r\n\r\n        <ng-container *ngSwitchCase=\"metaData.fieldType === FieldType.Boolean\">\r\n          <div>\r\n            <label>\r\n              <mat-icon class=\"search-icon\">filter_list</mat-icon>\r\n            </label>\r\n            <mat-radio-group stop-propagation #ctrl=\"matRadioGroup\" #boolField='ngModel' class=\"font\" name=\"filterValue\" [ngModel]=\"myFilterValue\" >\r\n              <mat-radio-button class=\"filter-radio-button\" (click)=\"myFilterValue = true;\" [value]=\"true\">True</mat-radio-button><br/>\r\n              <mat-radio-button class=\"filter-radio-button\" (click)=\"myFilterValue = false\" [value]=\"false\">False</mat-radio-button><br/>\r\n            </mat-radio-group>\r\n          </div>\r\n        </ng-container>\r\n\r\n        <ng-container *ngSwitchCase=\"metaData.fieldType === FieldType.Date || metaData.fieldType === FieldType.DateTime\">\r\n          <mat-form-field class=\"font auto-width\" stop-propagation >\r\n            <span matPrefix class=\"tb-header-prefix\">\r\n              <button mat-icon-button disableRipple class=\"header-filter-icon-button\" (click)=\"setFilterType(FilterType.DateOnOrAfter)\"\r\n                [ngClass]=\"{'chosen-icon': myFilterType === FilterType.DateOnOrAfter }\">\r\n                <mat-icon  class=\"suffix-icons underline\">arrow_forward_ios</mat-icon>\r\n              </button>\r\n              <button mat-icon-button disableRipple class=\"header-filter-icon-button\" (click)=\"setFilterType(FilterType.DateOnOrBefore)\"\r\n                [ngClass]=\"{'chosen-icon': myFilterType === FilterType.DateOnOrBefore  }\">\r\n                <mat-icon  class=\"suffix-icons underline\">arrow_back_ios</mat-icon>\r\n              </button>\r\n              <button mat-icon-button disableRipple class=\"header-filter-icon-button\" (click)=\"setFilterType(FilterType.DateIsOn)\"\r\n                [ngClass]=\"{'chosen-icon': myFilterType === FilterType.DateIsOn }\">\r\n                <span  class=\"suffix-icons underline\"> =</span>\r\n              </button>\r\n            </span>\r\n            <mat-label>{{myFilterType === FilterType.DateIsOn ? 'On...' :\r\n              myFilterType === FilterType.DateOnOrBefore ? 'On or Before...' : 'On or After...'}}</mat-label>\r\n            <input matInput name=\"filterValue\" [ngModel]=\"filter.filterValue\" [matDatepicker]=\"calendar\"\r\n              (click)=\"calendar.open()\"/>\r\n            <mat-datepicker-toggle class=\"date-toggle header-filter-icon-button\" matSuffix [for]=\"calendar\" preventEnter></mat-datepicker-toggle>\r\n            <mat-datepicker #calendar></mat-datepicker>\r\n          </mat-form-field>\r\n        </ng-container>\r\n      </ng-template>\r\n\r\n    <button mat-button (click)=\"onEnter(myForm.value)\" [disabled]=\"myForm.value.filterValue == undefined\" disableRipple>\r\n      Apply\r\n    </button>\r\n  </ng-form>\r\n</mat-menu>\r\n","import { merge, Observable, Observer, Subject } from 'rxjs';\ntype PipeLike<T> = Observable<T>['pipe'];\nexport class Subjectifier<T> extends Observable<T>{\n  private _subj = new Subject<T>();\n  private merged = merge(this._source, this._subj);\n  constructor(private _source: Observable<T>){\n    super((obs: Observer<T>) => {\n      const s = merge( _source, this._subj ).subscribe(obs);\n      return s;\n    });\n  }\n  next: Subject<T>['next'] = this._subj.next.bind(this._subj);\n  newSubj = (...operations: Parameters<PipeLike<T>>) =>\n    new Subjectifier(this.merged.pipe(...operations));\n}","import { Directive, OnInit, Renderer2, Input, ElementRef } from \"@angular/core\";\nimport { fromEvent } from \"rxjs\";\nimport { filter, map, switchMap, takeUntil } from \"rxjs/operators\";\nimport { defaultShareReplay } from \"../../rxjs\";\nimport { TableStore } from \"../classes/table-store\";\n\n@Directive({\n    selector: \"[resizeColumn]\",\n    standalone: false\n})\nexport class ResizeColumnDirective implements OnInit{\n  @Input(\"resizeColumn\") resizable!: boolean;\n\n  @Input() key!: string;\n  constructor(private renderer: Renderer2, private el: ElementRef, public store: TableStore,) { }\n\n  ngOnInit(){\n    if (this.resizable){\n      const {table, columnHead} = this.getTableAndColumnHeadHtmlElements();\n      const resizer = this.createResizerSpanInColumnHead(columnHead);\n\n      const aggregateMouseEventsMapped$ = this.mouseDownThroghMouseUpEventMapper(resizer,columnHead,table)\n\n      const resizeColsData$ = aggregateMouseEventsMapped$.pipe(\n        filter(({mouseMove})=>!!mouseMove.buttons),\n        map( ({mouseDownData,mouseMove}) => {\n            const {newTableWidth,newColumnWidth}  = this.calculateNewWidths(mouseDownData,mouseMove)\n            return ({\n              key:this.key,\n              widthInPixel:newColumnWidth,\n              tableSize:newTableWidth,\n            })\n          }),\n        defaultShareReplay()\n      );\n\n      this.store.setUserDefinedWidth(resizeColsData$.pipe(\n        map(resizeData => ([{key: this.key, widthInPixel: resizeData.widthInPixel }]))\n      ));\n\n      this.store.setTableWidth(resizeColsData$.pipe(\n        map(resizeData => resizeData.tableSize )));\n    }\n\n  }\n\n  createResizerSpanInColumnHead(columnHead:HTMLElement){\n    const resizer = this.renderer.createElement(\"span\");\n    this.renderer.addClass(resizer, \"resize-holder\");\n    resizer.style['cursor']='col-resize';\n    resizer.style['user-select']='none';\n    resizer.style['width']='10px';\n    resizer.style['height']='100%';\n    resizer.style['position']='absolute';\n    resizer.style['right']='0';\n    resizer.style['top']='0';\n    resizer.style['z-index']='1';\n    this.renderer.appendChild(columnHead, resizer);\n    return resizer;\n  }\n\n  getTableAndColumnHeadHtmlElements():{table:HTMLElement,columnHead:HTMLElement}{\n    const columnHead: HTMLElement = this.el.nativeElement;\n    const row = this.renderer.parentNode(columnHead);\n    const table = this.renderer.parentNode(row);\n    return ({table,columnHead})\n  }\n\n  mouseDownThroghMouseUpEventMapper(resizer:HTMLElement, columnHead:HTMLElement, table:HTMLElement){\n    return this.resizerMouseDownEventMapper(resizer,columnHead,table)\n    .pipe(\n      switchMap( mouseDownData => fromEvent<MouseEvent>(table, \"mousemove\").pipe(\n        map( mouseMove => ({mouseDownData, mouseMove})),\n        takeUntil(fromEvent<MouseEvent>(document, \"mouseup\"))\n      ) ),\n    )\n  }\n  resizerMouseDownEventMapper(resizer:HTMLElement, columnHead:HTMLElement, table:HTMLElement){\n    return fromEvent<MouseEvent>(resizer, \"mousedown\").pipe(\n      map(event => ({\n        startPageX: event.pageX,\n        startColumnWidth: this.getElementWidth(columnHead),\n        startTableWidth: this.getElementWidth(table),\n      }))\n    );\n  }\n\n  calculateNewWidths(mouseDownData:MouseDowmData,mouseMove:MouseEvent):{newTableWidth:number,newColumnWidth:number}{\n    const change = (mouseMove.pageX - mouseDownData.startPageX );\n    let newColumnWidth = mouseDownData.startColumnWidth + change;\n    if(newColumnWidth < 1){\n      newColumnWidth = 1;\n    }\n    const columnChange = newColumnWidth - mouseDownData.startColumnWidth;\n    const newTableWidth = (mouseDownData.startTableWidth + columnChange);\n    return ({newTableWidth,newColumnWidth})\n  }\n  getElementWidth = (elem:HTMLElement) => (+(globalThis.getComputedStyle(elem).getPropertyValue('width').replace('px','')))\n\n}\ninterface MouseDowmData{\n  startPageX:number,\n  startColumnWidth:number,\n  startTableWidth:number,\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { MetaData } from '../interfaces/report-def';\nimport {sumBy} from 'lodash';\n\n@Pipe({\n    name: 'columnTotal',\n    standalone: false\n})\nexport class ColumnTotalPipe implements PipeTransform {\n  transform(data: any[], metaData: MetaData) {\n    const dataToCalculate = data.filter(d => !d.isGroupHeader && !d.isGroupFooter)\n    switch (metaData.additional!.footer!.type) {\n      case 'sum':\n      return sumBy(dataToCalculate, metaData.key);\n    }\n    return null;\n  }\n}\n","import { Component, Input, ChangeDetectionStrategy, TemplateRef, ViewChild, OnInit, HostBinding, ContentChild, ContentChildren, Predicate, Injector } from '@angular/core';\nimport { FieldType, MetaData } from '../../interfaces/report-def';\nimport { MatColumnDef, MatTable } from '@angular/material/table';\nimport { Observable } from 'rxjs';\nimport { CustomCellDirective } from '../../directives';\nimport { FilterInfo } from '../../classes/filter-info';\nimport { TransformCreator } from '../../services/transform-creator';\nimport { TableStore } from '../../classes/table-store';\nimport { map } from 'rxjs/operators';\nimport { TableTemplateService } from '../../services/table-template-service';\nimport { previousAndCurrent } from '../../../rxjs/rxjs-operators';\nimport { CdkDropList, CDK_DROP_LIST } from '@angular/cdk/drag-drop';\nimport { Dictionary } from '@ngrx/entity';\n\n\ninterface widthStyle {\n    flex?: string;\n    maxWidth?: string;\n}\n\ninterface allStyles {\n  body: widthStyle;\n  header: widthStyle;\n  footer: widthStyle;\n}\n\n@Component({\n    selector: 'tb-column-builder',\n    templateUrl: './column-builder.component.html',\n    styleUrls: ['./column-builder.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    viewProviders: [\n        { provide: CDK_DROP_LIST, useExisting: CdkDropList },\n    ],\n    standalone: false\n})\nexport class ColumnBuilderComponent implements OnInit {\n  FieldType = FieldType;\n  filter!: Partial<FilterInfo>;\n  @Input() metaData!: MetaData;\n\n  @Input() customCell!: CustomCellDirective;\n  @Input() data$!: Observable<any[]>;\n\n  @ViewChild(MatColumnDef) columnDef!: MatColumnDef;\n  outerTemplate!: TemplateRef<any>;\n  innerTemplate!: TemplateRef<any>;\n  transform!: (o: any, ...args: any[])=> any ;\n\n  @ViewChild('body') bodyTemplate!: TemplateRef<any>;\n\n\n  constructor(\n    private transformCreator: TransformCreator,\n    private table: MatTable<any>,\n    public state: TableStore,\n    private templateService: TableTemplateService,\n    protected injector: Injector,\n    ) { }\n\n  getInnerTemplate() :TemplateRef<any> {\n    if(this.metaData.template) return this.metaData.template;\n    if (this.customCell?.TemplateRef)  return this.customCell.TemplateRef;\n    return this.templateService.getTemplate(this.metaData);\n  }\n  showfilters$!: Observable<boolean>;\n  getOuterTemplate() {\n    return this.customCell?.columnDef?.cell?.template ?? this.bodyTemplate;\n  }\n  classes?: Dictionary<Predicate<any>>;\n\n  ngOnInit() {\n    if(this.metaData.fieldType === FieldType.Currency) {\n      this.classes = {\n        ['negative-currency']: (element) => element[this.metaData.key] < 0,\n        ...this.metaData.classes\n      }\n    }\n    else {\n      this.classes = this.metaData.classes;\n    }\n    this.filter = {key: this.metaData.key, fieldType: this.metaData.fieldType};\n    const width$ = this.state.getUserDefinedWidth$(this.metaData.key).pipe(\n      previousAndCurrent(0),\n      map(this.mapWidth),\n    );\n    const fullMetaStyles = this.metaData.additional?.styles ?? {};\n    this.styles$ = width$.pipe(map(width => {\n      const styles: allStyles = {\n        header : {...fullMetaStyles,...this.metaData.additional?.columnPartStyles?.header, ...width},\n        footer: {...fullMetaStyles,...this.metaData.additional?.columnPartStyles?.footer, ...width},\n        body: {...fullMetaStyles,...this.metaData.additional?.columnPartStyles?.body, ...width},\n      };\n      return styles;\n    }));\n    this.showfilters$ = this.state.tableSettings$.pipe(map(settings => !(settings.hideColumnHeaderFilters || this.metaData.noFilter)));\n  }\n\n  ngAfterViewInit() {\n    this.outerTemplate = this.getOuterTemplate();\n    this.innerTemplate = this.getInnerTemplate();\n    this.transform = this.transformCreator.createTransformer(this.metaData);\n    this.table.addColumnDef(this.columnDef);\n  }\n\n  cellClicked(element: any, key: string) {\n    if(this.metaData.click) {\n      this.metaData.click(element,key);\n    }\n  }\n\n  mapWidth = ([previousUserDefinedWidth, currentUserDefinedWidth] : [number, number]) : widthStyle => {\n    const baseWidth = !!this.metaData.width ? {flex:`0 0 ${this.metaData.width}`, maxWidth:'none'} : {flex:'1'};\n    if( currentUserDefinedWidth ){\n      return ({flex:`0 0 ${currentUserDefinedWidth}px`, maxWidth:'none'});\n    } if( wasReset() ){\n      return (baseWidth);\n    }\n    return ({});\n    function wasReset(){\n      return previousUserDefinedWidth >= 0 && currentUserDefinedWidth == null;\n    }\n  }\n\n  styles$!:Observable<allStyles>\n\n}\n","<ng-container [matColumnDef]=\"metaData.key\" *ngrxLet=\"styles$ as styles\" >\n\n  <ng-template #body let-element='element' >\n      <mat-cell  [matTooltip]=\"metaData.toolTip ?? ''\"  [conditionalClasses]='metaData.classes' [element]='element' [styler]='styles.body' [class.group-footer]=\"element.isGroupFooter\" (click)='cellClicked(element, metaData.key)' >\n        <ng-container *ngTemplateOutlet=\"innerTemplate;context: {metaData: metaData, element: element, transform: transform }; Injector: injector\">\n        </ng-container>\n    </mat-cell>\n\n  </ng-template>\n\n  <ng-template matHeaderCellDef #myHeader>\n\n    <ng-container *ngIf=\"customCell?.columnDef?.headerCell;else header;\">\n      <ng-container *ngTemplateOutlet=\"customCell.columnDef.headerCell.template; context: {metaData: metaData, styles:  styles.header} \">\n      </ng-container>\n    </ng-container>\n\n    <ng-template #header>\n\n      <mat-header-cell  cdkDrag [styler]='styles.header' [resizeColumn]=\"true\" [key]=\"metaData.key\"   class=\"column-head drag-header\" #headref >\n        <div class=\"header-container\" cdkDragHandle>\n          <div *ngIf=\"!metaData._internalNotUserDefined || !customCell?.columnDef?.cell ; else headerWithoutMenu\" mat-sort-header style=\"width: 100%\">\n            {{ metaData.displayName ?  metaData.displayName : ( metaData.key | spaceCase ) }}\n          </div>\n          <ng-template #headerWithoutMenu >\n            <div *ngIf=\"metaData._internalNotUserDefined;\" style=\"width: 100%\">\n              {{ metaData.displayName ?  metaData.displayName : ( metaData.key | spaceCase ) }}\n            </div>\n          </ng-template>\n          <tb-header-menu\n            *ngIf=\"(!metaData._internalNotUserDefined || !customCell?.columnDef?.cell) && (showfilters$ | async);\" #menu [metaData]='metaData' [filter]='filter' >\n          </tb-header-menu>\n        </div>\n      </mat-header-cell>\n\n    </ng-template>\n\n  </ng-template>\n\n\n  <ng-container *matCellDef=\"let element;\">\n    <ng-container *ngTemplateOutlet=\"outerTemplate; context: {metaData: metaData, element: element , styles: styles.body }\">\n    </ng-container>\n  </ng-container>\n\n  <ng-template matFooterCellDef>\n    <ng-container *ngIf=\"customCell?.columnDef?.footerCell;else footer\">\n      <ng-container\n        *ngTemplateOutlet=\"customCell.columnDef.footerCell.template;context: {metaData: metaData, data: data$, styles : styles.footer }\">\n      </ng-container>\n    </ng-container>\n\n    <ng-template #footer>\n      <mat-footer-cell  [styler]='styles.footer' *ngrxLet=\"data$ as data\">\n        <span *ngIf=\"data?.length && metaData.additional?.footer\" [ngSwitch]=\"metaData.fieldType\" class=\"bold\">\n          <span *ngSwitchCase=\"FieldType.Currency\">\n            {{ data | columnTotal: metaData | currency }}\n          </span>\n          <span *ngSwitchCase=\"FieldType.Number\">\n            {{ data | columnTotal: metaData | number }}\n          </span>\n        </span>\n      </mat-footer-cell>\n    </ng-template>\n  </ng-template>\n</ng-container>\n","import { MatTableDataSource } from '@angular/material/table';\nimport { TableVirtualScrollDataSource } from 'ng-table-virtual-scroll';\nimport { Observable, Subscription } from 'rxjs';\n\nexport class MatTableObservableDataSource<T> extends  MatTableDataSource<T> {\n  subscription?: Subscription;\n  constructor(private dataSrc: Observable<T[]>) {\n    super([]);\n  }\n\n  connect() {\n    if (!this.subscription) {\n      this.subscription = this.dataSrc.subscribe( data => this.data = data );\n    }\n    return super.connect();\n  }\n  disconnect() {\n    if (this.subscription) {\n      this.subscription.unsubscribe();\n      this.subscription = undefined;\n    }\n    super.disconnect();\n  }\n}\n\nexport class TableVirtualScrollObservableDataSource<T> extends TableVirtualScrollDataSource<T> {\n  subscription?: Subscription;\n  constructor(private dataSrc: Observable<T[]>) {\n    super([]);\n  }\n\n  connect() {\n    if (!this.subscription) {\n      this.subscription = this.dataSrc.subscribe( data => this.data = data );\n    }\n    return super.connect();\n  }\n  disconnect() {\n    if (this.subscription) {\n      this.subscription.unsubscribe();\n      this.subscription = undefined;\n    }\n    super.disconnect();\n  }\n}\n","import { Sort, SortDirection } from \"@angular/material/sort\";\nimport { orderBy } from 'lodash';\n\nexport type direc = 'asc' | 'desc' | boolean;\n\nexport function sortData<T>(data: T[], sorted: Sort[]): T[] {\n  return orderBy(data, sorted.map(r => r.active), sorted.map(r => r.direction as direc ));\n}\n","import { Observable } from 'rxjs';\nimport { MultiSortDirective } from '../directives/multi-sort.directive';\nimport { MatTableObservableDataSource, TableVirtualScrollObservableDataSource } from './MatTableObservableDataSource'\nimport { sortData } from '../functions/sort-data-function';\nimport { MatSort } from '@angular/material/sort';\n\nexport type GenericTableDataSourceType<T> = GenericTableDataSource<T> | GenericTableVirtualScrollDataSource<T>;\n\nexport function isMultiSort(sort: MatSort): sort is MultiSortDirective {\n    return Array.isArray((sort as MultiSortDirective ).rules);\n}\n\nexport class GenericTableDataSource<T> extends MatTableObservableDataSource<T>\n{\n\n  constructor(dataSrc: Observable<T[]>)\n  {\n    super(dataSrc);\n\n    const baseSort = this.sortData;\n    this.sortData = ((data: T[], sort:  MatSort) => isMultiSort(sort) ?  sortData(data, sort.rules) : baseSort(data, sort));\n  }\n}\n\nexport class GenericTableVirtualScrollDataSource<T> extends TableVirtualScrollObservableDataSource<T>\n{\n\n  constructor(dataSrc: Observable<T[]>)\n  {\n    super(dataSrc);\n\n    const baseSort = this.sortData;\n    this.sortData = ((data: T[], sort:  MatSort) => isMultiSort(sort) ?  sortData(data, sort.rules) : baseSort(data, sort));\n  }\n}\n","import {\n  Component,\n  ChangeDetectionStrategy,\n  ViewChild,\n  Input,\n  ElementRef,\n  AfterViewInit,\n  OnInit,\n  Output,\n  EventEmitter,\n} from '@angular/core';\nimport { MatPaginator, PageEvent } from '@angular/material/paginator';\nimport { asyncScheduler, merge, Observable } from 'rxjs';\nimport { delay, distinct, distinctUntilKeyChanged, map } from 'rxjs/operators';\nimport { GenericTableDataSource } from '../../classes/GenericTableDataSource';\nimport { TableStore } from '../../classes/table-store';\n@Component({\n    selector: 'tb-paginator',\n    template: `\n  <div [ngClass]=\"{'hide' : !(collapseFooter$ | async), 'page-amounts':true}\" *ngIf=\"currentPageData$ | async as pageData\">\n    {{pageData.currentStart}} - {{pageData.currentEnd}} of {{pageData.total}}\n  </div>\n  <mat-paginator [pageSizeOptions]=\"[5, 10, 20, 50, 100, 250, 500]\" showFirstLastButtons (page)=\"paginatorChange()\"\n    [ngClass]=\"{'hide' : (collapseFooter$ | async)}\">\n  </mat-paginator>\n  `,\n    styleUrls: ['./generic-table.component.scss', '../../styles/collapser.styles.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class PaginatorComponent implements OnInit, AfterViewInit{\n  @Input() dataSource! : GenericTableDataSource<any>;\n  @Input() tableElRef! : ElementRef\n  @ViewChild(MatPaginator, { static: true }) paginator!: MatPaginator;\n  currentPageData$!: Observable<CurrentPageDetails>;\n  collapseFooter$!:Observable<boolean>;\n  @Input() data$!: Observable<any[]>;\n  @Output() paginatorChangeEmitter = new EventEmitter<void>();\n\n  constructor(private state : TableStore){}\n  ngOnInit(){\n    this.dataSource.paginator = this.paginator;\n    this.ourPageEvent = true;\n    this.state.on(metaDataPageSizeChange(this.state), setPaginatorPageSize(this.paginator));\n    this.state.setPageSize(onPagiantorPageSizeChange(this.paginator));\n    this.collapseFooter$ = this.state.state$.pipe(map(state => state.persistedTableSettings.collapseFooter));\n\n  }\n  ngAfterViewInit(){\n    this.currentPageData$ = merge(\n      this.paginator.page.pipe(map(mapPaginationEventToCurrentPageDetails)),\n      this.data$.pipe(\n        distinctUntilKeyChanged(\"length\"),\n        delayToAllowForProperUpdate,\n        map(updateCurrentPageDetailsOnDataLengthChange(this.paginator)))\n    );\n  }\n\n  paginatorChange() : void {\n    this.paginatorChangeEmitter.emit();\n    if(!this.ourPageEvent){\n      /* The purpose of this line of code is to scroll to the top of the rows when the user changes the page, but it determines the \"top\" by\n      looking at the rendered rows, which is not the top of the table when using virtual scrolling.  Commenting out until we have a different solution */\n      //setTimeout(() => this.tableElRef?.nativeElement?.scrollIntoView(), 0);\n    } else {\n      this.ourPageEvent = false;\n    }\n  }\n  ourPageEvent = false;\n\n}\n\nconst mapPaginationEventToCurrentPageDetails = (pageData: PageEvent):CurrentPageDetails => ({\n  currentStart : (pageData.pageIndex * pageData.pageSize) + 1,\n  currentEnd : Math.min(pageData.length , ((pageData.pageIndex + 1) * pageData.pageSize)),\n  total : pageData.length\n});\n\nconst updateCurrentPageDetailsOnDataLengthChange = (paginator:MatPaginator) => () => ({currentStart:(paginator.pageIndex * paginator.pageSize) + 1,\n  currentEnd: Math.min(paginator.length , ((paginator.pageIndex + 1) * paginator.pageSize)),\n  total:paginator.length})\n\nconst delayToAllowForProperUpdate = delay<any[]>(0,asyncScheduler);\n\ninterface CurrentPageDetails {\n  currentStart:number,\n  currentEnd:number,\n  total:number\n}\n\nconst metaDataPageSizeChange = (state:TableStore) => state.state$.pipe(map(state => state.pageSize),distinct());\n\nconst setPaginatorPageSize = (paginator:MatPaginator) => (pageSize: number) =>\n  paginator._changePageSize(pageSize);\n\nconst onPagiantorPageSizeChange = (paginator: MatPaginator) => paginator.page.pipe(map( e => e.pageSize ), distinct());\n","import {\n  Component,\n  ViewChild,\n  Input,\n  ChangeDetectionStrategy,\n  Output,\n  SimpleChanges,\n  OnInit,\n  QueryList,\n  ViewContainerRef,\n  ElementRef,\n  Injector,\n  TemplateRef,\n  EventEmitter,\n} from '@angular/core';\nimport { MatSort } from '@angular/material/sort';\nimport { MatRowDef, MatTable } from '@angular/material/table';\nimport { Observable } from 'rxjs';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { TableStore } from '../../classes/table-store';\nimport { tap, map } from 'rxjs/operators';\nimport { ColumnBuilderComponent } from '../column-builder/column-builder.component';\nimport { Dictionary } from '../../interfaces/dictionary';\nimport { GenericTableDataSource, GenericTableDataSourceType, GenericTableVirtualScrollDataSource } from '../../classes/GenericTableDataSource';\nimport { FieldType } from '../../interfaces/report-def';\nimport { previousAndCurrent } from '../../../rxjs/rxjs-operators';\nimport { ColumnInfo } from '../../interfaces/ColumnInfo';\nimport { CdkDragDrop, CdkDropList } from '@angular/cdk/drag-drop';\nimport { Group } from '../../classes/TableState';\nimport { PaginatorComponent } from './paginator.component';\nimport * as _ from 'lodash';\n\n@Component({\n    selector: 'tb-generic-table',\n    templateUrl: './generic-table.component.html',\n    styleUrls: ['./generic-table.component.scss', '../../styles/collapser.styles.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class GenericTableComponent implements OnInit {\n\n\n  drop(event: CdkDragDrop<string[]>) {\n    this.state.setUserDefinedOrder({newOrder:event.currentIndex,oldOrder:event.previousIndex})\n  }\n\n  @Input() data$!: Observable<any[]>;\n  @Input() IndexColumn = false;\n  @Input() SelectionColumn = false;\n  @Input() trackBy!: string;\n  @Input() rows!: QueryList<MatRowDef<any>>;\n  @Input() isSticky = false;\n  @Input() columnBuilders!: ColumnBuilderComponent[];\n  @Input() columnInfos!: Observable<ColumnInfo[]>;\n  @Input() groupHeaderTemplate!: TemplateRef<any>;\n  @Input() compareWithKey!: string;\n\n  private _disableSort!: boolean;\n  @Input() set disableSort(val: boolean) {\n    this._disableSort = val;\n    if (val) {\n      if (this.dataSource?.sort) {\n        this.dataSource.sort = null;\n      }\n    } else {\n      if (this.dataSource && !this.dataSource.sort) {\n        this.dataSource.sort = this.sort;\n      }\n    }\n  }\n  get disableSort() { return this._disableSort; }\n\n  @ViewChild(MatTable, { static: true }) table!: MatTable<any>;\n  @ViewChild(CdkDropList, { static: true }) dropList!: CdkDropList;\n  @ViewChild('table', {read: ElementRef}) tableElRef!: ElementRef;\n  @ViewChild(PaginatorComponent) paginatorComponent!: PaginatorComponent;\n  @Output() paginatorChange = new EventEmitter<void>();\n  currentColumns!: string[];\n  dataSource!: any;\n  keys: string [] = [];\n  injector: Injector;\n  rowDefArr :MatRowDef<any>[]= [];\n  columns:string [] = [];\n  myColumns: Dictionary<ColumnBuilderComponent> = {};\n  showHeader$!: Observable<boolean>;\n\n  constructor(\n    protected sort: MatSort,\n    public state: TableStore,\n    private viewContainer: ViewContainerRef,\n    injector: Injector,\n    ) {\n\n    this.injector = Injector.create({ providers: [\n      {provide: MatTable, useFactory: ()=> {return this.table} },\n      {provide: CdkDropList, useFactory: ()=> {return this.dropList} },\n    ], parent: injector});\n  }\n\n  trackByFunction = (index:number, item: any) => {\n    if (!item) {\n      return null;\n    }\n    if (this.trackBy) {\n      return item[this.trackBy];\n    }\n    return item;\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes.rows && this.rows && this.myColumns.length) {\n      this.initializeRowDefs([...this.rows]);\n    }\n  }\n\n  customCompare = (o1: any, o2: any) => o1[this.compareWithKey] == o2[this.compareWithKey];\n  updateSelection = (data: any[]) => {\n    if (this.SelectionColumn) {\n      this.selection.selected.forEach(s => !data.find(d => this.compareWithKey ? this.customCompare(d, s) : _.isEqual(s, d)) ? this.selection.deselect(s) : undefined);\n    }\n  }\n\n  ngOnInit() {\n    if (this.SelectionColumn) {\n      this.columns.push('select');\n      this.selection.compareWith = this.compareWithKey ? this.customCompare : _.isEqual;\n    }\n\n    if (this.IndexColumn) {\n     this.columns.push('index');\n    }\n\n    this.createDataSource();\n\n    this.state.on(this.columnInfos, columns => {\n      columns.forEach(ci => this.addMetaData(ci))\n    });\n\n    this.initializeRowDefs([...this.rows]);\n\n    this.state.on(this.state.displayedColumns$, keys => {\n      this.keys = [...this.columns, ...keys];\n      this.rowDefArr?.forEach(row => row.columns = this.keys)\n    });\n\n    this.showHeader$ = this.state.tableSettings$.pipe(map(settings => !(settings.hideColumnHeader)));\n  }\n\n  createDataSource() {\n    this.dataSource = new GenericTableDataSource(\n      this.data$.pipe(tap(this.updateSelection))\n    );\n\n    if (!this.disableSort) {\n      this.dataSource.sort = this.sort;\n    }\n  }\n\n  isGroupHeader(_: number, row: { isGroupHeader: boolean }) {\n    return row.isGroupHeader;\n  }\n\n  isGroupFooter(_: number, row: { isGroupFooter: boolean }) {\n    return row.isGroupFooter;\n  }\n\n  updateGroup(group: Group): void {\n    this.state.updateGroups([{\n      ...group,\n      isExpanded: !group.isExpanded\n    }]);\n  }\n\n  addMetaData(column: ColumnInfo) {\n    let columnBuilder = this.myColumns[column.metaData.key];\n    if(columnBuilder) {\n      columnBuilder.metaData = column.metaData;\n    } else {\n      const component = this.viewContainer.createComponent(ColumnBuilderComponent, {\n        index: 0,\n        injector: this.injector\n      });\n      component.instance.customCell = column.customCell;\n      component.instance.metaData = column.metaData;\n      component.instance.data$ = this.data$;\n      this.myColumns[column.metaData.key] = component.instance;\n    }\n  }\n\n  initializeRowDefs = (defs:MatRowDef<any>[])=>{\n    this.rowDefArr.forEach(r=>this.table.removeRowDef(r));\n    this.rowDefArr = defs;\n    defs.forEach(r => {\n      r.columns = this.columns.concat(Object.values(this.myColumns).filter(c => c.metaData.fieldType !== FieldType.Hidden).map(c => c.metaData.key));\n      if (this.table) {\n        this.table.addRowDef(r);\n      }\n    });\n  }\n\n  selection : SelectionModel<any> = new SelectionModel<any>(true, []);\n  @Output() selection$: Observable<any> = this.selection.changed;\n  masterToggleChecked$ = this.selection$.pipe(map(()=>this.selection.hasValue() && this.isAllSelected()));\n  masterToggleIndeterminate$ = this.selection$.pipe(map(()=>this.selection.hasValue() && !this.isAllSelected()));\n\n  isAllSelected() {\n    const numSelected = this.selection.selected.length;\n    const numRows = this.dataSource.data.length;\n    return numSelected === numRows;\n  }\n\n  /** Selects all rows if they are not all selected; otherwise clear selection. */\n  masterToggle() {\n    this.isAllSelected() ?\n      this.selection.clear() :\n      this.selection.select(...this.dataSource.data);\n  }\n\n  tableWidth = this.state.getUserDefinedTableSize$.pipe(\n    previousAndCurrent<number | undefined>(0),\n    map(([previousUserDefinedWidth, currentUserDefinedWidth]) => {\n      if( currentUserDefinedWidth){\n        return ({width:`${currentUserDefinedWidth}px`});\n      } if( wasReset() ){\n        return ({width:'initial'});\n      }\n      return ({});\n\n      function wasReset(){\n        return (previousUserDefinedWidth ?? 0) >=0 && currentUserDefinedWidth == null;\n      }\n    })\n  );\n\n  collapseFooter$ = this.state.state$.pipe(map(state => state.persistedTableSettings.collapseFooter));\n}\n\n@Component({\n    selector: 'tb-generic-table-vs',\n    templateUrl: './generic-table-vs.component.html',\n    styleUrls: ['./generic-table.component.scss', '../../styles/collapser.styles.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class GenericTableVsComponent extends GenericTableComponent {\n  createDataSource() {\n    this.dataSource = new GenericTableVirtualScrollDataSource(\n      this.data$.pipe(tap(this.updateSelection))\n    );\n\n    if (!this.disableSort) {\n      this.dataSource.sort = this.sort;\n    }\n  }\n}\n","  <mat-table\n    cdkDropList\n    cdkDropListLockAxis='x'\n    cdkDropListOrientation=\"horizontal\"\n    (cdkDropListDropped)=\"drop($event)\"\n    class=\"table-drag-list\"\n    #table\n    [dataSource]=\"dataSource\"\n    [trackBy]='trackByFunction'\n    [styler]=\"tableWidth | async\"\n  >\n\n      <ng-container matColumnDef=\"select\">\n\n          <mat-header-cell *matHeaderCellDef class=\"f-mat-header-cell\">\n            <mat-checkbox (change)=\"$event ? masterToggle() : null\"\n                          [checked]=\"!!(masterToggleChecked$ | async)\"\n                          [indeterminate]=\"masterToggleIndeterminate$ | async\">\n            </mat-checkbox>\n          </mat-header-cell>\n\n          <mat-cell *matCellDef=\"let row\">\n            <mat-checkbox *ngIf=\"!row.isGroupFooter\"\n                          (click)=\"$event.stopPropagation()\"\n                          (change)=\"$event ? selection.toggle(row) : null\"\n                          [checked]=\"selection.isSelected(row)\">\n            </mat-checkbox>\n          </mat-cell>\n\n          <mat-footer-cell *matFooterCellDef>\n            {{ selection.selected.length }}\n          </mat-footer-cell>\n        </ng-container>\n\n        <ng-container matColumnDef=\"index\">\n            <mat-header-cell *matHeaderCellDef class=\"f-mat-header-cell\" >#</mat-header-cell>\n            <mat-cell *matCellDef=\"let i = index;\"> {{ (tbPaginator.paginator.pageIndex * tbPaginator.paginator.pageSize) +  i + 1 }} </mat-cell>\n            <mat-footer-cell *matFooterCellDef></mat-footer-cell>\n        </ng-container>\n\n        <ng-container matColumnDef=\"groupHeader\">\n          <mat-cell *matCellDef=\"let row\">\n            <div [style.paddingLeft]=\"row.padding + 'px !important'\" >\n              <button mat-icon-button (click)=\"updateGroup(row);\">\n                <mat-icon *ngIf=\"!row.isExpanded\">chevron_right</mat-icon>\n                <mat-icon *ngIf=\"row.isExpanded\">expand_more</mat-icon>\n              </button>\n              {{row.groupHeaderName}}\n            </div>\n            <div style=\"flex-grow: 1\">\n              <ng-container *ngTemplateOutlet=\"groupHeaderTemplate; context: { element: row }\"></ng-container>\n            </div>\n          </mat-cell>\n        </ng-container>\n\n        <ng-container *ngIf=\"showHeader$ | async\">\n          <mat-header-row *matHeaderRowDef=\"keys; sticky: isSticky\"></mat-header-row>\n        </ng-container>\n        <mat-row *matRowDef=\"let row; columns: keys; let i = index\"></mat-row>\n        <mat-row *matRowDef=\"let row; columns: ['groupHeader']; when: isGroupHeader\" class=\"group-header-row\" style=\"background-color: white;\"></mat-row>\n        <mat-row *matRowDef=\"let row; columns: keys; when: isGroupFooter\" style=\"background-color: whitesmoke;\"></mat-row>\n        <mat-footer-row *matFooterRowDef=\"keys\"></mat-footer-row>\n\n    </mat-table>\n\n  <div class=\"flx-row-end sticky\">\n    <tb-paginator #tbPaginator\n      [dataSource]=\"dataSource\"\n      [tableElRef]=\"tableElRef\"\n      [data$]=\"data$\"\n      (paginatorChangeEmitter)=\"paginatorChange.emit()\">\n    </tb-paginator>\n\n    <mat-icon [matTooltip]=\"(collapseFooter$ | async) ? 'expand' : 'collapse'\" class=\"collapse-icon footer\" (click)=\"state.toggleCollapseFooter()\">\n      {{(collapseFooter$ | async) ? 'expand_more' : 'expand_less'}}\n    </mat-icon>\n  </div>\n\n\n","  <cdk-virtual-scroll-viewport tvsItemSize class=\"tb-virtual-scroll-viewport\">\n\n    <mat-table\n    cdkDropList\n    cdkDropListLockAxis='x'\n    cdkDropListOrientation=\"horizontal\"\n    (cdkDropListDropped)=\"drop($event)\"\n    class=\"table-drag-list\"\n    #table\n    [dataSource]=\"dataSource\"\n    [trackBy]='trackByFunction'\n    [styler]=\"tableWidth | async\"\n  >\n\n      <ng-container matColumnDef=\"select\">\n\n          <mat-header-cell *matHeaderCellDef class=\"f-mat-header-cell\">\n            <mat-checkbox (change)=\"$event ? masterToggle() : null\"\n                          [checked]=\"!!(masterToggleChecked$ | async)\"\n                          [indeterminate]=\"masterToggleIndeterminate$ | async\">\n            </mat-checkbox>\n          </mat-header-cell>\n\n          <mat-cell *matCellDef=\"let row\">\n            <mat-checkbox *ngIf=\"!row.isGroupFooter\"\n                          (click)=\"$event.stopPropagation()\"\n                          (change)=\"$event ? selection.toggle(row) : null\"\n                          [checked]=\"selection.isSelected(row)\">\n            </mat-checkbox>\n          </mat-cell>\n\n          <mat-footer-cell *matFooterCellDef>\n            {{ selection.selected.length }}\n          </mat-footer-cell>\n        </ng-container>\n\n        <ng-container matColumnDef=\"index\">\n            <mat-header-cell *matHeaderCellDef class=\"f-mat-header-cell\" >#</mat-header-cell>\n            <mat-cell *matCellDef=\"let i = index;\"> {{ (tbPaginator.paginator.pageIndex * tbPaginator.paginator.pageSize) +  i + 1 }} </mat-cell>\n            <mat-footer-cell *matFooterCellDef></mat-footer-cell>\n        </ng-container>\n\n        <ng-container matColumnDef=\"groupHeader\">\n          <mat-cell *matCellDef=\"let row\">\n            <div [style.paddingLeft]=\"row.padding + 'px !important'\" >\n              <button mat-icon-button (click)=\"updateGroup(row);\">\n                <mat-icon *ngIf=\"!row.isExpanded\">chevron_right</mat-icon>\n                <mat-icon *ngIf=\"row.isExpanded\">expand_more</mat-icon>\n              </button>\n              {{row.groupHeaderName}}\n            </div>\n            <div style=\"flex-grow: 1\">\n              <ng-container *ngTemplateOutlet=\"groupHeaderTemplate; context: { element: row }\"></ng-container>\n            </div>\n          </mat-cell>\n        </ng-container>\n\n        <ng-container *ngIf=\"showHeader$ | async\">\n          <mat-header-row *matHeaderRowDef=\"keys; sticky: isSticky\"></mat-header-row>\n        </ng-container>\n        <mat-row *matRowDef=\"let row; columns: keys; let i = index\"></mat-row>\n        <mat-row *matRowDef=\"let row; columns: ['groupHeader']; when: isGroupHeader\" class=\"group-header-row\" style=\"background-color: white;\"></mat-row>\n        <mat-row *matRowDef=\"let row; columns: keys; when: isGroupFooter\" style=\"background-color: whitesmoke;\"></mat-row>\n        <mat-footer-row *matFooterRowDef=\"keys\"></mat-footer-row>\n\n    </mat-table>\n\n  </cdk-virtual-scroll-viewport>\n\n  <div class=\"flx-row-end sticky\">\n    <tb-paginator #tbPaginator\n      [dataSource]=\"dataSource\"\n      [tableElRef]=\"tableElRef\"\n      [data$]=\"data$\">\n    </tb-paginator>\n\n    <mat-icon [matTooltip]=\"(collapseFooter$ | async) ? 'expand' : 'collapse'\" class=\"collapse-icon footer\" (click)=\"state.toggleCollapseFooter()\">\n      {{(collapseFooter$ | async) ? 'expand_more' : 'expand_less'}}\n    </mat-icon>\n  </div>\n\n","import { Directive, TemplateRef, Input, AfterContentInit, Optional } from '@angular/core';\nimport { CdkColumnDef } from '@angular/cdk/table';\nimport { SortDef, MetaData, FieldType } from '../interfaces/report-def';\n\n// here is how to use it\n// <generic-table [report]=\"report\">\n//     <p *customCell=\"'column1'; let element = element\" [class.makeMeRed]=\"element?.port\">If Port, i will be red</p>\n//     <p *customCell=\"'column2'\">I am custom cell two </p>\n// </generic-table>\n@Directive({\n    selector: '[customCell]',\n    standalone: false\n})\nexport class CustomCellDirective implements AfterContentInit {\n    @Input() customCell!: string;\n    @Input() displayName?: string;\n    @Input() preSort?: SortDef;\n    @Input() TemplateRef: TemplateRef<any>;\n    @Input() customCellOrder?: number;\n    @Input() customCellWidth?: string;\n    constructor(\n      @Optional()  private templateRef: TemplateRef<any>,\n      @Optional() public columnDef: CdkColumnDef\n      ) {\n        this.TemplateRef = this.templateRef;\n     }\n     ngAfterContentInit() {\n      if (this.TemplateRef === null) {\n        this.TemplateRef = this.templateRef;\n      }\n    }\n\n    getMetaData(metaData? : MetaData): MetaData {\n      return {\n        key: this.customCell,\n        displayName: this.displayName ?? metaData?.displayName,\n        preSort: this.preSort ?? metaData?.preSort,\n        fieldType: metaData?.fieldType ??  FieldType.Unknown,\n        order: this.customCellOrder ?? metaData?.order,\n        _internalNotUserDefined: !(!!metaData),\n        width: this.customCellWidth ?? metaData?.width,\n        customCell: true,\n        noExport: !metaData\n      };\n    }\n}\n","import { Component, ChangeDetectionStrategy} from '@angular/core';\nimport { DisplayCol } from '../../classes/display-col';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { orderViewableMetaData, TableStore } from '../../classes/table-store';\nimport {CdkDragDrop} from '@angular/cdk/drag-drop';\n\n@Component({\n    selector: 'tb-col-displayer',\n    templateUrl: './gen-col-displayer.component.html',\n    styleUrls: ['./gen-col-displayer.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    standalone: false\n})\nexport class GenColDisplayerComponent {\n  columns$: Observable< DisplayCol[]>;\n  constructor( private tableState: TableStore ) {\n    this.columns$ = this.tableState.state$.pipe(\n      map( state =>\n        orderViewableMetaData(state)\n          .map( md => ({\n            key: md.key,\n            displayName: md.displayName,\n            isVisible: !state.hiddenKeys.includes(md.key)\n          }))\n      ),\n    );\n  }\n\n  reset(displayCols: DisplayCol[]) {\n    displayCols.forEach(c => c.isVisible = true);\n    this.emit(displayCols);\n  }\n  drop(event: CdkDragDrop<string[]>) {\n    this.tableState.setUserDefinedOrder({newOrder:event.currentIndex,oldOrder:event.previousIndex})\n  }\n  unset(displayCols: DisplayCol[]) {\n    displayCols.forEach(c => c.isVisible = false);\n    this.emit(displayCols);\n  }\n\n  emit(displayCols: DisplayCol[]) {\n    this.tableState.setHiddenColumns(displayCols.map( c => ({key: c.key, visible: c.isVisible})));\n  }\n}\n","@if (columns$ | async; as displayCols) {\n  <span matTooltip=\"Show/hide columns\">\n    <button mat-icon-button [matMenuTriggerFor]=\"menu\">\n      <mat-icon class=\"tb-icon-primary\">visibility_off</mat-icon>\n    </button>\n  </span>\n  <mat-menu #menu=\"matMenu\" class=\"my-mat-menu\">\n\n    <button mat-menu-item>\n      <span matTooltip=\"Close\">\n        <button class=\"filter-button\" mat-icon-button>\n          <mat-icon>close</mat-icon>\n        </button>\n      </span>\n    </button>\n\n    <button mat-menu-item stop-propagation>\n      <span matTooltip=\"Show all columns\">\n        <button mat-icon-button (click)=\"reset(displayCols)\">\n          <mat-icon class=\"tb-icon-primary\">done_all</mat-icon>\n        </button>\n      </span>\n\n      <span matTooltip=\"Hide all columns\">\n        <button mat-icon-button (click)=\"unset(displayCols)\">\n          <mat-icon class=\"tb-icon-primary\">cancel</mat-icon>\n        </button>\n      </span>\n    </button>\n\n    <div cdkDropList (cdkDropListDropped)=\"drop($event)\" stop-propagation cdkDropListLockAxis='y'>\n      @for (col of displayCols; track col.key) {\n        <button [class.isHidden]=\"!col.isVisible\" stop-propagation mat-menu-item cdkDrag [cdkDragData]=\"col\">\n          <div (click)=\"col.isVisible = !col.isVisible; emit(displayCols)\" style=\"display: flex; align-items: center;\" [matTooltip]=\"col.displayName || (col.key | spaceCase)\">\n            @if (col.isVisible) {\n              <button mat-icon-button class=\"show-hide\">\n                <mat-icon class=\"tb-icon-primary\">check_box</mat-icon>\n              </button>\n            } @else {\n              <button mat-icon-button matTooltip=\"Show Column\" class=\"show-hide\">\n                <mat-icon>indeterminate_check_box</mat-icon>\n              </button>\n            }\n            <p class=\"label\">\n              {{col.displayName || (col.key | spaceCase) }}\n            </p>\n          </div>\n        </button>\n      }\n    </div>\n  </mat-menu>\n}\n","import { Injectable } from \"@angular/core\";\nimport { ComponentStore } from \"@ngrx/component-store\";\nimport { map } from \"rxjs/operators\";\nimport { PartialFilter } from \"../../classes/filter-info\";\n@Injectable()\nexport class WrapperFilterStore  extends ComponentStore<{filterInfo:PartialFilter[]}>{\n  constructor(){\n    super({filterInfo:[]});\n  }\n\n  clearAll = this.updater(()=>({filterInfo:[]}));\n  deleteByIndex = this.updater((state,index:number)=>{\n    const arr = [...state.filterInfo];\n    arr.splice(index, 1);\n    return {filterInfo:arr};\n  });\n\n  currentFilters$ = this.state$.pipe(map(state => state.filterInfo));\n\n  addFilter = this.updater((state,filter:PartialFilter)=>{\n    return ({...state,filterInfo:[...state.filterInfo,filter]});\n  })\n}\n","import { Component, ChangeDetectionStrategy, signal } from '@angular/core';\nimport { combineLatest, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { v4 as uuid } from 'uuid';\nimport { TableStore } from '../../../classes/table-store';\nimport {\n  CustomFilter, FilterInfo, filterTypeMap, isCustomFilter, isFilterInfo, mappedFieldTypes\n} from '../../../classes/filter-info';\nimport { FieldType, MetaData } from '../../../interfaces/report-def';\nimport { WrapperFilterStore } from '../table-wrapper-filter-store';\nimport { FilterType } from '../../../enums/filterTypes';\n\ninterface FilterChipVm {\n  filterId: string;\n  columnName: string;\n  columnKey: string;\n  filterType: FilterType | undefined;\n  fieldType: FieldType;\n  operatorLabel: string;\n  /** Display string of the filter value. Arrays are joined with \", \" so the user can edit them as text. */\n  valueDisplay: string;\n  /** Raw filterValue (used for type-aware inputs in expanded form). */\n  rawValue: any;\n  isCustom: boolean;\n  isHidden: boolean;\n}\n\n/** Editing draft state for the currently-expanded chip. Edits don't commit until Apply. */\ninterface ChipDraft {\n  filterId: string;\n  filterType: FilterType | undefined;\n  value: any;\n  /** True if this draft was just created from \"+ Add filter\" — Cancel removes the chip entirely. */\n  isNew: boolean;\n}\n\n// FilterType is a string-valued enum where some entries share string values\n// (e.g. NumberEquals === StringEquals === 'Equals', NumberBetween === DateBetween === 'Between').\n// We dedupe by string value when building this lookup.\nconst OPERATOR_LABELS: Record<string, string> = {\n  [FilterType.StringContains]: 'contains',\n  [FilterType.StringDoesNotContain]: 'not contains',\n  [FilterType.StringEquals]: 'equals',\n  [FilterType.StringStartWith]: 'starts with',\n  [FilterType.StringEndsWith]: 'ends with',\n  [FilterType.NumberNotEqual]: '≠',\n  [FilterType.NumberLessThan]: '<',\n  [FilterType.NumberGreaterThan]: '>',\n  [FilterType.NumberBetween]: 'between',\n  [FilterType.DateIsOn]: 'on',\n  [FilterType.DateIsNotOn]: 'not on',\n  [FilterType.DateOnOrAfter]: 'on or after',\n  [FilterType.DateOnOrBefore]: 'on or before',\n  [FilterType.DateTimeIsAt]: 'at',\n  [FilterType.DateTimeIsNotAt]: 'not at',\n  [FilterType.DateTimeAtOrAfter]: 'at or after',\n  [FilterType.DateTimeAtOrBefore]: 'at or before',\n  [FilterType.BooleanEquals]: 'is',\n  [FilterType.IsNull]: 'is empty',\n  [FilterType.In]: 'in',\n  [FilterType.Or]: 'or',\n  [FilterType.And]: 'and',\n  [FilterType.Custom]: 'custom',\n};\n\n@Component({\n  selector: 'tb-filter-displayer',\n  templateUrl: './gen-filter-displayer.component.html',\n  styleUrls: ['./gen-filter-displayer.component.css'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class GenFilterDisplayerComponent {\n  chips$: Observable<FilterChipVm[]>;\n  filterCols$: Observable<MetaData[]>;\n  count$: Observable<number>;\n\n  /** Which chip is currently in expanded form. Drives compact vs expanded rendering. */\n  draft = signal<ChipDraft | null>(null);\n\n  /** Whether the inline column picker is open (replaces the nested mat-menu so the\n   * parent panel stays open after a column is selected). */\n  pickerOpen = signal(false);\n\n  /** Expose FilterType to the template so it can compare against d.filterType. */\n  protected readonly FilterType = FilterType;\n\n  constructor(public tableState: TableStore, public filterStore: WrapperFilterStore) {\n    this.filterCols$ = tableState.metaDataArray$.pipe(\n      map(md => Object.values(md).filter(m => m.fieldType !== FieldType.Hidden && !m.noFilter))\n    );\n\n    this.chips$ = combineLatest([this.tableState.filters$, this.tableState.metaData$]).pipe(\n      map(([filters, metaData]) =>\n        Object.values(filters)\n          .filter((f): f is FilterInfo | CustomFilter => !!f)\n          .filter(f => !(isFilterInfo(f) && (f as FilterInfo)._isExternalyManaged))\n          .map<FilterChipVm>(f => {\n            if (isCustomFilter(f)) {\n              return {\n                filterId: f.filterId,\n                columnName: 'Custom',\n                columnKey: '',\n                filterType: f.filterType,\n                fieldType: FieldType.Unknown,\n                operatorLabel: 'custom',\n                valueDisplay: '',\n                rawValue: undefined,\n                isCustom: true,\n                isHidden: false,\n              };\n            }\n            const key = (f as FilterInfo).key;\n            const meta = metaData[key];\n            const display = meta?.displayName || this.spaceCase(key);\n            return {\n              filterId: f.filterId,\n              columnName: display,\n              columnKey: key,\n              filterType: f.filterType,\n              fieldType: (f as FilterInfo).fieldType,\n              operatorLabel: f.filterType === FilterType.IsNull\n                ? ((f as FilterInfo).filterValue ? 'is empty' : 'is not empty')\n                : (f.filterType ? (OPERATOR_LABELS[f.filterType] || f.filterType) : 'select'),\n              valueDisplay: this.formatValue((f as FilterInfo).filterValue),\n              rawValue: (f as FilterInfo).filterValue,\n              isCustom: false,\n              isHidden: meta ? meta.fieldType === FieldType.Hidden : false,\n            };\n          })\n      )\n    );\n\n    this.count$ = this.chips$.pipe(map(chips => chips.length));\n  }\n\n  /** Operators compatible with a chip's column fieldType, for the operator dropdown. */\n  operatorsFor(fieldType: FieldType): { value: FilterType; label: string }[] {\n    if (fieldType === FieldType.Hidden || fieldType === FieldType.Expression || fieldType === FieldType.ImageUrl) {\n      return [];\n    }\n    const map = filterTypeMap[fieldType as mappedFieldTypes];\n    if (!map) return [];\n    return Object.keys(map).map(ft => ({\n      value: ft as FilterType,\n      label: OPERATOR_LABELS[ft] || ft,\n    }));\n  }\n\n  /** Maps fieldType to the input style the expanded form should render. */\n  inputKindFor(fieldType: FieldType): 'date' | 'datetime' | 'number' | 'boolean' | 'text' {\n    switch (fieldType) {\n      case FieldType.Date: return 'date';\n      case FieldType.DateTime: return 'datetime';\n      case FieldType.Number:\n      case FieldType.Currency: return 'number';\n      case FieldType.Boolean: return 'boolean';\n      default: return 'text';\n    }\n  }\n\n  /**\n   * Add a new filter from the column picker.\n   * Combo 4: the chip is born expanded with no value yet. The user fills in value + Apply\n   * to commit. Commits to TableStore happen on Apply, not on every keystroke, so the\n   * table doesn't re-filter mid-edit.\n   */\n  /** Toggle the inline column picker. */\n  togglePicker(event?: Event) {\n    if (event) event.stopPropagation();\n    this.pickerOpen.update(v => !v);\n  }\n\n  closePicker() {\n    this.pickerOpen.set(false);\n  }\n\n  addFilter(metaData: MetaData) {\n    const ops = this.operatorsFor(metaData.fieldType);\n    const defaultType = ops.length ? ops[0].value : undefined;\n    const filterId = uuid();\n    // IsNull's filterValue is a boolean direction (true=blanks, false=non-blanks).\n    // For Enum fields the default operator IS IsNull, so set filterValue=true upfront\n    // so the placeholder chip reads \"is empty\" instead of \"is not empty\" during the\n    // brief window before Apply.\n    const placeholderValue = defaultType === FilterType.IsNull ? true : undefined;\n    // Insert a placeholder filter so the chip renders. With filterValue: undefined,\n    // createFilterFunc returns defaultPredicate (everything matches) — no table change.\n    this.tableState.addFilter({\n      filterId,\n      key: metaData.key,\n      fieldType: metaData.fieldType,\n      filterType: defaultType,\n      filterValue: placeholderValue,\n    } as FilterInfo);\n    // Open the expanded form for editing and close the column picker.\n    this.draft.set({\n      filterId,\n      filterType: defaultType,\n      value: defaultType === FilterType.IsNull ? true : this.defaultDraftValue(metaData.fieldType),\n      isNew: true,\n    });\n    this.pickerOpen.set(false);\n  }\n\n  /** Open the expanded form for an existing chip. Initializes the draft from current values. */\n  expand(chip: FilterChipVm) {\n    if (chip.isCustom) return;\n    this.draft.set({\n      filterId: chip.filterId,\n      filterType: chip.filterType,\n      value: chip.rawValue ?? this.defaultDraftValue(chip.fieldType),\n      isNew: false,\n    });\n  }\n\n  /**\n   * NumberBetween, DateBetween, and DateTimeBetween all have the same string enum value\n   * ('Between'). We check against any one of them and the comparison covers all three.\n   */\n  protected isBetween(ft: FilterType | undefined): boolean {\n    return ft === FilterType.NumberBetween;\n  }\n\n  /** Update the operator in the draft (without committing). */\n  draftSetOperator(filterType: FilterType, fieldType: FieldType) {\n    const d = this.draft();\n    if (!d) return;\n    // Switching to/from a Between operator changes the value shape — primitive vs\n    // {Start, End} Range. Reset the value to the appropriate default so we don't\n    // hand a primitive to the between filter (or vice versa) on Apply.\n    const wasBetween = this.isBetween(d.filterType);\n    const willBeBetween = this.isBetween(filterType);\n    const wasIsNull = d.filterType === FilterType.IsNull;\n    const willBeIsNull = filterType === FilterType.IsNull;\n    let value = d.value;\n    if (wasBetween !== willBeBetween || wasIsNull !== willBeIsNull) {\n      // Three shapes: Range {Start,End} for Between, boolean for IsNull, primitive otherwise.\n      if (willBeBetween) {\n        value = { Start: this.defaultDraftValue(fieldType), End: this.defaultDraftValue(fieldType) };\n      } else if (willBeIsNull) {\n        value = true; // default to \"match blanks\" — same as legacy filter dialog's default\n      } else {\n        value = this.defaultDraftValue(fieldType);\n      }\n    }\n    this.draft.set({ ...d, filterType, value });\n  }\n\n  /** Update the value in the draft (without committing). */\n  draftSetValue(value: any) {\n    const d = this.draft();\n    if (!d) return;\n    this.draft.set({ ...d, value });\n  }\n\n  /** Update the Start side of a Between range draft (without committing). */\n  draftSetStart(start: any) {\n    const d = this.draft();\n    if (!d) return;\n    const range = (d.value && typeof d.value === 'object') ? d.value : {};\n    this.draft.set({ ...d, value: { ...range, Start: start } });\n  }\n\n  /** Update the End side of a Between range draft (without committing). */\n  draftSetEnd(end: any) {\n    const d = this.draft();\n    if (!d) return;\n    const range = (d.value && typeof d.value === 'object') ? d.value : {};\n    this.draft.set({ ...d, value: { ...range, End: end } });\n  }\n\n  /** Apply: commit the draft to TableStore, collapse. */\n  apply(chip: FilterChipVm) {\n    const d = this.draft();\n    if (!d || d.filterId !== chip.filterId) return;\n    const value = this.parseDraftValue(d.value, chip.fieldType, d.filterType);\n    this.tableState.addFilter({\n      filterId: d.filterId,\n      key: chip.columnKey,\n      fieldType: chip.fieldType,\n      filterType: d.filterType,\n      filterValue: value,\n    } as FilterInfo);\n    this.draft.set(null);\n  }\n\n  /** Cancel: collapse without committing. For new chips, also remove the placeholder. */\n  cancel(chip: FilterChipVm) {\n    const d = this.draft();\n    if (!d || d.filterId !== chip.filterId) return;\n    if (d.isNew) {\n      this.tableState.removeFilter(chip.filterId);\n    }\n    this.draft.set(null);\n  }\n\n  removeFilter(filterId: string) {\n    if (this.draft()?.filterId === filterId) {\n      this.draft.set(null);\n    }\n    this.tableState.removeFilter(filterId);\n  }\n\n  clearAll() {\n    this.draft.set(null);\n    this.tableState.clearFilters();\n  }\n\n  trackByFilterId(_: number, chip: FilterChipVm) {\n    return chip.filterId;\n  }\n\n  trackByKey(_: number, md: MetaData) {\n    return md.key;\n  }\n\n  /** True when the chip is currently the one being edited (expanded). */\n  isExpanded(filterId: string): boolean {\n    return this.draft()?.filterId === filterId;\n  }\n\n  // -------- internal helpers --------\n\n  private defaultDraftValue(fieldType: FieldType): any {\n    switch (fieldType) {\n      case FieldType.Boolean: return true;\n      case FieldType.Number:\n      case FieldType.Currency: return null;\n      default: return '';\n    }\n  }\n\n  /** Parse the draft's loosely-typed value into something filterValue-compatible. */\n  private parseDraftValue(raw: any, fieldType: FieldType, ft: FilterType | undefined): any {\n    // FilterType.IsNull is overloaded: filterValue is a *boolean* indicating direction.\n    // true = match rows where the column is blank/null; false = match non-blank rows.\n    // The V3-A dialog renders a True/False toggle when IsNull is selected; we coerce\n    // the draft's value here. Default to true if somehow undefined slips through, so\n    // the filter is never inert when the user picked IsNull.\n    if (ft === FilterType.IsNull) {\n      return raw === false || raw === 'false' ? false : true;\n    }\n\n    // Between operators (NumberBetween, DateBetween, DateTimeBetween) take a Range\n    // {Start, End}. The draft holds an object with each side parsed independently\n    // through the same coercion logic as a single primitive value.\n    if (this.isBetween(ft)) {\n      if (!raw || typeof raw !== 'object') return undefined;\n      const start = this.parseDraftValue(raw.Start, fieldType, undefined);\n      const end = this.parseDraftValue(raw.End, fieldType, undefined);\n      if (start === undefined || end === undefined) return undefined;\n      return { Start: start, End: end };\n    }\n\n    if (raw === '' || raw === null || raw === undefined) return undefined;\n    if (ft === FilterType.In && typeof raw === 'string') {\n      return raw.split(',').map(s => s.trim()).filter(Boolean);\n    }\n    if (fieldType === FieldType.Number || fieldType === FieldType.Currency) {\n      const n = typeof raw === 'number' ? raw : parseFloat(raw);\n      return isNaN(n) ? undefined : n;\n    }\n    if (fieldType === FieldType.Date || fieldType === FieldType.DateTime) {\n      // <input type=\"date\"> gives \"YYYY-MM-DD\"; pass through. The filter pipeline\n      // already handles string-or-Date comparisons elsewhere.\n      return raw;\n    }\n    if (fieldType === FieldType.Boolean) {\n      return raw === true || raw === 'true';\n    }\n    return raw;\n  }\n\n  private formatValue(v: any): string {\n    if (v == null) return '';\n    if (Array.isArray(v)) return v.join(', ');\n    if (typeof v === 'object' && v.Start !== undefined && v.End !== undefined) {\n      return `${v.Start} – ${v.End}`;\n    }\n    return String(v);\n  }\n\n  /** Approximate the SpaceCase pipe locally so chip labels match the rest of the UI. */\n  private spaceCase(s: string): string {\n    if (!s) return '';\n    return s\n      .replace(/([a-z])([A-Z])/g, '$1 $2')\n      .replace(/_/g, ' ')\n      .replace(/\\b\\w/g, c => c.toUpperCase());\n  }\n}\n","<button stop-propagation class=\"filter-trigger-button\" mat-icon-button [matMenuTriggerFor]=\"menu\" matTooltip=\"Filters\">\n  <mat-icon fontSet=\"material-icons-outlined\" class=\"filter-icon tb-icon-primary\">filter_alt</mat-icon>\n</button>\n\n<mat-menu #menu=\"matMenu\" class=\"filter-panel-menu\" xPosition=\"before\">\n  <div class=\"fp-panel\" stop-propagation (click)=\"$event.stopPropagation()\">\n    <div class=\"fp-head\">\n      <div class=\"fp-title\">\n        Active filters\n        <span class=\"fp-count\">{{ count$ | async }}</span>\n      </div>\n      <button class=\"fp-add-pill\"\n              [class.fp-add-pill-active]=\"pickerOpen()\"\n              type=\"button\"\n              (click)=\"togglePicker($event)\"\n              stop-propagation>\n        <span class=\"fp-plus-circle\">＋</span> Add filter\n      </button>\n    </div>\n\n    @if (pickerOpen()) {\n      <div class=\"fp-col-picker\" stop-propagation (click)=\"$event.stopPropagation()\">\n        <div class=\"fp-col-picker-label\">Pick a column to filter</div>\n        @for (md of filterCols$ | async; track md.key) {\n          <button class=\"fp-col-picker-item\"\n                  type=\"button\"\n                  (click)=\"addFilter(md); $event.stopPropagation()\">\n            {{ md.displayName || (md.key | spaceCase) }}\n          </button>\n        }\n      </div>\n    }\n\n    @if (chips$ | async; as chips) {\n      @if (chips.length === 0) {\n        <div class=\"fp-empty\">\n          No filters applied. Click <strong>+ Add filter</strong> to create one.\n        </div>\n      }\n      <div class=\"fp-stack\">\n        @for (chip of chips; track chip.filterId) {\n          @if (isExpanded(chip.filterId) && draft(); as d) {\n\n            <!-- ============ EXPANDED FORM ============ -->\n            <div class=\"fp-expanded\">\n              <div class=\"fp-expanded-head\">\n                <span class=\"fp-col-name\">\n                  @if (chip.isHidden) {\n                    <mat-icon class=\"fp-col-hidden-icon\">visibility_off</mat-icon>\n                  }\n                  {{ chip.columnName }}\n                </span>\n                <button class=\"fp-x-btn\"\n                        type=\"button\"\n                        (click)=\"cancel(chip)\"\n                        stop-propagation\n                        [attr.aria-label]=\"'Close form for ' + chip.columnName\">\n                  ✕\n                </button>\n              </div>\n\n              <div class=\"fp-form-grid\">\n                <span class=\"fp-form-lbl\">Operator</span>\n                <select class=\"fp-form-select\"\n                        [value]=\"d.filterType || ''\"\n                        (change)=\"draftSetOperator($any($event.target).value, chip.fieldType)\"\n                        stop-propagation>\n                  @for (op of operatorsFor(chip.fieldType); track op.value) {\n                    <option [value]=\"op.value\">{{ op.label }}</option>\n                  }\n                </select>\n\n                @if (d.filterType === FilterType.IsNull) {\n                  <!-- IsNull operator takes a boolean direction: true = match blanks,\n                       false = match non-blanks. Mirrors the legacy filter dialog's\n                       True/False mat-radio so users can pick either direction. -->\n                  <span class=\"fp-form-lbl\">Match</span>\n                  <span class=\"fp-form-toggle\">\n                    <button type=\"button\"\n                            [class.active]=\"d.value === true\"\n                            (click)=\"draftSetValue(true)\"\n                            stop-propagation>True</button>\n                    <button type=\"button\"\n                            [class.active]=\"d.value === false\"\n                            (click)=\"draftSetValue(false)\"\n                            stop-propagation>False</button>\n                  </span>\n                } @else {\n                  @if (isBetween(d.filterType)) {\n                    <!-- Between operators: render Start + End side-by-side. inputKindFor\n                         drives input type the same way as a single-value filter. -->\n                    <span class=\"fp-form-lbl\">From</span>\n                    @switch (inputKindFor(chip.fieldType)) {\n                      @case ('date') {\n                        <input class=\"fp-form-input\" type=\"date\"\n                               [value]=\"d.value?.Start || ''\"\n                               (input)=\"draftSetStart($any($event.target).value)\"\n                               stop-propagation />\n                      }\n                      @case ('datetime') {\n                        <input class=\"fp-form-input\" type=\"datetime-local\"\n                               [value]=\"d.value?.Start || ''\"\n                               (input)=\"draftSetStart($any($event.target).value)\"\n                               stop-propagation />\n                      }\n                      @case ('number') {\n                        <input class=\"fp-form-input\" type=\"number\"\n                               [value]=\"d.value?.Start ?? ''\"\n                               (input)=\"draftSetStart($any($event.target).valueAsNumber)\"\n                               stop-propagation />\n                      }\n                      @default {\n                        <input class=\"fp-form-input\" type=\"text\"\n                               [value]=\"d.value?.Start || ''\"\n                               (input)=\"draftSetStart($any($event.target).value)\"\n                               stop-propagation />\n                      }\n                    }\n                    <span class=\"fp-form-lbl\">To</span>\n                    @switch (inputKindFor(chip.fieldType)) {\n                      @case ('date') {\n                        <input class=\"fp-form-input\" type=\"date\"\n                               [value]=\"d.value?.End || ''\"\n                               (input)=\"draftSetEnd($any($event.target).value)\"\n                               stop-propagation />\n                      }\n                      @case ('datetime') {\n                        <input class=\"fp-form-input\" type=\"datetime-local\"\n                               [value]=\"d.value?.End || ''\"\n                               (input)=\"draftSetEnd($any($event.target).value)\"\n                               stop-propagation />\n                      }\n                      @case ('number') {\n                        <input class=\"fp-form-input\" type=\"number\"\n                               [value]=\"d.value?.End ?? ''\"\n                               (input)=\"draftSetEnd($any($event.target).valueAsNumber)\"\n                               stop-propagation />\n                      }\n                      @default {\n                        <input class=\"fp-form-input\" type=\"text\"\n                               [value]=\"d.value?.End || ''\"\n                               (input)=\"draftSetEnd($any($event.target).value)\"\n                               (keydown.enter)=\"apply(chip)\"\n                               stop-propagation />\n                      }\n                    }\n                  } @else {\n                    <span class=\"fp-form-lbl\">Value</span>\n                    @switch (inputKindFor(chip.fieldType)) {\n                      @case ('date') {\n                        <input class=\"fp-form-input\"\n                               type=\"date\"\n                               [value]=\"d.value || ''\"\n                               (input)=\"draftSetValue($any($event.target).value)\"\n                               stop-propagation />\n                      }\n                      @case ('datetime') {\n                        <input class=\"fp-form-input\"\n                               type=\"datetime-local\"\n                               [value]=\"d.value || ''\"\n                               (input)=\"draftSetValue($any($event.target).value)\"\n                               stop-propagation />\n                      }\n                      @case ('number') {\n                        <input class=\"fp-form-input\"\n                               type=\"number\"\n                               [value]=\"d.value === null || d.value === undefined ? '' : d.value\"\n                               (input)=\"draftSetValue($any($event.target).valueAsNumber)\"\n                               stop-propagation />\n                      }\n                      @case ('boolean') {\n                        <span class=\"fp-form-toggle\">\n                          <button type=\"button\"\n                                  [class.active]=\"d.value === true\"\n                                  (click)=\"draftSetValue(true)\"\n                                  stop-propagation>true</button>\n                          <button type=\"button\"\n                                  [class.active]=\"d.value === false\"\n                                  (click)=\"draftSetValue(false)\"\n                                  stop-propagation>false</button>\n                        </span>\n                      }\n                      @default {\n                        <input class=\"fp-form-input\"\n                               type=\"text\"\n                               [value]=\"d.value || ''\"\n                               placeholder=\"value\"\n                               (input)=\"draftSetValue($any($event.target).value)\"\n                               (keydown.enter)=\"apply(chip)\"\n                               autofocus\n                               stop-propagation />\n                      }\n                    }\n                  }\n                }\n              </div>\n\n              <div class=\"fp-form-actions\">\n                <button type=\"button\" class=\"fp-btn-ghost\" (click)=\"cancel(chip)\" stop-propagation>\n                  Cancel\n                </button>\n                <button type=\"button\" class=\"fp-btn-primary\" (click)=\"apply(chip)\" stop-propagation>\n                  Apply\n                </button>\n              </div>\n            </div>\n\n          } @else {\n\n            <!-- ============ COMPACT CHIP ============ -->\n            <div class=\"fp-chip\"\n                 [class.fp-chip-custom]=\"chip.isCustom\"\n                 [class.fp-chip-pending]=\"!chip.valueDisplay && !chip.isCustom\"\n                 (click)=\"!chip.isCustom && expand(chip)\"\n                 [attr.role]=\"chip.isCustom ? null : 'button'\"\n                 [attr.tabindex]=\"chip.isCustom ? null : 0\">\n              <span class=\"fp-col-name\">\n                @if (chip.isHidden) {\n                  <mat-icon class=\"fp-col-hidden-icon\">visibility_off</mat-icon>\n                }\n                {{ chip.columnName }}\n              </span>\n\n              <span class=\"fp-op-pill\" [class.fp-op-custom]=\"chip.isCustom\">\n                {{ chip.operatorLabel }}\n              </span>\n\n              @if (chip.isCustom) {\n                <span class=\"fp-val-readonly\">(predicate)</span>\n              } @else if (chip.valueDisplay) {\n                <span class=\"fp-val-text\">{{ chip.valueDisplay }}</span>\n              } @else {\n                <span class=\"fp-val-pending\">click to set value…</span>\n              }\n\n              <button class=\"fp-x-btn\"\n                      type=\"button\"\n                      (click)=\"$event.stopPropagation(); removeFilter(chip.filterId)\"\n                      [attr.aria-label]=\"'Remove filter on ' + chip.columnName\">\n                ✕\n              </button>\n            </div>\n          }\n        }\n      </div>\n\n      @if (chips.length > 0) {\n        <div class=\"fp-foot\">\n          <button class=\"fp-ghost-link\" type=\"button\" (click)=\"clearAll()\">Clear all</button>\n        </div>\n      }\n    }\n  </div>\n</mat-menu>\n\n","import { Component, ChangeDetectionStrategy, Input } from '@angular/core';\nimport { PartialFilter } from '../../classes/filter-info';\nimport { FilterType } from '../../enums/filterTypes';\nimport { ControlContainer, NgForm } from '@angular/forms';\n\n@Component({\n    selector: 'tb-date-filter',\n    templateUrl: './date-filter.component.html',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    styleUrls: ['../filter/filter.component.scss'],\n    viewProviders: [{ provide: ControlContainer, useExisting: NgForm }],\n    standalone: false\n})\nexport class DateFilterComponent {\n    FilterType = FilterType;\n    @Input() info!: PartialFilter;\n    @Input() CurrentFilterType!: FilterType;\n}\n","<ng-container *ngIf=\"CurrentFilterType !== FilterType.DateBetween && CurrentFilterType !== FilterType.IsNull\">\n  <mat-form-field>\n      <input matInput name=\"filterValue\" [ngModel]=\"info.filterValue\" [matDatepicker]=\"cal\"/>\n      <mat-datepicker-toggle class=\"small-button date-toggle\" matSuffix [for]=\"cal\" preventEnter></mat-datepicker-toggle>\n      <mat-datepicker #cal></mat-datepicker>\n  </mat-form-field>\n</ng-container>\n\n<ng-container *ngIf=\"CurrentFilterType === FilterType.DateBetween\">\n  <ng-container ngModelGroup=\"filterValue\">\n    <mat-form-field class=\"my-filter\" >\n      <input matInput name=\"Start\" [ngModel]=\"info.filterValue?.Start\"  placeholder=\"From\" [matDatepicker]=\"fromVal\"\n          (click)=\"fromVal.open()\"/>\n      <mat-datepicker-toggle matSuffix class=\"small-button date-toggle\" [for]=\"fromVal\" preventEnter></mat-datepicker-toggle>\n      <mat-datepicker #fromVal></mat-datepicker>\n    </mat-form-field>\n    <mat-form-field>\n      <input matInput name=\"End\" [ngModel]=\"info.filterValue?.End\"  placeholder=\"To\" [matDatepicker]=\"toVal\" (click)=\"toVal.open()\"/>\n      <mat-datepicker-toggle matSuffix class=\"small-button date-toggle\" [for]=\"toVal\" preventEnter></mat-datepicker-toggle>\n      <mat-datepicker #toVal></mat-datepicker>\n    </mat-form-field>\n  </ng-container>\n</ng-container>\n\n","// Helpers for preserving multi-line / tab-separated paste content into single-line\n// <input> elements. Browsers replace `\\n` with a space when pasting into a single-line\n// input, which destroys the structure of an Excel column paste before any framework code\n// can see it. The trick is to intercept the `paste` event, read the raw clipboard text,\n// and write it directly into the input's value via the prototype setter so frameworks\n// (Angular's ngModel, etc.) still get a synthetic input event.\n\nexport function hasPreservableDelimiters(text: string | null | undefined): text is string {\n  return !!text && /[\\n\\r\\t]/.test(text);\n}\n\nexport function injectPasteText(input: HTMLInputElement, text: string): void {\n  const start = input.selectionStart ?? input.value.length;\n  const end = input.selectionEnd ?? input.value.length;\n  const newValue = input.value.slice(0, start) + text + input.value.slice(end);\n  const setter = Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, 'value')?.set;\n  setter?.call(input, newValue);\n  input.dispatchEvent(new Event('input', { bubbles: true }));\n}\n","import { Directive, ElementRef, HostListener } from '@angular/core';\nimport { hasPreservableDelimiters, injectPasteText } from '../functions/paste-preservation';\n\n/**\n * Apply to any single-line `<input>` to keep tab and newline characters from being\n * silently replaced with spaces on paste. The pasted text is injected via the native\n * value setter so Angular's ngModel still sees the change.\n *\n * Pair with `splitCommaValue` (or any predicate that handles `[,\\t\\n\\r]+` delimiters)\n * for the multi-value semantics. Plain typed input with regular spaces is untouched.\n */\n@Directive({\n  selector: 'input[tbPreservePasteDelimiters]',\n  standalone: false,\n})\nexport class PreservePasteDelimitersDirective {\n  constructor(private host: ElementRef<HTMLInputElement>) {}\n\n  @HostListener('paste', ['$event'])\n  onPaste(e: ClipboardEvent) {\n    const text = e.clipboardData?.getData('text/plain');\n    if (!hasPreservableDelimiters(text)) return;\n    e.preventDefault();\n    // Single-line <input> sanitizes its `.value` by stripping newlines per HTML spec,\n    // so injecting raw newlines would lose them. Convert tab/newline runs to commas\n    // before injection — splitter handles commas, and the user sees the normalized\n    // value as visible confirmation of how their paste was interpreted.\n    const normalized = text.replace(/[\\t\\n\\r]+/g, ',');\n    injectPasteText(this.host.nativeElement, normalized);\n  }\n}\n","import { ChangeDetectionStrategy, Component, Input, ChangeDetectorRef } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { FilterInfo } from '../../classes/filter-info';\nimport { FieldType } from '../../interfaces/report-def';\n\n@Component({\n    selector: 'lib-in-filter',\n    templateUrl: './in-filter.component.html',\n    styleUrls: ['./in-filter.component.css'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [{\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: InFilterComponent,\n            multi: true\n        }],\n    standalone: false\n})\nexport class InFilterComponent implements ControlValueAccessor {\n  FieldType = FieldType;\n  @Input() type! : FieldType;\n  value: any[] = [undefined];\n\n  constructor(private ref: ChangeDetectorRef) {\n    this.value = [undefined];\n  }\n  writeValue(obj: any[]): void {\n    if(!obj?.length) obj  = [undefined];\n    this.value = obj;\n    this.ref.markForCheck();\n  }\n  onChange = (_: any) => { };\n\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n  onTouched = () => { };\n  registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  addInput(){\n    this.value = [...this.value, undefined];\n    this.ref.markForCheck();\n    this.onChange(this.value);\n  }\n\n  removeInput(index: number){\n    this.value = [...this.value];\n    this.value.splice(index,1);\n    this.ref.markForCheck();\n    this.onChange(this.value);\n  }\n\n  onValueChange(i:number,value: number | string){\n    this.value = [...this.value];\n    if (typeof value === 'string' && /[,\\t\\n\\r]/.test(value)) {\n      const parts = value.split(/[,\\t\\n\\r]+/).map(s => s.trim());\n      const leading = parts.slice(0, -1).filter(s => s);\n      const last = parts[parts.length - 1];\n      this.value.splice(i, 1, ...leading, last);\n    } else {\n      this.value[i] = value;\n    }\n    this.ref.markForCheck();\n    this.onChange(this.value);\n  }\n\n}\n","<div class=inline>\n    <div *ngFor=\"let val of value; index as i\">\n      <input *ngIf=\"type === FieldType.Number || type === FieldType.Currency\"\n        [ngModel]=\"val\" (ngModelChange)=\"onValueChange(i,$event)\"\n        [readonly]=\"i+1 < value.length\" type=\"number\" [ngModelOptions]=\"{standalone:true}\" [autoFocus]=\"i === value.length - 1\"/>\n      <input *ngIf=\"type !== FieldType.Number && type !== FieldType.Currency\"\n        [ngModel]=\"val\" (ngModelChange)=\"onValueChange(i,$event)\"\n        [readonly]=\"i+1 < value.length\" type=\"string\" [ngModelOptions]=\"{standalone:true}\"\n        tbPreservePasteDelimiters\n        #input [autoFocus]=\"i === value.length - 1\" />\n      <button [disabled]=\"value.length <= 1\" (click)=\"removeInput(i)\">-</button>\n      <button *ngIf=\"i === value.length - 1\" [disabled]=\"val == undefined || val === ''\" (click)=\"addInput()\">+</button>\n    </div>\n</div>\n","import { Component, Input, ChangeDetectionStrategy } from '@angular/core';\nimport { FilterType } from '../../enums/filterTypes';\nimport { ControlContainer, NgForm } from '@angular/forms';\nimport { PartialFilter } from '../../classes/filter-info';\nimport { FieldType } from '../../interfaces/report-def';\n\n\n@Component({\n    selector: 'tb-number-filter',\n    templateUrl: './number-filter.component.html',\n    styleUrls: ['./number-filter.component.css'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    viewProviders: [{ provide: ControlContainer, useExisting: NgForm }],\n    standalone: false\n})\nexport class NumberFilterComponent {\n  FilterType = FilterType; FieldType = FieldType;\n  @Input() CurrentFilterType!: FilterType;\n  @Input() info!:PartialFilter;\n}\n","@if (CurrentFilterType !== FilterType.NumberBetween && CurrentFilterType !== FilterType.IsNull && CurrentFilterType !== FilterType.In) {\n<mat-form-field class=\"my-filter\">\n  <input\n    matInput\n    name=\"filterValue\"\n    [ngModel]=\"info.filterValue\"\n    type=\"number\"\n  />\n</mat-form-field>\n}\n\n@if (CurrentFilterType === FilterType.NumberBetween) {\n<ng-container ngModelGroup=\"filterValue\">\n  <mat-form-field class=\"my-filter\">\n    <input\n      matInput\n      name=\"Start\"\n      [ngModel]=\"info.filterValue?.Start\"\n      placeholder=\"Start\"\n      type=\"number\"\n    />\n  </mat-form-field>\n  <mat-form-field class=\"my-filter\">\n    <input\n      matInput\n      name=\"End\"\n      [ngModel]=\"info.filterValue?.End\"\n      placeholder=\"End\"\n      type=\"number\"\n    />\n  </mat-form-field>\n</ng-container>\n}\n\n@if (CurrentFilterType === FilterType.In) {\n<div class=\"inline\">\n  <lib-in-filter\n    name='filterValue'\n    [type]=\"FieldType.Number\"\n    [(ngModel)]='info.filterValue'\n  ></lib-in-filter>\n</div>\n}","import { Component, ChangeDetectionStrategy, Input } from '@angular/core';\nimport { PartialFilter } from '../../classes/filter-info';\nimport { FilterType } from '../../enums/filterTypes';\nimport { ControlContainer, NgForm } from '@angular/forms';\n\n@Component({\n    selector: 'tb-date-time-filter',\n    templateUrl: './date-time-filter.component.html',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    styleUrls: ['../filter/filter.component.scss'],\n    viewProviders: [{ provide: ControlContainer, useExisting: NgForm }],\n    standalone: false\n})\nexport class DateTimeFilterComponent {\n  FilterType = FilterType;\n  @Input() info!: PartialFilter;\n  @Input() CurrentFilterType!: FilterType;\n}\n","<ng-container *ngIf=\"CurrentFilterType !== FilterType.DateTimeBetween && CurrentFilterType !== FilterType.IsNull\">\n  <input type=\"datetime-local\" [ngModel]=\"info.filterValue\" preventEnter name=\"filterValue\" class=\"op-date-time-input\"/>\n</ng-container>\n\n<ng-container *ngIf=\"CurrentFilterType === FilterType.DateTimeBetween\" ngModelGroup=\"filterValue\">\n  <input type=\"datetime-local\" [ngModel]=\"info.filterValue?.Start\" preventEnter name=\"Start\" class=\"op-date-time-input\"/>\n  <input type=\"datetime-local\" [ngModel]=\"info.filterValue?.End\" preventEnter name=\"End\" class=\"op-date-time-input\"/>\n</ng-container>","import { Component, ChangeDetectionStrategy, Input, Output, EventEmitter } from '@angular/core';\nimport { filterTypeMap, FilterInfo, UnmappedTypes, mappedFieldTypes, PartialFilter } from '../../classes/filter-info';\nimport { TableStore } from '../../classes/table-store';\nimport { FilterType } from '../../enums/filterTypes';\nimport { FieldType } from '../../interfaces/report-def';\n\n\ntype thingy = Omit<FieldType, UnmappedTypes>\n\n@Component({\n  selector: 'tb-filter',\n  templateUrl: './filter.component.html',\n  styleUrls: ['./filter.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false\n})\nexport class FilterComponent<T extends mappedFieldTypes = any> {\n  filterTypes = filterTypeMap;\n  FilterType = FilterType;\n  FieldType = FieldType;\n  @Input() filter!: PartialFilter;;\n  @Output() close = new EventEmitter();\n  currentFilterType?: FilterType;\n  /** Mirror of filter.filterValue for boolean / IsNull toggles. The hidden input\n   * keeps it in sync with the template-driven form so `form.value.filterValue`\n   * reflects the user's toggle pick on Apply. */\n  currentFilterValue: any;\n  constructor(public state: TableStore) { }\n\n  ngOnInit() {\n    this.currentFilterType = this.filter.filterType;\n    this.currentFilterValue = this.filter.filterValue;\n  }\n\n  setFilterValue(v: any) {\n    this.currentFilterValue = v;\n  }\n  onEnter(filter: FilterInfo, event: any) {\n    event.preventDefault();\n    if (filter.filterValue != null && filter.filterType) {\n      this.state.addFilter(filter);\n      this.close.emit();\n    }\n  }\n}\n","@if (filter) {\n  <div class=\"fp-dialog\" stop-propagation>\n    <form\n      #form=\"ngForm\"\n      (keydown.enter)=\"onEnter(form.value,$event)\"\n      (keydown.escape)=\"close.emit()\"\n      class=\"fp-dialog-form\"\n    >\n      <input type=\"hidden\" name=\"filterId\" [ngModel]=\"filter.filterId\" />\n      <input type=\"hidden\" name=\"key\" [ngModel]=\"filter.key\" />\n      <input type=\"hidden\" name=\"fieldType\" [ngModel]=\"filter.fieldType\" />\n\n      <div class=\"fp-expanded-head\">\n        <span class=\"fp-col-name\">{{ filter.key | spaceCase }}</span>\n        <button\n          class=\"fp-x-btn\"\n          type=\"button\"\n          (click)=\"close.emit()\"\n          matTooltip=\"Close\"\n          [attr.aria-label]=\"'Close filter for ' + (filter.key | spaceCase)\"\n        >✕</button>\n      </div>\n\n      <div class=\"fp-form-grid\">\n        <span class=\"fp-form-lbl\">Operator</span>\n        <select\n          class=\"fp-form-select\"\n          name=\"filterType\"\n          [(ngModel)]=\"currentFilterType\"\n        >\n          @for (kvp of filterTypes[filter.fieldType] | keyvalue; track kvp.key) {\n            <option [ngValue]=\"$any(kvp.value)[0]\">{{ kvp.key }}</option>\n          }\n        </select>\n\n        @switch (true) {\n          @case (filter.fieldType === FieldType.String || filter.fieldType === FieldType.Array || filter.fieldType === FieldType.Link || filter.fieldType === FieldType.Unknown || filter.fieldType === FieldType.PhoneNumber) {\n            @if (currentFilterType !== FilterType.IsNull && currentFilterType !== FilterType.In) {\n              <span class=\"fp-form-lbl\">Value</span>\n              <input\n                class=\"fp-form-input\"\n                name=\"filterValue\"\n                tbPreservePasteDelimiters\n                [ngModel]=\"filter.filterValue\"\n                placeholder=\"value\"\n              />\n            }\n            @if (currentFilterType === FilterType.In) {\n              <span class=\"fp-form-lbl\">Values</span>\n              <lib-in-filter\n                [type]=\"FieldType.String\"\n                name=\"filterValue\"\n                [(ngModel)]=\"filter.filterValue\"\n              ></lib-in-filter>\n            }\n          }\n          @case (filter.fieldType === FieldType.Number || filter.fieldType === FieldType.Currency) {\n            <span class=\"fp-form-lbl\">Value</span>\n            <tb-number-filter\n              [info]=\"filter\"\n              [CurrentFilterType]=\"currentFilterType!\"\n            ></tb-number-filter>\n          }\n          @case (filter.fieldType === FieldType.Boolean) {\n            @if (currentFilterType === FilterType.BooleanEquals) {\n              <span class=\"fp-form-lbl\">Value</span>\n              <span class=\"fp-form-toggle\">\n                <button\n                  type=\"button\"\n                  [class.active]=\"currentFilterValue === true\"\n                  (click)=\"setFilterValue(true)\"\n                  preventEnter\n                >True</button>\n                <button\n                  type=\"button\"\n                  [class.active]=\"currentFilterValue === false\"\n                  (click)=\"setFilterValue(false)\"\n                  preventEnter\n                >False</button>\n              </span>\n              <input type=\"hidden\" name=\"filterValue\" [(ngModel)]=\"currentFilterValue\" />\n            }\n          }\n          @case (filter.fieldType === FieldType.Date) {\n            <span class=\"fp-form-lbl\">Value</span>\n            <tb-date-filter\n              [info]=\"filter\"\n              [CurrentFilterType]=\"currentFilterType!\"\n            ></tb-date-filter>\n          }\n          @case (filter.fieldType === FieldType.DateTime) {\n            <span class=\"fp-form-lbl\">Value</span>\n            <tb-date-time-filter\n              [info]=\"filter\"\n              [CurrentFilterType]=\"currentFilterType!\"\n            ></tb-date-time-filter>\n          }\n          @case (filter.fieldType === FieldType.Enum) {\n            @if (currentFilterType === FilterType.In) {\n              <span class=\"fp-form-lbl\">Values</span>\n              <tb-in-list-filter\n                [key]=\"filter.key\"\n                name=\"filterValue\"\n                [(ngModel)]=\"filter.filterValue\"\n              ></tb-in-list-filter>\n            }\n          }\n        }\n\n        @if (currentFilterType === FilterType.IsNull) {\n          <span class=\"fp-form-lbl\">Match</span>\n          <span class=\"fp-form-toggle\">\n            <button\n              type=\"button\"\n              [class.active]=\"currentFilterValue === true\"\n              (click)=\"setFilterValue(true)\"\n              preventEnter\n            >True</button>\n            <button\n              type=\"button\"\n              [class.active]=\"currentFilterValue === false\"\n              (click)=\"setFilterValue(false)\"\n              preventEnter\n            >False</button>\n          </span>\n          <input type=\"hidden\" name=\"filterValue\" [(ngModel)]=\"currentFilterValue\" />\n        }\n      </div>\n\n      <div class=\"fp-form-actions\">\n        <button\n          type=\"button\"\n          class=\"fp-btn-ghost\"\n          (click)=\"close.emit()\"\n        >Cancel</button>\n        <button\n          type=\"button\"\n          class=\"fp-btn-primary\"\n          (click)=\"state.addFilter(form.value)\"\n          [disabled]=\"form.value.filterValue == null || !form.value.filterType\"\n        >Apply</button>\n      </div>\n    </form>\n  </div>\n}\n","\nimport { NgModule } from '@angular/core';\n\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatBadgeModule } from '@angular/material/badge';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatGridListModule } from '@angular/material/grid-list';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatSortModule } from '@angular/material/sort';\nimport { MatStepperModule } from '@angular/material/stepper';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatChipsModule } from '@angular/material/chips';\n\n\n@NgModule({\n  imports: [\n    MatSlideToggleModule,\n    MatTableModule,\n    MatSelectModule,\n    MatDialogModule,\n    MatDatepickerModule,\n    MatRadioModule,\n    MatButtonModule,\n    MatExpansionModule,\n    MatStepperModule,\n    MatToolbarModule,\n    MatTooltipModule,\n    MatNativeDateModule,\n    MatProgressSpinnerModule,\n    MatGridListModule,\n    MatCardModule,\n    MatSidenavModule,\n    MatTabsModule,\n    MatInputModule,\n    MatTabsModule,\n    MatCheckboxModule,\n    MatMenuModule,\n    MatIconModule,\n    MatBadgeModule,\n    MatSortModule,\n    MatAutocompleteModule,\n    MatPaginatorModule,\n    MatChipsModule,\n    MatDialogModule,\n  ],\n    exports: [\n      MatSlideToggleModule,\n      MatTableModule,\n      MatSelectModule,\n      MatDialogModule,\n      MatDatepickerModule,\n      MatRadioModule,\n      MatButtonModule,\n      MatExpansionModule,\n      MatStepperModule,\n      MatToolbarModule,\n      MatTooltipModule,\n      MatNativeDateModule,\n      MatProgressSpinnerModule,\n      MatGridListModule,\n      MatCardModule,\n      MatSidenavModule,\n      MatTabsModule,\n      MatInputModule,\n      MatTabsModule,\n      MatCheckboxModule,\n      MatMenuModule,\n      MatIconModule,\n      MatBadgeModule,\n      MatSortModule,\n      MatAutocompleteModule,\n      MatPaginatorModule,\n      MatChipsModule,\n      MatDialogModule,\n    ]\n\n})\nexport class MaterialModule { }\n","import { Directive, OnInit, OnDestroy } from '@angular/core';\nimport { MatSort, Sort } from '@angular/material/sort';\nimport { map } from 'rxjs/operators';\nimport { TableStore } from '../classes/table-store';\n\n@Directive({\n    selector: '[multiSort]',\n    exportAs: 'multiSort',\n    inputs: ['disabled: matSortDisabled'],\n    providers: [\n        { provide: MatSort, useExisting: MultiSortDirective }\n    ],\n    standalone: false\n})\nexport class MultiSortDirective extends MatSort implements OnInit, OnDestroy {\n  rules: Sort[] = [];\n\n  constructor(private state: TableStore) {\n    super();\n    this.state.setSort(this.sortChange.pipe(map(sc => ({ key: sc.active, direction: sc.direction }))));\n    this.state.on(\n      this.state.sorted$,\n      rules => {\n        this.rules = rules;\n\n        if (this.active && rules.length === 0) {\n          this.active = '';\n          this.direction = '';\n          this.sortChange.emit({ active: '', direction: '' });\n        }\n\n        if(rules.length > 0 && (this.active !== rules[0].active || this.direction !== rules[0].direction)) {\n          this.active = rules[0].active;\n          this.direction = rules[0].direction;\n          this.sortChange.emit(rules[0]);\n        }\n\n      }\n    );\n  }\n\n}\n","import { Directive, Input, Optional, Predicate, SimpleChanges } from \"@angular/core\";\nimport { BehaviorSubject, Observable, ReplaySubject, Subject, takeUntil, tap } from \"rxjs\";\nimport { CustomFilter, FilterInfo } from \"../classes/filter-info\";\nimport { v4 as uuid } from 'uuid';\nimport { FilterType } from \"../enums/filterTypes\";\nimport { MatSlideToggle } from \"@angular/material/slide-toggle\";\nimport { MatRadioButton } from \"@angular/material/radio\";\nimport { MatButtonToggle } from '@angular/material/button-toggle';\nimport { MatCheckbox } from \"@angular/material/checkbox\";\nimport { FieldType } from \"../interfaces/report-def\";\nimport { NgControl } from \"@angular/forms\";\nimport { ComponentStore } from \"@ngrx/component-store\";\nimport { TableWrapperDirective } from \"./table-wrapper.directive\";\nimport { MatOption } from \"@angular/material/core\";\n\n\nconst inputs = [\n  'predicate: tbCustomFilter',\n  'filterId: filterId',\n];\n\n\n@Directive({\n    selector: ' ',\n    standalone: false\n})\nexport abstract class TableCustomFilterDirective<T = any> {\n  abstract filter$ : Observable<CustomFilter>;\n  filterId!: string;\n  savable = false;\n  used = false;\n  abstract active: boolean;\n  abstract reset(): void;\n}\n\n\n\n\n@Directive({\n    selector: \"[tbFilter]\",\n    standalone: false\n}) export class TableFilterDirective extends ComponentStore<FilterInfo> {\n\n  constructor(@Optional() protected  model: NgControl, @Optional() wrapper: TableWrapperDirective) {\n    super();\n    if(wrapper) {\n      wrapper.register(this);\n    }\n    if(model) {\n      this.effect( () => {\n        return model.valueChanges!.pipe(\n          tap( val => {\n            this.filterValue = val;\n            this.update();\n          })\n        )\n      })\n    }\n  }\n  reset() {\n    this.filterValue = undefined;\n  }\n  filter$ = this.state$;\n\n  @Input() filterType!: FilterType;\n  @Input() key!: string;\n  @Input() fieldType!: FieldType;\n  @Input() filterId!: string;\n  @Input() active = true;\n  @Input() filterValue: any = null;\n\n  setFilterValue(value: any) {\n    if(this.model) {\n      setTimeout(() => {\n        this.model.reset(value);\n      }, 0);\n    } else {\n      this.filterValue = value;\n    }\n  }\n\n\n  used = false;\n  savable = false;\n  ready = false;\n\n  _userActive = true;\n  ngOnChanges(changes: SimpleChanges ) {\n    this.update();\n  }\n\n  ngOnInit() {\n    if(!this.filterId) {\n      this.filterId = uuid();\n    } else {\n      this.savable = true;\n    }\n    this.ready = true;\n    this.update();\n  }\n\n  protected setFilter(filter: FilterInfo ) {\n    this.setState(filter);\n  }\n\n  update() {\n    if (this.ready) {\n      this.setFilter(\n        {\n          filterId: this.filterId,\n          key: this.key,\n          filterType: this.filterType,\n          fieldType: this.fieldType,\n          filterValue: this.filterValue,\n          active: this.active && this.filterValue !== undefined,\n          _isExternalyManaged: true,\n        }\n      );\n\n    }\n  }\n}\n\n@Directive({\n    selector: '[tbFilterStringContains]',\n    providers: [{ provide: TableFilterDirective, useExisting: TableFilterStringContainsDirective }],\n    inputs: [\n        'key:tbFilterStringContains',\n        'filterValue:filterValue',\n        'filterId: filterId',\n        'active: active',\n    ],\n    standalone: false\n}) export class TableFilterStringContainsDirective extends TableFilterDirective {\n  constructor(@Optional()  model: NgControl, @Optional() wrapper: TableWrapperDirective) {\n    super(model,wrapper);\n    this.filterType = FilterType.StringContains;\n    this.fieldType = FieldType.String;\n  }\n\n  override reset() {\n    if(this.model) {\n      this.model.reset();\n    }\n    super.reset();\n  }\n\n  override setFilter(filter: FilterInfo) {\n    filter.active = filter.filterValue && this._userActive;\n    super.setFilter(filter);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if(changes['active']) {\n      this._userActive = changes['active'].currentValue;\n    }\n    super.ngOnChanges(changes);\n  }\n}\n\n@Directive({\n    selector: \"[tbCustomFilter]\",\n    standalone: false\n})\nexport abstract class TableCustomFilterDirectiveBase<T = any> extends TableCustomFilterDirective<T> {\n\n  filter$! : Subject<CustomFilter>;\n  filter!: CustomFilter;\n  @Input() filterId! : string;\n\n  _predicate!: Predicate<T>;\n  @Input('tbCustomFilter') set predicate( val: Predicate<T> ) {\n    this._predicate = val;\n    this.update({predicate:val});\n  }\n\n  _active: boolean = false;\n  ready = false;\n\n  update(val: Partial<CustomFilter> ) {\n    if(this.ready) {\n      this.filter = {...this.filter,...val};\n      this.filter$.next(this.filter);\n    }\n  }\n\n  @Input() set active(val: boolean) {\n    if(this._active !== val) {\n      this._active = val;\n      this.update({active:val});\n    }\n  }\n  get active(): boolean {\n    return this._active;\n  }\n\n  ngOnInit() {\n    if(!this.filterId) {\n      this.filterId = uuid();\n    } else {\n      this.savable = true;\n    }\n\n    this.filter = {\n      filterType: FilterType.Custom,\n      filterId: this.filterId,\n      active: this._active,\n      predicate: this._predicate,\n    };\n    this.ready = true;\n    this.filter$ = new BehaviorSubject(this.filter);\n  }\n}\n\n@Directive()\nexport abstract class TbSelectedFilterDirective<T = any>  extends TableCustomFilterDirectiveBase<T> {\n\n\n  protected constructor(private change: Observable<any>, private isActive: () => boolean, @Optional() wrapper: TableWrapperDirective) {\n    super();\n    if(wrapper) {\n      wrapper.register(this);\n    }\n  }\n\n  reset() {\n    this.active = false;\n  }\n\n  destroySubject$ = new ReplaySubject<void>(1);\n  ngOnDestroy() {\n    this.destroySubject$.next();\n  }\n\n  ngOnInit(): void {\n    this._active = this.isActive();\n    super.ngOnInit();\n    this.change.pipe(takeUntil(this.destroySubject$)).subscribe( () => {\n      this.active = this.isActive();\n    });\n  }\n}\n\n// Checkbox\n@Directive({\n    selector: 'mat-checkbox[tbCustomFilter]',\n    inputs: [\n        ...inputs\n    ],\n    providers: [{ provide: TableCustomFilterDirective, useExisting: MatCheckboxTbFilterDirective }],\n    standalone: false\n})\nexport class MatCheckboxTbFilterDirective extends TbSelectedFilterDirective {\n\n  override set active(val: boolean) {\n    this.matCheckbox.checked = val;\n    super.active = val;\n  }\n  constructor(private matCheckbox: MatCheckbox, @Optional() wrapper: TableWrapperDirective) {\n    super(matCheckbox.change, () => matCheckbox.checked, wrapper);\n  }\n}\n\n\n@Directive({\n    selector: 'mat-slide-toggle[tbCustomFilter]',\n    inputs: [\n        ...inputs\n    ],\n    providers: [{ provide: TableCustomFilterDirective, useExisting: MatSlideToggleTbFilterDirective }],\n    standalone: false\n})\nexport class MatSlideToggleTbFilterDirective<T = any> extends TbSelectedFilterDirective<T> {\n  override set active(val: boolean) {\n    this.matSlideToggle.checked = val;\n    super.active = val;\n  }\n  constructor(private matSlideToggle: MatSlideToggle, @Optional() wrapper: TableWrapperDirective) {\n    super(matSlideToggle.change, () => matSlideToggle.checked,wrapper);\n  }\n\n  ngOnInit(): void {\n    super.ngOnInit();\n  }\n}\n\n// Radio button\n@Directive({\n    selector: 'mat-radio-button[tbCustomFilter]',\n    inputs: ['predicate: tbCustomFilter'],\n    providers: [{ provide: TableCustomFilterDirective, useExisting: MatRadioButtonTbFilterDirective }],\n    standalone: false\n})\nexport class MatRadioButtonTbFilterDirective extends TbSelectedFilterDirective {\n\n  override set active(val: boolean) {\n    this.matRadioButton.checked = val;\n    super.active = val;\n  }\n  constructor(private matRadioButton: MatRadioButton, @Optional() wrapper: TableWrapperDirective) {\n    super(matRadioButton.change, () => matRadioButton.checked, wrapper);\n  }\n\n  ngOnInit(): void {\n    super.ngOnInit();\n  }\n}\n\n// Option (select)\n@Directive({\n    selector: 'mat-option[tbCustomFilter]',\n    inputs: [\n        ...inputs\n    ],\n    providers: [{ provide: TableCustomFilterDirective, useExisting: MatOptionTbFilterDirective }],\n    standalone: false\n})\nexport class MatOptionTbFilterDirective extends TbSelectedFilterDirective {\n\n  override set active(val: boolean) {\n    if(val) {\n      this.matOption.select();\n    } else {\n      this.matOption.deselect();\n    }\n    super.active = val;\n  }\n  constructor(private matOption: MatOption, @Optional() wrapper: TableWrapperDirective) {\n    super( matOption.onSelectionChange.pipe(tap( d => {\n      if(!matOption.value) {\n        matOption.value = uuid();\n      }\n    }\n\n    )), () => matOption.selected, wrapper);\n  }\n\n  ngOnInit(): void {\n    super.ngOnInit();\n  }\n}\n\n// Button toggle\n@Directive({\n    selector: 'mat-button-toggle[tbCustomFilter]',\n    inputs: [\n        ...inputs\n    ],\n    providers: [{ provide: TableCustomFilterDirective, useExisting: MatButtonToggleFilterDirective }],\n    standalone: false\n})\nexport class MatButtonToggleFilterDirective extends TbSelectedFilterDirective {\n  override set active(val: boolean) {\n    this.matButtonToggle.checked = val;\n    super.active = val;\n  }\n  constructor(private matButtonToggle: MatButtonToggle, @Optional() wrapper: TableWrapperDirective) {\n    super(matButtonToggle.change, () => matButtonToggle.checked,wrapper);\n  }\n\n  ngOnInit(): void {\n    super.ngOnInit();\n  }\n}\n","import { ContentChildren, Directive, QueryList } from \"@angular/core\";\nimport { TableCustomFilterDirective, TableFilterDirective } from \"./tb-filter.directive\";\n\n@Directive({\n    selector: '[tbWrapper]',\n    standalone: false\n})\nexport class TableWrapperDirective {\n  @ContentChildren(TableCustomFilterDirective, {descendants: true}) customFilters!: QueryList<TableCustomFilterDirective>;\n  @ContentChildren(TableFilterDirective, {descendants: true}) filters!: QueryList<TableFilterDirective>;\n\n  registerations : (TableCustomFilterDirective | TableFilterDirective) [] = [];\n\n  register(filter: TableCustomFilterDirective | TableFilterDirective) {\n    this.registerations.push(filter);\n  }\n}\n","import { Observable, combineLatest, of } from 'rxjs';\nimport { map, shareReplay } from 'rxjs/operators';\nimport { combineArrays } from '../../rxjs/rxjs-operators';\nimport { createFilterFunc, CustomFilter, FilterInfo } from './filter-info';\n\nexport class DataFilter<T = any> {\n\n  constructor(private filters$: Observable< Array< (val: any) => boolean>> ) {\n  }\n\n  filter(data: any[], filters: Array<(val: any) => boolean> ): any[] {\n    return data.filter( r => filters.every( fltr => fltr(r)) );\n  }\n\n  filterData(data$: Observable<T[]>) {\n    return combineLatest([data$, this.filters$]).pipe(\n      map(([data, filters]) => this.filter(data, filters)),\n      shareReplay({bufferSize: 1, refCount: true})\n    );\n  }\n\n  appendFilters(filters$: Observable<(FilterInfo | CustomFilter )[]>) : DataFilter {\n    return new DataFilter(combineArrays([\n      this.filters$ ?? of([]),\n      filters$.pipe(map(fltrs => fltrs\n          // we only want to remove it if it was specifically set to false\n          // as apposed to falsy\n          .filter( f => f.active !== false )\n          .map(filter => createFilterFunc(filter))))\n    ]));\n  }\n}\n","export function downloadData(data: string, filename: string, mimeType: string) {\n  const url = URL.createObjectURL(new Blob([data], { type: mimeType }));\n  const downloadLink = document.createElement('a');\n  downloadLink.download = filename;\n  downloadLink.href = url;\n  downloadLink.style.display = 'none';\n  document.body.appendChild(downloadLink);\n  downloadLink.click();\n  document.body.removeChild(downloadLink);\n  URL.revokeObjectURL(url);\n}\n","import { DatePipe } from '@angular/common';\nimport { Inject, Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { first, map  } from 'rxjs/operators';\nimport { combineLatest} from 'rxjs';\nimport { orderMetaData, TableStore } from '../classes/table-store';\nimport { TableBuilderConfig, TableBuilderConfigToken } from '../classes/TableBuilderConfig';\nimport { downloadData } from '../functions/download-data';\nimport { ArrayAdditional, ArrayStyle, FieldType, MetaData } from '../interfaces/report-def';\nimport { TableState } from '../classes/TableState';\nimport { isPipe } from './transform-creator';\nimport { get } from 'lodash';\n\n@Injectable()\nexport class ExportToCsvService<T> {\n  constructor(\n    public state: TableStore,\n    @Inject(TableBuilderConfigToken) private config: TableBuilderConfig,\n    private datePipe: DatePipe,\n  ){}\n\n  exportToCsv = (data: Observable<T[]>) => {\n    const exportableFields$ = this.state.state$.pipe(\n      map(mapExportableFields)\n    );\n\n    combineLatest([data,exportableFields$]).pipe(\n      first(),\n      map(([data,fields]) => this.csvData(data,fields)),\n    ).subscribe(csv => downloadData(csv,'export.csv','text/csv') );\n  }\n\n  csvData = (data:Array<T>, metaData: MetaData<T>[]) => {\n    const res = data.map(row => metaData.map(meta => this.metaToField(meta, row)).join(','));\n    res.unshift(metaData.map(meta => meta.displayName || meta.key).join(','));\n    return res.join('\\n');\n  }\n\n  metaToField = (meta: MetaData<T>, row: T) => {\n    let val: any = get( row,meta.key);\n    if (val == null && !meta.transform) return val\n    if(meta.transform && meta.fieldType !== FieldType.Expression){\n      const transform = meta.transform as any;\n      return  isPipe(transform) ? transform.transform(val) : transform(val);\n    }\n    switch (meta.fieldType) {\n      case FieldType.Date:\n        const dateFormat = meta.additional?.export?.dateFormat || this.config?.export?.dateFormat || meta.additional?.dateFormat;\n        val = this.transform(val, dateFormat);\n        break;\n      case FieldType.DateTime:\n        const dateTimeFormat = meta.additional?.export?.dateTimeFormat || this.config?.export?.dateTimeFormat || meta.additional?.dateTimeOptions?.format;\n        val = this.transform(val, dateTimeFormat);\n        break;\n      case FieldType.String:\n        const prepend: string = meta.additional?.export?.prepend || this.config?.export?.prepend || '';\n        val = prepend + val;\n        break;\n      case FieldType.Array:\n        const additional = meta.additional as ArrayAdditional;\n        val = (val as Array<string>).slice(0,additional.limit).join(additional.arrayStyle === ArrayStyle.NewLine ? '\\n' : ', ');\n        break;\n      case FieldType.Expression:\n        val = (meta.transform as any)(row);\n        break;\n    }\n    if (typeof val === 'string' && (val.includes(',') || val.includes('\"') || val.includes('\\n'))) {\n      val = val.replaceAll('\"', '\"\"');\n      val = '\"' + val + '\"';\n    }\n    return val;\n  }\n\n  private transform(val: any, dateFormat: any) {\n    if (this.config.transformers && this.config.transformers[FieldType.Date]) {\n      return this.config.transformers[FieldType.Date]!(val);\n    }\n    return this.datePipe.transform(val, dateFormat);\n  }\n}\n\nexport const removeFromMetaData = (state: TableState, keysToRemove: string[]) =>\n\n  orderMetaData(state)\n  .filter( meta => !keysToRemove.includes(meta.key));\n\n\nexport const nonExportableFields = (state: TableState) => Object.values( state.metaData)\n  .filter(md => md.noExport )\n  .map( md => md.key );\n\nexport const mapExportableFields = (state: TableState) => {\n  const fieldsToRemove = nonExportableFields(state)\n    .concat(state.hiddenKeys);\n   return removeFromMetaData(state, fieldsToRemove);\n}\n","import { ArrayStyle } from '../interfaces/report-def';\n\nexport interface DefaultSettings {\n  dateFormat?: string;\n  dateTimeFormat?: string;\n}\n\nexport const ArrayDefaults = {\n  limit : 3,\n  arrayStyle : ArrayStyle.CommaDelimited\n}","import { createSelector } from '@ngrx/store';\nimport { GlobalStorageState, Profile } from './reducer';\n\nexport const selectGlobalStorageState = (state: {globalStorageState: GlobalStorageState}) => state.globalStorageState;\n\nexport const selectGlobalProfileKeys = createSelector(selectGlobalStorageState, state => state.globalProfileKeys )\n\nexport const selectCurrentGlobalProfile = createSelector(selectGlobalStorageState, state => state.globalProfiles[state.currentGlobalProfile]);\n\nexport const selectLocalProfile = <T>(key:string) =>  createSelector(selectGlobalStorageState, state => state.localProfiles[key]);\n\nexport const selectLocalProfileState = <T>(key:string) =>  createSelector(\n  selectLocalProfile(key),\n  (profile: Profile<T>) => {\n    if(profile) {\n      return  profile.states[profile.current ?? profile.default];\n    }\n    return null;\n});\n\nexport const selectLocalProfileCurrentKey = <T>(key:string) =>  createSelector(\n  selectLocalProfile(key),\n  (profile: Profile<T>) => {\n    if(profile) {\n      return  profile.current ?? profile.default;\n    }\n    return 'default';\n});\n\nexport const selectLocalProfileKeys = <T>(key:string) =>  createSelector(\n  selectLocalProfile(key),\n  (profile: Profile<T>) => {\n    if(profile) {\n      return  Object.keys(profile.states).filter( key => key);\n    }\n    return null;\n});\n","import { createAction, props } from '@ngrx/store';\r\n\r\nexport const setLocalProfile = createAction('[State Storage] Set Local Profile', props<{key: string, value: any, persist?: boolean}>());\r\n\r\nexport const setLocalProfilesState = createAction('[State Storage] Set Local Profiles Current', props<{key: string, current: string}>());\r\n\r\nexport const deleteLocalProfilesState = createAction('[State Storage] Delete Local Profiles Current', props<{key: string, stateKey: string}>());\r\n","import { get } from \"lodash\";\nimport { MetaData } from \"../interfaces/report-def\";\n\nexport function createLinkCreator<T>(metaData: MetaData<T>){\n  const target = metaData.additional?.link?.target || metaData.additional?.target || '_blank';\n  const useRouterLink = metaData.additional?.link?.useRouterLink || metaData.additional?.useRouterLink;\n  const hasRoute = !!metaData.additional?.link?.interpolatedRoute;\n  const routerLinkOptions = useRouterLink ? {\n    queryParams: (element) => metaData.additional!.link!.routerLinkOptions?.queryParams?.reduce((map, [key, value]) => {\n      map[key] = parseInterpolated(value, element);\n      return map;\n    }, {}) ?? null,\n    fragment: metaData.additional!.link?.routerLinkOptions?.fragment,\n    preserveFragment: metaData.additional!.link!.routerLinkOptions?.preserveFragment ?? false,\n    queryParamsHandling: metaData.additional!.link!.routerLinkOptions?.queryParamsHandling ?? '',\n  }\n  : undefined;\n\n\n\n  if (hasRoute) {\n    return ({\n      link: (element: T) => parseInterpolated(metaData.additional!.link!.interpolatedRoute!, element),\n      target,\n      useRouterLink,\n      routerLinkOptions,\n    });\n  } else {\n    const slashIfNeeded = !metaData.additional?.link?.base?.endsWith('/') ? '/' : '';\n    const base = metaData.additional!.link?.base || metaData.additional!.base;\n    const getKey = key(metaData);\n    return ({\n      link: (element: T) => `${base}${slashIfNeeded}${getKey(element)}`,\n      target,\n      useRouterLink,\n      routerLinkOptions,\n    });\n  }\n}\n\nconst key = (metaData : MetaData) => metaData.additional!.link?.urlKey ? \n  (element:any) => get(element, (metaData.additional!.link!.urlKey as string)) :\n    metaData.additional!.urlKey ?\n  (element:any) => get(element, (metaData.additional!.urlKey as string)) :\n  (element:any) => get(element, metaData.key);\n\nconst parseInterpolated = ( interpolatedString: string, element: any ) =>\n  interpolatedString.replace(/{([^}]+)}/g, (_, key) => get(element ,key));","import { Component, ChangeDetectionStrategy } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { CdkDragDrop } from '@angular/cdk/drag-drop';\nimport { TableStore, orderViewableMetaData } from '../../classes/table-store';\nimport { FieldType, MetaData } from '../../interfaces/report-def';\nimport { spaceCase } from '../../../utilities/pipes/space-case.pipes';\n\ninterface VisibleRow {\n  key: string;\n  displayName: string;\n  sortDirection: 'asc' | 'desc' | null;\n  sortPriority: number | null;\n}\n\ninterface HiddenRow {\n  key: string;\n  displayName: string;\n}\n\n@Component({\n  selector: 'tb-columns-panel',\n  templateUrl: './columns-panel.component.html',\n  styleUrls: ['./columns-panel.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class ColumnsPanelComponent {\n  visibleRows$: Observable<VisibleRow[]>;\n  hiddenRows$: Observable<HiddenRow[]>;\n  visibleCount$: Observable<number>;\n  totalCount$: Observable<number>;\n\n  constructor(private store: TableStore) {\n    this.visibleRows$ = this.store.state$.pipe(\n      map(state => {\n        const sorted = state.sorted;\n        return orderViewableMetaData(state)\n          .filter(md => !state.hiddenKeys.includes(md.key))\n          .map<VisibleRow>(md => {\n            const sortIdx = sorted.findIndex(s => s.active === md.key);\n            return {\n              key: md.key,\n              displayName: md.displayName || spaceCase(md.key),\n              sortDirection: sortIdx === -1 ? null : (sorted[sortIdx].direction as 'asc' | 'desc'),\n              sortPriority: sortIdx === -1 ? null : sortIdx + 1,\n            };\n          });\n      })\n    );\n\n    this.hiddenRows$ = this.store.state$.pipe(\n      map(state =>\n        Object.values(state.metaData)\n          .filter((md: MetaData) =>\n            state.hiddenKeys.includes(md.key) &&\n            md.fieldType !== FieldType.Hidden\n          )\n          .map<HiddenRow>(md => ({\n            key: md.key,\n            displayName: md.displayName || spaceCase(md.key),\n          }))\n      )\n    );\n\n    this.visibleCount$ = this.visibleRows$.pipe(map(rows => rows.length));\n    this.totalCount$ = this.store.state$.pipe(\n      map(state =>\n        Object.values(state.metaData).filter((md: MetaData) => md.fieldType !== FieldType.Hidden).length\n      )\n    );\n  }\n\n  cycleSort(key: string, ev: Event) {\n    ev.stopPropagation();\n    this.store.cycleColumnSort(key);\n  }\n\n  onVisibleDrop(event: CdkDragDrop<VisibleRow[]>) {\n    if (event.previousContainer === event.container) {\n      // reorder within Visible — indices are in visible-rows-only space,\n      // so use reorderVisibleColumn (translates to userDefined.order correctly,\n      // leaving hidden columns' slots untouched).\n      this.store.reorderVisibleColumn({\n        previousVisibleIndex: event.previousIndex,\n        currentVisibleIndex: event.currentIndex,\n      });\n    } else {\n      // dropped from Hidden into Visible at a position\n      const hiddenRow = event.item.data as HiddenRow;\n      this.store.showColumnAt({ key: hiddenRow.key, newOrder: event.currentIndex });\n    }\n  }\n\n  onHiddenDrop(event: CdkDragDrop<HiddenRow[]>) {\n    if (event.previousContainer === event.container) {\n      // reorder within Hidden — no-op for now (hidden order isn't persisted)\n      return;\n    }\n    // dropped from Visible into Hidden\n    const visibleRow = event.item.data as VisibleRow;\n    this.store.hideColumn(visibleRow.key);\n  }\n\n  trackByKey(_: number, row: { key: string }) {\n    return row.key;\n  }\n}\n","<button stop-propagation class=\"trigger-button\" mat-icon-button [matMenuTriggerFor]=\"menu\" matTooltip=\"Columns\">\n  <mat-icon class=\"tb-icon-primary\">tune</mat-icon>\n</button>\n<mat-menu #menu=\"matMenu\" class=\"columns-panel-menu\" xPosition=\"before\">\n  <div class=\"cp-panel\" stop-propagation (click)=\"$event.stopPropagation()\">\n    <div class=\"cp-head\">\n      <div class=\"cp-title\">\n        Columns\n        <span class=\"cp-count\">{{ (visibleCount$ | async) }} / {{ (totalCount$ | async) }}</span>\n      </div>\n    </div>\n\n    <div class=\"cp-zones\">\n      <!-- HIDDEN ZONE -->\n      <div class=\"cp-zone\"\n           cdkDropList\n           #hiddenList=\"cdkDropList\"\n           [cdkDropListData]=\"(hiddenRows$ | async) || []\"\n           [cdkDropListConnectedTo]=\"[visibleList]\"\n           (cdkDropListDropped)=\"onHiddenDrop($event)\">\n        <div class=\"cp-zone-label\">\n          Hidden\n          <span class=\"cp-zone-count\">{{ ((hiddenRows$ | async) || []).length }}</span>\n        </div>\n        @if (hiddenRows$ | async; as hiddenRows) {\n          @if (hiddenRows.length === 0) {\n            <div class=\"cp-empty\">All visible</div>\n          }\n          @for (row of hiddenRows; track row.key) {\n            <div class=\"cp-tag cp-tag-hidden\"\n                 cdkDrag\n                 [cdkDragData]=\"row\">\n              <span class=\"cp-grip\">⋮⋮</span>\n              <span class=\"cp-name\">{{ row.displayName }}</span>\n            </div>\n          }\n        }\n      </div>\n\n      <!-- VISIBLE ZONE -->\n      <div class=\"cp-zone cp-zone-visible\"\n           cdkDropList\n           #visibleList=\"cdkDropList\"\n           [cdkDropListData]=\"(visibleRows$ | async) || []\"\n           [cdkDropListConnectedTo]=\"[hiddenList]\"\n           (cdkDropListDropped)=\"onVisibleDrop($event)\">\n        <div class=\"cp-zone-label\">\n          Visible\n          <span class=\"cp-zone-count\">{{ ((visibleRows$ | async) || []).length }}</span>\n        </div>\n        @if (visibleRows$ | async; as visibleRows) {\n          @if (visibleRows.length === 0) {\n            <div class=\"cp-empty\">No columns visible</div>\n          }\n          @for (row of visibleRows; track row.key) {\n            <div class=\"cp-row\" cdkDrag [cdkDragData]=\"row\">\n              <span class=\"cp-grip\">⋮⋮</span>\n              <span class=\"cp-priority\"\n                    [class.cp-priority-empty]=\"row.sortPriority === null\">\n                {{ row.sortPriority }}\n              </span>\n              <span class=\"cp-col-name\">{{ row.displayName }}</span>\n              <button class=\"cp-dir-pill\"\n                      [class.cp-dir-none]=\"row.sortDirection === null\"\n                      [class.cp-dir-asc]=\"row.sortDirection === 'asc'\"\n                      [class.cp-dir-desc]=\"row.sortDirection === 'desc'\"\n                      (click)=\"cycleSort(row.key, $event)\"\n                      type=\"button\">\n                @switch (row.sortDirection) {\n                  @case ('asc') { ↑ asc }\n                  @case ('desc') { ↓ desc }\n                  @default { sort }\n                }\n              </button>\n            </div>\n          }\n        }\n      </div>\n    </div>\n\n    <div class=\"cp-foot\">\n      Drag between zones to show/hide. Drag within Visible to reorder. Click direction to cycle sort.\n    </div>\n  </div>\n</mat-menu>\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { TableStore } from '../classes/table-store';\r\nimport { spaceCase } from '../../utilities/pipes/space-case.pipes';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\n@Pipe({\n    name: 'keyDisplay',\n    standalone: false\n})\r\nexport class KeyDisplayPipe implements PipeTransform {\r\n  constructor( public tableState: TableStore) {\r\n  }\r\n  transform(key: string): Observable<string> {\r\n    return this.tableState.getMetaData$(key).pipe(\r\n      map( metaData => metaData.displayName || spaceCase(key))\r\n    );\r\n  }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TableStore } from '../classes/table-store';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { FieldType } from '../interfaces/report-def';\nimport { DatePipe } from '@angular/common';\nimport { FilterType } from '../enums/filterTypes';\nimport { spaceCase } from '../../utilities/pipes/space-case.pipes';\nimport { DateTimeFilterFuncs } from '../functions/date-filter-function';\n\n\n@Pipe({\n    name: 'formatFilterValue',\n    standalone: false\n})\nexport class FormatFilterValuePipe implements PipeTransform {\n  constructor( public tableState: TableStore , private datePipe: DatePipe) {\n  }\n  transform(value: any, key: string, filterType: FilterType): Observable<string> {\n    return this.tableState.getMetaData$(key).pipe(\n      map( md => {\n        if(filterType === FilterType.IsNull) {\n          return '';\n        }\n        if(value && (filterType === FilterType.In )){\n          if(md.fieldType === FieldType.Enum) {\n            return value.map( (v: any) => spaceCase(md.additional!.enumMap![v])).join(', ') ?? value;\n          }\n          return value.join(', ') ?? value;\n        }\n        if(filterType === FilterType.NumberBetween){\n          return value.Start + ' - ' + value.End;\n        }\n        if(md.fieldType === FieldType.Date){\n          return this.datePipe.transform(value, 'MM/dd/yy');\n        }\n        if(md.fieldType === FieldType.DateTime){\n          return !!DateTimeFilterFuncs[filterType] ? this.datePipe.transform(value, 'short') : this.datePipe.transform(value, 'MM/dd/yy');\n        }\n        if (Array.isArray(value)) {\n          return value.join(', ');\n        }\n        return value\n      })\n    );\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { splitCommaValue } from '../functions/split-comma-value';\n\n@Pipe({\n    name: 'asFilterPills',\n    standalone: false\n})\nexport class AsFilterPillsPipe implements PipeTransform {\n  transform(value: any): string[] | null {\n    if (Array.isArray(value)) {\n      return value.length > 1 ? value : null;\n    }\n    const split = splitCommaValue(value);\n    return Array.isArray(split) && split.length > 1 ? split : null;\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { FilterType } from '../enums/filterTypes';\n\n@Pipe({\n    name: 'formatFilterType',\n    standalone: false\n})\nexport class FormatFilterTypePipe implements PipeTransform {\n  transform(filterType: FilterType, value: any){\n    if(filterType === FilterType.IsNull){\n      return value ? filterType : 'Is Not Blank'\n    }\n    return filterType;\n  }\n}","import { Component } from '@angular/core';\nimport { TableStore } from '../../../classes/table-store';\nimport { CustomFilter, FilterInfo, isFilterInfo } from '../../../classes/filter-info';\nimport { map } from 'rxjs/operators';\nimport { WrapperFilterStore } from '../table-wrapper-filter-store';\nimport { Observable } from 'rxjs';\n\n@Component({\n    selector: 'lib-filter-list',\n    templateUrl: './filter-list.component.html',\n    styleUrls: ['../gen-filter-displayer/gen-filter-displayer.component.css'],\n    standalone: false\n})\nexport class FilterChipsComponent {\n  isArray = Array.isArray;\n\n  constructor( public tableState: TableStore, private filterStore : WrapperFilterStore) {\n  }\n\n    filters$: Observable<FilterInfo<any>[]> = this.tableState.filters$.pipe(\n      map( filters => Object.values(filters)\n                        .filter(isFilterInfo)\n                        .filter( f => !f._isExternalyManaged)\n      )\n    );\n\n    deleteByIndex(index: number) {\n      this.filterStore.deleteByIndex(index);\n    }\n\n    addFilter(filter:FilterInfo<any>){\n      this.filterStore.addFilter(filter);\n    }\n\n    clearAll() {\n        this.filterStore.clearAll();\n    }\n\n    currentFilters$ = this.filterStore.currentFilters$;\n}\n","<div class=\"fl-row\" *ngrxLet=\"currentFilters$ as currentFilters\">\n\n  @if (currentFilters.length > 0) {\n    <button class=\"cancel-button\" mat-icon-button (click)=\"clearAll()\" matTooltip=\"Close all in-progress filters\">\n      <mat-icon class=\"cancel-button\">close</mat-icon>\n    </button>\n\n    <div class=\"float\">\n      @for (filter of currentFilters; track $index; let i = $index) {\n        <div class=\"filter\">\n          <tb-filter [filter]=\"filter\" (close)=\"deleteByIndex(i)\"></tb-filter>\n        </div>\n      }\n    </div>\n  }\n\n  <div class=\"fp-stack-inline\" *ngrxLet=\"filters$ as filters\">\n    @for (filter of filters; track filter.filterId) {\n      <div class=\"fp-chip\" [matTooltip]=\"'Double-click to edit'\" (dblclick)=\"addFilter(filter)\">\n        <span class=\"fp-col-name\">{{ filter.key | keyDisplay | async }}</span>\n        <span class=\"fp-op-pill\">{{ filter.filterType | formatFilterType : filter.filterValue }}</span>\n        @if (filter.filterValue | asFilterPills; as pills) {\n          @for (v of pills; track $index) {\n            <span class=\"filter-value-pill\">{{ v }}</span>\n          }\n        } @else {\n          <span class=\"fp-val-text\">{{ filter.filterValue | formatFilterValue: filter.key : filter.filterType | async }}</span>\n        }\n        <button class=\"fp-x-btn\" type=\"button\"\n                (click)=\"tableState.removeFilter(filter.filterId!)\"\n                [attr.aria-label]=\"'Remove filter on ' + (filter.key | keyDisplay | async)\">\n          ✕\n        </button>\n      </div>\n    }\n    @if (filters.length >= 2) {\n      <button class=\"fp-ghost-link\" type=\"button\" (click)=\"tableState.clearFilters()\">\n        Clear all\n      </button>\n    }\n  </div>\n\n</div>\n","import { Component, OnInit } from '@angular/core';\nimport { TableStore } from '../../classes/table-store';\n\n@Component({\n    selector: 'group-by-list',\n    templateUrl: './group-by-list.component.html',\n    styleUrls: ['./group-by-list.component.css'],\n    standalone: false\n})\nexport class GroupByListComponent implements OnInit {\n\n  constructor(public tableStore: TableStore) { }\n\n  ngOnInit(): void {\n  }\n\n}\n","<mat-chip-set *ngrxLet=\"tableStore.groupByKeys$ as groupByKeys\">\n  <span *ngIf=\"groupByKeys?.length\" class=\"tb-group-label\">Group By:</span>\n  <ng-container *ngFor=\"let groupByKey of groupByKeys; let i = index;\">\n    <mat-icon *ngIf=\"i > 0\" class=\"nested-arrow\">arrow_right</mat-icon>\n    <mat-chip (removed)=\"tableStore.removeGroupByKey(groupByKey)\">\n      {{groupByKey | spaceCase}}\n      <mat-icon matChipRemove>cancel</mat-icon>\n    </mat-chip>\n  </ng-container>\n</mat-chip-set>\n","import {\n  Component,\n  Input,\n  EventEmitter,\n  Output,\n  ContentChildren,\n  QueryList,\n  ChangeDetectionStrategy,\n  Inject,\n  Predicate,\n  Optional,\n  TemplateRef,\n  ViewChild,\n} from '@angular/core';\nimport { BehaviorSubject, Observable, from, ReplaySubject, Subscription } from 'rxjs';\nimport { ArrayAdditional, FieldType, MetaData } from '../../interfaces/report-def';\nimport { first, last, map, switchMap, tap, withLatestFrom, mergeAll, scan } from 'rxjs/operators';\nimport { TableBuilder } from '../../classes/table-builder';\nimport { MatRowDef } from '@angular/material/table';\nimport { CustomCellDirective, TableCustomFilterDirective, TableFilterDirective } from '../../directives';\nimport {  stateIs, TableStore } from '../../classes/table-store';\nimport { DataFilter } from '../../classes/data-filter';\nimport { combineArrays, mapArray, notNull } from '../../../rxjs/rxjs-operators';\nimport { ExportToCsvService } from '../../services/export-to-csv.service';\nimport { ArrayDefaults } from '../../classes/DefaultSettings';\nimport { TableBuilderConfig, TableBuilderConfigToken } from '../../classes/TableBuilderConfig';\nimport * as selectors from '../../ngrx/selectors';\nimport { select, Store } from '@ngrx/store';\nimport { deleteLocalProfilesState, setLocalProfile, setLocalProfilesState } from '../../ngrx/actions';\nimport { Group, InitializationState, PersistedTableState } from '../../classes/TableState';\nimport { sortData } from '../../functions/sort-data-function';\nimport { WrapperFilterStore } from '../table-container-filter/table-wrapper-filter-store';\nimport { cloneDeep, groupBy } from 'lodash';\nimport { ColumnInfo } from '../../interfaces/ColumnInfo';\nimport { defaultShareReplay } from '../../../rxjs';\nimport { flattenDeep } from 'lodash';\nimport { createFilterFunc, isCustomFilter, isFilterInfo } from '../../classes/filter-info';\nimport { Dictionary } from '../../interfaces/dictionary';\nimport { TableWrapperDirective } from '../../directives/table-wrapper.directive';\nimport { createLinkCreator } from '../../services/link-creator.service';\n\nconst BLANK_GROUP_LABEL = '(Blank)';\nimport { GenericTableComponent } from '../generic-table/generic-table.component';\n\n@Component({\n    selector: 'tb-table-container',\n    templateUrl: './table-container.html',\n    styleUrls: ['./table-container.css', '../../styles/collapser.styles.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [TableStore, ExportToCsvService, WrapperFilterStore],\n    standalone: false\n}) export class TableContainerComponent<T = any> {\n\n  @ViewChild(GenericTableComponent) private genericTableComponent!: GenericTableComponent;\n\n  @ContentChildren(TableCustomFilterDirective, {descendants: true}) customFilters!: QueryList<TableCustomFilterDirective>;\n  @ContentChildren(TableFilterDirective, {descendants: true}) filters!: QueryList<TableFilterDirective>;\n\n  @Input() tableId!: string;\n  @Input() tableBuilder!: TableBuilder;\n  @Input() IndexColumn = false;\n  @Input() SelectionColumn = false;\n  @Input() trackBy!: string;\n  @Input() isSticky = true;\n  @Input() set isVs(val: boolean | string) {\n    if (val || val === '') {\n      this._isVs = true;\n    } else {\n      this._isVs = false;\n    }\n  }\n\n  @Input() set pageSize(value: number) {\n    this.state.setPageSize(value);\n  }\n  @Input() inputFilters?: Observable<Array<Predicate<T>>>;\n  @Input() groupHeaderTemplate!: TemplateRef<any>;\n  @Input() compareWithKey!: string;\n  @Output() selection$ = new EventEmitter();\n  dataSubject = new ReplaySubject<Observable<T[]>>(1);\n  @Output() data = this.dataSubject.pipe(\n    switchMap( d => d),\n    defaultShareReplay(),\n  );\n  @Output() paginatorChange = new EventEmitter<void>();\n\n  _isVs!: boolean;\n\n  @ContentChildren(MatRowDef) customRows!: QueryList<MatRowDef<any>>;\n\n  @ContentChildren(CustomCellDirective) customCells!: QueryList<CustomCellDirective>;\n  @Output() OnStateReset = new EventEmitter();\n  @Output() OnSaveState = new EventEmitter();\n  @Output() state$ : Observable<PersistedTableState>;\n\n  myColumns$!: Observable<ColumnInfo[]>;\n\n  stateKeys$?: Observable<string[] | null>;\n  currentStateKey$?: Observable<string>;\n\n  disableSort!: boolean;\n\n  constructor(\n    public state: TableStore,\n    public exportToCsvService: ExportToCsvService<T>,\n    @Inject(TableBuilderConfigToken) private config: TableBuilderConfig,\n    private store: Store<any>,\n    @Optional() private wrapper: TableWrapperDirective,\n  ) {\n     this.state.on( this.state.getSavableState().pipe(last()), finalState => {\n      if(this.tableId) {\n        this.store.dispatch(setLocalProfile({key:this.tableId,value: finalState}));\n      }\n    });\n    this.state$ = this.state.getSavableState().pipe(\n      map(state => cloneDeep(state)),\n      defaultShareReplay(),\n    );\n  }\n\n  firstPage(): void {\n    this.genericTableComponent?.paginatorComponent?.paginator?.firstPage();\n  }\n\n  lastPage(): void {\n    this.genericTableComponent?.paginatorComponent?.paginator?.lastPage();\n  }\n\n  resetState() {\n    this.customFilters.forEach( cf => cf.reset());\n    this.filters.forEach( cf => cf.reset() );\n    this.state.resetState();\n    this.OnStateReset.next(null)\n  }\n\n  initializeState() {\n    this.state.setTableSettings(this.tableBuilder.settings);\n    this.state.runOnceWhen(stateIs(InitializationState.MetaDataLoaded), state => {\n      if(this.tableId) {\n        const persistedState$ = this.store.pipe(\n          select(selectors.selectLocalProfileState<any>(this.tableId) ),\n          tap( persistedState => {\n            if(!persistedState) {\n              this.state.setIntializationState(InitializationState.LoadedFromStore);\n            }\n          }),\n          notNull(),\n        );\n        this.state.updateStateFromPersistedState(persistedState$);\n\n      } else {\n        this.state.setIntializationState(InitializationState.LoadedFromStore);\n      }\n    });\n  }\n  customFilters$ = new BehaviorSubject<Predicate<any>[]>([]);\n  initializeData() {\n\n\n    var allFilters = this.inputFilters ? combineArrays([\n      this.customFilters$,\n      this.inputFilters\n    ]) : this.customFilters$;\n\n    const filters$ = this.state.filters$.pipe(map( filters => Object.values(filters) ))\n\n    const data = new DataFilter(allFilters)\n      .appendFilters(filters$)\n      .filterData(this.tableBuilder.getData$()).pipe(\n        switchMap(data => this.state.groupByKeys$.pipe(\n          map(groupBy => this.getData(data, groupBy)),\n        ).pipe(\n          switchMap(data => this.state.groups$.pipe(\n            map(groups => this.setDisplay(data, groups))\n          ))\n        ))\n      );\n\n    this.dataSubject.next(data);\n  }\n\n  ngOnInit() {\n    this.initializeState();\n    this.initializeData();\n\n    if(this.tableId) {\n      this.stateKeys$ = this.store.select(selectors.selectLocalProfileKeys(this.tableId));\n      this.currentStateKey$ = this.store.select(selectors.selectLocalProfileCurrentKey(this.tableId));\n    }\n  }\n\n  exportToCsv(): void {\n    const sorted = this.data.pipe(\n      withLatestFrom(this.state.sorted$),\n      map(([data, sorted]) => sortData(data, sorted))\n    );\n    this.exportToCsvService.exportToCsv(sorted);\n  }\n\n  saveState() {\n    this.state.getSavableState().pipe(\n      first()\n    ).subscribe( tableState => {\n      this.OnSaveState.next(null);\n      this.store.dispatch(setLocalProfile({ key: this.tableId, value:tableState, persist: true} ));\n    });\n  }\n\n  setProfileState(val: string) {\n    this.store.dispatch(setLocalProfilesState({key:this.tableId, current: val}));\n  }\n\n  deleteProfileState(stateKey: string) {\n    this.store.dispatch(deleteLocalProfilesState({key:this.tableId, stateKey}));\n  }\n\n\n  ngAfterContentInit() {\n    this.InitializeColumns();\n\n    this.state.runOnceWhen(stateIs(InitializationState.LoadedFromStore), state => {\n\n      var allFilters = [...this.filters, ...this.customFilters];\n      if(this.wrapper) {\n        allFilters = [...allFilters, ...this.wrapper.customFilters, ...this.wrapper.filters, ...this.wrapper.registerations];\n      }\n\n      var customFilters: (TableCustomFilterDirective|TableFilterDirective )[] = [];\n\n      allFilters.filter( f => !f.used).forEach( f => {\n        f.used = true;\n        if(f.savable) {\n          var filter = state.filters[f.filterId];\n          if(isFilterInfo(filter)) {\n            const filterDirective: TableFilterDirective = f as TableFilterDirective;\n            filterDirective.fieldType = filter.fieldType;\n            filterDirective.filterType = filter.filterType;\n            filterDirective.setFilterValue(filter.filterValue);\n            filterDirective.key = filter.key;\n            filterDirective.update();\n          }\n          if(isCustomFilter(filter)) {\n            f.active = filter.active ?? false;\n          }\n          this.state.addFilter(f.filter$);\n        } else {\n          customFilters.push(f);\n        }\n      });\n\n      const filters$ =  from( customFilters.map( cf => cf.filter$  )).pipe(\n        mergeAll(),\n        scan( (a,b)=> {\n            if(b.active) {\n              a[b.filterId] = isCustomFilter(b) ? b.predicate : createFilterFunc(b);\n            } else {\n              delete a[b.filterId] ;\n            }\n         return a;\n        }, {} as Dictionary<Predicate<any>>),\n        map( f => Object.values(f))\n      );\n      this.state.on(filters$, (f) => {\n        this.customFilters$.next(f);\n      });\n      this.state.updateState({initializationState: InitializationState.Ready});\n    });\n\n  }\n\n  InitializeColumns() {\n    const customCellMap = new Map(this.customCells.map(cc => [cc.customCell,cc]));\n    this.state.setMetaData(this.tableBuilder.metaData$!.pipe(\n      map((mds) => {\n        mds = mds.map(this.mapMetaDatas);\n        return [\n          ...mds,\n          ...this.customCells.map( cc => cc.getMetaData(mds.find( item => item.key === cc.customCell )) )\n        ]\n      })\n    ));\n    this.state.setLinkMaps(this.tableBuilder.metaData$!.pipe(\n      map((mds) => {\n        return mds.reduce((acc, md) => {\n          if(md.fieldType === FieldType.Link){ acc[md.key]= createLinkCreator(md)}\n          return acc;\n        },{})\n      })\n    ))\n\n    this.myColumns$ = this.state.metaDataArray$.pipe(\n      mapArray( metaData => ({metaData, customCell: customCellMap.get(metaData.key)!}))\n    );\n  }\n  mapMetaDatas = (meta : MetaData<T>) => {\n    if(meta.fieldType === FieldType.Array){\n      const additional = {...meta.additional} as ArrayAdditional;\n      additional.arrayStyle = additional?.arrayStyle ?? ArrayDefaults.arrayStyle;\n      additional.limit = additional.limit ?? this.config.arrayInfo?.limit ?? ArrayDefaults.limit;\n      return {...meta,additional}\n    }\n    return meta;\n  }\n\n  collapseHeader$ = this.state.state$.pipe(map(state => state.persistedTableSettings.collapseHeader));\n\n  getData(data: any[], groupByKeys: string[]): any[] {\n    if (!groupByKeys.length) {\n      this.disableSort = false;\n      return data;\n    }\n    this.disableSort = true;\n    return this.tbGroupBy(data, groupByKeys);\n  }\n\n  tbGroupBy = (data: any[], groupByKeys: string[], parentGroupName?: any): any[] => {\n    let res = {};\n    const key = groupByKeys[0];\n    res = groupBy(data, (row: any) => {\n      const v = row?.[key];\n      const isBlank =\n        v === null\n        || v === undefined\n        || (typeof v === 'string' && v.trim() === '')\n        || (Array.isArray(v) && v.length === 0);\n      return isBlank ? BLANK_GROUP_LABEL : v;\n    });\n    const remainingGroupByKeys = groupByKeys.slice(1);\n    if (remainingGroupByKeys.length) {\n      Object.keys(res).forEach(key => res[key] = this.tbGroupBy(res[key], remainingGroupByKeys, key))\n    }\n    return flattenDeep(Object.keys(res).map(groupName => {\n      const uniqName = parentGroupName ? `${parentGroupName}-${groupName}` : `${groupName}`;\n      return [\n        {\n          isGroupHeader: true,\n          groupHeaderName: `${groupName} (${res[groupName]?.filter(row => !row.isGroupHeader)?.length})`,\n          data: res[groupName],\n          groupName: uniqName,\n          padding: 0\n        },\n        (res[groupName] as any[])?.map(d => ({ ...d, parentGroupName: d.parentGroupName || uniqName }))\n      ];\n    })).map(this.addIndentation);\n  }\n\n  addIndentation = (d: any) => {\n    if (d.isGroupHeader) {\n      if (d.padding) {\n        d.padding += 20;\n      } else {\n        d.padding = 1;\n      }\n    }\n    return d;\n  }\n\n  setDisplay = (data: any[], groups: Group[]): any[] => data\n    .map(d => ({\n      ...d,\n      shouldDisplay: !d.parentGroupName || this.shouldDisplay(groups.find(g => g.groupName == d.parentGroupName), groups),\n      isExpanded: groups.find(g => g.groupName == d.groupName)?.isExpanded\n    }))\n    .filter(d => d.shouldDisplay);\n\n\n  shouldDisplay = (currentGroup?: Group, groups?: Group[]): boolean => {\n    if (!currentGroup?.isExpanded) {\n      return false;\n    }\n\n    const parentGroup = groups?.find(g => g.groupName == currentGroup.parentGroupName);\n\n    if (parentGroup) {\n      return this.shouldDisplay(parentGroup, groups);\n    }\n\n    return true;\n  }\n}\n","<ng-content select=\"[before]\" >\n</ng-content>\n\n<ng-container multiSort [matSortDisabled]=\"disableSort\">\n  <ng-container *ngrxLet=\"state.tableSettings$ as tableSettings\">\n\n\n    <div class=\"header-wrapper\">\n      <div class=\"title\">\n        <ng-content select=\".tb-header-title\"\n          *ngIf=\"(!(collapseHeader$ | async)) || tableSettings.showTitleWhenHeaderCollapsed\">\n\n        </ng-content>\n        <group-by-list></group-by-list>\n      </div>\n      <div class=\"flx-row-end\">\n        <lib-filter-list></lib-filter-list>\n        <ng-container *ngIf=\"!tableSettings.hideHeader\">\n          @if (!(collapseHeader$ | async)) {\n            <ng-container *ngTemplateOutlet=\"headerMenu\"></ng-container>\n            <button mat-icon-button [matMenuTriggerFor]=\"mainMenu\"\n              [class.flat-menu]=\"(collapseHeader$ | async)\">\n              <mat-icon class=\"tb-icon-primary\">{{(collapseHeader$ | async) ? 'more_horiz' : 'more_vert'}}</mat-icon>\n            </button>\n            <mat-menu #mainMenu='matMenu'>\n              <ng-container *ngTemplateOutlet=\"headerMenuExtra\"></ng-container>\n            </mat-menu>\n          } @else {\n            <button mat-icon-button [matMenuTriggerFor]=\"mainMenu\"\n              [class.flat-menu]=\"(collapseHeader$ | async)\">\n              <mat-icon class=\"tb-icon-primary\">{{(collapseHeader$ | async) ? 'more_horiz' : 'more_vert'}}</mat-icon>\n            </button>\n            <mat-menu #mainMenu='matMenu'>\n              <div class=\"flex-column\">\n                <ng-container *ngTemplateOutlet=\"headerMenu\"></ng-container>\n              </div>\n              <ng-container *ngTemplateOutlet=\"headerMenuExtra\"></ng-container>\n            </mat-menu>\n          }\n          <mat-icon [matTooltip]=\"(collapseHeader$ | async) ? 'expand' : 'collapse'\" class=\"collapse-icon header\"\n            (click)=\"state.toggleCollapseHeader()\">\n            {{(collapseHeader$ | async) ? 'expand_less' : 'expand_more'}}\n          </mat-icon>\n        </ng-container>\n      </div>\n    </div>\n\n    <div style=\"clear: both;\" *ngIf=\"!_isVs\">\n      <tb-generic-table [rows]='customRows' [data$]=\"data\" [IndexColumn]='IndexColumn'\n        [SelectionColumn]='SelectionColumn' (selection$)='selection$.emit($event)' [trackBy]='trackBy'\n        [isSticky]='isSticky' [columnInfos]='myColumns$' [disableSort]=\"disableSort\" [groupHeaderTemplate]=\"groupHeaderTemplate\"\n        [compareWithKey]=\"compareWithKey\">\n      </tb-generic-table>\n    </div>\n\n    <div style=\"clear: both;\" *ngIf=\"_isVs\">\n      <tb-generic-table-vs [rows]='customRows' [data$]=\"data\" [IndexColumn]='IndexColumn'\n        [SelectionColumn]='SelectionColumn' (selection$)='selection$.emit($event)' [trackBy]='trackBy'\n        [isSticky]='isSticky' [columnInfos]='myColumns$' [disableSort]=\"disableSort\" [groupHeaderTemplate]=\"groupHeaderTemplate\"\n        (paginatorChange)=\"paginatorChange.emit()\">\n      </tb-generic-table-vs>\n    </div>\n\n\n    <ng-template #headerMenu>\n      <ng-container>\n        <tb-filter-displayer *ngIf=\"!tableSettings.hideFilter\">\n        </tb-filter-displayer>\n        <tb-columns-panel *ngIf=\"!tableSettings.hideColumnSettings || !tableSettings.hideSort\"></tb-columns-panel>\n      </ng-container>\n    </ng-template>\n    <ng-template #headerMenuExtra>\n      <button mat-menu-item (click)=\"resetState()\">\n        <mat-icon class=\"tb-icon-primary\">autorenew</mat-icon>\n        <span>Reset table</span>\n      </button>\n      @if (!tableSettings.hideExport) {\n        <button mat-menu-item (click)=\"exportToCsv()\">\n          <mat-icon class=\"tb-icon-primary\">file_download</mat-icon>\n          <span>Export Table</span>\n        </button>\n      }\n      @if (currentStateKey$ | async; as currentKey) {\n        @if (tableId) {\n          <button mat-menu-item (click)=\"saveState()\">\n            <mat-icon class=\"tb-icon-primary\">save</mat-icon>\n            <span>Save to {{currentKey}}</span>\n          </button>\n        }\n        @if (tableId) {\n          <button mat-menu-item [matMenuTriggerFor]=\"savedNames\">\n            <span>Choose Profile</span>\n          </button>\n        }\n      }\n\n      <mat-menu #savedNames='matMenu' panelClass='wide-menu'>\n        <button mat-menu-item clickEmitter  #add='clickEmitter'>\n          <mat-icon>add</mat-icon>\n          <span>New</span>\n        </button>\n        @for (key of stateKeys$ | async; track key) {\n          <button mat-menu-item (click)='setProfileState(key)'>\n            <div style='display: flex; align-items: center; justify-content: space-between;'>\n              <span style='display:flex;'>{{key}}</span>\n              <span style='display:flex;'>\n                <span style=\"width: 120px;\"></span>\n                <mat-icon class=\"tb-icon-warn\" (click)='deleteProfileState(key)' stop-propagation>delete_forever</mat-icon>\n              </span>\n            </div>\n          </button>\n        }\n      </mat-menu>\n      <ng-container *opDialog='add'>\n        <mat-form-field>\n          <input style='width:90%' matInput #addedKey />\n        </mat-form-field>\n        <button mat-button (click)='setProfileState(addedKey.value); add.next(false);'\n          [disabled]=\"!addedKey.value\">Add</button>\n      </ng-container>\n    </ng-template>\n\n  </ng-container>\n\n</ng-container>\n","import { createReducer, Action, on } from '@ngrx/store';\r\nimport * as tableActions from './actions';\r\nimport { Dictionary } from '../interfaces/dictionary';\r\n\r\nexport interface Profile<T = any> {\r\n  default: string;\r\n  current: string;\r\n  states: Dictionary<T>;\r\n}\r\n\r\nexport interface GlobalStorageState {\r\n  globalProfileKeys : string [];\r\n  currentGlobalProfile: string;\r\n  globalProfiles: Dictionary<Profile>;\r\n  localProfiles: Dictionary<Profile>;\r\n}\r\n\r\nexport const defaultStorageState: GlobalStorageState = {\r\n  globalProfileKeys: ['Default'],\r\n  currentGlobalProfile: 'Default',\r\n  globalProfiles: {},\r\n  localProfiles: {}\r\n}\r\n\r\n\r\nfunction loadGlobalStorageState() : GlobalStorageState {\r\n  const storage = localStorage.getItem('global-state-storage');\r\n  if(storage) {\r\n    return {...defaultStorageState, ...JSON.parse(storage)};\r\n  }\r\n  return defaultStorageState;\r\n}\r\n\r\nconst reducer = createReducer(\r\n  loadGlobalStorageState(),\r\n  on(tableActions.setLocalProfile, (state,{key,value})=> {\r\n    let profile = state.localProfiles[key];\r\n    if(!profile) {\r\n      profile =  {default: 'default', current: 'default', states : {\r\n        default: value\r\n      }};\r\n    } else {\r\n      profile = {...profile, states: {...profile.states, [profile.current ?? profile.default] : value} };\r\n    }\r\n    return {...state, localProfiles: {...state.localProfiles, [key]: profile} }\r\n  }),\r\n  on(tableActions.setLocalProfilesState, (state, {key,current}) => {\r\n    let profile = state.localProfiles[key];\r\n    if(!profile) {\r\n      profile =  {default: current, current , states : {[current]: null }};\r\n    } else {\r\n      const state = profile.states[current] ?? profile.states[profile.current ?? profile.default];\r\n      profile = {...profile, current, states: {...profile.states, [current] : state }};\r\n    }\r\n    return {...state, localProfiles: {...state.localProfiles, [key]: profile}};\r\n  }),\r\n  on(tableActions.deleteLocalProfilesState, (state, {key,stateKey}) => {\r\n    let profile = state.localProfiles[key];\r\n    if(profile) {\r\n      const current = profile.current === stateKey ? profile.default : profile.current;\r\n      profile = {...profile,current, states: { ...profile.states}};\r\n      delete profile.states[stateKey];\r\n      return {...state, localProfiles: {...state.localProfiles, [key]: profile} };\r\n    } else {\r\n      return state;\r\n    }\r\n  })\r\n);\r\n\r\nexport function storageStateReducer(state: GlobalStorageState | undefined, action: Action) {\r\n  return reducer(state, action);\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Actions, createEffect, ofType } from '@ngrx/effects';\rimport { concatLatestFrom } from '@ngrx/operators';\n\nimport { defaultStorageState, GlobalStorageState} from './reducer';\r\nimport { tap, filter, mergeMap, first, map } from 'rxjs/operators';\r\nimport * as tableActions from './actions';\r\nimport { select, Store } from '@ngrx/store';\r\nimport { selectLocalProfile } from './selectors';\r\n\r\n\r\n@Injectable()\r\nexport class SaveTableEffects {\r\n\r\n  saveLocalProfile$ = createEffect(\r\n    () => this.actions$.pipe(\r\n      ofType(tableActions.setLocalProfile),\r\n      filter( action => !!action.persist),\r\n      concatLatestFrom( (action) =>  this.store.pipe(\r\n        select(selectLocalProfile(action.key))\r\n      )),\r\n      tap( ([action,profile]) => {\r\n        const globalSavedState: GlobalStorageState = JSON.parse(localStorage.getItem('global-state-storage') ?? JSON.stringify(defaultStorageState) );\r\n        if(!profile) {\r\n          profile =  {default: 'default', current: 'default', states : {default: action.value}};\r\n          globalSavedState.localProfiles[action.key] = profile;\r\n        } {\r\n          if(!globalSavedState.localProfiles[action.key]) {\r\n            globalSavedState.localProfiles[action.key] = {...profile,states: {[profile.current ?? profile.default]: action.value}};\r\n          } else {\r\n            globalSavedState.localProfiles[action.key].states[profile.current ?? profile.default] = action.value;\r\n          }\r\n\r\n        }\r\n        localStorage.setItem('global-state-storage', JSON.stringify( globalSavedState));\r\n      }),\r\n    ), { dispatch: false }\r\n  );\r\n\r\n  deleteLocalProfile$ = createEffect(\r\n    () => this.actions$.pipe(\r\n      ofType(tableActions.deleteLocalProfilesState),\r\n      tap( (a) => {\r\n        const globalSavedState: GlobalStorageState = JSON.parse(localStorage.getItem('global-state-storage') ?? JSON.stringify(defaultStorageState) );\r\n          if(!globalSavedState.localProfiles[a.key]) {\r\n            return;\r\n          } else {\r\n            delete globalSavedState.localProfiles[a.key].states[a.stateKey];\r\n          }\r\n        localStorage.setItem('global-state-storage', JSON.stringify( globalSavedState));\r\n      }),\r\n    ), { dispatch: false }\r\n  );\r\n\r\n  constructor( private actions$: Actions, private store: Store<any> ) {}\r\n}\r\n","import { Injectable } from '@angular/core';\nimport { Sort } from '@angular/material/sort';\nimport { ComponentStore } from '@ngrx/component-store';\nimport { combineLatest } from 'rxjs';\nimport { distinctUntilChanged, map, mergeMap } from 'rxjs/operators';\nimport { TableStore } from '../../classes/table-store';\nimport { notNull } from '../../../rxjs/rxjs-operators';\n\n@Injectable()\nexport class SortMenuComponentStore extends ComponentStore<ComponenStoreState> {\n  constructor(private tableState: TableStore){\n    super({notSorted:[],sorted:[]})\n  }\n  private set = this.updater((state,data:ComponenStoreState)=> ({...data}));\n\n  setSorted = this.updater((state,sorted:SortWithName[])=>({...state,sorted}));\n\n  setNotSorted = this.updater((state,notSorted:SortWithName[])=>({...state,notSorted}));\n  sorted$ = this.select(state=>state.sorted);\n  notSorted$ = this.select(state=>state.notSorted);\n  setDirection = this.updater((state,sort:SortWithName)=>{\n    const index = state.sorted.findIndex(s => s.active === sort.active);\n    const sorted = [...state.sorted];\n    sorted.splice(index,1,sort);\n    return ({...state,sorted});\n  })\n  reset = () => {\n    const sorted = this.tableState.sorted$.pipe(\n      mergeMap(sort => this.tableState.metaData$.pipe(\n        notNull(),\n        map(\n        meta => sort.map(s => {\n          return ({...s, displayName: meta[s.active]?.displayName} as SortWithName)})\n      )))\n    );\n    const notSorted = this.tableState.metaDataArray$.pipe(mergeMap(\n      metas => this.tableState.sorted$.pipe(\n        map(s => metas.filter(meta=> !s.some(s=>s.active=== meta.key))\n          .map(meta=>({active:meta.key,displayName : meta.displayName} as SortWithName)))\n      )\n    ));\n    this.set(combineLatest([\n      sorted.pipe(distinctSortArray),notSorted.pipe(distinctSortArray)\n    ]).pipe(map(([sorted,notSorted])=>({sorted,notSorted}))));\n  }\n}\n\nexport interface ComponenStoreState {\n  sorted : SortWithName[];\n  notSorted: SortWithName[];\n}\n\nexport interface SortWithName extends Sort{\n  displayName : string;\n}\n\nconst equalSortArray = (arr1:SortWithName[],arr2:SortWithName[]) =>\n  arr1.length === arr2.length && arr2.every(s1 => arr1.some(s2 => s1.active === s2.active));\nconst distinctSortArray = distinctUntilChanged<SortWithName[]>(equalSortArray);\n","import { CdkDragDrop, moveItemInArray, transferArrayItem } from '@angular/cdk/drag-drop';\nimport { Component, OnInit } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { Observable } from 'rxjs';\nimport { first, map, tap } from 'rxjs/operators';\nimport { TableStore } from '../../classes/table-store';\nimport { SortDirection } from '../../interfaces/report-def';\nimport { SortMenuComponentStore, SortWithName } from './sort-menu.component-store'\n\n@Component({\n    selector: 'tb-sort-menu',\n    templateUrl: './sort-menu.component.html',\n    styleUrls: ['./sort-menu.component.scss'],\n    providers: [SortMenuComponentStore],\n    standalone: false\n})\nexport class SortMenuComponent implements OnInit{\n\n  sorted$:Observable<SortWithName[]>;\n  notSorted$:Observable<SortWithName[]>;\n  SortDirection = SortDirection;\n  dirty$ = new BehaviorSubject(false);\n  constructor(private tableState: TableStore, public store: SortMenuComponentStore) {\n    this.sorted$=this.store.sorted$.pipe(map(data=>[...data]));\n    this.notSorted$=this.store.notSorted$.pipe(map(data=>[...data]));\n  }\n\n  reset(){\n    this.dirty$.next(false);\n    this.store.reset();\n  }\n\n  ngOnInit(){\n    this.store.reset();\n  }\n\n  dropIntoSorted(event: CdkDragDrop<SortWithName[]>) {\n    this.dirty$.next(true);\n    if (event.previousContainer === event.container) {\n      moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);\n      this.store.setSorted(event.container.data);\n    } else {\n\n      transferArrayItem(event.previousContainer.data,\n                        event.container.data,\n                        event.previousIndex,\n                        event.currentIndex);\n      event.container.data[event.currentIndex] = {...event.container.data[event.currentIndex],direction:SortDirection.asc};\n      this.store.setSorted(event.container.data);\n      this.store.setNotSorted(event.previousContainer.data);\n    }\n  }\n\n  dropIntoNotSorted(event: CdkDragDrop<SortWithName[]>){\n    if (event.previousContainer === event.container) {\n      return;\n    } else {\n      this.dirty$.next(true);\n      transferArrayItem(event.previousContainer.data,\n                        event.container.data,\n                        event.previousIndex,\n                        event.currentIndex);\n      event.container.data[event.currentIndex] = {...event.container.data[event.currentIndex]};\n\n      this.store.setNotSorted(event.container.data);\n      this.store.setSorted(event.previousContainer.data);\n    }\n  }\n\n  apply = this.store.effect((obs:Observable<null>)=>\n    obs.pipe(tap(()=>{\n      this.dirty$.next(false);\n      this.tableState.setAllSort(this.store.sorted$.pipe(first()))\n  })));\n\n  setDirection(sort:SortWithName){\n    this.dirty$.next(true);\n    this.store.setDirection(sort);\n  }\n\n}\n\n\n","<ng-container *ngrxLet=\"dirty$ as dirty\">\n<ng-container  *ngIf=\"sorted$ | async as sorted\">\n  <ng-container *ngIf=\"notSorted$ | async as notSorted\">\n    <!-- Menu Trigger -->\n    <span matTooltip=\"Sort\">\n      <button mat-icon-button [matMenuTriggerFor]=\"menu\">\n        <mat-icon class=\"tb-icon-primary\">swap_vert</mat-icon>\n      </button>\n    </span>\n\n    <!-- Menu -->\n    <mat-menu #menu=\"matMenu\"  class=\"my-mat-menu\" (closed)=\"reset()\">\n      <div mat-menu-item class=\"menu-button\">\n        <div class=\"close-button-wrapper\">\n          <span matTooltip=\"Close\">\n            <mat-icon>close</mat-icon>\n          </span>\n          <span *ngIf=\"dirty\" matTooltip=\"Undo\" stop-propagation (click)=\"reset()\">\n            <mat-icon>undo</mat-icon>\n          </span>\n        </div>\n      </div>\n\n      <!-- Apply Button -->\n      <div class=\"apply-button-wrapper\">\n        <button mat-button class=\"tb-icon-primary\" (click)=\"apply(null)\"\n          stop-propagation [class.apply-border]=\"dirty\"\n          [disabled]=\"!dirty\">\n            Apply\n            <ng-container *ngIf=\"dirty\">Unsaved Changes</ng-container>\n        </button>\n      </div>\n\n      <!-- Default Sorting Text -->\n      <div *ngIf=\"!sorted.length\" class=\"tip\" >\n        Sorting List\n      </div>\n\n      <!-- Sorted Menu List -->\n      <div class=\"list\"\n        cdkDropList\n        #sortedGroup=\"cdkDropList\"\n        [cdkDropListConnectedTo]=\"[notSortedGroup]\"\n        [cdkDropListData]=\"sorted\"\n        (cdkDropListDropped)=\"dropIntoSorted($event)\">\n\n        <!-- Menu Item Wrapper -->\n        <ng-container *ngFor=\"let sort of sorted;let i=index\">\n\n          <!-- Menu Item Headers -->\n          <span *ngIf=\"sorted.length > 1 && i === 0 \" class=\"description\" class=\"sort-header\">First By</span>\n          <span *ngIf=\"sorted.length > 1 && i !== 0 \" class=\"description\"  class=\"sort-header\">Then By</span>\n\n          <!-- Menu Item -->\n          <div mat-menu-item   cdkDrag class=\"menu-item\">\n            <div class=\"sort-item\">\n              <span class=\"sorted-name\">\n                {{sort.displayName || (sort.active | spaceCase)}}\n                <span class=\"direction-text\">{{sort.direction}}</span>\n              </span>\n\n              <!-- Sort Direction Buttons -->\n              <div class=\"up-down-buttons-wrapper\">\n                <button  class=\"up-down-button up-button\" stop-propagation\n                (click)=\"setDirection({active:sort.active,direction:SortDirection.asc,displayName:sort.displayName})\">\n                  <mat-icon [ngClass]=\"sort.direction !== SortDirection.asc ? 'light-arrow' : 'dark-arrow'\" class=\"up-down-icon\">\n                  arrow_upward\n                  </mat-icon>\n                </button>\n\n                <button class=\"up-down-button\" stop-propagation\n                (click)=\"setDirection({active:sort.active,direction:SortDirection.desc,displayName:sort.displayName})\">\n                  <mat-icon [ngClass]=\"sort.direction === SortDirection.asc ? 'light-arrow' : 'dark-arrow'\" class=\"up-down-icon\">\n                    arrow_downward\n                  </mat-icon>\n                </button>\n              </div>\n            </div>\n          </div>\n        </ng-container>\n      </div>\n\n      <!-- Default Not Sorted Text -->\n      <div *ngIf=\"!notSorted.length\" class=\"tip\" >\n        Not Sorted List\n      </div>\n      <!-- Not Sorted Menu List -->\n      <div class=\"list\"\n        cdkDropList\n        #notSortedGroup=\"cdkDropList\"\n        [cdkDropListConnectedTo]=\"[sortedGroup]\"\n        [cdkDropListData]=\"notSorted\"\n        (cdkDropListDropped)=\"dropIntoNotSorted($event)\">\n        <div mat-menu-item *ngFor=\"let sort of notSorted\"  class=\"menu-item\" cdkDrag>\n          <span class=\"not-sorted-name\">{{sort.displayName || (sort.active | spaceCase)}}</span>\n        </div>\n      </div>\n    </mat-menu>\n  </ng-container>\n</ng-container>\n</ng-container>\n","\nimport { NgModule } from '@angular/core';\nimport { GenericTableComponent, GenericTableVsComponent } from './components/generic-table/generic-table.component';\nimport { CustomCellDirective } from './directives/custom-cell-directive';\nimport { GenColDisplayerComponent } from './components/gen-col-displayer/gen-col-displayer.component';\nimport { GenFilterDisplayerComponent } from './components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component';\nimport { FilterComponent } from './components/filter/filter.component';\nimport { CommonModule, DatePipe, CurrencyPipe } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { SpaceCasePipe } from '../utilities/pipes/space-case.pipes';\nimport { MaterialModule } from './material.module';\nimport { DateFilterComponent } from './components/date-filter/date-filter.component';\nimport { TableContainerComponent } from './components/table-container/table-container';\nimport { ColumnTotalPipe } from './pipes/column-total.pipe';\nimport { MultiSortDirective } from './directives/multi-sort.directive';\nimport { ColumnBuilderComponent } from './components/column-builder/column-builder.component';\nimport { ModuleWithProviders } from '@angular/core';\nimport { TableBuilderConfig, TableBuilderConfigToken } from './classes/TableBuilderConfig';\nimport { NumberFilterComponent } from './components/number-filter/number-filter.component';\nimport { StoreModule } from '@ngrx/store';\nimport { storageStateReducer } from './ngrx/reducer';\nimport { HeaderMenuComponent } from './components/header-menu/header-menu.component';\nimport { EffectsModule } from '@ngrx/effects';\nimport { SaveTableEffects } from './ngrx/effects';\nimport { KeyDisplayPipe } from './pipes/key-display';\nimport { PhoneNumberPipe } from '../utilities/pipes/phone.pipe';\nimport { RouterModule } from '@angular/router';\nimport { ArrayColumnComponent } from './components/array-column.component';\nimport { LinkColumnComponent } from './components/link-column.component';\nimport { InFilterComponent } from './components/in-filter/in-filter.component';\nimport { FormatFilterValuePipe } from './pipes/format-filter-value.pipe';\nimport { AsFilterPillsPipe } from './pipes/as-filter-pills.pipe';\nimport { FormatFilterTypePipe } from './pipes/format-filter-type.pipe';\nimport { ResizeColumnDirective } from './directives/resize-column.directive';\nimport {LetDirective} from '@ngrx/component'\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { InitializationComponent } from './components/initialization-component/initialization-component';\nimport { InListFilterComponent } from './components/filter/in-list/in-list-filter.component';\nimport { SortMenuComponent } from './components/sort-menu/sort-menu.component';\nimport { ColumnsPanelComponent } from './components/columns-panel/columns-panel.component';\nimport { FilterChipsComponent } from './components/table-container-filter/filter-list/filter-list.component';\nimport { PaginatorComponent } from './components/generic-table/paginator.component';\nimport { UtilitiesModule } from '../utilities';\nimport {\n  MatButtonToggleFilterDirective,\n  MatCheckboxTbFilterDirective,\n  MatOptionTbFilterDirective,\n  MatRadioButtonTbFilterDirective,\n  MatSlideToggleTbFilterDirective,\n  PreservePasteDelimitersDirective,\n  TableFilterDirective,\n  TableFilterStringContainsDirective,\n} from './directives';\nimport { TableWrapperDirective } from './directives/table-wrapper.directive';\nimport { GroupByListComponent } from './components/group-by-list/group-by-list.component';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { TableVirtualScrollModule } from 'ng-table-virtual-scroll';\nimport { DateTimeFilterComponent } from './components/date-time-filter/date-time-filter.component';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    MaterialModule,\n    StoreModule.forFeature('globalStorageState', storageStateReducer),\n    EffectsModule.forFeature([SaveTableEffects]),\n    FormsModule,\n    RouterModule,\n    LetDirective,\n    DragDropModule,\n    UtilitiesModule,\n    ScrollingModule,\n    TableVirtualScrollModule,\n  ],\n    exports: [\n        GenericTableComponent,\n        GenericTableVsComponent,\n        PaginatorComponent,\n        TableContainerComponent,\n        CustomCellDirective,\n        GenColDisplayerComponent,\n        GenFilterDisplayerComponent,\n        ColumnsPanelComponent,\n        FilterComponent,\n        MultiSortDirective,\n        ResizeColumnDirective,\n        MatSlideToggleTbFilterDirective,\n        MatRadioButtonTbFilterDirective,\n        MatOptionTbFilterDirective,\n        MatCheckboxTbFilterDirective,\n        MatButtonToggleFilterDirective,\n        TableFilterDirective,\n        TableFilterStringContainsDirective,\n        TableWrapperDirective,\n        GroupByListComponent,\n        PreservePasteDelimitersDirective,\n    ],\n    declarations: [\n        ColumnTotalPipe,\n        TableContainerComponent,\n        GenericTableComponent,\n        GenericTableVsComponent,\n        PaginatorComponent,\n        CustomCellDirective,\n        GenColDisplayerComponent,\n        GenFilterDisplayerComponent,\n        ColumnsPanelComponent,\n        DateFilterComponent,\n        FilterComponent,\n        MultiSortDirective,\n        NumberFilterComponent,\n        ColumnBuilderComponent,\n        ArrayColumnComponent,\n        LinkColumnComponent,\n        HeaderMenuComponent,\n        KeyDisplayPipe,\n        FormatFilterValuePipe,\n        AsFilterPillsPipe,\n        FormatFilterTypePipe,\n        ResizeColumnDirective,\n        InFilterComponent,\n        InitializationComponent,\n        InListFilterComponent,\n        SortMenuComponent,\n        FilterChipsComponent,\n        MatSlideToggleTbFilterDirective,\n        MatRadioButtonTbFilterDirective,\n        MatOptionTbFilterDirective,\n        MatCheckboxTbFilterDirective,\n        MatButtonToggleFilterDirective,\n        TableFilterDirective,\n        TableFilterStringContainsDirective,\n        TableWrapperDirective,\n        GroupByListComponent,\n        DateTimeFilterComponent,\n        PreservePasteDelimitersDirective,\n    ],\n    providers : [\n      SpaceCasePipe,\n      DatePipe,\n      CurrencyPipe,\n      PhoneNumberPipe\n    ]\n})\nexport class TableBuilderModule {\n  static forRoot(config: TableBuilderConfig): ModuleWithProviders<TableBuilderModule> {\n    return {\n      ngModule: TableBuilderModule,\n      providers: [\n        MultiSortDirective,\n        { provide : TableBuilderConfigToken , useValue: config}\n      ]\n    };\n  }\n}\n","import { isObservable, Observable, of } from 'rxjs';\nimport { MetaData, FieldType, ReportDef } from '../interfaces/report-def';\nimport { first, map, switchMap } from 'rxjs/operators';\nimport { mapArray } from '../../rxjs/rxjs-operators';\nimport { GeneralTableSettings, TableBuilderSettings } from './table-builder-general-settings';\nimport { defaultShareReplay } from '../../rxjs';\nimport { get, set } from 'lodash';\n\nexport class TableBuilder<T = any> {\n\n  metaData$: Observable<MetaData<T>[]>;\n  constructor(private data$: Observable<T[]>,  metaData$?: Observable<MetaData<T,any>[]>, settings: TableBuilderSettings | Observable<TableBuilderSettings> = new GeneralTableSettings() ) {\n    this.data$ = this.data$.pipe(defaultShareReplay());\n    this.metaData$ = metaData$ ?\n      metaData$.pipe(defaultShareReplay()) :\n      data$.pipe(first(), map( data => this.createMetaData(data[0]) ),defaultShareReplay());\n    const s = isObservable(settings) ? settings : of(settings);\n    this.settings = s.pipe(map(sett => new GeneralTableSettings(sett)),defaultShareReplay());\n  }\n  settings : Observable<GeneralTableSettings>;\n  getData$(): Observable<any[]> {\n    return this.metaData$.pipe(\n      switchMap( metaData => this.data$.pipe(\n        mapArray( data => this.cleanRecord(data, metaData ) )\n      ))\n    );\n  }\n\n  createMetaData(obj: any): MetaData [] {\n    return Object.keys(obj ?? {})\n    .map( key => ({\n      key,\n      fieldType: FieldType.Unknown,\n      order: -1\n    }));\n  }\n\n  cleanVal(val: any, metaData: MetaData): any {\n    switch ( metaData.fieldType ) {\n      case FieldType.Currency:\n      case FieldType.Number:\n        const num = Number( val );\n        return isNaN(num) || val == null ? null : num;\n      case FieldType.Date:\n        const date = Date.parse(val);\n        if(isNaN(date)){\n          return null;\n        }\n        const d = new Date(date);\n        d.setHours(0,0,0,0);\n        return d;\n      case FieldType.DateTime: \n        const dateTime = Date.parse(val);\n        if(isNaN(dateTime)){\n          return null;\n        }\n        const dt = new Date(dateTime);\n        if(metaData.additional?.dateTimeOptions?.includeMilliseconds){\n          return dt;\n        }\n        if(metaData.additional?.dateTimeOptions?.includeSeconds){\n          dt.setMilliseconds(0);\n          return dt;\n        }\n        dt.setSeconds(0, 0);\n        return dt;\n    }\n    return val;\n  }\n\n  cleanRecord( record: T, metadata: MetaData []): T  {\n    const cleaned = metadata.reduce( (prev: T, curr: MetaData<T>) => {\n      const val = this.cleanVal(get(record, curr.key), curr);\n      if(val !== undefined) {\n        set(prev as {}, curr.key, val);\n      }\n      return prev;\n    }, {...record} as T )\n    return {...record, ...cleaned};\n  }\n}\n\nexport const CreateTableBuilder = (reportDef$: Observable<ReportDef> ): TableBuilder => {\n  reportDef$ = reportDef$.pipe(defaultShareReplay());\n  return new TableBuilder(reportDef$.pipe(map( r => r.data) ), reportDef$.pipe( map ( r => r.metaData) ));\n};\n","import { Directive, ElementRef, Input, inject } from '@angular/core';\nimport { TableContainerComponent } from '../components/table-container/table-container';\nimport { Subject, takeUntil, tap } from 'rxjs';\n\n@Directive({\n    selector: 'tb-table-container[isVs]',\n    exportAs: 'vs',\n    standalone: true\n})\nexport class VirtualScrollViewportDirective {\n  private el = inject(ElementRef);\n  private tbComponent = inject(TableContainerComponent);\n\n\n  @Input() offset!: number;\n  @Input() set isVs(val: boolean | string) {\n    if (val || val === '') {\n      this._isVs = true;\n    } else {\n      this._isVs = false;\n    }\n  }\n\n  _isVs = false;\n  private resizeFn!: () => void;\n  private resizeTimeout: any;\n  destroyed$ = new Subject<void>();\n\n  addListener(callback: () => void) {\n    this.resizeFn = callback;\n    addEventListener('resize', this.resizeFn);\n  }\n\n  removeListener() {\n    if (this.resizeFn) {\n      removeEventListener('resize', this.resizeFn);\n      this.resizeFn = null!;\n    }\n    if (this.resizeTimeout) {\n      clearTimeout(this.resizeTimeout);\n    }\n  }\n\n  private adjustViewportHeight(): void {\n    const vsViewport: Element | undefined = this.el.nativeElement.children[1]?.children[0]?.children[0];\n    const vsContentWrapper: Element | undefined = vsViewport?.children[0];\n    if (!vsViewport || !vsContentWrapper) {\n      return;\n    }\n    const hasHorizontalScrollBar = vsViewport.scrollWidth > vsViewport.clientWidth;\n    const rect = vsContentWrapper.getBoundingClientRect();\n    let wrapperHeight = 0;\n    if (rect.top >= 0) {\n      wrapperHeight = rect.bottom;\n    } else {\n      wrapperHeight = rect.bottom + rect.top;\n    }\n    if (wrapperHeight < window.innerHeight) {\n      vsViewport.setAttribute('style', `height: ${vsContentWrapper.clientHeight + (hasHorizontalScrollBar ? 17 : 0)}px !important;`);\n    } else {\n      vsViewport.setAttribute('style', `height: ${window.innerHeight - this.el.nativeElement.offsetTop - (this.offset || 167)}px !important;`);\n    }\n  }\n\n  resize(): void {\n    if (this._isVs) {\n      setTimeout(() => this.adjustViewportHeight(), 0);\n    }\n  }\n\n  ngOnInit(): void {\n    if (this._isVs) {\n      this.addListener(() => {\n        clearTimeout(this.resizeTimeout);\n        this.resizeTimeout = setTimeout(() => this.adjustViewportHeight(), 100);\n      });\n    }\n  }\n\n  ngAfterViewInit(): void {\n    if (this._isVs) {\n      setTimeout(() => {\n        this.adjustViewportHeight();\n\n        this.tbComponent?.data?.pipe(\n          takeUntil(this.destroyed$),\n          tap(() => {\n            setTimeout(() => this.adjustViewportHeight(), 0);\n          })\n        ).subscribe();\n      }, 0);\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.removeListener();\n    this.destroyed$.next();\n  }\n}\n","import { Action, createFeatureSelector, createSelector } from '@ngrx/store';\nimport { createEntityAdapter, EntityState } from '@ngrx/entity';\nimport { get } from 'lodash';\n\n// State\nexport class AppStatusState {\n  readonly ActionStatusBar!: ActionStatus[];\n}\n\nexport interface StatusState {\n  ids: string[];\n  entities: {[id: string]: ActionStatus};\n}\n\nexport class ActionStatus {\n  id!: string;\n  displayName?: string;\n  status!: serverStatusTypes;\n  responsePayload?: any;\n}\n\nconst intitalState: StatusState = {\n  ids: [],\n  entities: {}\n};\n\nexport enum serverStatusTypes {\n  notStarted = 0,\n  inProgress = 1,\n  success = 2,\n  error = 3\n}\n\n// Entity and Selectors\nexport const statusAdapter = createEntityAdapter<ActionStatus>(); // { selectId: a => a.id }\nexport interface State extends EntityState<ActionStatus> {}\nexport const initialState: StatusState = statusAdapter.getInitialState(intitalState);\n\nexport const getStatusState = createFeatureSelector<State>('ActionStatus');\nexport const {\n  selectIds,\n  selectEntities,\n  selectAll,\n  selectTotal\n} = statusAdapter.getSelectors(getStatusState);\n\nexport const selectEntity = (id: string) => createSelector(\n  selectEntities,\n  (entities: any)  => entities[id]\n);\n\n// Reducers\nexport function actionStatusReducer(state: StatusState = initialState, action: Action) {\n\n  const actionStatus: ActionStatus = get(action, 'payload.actionStatus' ) as any;\n\n  if ( actionStatus ) {\n    if ( state.ids.find(id => id === actionStatus.id) ) {\n      const modifiedObj = {...state.entities[actionStatus.id] };\n      modifiedObj.status = actionStatus.status;\n      modifiedObj.responsePayload = actionStatus.responsePayload;\n      return statusAdapter.upsertOne( modifiedObj, state);\n    } else {\n      return statusAdapter.addOne(actionStatus , state);\n    }\n\n  }\n  return state;\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { actionStatusReducer } from '../ngrx';\nimport { StoreModule } from '@ngrx/store';\n\n\n\n@NgModule({\n  declarations: [],\n  imports: [\n    CommonModule,\n    StoreModule.forFeature('ActionStatus', actionStatusReducer),\n  ]\n})\nexport class NgrxExtModule { }\n","import { Component, OnInit, Input } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ActionStatus, serverStatusTypes } from '../ngrx';\nimport { delayOn } from '../../rxjs';\nimport { MatProgressSpinner } from '@angular/material/progress-spinner';\nimport { AsyncPipe } from '@angular/common';\n\n@Component({\n    selector: 'lib-action-state-spinner',\n    templateUrl: './action-state-spinner.component.html',\n    styleUrls: ['./action-state-spinner.component.css'],\n    imports: [MatProgressSpinner, AsyncPipe]\n})\nexport class ActionStateSpinnerComponent implements OnInit {\n\n  @Input() status$!: Observable<ActionStatus>;\n  serverActionStatus$!: Observable<ActionStatus>;\n  serverStatusTypes = serverStatusTypes;\n\n  ngOnInit() {\n    this.serverActionStatus$ = this.status$.pipe(\n      delayOn( a => a.status === serverStatusTypes.inProgress , 500)\n    );\n  }\n}\n","@if ((serverActionStatus$ | async)?.status === serverStatusTypes.inProgress) {\n  <div id=\"blocker\">\n    <mat-spinner class=\"spinner\" [diameter]=\"200\"></mat-spinner>\n  </div>\n}\n","import { NgModule } from '@angular/core';\nimport { ActionStateSpinnerComponent } from '../action-state-spinner/action-state-spinner.component';\n\n/** @deprecated Import ActionStateSpinnerComponent directly instead. */\n@NgModule({\n  imports: [\n    ActionStateSpinnerComponent,\n  ],\n  exports: [\n    ActionStateSpinnerComponent,\n  ]\n})\nexport class ActionStateUiModule { }\n","/*\n * Public API Surface of action-state\n */\n\nexport * from './ngrx';\nexport * from './ngrx-ext/ngrx-ext.module';\nexport * from './action-state-ui/action-state-ui.module';\nexport * from './action-state-spinner/action-state-spinner.component';\n","import { Action, createSelector, MemoizedSelector, Store } from \"@ngrx/store\";\nimport { v4 as uuid } from 'uuid';\n\nclass AppStoreCache {\n  cache: {\n    actionableSelectorId$: string,\n    [key: string]: any;\n  }[] = [];\n  isInCache = (props: any, actionableSelectorId: string): boolean => {\n    if(typeof props != 'object') props = { props };\n    const valueToCache = { ...props, actionableSelectorId$: actionableSelectorId };\n    if(this.cache.some(item => shallowEquals(item, valueToCache))) {\n      return true;\n    }\n    this.cache.push(valueToCache);\n    return false;\n  }\n}\n\nlet _store: Store<any>;\nlet _cache = new AppStoreCache();\n\nconst setStore = (store: Store) => {\n  if(store instanceof Store) _store = store;\n};\nexport function setUpStoreFactory(store: Store){\n  return () => new Promise((resolve, reject) => {\n    setStore(store);\n    resolve(null);\n  })\n}\n\n/**\n * Creates a selector that can dispatch an action if conditions are met.\n * Note: The props of the selector factory must include the props of the action.\n * @param selectorFactory A method that returns selector.\n * @param action The action that will be dispatched when conditions are met.\n * @param [dispatchIf = defaultFilter] Optional. A method that takes the result of the selector and returns a boolean. The actions gets dispatched\n * if true is returned. If no method is passed in than the action will be dispatched if the selector returns undefined or null.\n */\nexport const createActionableSelector = <State, Result, Props = any>(\n  selectorFactory: (props?: Props) => MemoizedSelector<State, Result>,\n  action: ActionReturner<Props | undefined>,\n  dispatchIf: (data: Result) => boolean = defaultFilter,\n): (props?: Props) => ActionableMemoizedSelector<State, Result> => {\n  const id = uuid();\n  const slctr = (props?: Props) => createSelector(\n    selectorFactory(props),\n    (selected: Result) => {\n      if(dispatchIf(selected) && !_cache.isInCache(props, id)){\n        _store.dispatch(action(props));\n      }\n      return selected;\n    }\n  ) as ActionableMemoizedSelector<State, Result>;\n  return slctr;\n}\n\ntype ActionableMemoizedSelector<State, Result> = MemoizedSelector<State, Result>;\n\nexport type ActionReturner<Props> = (props: Props) => Action;\n\nexport function defaultFilter(data: any) {\n  return data == null || data == undefined;\n}\n\n\n\n\n/**\n * Returns a shallow clone without prop. Will not error if prop does not exist.\n * @param prop name of property to be removed.\n * @returns a shallow clone without prop\n */\n const deleteProp = <T extends {}, Prop extends string>(t: T, prop: keyof T & Prop): Omit<T, Prop> => {\n  const copy = { ...t };\n  delete copy[prop];\n  return copy;\n}\n\nconst shallowEquals = (first: object, second: object): boolean => {\n  const firstKeys = Object.keys(first);\n  const secondKeys = Object.keys(second);\n  if(firstKeys.length !== secondKeys.length) {\n    return false;\n  }\n  for(let index = 0; index < firstKeys.length; index++) {\n    const currentKey = firstKeys[index];\n    if(first[currentKey] !== second[currentKey]){\n      return false;\n    }\n  }\n  return true;\n}\n","/*\n * Public API Surface of http-request-state\n */\n\nexport * from './http-request-state/directives';\nexport * from './http-request-state/rxjs';\nexport * from './http-request-state';\n\n\nexport * from './table-builder/table-builder.module';\n\nexport * from './table-builder/interfaces/report-def';\n\nexport * from './table-builder/classes/MatTableObservableDataSource';\n\nexport * from './table-builder/classes/table-builder';\n\nexport * from './table-builder/classes/table-builder-general-settings';\n\nexport * from './table-builder/components';\n\nexport * from './table-builder/directives';\n\nexport * from './table-builder/directives/virtual-scroll-viewport.directive';\n\nexport {FilterType} from './table-builder/enums/filterTypes';\n\nexport * from './table-builder/classes/filter-info';\n\nexport * from './table-builder/classes/table-store';\n\nexport * from './table-builder/classes/TableState';\n\nexport * from './rxjs'\n\nexport * from './utilities'\n\nexport * from './action-state';\n\nexport * from './ngrx';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["filter","map","startWith","concatMap","i2.DialogService","switchMap","merge","uuid","i1","i1.TableStore","i4","i5.FunctionPipe","i2.ArrayColumnComponent","i3.LinkColumnComponent","i4.FunctionPipe","i3","i4.StopPropagationDirective","i5.SpaceCasePipe","i5","i7","i8","i9","i10","i11","i12.StopPropagationDirective","i13.InListFilterComponent","i1.TransformCreator","i2","i3.TableStore","i4.TableTemplateService","i6","i10.StylerDirective","i11.ConditionalClassesDirective","i12.HeaderMenuComponent","i13.ResizeColumnDirective","i14.SpaceCasePipe","i15.ColumnTotalPipe","delay","i2.TableStore","i11.PaginatorComponent","i7.StopPropagationDirective","i9.SpaceCasePipe","i2.WrapperFilterStore","i8.StopPropagationDirective","i10.SpaceCasePipe","i3.AutoFocusDirective","i4.PreservePasteDelimitersDirective","i4.InFilterComponent","i5.DateFilterComponent","i6.NumberFilterComponent","i7.InFilterComponent","i8.InListFilterComponent","i9.DateTimeFilterComponent","i10.PreservePasteDelimitersDirective","i12.SpaceCasePipe","tap","i2.TableWrapperDirective","takeUntil","first","i7.FilterComponent","i9.KeyDisplayPipe","i10.FormatFilterValuePipe","i11.AsFilterPillsPipe","i12.FormatFilterTypePipe","i6.SpaceCasePipe","selectors.selectLocalProfileState","selectors.selectLocalProfileKeys","selectors.selectLocalProfileCurrentKey","scan","i4.TableWrapperDirective","i12","i13.StopPropagationDirective","i14.ClickEmitterDirective","i15.DialogDirective","i16.GenericTableComponent","i16.GenericTableVsComponent","i17.GenFilterDisplayerComponent","i18.ColumnsPanelComponent","i19.MultiSortDirective","i20.FilterChipsComponent","i21.GroupByListComponent","tableActions.setLocalProfile","tableActions.setLocalProfilesState","tableActions.deleteLocalProfilesState","i2.SortMenuComponentStore","i10.StopPropagationDirective","i11.SpaceCasePipe"],"mappings":"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"}