ngx-kit 2.0.0 → 2.0.1
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.
|
@@ -822,7 +822,6 @@ class OverlayService {
|
|
|
822
822
|
style.maxHeight = '100vh';
|
|
823
823
|
style.overflow = 'visible';
|
|
824
824
|
style.visibility = 'hidden';
|
|
825
|
-
style.animation = 'menu-enter 120ms cubic-bezier(0, 0, 0.2, 1)';
|
|
826
825
|
// شمارندهی صعودی مستقل از تعداد فعلی دیالوگهای باز؛ در نسخهی قبلی
|
|
827
826
|
// با استفاده از openDialogs.size محاسبه میشد که بعد از بستن دیالوگها
|
|
828
827
|
// میتونست باعث تکرار zIndex بین دو دیالوگ بشه.
|
|
@@ -897,7 +896,6 @@ class OverlayService {
|
|
|
897
896
|
const lastDialog = this.getLastDialog();
|
|
898
897
|
if (!lastDialog || !lastDialog.element.open)
|
|
899
898
|
return;
|
|
900
|
-
event.preventDefault();
|
|
901
899
|
// کلیک باید دقیقاً روی خودِ دیالوگ (بکدراپ) باشه، نه محتوای داخلش
|
|
902
900
|
if (event.target !== lastDialog.element)
|
|
903
901
|
return;
|
|
@@ -916,6 +914,7 @@ class OverlayService {
|
|
|
916
914
|
event.clientX <= anchRect.right;
|
|
917
915
|
if (!clickWasInsideDialog) {
|
|
918
916
|
if (event.type == 'contextmenu' && lastDialog.point && clickWasInsideAnchor) {
|
|
917
|
+
event.preventDefault();
|
|
919
918
|
lastDialog.point = {
|
|
920
919
|
x: event.clientX,
|
|
921
920
|
y: event.clientY,
|
|
@@ -953,8 +952,8 @@ class OverlayService {
|
|
|
953
952
|
anchorRect = anchor.getBoundingClientRect();
|
|
954
953
|
}
|
|
955
954
|
const dialogRect = dialog.getBoundingClientRect();
|
|
956
|
-
const vw = window.innerWidth;
|
|
957
|
-
const vh = window.innerHeight;
|
|
955
|
+
const vw = Math.min(document.body.clientWidth, window.innerWidth);
|
|
956
|
+
const vh = Math.min(document.body.clientHeight, window.innerHeight);
|
|
958
957
|
const isRTL = getComputedStyle(this.doc.documentElement).direction === 'rtl';
|
|
959
958
|
let top = 0;
|
|
960
959
|
let left = 'auto';
|
|
@@ -1003,6 +1002,7 @@ class OverlayService {
|
|
|
1003
1002
|
dialog.style.transformOrigin = verticalPos == 'above' ? 'left top' : 'left bottom';
|
|
1004
1003
|
// dialog.style.transform = 'none';
|
|
1005
1004
|
dialog.style.visibility = 'visible';
|
|
1005
|
+
dialog.style.animation = 'menu-enter 120ms cubic-bezier(0, 0, 0.2, 1)';
|
|
1006
1006
|
}
|
|
1007
1007
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: OverlayService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1008
1008
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: OverlayService, providedIn: 'root' });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-kit-shared.mjs","sources":["../../../projects/libs/shared/utils/get-offset-position.ts","../../../projects/libs/shared/range-slider/range-slider.component.ts","../../../projects/libs/shared/range-slider/range-slider.component.html","../../../projects/libs/shared/saturation/saturation.component.ts","../../../projects/libs/shared/saturation/saturation.component.html","../../../projects/libs/shared/slider/slider.component.ts","../../../projects/libs/shared/slider/slider.component.html","../../../projects/libs/shared/utils/window.ts","../../../projects/libs/shared/utils/string.ts","../../../projects/libs/shared/services/browser.service.ts","../../../projects/libs/shared/overlay/overlay-ref.ts","../../../projects/libs/shared/overlay/overlay.service.ts","../../../projects/libs/shared/ngx-kit-shared.ts"],"sourcesContent":["export function getOffsetPosition(\r\n evt: MouseEvent | TouchEvent,\r\n parent: HTMLElement\r\n) {\r\n let position = {\r\n x: 0,\r\n y: 0,\r\n };\r\n\r\n if (evt instanceof MouseEvent) {\r\n position.x = evt.pageX;\r\n position.y = evt.pageY;\r\n } else if (evt.touches && evt.touches.length > 0) {\r\n position.x = evt.touches[0].pageX;\r\n position.y = evt.touches[0].pageY;\r\n }\r\n\r\n // Adjust for the parent's offset\r\n let parentRect = parent.getBoundingClientRect();\r\n position.x -= parentRect.left + window.scrollX;\r\n position.y -= parentRect.top + window.scrollY;\r\n\r\n return position;\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n Output,\r\n ViewChild,\r\n forwardRef,\r\n type OnInit,\r\n} from '@angular/core';\r\nimport { getOffsetPosition } from '../utils/get-offset-position';\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n NG_VALIDATORS,\r\n NG_VALUE_ACCESSOR,\r\n ValidationErrors,\r\n Validator,\r\n} from '@angular/forms';\r\n\r\nexport interface IValue {\r\n id?: string;\r\n value: number;\r\n}\r\nexport class ValueModel {\r\n id!: string;\r\n value!: number;\r\n x?: number;\r\n thumb?: HTMLElement;\r\n color?: string;\r\n}\r\n\r\n@Component({\r\n selector: 'range-slider',\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [CommonModule],\r\n templateUrl: './range-slider.component.html',\r\n styleUrls: ['./range-slider.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => RangeSliderComponent),\r\n multi: true,\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => RangeSliderComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class RangeSliderComponent implements OnInit, ControlValueAccessor, Validator {\r\n /**\r\n * The step value for the slider\r\n */\r\n @Input() step = 1;\r\n /**\r\n * The minimum value for the slider\r\n */\r\n @Input() min = 0;\r\n /**\r\n * The maximum value for the slider\r\n */\r\n @Input() max = 100;\r\n /**\r\n * The background color of the slider\r\n * - can use css like `background: linear-gradient(to right, red, blue);`\r\n * - or a solid color like `background: red;`\r\n */\r\n @Input() background?: string;\r\n /**\r\n * If true, the background will be transparent\r\n */\r\n @Input() isBgTransparent = false;\r\n /**\r\n * If true, clicking on the slider will add a new range at that position\r\n */\r\n @Input() addNewRangeOnClick = false;\r\n\r\n /**\r\n * The current value of the slider\r\n */\r\n @Output() change = new EventEmitter<IValue[]>();\r\n @Input() selectedIndex?: number;\r\n @Output() selectedIndexChange = new EventEmitter<number>();\r\n\r\n private isDragging = false;\r\n\r\n @ViewChild('slider', { static: true }) slider!: ElementRef<HTMLDivElement>;\r\n @ViewChild('thumb', { static: false }) thumb?: ElementRef<HTMLDivElement>;\r\n\r\n values: ValueModel[] = [];\r\n isDisabled = false;\r\n protected _onChange = (value: IValue[]) => {};\r\n protected _onTouched = () => {};\r\n protected _validatorOnChange = () => {};\r\n private sliderRect?: DOMRect;\r\n private thumbRect?: DOMRect;\r\n\r\n constructor(private changeDetectorRef: ChangeDetectorRef) {}\r\n ngOnInit(): void {}\r\n\r\n private generateId(): string {\r\n let id = 'ngx-thumb-' + Math.random().toString(36).substring(2, 9);\r\n if (this.values.findIndex((x) => x.id == id) >= 0) {\r\n return this.generateId();\r\n }\r\n return id;\r\n }\r\n\r\n writeValue(items?: IValue[]): void {\r\n this.values = [];\r\n if (!items || !Array.isArray(items)) {\r\n items = [];\r\n }\r\n if (items.length === 0) {\r\n items.push({ id: this.generateId(), value: this.min });\r\n }\r\n for (let val of items) {\r\n if (typeof val.value !== 'number' || isNaN(val.value)) {\r\n throw new Error('RangeSliderComponent: value must be an array of numbers');\r\n }\r\n let newVal = +val.value;\r\n if (newVal < +this.min) newVal = +this.min;\r\n else if (newVal > +this.max) newVal = +this.max;\r\n this.values.push({\r\n ...val,\r\n id: val.id ?? this.generateId(),\r\n value: newVal,\r\n });\r\n }\r\n this.updateAllThumbPositions();\r\n }\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n return null; // TODO: return errors if any;\r\n }\r\n registerOnValidatorChange?(fn: () => void): void {\r\n this._validatorOnChange = fn;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this._onChange = fn;\r\n }\r\n registerOnTouched(fn: any): void {\r\n this._onTouched = fn;\r\n }\r\n setDisabledState?(disabled: boolean): void {\r\n this.isDisabled = disabled;\r\n }\r\n private updateRects() {\r\n this.sliderRect = this.slider.nativeElement.getBoundingClientRect();\r\n if (this.thumb) {\r\n this.thumbRect = this.thumb.nativeElement.getBoundingClientRect();\r\n }\r\n }\r\n @HostListener('document:mousemove', ['$event'])\r\n @HostListener('document:touchmove', ['$event'])\r\n onDrag(ev: MouseEvent | TouchEvent) {\r\n if (!this.isDragging) return;\r\n this.updateThumbPosition(ev);\r\n }\r\n\r\n @HostListener('window:resize')\r\n onResize() {\r\n this.writeValue(this.values);\r\n }\r\n dragStart(ev: MouseEvent | TouchEvent, index: number) {\r\n ev.stopPropagation();\r\n ev.preventDefault();\r\n this.isDragging = true;\r\n this.selectedIndex = index;\r\n this.updateRects();\r\n this.updateThumbPosition(ev);\r\n this.selectedIndexChange.emit(this.selectedIndex);\r\n }\r\n\r\n addnewRangeOnSliderClick(event: MouseEvent | TouchEvent) {\r\n if (!this.addNewRangeOnClick) return;\r\n const position = getOffsetPosition(event, this.slider.nativeElement);\r\n const newValue = this.min + (position.x / this.sliderRect!.width) * (this.max - this.min);\r\n // must be add with order by position\r\n const indexByOrderValue = this.values.findIndex((item) => item.value > newValue);\r\n const insertIndex = indexByOrderValue >= 0 ? indexByOrderValue : this.values.length;\r\n this.values.splice(insertIndex, 0, {\r\n id: this.generateId(),\r\n value: newValue,\r\n });\r\n this.dragStart(event, insertIndex);\r\n // this.updateAllThumbPositions();\r\n // this.valueChanged();\r\n }\r\n\r\n private updateThumbPosition(ev: MouseEvent | TouchEvent) {\r\n if (!this.isDragging || this.selectedIndex == undefined) return;\r\n if (!this.sliderRect || !this.thumbRect) this.updateRects();\r\n let position = getOffsetPosition(ev, this.slider.nativeElement);\r\n let thumbRec = this.thumbRect!;\r\n position.x -= thumbRec.width / 2;\r\n let sliderRec = this.sliderRect!;\r\n const thumb = this.values[this.selectedIndex];\r\n if (position.x < 0) {\r\n thumb.x = 0;\r\n } else if (position.x > sliderRec.width - thumbRec.width) {\r\n thumb.x = sliderRec.width - thumbRec.width;\r\n } else {\r\n thumb.x = position.x;\r\n }\r\n this.setValueByPosition(thumb, thumbRec, sliderRec);\r\n }\r\n\r\n updateAllThumbPositions() {\r\n // wait to add thumbs\r\n setTimeout(() => {\r\n this.updateRects();\r\n const sliderRec = this.sliderRect!;\r\n const thumbRec = this.thumbRect!;\r\n for (let item of this.values) {\r\n item.x = ((item.value - this.min) * (sliderRec.width - thumbRec.width)) / (this.max - this.min);\r\n }\r\n this.changeDetectorRef.detectChanges();\r\n });\r\n }\r\n setValueByPosition(thumb: ValueModel, thumbRec: DOMRect, sliderRec: DOMRect) {\r\n const percentage = (thumb.x ?? 0) / (sliderRec.width - thumbRec.width);\r\n let newValue = this.min + percentage * (this.max - this.min);\r\n const stepDecimalPlaces = (this.step.toString().split('.')[1] || '').length;\r\n newValue = parseFloat((Math.round(newValue / this.step) * this.step).toFixed(stepDecimalPlaces));\r\n let value = Math.min(Math.max(newValue, this.min), this.max);\r\n if (thumb.value !== value) {\r\n thumb.value = value;\r\n this.valueChanged();\r\n }\r\n }\r\n\r\n @HostListener('document:mouseup', ['$event'])\r\n @HostListener('document:touchend', ['$event'])\r\n onDragEnd(ev: MouseEvent | TouchEvent) {\r\n this.isDragging = false;\r\n // this.selectedIndex = undefined;\r\n }\r\n\r\n valueChanged() {\r\n const v = this.values; // this.values.map(({ x, thumb, ...rest }) => ({ ...rest }));\r\n this._onChange(v);\r\n this.change.emit(v);\r\n }\r\n}\r\n","<div class=\"slider-container\">\r\n <ng-content></ng-content>\r\n <div\r\n #slider\r\n class=\"slider\"\r\n [class.add-range-cursor]=\"addNewRangeOnClick\"\r\n [ngStyle]=\"{ '--ngx-slider-bg': background }\"\r\n [class.bg-transparent]=\"isBgTransparent\"\r\n (mousedown)=\"addnewRangeOnSliderClick($event)\"\r\n (touchstart)=\"addnewRangeOnSliderClick($event)\">\r\n @for (item of values; track $index; let i = $index) {\r\n <div\r\n class=\"thumb\"\r\n [class.is-active]=\"selectedIndex == i\"\r\n #thumb\r\n [style.left.px]=\"item.x\"\r\n [style.background]=\"item.color\"\r\n [title]=\"item.value\"\r\n (mousedown)=\"dragStart($event, i)\"\r\n (touchstart)=\"dragStart($event, i)\"></div>\r\n }\r\n </div>\r\n</div>\r\n\r\n<!-- {{ selectedIndex }}\r\n<pre dir=\"ltr\" style=\"text-align: left\">{{ values | json }}</pre> -->\r\n\r\n","\r\nimport { Component, ElementRef, EventEmitter, HostListener, Input, Output, ViewChild, forwardRef } from '@angular/core';\r\nimport { getOffsetPosition } from '../utils/get-offset-position';\r\nimport {\r\n NG_VALUE_ACCESSOR,\r\n ControlValueAccessor,\r\n FormControl,\r\n AbstractControl,\r\n ValidationErrors,\r\n} from '@angular/forms';\r\nimport { IPosition } from '../contracts/IPosition';\r\n\r\n@Component({\r\n selector: 'saturation',\r\n standalone: true,\r\n imports: [],\r\n templateUrl: './saturation.component.html',\r\n styleUrl: './saturation.component.scss',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SaturationComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class SaturationComponent implements ControlValueAccessor {\r\n @Input() width?: number;\r\n @Input() height?: number;\r\n @Input() color = 'red';\r\n @Input() step = 1;\r\n @Input() min: IPosition = { x: 0, y: 0 };\r\n @Input() max = { x: 100, y: 100 };\r\n @Output() change = new EventEmitter<IPosition>();\r\n\r\n isDragging = false;\r\n @ViewChild('saturation', { static: true }) saturation!: ElementRef<HTMLDivElement>;\r\n @ViewChild('thumb', { static: true }) thumb!: ElementRef<HTMLDivElement>;\r\n x = 0;\r\n y = 0;\r\n myControl = new FormControl<IPosition | null>(null);\r\n isDisabled = false;\r\n protected _onChange = (value: any) => {};\r\n protected _onTouched = () => {};\r\n protected _validatorOnChange = () => {};\r\n\r\n private saturationRect?: DOMRect;\r\n private thumbRect?: DOMRect;\r\n\r\n constructor() {}\r\n\r\n private updateRects() {\r\n this.saturationRect = this.saturation.nativeElement.getBoundingClientRect();\r\n this.thumbRect = this.thumb.nativeElement.getBoundingClientRect();\r\n }\r\n\r\n writeValue(val?: IPosition | null): void {\r\n if (!val) val = { x: 0, y: 0 };\r\n let value: IPosition = val;\r\n this.myControl.setValue(value, { emitEvent: false });\r\n this.updateRects();\r\n const saturationRec = this.saturationRect!;\r\n const thumbRec = this.thumbRect!;\r\n this.x = ((value.x - this.min.x) * (saturationRec.width - thumbRec.width / 2)) / (this.max.x - this.min.x);\r\n this.y = ((value.y - this.min.y) * (saturationRec.height - thumbRec.height / 2)) / (this.max.y - this.min.y);\r\n if (val !== value) {\r\n this.valueChanged(value);\r\n }\r\n }\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n return this.myControl.errors;\r\n }\r\n registerOnValidatorChange?(fn: () => void): void {\r\n this._validatorOnChange = fn;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this._onChange = fn;\r\n }\r\n registerOnTouched(fn: any): void {\r\n this._onTouched = fn;\r\n }\r\n setDisabledState?(disabled: boolean): void {\r\n this.isDisabled = disabled;\r\n if (disabled) this.myControl.disable();\r\n else this.myControl.enable();\r\n }\r\n\r\n dragStart(ev: MouseEvent | TouchEvent) {\r\n ev.stopPropagation();\r\n ev.preventDefault();\r\n this.isDragging = true;\r\n this.updateRects();\r\n this.updatePosition(ev);\r\n }\r\n\r\n @HostListener('window:resize')\r\n onResize() {\r\n this.writeValue(this.myControl.value);\r\n }\r\n\r\n @HostListener('document:mousemove', ['$event'])\r\n @HostListener('document:touchmove', ['$event'])\r\n onDrag(ev: MouseEvent | TouchEvent) {\r\n if (!this.isDragging) return;\r\n this.updatePosition(ev);\r\n }\r\n\r\n private updatePosition(ev: MouseEvent | TouchEvent) {\r\n if (!this.isDragging) return;\r\n if (!this.saturationRect || !this.thumbRect) this.updateRects();\r\n let position = getOffsetPosition(ev, this.saturation.nativeElement);\r\n let thumbRec = this.thumbRect!;\r\n let saturationRec = this.saturationRect!;\r\n if (position.x < 0) {\r\n this.x = 0;\r\n } else if (position.x > saturationRec.width - (thumbRec.width / 2 - 3)) {\r\n this.x = saturationRec.width - (thumbRec.width / 2 - 3);\r\n } else {\r\n this.x = position.x;\r\n }\r\n // this.x = this.x - thumbRec.width / 2;\r\n\r\n if (position.y < 0) {\r\n this.y = 0;\r\n } else if (position.y > saturationRec.height - (thumbRec.height / 2 - 3)) {\r\n this.y = saturationRec.height - (thumbRec.height / 2 - 3);\r\n } else {\r\n this.y = position.y;\r\n }\r\n // this.y = this.y - thumbRec.height / 2;\r\n this.setValueByPosition(thumbRec, saturationRec);\r\n }\r\n\r\n @HostListener('document:mouseup', ['$event'])\r\n @HostListener('document:touchend', ['$event'])\r\n onDragEnd(ev: MouseEvent | TouchEvent) {\r\n this.isDragging = false;\r\n }\r\n\r\n setValueByPosition(thumbRec: DOMRect, saturationRec: DOMRect) {\r\n const percentageX = this.x / (saturationRec.width - thumbRec.width);\r\n let newValueX = this.min.x + percentageX * (this.max.x - this.min.x);\r\n newValueX = Math.round(newValueX / this.step) * this.step;\r\n let valueX = Math.min(Math.max(newValueX, this.min.x), this.max.x);\r\n //-----------------------------\r\n const percentageY = this.y / (saturationRec.height - thumbRec.height);\r\n let newValueY = this.min.y + percentageY * (this.max.y - this.min.y);\r\n newValueY = Math.round(newValueY / this.step) * this.step;\r\n let valueY = Math.min(Math.max(newValueY, this.min.y), this.max.y);\r\n const newValue = { x: valueX, y: valueY };\r\n if (!this.myControl.value || this.myControl.value.x !== valueX || this.myControl.value.y !== valueY) {\r\n this.valueChanged(newValue);\r\n }\r\n }\r\n\r\n valueChanged(value: IPosition) {\r\n this.myControl.setValue(value, { emitEvent: false });\r\n this._onChange(value);\r\n this.change.emit(value);\r\n }\r\n}\r\n","<div\r\n class=\"saturation-container\"\r\n [style.width.px]=\"width\"\r\n [style.height.px]=\"height\"\r\n (mousedown)=\"dragStart($event)\"\r\n (touchstart)=\"dragStart($event)\">\r\n <div class=\"saturation\" #saturation>\r\n <div class=\"s-bg\" [style.background]=\"color\"></div>\r\n <div class=\"s-white\"></div>\r\n <div class=\"s-black\"></div>\r\n </div>\r\n <div class=\"thumb\" #thumb [style.left.px]=\"x\" [style.top.px]=\"y\"></div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n Output,\r\n ViewChild,\r\n forwardRef,\r\n type OnInit,\r\n} from '@angular/core';\r\nimport { getOffsetPosition } from '../utils/get-offset-position';\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n FormControl,\r\n NG_VALIDATORS,\r\n NG_VALUE_ACCESSOR,\r\n ValidationErrors,\r\n Validator,\r\n Validators,\r\n} from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'slider',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './slider.component.html',\r\n styleUrls: ['./slider.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SliderComponent),\r\n multi: true,\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => SliderComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class SliderComponent implements OnInit, ControlValueAccessor, Validator {\r\n @Input() step = 1;\r\n @Input() min = 0;\r\n @Input() max = 100;\r\n @Input() background?: string;\r\n @Input() isBgTransparent = false;\r\n @Output() change = new EventEmitter<number>();\r\n isDragging = false;\r\n @ViewChild('slider', { static: true }) slider!: ElementRef<HTMLDivElement>;\r\n @ViewChild('thumb', { static: true }) thumb!: ElementRef<HTMLDivElement>;\r\n x = 0;\r\n myControl = new FormControl<number | null>(null);\r\n isDisabled = false;\r\n protected _onChange = (value: any) => {};\r\n protected _onTouched = () => {};\r\n protected _validatorOnChange = () => {};\r\n private sliderRect?: DOMRect;\r\n private thumbRect?: DOMRect;\r\n constructor() {}\r\n ngOnInit(): void {\r\n this.myControl.setValidators([Validators.min(this.min), Validators.max(this.max)]);\r\n }\r\n\r\n private updateRects() {\r\n this.sliderRect = this.slider.nativeElement.getBoundingClientRect();\r\n this.thumbRect = this.thumb.nativeElement.getBoundingClientRect();\r\n }\r\n\r\n writeValue(val?: number | string | null): void {\r\n let value = 0;\r\n if (!val) value = 0;\r\n else if (+val < +this.min) value = +this.min;\r\n else if (+val > +this.max) value = +this.max;\r\n else value = +val;\r\n this.myControl.setValue(value, { emitEvent: false });\r\n this.updateRects();\r\n const sliderRec = this.sliderRect!;\r\n const thumbRec = this.thumbRect!;\r\n this.x = ((value - this.min) * (sliderRec.width - thumbRec.width)) / (this.max - this.min);\r\n if (val !== value) {\r\n this.valueChanged(value);\r\n }\r\n }\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n return this.myControl.errors;\r\n }\r\n registerOnValidatorChange?(fn: () => void): void {\r\n this._validatorOnChange = fn;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this._onChange = fn;\r\n }\r\n registerOnTouched(fn: any): void {\r\n this._onTouched = fn;\r\n }\r\n setDisabledState?(disabled: boolean): void {\r\n this.isDisabled = disabled;\r\n if (disabled) this.myControl.disable();\r\n else this.myControl.enable();\r\n }\r\n\r\n dragStart(ev: MouseEvent | TouchEvent) {\r\n ev.stopPropagation();\r\n ev.preventDefault();\r\n this.isDragging = true;\r\n this.updateRects();\r\n this.updatePosition(ev);\r\n }\r\n\r\n @HostListener('document:mousemove', ['$event'])\r\n @HostListener('document:touchmove', ['$event'])\r\n onDrag(ev: MouseEvent | TouchEvent) {\r\n if (!this.isDragging) return;\r\n this.updatePosition(ev);\r\n }\r\n\r\n @HostListener('window:resize')\r\n onResize() {\r\n this.writeValue(this.myControl.value);\r\n }\r\n\r\n private updatePosition(ev: MouseEvent | TouchEvent) {\r\n if (!this.isDragging) return;\r\n if (!this.sliderRect || !this.thumbRect) this.updateRects();\r\n let position = getOffsetPosition(ev, this.slider.nativeElement);\r\n let thumbRec = this.thumbRect!;\r\n position.x -= thumbRec.width / 2;\r\n let sliderRec = this.sliderRect!;\r\n if (position.x < 0) {\r\n this.x = 0;\r\n } else if (position.x > sliderRec.width - thumbRec.width) {\r\n this.x = sliderRec.width - thumbRec.width;\r\n } else {\r\n this.x = position.x;\r\n }\r\n this.setValueByPosition(thumbRec, sliderRec);\r\n }\r\n\r\n setValueByPosition(thumbRec: DOMRect, sliderRec: DOMRect) {\r\n const percentage = this.x / (sliderRec.width - thumbRec.width);\r\n let newValue = this.min + percentage * (this.max - this.min);\r\n const stepDecimalPlaces = (this.step.toString().split('.')[1] || '').length;\r\n newValue = parseFloat((Math.round(newValue / this.step) * this.step).toFixed(stepDecimalPlaces));\r\n let value = Math.min(Math.max(newValue, this.min), this.max);\r\n if (this.myControl.value !== value) {\r\n this.valueChanged(value);\r\n }\r\n }\r\n\r\n @HostListener('document:mouseup', ['$event'])\r\n @HostListener('document:touchend', ['$event'])\r\n onDragEnd(ev: MouseEvent | TouchEvent) {\r\n this.isDragging = false;\r\n }\r\n\r\n valueChanged(value: number) {\r\n this.myControl.setValue(value, { emitEvent: false });\r\n this._onChange(value);\r\n this.change.emit(value);\r\n }\r\n}\r\n","<div class=\"slider-container\">\r\n <ng-content></ng-content>\r\n <div\r\n #slider\r\n class=\"slider\"\r\n (mousedown)=\"dragStart($event)\"\r\n (touchstart)=\"dragStart($event)\"\r\n [ngStyle]=\"{ '--ngx-slider-bg': background }\"\r\n [class.bg-transparent]=\"isBgTransparent\">\r\n <div class=\"thumb\" #thumb [style.left.px]=\"x\" [title]=\"myControl.value\"></div>\r\n </div>\r\n</div>\r\n","import { inject, InjectionToken } from '@angular/core';\r\n\r\nexport const WINDOW = new InjectionToken<Window | null>('WINDOW', {\r\n factory: () => (typeof window !== 'undefined' ? window : null),\r\n});\r\n","export function randomStrnig(extraLength = 4, useNumeric = false) {\r\n const len = Math.max(0, Math.floor(extraLength));\r\n if (len === 0) return '';\r\n\r\n let charset = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\r\n if (useNumeric) {\r\n charset += '0123456789';\r\n }\r\n const cryptoObj =\r\n typeof globalThis !== 'undefined'\r\n ? (globalThis as unknown as { crypto?: Crypto }).crypto\r\n : undefined;\r\n const out: string[] = new Array(len);\r\n\r\n if (cryptoObj?.getRandomValues) {\r\n const bytes = new Uint8Array(len);\r\n cryptoObj.getRandomValues(bytes);\r\n for (let i = 0; i < len; i++) {\r\n out[i] = charset[bytes[i] % charset.length];\r\n }\r\n } else {\r\n for (let i = 0; i < len; i++) {\r\n out[i] = charset[Math.floor(Math.random() * charset.length)];\r\n }\r\n }\r\n\r\n return `${Date.now().toString(36)}-${out.join('')}`;\r\n}\r\n","import { isPlatformBrowser } from '@angular/common';\r\nimport { Inject, Injectable, PLATFORM_ID } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class BrowserService {\r\n constructor(@Inject(PLATFORM_ID) private platformId: object) {}\r\n\r\n get isBrowser(): boolean {\r\n return isPlatformBrowser(this.platformId);\r\n }\r\n\r\n get prefersDarkMode(): boolean {\r\n if (!this.isBrowser) return false;\r\n return window.matchMedia('(prefers-color-scheme: dark)').matches;\r\n }\r\n}\r\n","import { ComponentRef, TemplateRef } from '@angular/core';\r\n\r\nexport class OverlayRef<T> {\r\n constructor(\r\n private readonly dialogEl: HTMLDialogElement,\r\n private readonly teardownFn: () => void,\r\n public readonly componentRef?: ComponentRef<T>,\r\n public readonly templateRef?: TemplateRef<T>,\r\n ) {}\r\n\r\n close(): void {\r\n this.teardownFn();\r\n }\r\n\r\n get nativeElement(): HTMLElement {\r\n return this.dialogEl;\r\n }\r\n}\r\n","import { Injectable, OnDestroy, inject } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { OverlayOptions, TemplateOptions } from './overlay-options';\nimport { OverlayRef } from './overlay-ref';\nimport { PlacementConfig } from './placement-config';\nimport { OverlayInstance } from './overlay-instance';\nexport const FOCUSABLE_SELECTOR =\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])';\nexport const DIALOG_OVERLAY_CLASSNAME = 'ngx-ui-overlay';\n\n@Injectable({ providedIn: 'root' })\nexport class OverlayService implements OnDestroy {\n private readonly overlayStacks: OverlayInstance[] = [];\n\n private zIndexCounter = 1000;\n private listenersAttached = false;\n private resizeRafPending = false;\n\n private readonly doc = inject(DOCUMENT);\n private readonly abortController = new AbortController();\n\n ngOnDestroy(): void {\n this.closeAll();\n this.abortController.abort();\n }\n\n open<T>(options: OverlayOptions<T>): OverlayRef<T> {\n const {\n anchor,\n point,\n component,\n viewContainerRef,\n configure,\n onClosed,\n placement,\n alignment,\n margin,\n } = options;\n\n if (!viewContainerRef) {\n throw new Error('ViewContainerRef is required to render overlay content.');\n }\n\n this.attachGlobalListeners();\n\n const element = this.createDialogElement();\n const componentRef = viewContainerRef.createComponent(component);\n\n if (componentRef.location.nativeElement) {\n element.appendChild(componentRef.location.nativeElement);\n }\n\n const instance: OverlayInstance = {\n element,\n anchor,\n point,\n placementConfig: this.resolvePlacementConfig(placement, alignment, margin),\n componentRef,\n onClosed,\n rafId: null,\n focusTimeoutId: null,\n cleanup: () => {},\n };\n instance.cleanup = () => this.destroyInstance(instance);\n\n this.overlayStacks.push(instance);\n element.showModal();\n\n const ref = new OverlayRef(element, instance.cleanup, componentRef);\n configure?.(componentRef.instance, ref);\n\n this.scheduleInitialLayout(instance);\n\n return ref;\n }\n\n openTemplate(options: TemplateOptions): OverlayRef<any> {\n const { anchor, point, template, appRef, configure, onClosed, placement, alignment, margin } =\n options;\n\n this.attachGlobalListeners();\n\n const element = this.createDialogElement();\n const view = template.createEmbeddedView({});\n appRef.attachView(view);\n element.append(...view.rootNodes);\n\n const instance: OverlayInstance = {\n element,\n anchor,\n point,\n placementConfig: this.resolvePlacementConfig(placement, alignment, margin),\n embeddedView: view,\n appRef,\n onClosed,\n rafId: null,\n focusTimeoutId: null,\n cleanup: () => {},\n };\n instance.cleanup = () => this.destroyInstance(instance);\n\n this.overlayStacks.push(instance);\n element.showModal();\n\n const ref = new OverlayRef(element, instance.cleanup, undefined, template);\n configure?.(instance, ref);\n\n this.scheduleInitialLayout(instance);\n\n return ref;\n }\n\n closeAll(): void {\n // اسنپشات میگیریم چون cleanup حین اجرا آرایهی اصلی رو تغییر میده\n [...this.overlayStacks].forEach((instance) => instance.cleanup());\n }\n\n // ---------------------------------------------------------------------\n // lifecycle\n // ---------------------------------------------------------------------\n\n private resolvePlacementConfig(\n placement?: PlacementConfig['placement'],\n alignment?: PlacementConfig['alignment'],\n margin?: number,\n ): PlacementConfig {\n return {\n placement: placement ?? 'auto',\n alignment: alignment ?? 'start',\n margin: margin ?? 8,\n };\n }\n\n private createDialogElement(): HTMLDialogElement {\n const element = this.doc.createElement('dialog');\n element.className = DIALOG_OVERLAY_CLASSNAME;\n const style = element.style;\n style.position = 'absolute';\n style.outline = 'none';\n style.padding = '0';\n style.margin = '0';\n style.border = 'none';\n style.background = 'transparent';\n style.maxWidth = '100vw';\n style.maxHeight = '100vh';\n style.overflow = 'visible';\n style.visibility = 'hidden';\n style.animation = 'menu-enter 120ms cubic-bezier(0, 0, 0.2, 1)';\n\n // شمارندهی صعودی مستقل از تعداد فعلی دیالوگهای باز؛ در نسخهی قبلی\n // با استفاده از openDialogs.size محاسبه میشد که بعد از بستن دیالوگها\n // میتونست باعث تکرار zIndex بین دو دیالوگ بشه.\n style.zIndex = `${++this.zIndexCounter}`;\n\n this.doc.body.appendChild(element);\n return element;\n }\n\n private scheduleInitialLayout(instance: OverlayInstance): void {\n instance.rafId = requestAnimationFrame(() => {\n instance.rafId = null;\n this.positionDialog(instance);\n });\n\n instance.focusTimeoutId = setTimeout(() => {\n instance.focusTimeoutId = null;\n const focusable = instance.element.querySelector<HTMLElement>(FOCUSABLE_SELECTOR);\n focusable?.focus();\n }, 0);\n }\n\n private destroyInstance(instance: OverlayInstance): void {\n const index = this.overlayStacks.indexOf(instance);\n if (index === -1) return; // جلوگیری از پاکسازی دوباره\n\n this.overlayStacks.splice(index, 1);\n\n // لغو کارهای زمانبندیشدهای که هنوز اجرا نشدن (نشتی حافظه در نسخهی قبلی)\n if (instance.rafId !== null) cancelAnimationFrame(instance.rafId);\n if (instance.focusTimeoutId !== null) clearTimeout(instance.focusTimeoutId);\n\n if (instance.componentRef) {\n instance.componentRef.location.nativeElement?.remove();\n instance.componentRef.destroy();\n }\n\n if (instance.embeddedView && instance.appRef) {\n instance.appRef.detachView(instance.embeddedView);\n instance.embeddedView.destroy();\n }\n\n instance.element.remove();\n instance.onClosed?.();\n }\n\n // ---------------------------------------------------------------------\n // global listeners (فقط یکبار در کل عمر سرویس attach میشن)\n // ---------------------------------------------------------------------\n\n private attachGlobalListeners(): void {\n if (this.listenersAttached) return;\n this.listenersAttached = true;\n\n const { signal } = this.abortController;\n\n this.doc.addEventListener('keydown', this.onGlobalKeyDown, { signal });\n window.addEventListener('resize', this.onGlobalResize, { signal, passive: true });\n this.doc.addEventListener('click', this.onGlobalPointerEvent, { signal });\n this.doc.addEventListener('contextmenu', this.onGlobalPointerEvent, { signal });\n }\n\n private readonly onGlobalKeyDown = (e: KeyboardEvent): void => {\n if (e.key !== 'Escape') return;\n this.getLastDialog()?.cleanup();\n };\n\n private readonly onGlobalResize = (): void => {\n // چند رویداد resize پشتسرهم فقط یک reposition واقعی اجرا میکنن\n if (this.resizeRafPending) return;\n this.resizeRafPending = true;\n requestAnimationFrame(() => {\n this.resizeRafPending = false;\n this.repositionAll();\n });\n };\n\n private readonly onGlobalPointerEvent = (e: MouseEvent): void => {\n this.handleClickOnBackdrop(e);\n };\n\n private handleClickOnBackdrop(event: MouseEvent): void {\n const lastDialog = this.getLastDialog();\n if (!lastDialog || !lastDialog.element.open) return;\n event.preventDefault();\n // کلیک باید دقیقاً روی خودِ دیالوگ (بکدراپ) باشه، نه محتوای داخلش\n if (event.target !== lastDialog.element) return;\n\n // اگه فرم داخل دیالوگه، با کلیک بیرون بسته نشه\n if (lastDialog.element.querySelector('form')) return;\n\n const rect = lastDialog.element.getBoundingClientRect();\n const clickWasInsideDialog =\n rect.top <= event.clientY &&\n event.clientY <= rect.bottom &&\n rect.left <= event.clientX &&\n event.clientX <= rect.right;\n\n const anchRect = lastDialog.anchor.getBoundingClientRect();\n const clickWasInsideAnchor =\n anchRect.top <= event.clientY &&\n event.clientY <= anchRect.bottom &&\n anchRect.left <= event.clientX &&\n event.clientX <= anchRect.right;\n\n if (!clickWasInsideDialog) {\n if (event.type == 'contextmenu' && lastDialog.point && clickWasInsideAnchor) {\n lastDialog.point = {\n x: event.clientX,\n y: event.clientY,\n };\n this.positionDialog(lastDialog);\n } else {\n lastDialog.cleanup();\n }\n }\n }\n\n private getLastDialog(): OverlayInstance | undefined {\n return this.overlayStacks[this.overlayStacks.length - 1];\n }\n\n // ---------------------------------------------------------------------\n // positioning\n // ---------------------------------------------------------------------\n\n private repositionAll(): void {\n this.overlayStacks.forEach((instance) => {\n if (instance.element.isConnected) {\n this.positionDialog(instance);\n }\n });\n }\n\n private positionDialog(instance: OverlayInstance): void {\n const { anchor, element: dialog, placementConfig, point } = instance;\n const { placement, alignment, margin } = placementConfig;\n\n if (!dialog.isConnected) return;\n\n let anchorRect: DOMRect;\n if (point) {\n anchorRect = new DOMRect(point.x, point.y, 0, 0);\n } else {\n anchorRect = anchor.getBoundingClientRect();\n }\n const dialogRect = dialog.getBoundingClientRect();\n\n const vw = window.innerWidth;\n const vh = window.innerHeight;\n const isRTL = getComputedStyle(this.doc.documentElement).direction === 'rtl';\n\n let top = 0;\n let left: number | 'auto' = 'auto';\n let right: number | 'auto' = 'auto';\n\n const spaceBelow = vh - anchorRect.bottom;\n const spaceAbove = anchorRect.top;\n let verticalPos: 'above' | 'bottom' = 'above';\n\n if (\n placement === 'bottom' ||\n (placement === 'auto' && spaceBelow >= dialogRect.height + margin)\n ) {\n top = anchorRect.bottom + margin;\n verticalPos = 'above';\n if (top + dialogRect.height > vh - margin) {\n top = vh - dialogRect.height - margin;\n verticalPos = 'bottom';\n }\n } else {\n top = anchorRect.top - dialogRect.height - margin;\n verticalPos = 'bottom';\n if (top > spaceAbove) {\n top = anchorRect.top + anchorRect.height + margin;\n verticalPos = 'above';\n }\n }\n\n if (alignment === 'center') {\n left = anchorRect.left + anchorRect.width / 2 - dialogRect.width / 2;\n } else if (alignment === 'start') {\n if (isRTL) {\n right = vw - anchorRect.right;\n } else {\n left = anchorRect.left;\n }\n } else {\n left = isRTL ? anchorRect.left : anchorRect.right; //- dialogRect.width;\n }\n\n if (left !== 'auto') {\n left = Math.min(Math.max(left, margin), vw - dialogRect.width - margin);\n }\n\n dialog.className = `${DIALOG_OVERLAY_CLASSNAME} tips-${verticalPos}`;\n dialog.style.top = `${top + window.scrollY}px`;\n dialog.style.left = left !== 'auto' ? `${left + window.scrollX}px` : 'auto';\n dialog.style.right = right !== 'auto' ? `${right + window.scrollX}px` : 'auto';\n dialog.style.transformOrigin = verticalPos == 'above' ? 'left top' : 'left bottom';\n // dialog.style.transform = 'none';\n dialog.style.visibility = 'visible';\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngx-kit-shared.mjs","sources":["../../../projects/libs/shared/utils/get-offset-position.ts","../../../projects/libs/shared/range-slider/range-slider.component.ts","../../../projects/libs/shared/range-slider/range-slider.component.html","../../../projects/libs/shared/saturation/saturation.component.ts","../../../projects/libs/shared/saturation/saturation.component.html","../../../projects/libs/shared/slider/slider.component.ts","../../../projects/libs/shared/slider/slider.component.html","../../../projects/libs/shared/utils/window.ts","../../../projects/libs/shared/utils/string.ts","../../../projects/libs/shared/services/browser.service.ts","../../../projects/libs/shared/overlay/overlay-ref.ts","../../../projects/libs/shared/overlay/overlay.service.ts","../../../projects/libs/shared/ngx-kit-shared.ts"],"sourcesContent":["export function getOffsetPosition(\r\n evt: MouseEvent | TouchEvent,\r\n parent: HTMLElement\r\n) {\r\n let position = {\r\n x: 0,\r\n y: 0,\r\n };\r\n\r\n if (evt instanceof MouseEvent) {\r\n position.x = evt.pageX;\r\n position.y = evt.pageY;\r\n } else if (evt.touches && evt.touches.length > 0) {\r\n position.x = evt.touches[0].pageX;\r\n position.y = evt.touches[0].pageY;\r\n }\r\n\r\n // Adjust for the parent's offset\r\n let parentRect = parent.getBoundingClientRect();\r\n position.x -= parentRect.left + window.scrollX;\r\n position.y -= parentRect.top + window.scrollY;\r\n\r\n return position;\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n Output,\r\n ViewChild,\r\n forwardRef,\r\n type OnInit,\r\n} from '@angular/core';\r\nimport { getOffsetPosition } from '../utils/get-offset-position';\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n NG_VALIDATORS,\r\n NG_VALUE_ACCESSOR,\r\n ValidationErrors,\r\n Validator,\r\n} from '@angular/forms';\r\n\r\nexport interface IValue {\r\n id?: string;\r\n value: number;\r\n}\r\nexport class ValueModel {\r\n id!: string;\r\n value!: number;\r\n x?: number;\r\n thumb?: HTMLElement;\r\n color?: string;\r\n}\r\n\r\n@Component({\r\n selector: 'range-slider',\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [CommonModule],\r\n templateUrl: './range-slider.component.html',\r\n styleUrls: ['./range-slider.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => RangeSliderComponent),\r\n multi: true,\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => RangeSliderComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class RangeSliderComponent implements OnInit, ControlValueAccessor, Validator {\r\n /**\r\n * The step value for the slider\r\n */\r\n @Input() step = 1;\r\n /**\r\n * The minimum value for the slider\r\n */\r\n @Input() min = 0;\r\n /**\r\n * The maximum value for the slider\r\n */\r\n @Input() max = 100;\r\n /**\r\n * The background color of the slider\r\n * - can use css like `background: linear-gradient(to right, red, blue);`\r\n * - or a solid color like `background: red;`\r\n */\r\n @Input() background?: string;\r\n /**\r\n * If true, the background will be transparent\r\n */\r\n @Input() isBgTransparent = false;\r\n /**\r\n * If true, clicking on the slider will add a new range at that position\r\n */\r\n @Input() addNewRangeOnClick = false;\r\n\r\n /**\r\n * The current value of the slider\r\n */\r\n @Output() change = new EventEmitter<IValue[]>();\r\n @Input() selectedIndex?: number;\r\n @Output() selectedIndexChange = new EventEmitter<number>();\r\n\r\n private isDragging = false;\r\n\r\n @ViewChild('slider', { static: true }) slider!: ElementRef<HTMLDivElement>;\r\n @ViewChild('thumb', { static: false }) thumb?: ElementRef<HTMLDivElement>;\r\n\r\n values: ValueModel[] = [];\r\n isDisabled = false;\r\n protected _onChange = (value: IValue[]) => {};\r\n protected _onTouched = () => {};\r\n protected _validatorOnChange = () => {};\r\n private sliderRect?: DOMRect;\r\n private thumbRect?: DOMRect;\r\n\r\n constructor(private changeDetectorRef: ChangeDetectorRef) {}\r\n ngOnInit(): void {}\r\n\r\n private generateId(): string {\r\n let id = 'ngx-thumb-' + Math.random().toString(36).substring(2, 9);\r\n if (this.values.findIndex((x) => x.id == id) >= 0) {\r\n return this.generateId();\r\n }\r\n return id;\r\n }\r\n\r\n writeValue(items?: IValue[]): void {\r\n this.values = [];\r\n if (!items || !Array.isArray(items)) {\r\n items = [];\r\n }\r\n if (items.length === 0) {\r\n items.push({ id: this.generateId(), value: this.min });\r\n }\r\n for (let val of items) {\r\n if (typeof val.value !== 'number' || isNaN(val.value)) {\r\n throw new Error('RangeSliderComponent: value must be an array of numbers');\r\n }\r\n let newVal = +val.value;\r\n if (newVal < +this.min) newVal = +this.min;\r\n else if (newVal > +this.max) newVal = +this.max;\r\n this.values.push({\r\n ...val,\r\n id: val.id ?? this.generateId(),\r\n value: newVal,\r\n });\r\n }\r\n this.updateAllThumbPositions();\r\n }\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n return null; // TODO: return errors if any;\r\n }\r\n registerOnValidatorChange?(fn: () => void): void {\r\n this._validatorOnChange = fn;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this._onChange = fn;\r\n }\r\n registerOnTouched(fn: any): void {\r\n this._onTouched = fn;\r\n }\r\n setDisabledState?(disabled: boolean): void {\r\n this.isDisabled = disabled;\r\n }\r\n private updateRects() {\r\n this.sliderRect = this.slider.nativeElement.getBoundingClientRect();\r\n if (this.thumb) {\r\n this.thumbRect = this.thumb.nativeElement.getBoundingClientRect();\r\n }\r\n }\r\n @HostListener('document:mousemove', ['$event'])\r\n @HostListener('document:touchmove', ['$event'])\r\n onDrag(ev: MouseEvent | TouchEvent) {\r\n if (!this.isDragging) return;\r\n this.updateThumbPosition(ev);\r\n }\r\n\r\n @HostListener('window:resize')\r\n onResize() {\r\n this.writeValue(this.values);\r\n }\r\n dragStart(ev: MouseEvent | TouchEvent, index: number) {\r\n ev.stopPropagation();\r\n ev.preventDefault();\r\n this.isDragging = true;\r\n this.selectedIndex = index;\r\n this.updateRects();\r\n this.updateThumbPosition(ev);\r\n this.selectedIndexChange.emit(this.selectedIndex);\r\n }\r\n\r\n addnewRangeOnSliderClick(event: MouseEvent | TouchEvent) {\r\n if (!this.addNewRangeOnClick) return;\r\n const position = getOffsetPosition(event, this.slider.nativeElement);\r\n const newValue = this.min + (position.x / this.sliderRect!.width) * (this.max - this.min);\r\n // must be add with order by position\r\n const indexByOrderValue = this.values.findIndex((item) => item.value > newValue);\r\n const insertIndex = indexByOrderValue >= 0 ? indexByOrderValue : this.values.length;\r\n this.values.splice(insertIndex, 0, {\r\n id: this.generateId(),\r\n value: newValue,\r\n });\r\n this.dragStart(event, insertIndex);\r\n // this.updateAllThumbPositions();\r\n // this.valueChanged();\r\n }\r\n\r\n private updateThumbPosition(ev: MouseEvent | TouchEvent) {\r\n if (!this.isDragging || this.selectedIndex == undefined) return;\r\n if (!this.sliderRect || !this.thumbRect) this.updateRects();\r\n let position = getOffsetPosition(ev, this.slider.nativeElement);\r\n let thumbRec = this.thumbRect!;\r\n position.x -= thumbRec.width / 2;\r\n let sliderRec = this.sliderRect!;\r\n const thumb = this.values[this.selectedIndex];\r\n if (position.x < 0) {\r\n thumb.x = 0;\r\n } else if (position.x > sliderRec.width - thumbRec.width) {\r\n thumb.x = sliderRec.width - thumbRec.width;\r\n } else {\r\n thumb.x = position.x;\r\n }\r\n this.setValueByPosition(thumb, thumbRec, sliderRec);\r\n }\r\n\r\n updateAllThumbPositions() {\r\n // wait to add thumbs\r\n setTimeout(() => {\r\n this.updateRects();\r\n const sliderRec = this.sliderRect!;\r\n const thumbRec = this.thumbRect!;\r\n for (let item of this.values) {\r\n item.x = ((item.value - this.min) * (sliderRec.width - thumbRec.width)) / (this.max - this.min);\r\n }\r\n this.changeDetectorRef.detectChanges();\r\n });\r\n }\r\n setValueByPosition(thumb: ValueModel, thumbRec: DOMRect, sliderRec: DOMRect) {\r\n const percentage = (thumb.x ?? 0) / (sliderRec.width - thumbRec.width);\r\n let newValue = this.min + percentage * (this.max - this.min);\r\n const stepDecimalPlaces = (this.step.toString().split('.')[1] || '').length;\r\n newValue = parseFloat((Math.round(newValue / this.step) * this.step).toFixed(stepDecimalPlaces));\r\n let value = Math.min(Math.max(newValue, this.min), this.max);\r\n if (thumb.value !== value) {\r\n thumb.value = value;\r\n this.valueChanged();\r\n }\r\n }\r\n\r\n @HostListener('document:mouseup', ['$event'])\r\n @HostListener('document:touchend', ['$event'])\r\n onDragEnd(ev: MouseEvent | TouchEvent) {\r\n this.isDragging = false;\r\n // this.selectedIndex = undefined;\r\n }\r\n\r\n valueChanged() {\r\n const v = this.values; // this.values.map(({ x, thumb, ...rest }) => ({ ...rest }));\r\n this._onChange(v);\r\n this.change.emit(v);\r\n }\r\n}\r\n","<div class=\"slider-container\">\r\n <ng-content></ng-content>\r\n <div\r\n #slider\r\n class=\"slider\"\r\n [class.add-range-cursor]=\"addNewRangeOnClick\"\r\n [ngStyle]=\"{ '--ngx-slider-bg': background }\"\r\n [class.bg-transparent]=\"isBgTransparent\"\r\n (mousedown)=\"addnewRangeOnSliderClick($event)\"\r\n (touchstart)=\"addnewRangeOnSliderClick($event)\">\r\n @for (item of values; track $index; let i = $index) {\r\n <div\r\n class=\"thumb\"\r\n [class.is-active]=\"selectedIndex == i\"\r\n #thumb\r\n [style.left.px]=\"item.x\"\r\n [style.background]=\"item.color\"\r\n [title]=\"item.value\"\r\n (mousedown)=\"dragStart($event, i)\"\r\n (touchstart)=\"dragStart($event, i)\"></div>\r\n }\r\n </div>\r\n</div>\r\n\r\n<!-- {{ selectedIndex }}\r\n<pre dir=\"ltr\" style=\"text-align: left\">{{ values | json }}</pre> -->\r\n\r\n","\r\nimport { Component, ElementRef, EventEmitter, HostListener, Input, Output, ViewChild, forwardRef } from '@angular/core';\r\nimport { getOffsetPosition } from '../utils/get-offset-position';\r\nimport {\r\n NG_VALUE_ACCESSOR,\r\n ControlValueAccessor,\r\n FormControl,\r\n AbstractControl,\r\n ValidationErrors,\r\n} from '@angular/forms';\r\nimport { IPosition } from '../contracts/IPosition';\r\n\r\n@Component({\r\n selector: 'saturation',\r\n standalone: true,\r\n imports: [],\r\n templateUrl: './saturation.component.html',\r\n styleUrl: './saturation.component.scss',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SaturationComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class SaturationComponent implements ControlValueAccessor {\r\n @Input() width?: number;\r\n @Input() height?: number;\r\n @Input() color = 'red';\r\n @Input() step = 1;\r\n @Input() min: IPosition = { x: 0, y: 0 };\r\n @Input() max = { x: 100, y: 100 };\r\n @Output() change = new EventEmitter<IPosition>();\r\n\r\n isDragging = false;\r\n @ViewChild('saturation', { static: true }) saturation!: ElementRef<HTMLDivElement>;\r\n @ViewChild('thumb', { static: true }) thumb!: ElementRef<HTMLDivElement>;\r\n x = 0;\r\n y = 0;\r\n myControl = new FormControl<IPosition | null>(null);\r\n isDisabled = false;\r\n protected _onChange = (value: any) => {};\r\n protected _onTouched = () => {};\r\n protected _validatorOnChange = () => {};\r\n\r\n private saturationRect?: DOMRect;\r\n private thumbRect?: DOMRect;\r\n\r\n constructor() {}\r\n\r\n private updateRects() {\r\n this.saturationRect = this.saturation.nativeElement.getBoundingClientRect();\r\n this.thumbRect = this.thumb.nativeElement.getBoundingClientRect();\r\n }\r\n\r\n writeValue(val?: IPosition | null): void {\r\n if (!val) val = { x: 0, y: 0 };\r\n let value: IPosition = val;\r\n this.myControl.setValue(value, { emitEvent: false });\r\n this.updateRects();\r\n const saturationRec = this.saturationRect!;\r\n const thumbRec = this.thumbRect!;\r\n this.x = ((value.x - this.min.x) * (saturationRec.width - thumbRec.width / 2)) / (this.max.x - this.min.x);\r\n this.y = ((value.y - this.min.y) * (saturationRec.height - thumbRec.height / 2)) / (this.max.y - this.min.y);\r\n if (val !== value) {\r\n this.valueChanged(value);\r\n }\r\n }\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n return this.myControl.errors;\r\n }\r\n registerOnValidatorChange?(fn: () => void): void {\r\n this._validatorOnChange = fn;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this._onChange = fn;\r\n }\r\n registerOnTouched(fn: any): void {\r\n this._onTouched = fn;\r\n }\r\n setDisabledState?(disabled: boolean): void {\r\n this.isDisabled = disabled;\r\n if (disabled) this.myControl.disable();\r\n else this.myControl.enable();\r\n }\r\n\r\n dragStart(ev: MouseEvent | TouchEvent) {\r\n ev.stopPropagation();\r\n ev.preventDefault();\r\n this.isDragging = true;\r\n this.updateRects();\r\n this.updatePosition(ev);\r\n }\r\n\r\n @HostListener('window:resize')\r\n onResize() {\r\n this.writeValue(this.myControl.value);\r\n }\r\n\r\n @HostListener('document:mousemove', ['$event'])\r\n @HostListener('document:touchmove', ['$event'])\r\n onDrag(ev: MouseEvent | TouchEvent) {\r\n if (!this.isDragging) return;\r\n this.updatePosition(ev);\r\n }\r\n\r\n private updatePosition(ev: MouseEvent | TouchEvent) {\r\n if (!this.isDragging) return;\r\n if (!this.saturationRect || !this.thumbRect) this.updateRects();\r\n let position = getOffsetPosition(ev, this.saturation.nativeElement);\r\n let thumbRec = this.thumbRect!;\r\n let saturationRec = this.saturationRect!;\r\n if (position.x < 0) {\r\n this.x = 0;\r\n } else if (position.x > saturationRec.width - (thumbRec.width / 2 - 3)) {\r\n this.x = saturationRec.width - (thumbRec.width / 2 - 3);\r\n } else {\r\n this.x = position.x;\r\n }\r\n // this.x = this.x - thumbRec.width / 2;\r\n\r\n if (position.y < 0) {\r\n this.y = 0;\r\n } else if (position.y > saturationRec.height - (thumbRec.height / 2 - 3)) {\r\n this.y = saturationRec.height - (thumbRec.height / 2 - 3);\r\n } else {\r\n this.y = position.y;\r\n }\r\n // this.y = this.y - thumbRec.height / 2;\r\n this.setValueByPosition(thumbRec, saturationRec);\r\n }\r\n\r\n @HostListener('document:mouseup', ['$event'])\r\n @HostListener('document:touchend', ['$event'])\r\n onDragEnd(ev: MouseEvent | TouchEvent) {\r\n this.isDragging = false;\r\n }\r\n\r\n setValueByPosition(thumbRec: DOMRect, saturationRec: DOMRect) {\r\n const percentageX = this.x / (saturationRec.width - thumbRec.width);\r\n let newValueX = this.min.x + percentageX * (this.max.x - this.min.x);\r\n newValueX = Math.round(newValueX / this.step) * this.step;\r\n let valueX = Math.min(Math.max(newValueX, this.min.x), this.max.x);\r\n //-----------------------------\r\n const percentageY = this.y / (saturationRec.height - thumbRec.height);\r\n let newValueY = this.min.y + percentageY * (this.max.y - this.min.y);\r\n newValueY = Math.round(newValueY / this.step) * this.step;\r\n let valueY = Math.min(Math.max(newValueY, this.min.y), this.max.y);\r\n const newValue = { x: valueX, y: valueY };\r\n if (!this.myControl.value || this.myControl.value.x !== valueX || this.myControl.value.y !== valueY) {\r\n this.valueChanged(newValue);\r\n }\r\n }\r\n\r\n valueChanged(value: IPosition) {\r\n this.myControl.setValue(value, { emitEvent: false });\r\n this._onChange(value);\r\n this.change.emit(value);\r\n }\r\n}\r\n","<div\r\n class=\"saturation-container\"\r\n [style.width.px]=\"width\"\r\n [style.height.px]=\"height\"\r\n (mousedown)=\"dragStart($event)\"\r\n (touchstart)=\"dragStart($event)\">\r\n <div class=\"saturation\" #saturation>\r\n <div class=\"s-bg\" [style.background]=\"color\"></div>\r\n <div class=\"s-white\"></div>\r\n <div class=\"s-black\"></div>\r\n </div>\r\n <div class=\"thumb\" #thumb [style.left.px]=\"x\" [style.top.px]=\"y\"></div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n Output,\r\n ViewChild,\r\n forwardRef,\r\n type OnInit,\r\n} from '@angular/core';\r\nimport { getOffsetPosition } from '../utils/get-offset-position';\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n FormControl,\r\n NG_VALIDATORS,\r\n NG_VALUE_ACCESSOR,\r\n ValidationErrors,\r\n Validator,\r\n Validators,\r\n} from '@angular/forms';\r\n\r\n@Component({\r\n selector: 'slider',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './slider.component.html',\r\n styleUrls: ['./slider.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SliderComponent),\r\n multi: true,\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => SliderComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class SliderComponent implements OnInit, ControlValueAccessor, Validator {\r\n @Input() step = 1;\r\n @Input() min = 0;\r\n @Input() max = 100;\r\n @Input() background?: string;\r\n @Input() isBgTransparent = false;\r\n @Output() change = new EventEmitter<number>();\r\n isDragging = false;\r\n @ViewChild('slider', { static: true }) slider!: ElementRef<HTMLDivElement>;\r\n @ViewChild('thumb', { static: true }) thumb!: ElementRef<HTMLDivElement>;\r\n x = 0;\r\n myControl = new FormControl<number | null>(null);\r\n isDisabled = false;\r\n protected _onChange = (value: any) => {};\r\n protected _onTouched = () => {};\r\n protected _validatorOnChange = () => {};\r\n private sliderRect?: DOMRect;\r\n private thumbRect?: DOMRect;\r\n constructor() {}\r\n ngOnInit(): void {\r\n this.myControl.setValidators([Validators.min(this.min), Validators.max(this.max)]);\r\n }\r\n\r\n private updateRects() {\r\n this.sliderRect = this.slider.nativeElement.getBoundingClientRect();\r\n this.thumbRect = this.thumb.nativeElement.getBoundingClientRect();\r\n }\r\n\r\n writeValue(val?: number | string | null): void {\r\n let value = 0;\r\n if (!val) value = 0;\r\n else if (+val < +this.min) value = +this.min;\r\n else if (+val > +this.max) value = +this.max;\r\n else value = +val;\r\n this.myControl.setValue(value, { emitEvent: false });\r\n this.updateRects();\r\n const sliderRec = this.sliderRect!;\r\n const thumbRec = this.thumbRect!;\r\n this.x = ((value - this.min) * (sliderRec.width - thumbRec.width)) / (this.max - this.min);\r\n if (val !== value) {\r\n this.valueChanged(value);\r\n }\r\n }\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n return this.myControl.errors;\r\n }\r\n registerOnValidatorChange?(fn: () => void): void {\r\n this._validatorOnChange = fn;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this._onChange = fn;\r\n }\r\n registerOnTouched(fn: any): void {\r\n this._onTouched = fn;\r\n }\r\n setDisabledState?(disabled: boolean): void {\r\n this.isDisabled = disabled;\r\n if (disabled) this.myControl.disable();\r\n else this.myControl.enable();\r\n }\r\n\r\n dragStart(ev: MouseEvent | TouchEvent) {\r\n ev.stopPropagation();\r\n ev.preventDefault();\r\n this.isDragging = true;\r\n this.updateRects();\r\n this.updatePosition(ev);\r\n }\r\n\r\n @HostListener('document:mousemove', ['$event'])\r\n @HostListener('document:touchmove', ['$event'])\r\n onDrag(ev: MouseEvent | TouchEvent) {\r\n if (!this.isDragging) return;\r\n this.updatePosition(ev);\r\n }\r\n\r\n @HostListener('window:resize')\r\n onResize() {\r\n this.writeValue(this.myControl.value);\r\n }\r\n\r\n private updatePosition(ev: MouseEvent | TouchEvent) {\r\n if (!this.isDragging) return;\r\n if (!this.sliderRect || !this.thumbRect) this.updateRects();\r\n let position = getOffsetPosition(ev, this.slider.nativeElement);\r\n let thumbRec = this.thumbRect!;\r\n position.x -= thumbRec.width / 2;\r\n let sliderRec = this.sliderRect!;\r\n if (position.x < 0) {\r\n this.x = 0;\r\n } else if (position.x > sliderRec.width - thumbRec.width) {\r\n this.x = sliderRec.width - thumbRec.width;\r\n } else {\r\n this.x = position.x;\r\n }\r\n this.setValueByPosition(thumbRec, sliderRec);\r\n }\r\n\r\n setValueByPosition(thumbRec: DOMRect, sliderRec: DOMRect) {\r\n const percentage = this.x / (sliderRec.width - thumbRec.width);\r\n let newValue = this.min + percentage * (this.max - this.min);\r\n const stepDecimalPlaces = (this.step.toString().split('.')[1] || '').length;\r\n newValue = parseFloat((Math.round(newValue / this.step) * this.step).toFixed(stepDecimalPlaces));\r\n let value = Math.min(Math.max(newValue, this.min), this.max);\r\n if (this.myControl.value !== value) {\r\n this.valueChanged(value);\r\n }\r\n }\r\n\r\n @HostListener('document:mouseup', ['$event'])\r\n @HostListener('document:touchend', ['$event'])\r\n onDragEnd(ev: MouseEvent | TouchEvent) {\r\n this.isDragging = false;\r\n }\r\n\r\n valueChanged(value: number) {\r\n this.myControl.setValue(value, { emitEvent: false });\r\n this._onChange(value);\r\n this.change.emit(value);\r\n }\r\n}\r\n","<div class=\"slider-container\">\r\n <ng-content></ng-content>\r\n <div\r\n #slider\r\n class=\"slider\"\r\n (mousedown)=\"dragStart($event)\"\r\n (touchstart)=\"dragStart($event)\"\r\n [ngStyle]=\"{ '--ngx-slider-bg': background }\"\r\n [class.bg-transparent]=\"isBgTransparent\">\r\n <div class=\"thumb\" #thumb [style.left.px]=\"x\" [title]=\"myControl.value\"></div>\r\n </div>\r\n</div>\r\n","import { inject, InjectionToken } from '@angular/core';\r\n\r\nexport const WINDOW = new InjectionToken<Window | null>('WINDOW', {\r\n factory: () => (typeof window !== 'undefined' ? window : null),\r\n});\r\n","export function randomStrnig(extraLength = 4, useNumeric = false) {\r\n const len = Math.max(0, Math.floor(extraLength));\r\n if (len === 0) return '';\r\n\r\n let charset = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\r\n if (useNumeric) {\r\n charset += '0123456789';\r\n }\r\n const cryptoObj =\r\n typeof globalThis !== 'undefined'\r\n ? (globalThis as unknown as { crypto?: Crypto }).crypto\r\n : undefined;\r\n const out: string[] = new Array(len);\r\n\r\n if (cryptoObj?.getRandomValues) {\r\n const bytes = new Uint8Array(len);\r\n cryptoObj.getRandomValues(bytes);\r\n for (let i = 0; i < len; i++) {\r\n out[i] = charset[bytes[i] % charset.length];\r\n }\r\n } else {\r\n for (let i = 0; i < len; i++) {\r\n out[i] = charset[Math.floor(Math.random() * charset.length)];\r\n }\r\n }\r\n\r\n return `${Date.now().toString(36)}-${out.join('')}`;\r\n}\r\n","import { isPlatformBrowser } from '@angular/common';\r\nimport { Inject, Injectable, PLATFORM_ID } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class BrowserService {\r\n constructor(@Inject(PLATFORM_ID) private platformId: object) {}\r\n\r\n get isBrowser(): boolean {\r\n return isPlatformBrowser(this.platformId);\r\n }\r\n\r\n get prefersDarkMode(): boolean {\r\n if (!this.isBrowser) return false;\r\n return window.matchMedia('(prefers-color-scheme: dark)').matches;\r\n }\r\n}\r\n","import { ComponentRef, TemplateRef } from '@angular/core';\r\n\r\nexport class OverlayRef<T> {\r\n constructor(\r\n private readonly dialogEl: HTMLDialogElement,\r\n private readonly teardownFn: () => void,\r\n public readonly componentRef?: ComponentRef<T>,\r\n public readonly templateRef?: TemplateRef<T>,\r\n ) {}\r\n\r\n close(): void {\r\n this.teardownFn();\r\n }\r\n\r\n get nativeElement(): HTMLElement {\r\n return this.dialogEl;\r\n }\r\n}\r\n","import { Injectable, OnDestroy, inject } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { OverlayOptions, TemplateOptions } from './overlay-options';\nimport { OverlayRef } from './overlay-ref';\nimport { PlacementConfig } from './placement-config';\nimport { OverlayInstance } from './overlay-instance';\nexport const FOCUSABLE_SELECTOR =\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])';\nexport const DIALOG_OVERLAY_CLASSNAME = 'ngx-ui-overlay';\n\n@Injectable({ providedIn: 'root' })\nexport class OverlayService implements OnDestroy {\n private readonly overlayStacks: OverlayInstance[] = [];\n\n private zIndexCounter = 1000;\n private listenersAttached = false;\n private resizeRafPending = false;\n\n private readonly doc = inject(DOCUMENT);\n private readonly abortController = new AbortController();\n\n ngOnDestroy(): void {\n this.closeAll();\n this.abortController.abort();\n }\n\n open<T>(options: OverlayOptions<T>): OverlayRef<T> {\n const {\n anchor,\n point,\n component,\n viewContainerRef,\n configure,\n onClosed,\n placement,\n alignment,\n margin,\n } = options;\n\n if (!viewContainerRef) {\n throw new Error('ViewContainerRef is required to render overlay content.');\n }\n\n this.attachGlobalListeners();\n\n const element = this.createDialogElement();\n const componentRef = viewContainerRef.createComponent(component);\n\n if (componentRef.location.nativeElement) {\n element.appendChild(componentRef.location.nativeElement);\n }\n\n const instance: OverlayInstance = {\n element,\n anchor,\n point,\n placementConfig: this.resolvePlacementConfig(placement, alignment, margin),\n componentRef,\n onClosed,\n rafId: null,\n focusTimeoutId: null,\n cleanup: () => {},\n };\n instance.cleanup = () => this.destroyInstance(instance);\n\n this.overlayStacks.push(instance);\n element.showModal();\n\n const ref = new OverlayRef(element, instance.cleanup, componentRef);\n configure?.(componentRef.instance, ref);\n\n this.scheduleInitialLayout(instance);\n\n return ref;\n }\n\n openTemplate(options: TemplateOptions): OverlayRef<any> {\n const { anchor, point, template, appRef, configure, onClosed, placement, alignment, margin } =\n options;\n\n this.attachGlobalListeners();\n\n const element = this.createDialogElement();\n const view = template.createEmbeddedView({});\n appRef.attachView(view);\n element.append(...view.rootNodes);\n\n const instance: OverlayInstance = {\n element,\n anchor,\n point,\n placementConfig: this.resolvePlacementConfig(placement, alignment, margin),\n embeddedView: view,\n appRef,\n onClosed,\n rafId: null,\n focusTimeoutId: null,\n cleanup: () => {},\n };\n instance.cleanup = () => this.destroyInstance(instance);\n\n this.overlayStacks.push(instance);\n element.showModal();\n\n const ref = new OverlayRef(element, instance.cleanup, undefined, template);\n configure?.(instance, ref);\n\n this.scheduleInitialLayout(instance);\n\n return ref;\n }\n\n closeAll(): void {\n // اسنپشات میگیریم چون cleanup حین اجرا آرایهی اصلی رو تغییر میده\n [...this.overlayStacks].forEach((instance) => instance.cleanup());\n }\n\n // ---------------------------------------------------------------------\n // lifecycle\n // ---------------------------------------------------------------------\n\n private resolvePlacementConfig(\n placement?: PlacementConfig['placement'],\n alignment?: PlacementConfig['alignment'],\n margin?: number,\n ): PlacementConfig {\n return {\n placement: placement ?? 'auto',\n alignment: alignment ?? 'start',\n margin: margin ?? 8,\n };\n }\n\n private createDialogElement(): HTMLDialogElement {\n const element = this.doc.createElement('dialog');\n element.className = DIALOG_OVERLAY_CLASSNAME;\n const style = element.style;\n style.position = 'absolute';\n style.outline = 'none';\n style.padding = '0';\n style.margin = '0';\n style.border = 'none';\n style.background = 'transparent';\n style.maxWidth = '100vw';\n style.maxHeight = '100vh';\n style.overflow = 'visible';\n style.visibility = 'hidden';\n\n // شمارندهی صعودی مستقل از تعداد فعلی دیالوگهای باز؛ در نسخهی قبلی\n // با استفاده از openDialogs.size محاسبه میشد که بعد از بستن دیالوگها\n // میتونست باعث تکرار zIndex بین دو دیالوگ بشه.\n style.zIndex = `${++this.zIndexCounter}`;\n\n this.doc.body.appendChild(element);\n return element;\n }\n\n private scheduleInitialLayout(instance: OverlayInstance): void {\n instance.rafId = requestAnimationFrame(() => {\n instance.rafId = null;\n this.positionDialog(instance);\n });\n\n instance.focusTimeoutId = setTimeout(() => {\n instance.focusTimeoutId = null;\n const focusable = instance.element.querySelector<HTMLElement>(FOCUSABLE_SELECTOR);\n focusable?.focus();\n }, 0);\n }\n\n private destroyInstance(instance: OverlayInstance): void {\n const index = this.overlayStacks.indexOf(instance);\n if (index === -1) return; // جلوگیری از پاکسازی دوباره\n\n this.overlayStacks.splice(index, 1);\n\n // لغو کارهای زمانبندیشدهای که هنوز اجرا نشدن (نشتی حافظه در نسخهی قبلی)\n if (instance.rafId !== null) cancelAnimationFrame(instance.rafId);\n if (instance.focusTimeoutId !== null) clearTimeout(instance.focusTimeoutId);\n\n if (instance.componentRef) {\n instance.componentRef.location.nativeElement?.remove();\n instance.componentRef.destroy();\n }\n\n if (instance.embeddedView && instance.appRef) {\n instance.appRef.detachView(instance.embeddedView);\n instance.embeddedView.destroy();\n }\n\n instance.element.remove();\n instance.onClosed?.();\n }\n\n // ---------------------------------------------------------------------\n // global listeners (فقط یکبار در کل عمر سرویس attach میشن)\n // ---------------------------------------------------------------------\n\n private attachGlobalListeners(): void {\n if (this.listenersAttached) return;\n this.listenersAttached = true;\n\n const { signal } = this.abortController;\n\n this.doc.addEventListener('keydown', this.onGlobalKeyDown, { signal });\n window.addEventListener('resize', this.onGlobalResize, { signal, passive: true });\n this.doc.addEventListener('click', this.onGlobalPointerEvent, { signal });\n this.doc.addEventListener('contextmenu', this.onGlobalPointerEvent, { signal });\n }\n\n private readonly onGlobalKeyDown = (e: KeyboardEvent): void => {\n if (e.key !== 'Escape') return;\n this.getLastDialog()?.cleanup();\n };\n\n private readonly onGlobalResize = (): void => {\n // چند رویداد resize پشتسرهم فقط یک reposition واقعی اجرا میکنن\n if (this.resizeRafPending) return;\n this.resizeRafPending = true;\n requestAnimationFrame(() => {\n this.resizeRafPending = false;\n this.repositionAll();\n });\n };\n\n private readonly onGlobalPointerEvent = (e: MouseEvent): void => {\n this.handleClickOnBackdrop(e);\n };\n\n private handleClickOnBackdrop(event: MouseEvent): void {\n const lastDialog = this.getLastDialog();\n if (!lastDialog || !lastDialog.element.open) return;\n // کلیک باید دقیقاً روی خودِ دیالوگ (بکدراپ) باشه، نه محتوای داخلش\n if (event.target !== lastDialog.element) return;\n\n // اگه فرم داخل دیالوگه، با کلیک بیرون بسته نشه\n if (lastDialog.element.querySelector('form')) return;\n\n const rect = lastDialog.element.getBoundingClientRect();\n const clickWasInsideDialog =\n rect.top <= event.clientY &&\n event.clientY <= rect.bottom &&\n rect.left <= event.clientX &&\n event.clientX <= rect.right;\n\n const anchRect = lastDialog.anchor.getBoundingClientRect();\n const clickWasInsideAnchor =\n anchRect.top <= event.clientY &&\n event.clientY <= anchRect.bottom &&\n anchRect.left <= event.clientX &&\n event.clientX <= anchRect.right;\n\n if (!clickWasInsideDialog) {\n if (event.type == 'contextmenu' && lastDialog.point && clickWasInsideAnchor) {\n event.preventDefault();\n lastDialog.point = {\n x: event.clientX,\n y: event.clientY,\n };\n this.positionDialog(lastDialog);\n } else {\n lastDialog.cleanup();\n }\n }\n }\n\n private getLastDialog(): OverlayInstance | undefined {\n return this.overlayStacks[this.overlayStacks.length - 1];\n }\n\n // ---------------------------------------------------------------------\n // positioning\n // ---------------------------------------------------------------------\n\n private repositionAll(): void {\n this.overlayStacks.forEach((instance) => {\n if (instance.element.isConnected) {\n this.positionDialog(instance);\n }\n });\n }\n\n private positionDialog(instance: OverlayInstance): void {\n const { anchor, element: dialog, placementConfig, point } = instance;\n const { placement, alignment, margin } = placementConfig;\n\n if (!dialog.isConnected) return;\n\n let anchorRect: DOMRect;\n if (point) {\n anchorRect = new DOMRect(point.x, point.y, 0, 0);\n } else {\n anchorRect = anchor.getBoundingClientRect();\n }\n const dialogRect = dialog.getBoundingClientRect();\n\n const vw = Math.min(document.body.clientWidth, window.innerWidth);\n const vh = Math.min(document.body.clientHeight, window.innerHeight);\n const isRTL = getComputedStyle(this.doc.documentElement).direction === 'rtl';\n\n let top = 0;\n let left: number | 'auto' = 'auto';\n let right: number | 'auto' = 'auto';\n\n const spaceBelow = vh - anchorRect.bottom;\n const spaceAbove = anchorRect.top;\n let verticalPos: 'above' | 'bottom' = 'above';\n\n if (\n placement === 'bottom' ||\n (placement === 'auto' && spaceBelow >= dialogRect.height + margin)\n ) {\n top = anchorRect.bottom + margin;\n verticalPos = 'above';\n if (top + dialogRect.height > vh - margin) {\n top = vh - dialogRect.height - margin;\n verticalPos = 'bottom';\n }\n } else {\n top = anchorRect.top - dialogRect.height - margin;\n verticalPos = 'bottom';\n if (top > spaceAbove) {\n top = anchorRect.top + anchorRect.height + margin;\n verticalPos = 'above';\n }\n }\n\n if (alignment === 'center') {\n left = anchorRect.left + anchorRect.width / 2 - dialogRect.width / 2;\n } else if (alignment === 'start') {\n if (isRTL) {\n right = vw - anchorRect.right;\n } else {\n left = anchorRect.left;\n }\n } else {\n left = isRTL ? anchorRect.left : anchorRect.right; //- dialogRect.width;\n }\n if (left !== 'auto') {\n left = Math.min(Math.max(left, margin), vw - dialogRect.width - margin);\n }\n\n dialog.className = `${DIALOG_OVERLAY_CLASSNAME} tips-${verticalPos}`;\n dialog.style.top = `${top + window.scrollY}px`;\n dialog.style.left = left !== 'auto' ? `${left + window.scrollX}px` : 'auto';\n dialog.style.right = right !== 'auto' ? `${right + window.scrollX}px` : 'auto';\n dialog.style.transformOrigin = verticalPos == 'above' ? 'left top' : 'left bottom';\n // dialog.style.transform = 'none';\n dialog.style.visibility = 'visible';\n dialog.style.animation = 'menu-enter 120ms cubic-bezier(0, 0, 0.2, 1)';\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|