@odx/angular 5.3.4 → 5.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/components/notification/README.md +3 -0
  3. package/components/notification/index.d.ts +7 -0
  4. package/components/notification/lib/components/index.d.ts +2 -0
  5. package/components/notification/lib/components/notification-center/notification-center.component.d.ts +19 -0
  6. package/components/notification/lib/components/notification-item/notification-item.component.d.ts +37 -0
  7. package/components/notification/lib/directives/index.d.ts +1 -0
  8. package/components/notification/lib/directives/notification-center.directive.d.ts +69 -0
  9. package/components/notification/lib/features/index.d.ts +5 -0
  10. package/components/notification/lib/features/with-browser-notifications.d.ts +17 -0
  11. package/components/notification/lib/features/with-load-notifications.d.ts +18 -0
  12. package/components/notification/lib/features/with-notification-transformer.d.ts +26 -0
  13. package/components/notification/lib/features/with-peristent-notifications.d.ts +63 -0
  14. package/components/notification/lib/features/with-save-notifications.d.ts +11 -0
  15. package/components/notification/lib/helpers/get-notifications-by-tag.d.ts +2 -0
  16. package/components/notification/lib/helpers/index.d.ts +3 -0
  17. package/components/notification/lib/helpers/sort-notifications.d.ts +3 -0
  18. package/components/notification/lib/helpers/to-notification-collection.d.ts +3 -0
  19. package/components/notification/lib/models/index.d.ts +8 -0
  20. package/components/notification/lib/models/notification-action.d.ts +2 -0
  21. package/components/notification/lib/models/notification-collection.d.ts +6 -0
  22. package/components/notification/lib/models/notification-feature.d.ts +5 -0
  23. package/components/notification/lib/models/notification-options.d.ts +7 -0
  24. package/components/notification/lib/models/notification-query.d.ts +2 -0
  25. package/components/notification/lib/models/notification-sort-fn.d.ts +2 -0
  26. package/components/notification/lib/models/notification.d.ts +6 -0
  27. package/components/notification/lib/models/notification.ref.d.ts +9 -0
  28. package/components/notification/lib/notification.config.d.ts +11 -0
  29. package/components/notification/lib/notification.i18n.d.ts +3 -0
  30. package/components/notification/lib/notification.logger.d.ts +3 -0
  31. package/components/notification/lib/notification.service.d.ts +110 -0
  32. package/components/notification/lib/notification.tokens.d.ts +4 -0
  33. package/components/notification/lib/services/index.d.ts +1 -0
  34. package/components/notification/lib/services/notification-center.service.d.ts +69 -0
  35. package/components/notification/testing/README.md +3 -0
  36. package/components/notification/testing/index.d.ts +1 -0
  37. package/components/notification/testing/lib/test-helpers.d.ts +5 -0
  38. package/components/toast/lib/toast.service.d.ts +30 -2
  39. package/esm2022/components/notification/index.mjs +8 -0
  40. package/esm2022/components/notification/lib/components/index.mjs +3 -0
  41. package/esm2022/components/notification/lib/components/notification-center/notification-center.component.mjs +65 -0
  42. package/esm2022/components/notification/lib/components/notification-item/notification-item.component.mjs +65 -0
  43. package/esm2022/components/notification/lib/directives/index.mjs +2 -0
  44. package/esm2022/components/notification/lib/directives/notification-center.directive.mjs +142 -0
  45. package/esm2022/components/notification/lib/features/index.mjs +6 -0
  46. package/esm2022/components/notification/lib/features/with-browser-notifications.mjs +75 -0
  47. package/esm2022/components/notification/lib/features/with-load-notifications.mjs +45 -0
  48. package/esm2022/components/notification/lib/features/with-notification-transformer.mjs +34 -0
  49. package/esm2022/components/notification/lib/features/with-peristent-notifications.mjs +94 -0
  50. package/esm2022/components/notification/lib/features/with-save-notifications.mjs +45 -0
  51. package/esm2022/components/notification/lib/helpers/get-notifications-by-tag.mjs +7 -0
  52. package/esm2022/components/notification/lib/helpers/index.mjs +4 -0
  53. package/esm2022/components/notification/lib/helpers/sort-notifications.mjs +10 -0
  54. package/esm2022/components/notification/lib/helpers/to-notification-collection.mjs +9 -0
  55. package/esm2022/components/notification/lib/models/index.mjs +9 -0
  56. package/esm2022/components/notification/lib/models/notification-action.mjs +2 -0
  57. package/esm2022/components/notification/lib/models/notification-collection.mjs +2 -0
  58. package/esm2022/components/notification/lib/models/notification-feature.mjs +4 -0
  59. package/esm2022/components/notification/lib/models/notification-options.mjs +2 -0
  60. package/esm2022/components/notification/lib/models/notification-query.mjs +2 -0
  61. package/esm2022/components/notification/lib/models/notification-sort-fn.mjs +2 -0
  62. package/esm2022/components/notification/lib/models/notification.mjs +2 -0
  63. package/esm2022/components/notification/lib/models/notification.ref.mjs +2 -0
  64. package/esm2022/components/notification/lib/notification.config.mjs +11 -0
  65. package/esm2022/components/notification/lib/notification.i18n.mjs +11 -0
  66. package/esm2022/components/notification/lib/notification.logger.mjs +3 -0
  67. package/esm2022/components/notification/lib/notification.service.mjs +168 -0
  68. package/esm2022/components/notification/lib/notification.tokens.mjs +7 -0
  69. package/esm2022/components/notification/lib/services/index.mjs +2 -0
  70. package/esm2022/components/notification/lib/services/notification-center.service.mjs +96 -0
  71. package/esm2022/components/notification/odx-angular-components-notification.mjs +5 -0
  72. package/esm2022/components/notification/testing/index.mjs +2 -0
  73. package/esm2022/components/notification/testing/lib/test-helpers.mjs +33 -0
  74. package/esm2022/components/notification/testing/odx-angular-components-notification-testing.mjs +5 -0
  75. package/esm2022/components/toast/lib/components/toast-container/toast-container.component.mjs +6 -6
  76. package/esm2022/components/toast/lib/toast.service.mjs +38 -8
  77. package/esm2022/utils/lib/helpers/array.mjs +24 -1
  78. package/fesm2022/odx-angular-components-notification-testing.mjs +39 -0
  79. package/fesm2022/odx-angular-components-notification-testing.mjs.map +1 -0
  80. package/fesm2022/odx-angular-components-notification.mjs +832 -0
  81. package/fesm2022/odx-angular-components-notification.mjs.map +1 -0
  82. package/fesm2022/odx-angular-components-toast.mjs +42 -11
  83. package/fesm2022/odx-angular-components-toast.mjs.map +1 -1
  84. package/fesm2022/odx-angular-utils.mjs +23 -0
  85. package/fesm2022/odx-angular-utils.mjs.map +1 -1
  86. package/package.json +13 -1
  87. package/utils/lib/helpers/array.d.ts +23 -0
@@ -1 +1 @@
1
- {"version":3,"file":"odx-angular-utils.mjs","sources":["../../../../libs/angular/utils/src/lib/decorators/pure.ts","../../../../libs/angular/utils/src/lib/helpers/type-guards.ts","../../../../libs/angular/utils/src/lib/helpers/dom.ts","../../../../libs/angular/utils/src/lib/helpers/until-destroyed.ts","../../../../libs/angular/utils/src/lib/helpers/angular.ts","../../../../libs/angular/utils/src/lib/helpers/array.ts","../../../../libs/angular/utils/src/lib/helpers/build-url.ts","../../../../libs/angular/utils/src/lib/helpers/build-website-url.ts","../../../../libs/angular/utils/src/lib/helpers/cache-storage-client.ts","../../../../libs/angular/utils/src/lib/helpers/coercion.ts","../../../../libs/angular/utils/src/lib/helpers/debounce.ts","../../../../libs/angular/utils/src/lib/helpers/defer-fn.ts","../../../../libs/angular/utils/src/lib/helpers/event-manager.ts","../../../../libs/angular/utils/src/lib/types/axis.ts","../../../../libs/angular/utils/src/lib/types/position.ts","../../../../libs/angular/utils/src/lib/types/side.ts","../../../../libs/angular/utils/src/lib/helpers/get-side.ts","../../../../libs/angular/utils/src/lib/helpers/get-axis.ts","../../../../libs/angular/utils/src/lib/helpers/get-language-code.ts","../../../../libs/angular/utils/src/lib/helpers/get-opposite-side.ts","../../../../libs/angular/utils/src/lib/helpers/get-unique-id.ts","../../../../libs/angular/utils/src/lib/helpers/match-url.ts","../../../../libs/angular/utils/src/lib/helpers/ng-changes.ts","../../../../libs/angular/utils/src/lib/helpers/provide-config.ts","../../../../libs/angular/utils/src/lib/helpers/queue.ts","../../../../libs/angular/utils/src/odx-angular-utils.ts"],"sourcesContent":["export function Pure<T>(_target: object, propertyKey: string, { get, enumerable, value }: TypedPropertyDescriptor<T>): TypedPropertyDescriptor<T> {\n if (get) {\n return {\n enumerable,\n get(): T {\n const value = get.call(this);\n\n Object.defineProperty(this, propertyKey, { enumerable, value });\n\n return value;\n },\n };\n }\n\n if (typeof value !== 'function') {\n throw new Error('@Pure decorator can only be applied to functions or getters!');\n }\n\n const originalValue = value;\n\n return {\n enumerable,\n get(): T {\n let previousArgs: readonly unknown[] = [];\n let wasCalled = false;\n let pureValue: unknown;\n\n const patched = (...args: unknown[]): unknown => {\n const isPure = wasCalled && previousArgs.length === args.length && args.every((arg, index) => arg === previousArgs[index]);\n\n if (isPure) {\n return pureValue;\n }\n\n previousArgs = args;\n pureValue = originalValue.apply(this, args);\n wasCalled = true;\n\n return pureValue;\n };\n\n Object.defineProperty(this, propertyKey, { value: patched });\n\n return patched as unknown as T;\n },\n };\n}\n","import { TemplateRef, Type, ViewContainerRef } from '@angular/core';\n\nexport function isViewContainer(value: unknown): value is ViewContainerRef {\n return isFunction((value as ViewContainerRef)?.createComponent);\n}\n\nexport function isTemplateRef<T = unknown>(value: unknown): value is TemplateRef<T> {\n return value instanceof TemplateRef;\n}\n\nexport function isComponent<T = unknown>(value: unknown): value is Type<T> {\n return isFunction(value);\n}\n\nexport function isString(value: unknown): value is string {\n return typeof value === 'string';\n}\n\nexport function isNonEmptyString(value: unknown): value is string {\n return isString(value) && value.length > 0;\n}\n\nexport function isBoolean(value: unknown): value is boolean {\n return value === true || value === false;\n}\n\nexport function isFunction(value: unknown): value is CallableFunction {\n return typeof value === 'function';\n}\n\nexport function isPresent<T>(value: T | null | undefined): value is NonNullable<T> {\n return value !== null && value !== undefined;\n}\n\nexport function isNumber(value: unknown): value is number {\n return typeof value === 'number';\n}\n","import { Subscriber } from 'rxjs';\nimport { isNumber, isString } from './type-guards';\n\nexport function applyStyles(element: HTMLElement, styles: Partial<CSSStyleDeclaration | Record<keyof CSSStyleDeclaration, string | null>>): void {\n Object.assign(element.style, styles);\n}\n\nexport function booleanToAttributeString(state: boolean): string {\n return booleanToOptionalAttributeString(state) ?? 'false';\n}\n\nexport function booleanToOptionalAttributeString(state: boolean): string | null {\n return state ? 'true' : null;\n}\n\nexport function px(value: unknown): `${number}px` {\n return isNumber(value) ? `${value}px` : '0px';\n}\n\nexport function cssTranslate(x: string | 0, y: string | 0): `translate3d(${string | 0}, ${string | 0}, 0)` {\n return `translate3d(${x}, ${y}, 0)`;\n}\n\nexport function disableCSSTransitions(element: HTMLElement, disabled: boolean): void {\n if (disabled) {\n applyStyles(element, { transition: 'none' });\n } else {\n forceLayoutReflow(element);\n applyStyles(element, { transition: null });\n }\n}\n\nexport function forceLayoutReflow(element: HTMLElement): void {\n element.offsetHeight;\n}\n\nexport function setAttribute(element: HTMLElement, attribute: string, value?: unknown) {\n if (isString(value) || isNumber(value)) {\n element.setAttribute(attribute, value.toString());\n } else {\n element.toggleAttribute(attribute, !!value);\n }\n}\n\nexport function createResizeObserver(callback: ResizeObserverCallback): ResizeObserver {\n try {\n return new ResizeObserver(callback);\n } catch {\n return { observe: () => void 0, disconnect: () => void 0, unobserve: () => void 0 };\n }\n}\n\nexport function createMutationObserver(observer: Subscriber<MutationRecord>, callback: (mutations: MutationRecord[]) => boolean): MutationObserver {\n try {\n return new MutationObserver((mutations) => {\n if (callback(mutations)) {\n observer.next(mutations[0]);\n }\n });\n } catch (error) {\n return { disconnect: () => void 0, observe: () => void 0, takeRecords: () => [] };\n }\n}\n\nexport function containsElement(parent?: Element | null, other?: Element | null, inclusive = true): boolean {\n if (!parent || !other) return false;\n if (!inclusive && parent === other) return false;\n return parent.contains(other);\n}\n","import { DestroyRef, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MonoTypeOperatorFunction } from 'rxjs';\n\nexport function untilDestroyed(): <T>() => MonoTypeOperatorFunction<T> {\n const destroyRef = inject(DestroyRef);\n\n return () => takeUntilDestroyed(destroyRef);\n}\n","import { ElementRef, inject } from '@angular/core';\nimport { MonoTypeOperatorFunction, Observable, tap } from 'rxjs';\nimport { setAttribute } from './dom';\nimport { untilDestroyed } from './until-destroyed';\n\nfunction reactiveBinding<T>(updateFn: (state: unknown) => void): MonoTypeOperatorFunction<T> {\n const takeUntilDestroyed = untilDestroyed();\n\n return (source$: Observable<T>) =>\n source$.pipe(\n tap((state) => updateFn(state)),\n takeUntilDestroyed(),\n );\n}\n\nexport function reactiveClassBinding<T>(source$: Observable<T> | null | undefined, cssClass: string): void {\n const { nativeElement } = injectElement();\n\n if (source$) {\n source$.pipe(reactiveBinding((state) => nativeElement.classList.toggle(cssClass, !!state))).subscribe();\n }\n}\n\nexport function reactiveAttributeBinding<T>(source$: Observable<T> | null | undefined, ...attributes: string[]): void {\n const { nativeElement } = injectElement();\n\n if (source$) {\n source$\n .pipe(\n reactiveBinding((value) => {\n for (const attribute of attributes) {\n setAttribute(nativeElement, attribute, value);\n }\n }),\n )\n .subscribe();\n }\n}\n\nexport function injectElement<T = HTMLElement>(): ElementRef<T> {\n return inject<ElementRef<T>>(ElementRef);\n}\n\nexport function trackByIndex(index: number): number {\n return index;\n}\n\nexport function trackById<T extends { id: string | number | symbol }>(_: number, { id }: T): T['id'] {\n return id;\n}\n","import { isNumber, isString } from './type-guards';\n\nexport function pluckFromArray<T, K extends keyof T>(arr: T[], key: K): Array<T[K]> {\n return arr.map((value) => value[key]);\n}\n\nexport type OrderByDirection = 'ASC' | 'DESC';\n\nexport function orderBy<T>(key: keyof T, direction: OrderByDirection = 'ASC'): (a: T, b: T) => number {\n return (a, b) => {\n const leftValue = direction === 'ASC' ? a[key] : b[key];\n const rightValue = direction === 'ASC' ? b[key] : a[key];\n if (leftValue === undefined) {\n return -1;\n }\n if (rightValue === undefined) {\n return -1;\n }\n if (isNumber(leftValue) && isNumber(rightValue)) {\n return leftValue - rightValue;\n }\n if (isString(leftValue) && isString(rightValue)) {\n return leftValue.toLowerCase().localeCompare(rightValue.toLowerCase());\n }\n return 0;\n };\n}\n","export function buildUrl(...args: Array<string | number | symbol | null | undefined>): string {\n return args.join('/').replace(/(^.*)(https?:\\/\\/)|(\\/)+/g, '$2$3');\n}\n","import { buildUrl } from './build-url';\n\nexport const DRAEGER_WEBSITE_URL = 'https://www.draeger.com';\n\nexport function buildWebsiteUrl(...segments: Array<string | number | symbol | null | undefined>): string {\n return buildUrl(DRAEGER_WEBSITE_URL, ...segments);\n}\n","export const HTTP_ETAG_HEADER = 'Etag';\nexport const HTTP_IF_NONE_MATCH_HEADER = 'If-None-Match';\nexport const HTTP_CACHE_CONTROL_HEADER = 'Cache-Control';\n\nexport class CacheStorageClient {\n constructor(\n private readonly cacheKey: string,\n private readonly cacheStorage = window.caches,\n ) {}\n\n public async delete(request: RequestInfo | URL): Promise<boolean> {\n const cache = await this.getCache();\n\n return cache.delete(request);\n }\n\n public async deleteAll(): Promise<void> {\n const cache = await this.getCache();\n for (const key of await cache.keys()) {\n await cache.delete(key);\n }\n }\n\n public async request<T>(requestInfo: RequestInfo | URL, shouldDelete = ({ status }: Response) => status >= 400 && status < 500): Promise<T | null> {\n const cache = await this.getCache();\n const request = await this.prepareRequest(cache, requestInfo);\n const response = await this.sendRequest(cache, request);\n if (response && shouldDelete?.(response)) {\n await cache.delete(request);\n }\n return response?.json() ?? null;\n }\n\n protected async getCache(): Promise<Cache> {\n return this.cacheStorage.open(this.cacheKey);\n }\n\n protected async prepareRequest(cache: Cache, requestInfo: RequestInfo | URL): Promise<Request> {\n const cachedResponse = await cache.match(requestInfo);\n const etag = cachedResponse?.headers?.get(HTTP_ETAG_HEADER) ?? null;\n const request = new Request(requestInfo);\n if (etag) {\n request.headers.set(HTTP_IF_NONE_MATCH_HEADER, etag);\n }\n\n return request;\n }\n\n protected async sendRequest(cache: Cache, request: Request): Promise<Response | null> {\n const response = await fetch(request).catch(() => null);\n const cacheControl = response?.headers?.get(HTTP_CACHE_CONTROL_HEADER);\n if (cacheControl === 'no-cache') {\n await cache.delete(request);\n\n return response;\n }\n if (response?.ok) {\n await cache.put(request, response).catch(() => null);\n }\n\n return cache.match(request).then((res) => res ?? null);\n }\n}\n","import { coerceArray } from '@angular/cdk/coercion';\n\nexport function arrayAttribute(value: string | string[]): string[] {\n return coerceArray<string>(value);\n}\n\nexport { coerceArray, coerceCssPixelValue, coerceElement, coerceStringArray } from '@angular/cdk/coercion';\n","export function debounce<Args extends unknown[]>(func: (...args: Args) => void, delay: number, immediate = false): (...args: Args) => void {\n let timeout: number | null = null;\n\n return function (this: unknown, ...args: Args) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const context = this;\n const callImmediately = immediate && timeout === null;\n if (timeout !== null) {\n clearTimeout(timeout);\n }\n timeout = setTimeout(function () {\n timeout = null;\n if (!callImmediately) {\n func.apply(context, args);\n }\n }, delay) as unknown as number;\n if (callImmediately) {\n func.apply(context, args);\n }\n };\n}\n","export function deferFn(fn: () => void): void {\n setTimeout(fn, 0);\n}\n","import { inject, Injectable, OnDestroy, Renderer2 } from '@angular/core';\nimport { injectElement } from './angular';\n\n@Injectable()\nexport class EventManager implements OnDestroy {\n private readonly element = injectElement();\n private readonly renderer = inject(Renderer2);\n private readonly listeners: Array<() => void> = [];\n\n public destroyListeners(): void {\n while (this.listeners.length) this.listeners.pop()?.();\n }\n\n public register<T extends Event = Event>(\n eventNames: Array<string | null>,\n callback: (event?: T) => void,\n target?: 'document' | 'window' | EventTarget | null\n ): void {\n for (const eventName of eventNames) {\n if (eventName) {\n this.listeners.push(this.renderer.listen(target ?? this.element.nativeElement, eventName, (event) => callback(event)));\n }\n }\n }\n\n public ngOnDestroy(): void {\n this.destroyListeners();\n }\n}\n","export type Axis = (typeof Axis)[keyof typeof Axis];\n\nexport const Axis = {\n X: 'x',\n Y: 'y',\n} as const;\n","export type Position = (typeof Position)[keyof typeof Position];\n\nexport const Position = {\n TOP: 'top',\n TOP_START: 'top-start',\n TOP_END: 'top-end',\n\n RIGHT: 'right',\n RIGHT_START: 'right-start',\n RIGHT_END: 'right-end',\n\n BOTTOM: 'bottom',\n BOTTOM_START: 'bottom-start',\n BOTTOM_END: 'bottom-end',\n\n LEFT: 'left',\n LEFT_START: 'left-start',\n LEFT_END: 'left-end',\n} as const;\n","export type Side = (typeof Side)[keyof typeof Side];\n\nexport const Side = {\n TOP: 'top',\n RIGHT: 'right',\n BOTTOM: 'bottom',\n LEFT: 'left',\n} as const;\n","import { Position, Side } from '../types';\n\nexport function getSide(position: Position): Side {\n return position.split('-')[0] as Side;\n}\n","import { Axis, Position, Side } from '../types';\nimport { getSide } from './get-side';\n\nexport function getAxis(position: Position): Axis {\n const side = getSide(position);\n\n switch (side) {\n case Side.TOP:\n case Side.BOTTOM:\n return Axis.Y;\n case Side.LEFT:\n case Side.RIGHT:\n return Axis.X;\n }\n}\n","export function getLanguageCode(language: string): string {\n const [languageCode] = language.split(/-|_/);\n\n return languageCode?.toLowerCase();\n}\n","import { Position, Side } from '../types';\nimport { getSide } from './get-side';\n\nexport function getOppositeSide(position: Position): Side {\n switch (getSide(position)) {\n case Side.TOP:\n return Side.BOTTOM;\n case Side.RIGHT:\n return Side.LEFT;\n case Side.BOTTOM:\n return Side.TOP;\n case Side.LEFT:\n return Side.RIGHT;\n }\n}\n","let uniqueIdCache: { [key: string]: number } = {};\n\nexport function getUniqueId(key: string): string {\n uniqueIdCache[key] = (uniqueIdCache[key] ?? 0) + 1;\n\n return `${key}-${uniqueIdCache[key]}`;\n}\n\nexport function clearUniqueIdCache(): void {\n uniqueIdCache = {};\n}\n","import { isString } from './type-guards';\n\nexport function isUrlMatcher(value: unknown): value is string | RegExp {\n return isString(value) || value instanceof RegExp;\n}\n\nexport function matchUrl(url: string, filter: string | RegExp): boolean {\n return isString(filter) ? url.startsWith(filter) : !!url.match(filter);\n}\n","import { GetProperties } from '../types';\n\nexport type NgChanges<C, Properties = GetProperties<C>> = {\n [Key in keyof Properties]: {\n previousValue: Properties[Key];\n currentValue: Properties[Key];\n firstChange: boolean;\n isFirstChange(): boolean;\n };\n};\n\nexport function hasChanged<U extends Record<string, unknown>, T extends NgChanges<U>, K extends keyof T>(\n changes: T,\n keyOrKeys: K | K[],\n ignoreFirstChange = true,\n): boolean {\n if (Array.isArray(keyOrKeys)) {\n for (const key of keyOrKeys) {\n if (hasChanged(changes, key, ignoreFirstChange)) {\n return true;\n }\n }\n return false;\n } else {\n return keyOrKeys in changes && (!ignoreFirstChange || !changes[keyOrKeys]?.isFirstChange());\n }\n}\n","import { FactoryProvider, inject, InjectionToken, Type, ValueProvider } from '@angular/core';\n\nimport { deepmerge } from '@odx/angular/internal';\n\ninterface ConfigFactoryProvider<T, D extends ConfigDependencies> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n useFactory: (...args: { [I in keyof D]: D[I] extends Type<unknown> ? InstanceType<D[I]> : D[I] extends InjectionToken<unknown> ? any : never }) => T;\n deps?: [...D];\n}\n\nexport type ConfigDependencies<T = unknown> = ReadonlyArray<Type<T> | InjectionToken<T>>;\nexport type ConfigProvider<T = unknown, D extends ConfigDependencies = []> = ConfigFactoryProvider<T, D> | T;\nexport type ConfigTransformFn<T = unknown> = (config: Partial<T>) => Partial<T>;\n\nexport function provideConfig<T extends object, D extends ConfigDependencies = ConfigDependencies>(\n token: InjectionToken<T> | string,\n config: ConfigProvider<T, D>,\n transform: ConfigTransformFn<T> = () => ({}),\n): FactoryProvider | ValueProvider {\n const prepareConfig = (value: Partial<T>) => deepmerge(value, transform(value));\n if ('useFactory' in config) {\n return {\n provide: token,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n useFactory: (...args: unknown[]) => prepareConfig(config.useFactory(...(args as any))),\n deps: config.deps,\n };\n }\n\n return {\n provide: token,\n useFactory: () => prepareConfig(config),\n };\n}\n\nfunction mergeConfig<T>(token: InjectionToken<Partial<T>>, defaultValue: T): Partial<T> {\n const config = inject(token);\n const parentConfig = inject(token, { skipSelf: true, optional: true }) ?? {};\n\n return deepmerge(defaultValue, parentConfig, config) as T;\n}\n\nexport function createConfigTokens<T, N extends string>(name: N, prefix: string, defaultValue: T, transform?: ConfigTransformFn<T>) {\n type ConfigProviderFn = <D extends ConfigDependencies = ConfigDependencies<Partial<T>>>(\n config: ConfigProvider<Partial<T>, D>,\n ) => FactoryProvider | ValueProvider;\n const configName = `${name}Config` as const;\n const defaultConfigName = `${name}DefaultConfig` as const;\n const injectConfigName = `inject${name}Config` as const;\n const provideConfigName = `provide${name}Config` as const;\n const tokenName = `${prefix}::${configName}`;\n const token = new InjectionToken<Partial<T>>(tokenName, { providedIn: 'root', factory: () => defaultValue });\n\n return {\n [configName]: token,\n [defaultConfigName]: defaultValue,\n [injectConfigName]: () => mergeConfig(token, defaultValue),\n [provideConfigName]: ((config) => provideConfig(token, config, transform)) as ConfigProviderFn,\n } as Record<typeof configName, InjectionToken<Partial<T>>> &\n Record<typeof defaultConfigName, T> &\n Record<typeof injectConfigName, () => T> &\n Record<typeof provideConfigName, ConfigProviderFn>;\n}\n","import { Observable, Subject } from 'rxjs';\nimport { concatAll, distinctUntilChanged, filter, map, share, shareReplay, startWith } from 'rxjs/operators';\nimport { isNumber, isString } from './type-guards';\n\ntype QueueItemId = string | number;\ntype QueueItem<T> = T & { id: QueueItemId };\ntype QueueEventType = 'remove' | 'add' | 'update';\ntype QueueEvent<T> = { items: QueueItem<T>[]; type: QueueEventType };\n\nfunction isQueueItemId(value: unknown): value is QueueItemId {\n return isString(value) || isNumber(value);\n}\n\nexport class Queue<T> {\n private readonly queue = new Map<string, QueueItem<T>>();\n private readonly events$$ = new Subject<QueueEvent<T>>();\n private values: QueueItem<T>[] = [];\n private firstItem: QueueItem<T> | null = null;\n private lastItem: QueueItem<T> | null = null;\n\n public readonly onAdd$ = this.createEventObserver('add');\n public readonly onUpdate$ = this.createEventObserver('update');\n public readonly onRemove$ = this.createEventObserver('remove');\n public readonly value$ = this.events$$.pipe(\n startWith(() => void 0),\n map(() => this.values),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n public readonly size$ = this.value$.pipe(\n map(() => this.size),\n distinctUntilChanged(),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n\n public get size(): number {\n return this.queue.size;\n }\n\n public isFirst({ id }: QueueItem<T>): boolean {\n return this.firstItem?.id === id;\n }\n\n public isLast({ id }: QueueItem<T>): boolean {\n return this.lastItem?.id === id;\n }\n\n public get(itemOrId: QueueItem<T> | QueueItemId): QueueItem<T> | null {\n const id = isQueueItemId(itemOrId) ? itemOrId.toString() : itemOrId.id.toString();\n\n return this.queue.get(id) ?? null;\n }\n\n public add(item: QueueItem<T>, emitEvent = true): QueueItem<T> {\n this.remove(item, false);\n\n return this.addMany([item], emitEvent)[0];\n }\n\n public addMany(items: Array<QueueItem<T>>, emitEvent = true): Array<QueueItem<T>> {\n const addedItems = [];\n const updatedItems = [];\n for (const item of items) {\n if (this.get(item)) {\n addedItems.push(item);\n } else {\n updatedItems.push(item);\n }\n this.queue.set(item.id.toString(), item);\n }\n if (addedItems.length) {\n this.notify({ type: 'add', items: addedItems }, emitEvent);\n }\n if (updatedItems.length) {\n this.notify({ type: 'update', items: updatedItems }, emitEvent);\n }\n\n return items;\n }\n\n public remove(itemOrId: QueueItem<T> | QueueItemId, emitEvent = true): QueueItem<T> | null {\n return this.removeMany([itemOrId], emitEvent)[0];\n }\n\n public removeMany(itemOrIds: Array<QueueItem<T> | QueueItemId>, emitEvent = true): Array<QueueItem<T> | null> {\n const items = itemOrIds.map((itemOrId) => this.get(itemOrId)).filter(Boolean) as QueueItem<T>[];\n const removedItems = [];\n for (const item of items) {\n const itemRemoved = this.queue.delete(item.id.toString());\n if (!itemRemoved) continue;\n removedItems.push(item);\n }\n this.notify({ type: 'remove', items: removedItems }, emitEvent);\n\n return items;\n }\n\n public clear(emitEvent = true): void {\n const items = this.toArray();\n this.queue.clear();\n this.notify({ type: 'remove', items }, emitEvent);\n }\n\n public toArray(): QueueItem<T>[] {\n return this.values;\n }\n\n private notify(event: QueueEvent<T>, emitEvent = true): void {\n this.values = Array.from(this.queue, ([_, item]) => item).reverse();\n this.firstItem = this.values[0] ?? null;\n this.lastItem = this.values[this.values.length - 1] ?? null;\n if (!emitEvent) return;\n this.events$$.next(event);\n }\n\n private createEventObserver(type: QueueEventType): Observable<T> {\n return this.events$$.pipe(\n filter((event) => event.type === type),\n map(({ items }) => items),\n concatAll(),\n share(),\n );\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"odx-angular-utils.mjs","sources":["../../../../libs/angular/utils/src/lib/decorators/pure.ts","../../../../libs/angular/utils/src/lib/helpers/type-guards.ts","../../../../libs/angular/utils/src/lib/helpers/dom.ts","../../../../libs/angular/utils/src/lib/helpers/until-destroyed.ts","../../../../libs/angular/utils/src/lib/helpers/angular.ts","../../../../libs/angular/utils/src/lib/helpers/array.ts","../../../../libs/angular/utils/src/lib/helpers/build-url.ts","../../../../libs/angular/utils/src/lib/helpers/build-website-url.ts","../../../../libs/angular/utils/src/lib/helpers/cache-storage-client.ts","../../../../libs/angular/utils/src/lib/helpers/coercion.ts","../../../../libs/angular/utils/src/lib/helpers/debounce.ts","../../../../libs/angular/utils/src/lib/helpers/defer-fn.ts","../../../../libs/angular/utils/src/lib/helpers/event-manager.ts","../../../../libs/angular/utils/src/lib/types/axis.ts","../../../../libs/angular/utils/src/lib/types/position.ts","../../../../libs/angular/utils/src/lib/types/side.ts","../../../../libs/angular/utils/src/lib/helpers/get-side.ts","../../../../libs/angular/utils/src/lib/helpers/get-axis.ts","../../../../libs/angular/utils/src/lib/helpers/get-language-code.ts","../../../../libs/angular/utils/src/lib/helpers/get-opposite-side.ts","../../../../libs/angular/utils/src/lib/helpers/get-unique-id.ts","../../../../libs/angular/utils/src/lib/helpers/match-url.ts","../../../../libs/angular/utils/src/lib/helpers/ng-changes.ts","../../../../libs/angular/utils/src/lib/helpers/provide-config.ts","../../../../libs/angular/utils/src/lib/helpers/queue.ts","../../../../libs/angular/utils/src/odx-angular-utils.ts"],"sourcesContent":["export function Pure<T>(_target: object, propertyKey: string, { get, enumerable, value }: TypedPropertyDescriptor<T>): TypedPropertyDescriptor<T> {\n if (get) {\n return {\n enumerable,\n get(): T {\n const value = get.call(this);\n\n Object.defineProperty(this, propertyKey, { enumerable, value });\n\n return value;\n },\n };\n }\n\n if (typeof value !== 'function') {\n throw new Error('@Pure decorator can only be applied to functions or getters!');\n }\n\n const originalValue = value;\n\n return {\n enumerable,\n get(): T {\n let previousArgs: readonly unknown[] = [];\n let wasCalled = false;\n let pureValue: unknown;\n\n const patched = (...args: unknown[]): unknown => {\n const isPure = wasCalled && previousArgs.length === args.length && args.every((arg, index) => arg === previousArgs[index]);\n\n if (isPure) {\n return pureValue;\n }\n\n previousArgs = args;\n pureValue = originalValue.apply(this, args);\n wasCalled = true;\n\n return pureValue;\n };\n\n Object.defineProperty(this, propertyKey, { value: patched });\n\n return patched as unknown as T;\n },\n };\n}\n","import { TemplateRef, Type, ViewContainerRef } from '@angular/core';\n\nexport function isViewContainer(value: unknown): value is ViewContainerRef {\n return isFunction((value as ViewContainerRef)?.createComponent);\n}\n\nexport function isTemplateRef<T = unknown>(value: unknown): value is TemplateRef<T> {\n return value instanceof TemplateRef;\n}\n\nexport function isComponent<T = unknown>(value: unknown): value is Type<T> {\n return isFunction(value);\n}\n\nexport function isString(value: unknown): value is string {\n return typeof value === 'string';\n}\n\nexport function isNonEmptyString(value: unknown): value is string {\n return isString(value) && value.length > 0;\n}\n\nexport function isBoolean(value: unknown): value is boolean {\n return value === true || value === false;\n}\n\nexport function isFunction(value: unknown): value is CallableFunction {\n return typeof value === 'function';\n}\n\nexport function isPresent<T>(value: T | null | undefined): value is NonNullable<T> {\n return value !== null && value !== undefined;\n}\n\nexport function isNumber(value: unknown): value is number {\n return typeof value === 'number';\n}\n","import { Subscriber } from 'rxjs';\nimport { isNumber, isString } from './type-guards';\n\nexport function applyStyles(element: HTMLElement, styles: Partial<CSSStyleDeclaration | Record<keyof CSSStyleDeclaration, string | null>>): void {\n Object.assign(element.style, styles);\n}\n\nexport function booleanToAttributeString(state: boolean): string {\n return booleanToOptionalAttributeString(state) ?? 'false';\n}\n\nexport function booleanToOptionalAttributeString(state: boolean): string | null {\n return state ? 'true' : null;\n}\n\nexport function px(value: unknown): `${number}px` {\n return isNumber(value) ? `${value}px` : '0px';\n}\n\nexport function cssTranslate(x: string | 0, y: string | 0): `translate3d(${string | 0}, ${string | 0}, 0)` {\n return `translate3d(${x}, ${y}, 0)`;\n}\n\nexport function disableCSSTransitions(element: HTMLElement, disabled: boolean): void {\n if (disabled) {\n applyStyles(element, { transition: 'none' });\n } else {\n forceLayoutReflow(element);\n applyStyles(element, { transition: null });\n }\n}\n\nexport function forceLayoutReflow(element: HTMLElement): void {\n element.offsetHeight;\n}\n\nexport function setAttribute(element: HTMLElement, attribute: string, value?: unknown) {\n if (isString(value) || isNumber(value)) {\n element.setAttribute(attribute, value.toString());\n } else {\n element.toggleAttribute(attribute, !!value);\n }\n}\n\nexport function createResizeObserver(callback: ResizeObserverCallback): ResizeObserver {\n try {\n return new ResizeObserver(callback);\n } catch {\n return { observe: () => void 0, disconnect: () => void 0, unobserve: () => void 0 };\n }\n}\n\nexport function createMutationObserver(observer: Subscriber<MutationRecord>, callback: (mutations: MutationRecord[]) => boolean): MutationObserver {\n try {\n return new MutationObserver((mutations) => {\n if (callback(mutations)) {\n observer.next(mutations[0]);\n }\n });\n } catch (error) {\n return { disconnect: () => void 0, observe: () => void 0, takeRecords: () => [] };\n }\n}\n\nexport function containsElement(parent?: Element | null, other?: Element | null, inclusive = true): boolean {\n if (!parent || !other) return false;\n if (!inclusive && parent === other) return false;\n return parent.contains(other);\n}\n","import { DestroyRef, inject } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MonoTypeOperatorFunction } from 'rxjs';\n\nexport function untilDestroyed(): <T>() => MonoTypeOperatorFunction<T> {\n const destroyRef = inject(DestroyRef);\n\n return () => takeUntilDestroyed(destroyRef);\n}\n","import { ElementRef, inject } from '@angular/core';\nimport { MonoTypeOperatorFunction, Observable, tap } from 'rxjs';\nimport { setAttribute } from './dom';\nimport { untilDestroyed } from './until-destroyed';\n\nfunction reactiveBinding<T>(updateFn: (state: unknown) => void): MonoTypeOperatorFunction<T> {\n const takeUntilDestroyed = untilDestroyed();\n\n return (source$: Observable<T>) =>\n source$.pipe(\n tap((state) => updateFn(state)),\n takeUntilDestroyed(),\n );\n}\n\nexport function reactiveClassBinding<T>(source$: Observable<T> | null | undefined, cssClass: string): void {\n const { nativeElement } = injectElement();\n\n if (source$) {\n source$.pipe(reactiveBinding((state) => nativeElement.classList.toggle(cssClass, !!state))).subscribe();\n }\n}\n\nexport function reactiveAttributeBinding<T>(source$: Observable<T> | null | undefined, ...attributes: string[]): void {\n const { nativeElement } = injectElement();\n\n if (source$) {\n source$\n .pipe(\n reactiveBinding((value) => {\n for (const attribute of attributes) {\n setAttribute(nativeElement, attribute, value);\n }\n }),\n )\n .subscribe();\n }\n}\n\nexport function injectElement<T = HTMLElement>(): ElementRef<T> {\n return inject<ElementRef<T>>(ElementRef);\n}\n\nexport function trackByIndex(index: number): number {\n return index;\n}\n\nexport function trackById<T extends { id: string | number | symbol }>(_: number, { id }: T): T['id'] {\n return id;\n}\n","import { isNumber, isString } from './type-guards';\n\n/**\n * Extracts the values of a specified key from each object in an array.\n *\n * @template T - The type of the objects in the array.\n * @template K - The type of the keys of `T`.\n * @param {T[]} arr - The array of objects to pluck values from.\n * @param {K} key - The key whose values are to be plucked from each object in the array.\n * @returns {Array<T[K]>} An array of values corresponding to the specified key from each object.\n * @example\n * const users = [{ name: 'Alice' }, { name: 'Bob' }];\n * const names = pluckFromArray(users, 'name'); // ['Alice', 'Bob']\n */\nexport function pluckFromArray<T, K extends keyof T>(arr: T[], key: K): Array<T[K]> {\n return arr.map((value) => value[key]);\n}\n\nexport type OrderByDirection = 'ASC' | 'DESC';\n\n/**\n * Creates a compare function for sorting an array of objects based on a specified key and direction.\n *\n * @template T - The type of the objects in the array.\n * @param {keyof T} key - The key to sort by.\n * @param {OrderByDirection} [direction='ASC'] - The direction to sort ('ASC' for ascending, 'DESC' for descending).\n * @returns {(a: T, b: T) => number} A compare function that can be used in the array sort method.\n * @example\n * const items = [{ value: 10 }, { value: 5 }, { value: 7 }];\n * const sortedItems = items.sort(orderBy('value', 'ASC')); // Sorted by value in ascending order\n */\nexport function orderBy<T>(key: keyof T, direction: OrderByDirection = 'ASC'): (a: T, b: T) => number {\n return (a, b) => {\n const leftValue = direction === 'ASC' ? a[key] : b[key];\n const rightValue = direction === 'ASC' ? b[key] : a[key];\n if (leftValue === undefined) {\n return -1;\n }\n if (rightValue === undefined) {\n return -1;\n }\n if (isNumber(leftValue) && isNumber(rightValue)) {\n return leftValue - rightValue;\n }\n if (isString(leftValue) && isString(rightValue)) {\n return leftValue.toLowerCase().localeCompare(rightValue.toLowerCase());\n }\n return 0;\n };\n}\n","export function buildUrl(...args: Array<string | number | symbol | null | undefined>): string {\n return args.join('/').replace(/(^.*)(https?:\\/\\/)|(\\/)+/g, '$2$3');\n}\n","import { buildUrl } from './build-url';\n\nexport const DRAEGER_WEBSITE_URL = 'https://www.draeger.com';\n\nexport function buildWebsiteUrl(...segments: Array<string | number | symbol | null | undefined>): string {\n return buildUrl(DRAEGER_WEBSITE_URL, ...segments);\n}\n","export const HTTP_ETAG_HEADER = 'Etag';\nexport const HTTP_IF_NONE_MATCH_HEADER = 'If-None-Match';\nexport const HTTP_CACHE_CONTROL_HEADER = 'Cache-Control';\n\nexport class CacheStorageClient {\n constructor(\n private readonly cacheKey: string,\n private readonly cacheStorage = window.caches,\n ) {}\n\n public async delete(request: RequestInfo | URL): Promise<boolean> {\n const cache = await this.getCache();\n\n return cache.delete(request);\n }\n\n public async deleteAll(): Promise<void> {\n const cache = await this.getCache();\n for (const key of await cache.keys()) {\n await cache.delete(key);\n }\n }\n\n public async request<T>(requestInfo: RequestInfo | URL, shouldDelete = ({ status }: Response) => status >= 400 && status < 500): Promise<T | null> {\n const cache = await this.getCache();\n const request = await this.prepareRequest(cache, requestInfo);\n const response = await this.sendRequest(cache, request);\n if (response && shouldDelete?.(response)) {\n await cache.delete(request);\n }\n return response?.json() ?? null;\n }\n\n protected async getCache(): Promise<Cache> {\n return this.cacheStorage.open(this.cacheKey);\n }\n\n protected async prepareRequest(cache: Cache, requestInfo: RequestInfo | URL): Promise<Request> {\n const cachedResponse = await cache.match(requestInfo);\n const etag = cachedResponse?.headers?.get(HTTP_ETAG_HEADER) ?? null;\n const request = new Request(requestInfo);\n if (etag) {\n request.headers.set(HTTP_IF_NONE_MATCH_HEADER, etag);\n }\n\n return request;\n }\n\n protected async sendRequest(cache: Cache, request: Request): Promise<Response | null> {\n const response = await fetch(request).catch(() => null);\n const cacheControl = response?.headers?.get(HTTP_CACHE_CONTROL_HEADER);\n if (cacheControl === 'no-cache') {\n await cache.delete(request);\n\n return response;\n }\n if (response?.ok) {\n await cache.put(request, response).catch(() => null);\n }\n\n return cache.match(request).then((res) => res ?? null);\n }\n}\n","import { coerceArray } from '@angular/cdk/coercion';\n\nexport function arrayAttribute(value: string | string[]): string[] {\n return coerceArray<string>(value);\n}\n\nexport { coerceArray, coerceCssPixelValue, coerceElement, coerceStringArray } from '@angular/cdk/coercion';\n","export function debounce<Args extends unknown[]>(func: (...args: Args) => void, delay: number, immediate = false): (...args: Args) => void {\n let timeout: number | null = null;\n\n return function (this: unknown, ...args: Args) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const context = this;\n const callImmediately = immediate && timeout === null;\n if (timeout !== null) {\n clearTimeout(timeout);\n }\n timeout = setTimeout(function () {\n timeout = null;\n if (!callImmediately) {\n func.apply(context, args);\n }\n }, delay) as unknown as number;\n if (callImmediately) {\n func.apply(context, args);\n }\n };\n}\n","export function deferFn(fn: () => void): void {\n setTimeout(fn, 0);\n}\n","import { inject, Injectable, OnDestroy, Renderer2 } from '@angular/core';\nimport { injectElement } from './angular';\n\n@Injectable()\nexport class EventManager implements OnDestroy {\n private readonly element = injectElement();\n private readonly renderer = inject(Renderer2);\n private readonly listeners: Array<() => void> = [];\n\n public destroyListeners(): void {\n while (this.listeners.length) this.listeners.pop()?.();\n }\n\n public register<T extends Event = Event>(\n eventNames: Array<string | null>,\n callback: (event?: T) => void,\n target?: 'document' | 'window' | EventTarget | null\n ): void {\n for (const eventName of eventNames) {\n if (eventName) {\n this.listeners.push(this.renderer.listen(target ?? this.element.nativeElement, eventName, (event) => callback(event)));\n }\n }\n }\n\n public ngOnDestroy(): void {\n this.destroyListeners();\n }\n}\n","export type Axis = (typeof Axis)[keyof typeof Axis];\n\nexport const Axis = {\n X: 'x',\n Y: 'y',\n} as const;\n","export type Position = (typeof Position)[keyof typeof Position];\n\nexport const Position = {\n TOP: 'top',\n TOP_START: 'top-start',\n TOP_END: 'top-end',\n\n RIGHT: 'right',\n RIGHT_START: 'right-start',\n RIGHT_END: 'right-end',\n\n BOTTOM: 'bottom',\n BOTTOM_START: 'bottom-start',\n BOTTOM_END: 'bottom-end',\n\n LEFT: 'left',\n LEFT_START: 'left-start',\n LEFT_END: 'left-end',\n} as const;\n","export type Side = (typeof Side)[keyof typeof Side];\n\nexport const Side = {\n TOP: 'top',\n RIGHT: 'right',\n BOTTOM: 'bottom',\n LEFT: 'left',\n} as const;\n","import { Position, Side } from '../types';\n\nexport function getSide(position: Position): Side {\n return position.split('-')[0] as Side;\n}\n","import { Axis, Position, Side } from '../types';\nimport { getSide } from './get-side';\n\nexport function getAxis(position: Position): Axis {\n const side = getSide(position);\n\n switch (side) {\n case Side.TOP:\n case Side.BOTTOM:\n return Axis.Y;\n case Side.LEFT:\n case Side.RIGHT:\n return Axis.X;\n }\n}\n","export function getLanguageCode(language: string): string {\n const [languageCode] = language.split(/-|_/);\n\n return languageCode?.toLowerCase();\n}\n","import { Position, Side } from '../types';\nimport { getSide } from './get-side';\n\nexport function getOppositeSide(position: Position): Side {\n switch (getSide(position)) {\n case Side.TOP:\n return Side.BOTTOM;\n case Side.RIGHT:\n return Side.LEFT;\n case Side.BOTTOM:\n return Side.TOP;\n case Side.LEFT:\n return Side.RIGHT;\n }\n}\n","let uniqueIdCache: { [key: string]: number } = {};\n\nexport function getUniqueId(key: string): string {\n uniqueIdCache[key] = (uniqueIdCache[key] ?? 0) + 1;\n\n return `${key}-${uniqueIdCache[key]}`;\n}\n\nexport function clearUniqueIdCache(): void {\n uniqueIdCache = {};\n}\n","import { isString } from './type-guards';\n\nexport function isUrlMatcher(value: unknown): value is string | RegExp {\n return isString(value) || value instanceof RegExp;\n}\n\nexport function matchUrl(url: string, filter: string | RegExp): boolean {\n return isString(filter) ? url.startsWith(filter) : !!url.match(filter);\n}\n","import { GetProperties } from '../types';\n\nexport type NgChanges<C, Properties = GetProperties<C>> = {\n [Key in keyof Properties]: {\n previousValue: Properties[Key];\n currentValue: Properties[Key];\n firstChange: boolean;\n isFirstChange(): boolean;\n };\n};\n\nexport function hasChanged<U extends Record<string, unknown>, T extends NgChanges<U>, K extends keyof T>(\n changes: T,\n keyOrKeys: K | K[],\n ignoreFirstChange = true,\n): boolean {\n if (Array.isArray(keyOrKeys)) {\n for (const key of keyOrKeys) {\n if (hasChanged(changes, key, ignoreFirstChange)) {\n return true;\n }\n }\n return false;\n } else {\n return keyOrKeys in changes && (!ignoreFirstChange || !changes[keyOrKeys]?.isFirstChange());\n }\n}\n","import { FactoryProvider, inject, InjectionToken, Type, ValueProvider } from '@angular/core';\n\nimport { deepmerge } from '@odx/angular/internal';\n\ninterface ConfigFactoryProvider<T, D extends ConfigDependencies> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n useFactory: (...args: { [I in keyof D]: D[I] extends Type<unknown> ? InstanceType<D[I]> : D[I] extends InjectionToken<unknown> ? any : never }) => T;\n deps?: [...D];\n}\n\nexport type ConfigDependencies<T = unknown> = ReadonlyArray<Type<T> | InjectionToken<T>>;\nexport type ConfigProvider<T = unknown, D extends ConfigDependencies = []> = ConfigFactoryProvider<T, D> | T;\nexport type ConfigTransformFn<T = unknown> = (config: Partial<T>) => Partial<T>;\n\nexport function provideConfig<T extends object, D extends ConfigDependencies = ConfigDependencies>(\n token: InjectionToken<T> | string,\n config: ConfigProvider<T, D>,\n transform: ConfigTransformFn<T> = () => ({}),\n): FactoryProvider | ValueProvider {\n const prepareConfig = (value: Partial<T>) => deepmerge(value, transform(value));\n if ('useFactory' in config) {\n return {\n provide: token,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n useFactory: (...args: unknown[]) => prepareConfig(config.useFactory(...(args as any))),\n deps: config.deps,\n };\n }\n\n return {\n provide: token,\n useFactory: () => prepareConfig(config),\n };\n}\n\nfunction mergeConfig<T>(token: InjectionToken<Partial<T>>, defaultValue: T): Partial<T> {\n const config = inject(token);\n const parentConfig = inject(token, { skipSelf: true, optional: true }) ?? {};\n\n return deepmerge(defaultValue, parentConfig, config) as T;\n}\n\nexport function createConfigTokens<T, N extends string>(name: N, prefix: string, defaultValue: T, transform?: ConfigTransformFn<T>) {\n type ConfigProviderFn = <D extends ConfigDependencies = ConfigDependencies<Partial<T>>>(\n config: ConfigProvider<Partial<T>, D>,\n ) => FactoryProvider | ValueProvider;\n const configName = `${name}Config` as const;\n const defaultConfigName = `${name}DefaultConfig` as const;\n const injectConfigName = `inject${name}Config` as const;\n const provideConfigName = `provide${name}Config` as const;\n const tokenName = `${prefix}::${configName}`;\n const token = new InjectionToken<Partial<T>>(tokenName, { providedIn: 'root', factory: () => defaultValue });\n\n return {\n [configName]: token,\n [defaultConfigName]: defaultValue,\n [injectConfigName]: () => mergeConfig(token, defaultValue),\n [provideConfigName]: ((config) => provideConfig(token, config, transform)) as ConfigProviderFn,\n } as Record<typeof configName, InjectionToken<Partial<T>>> &\n Record<typeof defaultConfigName, T> &\n Record<typeof injectConfigName, () => T> &\n Record<typeof provideConfigName, ConfigProviderFn>;\n}\n","import { Observable, Subject } from 'rxjs';\nimport { concatAll, distinctUntilChanged, filter, map, share, shareReplay, startWith } from 'rxjs/operators';\nimport { isNumber, isString } from './type-guards';\n\ntype QueueItemId = string | number;\ntype QueueItem<T> = T & { id: QueueItemId };\ntype QueueEventType = 'remove' | 'add' | 'update';\ntype QueueEvent<T> = { items: QueueItem<T>[]; type: QueueEventType };\n\nfunction isQueueItemId(value: unknown): value is QueueItemId {\n return isString(value) || isNumber(value);\n}\n\nexport class Queue<T> {\n private readonly queue = new Map<string, QueueItem<T>>();\n private readonly events$$ = new Subject<QueueEvent<T>>();\n private values: QueueItem<T>[] = [];\n private firstItem: QueueItem<T> | null = null;\n private lastItem: QueueItem<T> | null = null;\n\n public readonly onAdd$ = this.createEventObserver('add');\n public readonly onUpdate$ = this.createEventObserver('update');\n public readonly onRemove$ = this.createEventObserver('remove');\n public readonly value$ = this.events$$.pipe(\n startWith(() => void 0),\n map(() => this.values),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n public readonly size$ = this.value$.pipe(\n map(() => this.size),\n distinctUntilChanged(),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n\n public get size(): number {\n return this.queue.size;\n }\n\n public isFirst({ id }: QueueItem<T>): boolean {\n return this.firstItem?.id === id;\n }\n\n public isLast({ id }: QueueItem<T>): boolean {\n return this.lastItem?.id === id;\n }\n\n public get(itemOrId: QueueItem<T> | QueueItemId): QueueItem<T> | null {\n const id = isQueueItemId(itemOrId) ? itemOrId.toString() : itemOrId.id.toString();\n\n return this.queue.get(id) ?? null;\n }\n\n public add(item: QueueItem<T>, emitEvent = true): QueueItem<T> {\n this.remove(item, false);\n\n return this.addMany([item], emitEvent)[0];\n }\n\n public addMany(items: Array<QueueItem<T>>, emitEvent = true): Array<QueueItem<T>> {\n const addedItems = [];\n const updatedItems = [];\n for (const item of items) {\n if (this.get(item)) {\n addedItems.push(item);\n } else {\n updatedItems.push(item);\n }\n this.queue.set(item.id.toString(), item);\n }\n if (addedItems.length) {\n this.notify({ type: 'add', items: addedItems }, emitEvent);\n }\n if (updatedItems.length) {\n this.notify({ type: 'update', items: updatedItems }, emitEvent);\n }\n\n return items;\n }\n\n public remove(itemOrId: QueueItem<T> | QueueItemId, emitEvent = true): QueueItem<T> | null {\n return this.removeMany([itemOrId], emitEvent)[0];\n }\n\n public removeMany(itemOrIds: Array<QueueItem<T> | QueueItemId>, emitEvent = true): Array<QueueItem<T> | null> {\n const items = itemOrIds.map((itemOrId) => this.get(itemOrId)).filter(Boolean) as QueueItem<T>[];\n const removedItems = [];\n for (const item of items) {\n const itemRemoved = this.queue.delete(item.id.toString());\n if (!itemRemoved) continue;\n removedItems.push(item);\n }\n this.notify({ type: 'remove', items: removedItems }, emitEvent);\n\n return items;\n }\n\n public clear(emitEvent = true): void {\n const items = this.toArray();\n this.queue.clear();\n this.notify({ type: 'remove', items }, emitEvent);\n }\n\n public toArray(): QueueItem<T>[] {\n return this.values;\n }\n\n private notify(event: QueueEvent<T>, emitEvent = true): void {\n this.values = Array.from(this.queue, ([_, item]) => item).reverse();\n this.firstItem = this.values[0] ?? null;\n this.lastItem = this.values[this.values.length - 1] ?? null;\n if (!emitEvent) return;\n this.events$$.next(event);\n }\n\n private createEventObserver(type: QueueEventType): Observable<T> {\n return this.events$$.pipe(\n filter((event) => event.type === type),\n map(({ items }) => items),\n concatAll(),\n share(),\n );\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@odx/angular",
3
- "version": "5.3.4",
3
+ "version": "5.4.0",
4
4
  "author": "Drägerwerk AG & Co.KGaA",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "peerDependencies": {
@@ -361,6 +361,12 @@
361
361
  "esm": "./esm2022/components/navigation-back/odx-angular-components-navigation-back.mjs",
362
362
  "default": "./fesm2022/odx-angular-components-navigation-back.mjs"
363
363
  },
364
+ "./components/notification": {
365
+ "types": "./components/notification/index.d.ts",
366
+ "esm2022": "./esm2022/components/notification/odx-angular-components-notification.mjs",
367
+ "esm": "./esm2022/components/notification/odx-angular-components-notification.mjs",
368
+ "default": "./fesm2022/odx-angular-components-notification.mjs"
369
+ },
364
370
  "./components/paginator": {
365
371
  "types": "./components/paginator/index.d.ts",
366
372
  "esm2022": "./esm2022/components/paginator/odx-angular-components-paginator.mjs",
@@ -456,6 +462,12 @@
456
462
  "esm2022": "./esm2022/internal/translate/odx-angular-internal-translate.mjs",
457
463
  "esm": "./esm2022/internal/translate/odx-angular-internal-translate.mjs",
458
464
  "default": "./fesm2022/odx-angular-internal-translate.mjs"
465
+ },
466
+ "./components/notification/testing": {
467
+ "types": "./components/notification/testing/index.d.ts",
468
+ "esm2022": "./esm2022/components/notification/testing/odx-angular-components-notification-testing.mjs",
469
+ "esm": "./esm2022/components/notification/testing/odx-angular-components-notification-testing.mjs",
470
+ "default": "./fesm2022/odx-angular-components-notification-testing.mjs"
459
471
  }
460
472
  }
461
473
  }
@@ -1,3 +1,26 @@
1
+ /**
2
+ * Extracts the values of a specified key from each object in an array.
3
+ *
4
+ * @template T - The type of the objects in the array.
5
+ * @template K - The type of the keys of `T`.
6
+ * @param {T[]} arr - The array of objects to pluck values from.
7
+ * @param {K} key - The key whose values are to be plucked from each object in the array.
8
+ * @returns {Array<T[K]>} An array of values corresponding to the specified key from each object.
9
+ * @example
10
+ * const users = [{ name: 'Alice' }, { name: 'Bob' }];
11
+ * const names = pluckFromArray(users, 'name'); // ['Alice', 'Bob']
12
+ */
1
13
  export declare function pluckFromArray<T, K extends keyof T>(arr: T[], key: K): Array<T[K]>;
2
14
  export type OrderByDirection = 'ASC' | 'DESC';
15
+ /**
16
+ * Creates a compare function for sorting an array of objects based on a specified key and direction.
17
+ *
18
+ * @template T - The type of the objects in the array.
19
+ * @param {keyof T} key - The key to sort by.
20
+ * @param {OrderByDirection} [direction='ASC'] - The direction to sort ('ASC' for ascending, 'DESC' for descending).
21
+ * @returns {(a: T, b: T) => number} A compare function that can be used in the array sort method.
22
+ * @example
23
+ * const items = [{ value: 10 }, { value: 5 }, { value: 7 }];
24
+ * const sortedItems = items.sort(orderBy('value', 'ASC')); // Sorted by value in ascending order
25
+ */
3
26
  export declare function orderBy<T>(key: keyof T, direction?: OrderByDirection): (a: T, b: T) => number;