{"version":3,"file":"kamp-n-ng-common-tools.mjs","sources":["../../../projects/ng-common-tools/src/lib/decorators/memoize.ts","../../../projects/ng-common-tools/src/lib/decorators/memoize-stream.ts","../../../projects/ng-common-tools/src/lib/utils/check.ts","../../../projects/ng-common-tools/src/lib/utils/array.ts","../../../projects/ng-common-tools/src/lib/data/repository-cache-store.ts","../../../projects/ng-common-tools/src/lib/data/repository-invalid-id-cache-store.ts","../../../projects/ng-common-tools/src/lib/interfaces/repository.ts","../../../projects/ng-common-tools/src/lib/data/repository.ts","../../../projects/ng-common-tools/src/lib/rxjs/rx-cleaner.ts","../../../projects/ng-common-tools/src/lib/data-source/fetched-data-source.ts","../../../projects/ng-common-tools/src/lib/data-source/paginated-fetch-data-source.ts","../../../projects/ng-common-tools/src/lib/utils/unicode-encoder.ts","../../../projects/ng-common-tools/src/lib/utils/encoder.ts","../../../projects/ng-common-tools/src/lib/utils/jwt-helper.ts","../../../projects/ng-common-tools/src/lib/utils/number.ts","../../../projects/ng-common-tools/src/lib/utils/url-parser.ts","../../../projects/ng-common-tools/src/lib/utils/state-manager.ts","../../../projects/ng-common-tools/src/lib/utils/coercion.ts","../../../projects/ng-common-tools/src/lib/storage/datastore.stub.ts","../../../projects/ng-common-tools/src/lib/storage/datastore.ts","../../../projects/ng-common-tools/src/lib/mock-factories/mock-factory.ts","../../../projects/ng-common-tools/src/lib/mock-factories/dummy.ts","../../../projects/ng-common-tools/src/lib/mock-factories/hydra.ts","../../../projects/ng-common-tools/src/lib/network/helpers/hydra.ts","../../../projects/ng-common-tools/src/lib/network/helpers/api.ts","../../../projects/ng-common-tools/src/lib/network/http-endpoint.ts","../../../projects/ng-common-tools/src/lib/rxjs/array.ts","../../../projects/ng-common-tools/src/lib/rxjs/http.ts","../../../projects/ng-common-tools/src/lib/modules/common/pipes/ucfirst.ts","../../../projects/ng-common-tools/src/lib/modules/common/pipes/prepend.ts","../../../projects/ng-common-tools/src/lib/modules/common/pipes/append.ts","../../../projects/ng-common-tools/src/lib/modules/common/pipes/coalesce.ts","../../../projects/ng-common-tools/src/lib/modules/common/pipes/pad-start.ts","../../../projects/ng-common-tools/src/lib/modules/common/pipes/pad-end.ts","../../../projects/ng-common-tools/src/lib/modules/common/pipes/short-number.ts","../../../projects/ng-common-tools/src/lib/modules/common/pipes/index.ts","../../../projects/ng-common-tools/src/lib/modules/common/components/flex-scroll-container/flex-scroll-container.ts","../../../projects/ng-common-tools/src/lib/modules/common/components/flex-scroll-container/flex-scroll-container.html","../../../projects/ng-common-tools/src/lib/modules/common/components/index.ts","../../../projects/ng-common-tools/src/lib/modules/common/directives/stop-propagation.ts","../../../projects/ng-common-tools/src/lib/modules/common/directives/index.ts","../../../projects/ng-common-tools/src/lib/modules/common/common-module.ts","../../../projects/ng-common-tools/src/lib/modules/dev/directives/index.ts","../../../projects/ng-common-tools/src/lib/modules/dev/dev-module.ts","../../../projects/ng-common-tools/src/public-api.ts","../../../projects/ng-common-tools/src/kamp-n-ng-common-tools.ts"],"sourcesContent":["export function memoize(props, name, descriptor) {\n    const fn = descriptor.value;\n\n    if (typeof fn !== 'function') {\n        throw Error(`@memoize decorator can only be applied to methods got: ${typeof fn}`);\n    }\n\n    return {\n        configurable: true,\n        value: function value() {\n            const propMapName: string = '___memoize_store___';\n            if (!this.hasOwnProperty(propMapName)) {\n                Object.defineProperty(this, propMapName, {\n                    configurable: false,\n                    enumerable: false,\n                    value: {}\n                });\n            }\n            const storage = this[propMapName];\n            if (!storage.hasOwnProperty(name)) storage[name] = {};\n            const key = JSON.stringify(arguments);\n            return storage[name].hasOwnProperty(key) ? storage[name][key] : storage[name][key] = fn.apply(this, arguments);\n        }\n    };\n}\n\n","import {finalize} from 'rxjs/operators';\n\nexport function memoizeStream(props, name, descriptor) {\n    const fn = descriptor.value;\n\n    if (typeof fn !== 'function')\n        throw Error(`@memoizeStream decorator can only be applied to methods got: ${typeof fn}`);\n\n    return {\n        configurable: true,\n        value: function value() {\n            const propMapName = '___memoize_stream_store___';\n\n            if (!this.hasOwnProperty(propMapName)) {\n                Object.defineProperty(this, propMapName, {\n                    configurable: false,\n                    enumerable: false,\n                    value: {}\n                });\n            }\n\n            const storage = this[propMapName];\n            if (!storage.hasOwnProperty(name)) storage[name] = {};\n            const key = JSON.stringify(arguments);\n            if (storage[name].hasOwnProperty(key)) return storage[name][key];\n            const obs = fn.apply(this, arguments);\n            return storage[name][key] = obs.pipe(\n                finalize(() => {\n                    delete storage[name][key];\n                })\n            );\n        }\n    };\n}\n","// @dynamic\nexport class Check {\n\n\tstatic isDefined(val:any, allowNull:boolean = false) {\n\t\treturn (allowNull || val !== null) && val !== undefined;\n\t}\n\n\tstatic everyDefined(val:any[], allowNull:boolean = false) {\n\t\treturn val.every((v) => Check.isDefined(v, allowNull));\n\t}\n\n\tstatic someDefined(val:any[], allowNull:boolean = false) {\n\t\treturn val.some((v) => Check.isDefined(v, allowNull));\n\t}\n\n\tstatic propertyExists(data:any, property:PropertyKey) {\n\t\treturn data && data.hasOwnProperty(property);\n\t}\n\n\tstatic isEqual(itemA:any, itemB:any, depth:number = 1) {\n\t\tif(!(itemB instanceof Object) || !(itemA instanceof Object)) return itemA === itemB;\n\n\t\tconst keys = Object.keys(itemB);\n\t\tif(keys.length !== Object.keys(itemA).length) return false;\n\n\t\treturn --depth > 0 ?\n\t\t\tkeys.every((key) => Check.isEqual(itemA[key], itemB[key], depth)) :\n\t\t\tkeys.every((key) => itemA[key] === itemB[key]);\n\t}\n\n\tstatic isEmpty(val:string | any[] | object) {\n\t\tif(!val) return true;\n\t\tif(typeof val === 'string' || val instanceof Array) return val.length === 0;\n\t\tif(val instanceof Object) return Object.keys(val).length === 0;\n\t\treturn false;\n\t}\n\n}\n","import {Check} from './check';\n\n// @dynamic\nexport class ArrayUtils {\n\n\tstatic asArray(data?: any | any[]) {\n\t\tif(!Check.isDefined(data)) return [];\n\t\treturn data instanceof Array ? data : [data];\n\t}\n\n\tstatic isArrayOfLength(subject: any, expectedLength: number): boolean {\n\t\treturn Array.isArray(subject) && subject.length === expectedLength;\n\t}\n\n\tstatic intersect<T>(...arrs: T[][]): T[] {\n\t\treturn ArrayUtils.asArray(arrs).slice(1).reduce(function(current, arr) {\n\t\t\tarr = ArrayUtils.asArray(arr);\n\t\t\tif(!current) return arr;\n\t\t\treturn intersect(current, arr);\n\t\t}, ArrayUtils.asArray(arrs[0]));\n\t}\n\n\tstatic except<T>(...arrs: T[][]): T[] {\n\t\treturn ArrayUtils.asArray(arrs).slice(1).reduce(function(current, arr) {\n\t\t\tarr = ArrayUtils.asArray(arr);\n\t\t\tif(!current) return arr;\n\t\t\treturn except(current, arr);\n\t\t}, ArrayUtils.asArray(arrs[0]));\n\t}\n\n\tstatic uniq<T>(array: T[]): T[] {\n\t\treturn [...new Set(array).values()];\n\t}\n\n}\n\nfunction intersect<T>(a: T[], b: T[]): T[] {\n\tconst setB: Set<T> = new Set(b);\n\treturn [...new Set(a)].filter(x => setB.has(x));\n}\n\nfunction except<T>(a: T[], b: T[]): T[] {\n\tconst setB: Set<T> = new Set(b);\n\treturn [...new Set(a)].filter(x => !setB.has(x));\n}\n","import {DataStore} from '../interfaces/datastore';\nimport {Observable, of} from 'rxjs';\nimport {CacheStore, Perishable, Timestamp} from '../interfaces/repository';\nimport {distinctUntilChanged, map} from 'rxjs/operators';\nimport {ArrayUtils} from '../utils/array';\nimport {Check} from '../utils/check';\nimport {DateTime} from 'luxon';\n\nexport enum StoreStrategy {\n    Merge, Replace\n}\n\nexport class RepositoryCacheStore<T extends Perishable> {\n\n    constructor(readonly namespace: string, protected store: DataStore) {\n    }\n\n    protected get storeKey() { return `cache_repo_store:${this.namespace}`; }\n\n    public setExtractIdentifierStrategy(fn: (T) => any) {\n        this.extractIdentifierFn = fn;\n    }\n\n    public observeCache(): Observable<CacheStore<T>> {\n        return this.store.observe(this.storeKey).pipe(map((cache: CacheStore<T>) => cache || {}));\n    }\n\n    public observe(ids?: any | any[]): Observable<T[]> {\n        if (ArrayUtils.isArrayOfLength(ids, 0)) return of([]);\n        ids = ArrayUtils.asArray(ids);\n        return this.observeCache().pipe(\n            map((cache: CacheStore<T>) => this.cacheToList(cache, ids)),\n            distinctUntilChanged((a, b) => {\n                if (a.length !== b.length) return false;\n                for (let i = 0; i < a.length; i++) if (a[i] !== b[i]) return false;\n                return true;\n            }),\n        );\n    }\n\n    public pull(ids?: any | any[]): T[] {\n        return this.cacheToList(this.getCache(), ArrayUtils.asArray(ids));\n    }\n\n    public push(data: T[] | T, strategy: StoreStrategy = StoreStrategy.Merge): T[] {\n        data = ArrayUtils.asArray(data) as T[];\n        let toStore: CacheStore<T> = data.reduce((s: CacheStore<T>, o: any) => {\n            s[this.extractIdentifierFn(o)] = o;\n            return s;\n        }, {});\n        if (strategy === StoreStrategy.Merge) toStore = Object.assign({}, this.getCache(), toStore);\n        this.store.push(this.storeKey, toStore);\n        return data;\n    }\n\n    public removeItems(ids: any | any[]): T[] {\n        ids = ArrayUtils.asArray(ids);\n        const cache: CacheStore<T> = {...this.getCache()};\n\n        const items = ids.map((id) => {\n            const item = cache[id];\n            delete cache[id];\n            return item;\n        }).filter((item) => !!item);\n\n        this.store.push(this.storeKey, cache);\n        return items;\n    }\n\n    public dataToIdentifier(data: T): any {\n        return this.extractIdentifierFn(data);\n    }\n\n    public set(id: any, data: T) {\n        const toStore = Object.assign({}, this.getCache(), {[id]: data});\n        this.store.push(this.storeKey, toStore);\n    }\n\n    public clear() {\n        this.store.clear(this.storeKey);\n    }\n\n    public getCache(): CacheStore<T> {\n        return this.store.pull(this.storeKey) || {};\n    }\n\n    public getMissingIdentifiers(ids: any | any[], outdatedAsMissing: boolean = true): any[] {\n        ids = ArrayUtils.asArray(ids);\n        const cache = this.getCache();\n\n        const now: Timestamp = DateTime.now().toUnixInteger();\n        return ids.filter((id: any) => !cache[id] || (outdatedAsMissing && this.isOutdated(cache[id], now)));\n    }\n\n    public getOutdatedCachedIdentifiers() {\n        const now: Timestamp = DateTime.now().toUnixInteger();\n        const cache = this.getCache();\n        return Object.keys(cache).filter((id: any) => this.isOutdated(cache[id], now));\n    }\n\n    public isMissingIdentifier(id: any): boolean {\n        const cache = this.getCache();\n        return !cache[id];\n    }\n\n    public isOutdated(datum: T, time?: Timestamp) {\n        if (!Check.isDefined(time)) time = DateTime.now().toUnixInteger();\n        return datum && datum.expiryDate !== undefined && datum.expiryDate !== 0 && datum.expiryDate < time;\n    }\n\n    protected extractIdentifierFn: (T) => any = (item: T) => item.id;\n\n    protected cacheToList(store: CacheStore<T>, ids?: any[]): T[] {\n        if (ids.length === 0) ids = Object.keys(store);\n        const list = [];\n        for (const id of ids) if (id in store) list.push(store[id]);\n        return list;\n    }\n\n}\n","import {DataStore} from '../interfaces/datastore';\nimport {ArrayUtils} from '../utils/array';\n\nexport class RepositoryInvalidIdCacheStore {\n    constructor(readonly namespace, protected store: DataStore) {}\n\n    protected get storeKey() {\n        return `cache_repo_store:invalid_ids:${this.namespace}`;\n    }\n\n    public add(ids: any[] | any): any[] {\n        const current: any[] = this.pull();\n        const newList = ArrayUtils.uniq([...ids, ...current]);\n        return this.push(newList);\n    }\n\n    public push(ids: any[]): any[] {\n        return this.store.push(this.storeKey, ids);\n    }\n\n    public pull(): any[] {\n        return this.store.pull(this.storeKey) || [];\n    }\n\n    public clear(): void {\n        this.store.clear(this.storeKey);\n    }\n\n    public filterInvalidIds(ids: any[]): any[] {\n        const invalidIds: any[] = this.pull();\n        return ids.filter((id: any) => !~invalidIds.indexOf(id));\n    }\n\n}\n","export type Timestamp = number;\nexport const PerishableTTL = 60 * 30;\n\nexport interface Perishable {\n    expiryDate?: Timestamp;\n\n    [prop: string]: any;\n}\n\nexport interface CacheStore<T extends Perishable> {\n    [identifier: string]: any;\n}\n\nexport interface RepositoryLoadQuery {\n    ids?: any[];\n\n    [prop: string]: any;\n}\n","import {Observable, of} from 'rxjs';\nimport {DataStore} from '../interfaces/datastore';\nimport {RepositoryCacheStore, StoreStrategy} from './repository-cache-store';\nimport {catchError, first, map, shareReplay, switchMap, tap} from 'rxjs/operators';\nimport {RepositoryInvalidIdCacheStore} from './repository-invalid-id-cache-store';\nimport {Perishable, PerishableTTL, RepositoryLoadQuery, Timestamp} from '../interfaces/repository';\nimport {memoizeStream} from '../decorators/memoize-stream';\nimport {Check} from '../utils/check';\nimport {ArrayUtils} from '../utils/array';\nimport {DateTime} from 'luxon';\n\nexport enum UpdateCacheStrategy {\n    Replace, Merge\n}\n\nexport interface RepositoryOptions {\n    /**\n     * item time to live, the repository triggers queryData if the data's outdated\n     * 0 means infinite ttl\n     */\n    itemTTL?: number;\n}\n\nexport abstract class Repository<T extends Perishable, SearchQuery = any> {\n\n    protected cache: RepositoryCacheStore<T>;\n    protected invalidIdCache: RepositoryInvalidIdCacheStore;\n    protected options: RepositoryOptions;\n\n    constructor(readonly namespace: string, store: DataStore, options: RepositoryOptions = {}) {\n        this.options = {...options, itemTTL: PerishableTTL};\n        this.cache = new RepositoryCacheStore(this.namespace, store);\n        this.invalidIdCache = new RepositoryInvalidIdCacheStore(this.namespace, store);\n    }\n\n    get cacheStore(): RepositoryCacheStore<T> {\n        return this.cache;\n    }\n\n    abstract queryData(query?: SearchQuery & RepositoryLoadQuery): Observable<T[]>;\n\n    public isOutdated(id: any, missingAsOutdated: boolean = false): boolean {\n        const missing: boolean = this.cache.isMissingIdentifier(id);\n        if (missing) return missingAsOutdated;\n        const item = this.cache.pull(id)[0];\n        return this.cache.isOutdated(item);\n    }\n\n    public pull(ids?: any | any[]): T[] {\n        return this.cache.pull(ids);\n    }\n\n    public observe(ids?: any | any[]): Observable<T[]> {\n        return this.cache.observe(ids);\n    }\n\n    public dataToIdentifier(datum: T): any {\n        return this.cache.dataToIdentifier(datum);\n    }\n\n    public dataToIdentifiers(data: T[]): any[] {\n        return data.map((datum: T) => this.cache.dataToIdentifier(datum));\n    }\n\n    public get(ids: any | any[], refreshOutdated: boolean = true): Observable<T[]> {\n        const missingIds: any[] = this.cache.getMissingIdentifiers(ids, refreshOutdated);\n\n        const obs: Observable<T[]> = missingIds.length > 0 ? this.loadByIds(missingIds) : of(null);\n        return obs.pipe(\n            map(() => this.cache.pull(ids)),\n            first()\n        );\n    }\n\n    public getOne(id: any, refreshOutdated: boolean = true): Observable<T> {\n        return this.get(id, refreshOutdated).pipe(\n            map(([item]: any) => item)\n        );\n    }\n\n    public refresh(ids?: any | any[]): Observable<T[]> {\n        if (!Check.isDefined(ids)) ids = this.cache.getOutdatedCachedIdentifiers();\n        ids = ArrayUtils.asArray(ids);\n        this.markAsOutdated(ids);\n        return this.loadByIds(ids).pipe(map(() => this.cache.pull(ids)));\n    }\n\n    public load(query?: SearchQuery & RepositoryLoadQuery, observeResults: boolean = false): Observable<T[]> {\n        const ob: Observable<T[]> = this._load(query);\n        if (!observeResults) return ob;\n        return ob.pipe(\n            switchMap((data: T[]) => {\n                if (data.length === 0) return of([]);\n                const ids: any[] = data.map((datum: T) => this.cache.dataToIdentifier(datum));\n                return this.observe(ids);\n            })\n        );\n    }\n\n    public reload(query?: SearchQuery & RepositoryLoadQuery, observeResults: boolean = false): Observable<T[]> {\n        const ob: Observable<T[]> = this._load(query, StoreStrategy.Replace);\n        if (!observeResults) return ob;\n        return ob.pipe(\n            switchMap((data: T[]) => {\n                if (data.length === 0) return of([]);\n                const ids: any[] = data.map((datum: T) => this.cache.dataToIdentifier(datum));\n                return this.observe(ids);\n            })\n        );\n    }\n\n    public clear(): void {\n        this.cache.clear();\n    }\n\n    public markAsOutdated(ids: any | any[]): boolean {\n        ids = ArrayUtils.asArray(ids);\n        if (ids.length === 0) return false;\n\n        const data = this.cache.pull(ids) as any[];\n        for (const datum of data) datum.expiryDate = 1;\n        this.cache.push(data, StoreStrategy.Merge);\n\n        return data.length > 0;\n    }\n\n    public markAllAsOutdated(): boolean {\n        const data: any[] = this.cache.pull();\n        for (const datum of data) datum.expiryDate = 1;\n        this.cache.push(data, StoreStrategy.Merge);\n        return data.length > 0;\n    }\n\n    public markMatchingItemsAsOutdated(fn: (item: T) => boolean): boolean {\n        const data: any[] = this.cache.pull();\n        for (const datum of data) if (fn(datum)) datum.expiryDate = 1;\n        this.cache.push(data, StoreStrategy.Merge);\n        return data.length > 0;\n    }\n\n    public updateCachedItem(id: any, data: any, refreshTTL: boolean = true, strategy: UpdateCacheStrategy = UpdateCacheStrategy.Merge): T {\n        const items: any[] = this.cache.pull(id);\n        if (items.length === 0) return null;\n        let item: T = strategy === UpdateCacheStrategy.Replace ? data : this.mergeItem(items[0], data);\n        if (refreshTTL) item = this.setItemTTL(item);\n        this.cache.set(id, item);\n        return item;\n    }\n\n    public removeCachedItems(ids: any | any[]): T[] {\n        return this.cache.removeItems(ids);\n    }\n\n    public cacheItems(data: T | T[], strategy: StoreStrategy = StoreStrategy.Merge): T[] {\n        const now: Timestamp = DateTime.now().toUnixInteger();\n        const items: T[] = ArrayUtils.asArray(data).map((item: any) => this.setItemTTL(item, now));\n        return this.cache.push(items, strategy);\n    }\n\n    @memoizeStream\n    protected _load(query?: SearchQuery & RepositoryLoadQuery, strategy?: StoreStrategy): Observable<T[]> {\n        return this.queryData(query).pipe(\n            map((data: any) => this.cacheItems(data, strategy)),\n            catchError(() => of([])),\n            shareReplay()\n        );\n    }\n\n    protected setItemTTL(data: any, time: Timestamp = DateTime.now().toUnixInteger()): T {\n        // An expiry date of 0 means that the item will never expire\n        if (data.expiryDate === 0) return data;\n        const expiryDate = this.options.itemTTL > 0 ? time + this.options.itemTTL : 0;\n        return Object.assign(data, {expiryDate});\n    }\n\n    protected loadByIds(ids: any[]): Observable<T[]> {\n        ids = this.invalidIdCache.filterInvalidIds(ids);\n        if (ids.length === 0) return of([]);\n        return this.load({ids} as any).pipe(\n            tap(() => {\n                const notLoaded: any[] = this.cache.getMissingIdentifiers(ids);\n                if (notLoaded.length > 0) this.invalidIdCache.add(notLoaded);\n            }),\n        );\n    }\n\n    protected mergeItem(item: T, data: any): T {\n        return Object.assign({}, item, data);\n    }\n\n}\n","import {filter, takeUntil} from 'rxjs/operators';\nimport {MonoTypeOperatorFunction, Observable, Subject} from 'rxjs';\n\nexport class RxCleaner<T = string> {\n\n\tprotected stream:Subject<T> = new Subject();\n\n\tunsubscribe(namespace:T) {\n\t\tthis.stream.next(namespace);\n\t}\n\n\tunsubscribeAll() {\n\t\tthis.stream.next(null);\n\t}\n\n\ttakeUntil(namespace:T = null):MonoTypeOperatorFunction<any> {\n\t\tconst obs:Observable<T> = this.stream.pipe(\n\t\t  filter((ns:T) => ns === null || namespace === ns),\n\t\t);\n\t\treturn takeUntil(obs);\n\t}\n\n\tcomplete() {\n\t\tthis.unsubscribeAll();\n\t\tthis.stream.complete();\n\t}\n\n}\n","import {DataSource} from '@angular/cdk/table';\nimport {BehaviorSubject, merge, Observable, ReplaySubject, Subject} from 'rxjs';\nimport {distinctUntilChanged, filter, map, switchMap, tap} from 'rxjs/operators';\nimport {FetchQueryFilter, FetchQueryFilters, FetchQueryPagination, FetchQuerySort, SourceStore} from '../interfaces/datasource';\nimport {RxCleaner} from '../rxjs/rx-cleaner';\nimport {CollectionViewer} from '@angular/cdk/collections';\nimport {Check} from '../utils/check';\nimport {ArrayUtils} from '../utils/array';\n\nexport interface FetchedDataSourceConfig {\n\tpagination?:{ page?:number, limit?:number };\n\tsort?:FetchQuerySort;\n\tfilters?:FetchQueryFilters;\n\tfetchAtInit?:boolean;\n}\n\nexport type ReplaceFilterFn = (filter:FetchQueryFilter, index:number) => FetchQueryFilter;\n\nexport class FetchedDataSource<T> extends DataSource<T> {\n\n\tprotected readonly _totalChange = new BehaviorSubject<number>(this.store.total);\n\tprotected readonly _fetching = new BehaviorSubject<boolean>(false);\n\tprotected readonly renderData = new BehaviorSubject<T[]>([]);\n\tprotected readonly paginationChange = new ReplaySubject<FetchQueryPagination>(1);\n\tprotected readonly filtersChange = new Subject<FetchQueryFilters>();\n\tprotected readonly _reload = new Subject<boolean>();\n\tprotected readonly sortChange = new Subject<FetchQuerySort>();\n\tprotected readonly rc:RxCleaner = new RxCleaner();\n\tprotected listenchanges:boolean = false;\n\tprotected offChanged:boolean = false;\n\n\tconstructor(protected store:SourceStore<T>, {pagination, sort, filters, fetchAtInit}:FetchedDataSourceConfig = {}) {\n\t\tsuper();\n\t\tthis.pagination = Object.assign({limit: 10, page: 0}, pagination);\n\t\tif(sort) this._sort = sort;\n\t\tif(filters) this._filters = filters;\n\t\tif(fetchAtInit !== false) {\n\t\t\tthis.listenchanges = true;\n\t\t\tthis.updateDataChangeSubscription();\n\t\t\tthis.updateRenderChangeSubscription();\n\t\t}\n\t}\n\n\tprotected _filters:FetchQueryFilters;\n\n\tget filters():FetchQueryFilters { return this._filters || []; }\n\n\tset filters(filters:FetchQueryFilters) {\n\t\tconst updated = !Check.isEqual(this._filters, filters, 3);\n\t\tif(updated) {\n\t\t\tif(!this.listenchanges) this.handleOfflineChange();\n\t\t\tthis.filtersChange.next(this._filters = filters);\n\t\t}\n\t}\n\n\tprotected _sort:FetchQuerySort;\n\n\tget sort():FetchQuerySort { return this._sort || {} as FetchQuerySort; }\n\n\tset sort(sort:FetchQuerySort) {\n\t\tconst updated = !Check.isEqual(this._sort, sort, 3);\n\t\tif(updated) {\n\t\t\tif(!this.listenchanges) this.handleOfflineChange();\n\t\t\tthis.sortChange.next(this._sort = sort);\n\t\t}\n\t}\n\n\tprotected _pagination:FetchQueryPagination;\n\n\tget pagination():FetchQueryPagination { return this._pagination; }\n\n\tset pagination(pagination:FetchQueryPagination) {\n\t\tthis.paginationChange.next(this._pagination = pagination);\n\t}\n\n\tget totalChange():Observable<number> { return this._totalChange; }\n\n\tget isFetching():boolean { return this._fetching.value; }\n\n\tget fetching():Observable<boolean> { return this._fetching.asObservable(); }\n\n\tget total():number { return this._totalChange.value; }\n\n\tget totalLoaded() { return this.store.length; }\n\n\treload(page?:number) {\n\t\tthis.store.clear();\n\t\tif(Check.isDefined(page)) {\n\t\t\tif(!this.listenchanges) this.handleOfflineChange();\n\t\t\tthis._reload.next(true);\n\t\t}\n\t\telse {\n\t\t\tconst changed = this.updatePagination({page});\n\t\t\tif(!changed) this._reload.next(true);\n\t\t}\n\t}\n\n\tupdatePagination(pagination:{ page?:number, limit?:number }):boolean {\n\t\tconst value = Object.assign({}, this.pagination, pagination);\n\t\tconst updated = !Check.isEqual(this.pagination, value);\n\t\tthis.pagination = value;\n\t\treturn updated;\n\t}\n\n\tupdateSort(sort:{ operand?:string, direction?:'asc' | 'desc' }):boolean {\n\t\tconst value = Object.assign({}, this.sort, sort);\n\t\tconst updated = !Check.isEqual(this.sort, value);\n\t\tthis.sort = value;\n\t\treturn updated;\n\t}\n\n\taddFilters(filters:FetchQueryFilters | FetchQueryFilter) {\n\t\tthis.filters = [...this.filters, ...ArrayUtils.asArray(filters)];\n\t}\n\n\tconnect(collectionViewer:CollectionViewer):Observable<T[] | ReadonlyArray<T>> {\n\t\tif(!this.listenchanges) {\n\t\t\tthis.listenchanges = true;\n\t\t\tthis.updateDataChangeSubscription();\n\t\t\tthis.updateRenderChangeSubscription();\n\t\t\tif(this.offChanged) this._reload.next(false);\n\t\t}\n\t\treturn this.renderData;\n\t}\n\n\tdisconnect(collectionViewer:CollectionViewer):void {\n\t\tthis.listenchanges = false;\n\t\tthis.rc.unsubscribe('store_change');\n\t\tthis.rc.unsubscribe('render_change');\n\t}\n\n\tdestroy() {\n\t\tthis._fetching.complete();\n\t\tthis.renderData.complete();\n\t\tthis.paginationChange.complete();\n\t\tthis.filtersChange.complete();\n\t\tthis._reload.complete();\n\t\tthis.sortChange.complete();\n\t\tthis.rc.complete();\n\t}\n\n\tprotected handleOfflineChange() {\n\t\tthis._pagination = {...this._pagination, page: 0};\n\t\tthis.offChanged = true;\n\t}\n\n\tprotected updateDataChangeSubscription() {\n\n\t\tconst filterChange = this.filtersChange.pipe(\n\t\t\tdistinctUntilChanged((a, b) => Check.isEqual(a, b, 3)),\n\t\t\tmap(() => true)\n\t\t);\n\n\t\tconst sortChange = this.sortChange.pipe(\n\t\t\tdistinctUntilChanged(Check.isEqual),\n\t\t\tmap(() => true)\n\t\t);\n\n\t\tconst stream = merge(sortChange, filterChange, this._reload)\n\t\t\t.pipe(\n\t\t\t\ttap((resetPagination:boolean) => {\n\t\t\t\t\tthis.offChanged = false;\n\t\t\t\t\tif(resetPagination) this._pagination = {...this._pagination, page: 0};\n\t\t\t\t\tthis.store.clear();\n\t\t\t\t\tthis._totalChange.next(undefined);\n\t\t\t\t})\n\t\t\t);\n\n\t\tconst fetchOutOfBound = this.paginationChange.pipe(\n\t\t\tfilter(({page, limit}) => !this.store.isChunkLoaded(page * limit, page * limit + limit)),\n\t\t);\n\n\t\tthis.rc.unsubscribe('store_change');\n\t\tmerge(stream, fetchOutOfBound).pipe(\n\t\t\ttap(() => this._fetching.next(true)),\n\t\t\tswitchMap(() => this.fetchData()),\n\t\t\tthis.rc.takeUntil('store_change'),\n\t\t).subscribe(({total}) => {\n\t\t\tthis._totalChange.next(total);\n\t\t\tthis._fetching.next(false);\n\t\t});\n\t}\n\n\tprotected updateRenderChangeSubscription() {\n\t\tthis.rc.unsubscribe('render_change');\n\t\tthis.store.storeChange.pipe(\n\t\t\tswitchMap(() => this.store.observe(0)),\n\t\t\tthis.rc.takeUntil('render_change')\n\t\t).subscribe(data => this.renderData.next(data));\n\t}\n\n\tprotected fetchData():Observable<{ total:number, data:T[] }> {\n\t\treturn this.store.fetch({\n\t\t\tsort: this._sort,\n\t\t\tfilters: this._filters,\n\t\t\tpagination: this._pagination\n\t\t});\n\t}\n\n}\n","import {distinctUntilChanged, filter, switchMap} from 'rxjs/operators';\nimport {FetchedDataSource} from './fetched-data-source';\nimport {merge} from 'rxjs';\nimport {Check} from '../utils/check';\n\nexport class PaginatedFetchedDataSource<T> extends FetchedDataSource<T> {\n\n    protected updateRenderChangeSubscription() {\n        this.rc.unsubscribe('render_change');\n\n        const paginationChange = this.paginationChange.pipe(\n            distinctUntilChanged(Check.isEqual),\n            filter(({page, limit}) => this.store.isChunkLoaded(page * limit, page * limit + limit))\n        );\n\n        merge(paginationChange, this.store.storeChange).pipe(\n            switchMap(() => {\n                const {limit, page} = this.pagination;\n                return this.store.observe(page * limit, page * limit + limit);\n            }),\n            this.rc.takeUntil('render_change')\n        ).subscribe(data => this.renderData.next(data));\n    }\n}\n","/* istanbul ignore next */\n\n// @dynamic\nexport class UnicodeEncoder {\n\n    static toBase64(value: string): string {\n        const inUTF8 = UnicodeEncoder.strToUTF8Arr(value);\n        return UnicodeEncoder.base64EncArr(inUTF8);\n    }\n\n    static fromBase64(base64: string): string {\n        const outUT8 = UnicodeEncoder.base64DecToArr(base64);\n        return UnicodeEncoder.UTF8ArrToStr(outUT8);\n    }\n\n    static b64ToUint6(nChr: number) {\n        return nChr > 64 && nChr < 91 ?\n            nChr - 65\n            : nChr > 96 && nChr < 123 ?\n                nChr - 71\n                : nChr > 47 && nChr < 58 ?\n                    nChr + 4\n                    : nChr === 43 ?\n                        62\n                        : nChr === 47 ?\n                            63\n                            :\n                            0;\n    }\n\n    static base64DecToArr(sBase64: string, nBlocksSize?: number): Uint8Array {\n\n        const\n            sB64Enc = sBase64.replace(/[^A-Za-z0-9\\+\\/]/g, ''), nInLen = sB64Enc.length,\n            nOutLen = nBlocksSize ? Math.ceil((nInLen * 3 + 1 >> 2) / nBlocksSize) * nBlocksSize : nInLen * 3 + 1 >> 2,\n            taBytes = new Uint8Array(nOutLen);\n\n        for (let nMod3, nMod4, nUint24 = 0, nOutIdx = 0, nInIdx = 0; nInIdx < nInLen; nInIdx++) {\n            nMod4 = nInIdx & 3;\n            nUint24 |= UnicodeEncoder.b64ToUint6(sB64Enc.charCodeAt(nInIdx)) << 18 - 6 * nMod4;\n            if (nMod4 === 3 || nInLen - nInIdx === 1) {\n                for (nMod3 = 0; nMod3 < 3 && nOutIdx < nOutLen; nMod3++, nOutIdx++) {\n                    taBytes[nOutIdx] = nUint24 >>> (16 >>> nMod3 & 24) & 255;\n                }\n                nUint24 = 0;\n            }\n        }\n\n        return taBytes;\n    }\n\n    /* encodage d'un tableau en une chaîne en base64 */\n\n    static uint6ToB64(nUint6: number) {\n        return nUint6 < 26 ?\n            nUint6 + 65\n            : nUint6 < 52 ?\n                nUint6 + 71\n                : nUint6 < 62 ?\n                    nUint6 - 4\n                    : nUint6 === 62 ?\n                        43\n                        : nUint6 === 63 ?\n                            47\n                            :\n                            65;\n    }\n\n    static base64EncArr(aBytes: Uint8Array) {\n        let nMod3 = 2, sB64Enc = '';\n\n        for (let nLen = aBytes.length, nUint24 = 0, nIdx = 0; nIdx < nLen; nIdx++) {\n            nMod3 = nIdx % 3;\n            //if (nIdx > 0 && (nIdx * 4 / 3) % 76 === 0) sB64Enc += '\\r\\n';\n            nUint24 |= aBytes[nIdx] << (16 >>> nMod3 & 24);\n            if (nMod3 === 2 || aBytes.length - nIdx === 1) {\n                sB64Enc += String.fromCharCode(\n                    UnicodeEncoder.uint6ToB64(nUint24 >>> 18 & 63),\n                    UnicodeEncoder.uint6ToB64(nUint24 >>> 12 & 63),\n                    UnicodeEncoder.uint6ToB64(nUint24 >>> 6 & 63),\n                    UnicodeEncoder.uint6ToB64(nUint24 & 63)\n                );\n                nUint24 = 0;\n            }\n        }\n\n        return sB64Enc.substr(0, sB64Enc.length - 2 + nMod3) + (nMod3 === 2 ? '' : nMod3 === 1 ? '=' : '==');\n\n    }\n\n    /* Tableau UTF-8 en DOMString et vice versa */\n\n    static UTF8ArrToStr(aBytes: Uint8Array) {\n\n        let sView = '';\n\n        for (let nPart, nLen = aBytes.length, nIdx = 0; nIdx < nLen; nIdx++) {\n            nPart = aBytes[nIdx];\n            sView += String.fromCharCode(\n                nPart > 251 && nPart < 254 && nIdx + 5 < nLen ? /* six bytes */\n                    /* (nPart - 252 << 32) n'est pas possible pour ECMAScript donc, on utilise un contournement... : */\n                    (nPart - 252) * 1073741824 + (aBytes[++nIdx] - 128 << 24) + (aBytes[++nIdx] - 128 << 18) + (aBytes[++nIdx] - 128 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\n                    : nPart > 247 && nPart < 252 && nIdx + 4 < nLen ? /* five bytes */\n                    (nPart - 248 << 24) + (aBytes[++nIdx] - 128 << 18) + (aBytes[++nIdx] - 128 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\n                    : nPart > 239 && nPart < 248 && nIdx + 3 < nLen ? /* four bytes */\n                        (nPart - 240 << 18) + (aBytes[++nIdx] - 128 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\n                        : nPart > 223 && nPart < 240 && nIdx + 2 < nLen ? /* three bytes */\n                            (nPart - 224 << 12) + (aBytes[++nIdx] - 128 << 6) + aBytes[++nIdx] - 128\n                            : nPart > 191 && nPart < 224 && nIdx + 1 < nLen ? /* two bytes */\n                                (nPart - 192 << 6) + aBytes[++nIdx] - 128\n                                : /* nPart < 127 ? */ /* one byte */\n                                nPart\n            );\n        }\n\n        return sView;\n\n    }\n\n    static strToUTF8Arr(sDOMStr: string): Uint8Array {\n\n        let aBytes, nChr, nStrLen = sDOMStr.length, nArrLen = 0;\n\n        /* mapping... */\n\n        for (var nMapIdx = 0; nMapIdx < nStrLen; nMapIdx++) {\n            nChr = sDOMStr.charCodeAt(nMapIdx);\n            nArrLen += nChr < 0x80 ? 1 : nChr < 0x800 ? 2 : nChr < 0x10000 ? 3 : nChr < 0x200000 ? 4 : nChr < 0x4000000 ? 5 : 6;\n        }\n\n        aBytes = new Uint8Array(nArrLen);\n\n        /* transcription... */\n\n        for (var nIdx = 0, nChrIdx = 0; nIdx < nArrLen; nChrIdx++) {\n            nChr = sDOMStr.charCodeAt(nChrIdx);\n            if (nChr < 128) {\n                /* one byte */\n                aBytes[nIdx++] = nChr;\n            } else if (nChr < 0x800) {\n                /* two bytes */\n                aBytes[nIdx++] = 192 + (nChr >>> 6);\n                aBytes[nIdx++] = 128 + (nChr & 63);\n            } else if (nChr < 0x10000) {\n                /* three bytes */\n                aBytes[nIdx++] = 224 + (nChr >>> 12);\n                aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);\n                aBytes[nIdx++] = 128 + (nChr & 63);\n            } else if (nChr < 0x200000) {\n                /* four bytes */\n                aBytes[nIdx++] = 240 + (nChr >>> 18);\n                aBytes[nIdx++] = 128 + (nChr >>> 12 & 63);\n                aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);\n                aBytes[nIdx++] = 128 + (nChr & 63);\n            } else if (nChr < 0x4000000) {\n                /* five bytes */\n                aBytes[nIdx++] = 248 + (nChr >>> 24);\n                aBytes[nIdx++] = 128 + (nChr >>> 18 & 63);\n                aBytes[nIdx++] = 128 + (nChr >>> 12 & 63);\n                aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);\n                aBytes[nIdx++] = 128 + (nChr & 63);\n            } else /* if (nChr <= 0x7fffffff) */ {\n                /* six bytes */\n                aBytes[nIdx++] = 252 + /* (nChr >>> 32) is not possible in ECMAScript! So...: */ (nChr / 1073741824);\n                aBytes[nIdx++] = 128 + (nChr >>> 24 & 63);\n                aBytes[nIdx++] = 128 + (nChr >>> 18 & 63);\n                aBytes[nIdx++] = 128 + (nChr >>> 12 & 63);\n                aBytes[nIdx++] = 128 + (nChr >>> 6 & 63);\n                aBytes[nIdx++] = 128 + (nChr & 63);\n            }\n        }\n\n        return aBytes;\n\n    }\n\n}\n","/* istanbul ignore next */\n\n// @dynamic\nexport class Encoder {\n\n    static urlBase64Decode(str: string): string {\n        let output = str.replace(/-/g, '+').replace(/_/g, '/');\n        switch(output.length % 4) {\n            case 0: {\n                break;\n            }\n            case 2: {\n                output += '==';\n                break;\n            }\n            case 3: {\n                output += '=';\n                break;\n            }\n            default: {\n                throw 'Illegal base64url string!';\n            }\n        }\n        return this.b64DecodeUnicode(output);\n    }\n\n    // credits for decoder goes to https://github.com/atk\n    static b64decode(str: string): string {\n        let chars =\n            'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n        let output: string = '';\n\n        str = String(str).replace(/=+$/, '');\n\n        if (str.length % 4 === 1) throw new Error('\"atob\" failed: The string to be decoded is not correctly encoded.');\n\n        for (\n            // initialize result and counters\n            let bc: number = 0, bs: any, buffer: any, idx: number = 0;\n            // get next character\n            (buffer = str.charAt(idx++));\n            // character found in table? initialize bit storage and add its ascii value;\n            ~buffer &&\n            (\n                (bs = bc % 4 ? bs * 64 + buffer : buffer),\n                    // and if not first of each 4 characters,\n                    // convert the first 8 bits to one ascii character\n                bc++ % 4\n            )\n                ? (output += String.fromCharCode(255 & (bs >> ((-2 * bc) & 6))))\n                : 0\n        ) {\n            // try to find character in table (0-63, not found => -1)\n            buffer = chars.indexOf(buffer);\n        }\n        return output;\n    }\n\n    static b64DecodeUnicode(str: any) {\n        return decodeURIComponent(\n            Array.prototype.map\n                .call(this.b64decode(str), (c: any) => {\n                    return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\n                })\n                .join('')\n        );\n    }\n}\n","import {Encoder} from './encoder';\n\nexport class JwtHelperErrors {\n\tstatic readonly ErrorDecodeToken = 'Cannot decode the token.';\n\tstatic readonly ErrorInvalidJWT = 'The inspected token doesn\\'t appear to be a JWT.';\n}\n\nexport class JwtHelper {\n\tstatic decodeToken(token) {\n\t\tconst parts = token.split('.');\n\n\t\tif(parts.length !== 3) throw new Error(JwtHelperErrors.ErrorInvalidJWT);\n\n\t\tconst decoded = Encoder.urlBase64Decode(parts[1]);\n\t\tif(!decoded) throw new Error(JwtHelperErrors.ErrorDecodeToken);\n\n\t\treturn JSON.parse(decoded);\n\t}\n}\n","const SIPrefixes = ['', 'k', 'M', 'G', 'T', 'P', 'E'];\n\nexport class NumberFormatter {\n\n\tstatic microToMoney(value: number): number {\n\t\treturn Number(value) / 1000000;\n\t}\n\n\tstatic moneyToMicro(value: number): number {\n\t\treturn Number(value) * 1000000;\n\t}\n\n\tstatic truncate(value: number, precision: number = 2): number {\n\t\treturn Number(Number(value).toFixed(precision));\n\t}\n\n\tstatic shorten(number: number, precision: number = 2): string {\n\t\t// if you don't understand the following code, no worries, you fired !\n\n\t\tconst tier = Math.log10(number) / 3 | 0;\n\t\tif(tier === 0) return `${number}`;\n\n\t\tconst scale = Math.pow(10, tier * 3);\n\t\treturn this.truncate(number / scale, precision) + SIPrefixes[tier];\n\t}\n\n}\n\nexport function min(value: number, boundaryValue: number): number {\n\treturn Math.max(value, boundaryValue);\n}\n\nexport function max(value: number, boundaryValue: number): number {\n\treturn Math.min(value, boundaryValue);\n}\n\nexport function minmax(value: number, minBoundary: number, maxBoundary: number): number {\n\treturn max(min(value, minBoundary), maxBoundary);\n}\n","import {Location} from '@angular/common';\nimport {memoize} from '../decorators/memoize';\n\nexport class UrlParser {\n\n\tstatic a:HTMLAnchorElement = null;\n\n\tstatic getAnchor(href:string = ''):HTMLAnchorElement {\n\t\tconst location = this.a || (this.a = document.createElement('a'));\n\t\tlocation.href = /^\\w+:\\/\\/.+/.test(href) ? href : `http://${href}`;\n\t\tif(location.host === '') location.href = location.href; // IE hack\n\t\treturn location;\n\t}\n\n\tstatic hostname(url:string = '') {\n\t\tconst a:HTMLAnchorElement = this.getAnchor(url);\n\t\treturn a.hostname;\n\t}\n\n\tstatic search(url:string = '') {\n\t\tconst a:HTMLAnchorElement = this.getAnchor(url);\n\t\treturn a.search;\n\t}\n\n\t@memoize\n\tstatic decodedHostname(url:string = '') {\n\t\tconst hostname:string = this.hostname(url);\n\t\treturn decodeURIComponent(hostname);\n\t}\n\n\tstatic extractSearchParams(url:string = '') {\n\t\tlet match;\n\t\tconst decode = (s) => decodeURIComponent(s.replace(/\\+/g, ' ')),\n\t\t\tsearch = this.search(url).substring(1);\n\n\t\tconst searchParams = {};\n\t\tconst searchParamsRegex = /([^&=]+)=?([^&]*)/g;\n\t\twhile(match = searchParamsRegex.exec(search))\n\t\t\tsearchParams[decode(match[1])] = decode(match[2]);\n\n\t\treturn searchParams;\n\t}\n\n\tstatic implodeSearchParams(params:any = {}) {\n\t\tconst names:string[] = Object.keys(params);\n\t\tconst paramList:string[] = [];\n\n\t\tfor(const name of names) {\n\n\t\t\tif(params[name] instanceof Array)\n\t\t\t\tfor(const val of params[name])\n\t\t\t\t\tparamList.push(`${name}[]=${val}`);\n\n\t\t\telse paramList.push(`${name}=${params[name]}`);\n\t\t}\n\n\t\treturn Location.normalizeQueryParams(paramList.join('&'));\n\t}\n\n}\n","import {MonoTypeOperatorFunction, Observable, ReplaySubject, Subject} from 'rxjs';\nimport {filter} from 'rxjs/operators';\n\nexport type StateMap<State> = Map<State, boolean>;\nexport type StateMapSource<State> = StateMap<State> | Iterable<[State, boolean]> | [State, boolean][];\n\nexport interface StateChangeEvent<State = any> {\n    state: State;\n    value: boolean;\n}\n\nexport class StateManager<State = any> {\n\n    protected states: StateMap<State>;\n    protected baseStates: StateMap<State>;\n\n    constructor(states?: StateMapSource<State>) {\n        this.baseStates = new Map(states);\n        this.states = new Map(this.baseStates);\n    }\n\n    protected _stateChange: Subject<StateChangeEvent> = new Subject();\n\n    get stateChange(): Observable<StateChangeEvent> {\n        return this._stateChange.asObservable();\n    }\n\n    is(state: State): boolean {\n        return this.states.has(state) && this.states.get(state);\n    }\n\n    not(state: State): boolean {\n        return !this.states.has(state) || !this.states.get(state);\n    }\n\n    set(state: State, value: boolean) {\n        if (this.states.get(state) === value) return;\n        this.states.set(state, value);\n        this._stateChange.next({state, value});\n    }\n\n    active(state: State) {\n        this.set(state, true);\n    }\n\n    deactive(state: State) {\n        this.set(state, false);\n    }\n\n    toggle(state: State) {\n        const currentVal: boolean = this.states.has(state) ? this.states.get(state) : false;\n        this.set(state, !currentVal);\n        return this.is(state);\n    }\n\n    takeWhen(state: State): MonoTypeOperatorFunction<any> {\n        return filter(() => this.is(state));\n    }\n\n    skipWhen(state: State): MonoTypeOperatorFunction<any> {\n        return filter(() => this.not(state));\n    }\n\n    reset(states: StateMapSource<State> = this.baseStates) {\n        this.states = new Map(states);\n        this._stateChange.complete();\n        this._stateChange = new ReplaySubject(1);\n    }\n\n    destroy() {\n        this._stateChange.complete();\n    }\n}\n","import {Observable, of} from 'rxjs';\nimport {Check} from './check';\n\nexport function coerceObject<T>(val: T): T extends Record<string, any> ? T : Record<string, undefined> {\n    return !Check.isDefined(val) || typeof val !== 'object' ? {} as any : val as any;\n}\n\nexport function coerceNullable<T>(value?: T, defaultValue: T = null): T | null {\n    return Check.isDefined(value) ? value : defaultValue;\n}\n\nexport function coerceObservable<T>(data: Observable<T> | T): Observable<T> {\n    if (data instanceof Observable) return data;\n    return of(data);\n}\n\nexport function coerceMap<K, V>(data: Map<K, V> | Iterable<[K, V]> | [K, V][]): Map<K, V> {\n    if (data instanceof Map) return data;\n    return new Map(data);\n}\n\nexport function coerceArray<T>(val: T | T[] | null | undefined, nullAsEmpty = true): T[] {\n    if (val === undefined) return [];\n    if (val === null) return nullAsEmpty ? [] : [val as T];\n    return val instanceof Array ? val : [val];\n}\n\nexport function coerceValue<T>(value: T | any, allowedValues: T[], defaultValue?: T): T {\n    if (allowedValues.includes(value)) return value;\n    return defaultValue ?? allowedValues[0];\n}\n\nexport type coercionFn<T> = (value: any) => T;\n\nexport function coerceEnumerableProperty<T>(value: any, values: T[], defaultValue?: T): T {\n    return values.includes(value) ? value : (defaultValue ?? values[0]);\n}\n\nexport function createCoerceEnumerablePropertyFn<T>(values: T[], defaultValue?: T): coercionFn<T> {\n    return (value: any) => coerceEnumerableProperty(value, values, defaultValue);\n}\n\n","import {filter, map, shareReplay, startWith} from 'rxjs/operators';\nimport {Observable, ReplaySubject} from 'rxjs';\nimport {DataStore, Storage} from '../interfaces/datastore';\nimport {Check} from '../utils/check';\n\n/**\n * Test purpose only\n */\nexport class DataStoreStub implements DataStore {\n\n    readonly changeStream: ReplaySubject<void> = new ReplaySubject(1);\n    public storage: Storage<any, any> = new Map();\n\n    clear(key: any) {\n        this.storage.delete(key);\n        this.changeStream.next(null);\n    }\n\n    clearAll() {\n        this.storage.clear();\n        this.changeStream.next(null);\n    }\n\n    observe(key: any): Observable<any> {\n        return this.changeStream.pipe(\n            startWith(() => null),\n            map(() => this.pull(key)),\n            filter((value: any) => Check.isDefined(value, true)),\n            shareReplay()\n        );\n    }\n\n    pull(key: any): any {\n        return this.storage.get(key);\n    }\n\n    push(key: any, value: any): any {\n        this.storage.set(key, value);\n        this.changeStream.next(null);\n        return value;\n    }\n\n}\n","import {Subject} from 'rxjs';\nimport {DataStore, DispatchEvent, Storage} from '../interfaces/datastore';\nimport {Injectable} from '@angular/core';\nimport {filter, map, startWith} from 'rxjs/operators';\n\n@Injectable({providedIn: 'root'})\nexport class DataStoreService implements DataStore {\n\n\tprotected storage:Storage<any, any> = new Map();\n\tprotected eventStream:Subject<DispatchEvent> = new Subject();\n\n\tpublic clear(key:any) {\n\t\tthis.dispatch({key, data: null});\n\t}\n\n\tpublic clearAll() {\n\t\tthis.storage.forEach((value, key) => {\n\t\t\tif(value !== null) this.clear(key);\n\t\t});\n\t}\n\n\tpublic pull(key:any) {\n\t\treturn this.storage.get(key);\n\t}\n\n\tpublic push(key:any, data:any = null) {\n\t\tthis.dispatch({key, data});\n\t\treturn data;\n\t}\n\n\tpublic observe(toObserve:any) {\n\t\treturn this.eventStream.pipe(\n\t\t  startWith({key: toObserve}),\n\t\t  filter(({key}) => key === toObserve && this.storage.has(key)),\n\t\t  map(({key}) => this.pull(key)),\n\t\t  filter((value) => value !== undefined)\n\t\t);\n\t}\n\n\tprotected dispatch(event:DispatchEvent) {\n\t\tconst {key, data} = event;\n\t\tthis.storage.set(key, data);\n\t\tthis.eventStream.next(event);\n\t}\n\n}\n","export abstract class MockFactory<T, Opts = any> {\n\n\tabstract generate(opt?:Opts):T;\n\n\tseed(override:Partial<T> = {}, opt?:Opts):T {\n\t\tconst item:T = this.generate(opt);\n\t\treturn Object.assign(item, override);\n\t}\n\n\tsperm(iteration:number, override?:Partial<T>, opt?:Opts):T[] {\n\t\treturn Array.apply(null, {length: iteration}).map(() => this.seed(override, opt));\n\t}\n\n}\n","import {MockFactory} from './mock-factory';\n\nexport interface DummyObject {\n\tid:number;\n\n\t[prop:string]:any;\n}\n\nexport class DummyMockFactory extends MockFactory<DummyObject> {\n\tstatic id = 0;\n\n\tgenerate():DummyObject {\n\t\treturn {\n\t\t\tid: ++DummyMockFactory.id\n\t\t};\n\t}\n\n}\n","import {HydraCollection, HydraItem} from '../network/interfaces/hydra';\n\n// @dynamic\nexport class HydraFactory {\n\n\tstatic generateCollection<T extends { id:any }>(items:T[], total:number = items.length, type:string = 'foobar'):HydraCollection<T> {\n\t\treturn {\n\t\t\t'@context': `/fake/contexts/${type}`,\n\t\t\t'@id': `/fake/${type}`,\n\t\t\t'@type': 'hydra:Collection',\n\t\t\t'hydra:member': items.map((item) => this.generateItem(item, type)),\n\t\t\t'hydra:totalItems': total,\n\t\t\t'hydra:view': {\n\t\t\t\t'@id': `/fake/${type}`,\n\t\t\t\t'@type': 'hydra:Collection'\n\t\t\t}\n\t\t};\n\t}\n\n\tstatic generateItem<T extends { id:any }>(item:T, type:string = 'foobar'):HydraItem<T> {\n\t\treturn Object.assign({\n\t\t\t'@context': `/fake/contexts/${type}`,\n\t\t\t'@id': 'id' in item ? `/fake/${type}/${item.id}` : null,\n\t\t\t'@type': type\n\t\t}, item);\n\t}\n\n}\n","import {ApiHydraHttpResponse} from '../interfaces/api';\nimport {HydraCollection, HydraItem} from '../interfaces/hydra';\nimport {Check} from '../../utils/check';\n\nexport type HydraId = string;\n\nexport class Hydra {\n\n\tstatic id(item:HydraId | object):HydraId {\n\t\tif(typeof item === 'string') return item;\n\t\tif(Check.propertyExists(item, '@id')) return item['@id'];\n\t\treturn null;\n\t}\n\n\tstatic normalizeResponse(response:HydraItem | HydraCollection):ApiHydraHttpResponse<any> {\n\t\tconst metadata:any = {\n\t\t\t'@context': response['@context'],\n\t\t\t'@id': response['@id'],\n\t\t\t'@type': response['@type'],\n\t\t};\n\t\tlet data = null;\n\t\tlet total:number;\n\n\t\tif(response['hydra:member']) {\n\t\t\ttotal = response['hydra:totalItems'];\n\t\t\tdata = response['hydra:member'];\n\t\t\tObject.assign(metadata, {}, response['hydra:view']);\n\t\t}\n\t\telse {\n\t\t\tdata = [response];\n\t\t}\n\n\t\tconst count = data.length;\n\t\tif(!total) total = count;\n\t\treturn {data, metadata, count, total};\n\t}\n\n}\n","import {ApiHttpResponse} from '../interfaces/api';\n\nexport class ApiResponseHelper {\n\n    static getDataFromResponse(response: ApiHttpResponse<any>, returnFirstResult: boolean = false): any {\n        if (!response.data || response.data.length === 0) return returnFirstResult ? null : [];\n        return returnFirstResult ? (response.data[0] || null) : response.data;\n    }\n\n    static getCountFromResponse(response: ApiHttpResponse<any>): number {\n        return response.count || 0;\n    }\n\n    static getTotalFromResponse(response: ApiHttpResponse<any>): number {\n        return response.total || 0;\n    }\n\n}\n","import {Observable, throwError} from 'rxjs';\nimport { HttpClient, HttpErrorResponse, HttpHeaders, HttpParams, HttpRequest } from '@angular/common/http';\nimport {Inject} from '@angular/core';\nimport {catchError} from 'rxjs/operators';\n\nexport interface HttpOptions {\n    headers?: HttpHeaders;\n    observe?: 'body';\n    params?: HttpParams;\n\n    [prop: string]: any;\n}\n\nexport abstract class HttpEndpoint {\n\n    constructor(@Inject(HttpClient) protected http: HttpClient) {\n    }\n\n    abstract getEndpointHost();\n\n    public get(url: string, options: HttpOptions = {}): Observable<any> {\n        return this.http.get(this.prepareUrl(url), options).pipe(\n            catchError((response) => this.parseErrorResponse(response))\n        );\n    }\n\n    public post(url: string, body: any, options: HttpOptions = {}): Observable<any> {\n        return this.http.post(this.prepareUrl(url), body, options).pipe(\n            catchError((response) => this.parseErrorResponse(response))\n        );\n    }\n\n    public put(url: string, body: any, options: HttpOptions = {}): Observable<any> {\n        return this.http.put(this.prepareUrl(url), body, options).pipe(\n            catchError((response) => this.parseErrorResponse(response))\n        );\n    }\n\n    public delete(url: string, options: HttpOptions = {}): Observable<any> {\n        return this.http.delete(this.prepareUrl(url), options).pipe(\n            catchError((response) => this.parseErrorResponse(response))\n        );\n    }\n\n    public patch(url: string, body: any, options: HttpOptions = {}): Observable<any> {\n        return this.http.patch(this.prepareUrl(url), body, options).pipe(\n            catchError((response) => this.parseErrorResponse(response))\n        );\n    }\n\n    public head(url: string, options: HttpOptions = {}): Observable<any> {\n        return this.http.head(this.prepareUrl(url), options).pipe(\n            catchError((response) => this.parseErrorResponse(response))\n        );\n    }\n\n    public request(request: HttpRequest<any>): Observable<any> {\n        return this.http.request(request);\n    }\n\n    public prepareUrl(url: string) {\n        return this.getEndpointHost() + url;\n    }\n\n    protected parseErrorResponse(response: HttpErrorResponse = {} as any) {\n        return throwError(response.error);\n    }\n\n}\n","import {Observable} from 'rxjs';\n\nexport function arrayFirst<T>() {\n\treturn (source:Observable<T[]>):Observable<T> => {\n\t\treturn new Observable(subscriber => source.subscribe(array => {\n\t\t\t\ttry {\n\t\t\t\t\tsubscriber.next(array instanceof Array && array.length > 0 ? array[0] : null);\n\t\t\t\t} catch(err) {\n\t\t\t\t\tsubscriber.error(err);\n\t\t\t\t}\n\t\t\t}, err => subscriber.error(err), () => subscriber.complete())\n\t\t);\n\t};\n}\n\nexport function arrayLast<T>() {\n\treturn (source:Observable<T[]>):Observable<T> => {\n\t\treturn new Observable(subscriber => source.subscribe(array => {\n\t\t\t\ttry {\n\t\t\t\t\tsubscriber.next(array instanceof Array && array.length > 0 ? array[array.length - 1] : null);\n\t\t\t\t} catch(err) {\n\t\t\t\t\tsubscriber.error(err);\n\t\t\t\t}\n\t\t\t}, err => subscriber.error(err), () => subscriber.complete())\n\t\t);\n\t};\n}\n","import {Hydra} from '../network/helpers/hydra';\nimport {Observable} from 'rxjs';\nimport {ApiHttpResponse, ApiHydraHttpResponse} from '../network/interfaces/api';\nimport {ApiResponseHelper} from '../network/helpers/api';\nimport {HydraCollection, HydraItem} from '../network/interfaces/hydra';\n\nexport function mapHttpData<T, P>(mapFn:(item:T) => P) {\n\treturn (source:Observable<ApiHttpResponse<T>>):Observable<ApiHttpResponse<P>> => {\n\t\treturn new Observable(subscriber => source.subscribe(value => {\n\t\t\t  try {\n\t\t\t\t  const {data, ...response} = value || {} as any;\n\t\t\t\t  subscriber.next({data: (data || []).map(mapFn), ...response});\n\t\t\t  } catch(err) {\n\t\t\t\t  subscriber.error(err);\n\t\t\t  }\n\t\t  }, err => subscriber.error(err), () => subscriber.complete())\n\t\t);\n\t};\n}\n\nexport function getHttpData<T>(returnFirstResult?:boolean) {\n\treturn (source:Observable<ApiHttpResponse<T>>):Observable<any> => {\n\t\treturn new Observable(subscriber => source.subscribe(value => {\n\t\t\t  try {\n\t\t\t\t  subscriber.next(ApiResponseHelper.getDataFromResponse(value, returnFirstResult));\n\t\t\t  } catch(err) {\n\t\t\t\t  subscriber.error(err);\n\t\t\t  }\n\t\t  }, err => subscriber.error(err), () => subscriber.complete())\n\t\t);\n\t};\n}\n\nexport function mapHydraResponse<T>() {\n\treturn (source:Observable<HydraItem | HydraCollection>):Observable<ApiHydraHttpResponse<T>> => {\n\t\treturn new Observable(subscriber => source.subscribe(value => {\n\t\t\t  try {\n\t\t\t\t  subscriber.next(Hydra.normalizeResponse(value));\n\t\t\t  } catch(err) {\n\t\t\t\t  subscriber.error(err);\n\t\t\t  }\n\t\t  }, err => subscriber.error(err), () => subscriber.complete())\n\t\t);\n\t};\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\n@Pipe({name: 'ucfirst', pure: true, standalone: true})\nexport class UCFirstPipe implements PipeTransform {\n\n    public transform(text: string): string {\n        if (!text) return '';\n        return text[0].toUpperCase() + text.slice(1);\n    }\n\n}\n\n","import {Pipe, PipeTransform} from '@angular/core';\n\n@Pipe({name: 'prepend', pure: true, standalone: true})\nexport class PrependPipe implements PipeTransform {\n\n    public transform(token: string, prefix: string = '', glue: string = ''): string {\n        if (!prefix) return token;\n        return prefix + glue + token;\n    }\n\n}\n\n","import {Pipe, PipeTransform} from '@angular/core';\n\n@Pipe({name: 'append', pure: true, standalone: true})\nexport class AppendPipe implements PipeTransform {\n\n    public transform(token: string, suffix: string = '', glue: string = ''): string {\n        if (!suffix) return token;\n        return token + glue + suffix;\n    }\n\n}\n\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {Check} from '../../../utils/check';\n\n@Pipe({name: 'coalesce', pure: true, standalone: true})\nexport class CoalescePipe implements PipeTransform {\n    public transform(value: any, replaceValue: any): any {\n        return Check.isDefined(value) ? value : replaceValue;\n    }\n}\n\n","import {Pipe, PipeTransform} from '@angular/core';\n\n@Pipe({name: 'padStart', pure: true, standalone: true})\nexport class PadStartPipe implements PipeTransform {\n\n    public transform(value: any, length: number, filler: string): string {\n        value = value || '';\n        return `${value}`.padStart(length, filler);\n    }\n\n}\n\n","import {Pipe, PipeTransform} from '@angular/core';\n\n@Pipe({name: 'padEnd', pure: true, standalone: true})\nexport class PadEndPipe implements PipeTransform {\n\n    public transform(value: any, length: number, filler: string): string {\n        value = value || '';\n        return `${value}`.padEnd(length, filler);\n    }\n\n}\n\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {NumberFormatter} from '../../../utils/number';\n\n@Pipe({\n    name: 'shortNumber', pure: true, standalone: true\n})\nexport class ShortNumberPipe implements PipeTransform {\n\n    transform(value: number, precision?: number): string | any {\n        if (isNaN(value)) return value as any;\n        return NumberFormatter.shorten(value, precision);\n    }\n\n}\n","import {Type} from '@angular/core';\nimport {UCFirstPipe} from './ucfirst';\nimport {PrependPipe} from './prepend';\nimport {AppendPipe} from './append';\nimport {CoalescePipe} from './coalesce';\nimport {PadStartPipe} from './pad-start';\nimport {PadEndPipe} from './pad-end';\nimport {ShortNumberPipe} from './short-number';\n\nexport const Pipes: Type<any>[] = [\n    UCFirstPipe,\n    PrependPipe,\n    AppendPipe,\n    CoalescePipe,\n    PadStartPipe,\n    PadEndPipe,\n    ShortNumberPipe\n];\n","import {ChangeDetectionStrategy, Component, forwardRef, InjectionToken, ViewChild, ViewEncapsulation} from '@angular/core';\nimport {CdkScrollable} from '@angular/cdk/overlay';\nimport {ScrollingModule} from '@angular/cdk/scrolling';\n\nexport const FLEX_SCROLL_CONTAINER = new InjectionToken('FLEX_SCROLL_CONTAINER');\n\n@Component({\n    selector: 'flex-scroll-container,[flex-scroll-container]',\n    templateUrl: './flex-scroll-container.html',\n    styleUrls: ['./flex-scroll-container.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n\tstandalone: true,\n    encapsulation: ViewEncapsulation.None,\n    imports: [ScrollingModule],\n    providers: [{\n            useExisting: forwardRef(() => FlexScrollContainerComponent),\n            provide: FLEX_SCROLL_CONTAINER\n        }]\n})\nexport class FlexScrollContainerComponent {\n    @ViewChild(CdkScrollable, {static: true}) public cdkScrollable: CdkScrollable;\n}\n","<div class=\"scroll-container\" cdk-scrollable>\n\t<ng-content></ng-content>\n</div>\n","import {Type} from '@angular/core';\nimport {FlexScrollContainerComponent} from './flex-scroll-container/flex-scroll-container';\n\nexport const Components: Type<any>[] = [\n    FlexScrollContainerComponent\n];\n","import { Directive, ElementRef, Input, OnChanges, OnDestroy, Renderer2, SimpleChanges, inject } from '@angular/core';\n\n@Directive({\n    selector: '[stopPropagation]', standalone: true\n})\nexport class StopPropagationDirective implements OnChanges, OnDestroy {\n    protected ref = inject(ElementRef);\n    protected render = inject(Renderer2);\n\n    @Input('stopPropagation') eventName: string = 'click';\n    protected _listener: () => void;\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if ('eventName' in changes) this.lockPropagation();\n    }\n\n    ngOnDestroy(): void {\n        if (this._listener) this._listener();\n    }\n\n    lockPropagation() {\n        if (this._listener) this._listener();\n        this._listener = null;\n        if (this.eventName)\n            this._listener = this.render.listen(this.ref.nativeElement, this.eventName, (event: Event) => {\n                event.stopPropagation();\n            });\n    }\n\n}\n","import {Type} from '@angular/core';\nimport {StopPropagationDirective} from './stop-propagation';\n\nexport const Directives: Type<any>[] = [\n    StopPropagationDirective\n];\n","import {NgModule} from '@angular/core';\nimport {Pipes} from './pipes/index';\nimport {Components} from './components/index';\nimport {Directives} from './directives/index';\n\nexport * from './directives/stop-propagation';\nexport * from './components/flex-scroll-container/flex-scroll-container';\nexport * from './pipes/ucfirst';\nexport * from './pipes/prepend';\nexport * from './pipes/append';\nexport * from './pipes/coalesce';\nexport * from './pipes/pad-end';\nexport * from './pipes/pad-start';\nexport * from './pipes/short-number';\n\n@NgModule({\n    imports: [...Pipes, ...Components, ...Directives],\n    exports: [...Pipes, ...Components, ...Directives],\n})\nexport class CommonToolsModule {\n}\n","import {Type} from '@angular/core';\n\nexport const Directives:Type<any>[] = [];\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {CommonToolsModule} from '../common/common-module';\nimport {Directives} from './directives/index';\n\n@NgModule({\n\timports: [\n\t\tCommonModule,\n\t\tCommonToolsModule\n\t],\n\texports: [...Directives],\n\tdeclarations: [...Directives],\n\tproviders: [],\n})\nexport class CommonDevToolsModule {\n}\n","/*\n * Public API Surface of ng-common-tools\n */\n\nexport * from './lib/decorators/memoize';\nexport * from './lib/decorators/memoize-stream';\n\nexport * from './lib/data/repository';\nexport * from './lib/data/repository-cache-store';\nexport * from './lib/data/repository-invalid-id-cache-store';\n\nexport * from './lib/data-source/fetched-data-source';\nexport * from './lib/data-source/paginated-fetch-data-source';\n\nexport * from './lib/interfaces/datasource';\nexport * from './lib/interfaces/repository';\nexport * from './lib/interfaces/datastore';\nexport * from './lib/interfaces/directive';\n\nexport * from './lib/utils/unicode-encoder';\nexport * from './lib/utils/encoder';\nexport * from './lib/utils/jwt-helper';\nexport * from './lib/utils/number';\nexport * from './lib/utils/url-parser';\nexport * from './lib/utils/check';\nexport * from './lib/utils/array';\nexport * from './lib/utils/state-manager';\nexport * from './lib/utils/coercion';\n\nexport * from './lib/storage/datastore.stub';\nexport * from './lib/storage/datastore';\n\nexport * from './lib/mock-factories/mock-factory';\nexport * from './lib/mock-factories/dummy';\nexport * from './lib/mock-factories/hydra';\n\nexport * from './lib/network/helpers/hydra';\nexport * from './lib/network/helpers/api';\nexport * from './lib/network/interfaces/hydra';\nexport * from './lib/network/interfaces/api';\nexport * from './lib/network/http-endpoint';\nexport * from './lib/network/interfaces/api';\n\nexport * from './lib/rxjs/array';\nexport * from './lib/rxjs/rx-cleaner';\nexport * from './lib/rxjs/http';\n\nexport * from './lib/modules/common/common-module';\nexport * from './lib/modules/dev/dev-module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["Directives","i1.UCFirstPipe","i2.PrependPipe","i3.AppendPipe","i4.CoalescePipe","i5.PadStartPipe","i6.PadEndPipe","i7.ShortNumberPipe","i8.FlexScrollContainerComponent","i9.StopPropagationDirective"],"mappings":"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"}