@ngstarter-ui/components 1.0.39 → 1.0.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +5 -5
- package/ai/component-registry.json +20 -8
- package/fesm2022/ngstarter-ui-components-alert.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-alert.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-button.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-core.mjs +0 -12
- package/fesm2022/ngstarter-ui-components-core.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-country-select.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-country-select.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-currency-select.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-currency-select.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-form-field.mjs +5 -3
- package/fesm2022/ngstarter-ui-components-form-field.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-input.mjs +3 -0
- package/fesm2022/ngstarter-ui-components-input.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-select.mjs +2 -2
- package/fesm2022/ngstarter-ui-components-select.mjs.map +1 -1
- package/fesm2022/ngstarter-ui-components-table.mjs +4 -2
- package/fesm2022/ngstarter-ui-components-table.mjs.map +1 -1
- package/package.json +1 -1
- package/schematics/utils.js +0 -1
- package/schematics/utils.js.map +1 -1
- package/styles/_global.scss +8 -0
- package/styles/_tokens.scss +85 -261
- package/styles/themes/compact.scss +2 -3
- package/styles/themes/enterprise.scss +65 -332
- package/styles/themes/modern.scss +7 -6
- package/types/ngstarter-ui-components-core.d.ts +1 -6
- package/types/ngstarter-ui-components-form-field.d.ts +1 -0
- package/types/ngstarter-ui-components-input.d.ts +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngstarter-ui-components-core.mjs","sources":["../../../projects/components/core/src/tokens/autofocusable.token.ts","../../../projects/components/core/src/directives/auto-focus.directive.ts","../../../projects/components/core/src/directives/focus-element.directive.ts","../../../projects/components/core/src/directives/sound-effect.directive.ts","../../../projects/components/core/src/directives/debounce-time.directive.ts","../../../projects/components/core/src/directives/ripple.ts","../../../projects/components/core/src/utils/dom.ts","../../../projects/components/core/src/directives/textarea-auto-size.ts","../../../projects/components/core/src/pipes/initials.pipe.ts","../../../projects/components/core/src/pipes/format-file-size.pipe.ts","../../../projects/components/core/src/pipes/order-by.pipe.ts","../../../projects/components/core/src/pipes/safe-html.pipe.ts","../../../projects/components/core/src/pipes/safe-resource-url.pipe.ts","../../../projects/components/core/src/pipes/filter-by-property.pipe.ts","../../../projects/components/core/src/pipes/search-by-property.pipe.ts","../../../projects/components/core/src/services/environment.service.ts","../../../projects/components/core/src/services/analytics.service.ts","../../../projects/components/core/src/services/inactivity-tracker.service.ts","../../../projects/components/core/src/global.state.ts","../../../projects/components/core/src/services/page-title-strategy.service.ts","../../../projects/components/core/src/services/screen-loader.service.ts","../../../projects/components/core/src/services/seo.service.ts","../../../projects/components/core/src/tokens/theme.token.ts","../../../projects/components/core/src/services/theme-manager.service.ts","../../../projects/components/core/src/services/resize-observer.service.ts","../../../projects/components/core/src/services/mutation-observer.service.ts","../../../projects/components/core/src/error/error-options.ts","../../../projects/components/core/src/utils/miscellaneous.ts","../../../projects/components/core/src/observables/zone-free.ts","../../../projects/components/core/src/observables/typed-from-event.ts","../../../projects/components/core/ngstarter-ui-components-core.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport interface Autofocusable {\n focus(): void;\n}\n\nexport const AUTOFOCUSABLE = new InjectionToken<Autofocusable>('AUTOFOCUSABLE');\n","import { AfterViewInit, Directive, ElementRef, inject, input, OnChanges, PLATFORM_ID, SimpleChanges } from '@angular/core';\nimport { AUTOFOCUSABLE } from '../tokens/autofocusable.token';\nimport { isPlatformBrowser } from '@angular/common';\n\n@Directive({\n selector: '[ngsAutoFocus]',\n exportAs: 'ngsAutoFocus',\n standalone: true\n})\nexport class AutoFocusDirective implements AfterViewInit, OnChanges {\n private platformId = inject(PLATFORM_ID);\n private elementRef = inject(ElementRef);\n private autofocusable = inject(AUTOFOCUSABLE, { optional: true });\n\n enabled = input<boolean | string>(true, { alias: 'ngsAutoFocus' });\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['enabled'] && !changes['enabled'].firstChange) {\n this._focus();\n }\n }\n\n ngAfterViewInit(): void {\n this._focus();\n }\n\n private _focus(): void {\n if (this.enabled() === false || this.enabled() === 'false') {\n return;\n }\n\n if (this.autofocusable) {\n this.autofocusable.focus();\n } else {\n this.elementRef.nativeElement.focus();\n }\n\n this._moveCursorToEnd(this.elementRef.nativeElement);\n }\n\n private _moveCursorToEnd(el: HTMLElement) {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n\n const range = document.createRange();\n const sel = window.getSelection();\n range.selectNodeContents(el);\n range.collapse(false);\n sel?.removeAllRanges();\n sel?.addRange(range);\n }\n}\n","import {\n AfterViewInit, booleanAttribute,\n ChangeDetectorRef,\n Directive,\n ElementRef,\n inject, input,\n NgZone,\n OnDestroy,\n output\n} from '@angular/core';\nimport { FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';\n\n@Directive({\n selector: '[ngsFocusElement]',\n exportAs: 'ngsFocusElement',\n standalone: true\n})\nexport class FocusElementDirective implements AfterViewInit, OnDestroy {\n private _elementRef = inject(ElementRef);\n private _focusMonitor = inject(FocusMonitor);\n\n checkChildren = input(true, {\n transform: booleanAttribute\n });\n\n readonly elementFocused = output<void>();\n readonly elementBlurred = output<void>();\n\n ngAfterViewInit() {\n this._focusMonitor\n .monitor(this._elementRef.nativeElement, this.checkChildren())\n .subscribe(origin => {\n this._emitFocusEvent(origin);\n })\n ;\n }\n\n ngOnDestroy() {\n this._focusMonitor.stopMonitoring(this._elementRef.nativeElement);\n }\n\n private _emitFocusEvent(origin: FocusOrigin): void {\n if (origin) {\n this.elementFocused.emit();\n } else {\n this.elementBlurred.emit();\n }\n }\n}\n","import { afterNextRender, DestroyRef, Directive, ElementRef, inject, input } from '@angular/core';\nimport { fromEvent } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Directive({\n selector: '[ngsSoundEffect]',\n standalone: true\n})\nexport class SoundEffectDirective {\n soundSrc = input('assets/sound-effects/mouse-click.ogg');\n\n private _elementRef = inject(ElementRef);\n private _destroyRef = inject(DestroyRef);\n\n constructor() {\n afterNextRender(() => {\n this._init();\n });\n }\n\n private _init() {\n const audio = new Audio(this.soundSrc());\n audio.volume = 0.15;\n fromEvent(this._elementRef.nativeElement, 'click')\n .pipe(\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe(async (e) => {\n await audio.play();\n })\n ;\n }\n}\n","import { Directive, ElementRef, forwardRef, input, numberAttribute, Renderer2 } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Directive({\n selector: '[ngsDebounceTime][ngModel]',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DebounceTimeDirective),\n multi: true,\n },\n ],\n host: {\n '(input)': 'handleInput($event)',\n '(blur)': 'handleBlur()'\n }\n})\nexport class DebounceTimeDirective implements ControlValueAccessor {\n private debounceTimer?: ReturnType<typeof setTimeout>;\n\n readonly debounceTime = input(300, { transform: numberAttribute });\n\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n constructor(\n private elementRef: ElementRef<HTMLInputElement>,\n private renderer: Renderer2\n ) {}\n\n writeValue(value: string): void {\n this.renderer.setProperty(this.elementRef.nativeElement, 'value', value ?? '');\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.renderer.setProperty(this.elementRef.nativeElement, 'disabled', isDisabled);\n }\n\n protected handleInput(event: Event): void {\n clearTimeout(this.debounceTimer);\n\n const target = event.target as HTMLInputElement | null;\n const value = target?.value ?? '';\n\n if (!this.debounceTime()) {\n this.onChange(value);\n } else {\n this.debounceTimer = setTimeout(() => {\n this.onChange(value);\n }, this.debounceTime());\n }\n }\n\n protected handleBlur(): void {\n this.onTouched();\n }\n}\n","import {\n Directive,\n ElementRef,\n inject,\n InjectionToken,\n input,\n model,\n effect,\n NgZone,\n OnDestroy,\n OnInit,\n booleanAttribute,\n numberAttribute\n} from '@angular/core';\nimport { normalizePassiveListenerOptions, _getEventTarget, Platform } from '@angular/cdk/platform';\nimport { isFakeMousedownFromScreenReader, isFakeTouchstartFromScreenReader } from '@angular/cdk/a11y';\nimport { coerceElement } from '@angular/cdk/coercion';\n\n/** Possible states for a ripple element. */\nexport enum RippleState {\n FADING_IN = 0,\n VISIBLE = 1,\n FADING_OUT = 2,\n HIDDEN = 3,\n}\n\nexport interface RippleConfig {\n color?: string;\n centered?: boolean;\n radius?: number;\n persistent?: boolean;\n animation?: RippleAnimationConfig;\n terminateOnPointerUp?: boolean;\n}\n\nexport interface RippleAnimationConfig {\n enterDuration?: number;\n exitDuration?: number;\n}\n\n/**\n * Reference to a previously launched ripple element.\n */\nexport class RippleRef {\n /** Current state of the ripple. */\n state: RippleState = RippleState.HIDDEN;\n\n constructor(\n private _renderer: { fadeOutRipple(ref: RippleRef): void },\n /** Reference to the ripple HTML element. */\n public element: HTMLElement,\n /** Ripple configuration used for the ripple. */\n public config: RippleConfig,\n /* Whether animations are forcibly disabled for ripples through CSS. */\n public _animationForciblyDisabledThroughCss = false\n ) {}\n\n /** Fades out the ripple element. */\n fadeOut() {\n this._renderer.fadeOutRipple(this);\n }\n}\n\n/** Options used to bind a passive capturing event. */\nconst passiveCapturingEventOptions = normalizePassiveListenerOptions({\n passive: true,\n capture: true,\n});\n\n/** Manages events through delegation so that as few event handlers as possible are bound. */\nclass RippleEventManager {\n private _events = new Map<string, Map<HTMLElement, Set<EventListenerObject>>>();\n\n /** Adds an event handler. */\n addHandler(ngZone: NgZone, name: string, element: HTMLElement, handler: EventListenerObject) {\n const handlersForEvent = this._events.get(name);\n if (handlersForEvent) {\n const handlersForElement = handlersForEvent.get(element);\n if (handlersForElement) {\n handlersForElement.add(handler);\n } else {\n handlersForEvent.set(element, new Set([handler]));\n }\n } else {\n this._events.set(name, new Map([[element, new Set([handler])]]));\n ngZone.runOutsideAngular(() => {\n document.addEventListener(name, this._delegateEventHandler, passiveCapturingEventOptions);\n });\n }\n }\n\n /** Removes an event handler. */\n removeHandler(name: string, element: HTMLElement, handler: EventListenerObject) {\n const handlersForEvent = this._events.get(name);\n if (!handlersForEvent) {\n return;\n }\n\n const handlersForElement = handlersForEvent.get(element);\n if (!handlersForElement) {\n return;\n }\n\n handlersForElement.delete(handler);\n\n if (handlersForElement.size === 0) {\n handlersForEvent.delete(element);\n }\n\n if (handlersForEvent.size === 0) {\n this._events.delete(name);\n document.removeEventListener(name, this._delegateEventHandler, passiveCapturingEventOptions);\n }\n }\n\n /** Event handler that is bound and which dispatches the events to the different targets. */\n private _delegateEventHandler = (event: Event) => {\n const target = _getEventTarget(event) as HTMLElement;\n if (target) {\n this._events.get(event.type)?.forEach((handlers, element) => {\n if (element === target || element.contains(target)) {\n handlers.forEach(handler => handler.handleEvent(event));\n }\n });\n }\n };\n}\n\n/**\n * Default ripple animation configuration for ripples without an explicit\n * animation config specified.\n */\nexport const defaultRippleAnimationConfig = {\n enterDuration: 225,\n exitDuration: 150,\n};\n\n/**\n * Timeout for ignoring mouse events. Mouse events will be temporary ignored after touch\n * events to avoid synthetic mouse events.\n */\nconst ignoreMouseEventsTimeout = 800;\n\n/** Events that signal that the pointer is down. */\nconst pointerDownEvents = ['mousedown', 'touchstart'];\n\n/** Events that signal that the pointer is up. */\nconst pointerUpEvents = ['mouseup', 'mouseleave', 'touchend', 'touchcancel'];\n\n/**\n * Helper service that performs DOM manipulations. Not intended to be used outside this module.\n */\nexport class RippleRenderer implements EventListenerObject {\n /** Element where the ripples are being added to. */\n private _containerElement: HTMLElement;\n /** Element which triggers the ripple elements on mouse events. */\n private _triggerElement: HTMLElement | null = null;\n /** Whether the pointer is currently down or not. */\n private _isPointerDown = false;\n /** Map of currently active ripple references. */\n private _activeRipples = new Map<RippleRef, any>();\n /** Latest non-persistent ripple that was triggered. */\n private _mostRecentTransientRipple: RippleRef | null = null;\n /** Time in milliseconds when the last touchstart event happened. */\n private _lastTouchStartEvent: number | null = null;\n /** Whether pointer-up event listeners have been registered. */\n private _pointerUpEventsRegistered = false;\n /** Cached dimensions of the ripple container. */\n private _containerRect: DOMRect | null = null;\n\n private static _eventManager = new RippleEventManager();\n\n constructor(\n private _target: { rippleConfig: RippleConfig; rippleDisabled: boolean },\n private _ngZone: NgZone,\n elementOrElementRef: HTMLElement | ElementRef<HTMLElement>,\n private _platform: Platform\n ) {\n // Only do anything if we're on the browser.\n if (_platform.isBrowser) {\n this._containerElement = coerceElement(elementOrElementRef);\n }\n }\n\n /** Fades in a ripple at the given coordinates. */\n fadeInRipple(x: number, y: number, config: RippleConfig = {}): RippleRef {\n const containerRect = (this._containerRect =\n this._containerRect || this._containerElement.getBoundingClientRect());\n const animationConfig = { ...defaultRippleAnimationConfig, ...config.animation };\n\n if (config.centered) {\n x = containerRect.left + containerRect.width / 2;\n y = containerRect.top + containerRect.height / 2;\n }\n\n const radius = config.radius || distanceToFurthestCorner(x, y, containerRect);\n const offsetX = x - containerRect.left;\n const offsetY = y - containerRect.top;\n const enterDuration = animationConfig.enterDuration;\n\n const ripple = document.createElement('div');\n ripple.classList.add('ngs-ripple-element');\n\n ripple.style.left = `${offsetX - radius}px`;\n ripple.style.top = `${offsetY - radius}px`;\n ripple.style.height = `${radius * 2}px`;\n ripple.style.width = `${radius * 2}px`;\n\n if (config.color != null) {\n ripple.style.backgroundColor = config.color;\n }\n\n ripple.style.transitionDuration = `${enterDuration}ms`;\n\n this._containerElement.appendChild(ripple);\n\n const computedStyles = window.getComputedStyle(ripple);\n const userTransitionProperty = computedStyles.transitionProperty;\n const userTransitionDuration = computedStyles.transitionDuration;\n\n const animationForciblyDisabledThroughCss =\n userTransitionProperty === 'none' ||\n userTransitionDuration === '0s' ||\n userTransitionDuration === '0s, 0s' ||\n (containerRect.width === 0 && containerRect.height === 0);\n\n const rippleRef = new RippleRef(this, ripple, config, animationForciblyDisabledThroughCss);\n\n ripple.style.transform = 'scale3d(1, 1, 1)';\n rippleRef.state = RippleState.FADING_IN;\n\n if (!config.persistent) {\n this._mostRecentTransientRipple = rippleRef;\n }\n\n let eventListeners: any = null;\n\n if (!animationForciblyDisabledThroughCss && (enterDuration || animationConfig.exitDuration)) {\n this._ngZone.runOutsideAngular(() => {\n const onTransitionEnd = () => {\n if (eventListeners) {\n eventListeners.fallbackTimer = null;\n }\n clearTimeout(fallbackTimer);\n this._finishRippleTransition(rippleRef);\n };\n const onTransitionCancel = () => this._destroyRipple(rippleRef);\n const fallbackTimer = setTimeout(onTransitionCancel, (enterDuration || 0) + 100);\n\n ripple.addEventListener('transitionend', onTransitionEnd);\n ripple.addEventListener('transitioncancel', onTransitionCancel);\n\n eventListeners = { onTransitionEnd, onTransitionCancel, fallbackTimer };\n });\n }\n\n this._activeRipples.set(rippleRef, eventListeners);\n\n if (animationForciblyDisabledThroughCss || !enterDuration) {\n this._finishRippleTransition(rippleRef);\n }\n\n return rippleRef;\n }\n\n /** Fades out a ripple reference. */\n fadeOutRipple(rippleRef: RippleRef) {\n if (rippleRef.state === RippleState.FADING_OUT || rippleRef.state === RippleState.HIDDEN) {\n return;\n }\n\n const rippleEl = rippleRef.element;\n const animationConfig = { ...defaultRippleAnimationConfig, ...rippleRef.config.animation };\n\n rippleEl.style.transitionDuration = `${animationConfig.exitDuration}ms`;\n rippleEl.style.opacity = '0';\n rippleRef.state = RippleState.FADING_OUT;\n\n if (rippleRef._animationForciblyDisabledThroughCss || !animationConfig.exitDuration) {\n this._finishRippleTransition(rippleRef);\n }\n }\n\n /** Fades out all currently active ripples. */\n fadeOutAll() {\n this._getActiveRipples().forEach(ripple => ripple.fadeOut());\n }\n\n /** Fades out all currently showing non-persistent ripples. */\n fadeOutAllNonPersistent() {\n this._getActiveRipples().forEach(ripple => {\n if (!ripple.config.persistent) {\n ripple.fadeOut();\n }\n });\n }\n\n /** Sets up the trigger event listeners */\n setupTriggerEvents(elementOrElementRef: HTMLElement | ElementRef<HTMLElement>) {\n const element = coerceElement(elementOrElementRef);\n\n if (!this._platform.isBrowser || !element || element === this._triggerElement) {\n return;\n }\n\n this._removeTriggerEvents();\n this._triggerElement = element;\n\n pointerDownEvents.forEach(type => {\n RippleRenderer._eventManager.addHandler(this._ngZone, type, element, this);\n });\n }\n\n /** Handles all registered events. */\n handleEvent(event: Event) {\n if (event.type === 'mousedown') {\n this._onMousedown(event as MouseEvent);\n } else if (event.type === 'touchstart') {\n this._onTouchStart(event as TouchEvent);\n } else {\n this._onPointerUp();\n }\n\n if (!this._pointerUpEventsRegistered && this._triggerElement) {\n this._ngZone.runOutsideAngular(() => {\n pointerUpEvents.forEach(type => {\n this._triggerElement!.addEventListener(type, this, passiveCapturingEventOptions);\n });\n });\n this._pointerUpEventsRegistered = true;\n }\n }\n\n /** Method that will be called if the fade-in or fade-in transition completed. */\n private _finishRippleTransition(rippleRef: RippleRef) {\n if (rippleRef.state === RippleState.FADING_IN) {\n this._startFadeOutTransition(rippleRef);\n } else if (rippleRef.state === RippleState.FADING_OUT) {\n this._destroyRipple(rippleRef);\n }\n }\n\n /** Starts the fade-out transition of the given ripple. */\n private _startFadeOutTransition(rippleRef: RippleRef) {\n const isMostRecentTransientRipple = rippleRef === this._mostRecentTransientRipple;\n const { persistent } = rippleRef.config;\n\n rippleRef.state = RippleState.VISIBLE;\n\n if (!persistent && (!isMostRecentTransientRipple || !this._isPointerDown)) {\n rippleRef.fadeOut();\n }\n }\n\n /** Destroys the given ripple. */\n private _destroyRipple(rippleRef: RippleRef) {\n const eventListeners = this._activeRipples.get(rippleRef) ?? null;\n this._activeRipples.delete(rippleRef);\n\n if (!this._activeRipples.size) {\n this._containerRect = null;\n }\n\n if (rippleRef === this._mostRecentTransientRipple) {\n this._mostRecentTransientRipple = null;\n }\n\n rippleRef.state = RippleState.HIDDEN;\n\n if (eventListeners !== null) {\n rippleRef.element.removeEventListener('transitionend', eventListeners.onTransitionEnd);\n rippleRef.element.removeEventListener('transitioncancel', eventListeners.onTransitionCancel);\n if (eventListeners.fallbackTimer !== null) {\n clearTimeout(eventListeners.fallbackTimer);\n }\n }\n\n rippleRef.element.remove();\n }\n\n /** Function being called whenever the trigger is being pressed using mouse. */\n private _onMousedown(event: MouseEvent) {\n const isFakeMousedown = isFakeMousedownFromScreenReader(event);\n const isSyntheticEvent =\n this._lastTouchStartEvent && Date.now() < this._lastTouchStartEvent + ignoreMouseEventsTimeout;\n\n if (!this._target.rippleDisabled && !isFakeMousedown && !isSyntheticEvent) {\n this._isPointerDown = true;\n this.fadeInRipple(event.clientX, event.clientY, this._target.rippleConfig);\n }\n }\n\n /** Function being called whenever the trigger is being pressed using touch. */\n private _onTouchStart(event: TouchEvent) {\n if (!this._target.rippleDisabled && !isFakeTouchstartFromScreenReader(event)) {\n this._lastTouchStartEvent = Date.now();\n this._isPointerDown = true;\n\n const touches = event.changedTouches;\n if (touches) {\n for (let i = 0; i < touches.length; i++) {\n this.fadeInRipple(touches[i].clientX, touches[i].clientY, this._target.rippleConfig);\n }\n }\n }\n }\n\n /** Function being called whenever the trigger is being released. */\n private _onPointerUp() {\n if (!this._isPointerDown) {\n return;\n }\n\n this._isPointerDown = false;\n\n this._getActiveRipples().forEach(ripple => {\n const isVisible =\n ripple.state === RippleState.VISIBLE ||\n (ripple.config.terminateOnPointerUp && ripple.state === RippleState.FADING_IN);\n\n if (!ripple.config.persistent && isVisible) {\n ripple.fadeOut();\n }\n });\n }\n\n private _getActiveRipples(): RippleRef[] {\n return Array.from(this._activeRipples.keys());\n }\n\n /** Removes previously registered event listeners from the trigger element. */\n _removeTriggerEvents() {\n const trigger = this._triggerElement;\n if (trigger) {\n pointerDownEvents.forEach(type => RippleRenderer._eventManager.removeHandler(type, trigger, this));\n if (this._pointerUpEventsRegistered) {\n pointerUpEvents.forEach(type =>\n trigger.removeEventListener(type, this, passiveCapturingEventOptions)\n );\n this._pointerUpEventsRegistered = false;\n }\n }\n }\n}\n\n/** Returns the distance from the point (x, y) to the furthest corner of a rectangle. */\nfunction distanceToFurthestCorner(x: number, y: number, rect: DOMRect) {\n const distX = Math.max(Math.abs(x - rect.left), Math.abs(x - rect.right));\n const distY = Math.max(Math.abs(y - rect.top), Math.abs(y - rect.bottom));\n return Math.sqrt(distX * distX + distY * distY);\n}\n\nexport interface RippleGlobalOptions {\n disabled?: boolean;\n animation?: RippleAnimationConfig;\n terminateOnPointerUp?: boolean;\n}\n\nexport const RIPPLE_GLOBAL_OPTIONS = new InjectionToken<RippleGlobalOptions>(\n 'ngs-ripple-global-options'\n);\n\n@Directive({\n selector: '[ngsRipple]',\n standalone: true,\n exportAs: 'ngsRipple',\n host: {\n 'class': 'ngs-ripple',\n '[class.ngs-ripple-unbounded]': 'unbounded()',\n },\n})\nexport class Ripple implements OnInit, OnDestroy {\n private _elementRef = inject(ElementRef);\n private _ngZone = inject(NgZone);\n private _platform = inject(Platform);\n private _globalOptions = inject(RIPPLE_GLOBAL_OPTIONS, { optional: true }) || {};\n\n color = input<string | undefined>(undefined, { alias: 'ngsRippleColor' });\n unbounded = input(false, { alias: 'ngsRippleUnbounded', transform: booleanAttribute });\n centered = model(false, { alias: 'ngsRippleCentered' });\n radius = input(0, { alias: 'ngsRippleRadius', transform: numberAttribute });\n animation = input<RippleAnimationConfig | undefined>(undefined, { alias: 'ngsRippleAnimation' });\n disabled = model(false, { alias: 'ngsRippleDisabled' });\n trigger = model<HTMLElement | undefined>(undefined, { alias: 'ngsRippleTrigger' });\n\n private _rippleRenderer: RippleRenderer;\n private _isInitialized = false;\n\n constructor() {\n this._rippleRenderer = new RippleRenderer(this, this._ngZone, this._elementRef, this._platform);\n\n effect(() => {\n if (this.disabled()) {\n this.fadeOutAllNonPersistent();\n }\n this._setupTriggerEventsIfEnabled();\n });\n\n effect(() => {\n this.trigger();\n this._setupTriggerEventsIfEnabled();\n });\n }\n\n ngOnInit() {\n this._isInitialized = true;\n this._setupTriggerEventsIfEnabled();\n }\n\n ngOnDestroy() {\n this._rippleRenderer._removeTriggerEvents();\n }\n\n /** Fades out all currently showing ripple elements. */\n fadeOutAll() {\n this._rippleRenderer.fadeOutAll();\n }\n\n /** Fades out all currently showing non-persistent ripple elements. */\n fadeOutAllNonPersistent() {\n this._rippleRenderer.fadeOutAllNonPersistent();\n }\n\n get rippleConfig(): RippleConfig {\n return {\n centered: this.centered(),\n radius: this.radius(),\n color: this.color(),\n animation: {\n ...this._globalOptions.animation,\n ...this.animation(),\n },\n terminateOnPointerUp: this._globalOptions.terminateOnPointerUp,\n };\n }\n\n get rippleDisabled(): boolean {\n return this.disabled() || !!this._globalOptions.disabled;\n }\n\n private _setupTriggerEventsIfEnabled() {\n if (!this.disabled() && this._isInitialized) {\n this._rippleRenderer.setupTriggerEvents(this.trigger() || this._elementRef.nativeElement);\n }\n }\n\n /** Launches a manual ripple at the specified coordinates or just by the ripple config. */\n launch(configOrX: number | RippleConfig, y: number = 0, config?: RippleConfig): RippleRef {\n if (typeof configOrX === 'number') {\n return this._rippleRenderer.fadeInRipple(configOrX, y, { ...this.rippleConfig, ...config });\n } else {\n return this._rippleRenderer.fadeInRipple(0, 0, { ...this.rippleConfig, ...configOrX });\n }\n }\n}\n","import {ElementRef, inject} from '@angular/core';\n\nexport function injectElement<T extends Element = HTMLElement>(): T {\n return inject(ElementRef).nativeElement;\n}\n\nexport function isElement(node?: Node | Element | EventTarget | null): node is Element {\n return !!node && 'nodeType' in node && node.nodeType === Node.ELEMENT_NODE;\n}\n\nexport function getActualTarget(event: Event): Node {\n return (event.target ?? (event as any).currentTarget) as Node;\n}\n","import {\n Directive,\n inject,\n input,\n NgZone,\n AfterViewInit,\n OnDestroy,\n numberAttribute,\n} from '@angular/core';\nimport { injectElement } from '../utils/dom';\nimport { Platform } from '@angular/cdk/platform';\n\n@Directive({\n selector: 'textarea[ngsTextareaAutoSize]',\n exportAs: 'ngsTextareaAutoSize',\n host: {\n 'rows': '1',\n '(input)': 'resize()',\n 'style': 'display: block; overflow: hidden; resize: none; box-sizing: border-box;',\n },\n})\nexport class TextareaAutoSize implements AfterViewInit, OnDestroy {\n private readonly _textarea = injectElement<HTMLTextAreaElement>();\n private readonly _ngZone = inject(NgZone);\n private readonly _platform = inject(Platform);\n\n minRows = input(1, { transform: numberAttribute });\n maxRows = input(Number.MAX_SAFE_INTEGER, { transform: numberAttribute });\n\n private _resizeObserver?: ResizeObserver;\n\n ngAfterViewInit() {\n if (this._platform.isBrowser) {\n this.resize();\n\n this._ngZone.runOutsideAngular(() => {\n this._resizeObserver = new ResizeObserver(() => this.resize());\n this._resizeObserver.observe(this._textarea);\n });\n }\n }\n\n ngOnDestroy() {\n this._resizeObserver?.disconnect();\n }\n\n resize() {\n this._textarea.style.height = 'auto';\n\n const style = window.getComputedStyle(this._textarea);\n let lineHeight = parseFloat(style.lineHeight);\n\n if (isNaN(lineHeight)) {\n lineHeight = parseFloat(style.fontSize) * 1.2;\n }\n\n const paddingTop = parseFloat(style.paddingTop) || 0;\n const paddingBottom = parseFloat(style.paddingBottom) || 0;\n const borderTop = parseFloat(style.borderTopWidth) || 0;\n const borderBottom = parseFloat(style.borderBottomWidth) || 0;\n\n const minHeight = this.minRows() * lineHeight + paddingTop + paddingBottom + borderTop + borderBottom;\n const maxHeight = this.maxRows() * lineHeight + paddingTop + paddingBottom + borderTop + borderBottom;\n\n this._textarea.style.height = 'auto';\n const currentScrollHeight = this._textarea.scrollHeight;\n\n let height = Math.max(minHeight, currentScrollHeight);\n height = Math.min(maxHeight, height);\n\n this._textarea.style.height = `${height}px`;\n\n if (currentScrollHeight > maxHeight) {\n this._textarea.style.overflowY = 'auto';\n } else {\n this._textarea.style.overflowY = 'hidden';\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'initials',\n standalone: true\n})\nexport class InitialsPipe implements PipeTransform {\n transform(value: string): string {\n if (!value) {\n return '';\n }\n\n const initials = [...value.toString().matchAll(/(\\p{L}{1})\\p{L}+/gu)];\n const result = ((initials.shift()?.[1] || '') + (initials.pop()?.[1] || '')).toUpperCase();\n return result ? result : value[0];\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'formatFileSize',\n standalone: true\n})\nexport class FormatFileSizePipe implements PipeTransform {\n transform(bytes: number, decimalPoint = 2): string {\n if (bytes == 0) {\n return '0 Bytes';\n }\n\n const k = 1000;\n const dm = decimalPoint || 2;\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n const index = Math.floor(Math.log(bytes) / Math.log(k));\n\n return parseFloat((bytes / Math.pow(k, index)).toFixed(dm)) + ' ' + sizes[index];\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'orderBy',\n standalone: true\n})\nexport class OrderByPipe implements PipeTransform {\n transform(value: any, property: string, direction: 'asc' | 'desc' = 'asc'): any {\n if (!Array.isArray(value)) {\n throw new Error('Order By value should be an array');\n }\n\n const sorted = value.sort((a, b) => {\n if (a[property] < b[property]) {\n return -1;\n } else if (a[property] > b[property]) {\n return 1;\n } else {\n return 0;\n }\n });\n\n if (direction === 'asc') {\n return sorted;\n } else if (direction === 'desc') {\n return sorted.reverse();\n }\n }\n}\n","import { inject, Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Pipe({\n name: 'safeHtml',\n standalone: true\n})\nexport class SafeHtmlPipe implements PipeTransform {\n private _domSanitizer = inject(DomSanitizer);\n\n transform(value: any): any {\n return this._domSanitizer.bypassSecurityTrustHtml(value);\n }\n}\n","import { inject, Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Pipe({\n name: 'safeResourceUrl',\n standalone: true\n})\nexport class SafeResourceUrlPipe implements PipeTransform {\n private _domSanitizer = inject(DomSanitizer);\n\n transform(value: string): any {\n return this._domSanitizer.bypassSecurityTrustResourceUrl(value);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'filterByProperty',\n})\nexport class FilterByPropertyPipe implements PipeTransform {\n private getNestedValue(obj: any, path: string): any {\n return path.split('.').reduce((acc, part) => acc && acc[part], obj);\n }\n\n transform<T>(items: T[], propPath: string, value: any, strict = false): T[] {\n if (!items) {\n return [];\n }\n\n if (value === undefined || typeof value === 'undefined') {\n return items;\n }\n\n if (!strict && (value === null || value === '')) {\n return items;\n }\n\n return items.filter(item => {\n const propertyValue = this.getNestedValue(item, propPath);\n return propertyValue === value;\n });\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'searchByProperty',\n})\nexport class SearchByPropertyPipe implements PipeTransform {\n private getNestedValue(obj: any, path: string): any {\n return path.split('.').reduce((acc, part) => acc && acc[part], obj);\n }\n\n transform<T>(items: T[] | null, propPath: string, searchValue: string): T[] {\n if (!items) {\n return [];\n }\n if (!searchValue) {\n return items;\n }\n\n const lowercasedSearchValue = searchValue.toLowerCase();\n\n return items.filter(item => {\n const propertyValue = this.getNestedValue(item, propPath);\n\n if (typeof propertyValue === 'string') {\n return propertyValue.toLowerCase().includes(lowercasedSearchValue);\n }\n\n return false;\n });\n }\n}\n","import { inject, Injectable, InjectionToken } from '@angular/core';\n\nexport const ENVIRONMENT = new InjectionToken<{ [key: string]: any }>('ENVIRONMENT');\n\n@Injectable({\n providedIn: 'root'\n})\nexport class EnvironmentService {\n private _environment = inject(ENVIRONMENT, {\n optional: true\n }) || {};\n\n getValue(key: string, defaultValue?: any): any {\n return this._environment[key] || defaultValue;\n }\n}\n","import { inject, Injectable, isDevMode, PLATFORM_ID, DOCUMENT } from '@angular/core';\nimport { filter } from 'rxjs';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { isPlatformServer } from '@angular/common';\nimport { EnvironmentService } from './environment.service';\n\ndeclare const gtag: any;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AnalyticsService {\n private _platformId = inject(PLATFORM_ID);\n private _router = inject(Router);\n private _document = inject(DOCUMENT);\n private _environmentService = inject(EnvironmentService);\n\n trackPageViews(): void {\n const googleAnalyticsId = this._environmentService.getValue('googleAnalyticsId');\n\n if (isDevMode() || !googleAnalyticsId) {\n return;\n }\n\n try {\n const url = 'https://www.googletagmanager.com/gtag/js?id=';\n const gTagScript = this._document.createElement('script');\n gTagScript.async = true;\n gTagScript.src = `${url}${googleAnalyticsId}`;\n this._document.head.appendChild(gTagScript);\n const dataLayerScript = this._document.createElement('script');\n dataLayerScript.innerHTML = `\n window.dataLayer = window.dataLayer || [];\n function gtag(){dataLayer.push(arguments);}\n gtag('js', new Date());\n gtag('config', '${googleAnalyticsId}');`\n ;\n this._document.head.appendChild(dataLayerScript);\n\n if (isPlatformServer(this._platformId)) {\n return;\n }\n\n this._router.events.pipe(\n filter((event) => event instanceof NavigationEnd),\n ).subscribe((event: any) => {\n gtag('event', 'page_view', {\n page_title: this._document.head.title,\n page_path: event.urlAfterRedirects,\n page_location: this._document.location.href\n });\n })\n ;\n } catch (e) {\n }\n }\n}\n","import { DestroyRef, EventEmitter, inject, Injectable, DOCUMENT } from '@angular/core';\nimport { debounceTime, fromEvent, merge, Observable } from 'rxjs';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class InactivityTrackerService {\n private _destroyRef = inject(DestroyRef);\n private _document = inject(DOCUMENT);\n private _interval = 10000 * 60; // 5 minutes\n private _timeout: ReturnType<typeof setTimeout>;\n private _interactionEvents$ = merge(\n fromEvent(this._document, 'click'),\n fromEvent(this._document, 'keydown'),\n fromEvent(this._document, 'mousemove'),\n fromEvent(this._document, 'scroll')\n ).pipe(debounceTime(250));\n private _noInteraction = new EventEmitter<void>();\n\n setupInactivityTimer(interval?: number): Observable<void> {\n if (interval) {\n this._interval = interval;\n }\n\n this._setupTimer();\n this._interactionEvents$.pipe(\n takeUntilDestroyed(this._destroyRef),\n ).subscribe(() => {\n this._setupTimer();\n });\n\n return this._noInteraction.pipe(\n takeUntilDestroyed(this._destroyRef)\n );\n }\n\n reset(): void {\n this._setupTimer();\n }\n\n private _setupTimer(): void {\n clearTimeout(this._timeout);\n this._timeout = setTimeout(() => {\n this._noInteraction.emit();\n }, this._interval);\n }\n}\n","import { patchState, signalStore, withMethods, withState } from '@ngrx/signals';\n\nexport interface GlobalState {\n screenLoading: boolean;\n sidebarHidden: boolean;\n pageTitle: string;\n}\n\nconst initialGlobalState: GlobalState = {\n screenLoading: true,\n sidebarHidden: false,\n pageTitle: ''\n};\n\nexport const GlobalStore = signalStore(\n { providedIn: 'root' },\n withState(initialGlobalState),\n withMethods((store) => ({\n setScreenLoading(isLoading: boolean) {\n patchState(store, {\n screenLoading: isLoading\n });\n },\n setPageTitle(pageTitle: string) {\n patchState(store, {\n pageTitle\n });\n }\n }))\n);\n","import { inject, Injectable } from '@angular/core';\nimport { RouterStateSnapshot, TitleStrategy } from '@angular/router';\nimport { Title } from '@angular/platform-browser';\nimport { GlobalStore } from '../global.state';\nimport { EnvironmentService } from './environment.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PageTitleStrategyService extends TitleStrategy {\n private _title = inject(Title);\n private _globalStore = inject(GlobalStore);\n private _environmentService = inject(EnvironmentService);\n\n override updateTitle(routerState: RouterStateSnapshot): void {\n const title = this.cleanTitle(this.buildTitle(routerState));\n const pageTitle = this.cleanTitle(this._globalStore.pageTitle())\n || this.cleanTitle(this._environmentService.getValue('pageTitle'));\n const currentTitle = this.cleanTitle(this._title.getTitle());\n\n const nextTitle = title && pageTitle ? `${title} | ${pageTitle}` : title || pageTitle || currentTitle;\n\n if (nextTitle) {\n this._title.setTitle(nextTitle);\n }\n }\n\n private cleanTitle(title: string | undefined): string | null {\n if (!title) {\n return null;\n }\n\n const clean = title\n .split('/')\n .map((part) => part.trim())\n .filter((part) => part && part.toLowerCase() !== 'undefined')\n .join(' - ')\n .trim();\n\n return clean || null;\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { GlobalStore } from '../global.state';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ScreenLoaderService {\n private _globalStore = inject(GlobalStore);\n\n show(): void {\n this._globalStore.setScreenLoading(true);\n }\n\n hide(): void {\n this._globalStore.setScreenLoading(false);\n }\n}\n","import { DestroyRef, inject, Injectable, PLATFORM_ID, DOCUMENT } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { filter } from 'rxjs';\nimport { isPlatformServer } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Meta, Title } from '@angular/platform-browser';\nimport { GlobalStore } from '../global.state';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SeoService {\n private readonly _router = inject(Router);\n private readonly _destroyRef = inject(DestroyRef);\n private readonly _document = inject(DOCUMENT);\n private readonly _platformId = inject(PLATFORM_ID);\n private _linkCanonical: HTMLLinkElement | null;\n private _title = inject(Title);\n private _meta = inject(Meta);\n private _globalStore = inject(GlobalStore);\n\n get meta(): Meta {\n return this._meta;\n }\n\n updateDescription(content?: string): void {\n if (!content) {\n return;\n }\n\n this.meta.updateTag({\n name: 'description',\n content\n });\n this.meta.updateTag({\n name: 'og:description',\n content\n });\n }\n\n updateOgUrl(content?: string): void {\n if (!content) {\n return;\n }\n\n this.meta.updateTag({\n name: 'og:url',\n content\n });\n }\n\n updateOgImage(content: string): void {\n if (!content) {\n return;\n }\n\n this.meta.updateTag({\n name: 'og:image',\n content\n });\n }\n\n trackCanonicalChanges(siteUrl: string): void {\n this._createCanonicalTag(siteUrl);\n\n if (isPlatformServer(this._platformId)) {\n return;\n }\n\n this._router.events\n .pipe(\n filter((event) => event instanceof NavigationEnd),\n takeUntilDestroyed(this._destroyRef),\n )\n .subscribe(() => {\n const href = this.getCanonicalUrl(siteUrl);\n this._linkCanonical?.setAttribute('href', href);\n this.updateOgUrl(href);\n })\n ;\n }\n\n updateTitle(title: string): void {\n this._title.setTitle(`${title} | ${this._globalStore.pageTitle()}`);\n this.meta.updateTag({\n name: 'og:title',\n content: title\n });\n }\n\n private getCanonicalUrl(siteUrl: string): string {\n if (this._document.URL.startsWith('http')) {\n return this._document.URL;\n }\n\n return siteUrl + this._document.URL;\n }\n\n private _createCanonicalTag(siteUrl: string): void {\n this._linkCanonical = this._document.querySelector('link[rel=\"canonical\"]');\n\n if (!this._linkCanonical) {\n this._linkCanonical = this._document.createElement('link');\n this._linkCanonical.setAttribute('rel', 'canonical');\n this._document.head.appendChild(this._linkCanonical);\n }\n\n this._linkCanonical.setAttribute('href', this.getCanonicalUrl(siteUrl));\n }\n}\n","import { InjectionToken, Provider } from '@angular/core';\n\nexport type NgsThemeName = 'default' | 'enterprise' | 'modern' | string;\nexport type NgsColorScheme = 'light' | 'dark' | 'auto';\nexport type NgsDensity = 'compact' | 'comfortable' | 'spacious';\nexport type NgsRadius = 'none' | 'small' | 'medium' | 'large';\n\nexport interface NgsThemeOptions {\n theme?: NgsThemeName;\n colorScheme?: NgsColorScheme;\n density?: NgsDensity;\n radius?: NgsRadius;\n primaryColor?: string;\n persist?: boolean;\n storageKey?: string;\n}\n\nexport const NGS_THEME_OPTIONS = new InjectionToken<NgsThemeOptions>('NGS_THEME_OPTIONS', {\n factory: () => ({\n theme: 'default',\n colorScheme: 'auto',\n density: 'comfortable',\n radius: 'medium',\n persist: true,\n storageKey: 'ngs-admin',\n }),\n});\n\nexport function provideNgsTheme(options: NgsThemeOptions = {}): Provider {\n return {\n provide: NGS_THEME_OPTIONS,\n useValue: {\n theme: 'default',\n colorScheme: 'auto',\n density: 'comfortable',\n radius: 'medium',\n persist: true,\n storageKey: 'ngs-admin',\n ...options,\n },\n };\n}\n","import { afterNextRender, DOCUMENT, effect, inject, Injectable, signal } from '@angular/core';\nimport {\n NGS_THEME_OPTIONS,\n NgsColorScheme,\n NgsDensity,\n NgsRadius,\n NgsThemeName,\n NgsThemeOptions,\n} from '../tokens/theme.token';\n\ninterface StoredThemeState {\n theme?: NgsThemeName;\n colorScheme?: NgsColorScheme;\n density?: NgsDensity;\n radius?: NgsRadius;\n primaryColor?: string;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ThemeManagerService {\n private _document = inject(DOCUMENT);\n private _window = this._document.defaultView;\n private _options = inject(NGS_THEME_OPTIONS);\n\n private readonly _theme = signal<NgsThemeName>('default');\n private readonly _colorScheme = signal<Exclude<NgsColorScheme, 'auto'>>('light');\n private readonly _density = signal<NgsDensity>('comfortable');\n private readonly _radius = signal<NgsRadius>('medium');\n private readonly _primaryColor = signal<string | null>(null);\n\n readonly theme = this._theme.asReadonly();\n readonly colorScheme = this._colorScheme.asReadonly();\n readonly density = this._density.asReadonly();\n readonly radius = this._radius.asReadonly();\n readonly primaryColor = this._primaryColor.asReadonly();\n\n constructor() {\n this.applyTheme(this._getInitialState());\n\n effect(() => {\n this._syncDocumentAttributes();\n });\n\n afterNextRender(() => {\n if (this._window !== null && this._window.matchMedia) {\n this._window\n .matchMedia('(prefers-color-scheme: dark)')\n .addEventListener('change', () => {\n const storedColorScheme = this._getStoredColorScheme();\n\n if (storedColorScheme !== 'light' && storedColorScheme !== 'dark') {\n this.setColorScheme(this.getPreferredColorScheme(), false);\n }\n })\n ;\n }\n });\n }\n\n getColorScheme(): 'dark' | 'light' {\n return this._colorScheme();\n }\n\n toggleColorScheme(): void {\n if (this._getStoredColorScheme() === 'dark') {\n this.changeColorScheme('light');\n } else {\n this.changeColorScheme('dark');\n }\n }\n\n changeColorScheme(colorScheme: 'dark' | 'light'): void {\n this.setColorScheme(colorScheme);\n }\n\n setTheme(theme: NgsThemeName, persist = true): void {\n this._theme.set(theme);\n this._persist({ theme }, persist);\n }\n\n setDensity(density: NgsDensity, persist = true): void {\n this._density.set(density);\n this._persist({ density }, persist);\n }\n\n setRadius(radius: NgsRadius, persist = true): void {\n this._radius.set(radius);\n this._persist({ radius }, persist);\n }\n\n setPrimaryColor(primaryColor: string | null, persist = true): void {\n this._primaryColor.set(primaryColor);\n this._persist({ primaryColor: primaryColor || undefined }, persist);\n }\n\n applyTheme(options: NgsThemeOptions, persist = false): void {\n if (options.theme) {\n this._theme.set(options.theme);\n }\n\n if (options.density) {\n this._density.set(options.density);\n }\n\n if (options.radius) {\n this._radius.set(options.radius);\n }\n\n if (options.primaryColor !== undefined) {\n this._primaryColor.set(options.primaryColor || null);\n }\n\n this.setColorScheme(options.colorScheme || 'auto', persist);\n this._persist(options, persist);\n }\n\n private _getStoredColorScheme() {\n return this._getStoredState().colorScheme;\n };\n\n private _getStoredState(): StoredThemeState {\n if (!this._options.persist || typeof localStorage === 'undefined') {\n return {};\n }\n\n const rawValue = localStorage.getItem(this._storageKey);\n\n if (!rawValue) {\n return {};\n }\n\n try {\n return JSON.parse(rawValue);\n } catch {\n return {};\n }\n };\n\n private _persist(state: Partial<StoredThemeState>, persist = true): void {\n if (!persist || !this._options.persist || typeof localStorage === 'undefined') {\n return;\n }\n\n const meta = this._getStoredState();\n localStorage.setItem(this._storageKey, JSON.stringify({ ...meta, ...state }));\n };\n\n private _setStoredColorScheme(colorScheme: string): void {\n this._persist({ colorScheme: colorScheme as NgsColorScheme });\n };\n\n getPreferredColorScheme(): 'dark' | 'light' {\n const storedTheme = this._getStoredColorScheme();\n\n if (storedTheme === 'light' || storedTheme === 'dark') {\n return storedTheme;\n }\n\n if (this._window !== null && this._window.matchMedia) {\n return this._window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n }\n\n return 'light';\n };\n\n setColorScheme(colorScheme: NgsColorScheme, persist = true): void {\n if (colorScheme === 'auto') {\n this._colorScheme.set(this.getPreferredColorScheme());\n } else {\n this._colorScheme.set(colorScheme);\n }\n\n if (persist) {\n this._setStoredColorScheme(colorScheme);\n }\n };\n\n private _getInitialState(): NgsThemeOptions {\n return {\n ...this._options,\n ...this._getStoredState(),\n };\n }\n\n private _syncDocumentAttributes(): void {\n const root = this._document.documentElement;\n const primaryColor = this._primaryColor();\n\n if (!root) {\n return;\n }\n\n root.classList?.toggle('dark', this._colorScheme() === 'dark');\n root.setAttribute('data-ngs-theme', this._theme());\n root.setAttribute('data-ngs-color-scheme', this._colorScheme());\n root.setAttribute('data-ngs-density', this._density());\n root.setAttribute('data-ngs-radius', this._radius());\n\n if (primaryColor && root.style) {\n root.style.setProperty('--ngs-color-primary', primaryColor);\n } else if (root.style) {\n root.style.removeProperty('--ngs-color-primary');\n }\n }\n\n private get _storageKey(): string {\n return this._options.storageKey || 'ngs-admin';\n }\n}\n","import { Injectable, NgZone } from '@angular/core';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ResizeObserverService {\n constructor(private ngZone: NgZone) {}\n\n observe(element: Element): Observable<ResizeObserverEntry[]> {\n return new Observable(observer => {\n const resizeObserver = new ResizeObserver(entries => {\n this.ngZone.run(() => {\n observer.next(entries);\n });\n });\n\n resizeObserver.observe(element);\n\n return () => {\n resizeObserver.disconnect();\n };\n });\n }\n}\n","import { Injectable, NgZone } from '@angular/core';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MutationObserverService {\n constructor(private ngZone: NgZone) {}\n\n observe(element: Node, options?: MutationObserverInit): Observable<MutationRecord[]> {\n return new Observable(observer => {\n const mutationObserver = new MutationObserver(mutations => {\n this.ngZone.run(() => {\n observer.next(mutations);\n });\n });\n\n mutationObserver.observe(element, options);\n\n return () => {\n mutationObserver.disconnect();\n };\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AbstractControl, FormGroupDirective, NgForm } from '@angular/forms';\n\n/** Provider for managing the error state of a form control. */\n@Injectable({ providedIn: 'root' })\nexport class ErrorStateMatcher {\n /**\n * Whether a control should be in an error state.\n * @param control The form control to check.\n * @param form The parent form that contains the control.\n * @returns Whether the control should be in an error state.\n */\n isErrorState(control: AbstractControl | null, form: FormGroupDirective | NgForm | null): boolean {\n return !!(control && control.invalid && (control.touched || (form && form.submitted)));\n }\n}\n\n/** Error state matcher that displays an error when a control is dirty and invalid. */\n@Injectable()\nexport class ShowOnDirtyErrorStateMatcher implements ErrorStateMatcher {\n isErrorState(control: AbstractControl | null, form: FormGroupDirective | NgForm | null): boolean {\n return !!(control && control.invalid && (control.dirty || (form && form.submitted)));\n }\n}\n","export function px(value: number): string {\n return `${value}px`;\n}\n\nexport function arrayShallowEquals<T>(a: readonly T[], b: readonly T[]): boolean {\n return a.length === b.length && a.every((item, index) => item === b[index]);\n}\n","import {NgZone, inject} from '@angular/core';\nimport {SchedulerLike, Subscription} from 'rxjs';\n\nexport function zonefreeScheduler(): SchedulerLike {\n const zone = inject(NgZone);\n\n return {\n now: () => Date.now(),\n schedule: (work: any, delay: any, state: any) => {\n return zone.runOutsideAngular(() => {\n const id = setTimeout(() => work(state), delay);\n return new Subscription(() => clearTimeout(id));\n });\n },\n } as any;\n}\n","import {fromEvent, Observable} from 'rxjs';\n\nexport function typedFromEvent<E extends Event>(\n target: EventTarget,\n event: string,\n options?: EventListenerOptions | boolean,\n): Observable<E> {\n return fromEvent(target, event, options as any) as Observable<E>;\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":"ngstarter-ui-components-core.mjs","sources":["../../../projects/components/core/src/tokens/autofocusable.token.ts","../../../projects/components/core/src/directives/auto-focus.directive.ts","../../../projects/components/core/src/directives/focus-element.directive.ts","../../../projects/components/core/src/directives/sound-effect.directive.ts","../../../projects/components/core/src/directives/debounce-time.directive.ts","../../../projects/components/core/src/directives/ripple.ts","../../../projects/components/core/src/utils/dom.ts","../../../projects/components/core/src/directives/textarea-auto-size.ts","../../../projects/components/core/src/pipes/initials.pipe.ts","../../../projects/components/core/src/pipes/format-file-size.pipe.ts","../../../projects/components/core/src/pipes/order-by.pipe.ts","../../../projects/components/core/src/pipes/safe-html.pipe.ts","../../../projects/components/core/src/pipes/safe-resource-url.pipe.ts","../../../projects/components/core/src/pipes/filter-by-property.pipe.ts","../../../projects/components/core/src/pipes/search-by-property.pipe.ts","../../../projects/components/core/src/services/environment.service.ts","../../../projects/components/core/src/services/analytics.service.ts","../../../projects/components/core/src/services/inactivity-tracker.service.ts","../../../projects/components/core/src/global.state.ts","../../../projects/components/core/src/services/page-title-strategy.service.ts","../../../projects/components/core/src/services/screen-loader.service.ts","../../../projects/components/core/src/services/seo.service.ts","../../../projects/components/core/src/tokens/theme.token.ts","../../../projects/components/core/src/services/theme-manager.service.ts","../../../projects/components/core/src/services/resize-observer.service.ts","../../../projects/components/core/src/services/mutation-observer.service.ts","../../../projects/components/core/src/error/error-options.ts","../../../projects/components/core/src/utils/miscellaneous.ts","../../../projects/components/core/src/observables/zone-free.ts","../../../projects/components/core/src/observables/typed-from-event.ts","../../../projects/components/core/ngstarter-ui-components-core.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport interface Autofocusable {\n focus(): void;\n}\n\nexport const AUTOFOCUSABLE = new InjectionToken<Autofocusable>('AUTOFOCUSABLE');\n","import { AfterViewInit, Directive, ElementRef, inject, input, OnChanges, PLATFORM_ID, SimpleChanges } from '@angular/core';\nimport { AUTOFOCUSABLE } from '../tokens/autofocusable.token';\nimport { isPlatformBrowser } from '@angular/common';\n\n@Directive({\n selector: '[ngsAutoFocus]',\n exportAs: 'ngsAutoFocus',\n standalone: true\n})\nexport class AutoFocusDirective implements AfterViewInit, OnChanges {\n private platformId = inject(PLATFORM_ID);\n private elementRef = inject(ElementRef);\n private autofocusable = inject(AUTOFOCUSABLE, { optional: true });\n\n enabled = input<boolean | string>(true, { alias: 'ngsAutoFocus' });\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['enabled'] && !changes['enabled'].firstChange) {\n this._focus();\n }\n }\n\n ngAfterViewInit(): void {\n this._focus();\n }\n\n private _focus(): void {\n if (this.enabled() === false || this.enabled() === 'false') {\n return;\n }\n\n if (this.autofocusable) {\n this.autofocusable.focus();\n } else {\n this.elementRef.nativeElement.focus();\n }\n\n this._moveCursorToEnd(this.elementRef.nativeElement);\n }\n\n private _moveCursorToEnd(el: HTMLElement) {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n\n const range = document.createRange();\n const sel = window.getSelection();\n range.selectNodeContents(el);\n range.collapse(false);\n sel?.removeAllRanges();\n sel?.addRange(range);\n }\n}\n","import {\n AfterViewInit, booleanAttribute,\n ChangeDetectorRef,\n Directive,\n ElementRef,\n inject, input,\n NgZone,\n OnDestroy,\n output\n} from '@angular/core';\nimport { FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';\n\n@Directive({\n selector: '[ngsFocusElement]',\n exportAs: 'ngsFocusElement',\n standalone: true\n})\nexport class FocusElementDirective implements AfterViewInit, OnDestroy {\n private _elementRef = inject(ElementRef);\n private _focusMonitor = inject(FocusMonitor);\n\n checkChildren = input(true, {\n transform: booleanAttribute\n });\n\n readonly elementFocused = output<void>();\n readonly elementBlurred = output<void>();\n\n ngAfterViewInit() {\n this._focusMonitor\n .monitor(this._elementRef.nativeElement, this.checkChildren())\n .subscribe(origin => {\n this._emitFocusEvent(origin);\n })\n ;\n }\n\n ngOnDestroy() {\n this._focusMonitor.stopMonitoring(this._elementRef.nativeElement);\n }\n\n private _emitFocusEvent(origin: FocusOrigin): void {\n if (origin) {\n this.elementFocused.emit();\n } else {\n this.elementBlurred.emit();\n }\n }\n}\n","import { afterNextRender, DestroyRef, Directive, ElementRef, inject, input } from '@angular/core';\nimport { fromEvent } from 'rxjs';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Directive({\n selector: '[ngsSoundEffect]',\n standalone: true\n})\nexport class SoundEffectDirective {\n soundSrc = input('assets/sound-effects/mouse-click.ogg');\n\n private _elementRef = inject(ElementRef);\n private _destroyRef = inject(DestroyRef);\n\n constructor() {\n afterNextRender(() => {\n this._init();\n });\n }\n\n private _init() {\n const audio = new Audio(this.soundSrc());\n audio.volume = 0.15;\n fromEvent(this._elementRef.nativeElement, 'click')\n .pipe(\n takeUntilDestroyed(this._destroyRef)\n )\n .subscribe(async (e) => {\n await audio.play();\n })\n ;\n }\n}\n","import { Directive, ElementRef, forwardRef, input, numberAttribute, Renderer2 } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Directive({\n selector: '[ngsDebounceTime][ngModel]',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DebounceTimeDirective),\n multi: true,\n },\n ],\n host: {\n '(input)': 'handleInput($event)',\n '(blur)': 'handleBlur()'\n }\n})\nexport class DebounceTimeDirective implements ControlValueAccessor {\n private debounceTimer?: ReturnType<typeof setTimeout>;\n\n readonly debounceTime = input(300, { transform: numberAttribute });\n\n private onChange: (value: string) => void = () => {};\n private onTouched: () => void = () => {};\n\n constructor(\n private elementRef: ElementRef<HTMLInputElement>,\n private renderer: Renderer2\n ) {}\n\n writeValue(value: string): void {\n this.renderer.setProperty(this.elementRef.nativeElement, 'value', value ?? '');\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.renderer.setProperty(this.elementRef.nativeElement, 'disabled', isDisabled);\n }\n\n protected handleInput(event: Event): void {\n clearTimeout(this.debounceTimer);\n\n const target = event.target as HTMLInputElement | null;\n const value = target?.value ?? '';\n\n if (!this.debounceTime()) {\n this.onChange(value);\n } else {\n this.debounceTimer = setTimeout(() => {\n this.onChange(value);\n }, this.debounceTime());\n }\n }\n\n protected handleBlur(): void {\n this.onTouched();\n }\n}\n","import {\n Directive,\n ElementRef,\n inject,\n InjectionToken,\n input,\n model,\n effect,\n NgZone,\n OnDestroy,\n OnInit,\n booleanAttribute,\n numberAttribute\n} from '@angular/core';\nimport { normalizePassiveListenerOptions, _getEventTarget, Platform } from '@angular/cdk/platform';\nimport { isFakeMousedownFromScreenReader, isFakeTouchstartFromScreenReader } from '@angular/cdk/a11y';\nimport { coerceElement } from '@angular/cdk/coercion';\n\n/** Possible states for a ripple element. */\nexport enum RippleState {\n FADING_IN = 0,\n VISIBLE = 1,\n FADING_OUT = 2,\n HIDDEN = 3,\n}\n\nexport interface RippleConfig {\n color?: string;\n centered?: boolean;\n radius?: number;\n persistent?: boolean;\n animation?: RippleAnimationConfig;\n terminateOnPointerUp?: boolean;\n}\n\nexport interface RippleAnimationConfig {\n enterDuration?: number;\n exitDuration?: number;\n}\n\n/**\n * Reference to a previously launched ripple element.\n */\nexport class RippleRef {\n /** Current state of the ripple. */\n state: RippleState = RippleState.HIDDEN;\n\n constructor(\n private _renderer: { fadeOutRipple(ref: RippleRef): void },\n /** Reference to the ripple HTML element. */\n public element: HTMLElement,\n /** Ripple configuration used for the ripple. */\n public config: RippleConfig,\n /* Whether animations are forcibly disabled for ripples through CSS. */\n public _animationForciblyDisabledThroughCss = false\n ) {}\n\n /** Fades out the ripple element. */\n fadeOut() {\n this._renderer.fadeOutRipple(this);\n }\n}\n\n/** Options used to bind a passive capturing event. */\nconst passiveCapturingEventOptions = normalizePassiveListenerOptions({\n passive: true,\n capture: true,\n});\n\n/** Manages events through delegation so that as few event handlers as possible are bound. */\nclass RippleEventManager {\n private _events = new Map<string, Map<HTMLElement, Set<EventListenerObject>>>();\n\n /** Adds an event handler. */\n addHandler(ngZone: NgZone, name: string, element: HTMLElement, handler: EventListenerObject) {\n const handlersForEvent = this._events.get(name);\n if (handlersForEvent) {\n const handlersForElement = handlersForEvent.get(element);\n if (handlersForElement) {\n handlersForElement.add(handler);\n } else {\n handlersForEvent.set(element, new Set([handler]));\n }\n } else {\n this._events.set(name, new Map([[element, new Set([handler])]]));\n ngZone.runOutsideAngular(() => {\n document.addEventListener(name, this._delegateEventHandler, passiveCapturingEventOptions);\n });\n }\n }\n\n /** Removes an event handler. */\n removeHandler(name: string, element: HTMLElement, handler: EventListenerObject) {\n const handlersForEvent = this._events.get(name);\n if (!handlersForEvent) {\n return;\n }\n\n const handlersForElement = handlersForEvent.get(element);\n if (!handlersForElement) {\n return;\n }\n\n handlersForElement.delete(handler);\n\n if (handlersForElement.size === 0) {\n handlersForEvent.delete(element);\n }\n\n if (handlersForEvent.size === 0) {\n this._events.delete(name);\n document.removeEventListener(name, this._delegateEventHandler, passiveCapturingEventOptions);\n }\n }\n\n /** Event handler that is bound and which dispatches the events to the different targets. */\n private _delegateEventHandler = (event: Event) => {\n const target = _getEventTarget(event) as HTMLElement;\n if (target) {\n this._events.get(event.type)?.forEach((handlers, element) => {\n if (element === target || element.contains(target)) {\n handlers.forEach(handler => handler.handleEvent(event));\n }\n });\n }\n };\n}\n\n/**\n * Default ripple animation configuration for ripples without an explicit\n * animation config specified.\n */\nexport const defaultRippleAnimationConfig = {\n enterDuration: 225,\n exitDuration: 150,\n};\n\n/**\n * Timeout for ignoring mouse events. Mouse events will be temporary ignored after touch\n * events to avoid synthetic mouse events.\n */\nconst ignoreMouseEventsTimeout = 800;\n\n/** Events that signal that the pointer is down. */\nconst pointerDownEvents = ['mousedown', 'touchstart'];\n\n/** Events that signal that the pointer is up. */\nconst pointerUpEvents = ['mouseup', 'mouseleave', 'touchend', 'touchcancel'];\n\n/**\n * Helper service that performs DOM manipulations. Not intended to be used outside this module.\n */\nexport class RippleRenderer implements EventListenerObject {\n /** Element where the ripples are being added to. */\n private _containerElement: HTMLElement;\n /** Element which triggers the ripple elements on mouse events. */\n private _triggerElement: HTMLElement | null = null;\n /** Whether the pointer is currently down or not. */\n private _isPointerDown = false;\n /** Map of currently active ripple references. */\n private _activeRipples = new Map<RippleRef, any>();\n /** Latest non-persistent ripple that was triggered. */\n private _mostRecentTransientRipple: RippleRef | null = null;\n /** Time in milliseconds when the last touchstart event happened. */\n private _lastTouchStartEvent: number | null = null;\n /** Whether pointer-up event listeners have been registered. */\n private _pointerUpEventsRegistered = false;\n /** Cached dimensions of the ripple container. */\n private _containerRect: DOMRect | null = null;\n\n private static _eventManager = new RippleEventManager();\n\n constructor(\n private _target: { rippleConfig: RippleConfig; rippleDisabled: boolean },\n private _ngZone: NgZone,\n elementOrElementRef: HTMLElement | ElementRef<HTMLElement>,\n private _platform: Platform\n ) {\n // Only do anything if we're on the browser.\n if (_platform.isBrowser) {\n this._containerElement = coerceElement(elementOrElementRef);\n }\n }\n\n /** Fades in a ripple at the given coordinates. */\n fadeInRipple(x: number, y: number, config: RippleConfig = {}): RippleRef {\n const containerRect = (this._containerRect =\n this._containerRect || this._containerElement.getBoundingClientRect());\n const animationConfig = { ...defaultRippleAnimationConfig, ...config.animation };\n\n if (config.centered) {\n x = containerRect.left + containerRect.width / 2;\n y = containerRect.top + containerRect.height / 2;\n }\n\n const radius = config.radius || distanceToFurthestCorner(x, y, containerRect);\n const offsetX = x - containerRect.left;\n const offsetY = y - containerRect.top;\n const enterDuration = animationConfig.enterDuration;\n\n const ripple = document.createElement('div');\n ripple.classList.add('ngs-ripple-element');\n\n ripple.style.left = `${offsetX - radius}px`;\n ripple.style.top = `${offsetY - radius}px`;\n ripple.style.height = `${radius * 2}px`;\n ripple.style.width = `${radius * 2}px`;\n\n if (config.color != null) {\n ripple.style.backgroundColor = config.color;\n }\n\n ripple.style.transitionDuration = `${enterDuration}ms`;\n\n this._containerElement.appendChild(ripple);\n\n const computedStyles = window.getComputedStyle(ripple);\n const userTransitionProperty = computedStyles.transitionProperty;\n const userTransitionDuration = computedStyles.transitionDuration;\n\n const animationForciblyDisabledThroughCss =\n userTransitionProperty === 'none' ||\n userTransitionDuration === '0s' ||\n userTransitionDuration === '0s, 0s' ||\n (containerRect.width === 0 && containerRect.height === 0);\n\n const rippleRef = new RippleRef(this, ripple, config, animationForciblyDisabledThroughCss);\n\n ripple.style.transform = 'scale3d(1, 1, 1)';\n rippleRef.state = RippleState.FADING_IN;\n\n if (!config.persistent) {\n this._mostRecentTransientRipple = rippleRef;\n }\n\n let eventListeners: any = null;\n\n if (!animationForciblyDisabledThroughCss && (enterDuration || animationConfig.exitDuration)) {\n this._ngZone.runOutsideAngular(() => {\n const onTransitionEnd = () => {\n if (eventListeners) {\n eventListeners.fallbackTimer = null;\n }\n clearTimeout(fallbackTimer);\n this._finishRippleTransition(rippleRef);\n };\n const onTransitionCancel = () => this._destroyRipple(rippleRef);\n const fallbackTimer = setTimeout(onTransitionCancel, (enterDuration || 0) + 100);\n\n ripple.addEventListener('transitionend', onTransitionEnd);\n ripple.addEventListener('transitioncancel', onTransitionCancel);\n\n eventListeners = { onTransitionEnd, onTransitionCancel, fallbackTimer };\n });\n }\n\n this._activeRipples.set(rippleRef, eventListeners);\n\n if (animationForciblyDisabledThroughCss || !enterDuration) {\n this._finishRippleTransition(rippleRef);\n }\n\n return rippleRef;\n }\n\n /** Fades out a ripple reference. */\n fadeOutRipple(rippleRef: RippleRef) {\n if (rippleRef.state === RippleState.FADING_OUT || rippleRef.state === RippleState.HIDDEN) {\n return;\n }\n\n const rippleEl = rippleRef.element;\n const animationConfig = { ...defaultRippleAnimationConfig, ...rippleRef.config.animation };\n\n rippleEl.style.transitionDuration = `${animationConfig.exitDuration}ms`;\n rippleEl.style.opacity = '0';\n rippleRef.state = RippleState.FADING_OUT;\n\n if (rippleRef._animationForciblyDisabledThroughCss || !animationConfig.exitDuration) {\n this._finishRippleTransition(rippleRef);\n }\n }\n\n /** Fades out all currently active ripples. */\n fadeOutAll() {\n this._getActiveRipples().forEach(ripple => ripple.fadeOut());\n }\n\n /** Fades out all currently showing non-persistent ripples. */\n fadeOutAllNonPersistent() {\n this._getActiveRipples().forEach(ripple => {\n if (!ripple.config.persistent) {\n ripple.fadeOut();\n }\n });\n }\n\n /** Sets up the trigger event listeners */\n setupTriggerEvents(elementOrElementRef: HTMLElement | ElementRef<HTMLElement>) {\n const element = coerceElement(elementOrElementRef);\n\n if (!this._platform.isBrowser || !element || element === this._triggerElement) {\n return;\n }\n\n this._removeTriggerEvents();\n this._triggerElement = element;\n\n pointerDownEvents.forEach(type => {\n RippleRenderer._eventManager.addHandler(this._ngZone, type, element, this);\n });\n }\n\n /** Handles all registered events. */\n handleEvent(event: Event) {\n if (event.type === 'mousedown') {\n this._onMousedown(event as MouseEvent);\n } else if (event.type === 'touchstart') {\n this._onTouchStart(event as TouchEvent);\n } else {\n this._onPointerUp();\n }\n\n if (!this._pointerUpEventsRegistered && this._triggerElement) {\n this._ngZone.runOutsideAngular(() => {\n pointerUpEvents.forEach(type => {\n this._triggerElement!.addEventListener(type, this, passiveCapturingEventOptions);\n });\n });\n this._pointerUpEventsRegistered = true;\n }\n }\n\n /** Method that will be called if the fade-in or fade-in transition completed. */\n private _finishRippleTransition(rippleRef: RippleRef) {\n if (rippleRef.state === RippleState.FADING_IN) {\n this._startFadeOutTransition(rippleRef);\n } else if (rippleRef.state === RippleState.FADING_OUT) {\n this._destroyRipple(rippleRef);\n }\n }\n\n /** Starts the fade-out transition of the given ripple. */\n private _startFadeOutTransition(rippleRef: RippleRef) {\n const isMostRecentTransientRipple = rippleRef === this._mostRecentTransientRipple;\n const { persistent } = rippleRef.config;\n\n rippleRef.state = RippleState.VISIBLE;\n\n if (!persistent && (!isMostRecentTransientRipple || !this._isPointerDown)) {\n rippleRef.fadeOut();\n }\n }\n\n /** Destroys the given ripple. */\n private _destroyRipple(rippleRef: RippleRef) {\n const eventListeners = this._activeRipples.get(rippleRef) ?? null;\n this._activeRipples.delete(rippleRef);\n\n if (!this._activeRipples.size) {\n this._containerRect = null;\n }\n\n if (rippleRef === this._mostRecentTransientRipple) {\n this._mostRecentTransientRipple = null;\n }\n\n rippleRef.state = RippleState.HIDDEN;\n\n if (eventListeners !== null) {\n rippleRef.element.removeEventListener('transitionend', eventListeners.onTransitionEnd);\n rippleRef.element.removeEventListener('transitioncancel', eventListeners.onTransitionCancel);\n if (eventListeners.fallbackTimer !== null) {\n clearTimeout(eventListeners.fallbackTimer);\n }\n }\n\n rippleRef.element.remove();\n }\n\n /** Function being called whenever the trigger is being pressed using mouse. */\n private _onMousedown(event: MouseEvent) {\n const isFakeMousedown = isFakeMousedownFromScreenReader(event);\n const isSyntheticEvent =\n this._lastTouchStartEvent && Date.now() < this._lastTouchStartEvent + ignoreMouseEventsTimeout;\n\n if (!this._target.rippleDisabled && !isFakeMousedown && !isSyntheticEvent) {\n this._isPointerDown = true;\n this.fadeInRipple(event.clientX, event.clientY, this._target.rippleConfig);\n }\n }\n\n /** Function being called whenever the trigger is being pressed using touch. */\n private _onTouchStart(event: TouchEvent) {\n if (!this._target.rippleDisabled && !isFakeTouchstartFromScreenReader(event)) {\n this._lastTouchStartEvent = Date.now();\n this._isPointerDown = true;\n\n const touches = event.changedTouches;\n if (touches) {\n for (let i = 0; i < touches.length; i++) {\n this.fadeInRipple(touches[i].clientX, touches[i].clientY, this._target.rippleConfig);\n }\n }\n }\n }\n\n /** Function being called whenever the trigger is being released. */\n private _onPointerUp() {\n if (!this._isPointerDown) {\n return;\n }\n\n this._isPointerDown = false;\n\n this._getActiveRipples().forEach(ripple => {\n const isVisible =\n ripple.state === RippleState.VISIBLE ||\n (ripple.config.terminateOnPointerUp && ripple.state === RippleState.FADING_IN);\n\n if (!ripple.config.persistent && isVisible) {\n ripple.fadeOut();\n }\n });\n }\n\n private _getActiveRipples(): RippleRef[] {\n return Array.from(this._activeRipples.keys());\n }\n\n /** Removes previously registered event listeners from the trigger element. */\n _removeTriggerEvents() {\n const trigger = this._triggerElement;\n if (trigger) {\n pointerDownEvents.forEach(type => RippleRenderer._eventManager.removeHandler(type, trigger, this));\n if (this._pointerUpEventsRegistered) {\n pointerUpEvents.forEach(type =>\n trigger.removeEventListener(type, this, passiveCapturingEventOptions)\n );\n this._pointerUpEventsRegistered = false;\n }\n }\n }\n}\n\n/** Returns the distance from the point (x, y) to the furthest corner of a rectangle. */\nfunction distanceToFurthestCorner(x: number, y: number, rect: DOMRect) {\n const distX = Math.max(Math.abs(x - rect.left), Math.abs(x - rect.right));\n const distY = Math.max(Math.abs(y - rect.top), Math.abs(y - rect.bottom));\n return Math.sqrt(distX * distX + distY * distY);\n}\n\nexport interface RippleGlobalOptions {\n disabled?: boolean;\n animation?: RippleAnimationConfig;\n terminateOnPointerUp?: boolean;\n}\n\nexport const RIPPLE_GLOBAL_OPTIONS = new InjectionToken<RippleGlobalOptions>(\n 'ngs-ripple-global-options'\n);\n\n@Directive({\n selector: '[ngsRipple]',\n standalone: true,\n exportAs: 'ngsRipple',\n host: {\n 'class': 'ngs-ripple',\n '[class.ngs-ripple-unbounded]': 'unbounded()',\n },\n})\nexport class Ripple implements OnInit, OnDestroy {\n private _elementRef = inject(ElementRef);\n private _ngZone = inject(NgZone);\n private _platform = inject(Platform);\n private _globalOptions = inject(RIPPLE_GLOBAL_OPTIONS, { optional: true }) || {};\n\n color = input<string | undefined>(undefined, { alias: 'ngsRippleColor' });\n unbounded = input(false, { alias: 'ngsRippleUnbounded', transform: booleanAttribute });\n centered = model(false, { alias: 'ngsRippleCentered' });\n radius = input(0, { alias: 'ngsRippleRadius', transform: numberAttribute });\n animation = input<RippleAnimationConfig | undefined>(undefined, { alias: 'ngsRippleAnimation' });\n disabled = model(false, { alias: 'ngsRippleDisabled' });\n trigger = model<HTMLElement | undefined>(undefined, { alias: 'ngsRippleTrigger' });\n\n private _rippleRenderer: RippleRenderer;\n private _isInitialized = false;\n\n constructor() {\n this._rippleRenderer = new RippleRenderer(this, this._ngZone, this._elementRef, this._platform);\n\n effect(() => {\n if (this.disabled()) {\n this.fadeOutAllNonPersistent();\n }\n this._setupTriggerEventsIfEnabled();\n });\n\n effect(() => {\n this.trigger();\n this._setupTriggerEventsIfEnabled();\n });\n }\n\n ngOnInit() {\n this._isInitialized = true;\n this._setupTriggerEventsIfEnabled();\n }\n\n ngOnDestroy() {\n this._rippleRenderer._removeTriggerEvents();\n }\n\n /** Fades out all currently showing ripple elements. */\n fadeOutAll() {\n this._rippleRenderer.fadeOutAll();\n }\n\n /** Fades out all currently showing non-persistent ripple elements. */\n fadeOutAllNonPersistent() {\n this._rippleRenderer.fadeOutAllNonPersistent();\n }\n\n get rippleConfig(): RippleConfig {\n return {\n centered: this.centered(),\n radius: this.radius(),\n color: this.color(),\n animation: {\n ...this._globalOptions.animation,\n ...this.animation(),\n },\n terminateOnPointerUp: this._globalOptions.terminateOnPointerUp,\n };\n }\n\n get rippleDisabled(): boolean {\n return this.disabled() || !!this._globalOptions.disabled;\n }\n\n private _setupTriggerEventsIfEnabled() {\n if (!this.disabled() && this._isInitialized) {\n this._rippleRenderer.setupTriggerEvents(this.trigger() || this._elementRef.nativeElement);\n }\n }\n\n /** Launches a manual ripple at the specified coordinates or just by the ripple config. */\n launch(configOrX: number | RippleConfig, y: number = 0, config?: RippleConfig): RippleRef {\n if (typeof configOrX === 'number') {\n return this._rippleRenderer.fadeInRipple(configOrX, y, { ...this.rippleConfig, ...config });\n } else {\n return this._rippleRenderer.fadeInRipple(0, 0, { ...this.rippleConfig, ...configOrX });\n }\n }\n}\n","import {ElementRef, inject} from '@angular/core';\n\nexport function injectElement<T extends Element = HTMLElement>(): T {\n return inject(ElementRef).nativeElement;\n}\n\nexport function isElement(node?: Node | Element | EventTarget | null): node is Element {\n return !!node && 'nodeType' in node && node.nodeType === Node.ELEMENT_NODE;\n}\n\nexport function getActualTarget(event: Event): Node {\n return (event.target ?? (event as any).currentTarget) as Node;\n}\n","import {\n Directive,\n inject,\n input,\n NgZone,\n AfterViewInit,\n OnDestroy,\n numberAttribute,\n} from '@angular/core';\nimport { injectElement } from '../utils/dom';\nimport { Platform } from '@angular/cdk/platform';\n\n@Directive({\n selector: 'textarea[ngsTextareaAutoSize]',\n exportAs: 'ngsTextareaAutoSize',\n host: {\n 'rows': '1',\n '(input)': 'resize()',\n 'style': 'display: block; overflow: hidden; resize: none; box-sizing: border-box;',\n },\n})\nexport class TextareaAutoSize implements AfterViewInit, OnDestroy {\n private readonly _textarea = injectElement<HTMLTextAreaElement>();\n private readonly _ngZone = inject(NgZone);\n private readonly _platform = inject(Platform);\n\n minRows = input(1, { transform: numberAttribute });\n maxRows = input(Number.MAX_SAFE_INTEGER, { transform: numberAttribute });\n\n private _resizeObserver?: ResizeObserver;\n\n ngAfterViewInit() {\n if (this._platform.isBrowser) {\n this.resize();\n\n this._ngZone.runOutsideAngular(() => {\n this._resizeObserver = new ResizeObserver(() => this.resize());\n this._resizeObserver.observe(this._textarea);\n });\n }\n }\n\n ngOnDestroy() {\n this._resizeObserver?.disconnect();\n }\n\n resize() {\n this._textarea.style.height = 'auto';\n\n const style = window.getComputedStyle(this._textarea);\n let lineHeight = parseFloat(style.lineHeight);\n\n if (isNaN(lineHeight)) {\n lineHeight = parseFloat(style.fontSize) * 1.2;\n }\n\n const paddingTop = parseFloat(style.paddingTop) || 0;\n const paddingBottom = parseFloat(style.paddingBottom) || 0;\n const borderTop = parseFloat(style.borderTopWidth) || 0;\n const borderBottom = parseFloat(style.borderBottomWidth) || 0;\n\n const minHeight = this.minRows() * lineHeight + paddingTop + paddingBottom + borderTop + borderBottom;\n const maxHeight = this.maxRows() * lineHeight + paddingTop + paddingBottom + borderTop + borderBottom;\n\n this._textarea.style.height = 'auto';\n const currentScrollHeight = this._textarea.scrollHeight;\n\n let height = Math.max(minHeight, currentScrollHeight);\n height = Math.min(maxHeight, height);\n\n this._textarea.style.height = `${height}px`;\n\n if (currentScrollHeight > maxHeight) {\n this._textarea.style.overflowY = 'auto';\n } else {\n this._textarea.style.overflowY = 'hidden';\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'initials',\n standalone: true\n})\nexport class InitialsPipe implements PipeTransform {\n transform(value: string): string {\n if (!value) {\n return '';\n }\n\n const initials = [...value.toString().matchAll(/(\\p{L}{1})\\p{L}+/gu)];\n const result = ((initials.shift()?.[1] || '') + (initials.pop()?.[1] || '')).toUpperCase();\n return result ? result : value[0];\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'formatFileSize',\n standalone: true\n})\nexport class FormatFileSizePipe implements PipeTransform {\n transform(bytes: number, decimalPoint = 2): string {\n if (bytes == 0) {\n return '0 Bytes';\n }\n\n const k = 1000;\n const dm = decimalPoint || 2;\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n const index = Math.floor(Math.log(bytes) / Math.log(k));\n\n return parseFloat((bytes / Math.pow(k, index)).toFixed(dm)) + ' ' + sizes[index];\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'orderBy',\n standalone: true\n})\nexport class OrderByPipe implements PipeTransform {\n transform(value: any, property: string, direction: 'asc' | 'desc' = 'asc'): any {\n if (!Array.isArray(value)) {\n throw new Error('Order By value should be an array');\n }\n\n const sorted = value.sort((a, b) => {\n if (a[property] < b[property]) {\n return -1;\n } else if (a[property] > b[property]) {\n return 1;\n } else {\n return 0;\n }\n });\n\n if (direction === 'asc') {\n return sorted;\n } else if (direction === 'desc') {\n return sorted.reverse();\n }\n }\n}\n","import { inject, Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Pipe({\n name: 'safeHtml',\n standalone: true\n})\nexport class SafeHtmlPipe implements PipeTransform {\n private _domSanitizer = inject(DomSanitizer);\n\n transform(value: any): any {\n return this._domSanitizer.bypassSecurityTrustHtml(value);\n }\n}\n","import { inject, Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Pipe({\n name: 'safeResourceUrl',\n standalone: true\n})\nexport class SafeResourceUrlPipe implements PipeTransform {\n private _domSanitizer = inject(DomSanitizer);\n\n transform(value: string): any {\n return this._domSanitizer.bypassSecurityTrustResourceUrl(value);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'filterByProperty',\n})\nexport class FilterByPropertyPipe implements PipeTransform {\n private getNestedValue(obj: any, path: string): any {\n return path.split('.').reduce((acc, part) => acc && acc[part], obj);\n }\n\n transform<T>(items: T[], propPath: string, value: any, strict = false): T[] {\n if (!items) {\n return [];\n }\n\n if (value === undefined || typeof value === 'undefined') {\n return items;\n }\n\n if (!strict && (value === null || value === '')) {\n return items;\n }\n\n return items.filter(item => {\n const propertyValue = this.getNestedValue(item, propPath);\n return propertyValue === value;\n });\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'searchByProperty',\n})\nexport class SearchByPropertyPipe implements PipeTransform {\n private getNestedValue(obj: any, path: string): any {\n return path.split('.').reduce((acc, part) => acc && acc[part], obj);\n }\n\n transform<T>(items: T[] | null, propPath: string, searchValue: string): T[] {\n if (!items) {\n return [];\n }\n if (!searchValue) {\n return items;\n }\n\n const lowercasedSearchValue = searchValue.toLowerCase();\n\n return items.filter(item => {\n const propertyValue = this.getNestedValue(item, propPath);\n\n if (typeof propertyValue === 'string') {\n return propertyValue.toLowerCase().includes(lowercasedSearchValue);\n }\n\n return false;\n });\n }\n}\n","import { inject, Injectable, InjectionToken } from '@angular/core';\n\nexport const ENVIRONMENT = new InjectionToken<{ [key: string]: any }>('ENVIRONMENT');\n\n@Injectable({\n providedIn: 'root'\n})\nexport class EnvironmentService {\n private _environment = inject(ENVIRONMENT, {\n optional: true\n }) || {};\n\n getValue(key: string, defaultValue?: any): any {\n return this._environment[key] || defaultValue;\n }\n}\n","import { inject, Injectable, isDevMode, PLATFORM_ID, DOCUMENT } from '@angular/core';\nimport { filter } from 'rxjs';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { isPlatformServer } from '@angular/common';\nimport { EnvironmentService } from './environment.service';\n\ndeclare const gtag: any;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AnalyticsService {\n private _platformId = inject(PLATFORM_ID);\n private _router = inject(Router);\n private _document = inject(DOCUMENT);\n private _environmentService = inject(EnvironmentService);\n\n trackPageViews(): void {\n const googleAnalyticsId = this._environmentService.getValue('googleAnalyticsId');\n\n if (isDevMode() || !googleAnalyticsId) {\n return;\n }\n\n try {\n const url = 'https://www.googletagmanager.com/gtag/js?id=';\n const gTagScript = this._document.createElement('script');\n gTagScript.async = true;\n gTagScript.src = `${url}${googleAnalyticsId}`;\n this._document.head.appendChild(gTagScript);\n const dataLayerScript = this._document.createElement('script');\n dataLayerScript.innerHTML = `\n window.dataLayer = window.dataLayer || [];\n function gtag(){dataLayer.push(arguments);}\n gtag('js', new Date());\n gtag('config', '${googleAnalyticsId}');`\n ;\n this._document.head.appendChild(dataLayerScript);\n\n if (isPlatformServer(this._platformId)) {\n return;\n }\n\n this._router.events.pipe(\n filter((event) => event instanceof NavigationEnd),\n ).subscribe((event: any) => {\n gtag('event', 'page_view', {\n page_title: this._document.head.title,\n page_path: event.urlAfterRedirects,\n page_location: this._document.location.href\n });\n })\n ;\n } catch (e) {\n }\n }\n}\n","import { DestroyRef, EventEmitter, inject, Injectable, DOCUMENT } from '@angular/core';\nimport { debounceTime, fromEvent, merge, Observable } from 'rxjs';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class InactivityTrackerService {\n private _destroyRef = inject(DestroyRef);\n private _document = inject(DOCUMENT);\n private _interval = 10000 * 60; // 5 minutes\n private _timeout: ReturnType<typeof setTimeout>;\n private _interactionEvents$ = merge(\n fromEvent(this._document, 'click'),\n fromEvent(this._document, 'keydown'),\n fromEvent(this._document, 'mousemove'),\n fromEvent(this._document, 'scroll')\n ).pipe(debounceTime(250));\n private _noInteraction = new EventEmitter<void>();\n\n setupInactivityTimer(interval?: number): Observable<void> {\n if (interval) {\n this._interval = interval;\n }\n\n this._setupTimer();\n this._interactionEvents$.pipe(\n takeUntilDestroyed(this._destroyRef),\n ).subscribe(() => {\n this._setupTimer();\n });\n\n return this._noInteraction.pipe(\n takeUntilDestroyed(this._destroyRef)\n );\n }\n\n reset(): void {\n this._setupTimer();\n }\n\n private _setupTimer(): void {\n clearTimeout(this._timeout);\n this._timeout = setTimeout(() => {\n this._noInteraction.emit();\n }, this._interval);\n }\n}\n","import { patchState, signalStore, withMethods, withState } from '@ngrx/signals';\n\nexport interface GlobalState {\n screenLoading: boolean;\n sidebarHidden: boolean;\n pageTitle: string;\n}\n\nconst initialGlobalState: GlobalState = {\n screenLoading: true,\n sidebarHidden: false,\n pageTitle: ''\n};\n\nexport const GlobalStore = signalStore(\n { providedIn: 'root' },\n withState(initialGlobalState),\n withMethods((store) => ({\n setScreenLoading(isLoading: boolean) {\n patchState(store, {\n screenLoading: isLoading\n });\n },\n setPageTitle(pageTitle: string) {\n patchState(store, {\n pageTitle\n });\n }\n }))\n);\n","import { inject, Injectable } from '@angular/core';\nimport { RouterStateSnapshot, TitleStrategy } from '@angular/router';\nimport { Title } from '@angular/platform-browser';\nimport { GlobalStore } from '../global.state';\nimport { EnvironmentService } from './environment.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PageTitleStrategyService extends TitleStrategy {\n private _title = inject(Title);\n private _globalStore = inject(GlobalStore);\n private _environmentService = inject(EnvironmentService);\n\n override updateTitle(routerState: RouterStateSnapshot): void {\n const title = this.cleanTitle(this.buildTitle(routerState));\n const pageTitle = this.cleanTitle(this._globalStore.pageTitle())\n || this.cleanTitle(this._environmentService.getValue('pageTitle'));\n const currentTitle = this.cleanTitle(this._title.getTitle());\n\n const nextTitle = title && pageTitle ? `${title} | ${pageTitle}` : title || pageTitle || currentTitle;\n\n if (nextTitle) {\n this._title.setTitle(nextTitle);\n }\n }\n\n private cleanTitle(title: string | undefined): string | null {\n if (!title) {\n return null;\n }\n\n const clean = title\n .split('/')\n .map((part) => part.trim())\n .filter((part) => part && part.toLowerCase() !== 'undefined')\n .join(' - ')\n .trim();\n\n return clean || null;\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { GlobalStore } from '../global.state';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ScreenLoaderService {\n private _globalStore = inject(GlobalStore);\n\n show(): void {\n this._globalStore.setScreenLoading(true);\n }\n\n hide(): void {\n this._globalStore.setScreenLoading(false);\n }\n}\n","import { DestroyRef, inject, Injectable, PLATFORM_ID, DOCUMENT } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { filter } from 'rxjs';\nimport { isPlatformServer } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Meta, Title } from '@angular/platform-browser';\nimport { GlobalStore } from '../global.state';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SeoService {\n private readonly _router = inject(Router);\n private readonly _destroyRef = inject(DestroyRef);\n private readonly _document = inject(DOCUMENT);\n private readonly _platformId = inject(PLATFORM_ID);\n private _linkCanonical: HTMLLinkElement | null;\n private _title = inject(Title);\n private _meta = inject(Meta);\n private _globalStore = inject(GlobalStore);\n\n get meta(): Meta {\n return this._meta;\n }\n\n updateDescription(content?: string): void {\n if (!content) {\n return;\n }\n\n this.meta.updateTag({\n name: 'description',\n content\n });\n this.meta.updateTag({\n name: 'og:description',\n content\n });\n }\n\n updateOgUrl(content?: string): void {\n if (!content) {\n return;\n }\n\n this.meta.updateTag({\n name: 'og:url',\n content\n });\n }\n\n updateOgImage(content: string): void {\n if (!content) {\n return;\n }\n\n this.meta.updateTag({\n name: 'og:image',\n content\n });\n }\n\n trackCanonicalChanges(siteUrl: string): void {\n this._createCanonicalTag(siteUrl);\n\n if (isPlatformServer(this._platformId)) {\n return;\n }\n\n this._router.events\n .pipe(\n filter((event) => event instanceof NavigationEnd),\n takeUntilDestroyed(this._destroyRef),\n )\n .subscribe(() => {\n const href = this.getCanonicalUrl(siteUrl);\n this._linkCanonical?.setAttribute('href', href);\n this.updateOgUrl(href);\n })\n ;\n }\n\n updateTitle(title: string): void {\n this._title.setTitle(`${title} | ${this._globalStore.pageTitle()}`);\n this.meta.updateTag({\n name: 'og:title',\n content: title\n });\n }\n\n private getCanonicalUrl(siteUrl: string): string {\n if (this._document.URL.startsWith('http')) {\n return this._document.URL;\n }\n\n return siteUrl + this._document.URL;\n }\n\n private _createCanonicalTag(siteUrl: string): void {\n this._linkCanonical = this._document.querySelector('link[rel=\"canonical\"]');\n\n if (!this._linkCanonical) {\n this._linkCanonical = this._document.createElement('link');\n this._linkCanonical.setAttribute('rel', 'canonical');\n this._document.head.appendChild(this._linkCanonical);\n }\n\n this._linkCanonical.setAttribute('href', this.getCanonicalUrl(siteUrl));\n }\n}\n","import { InjectionToken, Provider } from '@angular/core';\n\nexport type NgsThemeName = 'default' | 'enterprise' | 'modern' | string;\nexport type NgsColorScheme = 'light' | 'dark' | 'auto';\nexport type NgsRadius = 'none' | 'small' | 'medium' | 'large';\n\nexport interface NgsThemeOptions {\n theme?: NgsThemeName;\n colorScheme?: NgsColorScheme;\n radius?: NgsRadius;\n primaryColor?: string;\n persist?: boolean;\n storageKey?: string;\n}\n\nexport const NGS_THEME_OPTIONS = new InjectionToken<NgsThemeOptions>('NGS_THEME_OPTIONS', {\n factory: () => ({\n theme: 'default',\n colorScheme: 'auto',\n radius: 'medium',\n persist: true,\n storageKey: 'ngs-admin',\n }),\n});\n\nexport function provideNgsTheme(options: NgsThemeOptions = {}): Provider {\n return {\n provide: NGS_THEME_OPTIONS,\n useValue: {\n theme: 'default',\n colorScheme: 'auto',\n radius: 'medium',\n persist: true,\n storageKey: 'ngs-admin',\n ...options,\n },\n };\n}\n","import { afterNextRender, DOCUMENT, effect, inject, Injectable, signal } from '@angular/core';\nimport {\n NGS_THEME_OPTIONS,\n NgsColorScheme,\n NgsRadius,\n NgsThemeName,\n NgsThemeOptions,\n} from '../tokens/theme.token';\n\ninterface StoredThemeState {\n theme?: NgsThemeName;\n colorScheme?: NgsColorScheme;\n radius?: NgsRadius;\n primaryColor?: string;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ThemeManagerService {\n private _document = inject(DOCUMENT);\n private _window = this._document.defaultView;\n private _options = inject(NGS_THEME_OPTIONS);\n\n private readonly _theme = signal<NgsThemeName>('default');\n private readonly _colorScheme = signal<Exclude<NgsColorScheme, 'auto'>>('light');\n private readonly _radius = signal<NgsRadius>('medium');\n private readonly _primaryColor = signal<string | null>(null);\n\n readonly theme = this._theme.asReadonly();\n readonly colorScheme = this._colorScheme.asReadonly();\n readonly radius = this._radius.asReadonly();\n readonly primaryColor = this._primaryColor.asReadonly();\n\n constructor() {\n this.applyTheme(this._getInitialState());\n\n effect(() => {\n this._syncDocumentAttributes();\n });\n\n afterNextRender(() => {\n if (this._window !== null && this._window.matchMedia) {\n this._window\n .matchMedia('(prefers-color-scheme: dark)')\n .addEventListener('change', () => {\n const storedColorScheme = this._getStoredColorScheme();\n\n if (storedColorScheme !== 'light' && storedColorScheme !== 'dark') {\n this.setColorScheme(this.getPreferredColorScheme(), false);\n }\n })\n ;\n }\n });\n }\n\n getColorScheme(): 'dark' | 'light' {\n return this._colorScheme();\n }\n\n toggleColorScheme(): void {\n if (this._getStoredColorScheme() === 'dark') {\n this.changeColorScheme('light');\n } else {\n this.changeColorScheme('dark');\n }\n }\n\n changeColorScheme(colorScheme: 'dark' | 'light'): void {\n this.setColorScheme(colorScheme);\n }\n\n setTheme(theme: NgsThemeName, persist = true): void {\n this._theme.set(theme);\n this._persist({ theme }, persist);\n }\n\n setRadius(radius: NgsRadius, persist = true): void {\n this._radius.set(radius);\n this._persist({ radius }, persist);\n }\n\n setPrimaryColor(primaryColor: string | null, persist = true): void {\n this._primaryColor.set(primaryColor);\n this._persist({ primaryColor: primaryColor || undefined }, persist);\n }\n\n applyTheme(options: NgsThemeOptions, persist = false): void {\n if (options.theme) {\n this._theme.set(options.theme);\n }\n\n if (options.radius) {\n this._radius.set(options.radius);\n }\n\n if (options.primaryColor !== undefined) {\n this._primaryColor.set(options.primaryColor || null);\n }\n\n this.setColorScheme(options.colorScheme || 'auto', persist);\n this._persist(options, persist);\n }\n\n private _getStoredColorScheme() {\n return this._getStoredState().colorScheme;\n };\n\n private _getStoredState(): StoredThemeState {\n if (!this._options.persist || typeof localStorage === 'undefined') {\n return {};\n }\n\n const rawValue = localStorage.getItem(this._storageKey);\n\n if (!rawValue) {\n return {};\n }\n\n try {\n return JSON.parse(rawValue);\n } catch {\n return {};\n }\n };\n\n private _persist(state: Partial<StoredThemeState>, persist = true): void {\n if (!persist || !this._options.persist || typeof localStorage === 'undefined') {\n return;\n }\n\n const meta = this._getStoredState();\n localStorage.setItem(this._storageKey, JSON.stringify({ ...meta, ...state }));\n };\n\n private _setStoredColorScheme(colorScheme: string): void {\n this._persist({ colorScheme: colorScheme as NgsColorScheme });\n };\n\n getPreferredColorScheme(): 'dark' | 'light' {\n const storedTheme = this._getStoredColorScheme();\n\n if (storedTheme === 'light' || storedTheme === 'dark') {\n return storedTheme;\n }\n\n if (this._window !== null && this._window.matchMedia) {\n return this._window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n }\n\n return 'light';\n };\n\n setColorScheme(colorScheme: NgsColorScheme, persist = true): void {\n if (colorScheme === 'auto') {\n this._colorScheme.set(this.getPreferredColorScheme());\n } else {\n this._colorScheme.set(colorScheme);\n }\n\n if (persist) {\n this._setStoredColorScheme(colorScheme);\n }\n };\n\n private _getInitialState(): NgsThemeOptions {\n return {\n ...this._options,\n ...this._getStoredState(),\n };\n }\n\n private _syncDocumentAttributes(): void {\n const root = this._document.documentElement;\n const primaryColor = this._primaryColor();\n\n if (!root) {\n return;\n }\n\n root.classList?.toggle('dark', this._colorScheme() === 'dark');\n root.setAttribute('data-ngs-theme', this._theme());\n root.setAttribute('data-ngs-color-scheme', this._colorScheme());\n root.setAttribute('data-ngs-radius', this._radius());\n\n if (primaryColor && root.style) {\n root.style.setProperty('--ngs-color-primary', primaryColor);\n } else if (root.style) {\n root.style.removeProperty('--ngs-color-primary');\n }\n }\n\n private get _storageKey(): string {\n return this._options.storageKey || 'ngs-admin';\n }\n}\n","import { Injectable, NgZone } from '@angular/core';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ResizeObserverService {\n constructor(private ngZone: NgZone) {}\n\n observe(element: Element): Observable<ResizeObserverEntry[]> {\n return new Observable(observer => {\n const resizeObserver = new ResizeObserver(entries => {\n this.ngZone.run(() => {\n observer.next(entries);\n });\n });\n\n resizeObserver.observe(element);\n\n return () => {\n resizeObserver.disconnect();\n };\n });\n }\n}\n","import { Injectable, NgZone } from '@angular/core';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MutationObserverService {\n constructor(private ngZone: NgZone) {}\n\n observe(element: Node, options?: MutationObserverInit): Observable<MutationRecord[]> {\n return new Observable(observer => {\n const mutationObserver = new MutationObserver(mutations => {\n this.ngZone.run(() => {\n observer.next(mutations);\n });\n });\n\n mutationObserver.observe(element, options);\n\n return () => {\n mutationObserver.disconnect();\n };\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { AbstractControl, FormGroupDirective, NgForm } from '@angular/forms';\n\n/** Provider for managing the error state of a form control. */\n@Injectable({ providedIn: 'root' })\nexport class ErrorStateMatcher {\n /**\n * Whether a control should be in an error state.\n * @param control The form control to check.\n * @param form The parent form that contains the control.\n * @returns Whether the control should be in an error state.\n */\n isErrorState(control: AbstractControl | null, form: FormGroupDirective | NgForm | null): boolean {\n return !!(control && control.invalid && (control.touched || (form && form.submitted)));\n }\n}\n\n/** Error state matcher that displays an error when a control is dirty and invalid. */\n@Injectable()\nexport class ShowOnDirtyErrorStateMatcher implements ErrorStateMatcher {\n isErrorState(control: AbstractControl | null, form: FormGroupDirective | NgForm | null): boolean {\n return !!(control && control.invalid && (control.dirty || (form && form.submitted)));\n }\n}\n","export function px(value: number): string {\n return `${value}px`;\n}\n\nexport function arrayShallowEquals<T>(a: readonly T[], b: readonly T[]): boolean {\n return a.length === b.length && a.every((item, index) => item === b[index]);\n}\n","import {NgZone, inject} from '@angular/core';\nimport {SchedulerLike, Subscription} from 'rxjs';\n\nexport function zonefreeScheduler(): SchedulerLike {\n const zone = inject(NgZone);\n\n return {\n now: () => Date.now(),\n schedule: (work: any, delay: any, state: any) => {\n return zone.runOutsideAngular(() => {\n const id = setTimeout(() => work(state), delay);\n return new Subscription(() => clearTimeout(id));\n });\n },\n } as any;\n}\n","import {fromEvent, Observable} from 'rxjs';\n\nexport function typedFromEvent<E extends Event>(\n target: EventTarget,\n event: string,\n options?: EventListenerOptions | boolean,\n): Observable<E> {\n return fromEvent(target, event, options as any) as Observable<E>;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -453,7 +453,7 @@ class CountrySelect {
|
|
|
453
453
|
provide: FormFieldControl,
|
|
454
454
|
useExisting: forwardRef(() => CountrySelect),
|
|
455
455
|
},
|
|
456
|
-
], viewQueries: [{ propertyName: "ngsSelect", first: true, predicate: ["ngsSelect"], descendants: true, isSignal: true }, { propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true, isSignal: true }], exportAs: ["ngsCountrySelect"], ngImport: i0, template: "<ngs-select\n #ngsSelect\n [value]=\"value\"\n (selectionChange)=\"onSelectionChange($event)\"\n (opened)=\"onSelectOpened()\"\n (closed)=\"onSelectClosed()\"\n [placeholder]=\"placeholder\"\n [required]=\"isRequiredSignal()\"\n [disabled]=\"isDisabledSignal()\">\n <ngs-select-trigger class=\"select-trigger\">\n @let selectedCountry = selectedCountryDisplay();\n @if (selectedCountry) {\n <
|
|
456
|
+
], viewQueries: [{ propertyName: "ngsSelect", first: true, predicate: ["ngsSelect"], descendants: true, isSignal: true }, { propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true, isSignal: true }], exportAs: ["ngsCountrySelect"], ngImport: i0, template: "<ngs-select\n #ngsSelect\n [value]=\"value\"\n (selectionChange)=\"onSelectionChange($event)\"\n (opened)=\"onSelectOpened()\"\n (closed)=\"onSelectClosed()\"\n [placeholder]=\"placeholder\"\n [required]=\"isRequiredSignal()\"\n [disabled]=\"isDisabledSignal()\">\n <ngs-select-trigger class=\"select-trigger\">\n @let selectedCountry = selectedCountryDisplay();\n @if (selectedCountry) {\n <span class=\"ngs-select-trigger-content\">\n <span class=\"ngs-select-trigger-icon\">{{ selectedCountry.flag }}</span>\n <span class=\"ngs-select-trigger-text\">\n {{ selectedCountry.name }}\n @if (showCountryCode()) {\n <span class=\"code\">({{ selectedCountry.code }})</span>\n }\n </span>\n </span>\n }\n\n @if (!selectedCountryDisplay() && placeholder) {\n <span class=\"ngs-select-trigger-text placeholder-text\">\n {{ placeholder }}\n </span>\n }\n </ngs-select-trigger>\n\n <ngs-select-header>\n <div class=\"sticky top-0 z-1 bg-surface-container-lowest\">\n <input #searchInput\n type=\"text\"\n placeholder=\"Search...\"\n autocomplete=\"off\"\n [(ngModel)]=\"searchTerm\"\n class=\"w-full text-sm focus:outline-none border-b border-surface-container-high focus:border-b-primary h-14 px-3\">\n @if (searchTerm().trim()) {\n <div class=\"absolute end-1 top-1/2 -translate-y-1/2\">\n <button\n ngsIconButton\n (click)=\"clearSearch($event)\"\n class=\"clear-button\"\n type=\"button\"\n aria-label=\"Clear search\">\n <ngs-icon name=\"fluent:dismiss-24-regular\"/>\n </button>\n </div>\n }\n </div>\n </ngs-select-header>\n\n @for (country of filteredCountries(); track country.code) {\n <ngs-option [value]=\"country.code\">\n <span class=\"select-option-content\">\n <span class=\"select-option-icon\">{{ country.flag }}</span>\n <span class=\"select-option-text\">\n {{ country.name }}\n @if (showCountryCode()) {\n <span class=\"code\">({{ country.code }})</span>\n }\n </span>\n </span>\n </ngs-option>\n } @empty {\n @if (searchTerm()) {\n <div class=\"text-sm px-4 py-3\">\n <span i18n>Country not found</span>.\n </div>\n }\n }\n</ngs-select>\n", styles: [":host{display:block}:host .ngs-select-trigger-icon,:host .select-option-icon{font-size:1.25rem}:host .select-option-content{display:flex;align-items:center;gap:var(--ngs-dropdown-item-gap, calc(var(--spacing, .25rem) * 2));min-width:0;width:100%;height:100%;overflow:hidden;white-space:nowrap}:host .select-option-icon{flex:none;line-height:0}:host .select-option-text{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host .code{text-transform:uppercase;color:var(--ngs-color-neutral-500)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "component", type: Option, selector: "ngs-option", inputs: ["value", "disabled", "selected"], outputs: ["onSelectionChange"], exportAs: ["ngsOption"] }, { kind: "component", type: Icon, selector: "ngs-icon", inputs: ["name"], exportAs: ["ngsIcon"] }, { kind: "component", type: Select, selector: "ngs-select", inputs: ["id", "placeholder", "disabled", "required", "multiple", "hideCheckIcon", "ariaLabel", "tabIndex", "aria-describedby", "value"], outputs: ["selectionChange", "opened", "closed", "valueChange"], exportAs: ["ngsSelect"] }, { kind: "directive", type: SelectTrigger, selector: "ngs-select-trigger" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: Button, selector: " button[ngsButton], button[ngsIconButton], a[ngsButton], a[ngsIconButton] ", inputs: ["ngsButton", "ngsIconButton", "loading", "disabled", "disabledInteractive", "disableRipple", "reverse", "fullWidth", "hideTextOnMobile"], exportAs: ["ngsButton"] }, { kind: "component", type: SelectHeader, selector: "ngs-select-header" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
|
|
457
457
|
}
|
|
458
458
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: CountrySelect, decorators: [{
|
|
459
459
|
type: Component,
|
|
@@ -478,7 +478,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImpor
|
|
|
478
478
|
Button,
|
|
479
479
|
SelectHeader,
|
|
480
480
|
FormsModule
|
|
481
|
-
], template: "<ngs-select\n #ngsSelect\n [value]=\"value\"\n (selectionChange)=\"onSelectionChange($event)\"\n (opened)=\"onSelectOpened()\"\n (closed)=\"onSelectClosed()\"\n [placeholder]=\"placeholder\"\n [required]=\"isRequiredSignal()\"\n [disabled]=\"isDisabledSignal()\">\n <ngs-select-trigger class=\"select-trigger\">\n @let selectedCountry = selectedCountryDisplay();\n @if (selectedCountry) {\n <
|
|
481
|
+
], template: "<ngs-select\n #ngsSelect\n [value]=\"value\"\n (selectionChange)=\"onSelectionChange($event)\"\n (opened)=\"onSelectOpened()\"\n (closed)=\"onSelectClosed()\"\n [placeholder]=\"placeholder\"\n [required]=\"isRequiredSignal()\"\n [disabled]=\"isDisabledSignal()\">\n <ngs-select-trigger class=\"select-trigger\">\n @let selectedCountry = selectedCountryDisplay();\n @if (selectedCountry) {\n <span class=\"ngs-select-trigger-content\">\n <span class=\"ngs-select-trigger-icon\">{{ selectedCountry.flag }}</span>\n <span class=\"ngs-select-trigger-text\">\n {{ selectedCountry.name }}\n @if (showCountryCode()) {\n <span class=\"code\">({{ selectedCountry.code }})</span>\n }\n </span>\n </span>\n }\n\n @if (!selectedCountryDisplay() && placeholder) {\n <span class=\"ngs-select-trigger-text placeholder-text\">\n {{ placeholder }}\n </span>\n }\n </ngs-select-trigger>\n\n <ngs-select-header>\n <div class=\"sticky top-0 z-1 bg-surface-container-lowest\">\n <input #searchInput\n type=\"text\"\n placeholder=\"Search...\"\n autocomplete=\"off\"\n [(ngModel)]=\"searchTerm\"\n class=\"w-full text-sm focus:outline-none border-b border-surface-container-high focus:border-b-primary h-14 px-3\">\n @if (searchTerm().trim()) {\n <div class=\"absolute end-1 top-1/2 -translate-y-1/2\">\n <button\n ngsIconButton\n (click)=\"clearSearch($event)\"\n class=\"clear-button\"\n type=\"button\"\n aria-label=\"Clear search\">\n <ngs-icon name=\"fluent:dismiss-24-regular\"/>\n </button>\n </div>\n }\n </div>\n </ngs-select-header>\n\n @for (country of filteredCountries(); track country.code) {\n <ngs-option [value]=\"country.code\">\n <span class=\"select-option-content\">\n <span class=\"select-option-icon\">{{ country.flag }}</span>\n <span class=\"select-option-text\">\n {{ country.name }}\n @if (showCountryCode()) {\n <span class=\"code\">({{ country.code }})</span>\n }\n </span>\n </span>\n </ngs-option>\n } @empty {\n @if (searchTerm()) {\n <div class=\"text-sm px-4 py-3\">\n <span i18n>Country not found</span>.\n </div>\n }\n }\n</ngs-select>\n", styles: [":host{display:block}:host .ngs-select-trigger-icon,:host .select-option-icon{font-size:1.25rem}:host .select-option-content{display:flex;align-items:center;gap:var(--ngs-dropdown-item-gap, calc(var(--spacing, .25rem) * 2));min-width:0;width:100%;height:100%;overflow:hidden;white-space:nowrap}:host .select-option-icon{flex:none;line-height:0}:host .select-option-text{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host .code{text-transform:uppercase;color:var(--ngs-color-neutral-500)}\n/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */\n"] }]
|
|
482
482
|
}], ctorParameters: () => [], propDecorators: { searchTerm: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchTerm", required: false }] }, { type: i0.Output, args: ["searchTermChange"] }], placeholderInputSignal: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], isRequiredSignal: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }, { type: i0.Output, args: ["requiredChange"] }], isDisabledSignal: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }, { type: i0.Output, args: ["disabledChange"] }], showCountryCode: [{ type: i0.Input, args: [{ isSignal: true, alias: "showCountryCode", required: false }] }], ngsSelect: [{ type: i0.ViewChild, args: ['ngsSelect', { isSignal: true }] }], searchInput: [{ type: i0.ViewChild, args: ['searchInput', { isSignal: true }] }], opened: [{ type: i0.Output, args: ["opened"] }], closed: [{ type: i0.Output, args: ["closed"] }] } });
|
|
483
483
|
|
|
484
484
|
/**
|