@theseam/ui-common 1.0.0-beta.4 → 1.0.0-beta.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/theseam-ui-common-buttons.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-datatable.mjs +3 -3
- package/fesm2022/theseam-ui-common-datatable.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-form-field.mjs +9 -2
- package/fesm2022/theseam-ui-common-form-field.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-framework.mjs +1 -1
- package/fesm2022/theseam-ui-common-framework.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-google-maps.mjs +2 -2
- package/fesm2022/theseam-ui-common-google-maps.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-shared.mjs +28 -94
- package/fesm2022/theseam-ui-common-shared.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-utils.mjs.map +1 -1
- package/fesm2022/theseam-ui-common-viewers.mjs +6 -2
- package/fesm2022/theseam-ui-common-viewers.mjs.map +1 -1
- package/form-field/index.d.ts +1 -1
- package/package.json +49 -49
- package/shared/index.d.ts +0 -13
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
|
-
import { Input, Component, inject, ElementRef, Directive, EventEmitter, HostListener, Output,
|
|
3
|
+
import { Input, Component, inject, ElementRef, Directive, EventEmitter, HostListener, Output, HostBinding, Pipe, NgModule } from '@angular/core';
|
|
4
4
|
import * as i1 from '@fortawesome/angular-fontawesome';
|
|
5
5
|
import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
|
|
6
6
|
import { faEye, faEyeSlash } from '@fortawesome/free-regular-svg-icons';
|
|
7
7
|
import { Modal, ModalRef, getClosestModal } from '@theseam/ui-common/modal';
|
|
8
8
|
import { NgControl } from '@angular/forms';
|
|
9
9
|
import { ResizeSensor } from 'css-element-queries';
|
|
10
|
+
import { NgSelectComponent } from '@ng-select/ng-select';
|
|
10
11
|
import { Subject, fromEvent } from 'rxjs';
|
|
11
12
|
import { takeUntil, filter, tap } from 'rxjs/operators';
|
|
12
|
-
import { NgSelectComponent } from '@ng-select/ng-select';
|
|
13
13
|
import { QuillEditorComponent } from 'ngx-quill';
|
|
14
14
|
import { padStart, padEnd } from '@theseam/ui-common/utils';
|
|
15
15
|
|
|
@@ -384,39 +384,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.1", ngImpor
|
|
|
384
384
|
type: Input
|
|
385
385
|
}] } });
|
|
386
386
|
|
|
387
|
+
// import { ResizeSensor } from 'css-element-queries'
|
|
388
|
+
// import { TheSeamElementResizedEvent } from './elem-resized.directive'
|
|
387
389
|
class TheSeamNgSelectExtraDirective {
|
|
388
390
|
_elementRef = inject((ElementRef));
|
|
389
|
-
_ngZone = inject(NgZone);
|
|
390
391
|
_ngSelect = inject(NgSelectComponent);
|
|
391
392
|
_ngControl = inject(NgControl, { optional: true, self: true });
|
|
392
|
-
_ngUnsubscribe = new Subject();
|
|
393
|
-
_markedItem = null;
|
|
394
|
-
_checkMarked = false;
|
|
395
|
-
_keyPressWorkaroundSub = null;
|
|
396
|
-
_resizedEvent = new EventEmitter();
|
|
397
|
-
_resizeSensor;
|
|
398
393
|
/**
|
|
399
394
|
* Set the tab index to `-1` to allow the root element of the ng-select
|
|
400
395
|
* component to receive `focus` event from javascript, but not get focused by
|
|
401
396
|
* keyboard navigation.
|
|
402
397
|
*/
|
|
403
|
-
get _tabIndex() { return this._ngSelect.disabled ? undefined : -1; }
|
|
398
|
+
get _tabIndex() { return this._ngSelect.disabled() ? undefined : -1; }
|
|
404
399
|
/**
|
|
405
400
|
* Listening for focus event on root of component to allow javascript
|
|
406
401
|
* `focus()` function to trigger the components focus.
|
|
407
402
|
*/
|
|
408
403
|
onFocus($event) {
|
|
409
404
|
const target = $event.target;
|
|
410
|
-
if (target === this._elementRef.nativeElement && !this._ngSelect.disabled) {
|
|
405
|
+
if (target === this._elementRef.nativeElement && !this._ngSelect.disabled()) {
|
|
411
406
|
this._ngSelect.focus();
|
|
412
407
|
}
|
|
413
|
-
// ng-select has an input `labelForId` that sets the autocomplete attribute
|
|
414
|
-
// in ngOnInit. I am not positive that it is wrong by doing that, but this
|
|
415
|
-
// hack makes it set the attributes again on focus, because that gives the
|
|
416
|
-
// result I was expecting, since we don't manually set the `labelForId`
|
|
417
|
-
// input.
|
|
418
|
-
const _ngSelect = this._ngSelect;
|
|
419
|
-
_ngSelect._setInputAttributes();
|
|
420
408
|
}
|
|
421
409
|
get _isInvalid() {
|
|
422
410
|
return this._ngControl ? this._ngControl.invalid && (this._ngControl.dirty || this._ngControl.touched) : false;
|
|
@@ -425,10 +413,10 @@ class TheSeamNgSelectExtraDirective {
|
|
|
425
413
|
return this._ngControl ? this._ngControl.value === '' : false;
|
|
426
414
|
}
|
|
427
415
|
ngOnInit() {
|
|
428
|
-
this._ngSelect.focusEvent
|
|
429
|
-
|
|
430
|
-
this._ngSelect.blurEvent
|
|
431
|
-
|
|
416
|
+
// this._ngSelect.focusEvent
|
|
417
|
+
// .subscribe(v => this._enableKeyPressWorkaround())
|
|
418
|
+
// this._ngSelect.blurEvent
|
|
419
|
+
// .subscribe(v => this._disableKeyPressWorkaround())
|
|
432
420
|
window.addEventListener('scroll', this._onScroll, true);
|
|
433
421
|
// When the input is allowed to change its height the position doesn't update itself.
|
|
434
422
|
// this._resizedEvent.pipe(
|
|
@@ -447,28 +435,29 @@ class TheSeamNgSelectExtraDirective {
|
|
|
447
435
|
// this._patch_ngSelect_open()
|
|
448
436
|
}
|
|
449
437
|
ngOnDestroy() {
|
|
450
|
-
this._resizeSensor?.detach()
|
|
438
|
+
// this._resizeSensor?.detach()
|
|
451
439
|
window.removeEventListener('scroll', this._onScroll, true);
|
|
452
|
-
this._ngUnsubscribe.next(undefined)
|
|
453
|
-
this._ngUnsubscribe.complete()
|
|
440
|
+
// this._ngUnsubscribe.next(undefined)
|
|
441
|
+
// this._ngUnsubscribe.complete()
|
|
454
442
|
}
|
|
455
443
|
ngAfterViewChecked() {
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
}
|
|
465
|
-
|
|
466
|
-
this.
|
|
467
|
-
|
|
468
|
-
})
|
|
444
|
+
// const dropPanel = this._ngSelect.dropdownPanel() as any
|
|
445
|
+
// if (dropPanel) {
|
|
446
|
+
// if (this._checkMarked) {
|
|
447
|
+
// if (dropPanel && this._markedItem !== null) {
|
|
448
|
+
// if (this._markedItem.index !== dropPanel.markedItem.index) {
|
|
449
|
+
// dropPanel.scrollTo(dropPanel.markedItem)
|
|
450
|
+
// }
|
|
451
|
+
// }
|
|
452
|
+
// }
|
|
453
|
+
// }
|
|
454
|
+
// this._checkMarked = false
|
|
455
|
+
// this._resizeSensor = new ResizeSensor(this._elementRef.nativeElement, event => {
|
|
456
|
+
// this._resizedEvent.emit({ element: this._elementRef.nativeElement, size: event })
|
|
457
|
+
// })
|
|
469
458
|
}
|
|
470
459
|
_onScroll = (event) => {
|
|
471
|
-
if (this._ngSelect && this._ngSelect.isOpen) {
|
|
460
|
+
if (this._ngSelect && this._ngSelect.isOpen()) {
|
|
472
461
|
const isScrollingInScrollHost = event.target.className.indexOf('ng-dropdown-panel-items') !== -1;
|
|
473
462
|
const isInSensor = event.target.className.indexOf('resize-sensor-shrink') !== -1 ||
|
|
474
463
|
event.target.className.indexOf('os-resize-observer-host') !== -1;
|
|
@@ -478,61 +467,6 @@ class TheSeamNgSelectExtraDirective {
|
|
|
478
467
|
this._ngSelect.close();
|
|
479
468
|
}
|
|
480
469
|
};
|
|
481
|
-
/**
|
|
482
|
-
* Temp fix for: https://github.com/ng-select/ng-select/issues/1122
|
|
483
|
-
*/
|
|
484
|
-
// private _patch_ngSelect_open() {
|
|
485
|
-
// const original = this._ngSelect.open
|
|
486
|
-
// const _self = this
|
|
487
|
-
// this._ngSelect.open = function() {
|
|
488
|
-
// original.apply(this, arguments)
|
|
489
|
-
// _self._patch_ngSelectDropdownPanel_updateDropdownPosition()
|
|
490
|
-
// }
|
|
491
|
-
// }
|
|
492
|
-
/** Should ONLY be called by `_patch_ngSelect_open`. */
|
|
493
|
-
// private _patch_ngSelectDropdownPanel_updateDropdownPosition() {
|
|
494
|
-
// if (!this._ngSelect.dropdownPanel) { return }
|
|
495
|
-
// const drop: any = this._ngSelect.dropdownPanel
|
|
496
|
-
// // Only needed once, to update the position before the timeout in
|
|
497
|
-
// // `updateDropdownPosition()`. So, using this variable to check if I already called
|
|
498
|
-
// // `_updateAppendedDropdownPosition()`.
|
|
499
|
-
// if (!drop.__libPatched) {
|
|
500
|
-
// drop.__libPatched = 'patched'
|
|
501
|
-
// const original = drop.updateDropdownPosition
|
|
502
|
-
// const _self = this
|
|
503
|
-
// drop.updateDropdownPosition = function() {
|
|
504
|
-
// original.apply(this, arguments)
|
|
505
|
-
// if (!!_self._ngSelect.appendTo) {
|
|
506
|
-
// drop._updateAppendedDropdownPosition()
|
|
507
|
-
// }
|
|
508
|
-
// }
|
|
509
|
-
// }
|
|
510
|
-
// }
|
|
511
|
-
_enableKeyPressWorkaround() {
|
|
512
|
-
if (this._keyPressWorkaroundSub) {
|
|
513
|
-
return;
|
|
514
|
-
}
|
|
515
|
-
const _ngSelect = this._ngSelect;
|
|
516
|
-
this._keyPressWorkaroundSub = _ngSelect._keyPress$
|
|
517
|
-
.pipe(takeUntil(this._ngUnsubscribe))
|
|
518
|
-
.pipe(filter(() => !this._ngSelect.searchable))
|
|
519
|
-
.subscribe(() => {
|
|
520
|
-
this._ngZone.runOutsideAngular(() => {
|
|
521
|
-
window.requestAnimationFrame(() => {
|
|
522
|
-
if (this._ngSelect.dropdownPanel) {
|
|
523
|
-
this._markedItem = this._ngSelect.dropdownPanel.markedItem;
|
|
524
|
-
}
|
|
525
|
-
this._checkMarked = true;
|
|
526
|
-
});
|
|
527
|
-
});
|
|
528
|
-
});
|
|
529
|
-
}
|
|
530
|
-
_disableKeyPressWorkaround() {
|
|
531
|
-
if (this._keyPressWorkaroundSub) {
|
|
532
|
-
this._keyPressWorkaroundSub.unsubscribe();
|
|
533
|
-
this._keyPressWorkaroundSub = null;
|
|
534
|
-
}
|
|
535
|
-
}
|
|
536
470
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.1", ngImport: i0, type: TheSeamNgSelectExtraDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
537
471
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.1", type: TheSeamNgSelectExtraDirective, isStandalone: true, selector: "ng-select", host: { listeners: { "focus": "onFocus($event)" }, properties: { "attr.tabIndex": "this._tabIndex", "class.is-invalid": "this._isInvalid", "class.ng-empty-string-value": "this._isEmptyStringValue" } }, exportAs: ["seamNgSelectExtra"], ngImport: i0 });
|
|
538
472
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theseam-ui-common-shared.mjs","sources":["../../../projects/ui-common/shared/components/password-input-reveal/password-input-reveal.component.ts","../../../projects/ui-common/shared/directives/auto-focus.directive.ts","../../../projects/ui-common/shared/directives/click-outside.directive.ts","../../../projects/ui-common/shared/directives/disable-control.directive.ts","../../../projects/ui-common/shared/directives/elem-resized.directive.ts","../../../projects/ui-common/shared/directives/hover-class-toggle.directive.ts","../../../projects/ui-common/shared/directives/hover-class.directive.ts","../../../projects/ui-common/shared/directives/ng-select-extra.directive.ts","../../../projects/ui-common/shared/directives/ngx-quill-extra.directive.ts","../../../projects/ui-common/shared/pipes/mask-chars.pipe.ts","../../../projects/ui-common/shared/pipes/truncate.pipe.ts","../../../projects/ui-common/shared/shared.module.ts","../../../projects/ui-common/shared/theseam-ui-common-shared.ts"],"sourcesContent":["import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion'\nimport { Component, Input } from '@angular/core'\n\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome'\nimport { faEye, faEyeSlash } from '@fortawesome/free-regular-svg-icons'\n\n@Component({\n selector: 'seam-password-input-reveal',\n template: `\n <fa-icon [icon]=\"passwordVisible ? faEyeSlash : faEye\" class=\"password-reveal-icon\" (click)=\"revealPassword()\"></fa-icon>\n `,\n styles: [`\n :host {\n display: flex;\n align-items: center;\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n width: 30px;\n transform: translateZ(0);\n z-index: 50;\n }\n\n :host fa-icon {\n opacity: 1;\n color: #bababa;\n /* margin-top: 3px; */ /* Not needed now? */\n cursor: pointer;\n }\n\n :host fa-icon ::ng-deep .svg-inline--fa {\n vertical-align: middle;\n }\n `],\n imports: [\n FontAwesomeModule,\n ],\n})\nexport class TheSeamPasswordInputRevealComponent {\n static ngAcceptInputType_passwordVisible: BooleanInput\n\n readonly faEye = faEye\n readonly faEyeSlash = faEyeSlash\n\n @Input()\n get inputRef(): HTMLInputElement | undefined | null { return this._passwordInput }\n set inputRef(value: HTMLInputElement | undefined | null) {\n this._passwordInput = value\n this.updateRevealState()\n if (this._passwordInput) {\n this._passwordInput.style.paddingRight = '40px'\n this._passwordInput.classList.add('no-native-eye')\n }\n }\n private _passwordInput: HTMLInputElement | undefined | null\n\n @Input()\n get passwordVisible() { return this._passwordVisible }\n set passwordVisible(value: boolean) {\n this._passwordVisible = coerceBooleanProperty(value)\n this.updateRevealState()\n }\n public _passwordVisible = false\n\n public updateRevealState(): void {\n if (this._passwordInput) {\n this._passwordInput.type = this.passwordVisible ? 'text' : 'password'\n }\n }\n\n public revealPassword(): void {\n this.passwordVisible = !this.passwordVisible\n }\n\n}\n","import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion'\nimport { Directive, ElementRef, inject, Input, OnInit } from '@angular/core'\n\nimport { getClosestModal, Modal, ModalRef } from '@theseam/ui-common/modal'\n\n/**\n * Directive that will focus the element when initialized.\n *\n * If the element is inside a modal, it will wait until the modal is opened before focusing.\n *\n * If the element will be initialized multiple times or while a form is being filled out\n * don't use this directive.\n *\n * Usage:\n * ```html\n * <input type=\"text\" seamAutoFocus />\n * ```\n */\n@Directive({\n selector: '[seamAutoFocus]',\n exportAs: 'seamAutoFocus',\n})\nexport class TheSeamAutoFocusDirective implements OnInit {\n static ngAcceptInputType_seamAutoFocus: BooleanInput\n\n private readonly _elementRef = inject(ElementRef<HTMLElement>)\n private readonly _modal = inject(Modal, { optional: true })\n private readonly _modalRef = inject(ModalRef, { optional: true })\n\n private _focus = true\n\n public modalRef: ModalRef<any> | undefined | null = this._modalRef\n\n @Input()\n set seamAutoFocus(condition: boolean) {\n this._focus = coerceBooleanProperty(condition) !== false\n }\n\n ngOnInit() {\n if (!this.modalRef && this._modal) {\n // When this directive is included in a dialog via TemplateRef (rather than being\n // in a Component), the DialogRef isn't available via injection because embedded\n // views cannot be given a custom injector. Instead, we look up the DialogRef by\n // ID. This must occur in `onInit`, as the ID binding for the dialog container won't\n // be resolved at constructor time.\n this.modalRef = getClosestModal(this._elementRef, this._modal.openDialogs)\n }\n\n if (!this.modalRef) {\n if (this._focus) {\n setTimeout(() => { this.focus() })\n }\n } else {\n this.modalRef.afterOpened().subscribe(() => {\n setTimeout(() => { this.focus() })\n })\n }\n }\n\n public focus() {\n this._elementRef.nativeElement.focus()\n }\n}\n","import { Directive, ElementRef, EventEmitter, HostListener, inject, Input, Output } from '@angular/core'\n\n@Directive({\n selector: '[seamClickOutside]',\n exportAs: 'seamClickOutside',\n})\nexport class TheSeamClickOutsideDirective {\n\n private readonly _elementRef = inject(ElementRef<HTMLElement>)\n\n @Input()\n get seamClickOutsideActive(): boolean {\n return this._active\n }\n set seamClickOutsideActive(value: boolean) {\n if (this._active === value) { return }\n\n if (value) {\n // `setTimeout` is used to avoid the click event triggering when the value\n // changes if the value was changed with a click.\n setTimeout(() => { this._active = value })\n } else {\n this._active = value\n }\n }\n private _active = true\n\n @Output() seamClickOutside = new EventEmitter<MouseEvent>()\n\n // NOTE: This should probably be changed from a `HostListener` to allow the\n // subscription to be unsubscribed.\n @HostListener('document:click', ['$event'])\n public onDocumentClick(event: MouseEvent): void {\n if (this._active) {\n const targetElement = event.target as HTMLElement\n // Check if the click was outside the element\n if (targetElement && !this._elementRef.nativeElement.contains(targetElement)) {\n this.seamClickOutside.emit(event)\n }\n }\n }\n\n}\n","import { Directive, inject, Input } from '@angular/core'\nimport { NgControl } from '@angular/forms'\n\n// Source: https://netbasal.com/disabling-form-controls-when-working-with-reactive-forms-in-angular-549dd7b42110\n\n@Directive({\n selector: '[seamDisableControl]',\n exportAs: 'seamDisableControl',\n})\nexport class TheSeamDisableControlDirective {\n\n private readonly _ngControl = inject(NgControl)\n\n @Input() set seamDisableControl(condition: boolean) {\n const action = condition ? 'disable' : 'enable'\n const control = this._ngControl.control\n if (control) {\n control[action]()\n }\n }\n\n}\n","import { AfterViewInit, Directive, ElementRef, EventEmitter, inject, OnDestroy, Output } from '@angular/core'\n\nimport { ResizeSensor } from 'css-element-queries'\n\nexport interface TheSeamElementResizedEvent {\n element: HTMLElement\n size: { width: number, height: number }\n}\n\n@Directive({\n selector: '[seamElemResized]',\n exportAs: 'seamElemResized',\n})\nexport class TheSeamElemResizedDirective implements OnDestroy, AfterViewInit {\n\n private readonly _elementRef = inject(ElementRef<HTMLElement>)\n\n @Output() seamElemResized = new EventEmitter<TheSeamElementResizedEvent>()\n\n sensor?: ResizeSensor\n\n ngAfterViewInit() {\n this.sensor = new ResizeSensor(this._elementRef.nativeElement, event => {\n this.seamElemResized.emit({ element: this._elementRef.nativeElement, size: event })\n })\n }\n\n ngOnDestroy() {\n this.sensor?.detach()\n }\n\n}\n","import { Directive, ElementRef, HostListener, inject, Input } from '@angular/core'\n\ndeclare type _PointerEvent = PointerEvent | PointerEvent\n\nexport interface TheSeamHoverClassToggleRecord {\n default: string\n hover: string\n}\n\n/**\n * Don't use this directive unless there is a reason not to use css `:hover`,\n * because the accuracy of detecting the hover is not as good. If an element is\n * moved while the mouse is idle the hover class will remain until the mouse\n * enters and leaves again.\n *\n * I have tried multiple ways of detecting the mouse no longer hovering, but all\n * have introduced a slight performance issue that just builds for each element\n * containing this directive.\n */\n@Directive({\n selector: '[seamHoverClassToggle]',\n exportAs: 'seamHoverClassToggle',\n})\nexport class TheSeamHoverClassToggleDirective {\n\n private readonly _elementRef = inject(ElementRef<HTMLElement>)\n\n private _hovered = false\n private _defaultClasses: string[] = []\n private _hoverClasses: string[] = []\n\n @HostListener('mouseover', ['$event']) onMouseOver($event: MouseEvent) {\n this._setHovered(true)\n }\n\n @HostListener('mouseout', ['$event']) onMouseOut($event: MouseEvent) {\n this._setHovered(false)\n }\n\n @HostListener('pointerover', ['$event']) onPointerOver($event: _PointerEvent) {\n this._setHovered(true)\n }\n\n @HostListener('pointerout', ['$event']) onPointerOut($event: _PointerEvent) {\n this._setHovered(false)\n }\n\n @Input()\n set seamHoverClassToggle(value: TheSeamHoverClassToggleRecord) {\n if (value) {\n if (value.default) {\n this._defaultClasses = value.default.split(' ').filter(c => c.length > 0)\n }\n if (value.hover) {\n this._hoverClasses = value.hover.split(' ').filter(c => c.length > 0)\n }\n }\n\n this._hoverClasses = this._hoverClasses.filter(v => !this._defaultClasses.find(_v => _v === v))\n\n this._update()\n }\n\n private _update(): void {\n for (const c of this._defaultClasses) {\n this._hovered ? this._removeClass(c) : this._addClass(c)\n }\n for (const c of this._hoverClasses) {\n this._hovered ? this._addClass(c) : this._removeClass(c)\n }\n }\n\n private _setHovered(hovered: boolean) {\n const doUpdate = this._hovered !== hovered\n this._hovered = hovered\n if (doUpdate) {\n this._update()\n }\n }\n\n private _addClass(c: string): void {\n this._elementRef.nativeElement.classList.add(c)\n }\n\n public _removeClass(c: string): void {\n this._elementRef.nativeElement.classList.remove(c)\n }\n\n}\n","import { Directive, ElementRef, HostListener, inject, Input } from '@angular/core'\n\ndeclare type _PointerEvent = PointerEvent | PointerEvent\n\n/**\n * Changes a css class on mouse pointer hover.\n *\n * NOTE: Only use this if css `:hover` can't be used, because css is more\n * accurate and better performing.\n *\n * NOTE: Don't use this directive unless there is a reason not to use css\n * `:hover`, because the accuracy of detecting the hover is not as good. If an\n * element is moved while the mouse is idle the hover class will remain until\n * the mouse enters and leaves again.\n *\n * NOTE: I have tried multiple ways of detecting the mouse no longer hovering,\n * but all have introduced a slight performance issue that just builds for each\n * element containing this directive.\n */\n@Directive({\n selector: '[seamHoverClass]',\n exportAs: 'seamHoverClass',\n})\nexport class TheSeamHoverClassDirective {\n\n private readonly _elementRef = inject(ElementRef<HTMLElement>)\n\n private _hovered = false\n private _classes: string[] = []\n\n @HostListener('mouseover', ['$event']) onMouseOver($event: MouseEvent) {\n this._setHovered(true)\n }\n\n @HostListener('mouseout', ['$event']) onMouseOut($event: MouseEvent) {\n this._setHovered(false)\n }\n\n @HostListener('pointerover', ['$event']) onPointerOver($event: _PointerEvent) {\n this._setHovered(true)\n }\n\n @HostListener('pointerout', ['$event']) onPointerOut($event: _PointerEvent) {\n this._setHovered(false)\n }\n\n @Input()\n set seamHoverClass(classList: string) {\n const newClasses = classList.split(' ').filter(c => c.length > 0)\n for (const c of this._classes) {\n if (newClasses.indexOf(c) !== 0) {\n this._removeClass(c)\n }\n }\n this._classes = newClasses\n this._update()\n }\n\n private _update(): void {\n for (const c of this._classes) {\n this._hovered ? this._addClass(c) : this._removeClass(c)\n }\n }\n\n private _setHovered(hovered: boolean) {\n const doUpdate = this._hovered !== hovered\n this._hovered = hovered\n if (doUpdate) {\n this._update()\n }\n }\n\n private _addClass(c: string): void {\n this._elementRef.nativeElement.classList.add(c)\n }\n\n public _removeClass(c: string): void {\n this._elementRef.nativeElement.classList.remove(c)\n }\n\n}\n","import {\n AfterViewChecked,\n Directive,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n inject,\n NgZone,\n OnDestroy,\n OnInit,\n} from '@angular/core'\nimport { NgControl } from '@angular/forms'\nimport { Subject, Subscription } from 'rxjs'\nimport { filter, takeUntil } from 'rxjs/operators'\n\nimport { NgOption, NgSelectComponent } from '@ng-select/ng-select'\nimport { ResizeSensor } from 'css-element-queries'\n\nimport { TheSeamElementResizedEvent } from './elem-resized.directive'\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'ng-select',\n exportAs: 'seamNgSelectExtra',\n})\nexport class TheSeamNgSelectExtraDirective implements OnInit, AfterViewChecked, OnDestroy {\n\n private readonly _elementRef = inject(ElementRef<HTMLElement>)\n private readonly _ngZone = inject(NgZone)\n private readonly _ngSelect = inject(NgSelectComponent)\n private readonly _ngControl = inject<NgControl | null>(NgControl, { optional: true, self: true })\n\n private readonly _ngUnsubscribe = new Subject<void>()\n\n private _markedItem: NgOption | null = null\n private _checkMarked = false\n private _keyPressWorkaroundSub: Subscription | null = null\n\n private _resizedEvent = new EventEmitter<TheSeamElementResizedEvent>()\n private _resizeSensor?: ResizeSensor\n\n /**\n * Set the tab index to `-1` to allow the root element of the ng-select\n * component to receive `focus` event from javascript, but not get focused by\n * keyboard navigation.\n */\n @HostBinding('attr.tabIndex')\n get _tabIndex() { return this._ngSelect.disabled ? undefined : -1 }\n\n /**\n * Listening for focus event on root of component to allow javascript\n * `focus()` function to trigger the components focus.\n */\n @HostListener('focus', ['$event']) onFocus($event: FocusEvent) {\n const target = $event.target as HTMLElement\n if (target === this._elementRef.nativeElement && !this._ngSelect.disabled) {\n this._ngSelect.focus()\n }\n\n // ng-select has an input `labelForId` that sets the autocomplete attribute\n // in ngOnInit. I am not positive that it is wrong by doing that, but this\n // hack makes it set the attributes again on focus, because that gives the\n // result I was expecting, since we don't manually set the `labelForId`\n // input.\n const _ngSelect = this._ngSelect as any\n _ngSelect._setInputAttributes()\n }\n\n @HostBinding('class.is-invalid') get _isInvalid() {\n return this._ngControl ? this._ngControl.invalid && (this._ngControl.dirty || this._ngControl.touched) : false\n }\n\n @HostBinding('class.ng-empty-string-value') get _isEmptyStringValue() {\n return this._ngControl ? this._ngControl.value === '' : false\n }\n\n ngOnInit() {\n this._ngSelect.focusEvent\n .subscribe(v => this._enableKeyPressWorkaround())\n\n this._ngSelect.blurEvent\n .subscribe(v => this._disableKeyPressWorkaround())\n\n window.addEventListener('scroll', this._onScroll, true)\n\n // When the input is allowed to change its height the position doesn't update itself.\n // this._resizedEvent.pipe(\n // auditTime(30)\n // ).subscribe(event => {\n // if (this._elementRef && this._elementRef.nativeElement) {\n // if (this._elementRef.nativeElement.classList.contains('ng-select-value-grow-h')) {\n // if (this._ngSelect.isOpen && this._ngSelect.dropdownPanel) {\n // this._ngSelect.dropdownPanel.updateDropdownPosition()\n // }\n // } else {\n // this._elementRef.nativeElement.classList.remove('ng-select-value-grow-h')\n // }\n // }\n // })\n\n // this._patch_ngSelect_open()\n }\n\n ngOnDestroy() {\n this._resizeSensor?.detach()\n\n window.removeEventListener('scroll', this._onScroll, true)\n\n this._ngUnsubscribe.next(undefined)\n this._ngUnsubscribe.complete()\n }\n\n ngAfterViewChecked() {\n if (this._ngSelect.dropdownPanel) {\n if (this._checkMarked) {\n if (this._ngSelect.dropdownPanel && this._markedItem !== null) {\n if (this._markedItem.index !== this._ngSelect.dropdownPanel.markedItem.index) {\n this._ngSelect.dropdownPanel.scrollTo(this._ngSelect.dropdownPanel.markedItem)\n }\n }\n }\n }\n this._checkMarked = false\n\n this._resizeSensor = new ResizeSensor(this._elementRef.nativeElement, event => {\n this._resizedEvent.emit({ element: this._elementRef.nativeElement, size: event })\n })\n }\n\n private _onScroll = (event: any) => {\n if (this._ngSelect && this._ngSelect.isOpen) {\n const isScrollingInScrollHost = (event.target.className as string).indexOf('ng-dropdown-panel-items') !== -1\n const isInSensor = (event.target.className as string).indexOf('resize-sensor-shrink') !== -1 ||\n (event.target.className as string).indexOf('os-resize-observer-host') !== -1\n if (isScrollingInScrollHost || isInSensor) { return }\n this._ngSelect.close()\n }\n}\n\n /**\n * Temp fix for: https://github.com/ng-select/ng-select/issues/1122\n */\n // private _patch_ngSelect_open() {\n // const original = this._ngSelect.open\n // const _self = this\n // this._ngSelect.open = function() {\n // original.apply(this, arguments)\n // _self._patch_ngSelectDropdownPanel_updateDropdownPosition()\n // }\n // }\n\n /** Should ONLY be called by `_patch_ngSelect_open`. */\n // private _patch_ngSelectDropdownPanel_updateDropdownPosition() {\n // if (!this._ngSelect.dropdownPanel) { return }\n // const drop: any = this._ngSelect.dropdownPanel\n // // Only needed once, to update the position before the timeout in\n // // `updateDropdownPosition()`. So, using this variable to check if I already called\n // // `_updateAppendedDropdownPosition()`.\n // if (!drop.__libPatched) {\n // drop.__libPatched = 'patched'\n // const original = drop.updateDropdownPosition\n // const _self = this\n // drop.updateDropdownPosition = function() {\n // original.apply(this, arguments)\n // if (!!_self._ngSelect.appendTo) {\n // drop._updateAppendedDropdownPosition()\n // }\n // }\n // }\n // }\n\n private _enableKeyPressWorkaround() {\n if (this._keyPressWorkaroundSub) { return }\n const _ngSelect = this._ngSelect as any\n\n this._keyPressWorkaroundSub = _ngSelect._keyPress$\n .pipe(takeUntil(this._ngUnsubscribe))\n .pipe(filter(() => !this._ngSelect.searchable))\n .subscribe(() => {\n this._ngZone.runOutsideAngular(() => {\n window.requestAnimationFrame(() => {\n if (this._ngSelect.dropdownPanel) {\n this._markedItem = this._ngSelect.dropdownPanel.markedItem\n }\n this._checkMarked = true\n })\n })\n })\n }\n\n private _disableKeyPressWorkaround() {\n if (this._keyPressWorkaroundSub) {\n this._keyPressWorkaroundSub.unsubscribe()\n this._keyPressWorkaroundSub = null\n }\n }\n\n}\n","import { coerceNumberProperty } from '@angular/cdk/coercion'\nimport { AfterViewInit, Directive, ElementRef, HostBinding, inject, Input, OnDestroy } from '@angular/core'\nimport { fromEvent, Subject } from 'rxjs'\nimport { filter, takeUntil, tap } from 'rxjs/operators'\n\nimport { QuillEditorComponent } from 'ngx-quill'\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'quill-editor',\n exportAs: 'seamNgxQuillExtra',\n})\nexport class TheSeamNgxQuillExtraDirective implements OnDestroy, AfterViewInit {\n\n private readonly _elementRef: ElementRef<HTMLElement> = inject(ElementRef<HTMLElement>)\n private readonly _quillEditor: QuillEditorComponent = inject(QuillEditorComponent)\n\n private readonly _ngUnsubscribe = new Subject<void>()\n\n private _tabIndex = -1\n\n /**\n * Set the tab index to `-1` to allow the root element of the\n * component to receive `focus` event from javascript, but not get focused by\n * keyboard navigation.\n */\n @Input()\n set tabIndex(value: number) { this._tabIndex = coerceNumberProperty(value) }\n get tabIndex(): number { return this._tabIndex }\n\n @HostBinding('attr.tabindex')\n get _attrTabIndex() { return this._quillEditor.disabled ? -1 : (this.tabIndex || 0) }\n\n ngOnDestroy() {\n this._ngUnsubscribe.next(undefined)\n this._ngUnsubscribe.complete()\n }\n\n ngAfterViewInit() {\n const parent = this._getParentElementForLabelFocusIssue()\n if (parent) {\n // NOTE: This is a hack to avoid an issue letting a label with \"for\"\n // attribute focus the control.\n fromEvent(parent, 'click').pipe(\n takeUntil(this._ngUnsubscribe),\n filter(e => (e.target as HTMLElement)?.getAttribute('for') === this._elementRef.nativeElement.id),\n tap(() => this._quillEditor.quillEditor.focus())\n ).subscribe()\n }\n }\n\n private _getParentElementForLabelFocusIssue(): HTMLElement | undefined {\n const findElem = (elem: HTMLElement): any => {\n if (elem.nodeName.toLowerCase() === 'seam-form-field') {\n return elem\n }\n\n if (elem.parentElement) {\n return findElem(elem.parentElement)\n }\n\n return elem\n }\n\n return findElem(this._elementRef.nativeElement)\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core'\n\nimport { padEnd, padStart } from '@theseam/ui-common/utils'\n\n@Pipe({\n name: 'maskChars',\n})\nexport class TheSeamMaskCharsPipe implements PipeTransform {\n\n transform(value: string, replacementChar: string = '*', ignoreCount: number = 0, ignoreFrom: 'left' | 'right' = 'right'): string {\n if (ignoreFrom === 'right') {\n const s = value || ''\n return padStart(s.substring(s.length - ignoreCount, s.length), s.length, replacementChar)\n } else if (ignoreFrom === 'left') {\n const s = value || ''\n return padEnd(s.substring(0, ignoreCount), s.length, replacementChar)\n }\n\n return value\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core'\n\n@Pipe({\n name: 'truncate',\n})\nexport class TheSeamTruncatePipe implements PipeTransform {\n\n transform(value: string, length: number = 30, appendEllipsis: boolean = true): string {\n let val = value\n\n if (value && typeof value === 'string' && value.length > length) {\n val = value.substr(0, length)\n if (appendEllipsis) {\n val += '...'\n }\n }\n\n return val\n }\n\n}\n","import { NgModule } from '@angular/core'\n\nimport { TheSeamAutoFocusDirective } from './directives/auto-focus.directive'\nimport { TheSeamClickOutsideDirective } from './directives/click-outside.directive'\nimport { TheSeamDisableControlDirective } from './directives/disable-control.directive'\nimport { TheSeamElemResizedDirective } from './directives/elem-resized.directive'\nimport { TheSeamHoverClassToggleDirective } from './directives/hover-class-toggle.directive'\nimport { TheSeamHoverClassDirective } from './directives/hover-class.directive'\nimport { TheSeamNgSelectExtraDirective } from './directives/ng-select-extra.directive'\nimport { TheSeamNgxQuillExtraDirective } from './directives/ngx-quill-extra.directive'\n\nimport { TheSeamMaskCharsPipe } from './pipes/mask-chars.pipe'\nimport { TheSeamTruncatePipe } from './pipes/truncate.pipe'\n\nimport { TheSeamPasswordInputRevealComponent } from './components/password-input-reveal/password-input-reveal.component'\n\n@NgModule({\n imports: [\n TheSeamAutoFocusDirective,\n TheSeamElemResizedDirective,\n TheSeamHoverClassToggleDirective,\n TheSeamNgSelectExtraDirective,\n TheSeamHoverClassDirective,\n TheSeamClickOutsideDirective,\n TheSeamDisableControlDirective,\n TheSeamNgxQuillExtraDirective,\n TheSeamMaskCharsPipe,\n TheSeamTruncatePipe,\n TheSeamPasswordInputRevealComponent,\n ],\n exports: [\n TheSeamAutoFocusDirective,\n TheSeamElemResizedDirective,\n TheSeamPasswordInputRevealComponent,\n TheSeamNgSelectExtraDirective,\n TheSeamHoverClassDirective,\n TheSeamHoverClassToggleDirective,\n TheSeamClickOutsideDirective,\n TheSeamDisableControlDirective,\n TheSeamMaskCharsPipe,\n TheSeamTruncatePipe,\n TheSeamNgxQuillExtraDirective,\n ]\n})\nexport class TheSeamSharedModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;MAuCa,mCAAmC,CAAA;IAC9C,OAAO,iCAAiC;IAE/B,KAAK,GAAG,KAAK;IACb,UAAU,GAAG,UAAU;IAEhC,IACI,QAAQ,KAA0C,OAAO,IAAI,CAAC,cAAc,CAAA,CAAC;IACjF,IAAI,QAAQ,CAAC,KAA0C,EAAA;AACrD,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK;QAC3B,IAAI,CAAC,iBAAiB,EAAE;AACxB,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,YAAY,GAAG,MAAM;YAC/C,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC;QACpD;IACF;AACQ,IAAA,cAAc;IAEtB,IACI,eAAe,KAAK,OAAO,IAAI,CAAC,gBAAgB,CAAA,CAAC;IACrD,IAAI,eAAe,CAAC,KAAc,EAAA;AAChC,QAAA,IAAI,CAAC,gBAAgB,GAAG,qBAAqB,CAAC,KAAK,CAAC;QACpD,IAAI,CAAC,iBAAiB,EAAE;IAC1B;IACO,gBAAgB,GAAG,KAAK;IAExB,iBAAiB,GAAA;AACtB,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,GAAG,IAAI,CAAC,eAAe,GAAG,MAAM,GAAG,UAAU;QACvE;IACF;IAEO,cAAc,GAAA;AACnB,QAAA,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,eAAe;IAC9C;uGAlCW,mCAAmC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mCAAmC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EA/BpC;;AAET,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,oPAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EA0BC,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,WAAA,EAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAGR,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAjC/C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,4BAA4B,EAAA,QAAA,EAC5B;;GAET,EAAA,OAAA,EAyBQ;wBACP,iBAAiB;AAClB,qBAAA,EAAA,MAAA,EAAA,CAAA,oPAAA,CAAA,EAAA;8BASG,QAAQ,EAAA,CAAA;sBADX;gBAaG,eAAe,EAAA,CAAA;sBADlB;;;ACpDH;;;;;;;;;;;;AAYG;MAKU,yBAAyB,CAAA;IACpC,OAAO,+BAA+B;AAErB,IAAA,WAAW,GAAG,MAAM,EAAC,UAAuB,EAAC;IAC7C,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC1C,SAAS,GAAG,MAAM,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAEzD,MAAM,GAAG,IAAI;AAEd,IAAA,QAAQ,GAAqC,IAAI,CAAC,SAAS;IAElE,IACI,aAAa,CAAC,SAAkB,EAAA;QAClC,IAAI,CAAC,MAAM,GAAG,qBAAqB,CAAC,SAAS,CAAC,KAAK,KAAK;IAC1D;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE;;;;;;AAMjC,YAAA,IAAI,CAAC,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;QAC5E;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,gBAAA,UAAU,CAAC,MAAK,EAAG,IAAI,CAAC,KAAK,EAAE,CAAA,CAAC,CAAC,CAAC;YACpC;QACF;aAAO;YACL,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,MAAK;AACzC,gBAAA,UAAU,CAAC,MAAK,EAAG,IAAI,CAAC,KAAK,EAAE,CAAA,CAAC,CAAC,CAAC;AACpC,YAAA,CAAC,CAAC;QACJ;IACF;IAEO,KAAK,GAAA;AACV,QAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE;IACxC;uGAvCW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAJrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,QAAQ,EAAE,eAAe;AAC1B,iBAAA;8BAaK,aAAa,EAAA,CAAA;sBADhB;;;MC3BU,4BAA4B,CAAA;AAEtB,IAAA,WAAW,GAAG,MAAM,EAAC,UAAuB,EAAC;AAE9D,IAAA,IACI,sBAAsB,GAAA;QACxB,OAAO,IAAI,CAAC,OAAO;IACrB;IACA,IAAI,sBAAsB,CAAC,KAAc,EAAA;AACvC,QAAA,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE;YAAE;QAAO;QAErC,IAAI,KAAK,EAAE;;;AAGT,YAAA,UAAU,CAAC,MAAK,EAAG,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA,CAAC,CAAC,CAAC;QAC5C;aAAO;AACL,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;QACtB;IACF;IACQ,OAAO,GAAG,IAAI;AAEZ,IAAA,gBAAgB,GAAG,IAAI,YAAY,EAAc;;;AAKpD,IAAA,eAAe,CAAC,KAAiB,EAAA;AACtC,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,MAAM,aAAa,GAAG,KAAK,CAAC,MAAqB;;AAEjD,YAAA,IAAI,aAAa,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;AAC5E,gBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;YACnC;QACF;IACF;uGAlCW,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAA5B,4BAA4B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,gBAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAJxC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,QAAQ,EAAE,kBAAkB;AAC7B,iBAAA;8BAMK,sBAAsB,EAAA,CAAA;sBADzB;gBAiBS,gBAAgB,EAAA,CAAA;sBAAzB;gBAKM,eAAe,EAAA,CAAA;sBADrB,YAAY;uBAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC;;;AC5B5C;MAMa,8BAA8B,CAAA;AAExB,IAAA,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC;IAE/C,IAAa,kBAAkB,CAAC,SAAkB,EAAA;QAChD,MAAM,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ;AAC/C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO;QACvC,IAAI,OAAO,EAAE;AACX,YAAA,OAAO,CAAC,MAAM,CAAC,EAAE;QACnB;IACF;uGAVW,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAA9B,8BAA8B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAA9B,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAJ1C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,QAAQ,EAAE,oBAAoB;AAC/B,iBAAA;8BAKc,kBAAkB,EAAA,CAAA;sBAA9B;;;MCAU,2BAA2B,CAAA;AAErB,IAAA,WAAW,GAAG,MAAM,EAAC,UAAuB,EAAC;AAEpD,IAAA,eAAe,GAAG,IAAI,YAAY,EAA8B;AAE1E,IAAA,MAAM;IAEN,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,KAAK,IAAG;AACrE,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACrF,QAAA,CAAC,CAAC;IACJ;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE;IACvB;uGAhBW,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAA3B,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAJvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,QAAQ,EAAE,iBAAiB;AAC5B,iBAAA;8BAKW,eAAe,EAAA,CAAA;sBAAxB;;;ACRH;;;;;;;;;AASG;MAKU,gCAAgC,CAAA;AAE1B,IAAA,WAAW,GAAG,MAAM,EAAC,UAAuB,EAAC;IAEtD,QAAQ,GAAG,KAAK;IAChB,eAAe,GAAa,EAAE;IAC9B,aAAa,GAAa,EAAE;AAEG,IAAA,WAAW,CAAC,MAAkB,EAAA;AACnE,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;IACxB;AAEsC,IAAA,UAAU,CAAC,MAAkB,EAAA;AACjE,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;IACzB;AAEyC,IAAA,aAAa,CAAC,MAAqB,EAAA;AAC1E,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;IACxB;AAEwC,IAAA,YAAY,CAAC,MAAqB,EAAA;AACxE,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;IACzB;IAEA,IACI,oBAAoB,CAAC,KAAoC,EAAA;QAC3D,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,KAAK,CAAC,OAAO,EAAE;gBACjB,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;YAC3E;AACA,YAAA,IAAI,KAAK,CAAC,KAAK,EAAE;gBACf,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;YACvE;QACF;AAEA,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;QAE/F,IAAI,CAAC,OAAO,EAAE;IAChB;IAEQ,OAAO,GAAA;AACb,QAAA,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,eAAe,EAAE;YACpC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QAC1D;AACA,QAAA,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE;YAClC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;QAC1D;IACF;AAEQ,IAAA,WAAW,CAAC,OAAgB,EAAA;AAClC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,KAAK,OAAO;AAC1C,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO;QACvB,IAAI,QAAQ,EAAE;YACZ,IAAI,CAAC,OAAO,EAAE;QAChB;IACF;AAEQ,IAAA,SAAS,CAAC,CAAS,EAAA;QACzB,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IACjD;AAEO,IAAA,YAAY,CAAC,CAAS,EAAA;QAC3B,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IACpD;uGA/DW,gCAAgC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAhC,gCAAgC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAhC,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAJ5C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,QAAQ,EAAE,sBAAsB;AACjC,iBAAA;8BASwC,WAAW,EAAA,CAAA;sBAAjD,YAAY;uBAAC,WAAW,EAAE,CAAC,QAAQ,CAAC;gBAIC,UAAU,EAAA,CAAA;sBAA/C,YAAY;uBAAC,UAAU,EAAE,CAAC,QAAQ,CAAC;gBAIK,aAAa,EAAA,CAAA;sBAArD,YAAY;uBAAC,aAAa,EAAE,CAAC,QAAQ,CAAC;gBAIC,YAAY,EAAA,CAAA;sBAAnD,YAAY;uBAAC,YAAY,EAAE,CAAC,QAAQ,CAAC;gBAKlC,oBAAoB,EAAA,CAAA;sBADvB;;;AC3CH;;;;;;;;;;;;;;AAcG;MAKU,0BAA0B,CAAA;AAEpB,IAAA,WAAW,GAAG,MAAM,EAAC,UAAuB,EAAC;IAEtD,QAAQ,GAAG,KAAK;IAChB,QAAQ,GAAa,EAAE;AAEQ,IAAA,WAAW,CAAC,MAAkB,EAAA;AACnE,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;IACxB;AAEsC,IAAA,UAAU,CAAC,MAAkB,EAAA;AACjE,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;IACzB;AAEyC,IAAA,aAAa,CAAC,MAAqB,EAAA;AAC1E,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;IACxB;AAEwC,IAAA,YAAY,CAAC,MAAqB,EAAA;AACxE,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;IACzB;IAEA,IACI,cAAc,CAAC,SAAiB,EAAA;QAClC,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AACjE,QAAA,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE;YAC7B,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;AAC/B,gBAAA,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;YACtB;QACF;AACA,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU;QAC1B,IAAI,CAAC,OAAO,EAAE;IAChB;IAEQ,OAAO,GAAA;AACb,QAAA,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE;YAC7B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;QAC1D;IACF;AAEQ,IAAA,WAAW,CAAC,OAAgB,EAAA;AAClC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,KAAK,OAAO;AAC1C,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO;QACvB,IAAI,QAAQ,EAAE;YACZ,IAAI,CAAC,OAAO,EAAE;QAChB;IACF;AAEQ,IAAA,SAAS,CAAC,CAAS,EAAA;QACzB,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IACjD;AAEO,IAAA,YAAY,CAAC,CAAS,EAAA;QAC3B,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IACpD;uGAvDW,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,YAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAJtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,QAAQ,EAAE,gBAAgB;AAC3B,iBAAA;8BAQwC,WAAW,EAAA,CAAA;sBAAjD,YAAY;uBAAC,WAAW,EAAE,CAAC,QAAQ,CAAC;gBAIC,UAAU,EAAA,CAAA;sBAA/C,YAAY;uBAAC,UAAU,EAAE,CAAC,QAAQ,CAAC;gBAIK,aAAa,EAAA,CAAA;sBAArD,YAAY;uBAAC,aAAa,EAAE,CAAC,QAAQ,CAAC;gBAIC,YAAY,EAAA,CAAA;sBAAnD,YAAY;uBAAC,YAAY,EAAE,CAAC,QAAQ,CAAC;gBAKlC,cAAc,EAAA,CAAA;sBADjB;;;MCpBU,6BAA6B,CAAA;AAEvB,IAAA,WAAW,GAAG,MAAM,EAAC,UAAuB,EAAC;AAC7C,IAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;AACxB,IAAA,SAAS,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACrC,IAAA,UAAU,GAAG,MAAM,CAAmB,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAEhF,IAAA,cAAc,GAAG,IAAI,OAAO,EAAQ;IAE7C,WAAW,GAAoB,IAAI;IACnC,YAAY,GAAG,KAAK;IACpB,sBAAsB,GAAwB,IAAI;AAElD,IAAA,aAAa,GAAG,IAAI,YAAY,EAA8B;AAC9D,IAAA,aAAa;AAErB;;;;AAIG;AACH,IAAA,IACI,SAAS,GAAA,EAAK,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,GAAG,CAAC,CAAC,CAAA,CAAC;AAElE;;;AAGG;AACgC,IAAA,OAAO,CAAC,MAAkB,EAAA;AAC3D,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAqB;AAC3C,QAAA,IAAI,MAAM,KAAK,IAAI,CAAC,WAAW,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;AACzE,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;QACxB;;;;;;AAOA,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAgB;QACvC,SAAS,CAAC,mBAAmB,EAAE;IACjC;AAEA,IAAA,IAAqC,UAAU,GAAA;AAC7C,QAAA,OAAO,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,KAAK,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,KAAK;IAChH;AAEA,IAAA,IAAgD,mBAAmB,GAAA;AACjE,QAAA,OAAO,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,KAAK,EAAE,GAAG,KAAK;IAC/D;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,SAAS,CAAC;aACZ,SAAS,CAAC,CAAC,IAAI,IAAI,CAAC,yBAAyB,EAAE,CAAC;QAEnD,IAAI,CAAC,SAAS,CAAC;aACZ,SAAS,CAAC,CAAC,IAAI,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAEpD,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC;;;;;;;;;;;;;;;;IAkBzD;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE;QAE5B,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC;AAE1D,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC;AACnC,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;IAChC;IAEA,kBAAkB,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE;AAChC,YAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,gBAAA,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE;AAC7D,oBAAA,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,KAAK,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,EAAE;AAC5E,wBAAA,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC;oBAChF;gBACF;YACF;QACF;AACA,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AAEzB,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,KAAK,IAAG;AAC5E,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACnF,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,SAAS,GAAG,CAAC,KAAU,KAAI;QACjC,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;AAC3C,YAAA,MAAM,uBAAuB,GAAI,KAAK,CAAC,MAAM,CAAC,SAAoB,CAAC,OAAO,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;AAC5G,YAAA,MAAM,UAAU,GAAI,KAAK,CAAC,MAAM,CAAC,SAAoB,CAAC,OAAO,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;AACzF,gBAAA,KAAK,CAAC,MAAM,CAAC,SAAoB,CAAC,OAAO,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;AAC9E,YAAA,IAAI,uBAAuB,IAAI,UAAU,EAAE;gBAAE;YAAO;AACpD,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;QACxB;AACJ,IAAA,CAAC;AAEC;;AAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA8BK,yBAAyB,GAAA;AAC/B,QAAA,IAAI,IAAI,CAAC,sBAAsB,EAAE;YAAE;QAAO;AAC1C,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAgB;AAEvC,QAAA,IAAI,CAAC,sBAAsB,GAAG,SAAS,CAAC;AACrC,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC;AACnC,aAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;aAC7C,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,MAAK;AAClC,gBAAA,MAAM,CAAC,qBAAqB,CAAC,MAAK;AAChC,oBAAA,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE;wBAChC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,UAAU;oBAC5D;AACA,oBAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AAC1B,gBAAA,CAAC,CAAC;AACJ,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACN;IAEQ,0BAA0B,GAAA;AAChC,QAAA,IAAI,IAAI,CAAC,sBAAsB,EAAE;AAC/B,YAAA,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE;AACzC,YAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI;QACpC;IACF;uGA1KW,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAA7B,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,6BAAA,EAAA,0BAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAA7B,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBALzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;;AAET,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,QAAQ,EAAE,mBAAmB;AAC9B,iBAAA;8BAuBK,SAAS,EAAA,CAAA;sBADZ,WAAW;uBAAC,eAAe;gBAOO,OAAO,EAAA,CAAA;sBAAzC,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;gBAeI,UAAU,EAAA,CAAA;sBAA9C,WAAW;uBAAC,kBAAkB;gBAIiB,mBAAmB,EAAA,CAAA;sBAAlE,WAAW;uBAAC,6BAA6B;;;MC7D/B,6BAA6B,CAAA;AAEvB,IAAA,WAAW,GAA4B,MAAM,EAAC,UAAuB,EAAC;AACtE,IAAA,YAAY,GAAyB,MAAM,CAAC,oBAAoB,CAAC;AAEjE,IAAA,cAAc,GAAG,IAAI,OAAO,EAAQ;IAE7C,SAAS,GAAG,CAAC,CAAC;AAEtB;;;;AAIG;AACH,IAAA,IACI,QAAQ,CAAC,KAAa,EAAA,EAAI,IAAI,CAAC,SAAS,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAA,CAAC;IAC3E,IAAI,QAAQ,KAAa,OAAO,IAAI,CAAC,SAAS,CAAA,CAAC;IAE/C,IACI,aAAa,GAAA,EAAK,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAA,CAAC;IAEpF,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC;AACnC,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE;IAChC;IAEA,eAAe,GAAA;AACb,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,mCAAmC,EAAE;QACzD,IAAI,MAAM,EAAE;;;YAGV,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,IAAI,CAC7B,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,EAC9B,MAAM,CAAC,CAAC,IAAK,CAAC,CAAC,MAAsB,EAAE,YAAY,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,CAAC,EACjG,GAAG,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,CACjD,CAAC,SAAS,EAAE;QACf;IACF;IAEQ,mCAAmC,GAAA;AACzC,QAAA,MAAM,QAAQ,GAAG,CAAC,IAAiB,KAAS;YAC1C,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,iBAAiB,EAAE;AACrD,gBAAA,OAAO,IAAI;YACb;AAEA,YAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,gBAAA,OAAO,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC;YACrC;AAEA,YAAA,OAAO,IAAI;AACb,QAAA,CAAC;QAED,OAAO,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;IACjD;uGArDW,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAA7B,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAA7B,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBALzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;;AAET,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,QAAQ,EAAE,mBAAmB;AAC9B,iBAAA;8BAgBK,QAAQ,EAAA,CAAA;sBADX;gBAKG,aAAa,EAAA,CAAA;sBADhB,WAAW;uBAAC,eAAe;;;MCvBjB,oBAAoB,CAAA;IAE/B,SAAS,CAAC,KAAa,EAAE,eAAA,GAA0B,GAAG,EAAE,WAAA,GAAsB,CAAC,EAAE,UAAA,GAA+B,OAAO,EAAA;AACrH,QAAA,IAAI,UAAU,KAAK,OAAO,EAAE;AAC1B,YAAA,MAAM,CAAC,GAAG,KAAK,IAAI,EAAE;YACrB,OAAO,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,GAAG,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,eAAe,CAAC;QAC3F;AAAO,aAAA,IAAI,UAAU,KAAK,MAAM,EAAE;AAChC,YAAA,MAAM,CAAC,GAAG,KAAK,IAAI,EAAE;AACrB,YAAA,OAAO,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,eAAe,CAAC;QACvE;AAEA,QAAA,OAAO,KAAK;IACd;uGAZW,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;qGAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,WAAW;AAClB,iBAAA;;;MCDY,mBAAmB,CAAA;AAE9B,IAAA,SAAS,CAAC,KAAa,EAAE,SAAiB,EAAE,EAAE,iBAA0B,IAAI,EAAA;QAC1E,IAAI,GAAG,GAAG,KAAK;AAEf,QAAA,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,MAAM,EAAE;YAC/D,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC;YAC7B,IAAI,cAAc,EAAE;gBAClB,GAAG,IAAI,KAAK;YACd;QACF;AAEA,QAAA,OAAO,GAAG;IACZ;uGAbW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;qGAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,UAAU;AACjB,iBAAA;;;MCwCY,mBAAmB,CAAA;uGAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,YA1B5B,yBAAyB;YACzB,2BAA2B;YAC3B,gCAAgC;YAChC,6BAA6B;YAC7B,0BAA0B;YAC1B,4BAA4B;YAC5B,8BAA8B;YAC9B,6BAA6B;YAC7B,oBAAoB;YACpB,mBAAmB;AACnB,YAAA,mCAAmC,aAGnC,yBAAyB;YACzB,2BAA2B;YAC3B,mCAAmC;YACnC,6BAA6B;YAC7B,0BAA0B;YAC1B,gCAAgC;YAChC,4BAA4B;YAC5B,8BAA8B;YAC9B,oBAAoB;YACpB,mBAAmB;YACnB,6BAA6B,CAAA,EAAA,CAAA;AAGpB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,YAhB5B,mCAAmC,CAAA,EAAA,CAAA;;2FAgB1B,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBA5B/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,yBAAyB;wBACzB,2BAA2B;wBAC3B,gCAAgC;wBAChC,6BAA6B;wBAC7B,0BAA0B;wBAC1B,4BAA4B;wBAC5B,8BAA8B;wBAC9B,6BAA6B;wBAC7B,oBAAoB;wBACpB,mBAAmB;wBACnB,mCAAmC;AACpC,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,yBAAyB;wBACzB,2BAA2B;wBAC3B,mCAAmC;wBACnC,6BAA6B;wBAC7B,0BAA0B;wBAC1B,gCAAgC;wBAChC,4BAA4B;wBAC5B,8BAA8B;wBAC9B,oBAAoB;wBACpB,mBAAmB;wBACnB,6BAA6B;AAC9B;AACF,iBAAA;;;AC3CD;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"theseam-ui-common-shared.mjs","sources":["../../../projects/ui-common/shared/components/password-input-reveal/password-input-reveal.component.ts","../../../projects/ui-common/shared/directives/auto-focus.directive.ts","../../../projects/ui-common/shared/directives/click-outside.directive.ts","../../../projects/ui-common/shared/directives/disable-control.directive.ts","../../../projects/ui-common/shared/directives/elem-resized.directive.ts","../../../projects/ui-common/shared/directives/hover-class-toggle.directive.ts","../../../projects/ui-common/shared/directives/hover-class.directive.ts","../../../projects/ui-common/shared/directives/ng-select-extra.directive.ts","../../../projects/ui-common/shared/directives/ngx-quill-extra.directive.ts","../../../projects/ui-common/shared/pipes/mask-chars.pipe.ts","../../../projects/ui-common/shared/pipes/truncate.pipe.ts","../../../projects/ui-common/shared/shared.module.ts","../../../projects/ui-common/shared/theseam-ui-common-shared.ts"],"sourcesContent":["import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion'\nimport { Component, Input } from '@angular/core'\n\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome'\nimport { faEye, faEyeSlash } from '@fortawesome/free-regular-svg-icons'\n\n@Component({\n selector: 'seam-password-input-reveal',\n template: `\n <fa-icon [icon]=\"passwordVisible ? faEyeSlash : faEye\" class=\"password-reveal-icon\" (click)=\"revealPassword()\"></fa-icon>\n `,\n styles: [`\n :host {\n display: flex;\n align-items: center;\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n width: 30px;\n transform: translateZ(0);\n z-index: 50;\n }\n\n :host fa-icon {\n opacity: 1;\n color: #bababa;\n /* margin-top: 3px; */ /* Not needed now? */\n cursor: pointer;\n }\n\n :host fa-icon ::ng-deep .svg-inline--fa {\n vertical-align: middle;\n }\n `],\n imports: [\n FontAwesomeModule,\n ],\n})\nexport class TheSeamPasswordInputRevealComponent {\n static ngAcceptInputType_passwordVisible: BooleanInput\n\n readonly faEye = faEye\n readonly faEyeSlash = faEyeSlash\n\n @Input()\n get inputRef(): HTMLInputElement | undefined | null { return this._passwordInput }\n set inputRef(value: HTMLInputElement | undefined | null) {\n this._passwordInput = value\n this.updateRevealState()\n if (this._passwordInput) {\n this._passwordInput.style.paddingRight = '40px'\n this._passwordInput.classList.add('no-native-eye')\n }\n }\n private _passwordInput: HTMLInputElement | undefined | null\n\n @Input()\n get passwordVisible() { return this._passwordVisible }\n set passwordVisible(value: boolean) {\n this._passwordVisible = coerceBooleanProperty(value)\n this.updateRevealState()\n }\n public _passwordVisible = false\n\n public updateRevealState(): void {\n if (this._passwordInput) {\n this._passwordInput.type = this.passwordVisible ? 'text' : 'password'\n }\n }\n\n public revealPassword(): void {\n this.passwordVisible = !this.passwordVisible\n }\n\n}\n","import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion'\nimport { Directive, ElementRef, inject, Input, OnInit } from '@angular/core'\n\nimport { getClosestModal, Modal, ModalRef } from '@theseam/ui-common/modal'\n\n/**\n * Directive that will focus the element when initialized.\n *\n * If the element is inside a modal, it will wait until the modal is opened before focusing.\n *\n * If the element will be initialized multiple times or while a form is being filled out\n * don't use this directive.\n *\n * Usage:\n * ```html\n * <input type=\"text\" seamAutoFocus />\n * ```\n */\n@Directive({\n selector: '[seamAutoFocus]',\n exportAs: 'seamAutoFocus',\n})\nexport class TheSeamAutoFocusDirective implements OnInit {\n static ngAcceptInputType_seamAutoFocus: BooleanInput\n\n private readonly _elementRef = inject(ElementRef<HTMLElement>)\n private readonly _modal = inject(Modal, { optional: true })\n private readonly _modalRef = inject(ModalRef, { optional: true })\n\n private _focus = true\n\n public modalRef: ModalRef<any> | undefined | null = this._modalRef\n\n @Input()\n set seamAutoFocus(condition: boolean) {\n this._focus = coerceBooleanProperty(condition) !== false\n }\n\n ngOnInit() {\n if (!this.modalRef && this._modal) {\n // When this directive is included in a dialog via TemplateRef (rather than being\n // in a Component), the DialogRef isn't available via injection because embedded\n // views cannot be given a custom injector. Instead, we look up the DialogRef by\n // ID. This must occur in `onInit`, as the ID binding for the dialog container won't\n // be resolved at constructor time.\n this.modalRef = getClosestModal(this._elementRef, this._modal.openDialogs)\n }\n\n if (!this.modalRef) {\n if (this._focus) {\n setTimeout(() => { this.focus() })\n }\n } else {\n this.modalRef.afterOpened().subscribe(() => {\n setTimeout(() => { this.focus() })\n })\n }\n }\n\n public focus() {\n this._elementRef.nativeElement.focus()\n }\n}\n","import { Directive, ElementRef, EventEmitter, HostListener, inject, Input, Output } from '@angular/core'\n\n@Directive({\n selector: '[seamClickOutside]',\n exportAs: 'seamClickOutside',\n})\nexport class TheSeamClickOutsideDirective {\n\n private readonly _elementRef = inject(ElementRef<HTMLElement>)\n\n @Input()\n get seamClickOutsideActive(): boolean {\n return this._active\n }\n set seamClickOutsideActive(value: boolean) {\n if (this._active === value) { return }\n\n if (value) {\n // `setTimeout` is used to avoid the click event triggering when the value\n // changes if the value was changed with a click.\n setTimeout(() => { this._active = value })\n } else {\n this._active = value\n }\n }\n private _active = true\n\n @Output() seamClickOutside = new EventEmitter<MouseEvent>()\n\n // NOTE: This should probably be changed from a `HostListener` to allow the\n // subscription to be unsubscribed.\n @HostListener('document:click', ['$event'])\n public onDocumentClick(event: MouseEvent): void {\n if (this._active) {\n const targetElement = event.target as HTMLElement\n // Check if the click was outside the element\n if (targetElement && !this._elementRef.nativeElement.contains(targetElement)) {\n this.seamClickOutside.emit(event)\n }\n }\n }\n\n}\n","import { Directive, inject, Input } from '@angular/core'\nimport { NgControl } from '@angular/forms'\n\n// Source: https://netbasal.com/disabling-form-controls-when-working-with-reactive-forms-in-angular-549dd7b42110\n\n@Directive({\n selector: '[seamDisableControl]',\n exportAs: 'seamDisableControl',\n})\nexport class TheSeamDisableControlDirective {\n\n private readonly _ngControl = inject(NgControl)\n\n @Input() set seamDisableControl(condition: boolean) {\n const action = condition ? 'disable' : 'enable'\n const control = this._ngControl.control\n if (control) {\n control[action]()\n }\n }\n\n}\n","import { AfterViewInit, Directive, ElementRef, EventEmitter, inject, OnDestroy, Output } from '@angular/core'\n\nimport { ResizeSensor } from 'css-element-queries'\n\nexport interface TheSeamElementResizedEvent {\n element: HTMLElement\n size: { width: number, height: number }\n}\n\n@Directive({\n selector: '[seamElemResized]',\n exportAs: 'seamElemResized',\n})\nexport class TheSeamElemResizedDirective implements OnDestroy, AfterViewInit {\n\n private readonly _elementRef = inject(ElementRef<HTMLElement>)\n\n @Output() seamElemResized = new EventEmitter<TheSeamElementResizedEvent>()\n\n sensor?: ResizeSensor\n\n ngAfterViewInit() {\n this.sensor = new ResizeSensor(this._elementRef.nativeElement, event => {\n this.seamElemResized.emit({ element: this._elementRef.nativeElement, size: event })\n })\n }\n\n ngOnDestroy() {\n this.sensor?.detach()\n }\n\n}\n","import { Directive, ElementRef, HostListener, inject, Input } from '@angular/core'\n\ndeclare type _PointerEvent = PointerEvent | PointerEvent\n\nexport interface TheSeamHoverClassToggleRecord {\n default: string\n hover: string\n}\n\n/**\n * Don't use this directive unless there is a reason not to use css `:hover`,\n * because the accuracy of detecting the hover is not as good. If an element is\n * moved while the mouse is idle the hover class will remain until the mouse\n * enters and leaves again.\n *\n * I have tried multiple ways of detecting the mouse no longer hovering, but all\n * have introduced a slight performance issue that just builds for each element\n * containing this directive.\n */\n@Directive({\n selector: '[seamHoverClassToggle]',\n exportAs: 'seamHoverClassToggle',\n})\nexport class TheSeamHoverClassToggleDirective {\n\n private readonly _elementRef = inject(ElementRef<HTMLElement>)\n\n private _hovered = false\n private _defaultClasses: string[] = []\n private _hoverClasses: string[] = []\n\n @HostListener('mouseover', ['$event']) onMouseOver($event: MouseEvent) {\n this._setHovered(true)\n }\n\n @HostListener('mouseout', ['$event']) onMouseOut($event: MouseEvent) {\n this._setHovered(false)\n }\n\n @HostListener('pointerover', ['$event']) onPointerOver($event: _PointerEvent) {\n this._setHovered(true)\n }\n\n @HostListener('pointerout', ['$event']) onPointerOut($event: _PointerEvent) {\n this._setHovered(false)\n }\n\n @Input()\n set seamHoverClassToggle(value: TheSeamHoverClassToggleRecord) {\n if (value) {\n if (value.default) {\n this._defaultClasses = value.default.split(' ').filter(c => c.length > 0)\n }\n if (value.hover) {\n this._hoverClasses = value.hover.split(' ').filter(c => c.length > 0)\n }\n }\n\n this._hoverClasses = this._hoverClasses.filter(v => !this._defaultClasses.find(_v => _v === v))\n\n this._update()\n }\n\n private _update(): void {\n for (const c of this._defaultClasses) {\n this._hovered ? this._removeClass(c) : this._addClass(c)\n }\n for (const c of this._hoverClasses) {\n this._hovered ? this._addClass(c) : this._removeClass(c)\n }\n }\n\n private _setHovered(hovered: boolean) {\n const doUpdate = this._hovered !== hovered\n this._hovered = hovered\n if (doUpdate) {\n this._update()\n }\n }\n\n private _addClass(c: string): void {\n this._elementRef.nativeElement.classList.add(c)\n }\n\n public _removeClass(c: string): void {\n this._elementRef.nativeElement.classList.remove(c)\n }\n\n}\n","import { Directive, ElementRef, HostListener, inject, Input } from '@angular/core'\n\ndeclare type _PointerEvent = PointerEvent | PointerEvent\n\n/**\n * Changes a css class on mouse pointer hover.\n *\n * NOTE: Only use this if css `:hover` can't be used, because css is more\n * accurate and better performing.\n *\n * NOTE: Don't use this directive unless there is a reason not to use css\n * `:hover`, because the accuracy of detecting the hover is not as good. If an\n * element is moved while the mouse is idle the hover class will remain until\n * the mouse enters and leaves again.\n *\n * NOTE: I have tried multiple ways of detecting the mouse no longer hovering,\n * but all have introduced a slight performance issue that just builds for each\n * element containing this directive.\n */\n@Directive({\n selector: '[seamHoverClass]',\n exportAs: 'seamHoverClass',\n})\nexport class TheSeamHoverClassDirective {\n\n private readonly _elementRef = inject(ElementRef<HTMLElement>)\n\n private _hovered = false\n private _classes: string[] = []\n\n @HostListener('mouseover', ['$event']) onMouseOver($event: MouseEvent) {\n this._setHovered(true)\n }\n\n @HostListener('mouseout', ['$event']) onMouseOut($event: MouseEvent) {\n this._setHovered(false)\n }\n\n @HostListener('pointerover', ['$event']) onPointerOver($event: _PointerEvent) {\n this._setHovered(true)\n }\n\n @HostListener('pointerout', ['$event']) onPointerOut($event: _PointerEvent) {\n this._setHovered(false)\n }\n\n @Input()\n set seamHoverClass(classList: string) {\n const newClasses = classList.split(' ').filter(c => c.length > 0)\n for (const c of this._classes) {\n if (newClasses.indexOf(c) !== 0) {\n this._removeClass(c)\n }\n }\n this._classes = newClasses\n this._update()\n }\n\n private _update(): void {\n for (const c of this._classes) {\n this._hovered ? this._addClass(c) : this._removeClass(c)\n }\n }\n\n private _setHovered(hovered: boolean) {\n const doUpdate = this._hovered !== hovered\n this._hovered = hovered\n if (doUpdate) {\n this._update()\n }\n }\n\n private _addClass(c: string): void {\n this._elementRef.nativeElement.classList.add(c)\n }\n\n public _removeClass(c: string): void {\n this._elementRef.nativeElement.classList.remove(c)\n }\n\n}\n","import {\n AfterViewChecked,\n Directive,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n inject,\n NgZone,\n OnDestroy,\n OnInit,\n} from '@angular/core'\nimport { NgControl } from '@angular/forms'\nimport { Subject, Subscription } from 'rxjs'\nimport { filter, takeUntil } from 'rxjs/operators'\n\nimport { NgOption, NgSelectComponent } from '@ng-select/ng-select'\n// import { ResizeSensor } from 'css-element-queries'\n\n// import { TheSeamElementResizedEvent } from './elem-resized.directive'\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'ng-select',\n exportAs: 'seamNgSelectExtra',\n})\nexport class TheSeamNgSelectExtraDirective implements OnInit, AfterViewChecked, OnDestroy {\n\n private readonly _elementRef = inject(ElementRef<HTMLElement>)\n private readonly _ngSelect = inject(NgSelectComponent)\n private readonly _ngControl = inject<NgControl | null>(NgControl, { optional: true, self: true })\n\n /**\n * Set the tab index to `-1` to allow the root element of the ng-select\n * component to receive `focus` event from javascript, but not get focused by\n * keyboard navigation.\n */\n @HostBinding('attr.tabIndex')\n get _tabIndex() { return this._ngSelect.disabled() ? undefined : -1 }\n\n /**\n * Listening for focus event on root of component to allow javascript\n * `focus()` function to trigger the components focus.\n */\n @HostListener('focus', ['$event']) onFocus($event: FocusEvent) {\n const target = $event.target as HTMLElement\n if (target === this._elementRef.nativeElement && !this._ngSelect.disabled()) {\n this._ngSelect.focus()\n }\n }\n\n @HostBinding('class.is-invalid') get _isInvalid() {\n return this._ngControl ? this._ngControl.invalid && (this._ngControl.dirty || this._ngControl.touched) : false\n }\n\n @HostBinding('class.ng-empty-string-value') get _isEmptyStringValue() {\n return this._ngControl ? this._ngControl.value === '' : false\n }\n\n ngOnInit() {\n // this._ngSelect.focusEvent\n // .subscribe(v => this._enableKeyPressWorkaround())\n\n // this._ngSelect.blurEvent\n // .subscribe(v => this._disableKeyPressWorkaround())\n\n window.addEventListener('scroll', this._onScroll, true)\n\n // When the input is allowed to change its height the position doesn't update itself.\n // this._resizedEvent.pipe(\n // auditTime(30)\n // ).subscribe(event => {\n // if (this._elementRef && this._elementRef.nativeElement) {\n // if (this._elementRef.nativeElement.classList.contains('ng-select-value-grow-h')) {\n // if (this._ngSelect.isOpen && this._ngSelect.dropdownPanel) {\n // this._ngSelect.dropdownPanel.updateDropdownPosition()\n // }\n // } else {\n // this._elementRef.nativeElement.classList.remove('ng-select-value-grow-h')\n // }\n // }\n // })\n\n // this._patch_ngSelect_open()\n }\n\n ngOnDestroy() {\n // this._resizeSensor?.detach()\n\n window.removeEventListener('scroll', this._onScroll, true)\n\n // this._ngUnsubscribe.next(undefined)\n // this._ngUnsubscribe.complete()\n }\n\n ngAfterViewChecked() {\n // const dropPanel = this._ngSelect.dropdownPanel() as any\n // if (dropPanel) {\n // if (this._checkMarked) {\n // if (dropPanel && this._markedItem !== null) {\n // if (this._markedItem.index !== dropPanel.markedItem.index) {\n // dropPanel.scrollTo(dropPanel.markedItem)\n // }\n // }\n // }\n // }\n // this._checkMarked = false\n\n // this._resizeSensor = new ResizeSensor(this._elementRef.nativeElement, event => {\n // this._resizedEvent.emit({ element: this._elementRef.nativeElement, size: event })\n // })\n }\n\n private _onScroll = (event: any) => {\n if (this._ngSelect && this._ngSelect.isOpen()) {\n const isScrollingInScrollHost = (event.target.className as string).indexOf('ng-dropdown-panel-items') !== -1\n const isInSensor = (event.target.className as string).indexOf('resize-sensor-shrink') !== -1 ||\n (event.target.className as string).indexOf('os-resize-observer-host') !== -1\n if (isScrollingInScrollHost || isInSensor) { return }\n this._ngSelect.close()\n }\n }\n\n /**\n * Temp fix for: https://github.com/ng-select/ng-select/issues/1122\n */\n // private _patch_ngSelect_open() {\n // const original = this._ngSelect.open\n // const _self = this\n // this._ngSelect.open = function() {\n // original.apply(this, arguments)\n // _self._patch_ngSelectDropdownPanel_updateDropdownPosition()\n // }\n // }\n\n /** Should ONLY be called by `_patch_ngSelect_open`. */\n // private _patch_ngSelectDropdownPanel_updateDropdownPosition() {\n // if (!this._ngSelect.dropdownPanel) { return }\n // const drop: any = this._ngSelect.dropdownPanel\n // // Only needed once, to update the position before the timeout in\n // // `updateDropdownPosition()`. So, using this variable to check if I already called\n // // `_updateAppendedDropdownPosition()`.\n // if (!drop.__libPatched) {\n // drop.__libPatched = 'patched'\n // const original = drop.updateDropdownPosition\n // const _self = this\n // drop.updateDropdownPosition = function() {\n // original.apply(this, arguments)\n // if (!!_self._ngSelect.appendTo) {\n // drop._updateAppendedDropdownPosition()\n // }\n // }\n // }\n // }\n\n // private _enableKeyPressWorkaround() {\n // if (this._keyPressWorkaroundSub) { return }\n // const _ngSelect = this._ngSelect as any\n\n // this._keyPressWorkaroundSub = _ngSelect._keyPress$\n // .pipe(takeUntil(this._ngUnsubscribe))\n // .pipe(filter(() => !this._ngSelect.searchable()))\n // .subscribe(() => {\n // this._ngZone.runOutsideAngular(() => {\n // window.requestAnimationFrame(() => {\n // if (this._ngSelect.dropdownPanel()) {\n // this._markedItem = this._ngSelect.dropdownPanel().markedItem()\n // }\n // this._checkMarked = true\n // })\n // })\n // })\n // }\n\n // private _disableKeyPressWorkaround() {\n // if (this._keyPressWorkaroundSub) {\n // this._keyPressWorkaroundSub.unsubscribe()\n // this._keyPressWorkaroundSub = null\n // }\n // }\n\n}\n","import { coerceNumberProperty } from '@angular/cdk/coercion'\nimport { AfterViewInit, Directive, ElementRef, HostBinding, inject, Input, OnDestroy } from '@angular/core'\nimport { fromEvent, Subject } from 'rxjs'\nimport { filter, takeUntil, tap } from 'rxjs/operators'\n\nimport { QuillEditorComponent } from 'ngx-quill'\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: 'quill-editor',\n exportAs: 'seamNgxQuillExtra',\n})\nexport class TheSeamNgxQuillExtraDirective implements OnDestroy, AfterViewInit {\n\n private readonly _elementRef: ElementRef<HTMLElement> = inject(ElementRef<HTMLElement>)\n private readonly _quillEditor: QuillEditorComponent = inject(QuillEditorComponent)\n\n private readonly _ngUnsubscribe = new Subject<void>()\n\n private _tabIndex = -1\n\n /**\n * Set the tab index to `-1` to allow the root element of the\n * component to receive `focus` event from javascript, but not get focused by\n * keyboard navigation.\n */\n @Input()\n set tabIndex(value: number) { this._tabIndex = coerceNumberProperty(value) }\n get tabIndex(): number { return this._tabIndex }\n\n @HostBinding('attr.tabindex')\n get _attrTabIndex() { return this._quillEditor.disabled ? -1 : (this.tabIndex || 0) }\n\n ngOnDestroy() {\n this._ngUnsubscribe.next(undefined)\n this._ngUnsubscribe.complete()\n }\n\n ngAfterViewInit() {\n const parent = this._getParentElementForLabelFocusIssue()\n if (parent) {\n // NOTE: This is a hack to avoid an issue letting a label with \"for\"\n // attribute focus the control.\n fromEvent(parent, 'click').pipe(\n takeUntil(this._ngUnsubscribe),\n filter(e => (e.target as HTMLElement)?.getAttribute('for') === this._elementRef.nativeElement.id),\n tap(() => this._quillEditor.quillEditor.focus())\n ).subscribe()\n }\n }\n\n private _getParentElementForLabelFocusIssue(): HTMLElement | undefined {\n const findElem = (elem: HTMLElement): any => {\n if (elem.nodeName.toLowerCase() === 'seam-form-field') {\n return elem\n }\n\n if (elem.parentElement) {\n return findElem(elem.parentElement)\n }\n\n return elem\n }\n\n return findElem(this._elementRef.nativeElement)\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core'\n\nimport { padEnd, padStart } from '@theseam/ui-common/utils'\n\n@Pipe({\n name: 'maskChars',\n})\nexport class TheSeamMaskCharsPipe implements PipeTransform {\n\n transform(value: string, replacementChar: string = '*', ignoreCount: number = 0, ignoreFrom: 'left' | 'right' = 'right'): string {\n if (ignoreFrom === 'right') {\n const s = value || ''\n return padStart(s.substring(s.length - ignoreCount, s.length), s.length, replacementChar)\n } else if (ignoreFrom === 'left') {\n const s = value || ''\n return padEnd(s.substring(0, ignoreCount), s.length, replacementChar)\n }\n\n return value\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core'\n\n@Pipe({\n name: 'truncate',\n})\nexport class TheSeamTruncatePipe implements PipeTransform {\n\n transform(value: string, length: number = 30, appendEllipsis: boolean = true): string {\n let val = value\n\n if (value && typeof value === 'string' && value.length > length) {\n val = value.substr(0, length)\n if (appendEllipsis) {\n val += '...'\n }\n }\n\n return val\n }\n\n}\n","import { NgModule } from '@angular/core'\n\nimport { TheSeamAutoFocusDirective } from './directives/auto-focus.directive'\nimport { TheSeamClickOutsideDirective } from './directives/click-outside.directive'\nimport { TheSeamDisableControlDirective } from './directives/disable-control.directive'\nimport { TheSeamElemResizedDirective } from './directives/elem-resized.directive'\nimport { TheSeamHoverClassToggleDirective } from './directives/hover-class-toggle.directive'\nimport { TheSeamHoverClassDirective } from './directives/hover-class.directive'\nimport { TheSeamNgSelectExtraDirective } from './directives/ng-select-extra.directive'\nimport { TheSeamNgxQuillExtraDirective } from './directives/ngx-quill-extra.directive'\n\nimport { TheSeamMaskCharsPipe } from './pipes/mask-chars.pipe'\nimport { TheSeamTruncatePipe } from './pipes/truncate.pipe'\n\nimport { TheSeamPasswordInputRevealComponent } from './components/password-input-reveal/password-input-reveal.component'\n\n@NgModule({\n imports: [\n TheSeamAutoFocusDirective,\n TheSeamElemResizedDirective,\n TheSeamHoverClassToggleDirective,\n TheSeamNgSelectExtraDirective,\n TheSeamHoverClassDirective,\n TheSeamClickOutsideDirective,\n TheSeamDisableControlDirective,\n TheSeamNgxQuillExtraDirective,\n TheSeamMaskCharsPipe,\n TheSeamTruncatePipe,\n TheSeamPasswordInputRevealComponent,\n ],\n exports: [\n TheSeamAutoFocusDirective,\n TheSeamElemResizedDirective,\n TheSeamPasswordInputRevealComponent,\n TheSeamNgSelectExtraDirective,\n TheSeamHoverClassDirective,\n TheSeamHoverClassToggleDirective,\n TheSeamClickOutsideDirective,\n TheSeamDisableControlDirective,\n TheSeamMaskCharsPipe,\n TheSeamTruncatePipe,\n TheSeamNgxQuillExtraDirective,\n ]\n})\nexport class TheSeamSharedModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|