ngx-kit 7.0.1 → 7.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/angle-selector/README.md +34 -34
  2. package/box-shadow/README.md +33 -33
  3. package/color-picker/README.md +52 -52
  4. package/data-table/README.md +120 -120
  5. package/date-picker/README.md +74 -74
  6. package/dialog/README.md +92 -92
  7. package/drag-resize/README.md +55 -55
  8. package/fesm2022/ngx-kit-color-picker.mjs.map +1 -1
  9. package/fesm2022/ngx-kit-date-picker.mjs.map +1 -1
  10. package/fesm2022/ngx-kit-dialog.mjs.map +1 -1
  11. package/fesm2022/ngx-kit-drag-resize.mjs.map +1 -1
  12. package/fesm2022/ngx-kit-drawer-menu.mjs +2 -2
  13. package/fesm2022/ngx-kit-drawer-menu.mjs.map +1 -1
  14. package/fesm2022/ngx-kit-dropzone.mjs.map +1 -1
  15. package/fesm2022/ngx-kit-form-field.mjs.map +1 -1
  16. package/fesm2022/ngx-kit-gallery.mjs +2 -2
  17. package/fesm2022/ngx-kit-gallery.mjs.map +1 -1
  18. package/fesm2022/ngx-kit-grid-layout.mjs +14 -14
  19. package/fesm2022/ngx-kit-grid-layout.mjs.map +1 -1
  20. package/fesm2022/ngx-kit-infinite-scroll.mjs +467 -0
  21. package/fesm2022/ngx-kit-infinite-scroll.mjs.map +1 -0
  22. package/fesm2022/ngx-kit-shared.mjs.map +1 -1
  23. package/fesm2022/ngx-kit-virtual-scroll.mjs +2 -2
  24. package/fesm2022/ngx-kit-virtual-scroll.mjs.map +1 -1
  25. package/fesm2022/ngx-kit-webflow.mjs +38 -38
  26. package/fesm2022/ngx-kit-webflow.mjs.map +1 -1
  27. package/gallery/README.md +71 -71
  28. package/gradient-picker/README.md +41 -41
  29. package/grid-layout/README.md +64 -64
  30. package/image-editor/README.md +44 -44
  31. package/infinite-scroll/README.md +252 -0
  32. package/menu/README.md +85 -85
  33. package/message/README.md +70 -70
  34. package/notify/README.md +56 -56
  35. package/package.json +5 -1
  36. package/shared/README.md +117 -117
  37. package/time-picker/README.md +89 -89
  38. package/types/ngx-kit-infinite-scroll.d.ts +86 -0
  39. package/virtual-scroll/README.md +199 -199
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-kit-shared.mjs","sources":["../../../projects/libs/shared/utils/get-offset-position.ts","../../../projects/libs/shared/utils/drag-session.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/merge-config.ts","../../../projects/libs/shared/utils/window.ts","../../../projects/libs/shared/utils/string.ts","../../../projects/libs/shared/utils/confetti.ts","../../../projects/libs/shared/utils/sequential-guid.ts","../../../projects/libs/shared/utils/merge-deep.ts","../../../projects/libs/shared/services/browser.service.ts","../../../projects/libs/shared/services/direction.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(evt: MouseEvent | TouchEvent, parent: HTMLElement) {\n let position = {\n x: 0,\n y: 0,\n };\n\n if (evt instanceof MouseEvent) {\n position.x = evt.pageX;\n position.y = evt.pageY;\n } else if (evt.touches && evt.touches.length > 0) {\n position.x = evt.touches[0].pageX;\n position.y = evt.touches[0].pageY;\n }\n\n // Adjust for the parent's offset\n let parentRect = parent.getBoundingClientRect();\n position.x -= parentRect.left + window.scrollX;\n position.y -= parentRect.top + window.scrollY;\n\n return position;\n}\n","/**\n * تمام کامپوننت‌های قابل‌درگ کتابخانه (saturation، slider، range-slider،\n * box-shadow) قبلاً یک الگوی تکراری داشتن:\n *\n * @HostListener('document:mousemove', ['$event'])\n * @HostListener('document:touchmove', ['$event'])\n * onDrag(ev) { if (!this.isDragging) return; ... }\n *\n * مشکل: این listenerها برای کل عمر کامپوننت روی `document` باقی می‌مونن —\n * حتی وقتی اصلاً دراگی در حال انجام نیست. یعنی روی صفحه‌ای با چند تا\n * color-picker/slider، هر حرکت موس/انگشت روی کل صفحه (نه فقط روی خودِ\n * اسلایدر) باعث اجرای N تابع (به تعداد اینستنس‌ها) می‌شه که هرکدوم هم چرخه‌ی\n * زون انگیولار رو تریگر می‌کنن — یک مشکل واقعی پرفورمنس، مخصوصاً در صفحاتی\n * با چند نمونه هم‌زمان یا حرکت زیاد موس.\n *\n * این تابع جایگزین اون الگو می‌شه: listenerها فقط در طول یک دراگِ واقعی\n * (بین mousedown/touchstart تا mouseup/touchend) روی document اضافه می‌شن و\n * بلافاصله بعدش پاک می‌شن.\n *\n * یه فایده‌ی جانبیِ مهم دیگه هم داره: روی touchmove مقدار `{ passive: false }`\n * ست می‌شه و preventDefault صدا زده می‌شه، پس در حین درگ کردنِ thumb روی\n * موبایل، صفحه اسکرول نمی‌خوره (باگی که با @HostListener قبلی وجود داشت،\n * چون هیچ‌جا preventDefault روی touchmove صدا زده نمی‌شد).\n */\nexport interface DragSessionCallbacks {\n onMove: (ev: MouseEvent | TouchEvent) => void;\n onEnd?: (ev: MouseEvent | TouchEvent) => void;\n}\n\n/** با فراخوانی این تابع (مثلاً داخل dragStart) یک نشست‌ درگ شروع می‌شه. */\nexport function startDragSession({ onMove, onEnd }: DragSessionCallbacks): () => void {\n const handleMove = (ev: MouseEvent | TouchEvent) => {\n if (ev.type === 'touchmove') {\n // جلوگیری از اسکرول شدن صفحه هم‌زمان با درگ کردن روی موبایل/تاچ\n ev.preventDefault();\n }\n onMove(ev);\n };\n\n const handleEnd = (ev: MouseEvent | TouchEvent) => {\n stop();\n onEnd?.(ev);\n };\n\n const stop = (): void => {\n document.removeEventListener('mousemove', handleMove);\n document.removeEventListener('touchmove', handleMove);\n document.removeEventListener('mouseup', handleEnd);\n document.removeEventListener('touchend', handleEnd);\n document.removeEventListener('touchcancel', handleEnd);\n };\n\n document.addEventListener('mousemove', handleMove);\n document.addEventListener('touchmove', handleMove, { passive: false });\n document.addEventListener('mouseup', handleEnd);\n document.addEventListener('touchend', handleEnd);\n document.addEventListener('touchcancel', handleEnd);\n\n // تابع stop برگردونده می‌شه تا هم بشه دستی صداش زد (مثلاً در ngOnDestroy،\n // اگه کامپوننت درست وسط یه درگ نابود بشه) و هم به‌صورت خودکار روی\n // mouseup/touchend صدا زده می‌شه.\n return stop;\n}\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnDestroy,\n Output,\n ViewChild,\n forwardRef,\n type OnInit,\n} from '@angular/core';\nimport { getOffsetPosition } from '../utils/get-offset-position';\nimport { startDragSession } from '../utils/drag-session';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\n\nexport interface IValue {\n id?: string;\n value: number;\n}\nexport class ValueModel {\n id!: string;\n value!: number;\n x?: number;\n thumb?: HTMLElement;\n color?: string;\n}\n\n@Component({\n selector: 'range-slider',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule],\n templateUrl: './range-slider.component.html',\n styleUrls: ['./range-slider.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RangeSliderComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => RangeSliderComponent),\n multi: true,\n },\n ],\n})\nexport class RangeSliderComponent implements OnInit, OnDestroy, ControlValueAccessor, Validator {\n /**\n * The step value for the slider\n */\n @Input() step = 1;\n /**\n * The minimum value for the slider\n */\n @Input() min = 0;\n /**\n * The maximum value for the slider\n */\n @Input() max = 100;\n /**\n * The background color of the slider\n * - can use css like `background: linear-gradient(to right, red, blue);`\n * - or a solid color like `background: red;`\n */\n @Input() background?: string;\n /**\n * If true, the background will be transparent\n */\n @Input() isBgTransparent = false;\n /**\n * If true, clicking on the slider will add a new range at that position\n */\n @Input() addNewRangeOnClick = false;\n\n /**\n * The current value of the slider\n */\n @Output() change = new EventEmitter<IValue[]>();\n @Input() selectedIndex?: number;\n @Output() selectedIndexChange = new EventEmitter<number>();\n\n private isDragging = false;\n\n @ViewChild('slider', { static: true }) slider!: ElementRef<HTMLDivElement>;\n @ViewChild('thumb', { static: false }) thumb?: ElementRef<HTMLDivElement>;\n\n values: ValueModel[] = [];\n isDisabled = false;\n protected _onChange = (value: IValue[]) => {};\n protected _onTouched = () => {};\n protected _validatorOnChange = () => {};\n private sliderRect?: DOMRect;\n private thumbRect?: DOMRect;\n private stopDrag?: () => void;\n\n constructor(private changeDetectorRef: ChangeDetectorRef) {}\n ngOnInit(): void {}\n ngOnDestroy(): void {\n this.stopDrag?.();\n }\n\n private generateId(): string {\n let id = 'ngx-thumb-' + Math.random().toString(36).substring(2, 9);\n if (this.values.findIndex((x) => x.id == id) >= 0) {\n return this.generateId();\n }\n return id;\n }\n\n writeValue(items?: IValue[]): void {\n this.values = [];\n if (!items || !Array.isArray(items)) {\n items = [];\n }\n if (items.length === 0) {\n items.push({ id: this.generateId(), value: this.min });\n }\n for (let val of items) {\n if (typeof val.value !== 'number' || isNaN(val.value)) {\n throw new Error('RangeSliderComponent: value must be an array of numbers');\n }\n let newVal = +val.value;\n if (newVal < +this.min) newVal = +this.min;\n else if (newVal > +this.max) newVal = +this.max;\n this.values.push({\n ...val,\n id: val.id ?? this.generateId(),\n value: newVal,\n });\n }\n this.updateAllThumbPositions();\n }\n validate(control: AbstractControl): ValidationErrors | null {\n return null; // TODO: return errors if any;\n }\n registerOnValidatorChange?(fn: () => void): void {\n this._validatorOnChange = fn;\n }\n\n registerOnChange(fn: any): void {\n this._onChange = fn;\n }\n registerOnTouched(fn: any): void {\n this._onTouched = fn;\n }\n setDisabledState?(disabled: boolean): void {\n this.isDisabled = disabled;\n }\n private updateRects() {\n this.sliderRect = this.slider.nativeElement.getBoundingClientRect();\n if (this.thumb) {\n this.thumbRect = this.thumb.nativeElement.getBoundingClientRect();\n }\n }\n @HostListener('window:resize')\n onResize() {\n this.writeValue(this.values);\n }\n dragStart(ev: MouseEvent | TouchEvent, index: number) {\n ev.stopPropagation();\n ev.preventDefault();\n this.isDragging = true;\n this.selectedIndex = index;\n this.updateRects();\n this.updateThumbPosition(ev);\n this.selectedIndexChange.emit(this.selectedIndex);\n\n this.stopDrag?.();\n this.stopDrag = startDragSession({\n onMove: (moveEv) => this.updateThumbPosition(moveEv),\n onEnd: () => {\n this.isDragging = false;\n this.stopDrag = undefined;\n this.changeDetectorRef.markForCheck();\n },\n });\n }\n\n addnewRangeOnSliderClick(event: MouseEvent | TouchEvent) {\n if (!this.addNewRangeOnClick) return;\n const position = getOffsetPosition(event, this.slider.nativeElement);\n const newValue = this.min + (position.x / this.sliderRect!.width) * (this.max - this.min);\n // must be add with order by position\n const indexByOrderValue = this.values.findIndex((item) => item.value > newValue);\n const insertIndex = indexByOrderValue >= 0 ? indexByOrderValue : this.values.length;\n this.values.splice(insertIndex, 0, {\n id: this.generateId(),\n value: newValue,\n });\n this.dragStart(event, insertIndex);\n // this.updateAllThumbPositions();\n // this.valueChanged();\n }\n\n private updateThumbPosition(ev: MouseEvent | TouchEvent) {\n if (!this.isDragging || this.selectedIndex == undefined) return;\n if (!this.sliderRect || !this.thumbRect) this.updateRects();\n let position = getOffsetPosition(ev, this.slider.nativeElement);\n let thumbRec = this.thumbRect!;\n position.x -= thumbRec.width / 2;\n let sliderRec = this.sliderRect!;\n const thumb = this.values[this.selectedIndex];\n if (position.x < 0) {\n thumb.x = 0;\n } else if (position.x > sliderRec.width - thumbRec.width) {\n thumb.x = sliderRec.width - thumbRec.width;\n } else {\n thumb.x = position.x;\n }\n this.setValueByPosition(thumb, thumbRec, sliderRec);\n this.changeDetectorRef.markForCheck();\n }\n\n updateAllThumbPositions() {\n // wait to add thumbs\n setTimeout(() => {\n this.updateRects();\n const sliderRec = this.sliderRect!;\n const thumbRec = this.thumbRect!;\n for (let item of this.values) {\n item.x =\n ((item.value - this.min) * (sliderRec.width - thumbRec.width)) / (this.max - this.min);\n }\n this.changeDetectorRef.detectChanges();\n });\n }\n setValueByPosition(thumb: ValueModel, thumbRec: DOMRect, sliderRec: DOMRect) {\n const percentage = (thumb.x ?? 0) / (sliderRec.width - thumbRec.width);\n let newValue = this.min + percentage * (this.max - this.min);\n const stepDecimalPlaces = (this.step.toString().split('.')[1] || '').length;\n newValue = parseFloat(\n (Math.round(newValue / this.step) * this.step).toFixed(stepDecimalPlaces),\n );\n let value = Math.min(Math.max(newValue, this.min), this.max);\n if (thumb.value !== value) {\n thumb.value = value;\n this.valueChanged();\n }\n }\n\n valueChanged() {\n const v = this.values; // this.values.map(({ x, thumb, ...rest }) => ({ ...rest }));\n this._onChange(v);\n this.change.emit(v);\n }\n}\n","<div class=\"slider-container\">\n <ng-content></ng-content>\n <div\n #slider\n class=\"slider\"\n [class.add-range-cursor]=\"addNewRangeOnClick\"\n [ngStyle]=\"{ '--ngx-slider-bg': background }\"\n [class.bg-transparent]=\"isBgTransparent\"\n (mousedown)=\"addnewRangeOnSliderClick($event)\"\n (touchstart)=\"addnewRangeOnSliderClick($event)\">\n @for (item of values; track $index; let i = $index) {\n <div\n class=\"thumb\"\n [class.is-active]=\"selectedIndex == i\"\n #thumb\n [style.left.px]=\"item.x\"\n [style.background]=\"item.color\"\n [title]=\"item.value\"\n (mousedown)=\"dragStart($event, i)\"\n (touchstart)=\"dragStart($event, i)\"></div>\n }\n </div>\n</div>\n\n<!-- {{ selectedIndex }}\n<pre dir=\"ltr\" style=\"text-align: left\">{{ values | json }}</pre> -->\n","import {\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnDestroy,\n Output,\n ViewChild,\n forwardRef,\n} from '@angular/core';\nimport { getOffsetPosition } from '../utils/get-offset-position';\nimport {\n NG_VALUE_ACCESSOR,\n ControlValueAccessor,\n FormControl,\n AbstractControl,\n ValidationErrors,\n} from '@angular/forms';\nimport { IPosition } from '../contracts/IPosition';\nimport { startDragSession } from '../utils/drag-session';\n\n@Component({\n selector: 'saturation',\n standalone: true,\n imports: [],\n templateUrl: './saturation.component.html',\n styleUrl: './saturation.component.scss',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SaturationComponent),\n multi: true,\n },\n ],\n})\nexport class SaturationComponent implements ControlValueAccessor, OnDestroy {\n @Input() width?: number;\n @Input() height?: number;\n @Input() color = 'red';\n @Input() step = 1;\n @Input() min: IPosition = { x: 0, y: 0 };\n @Input() max = { x: 100, y: 100 };\n @Output() change = new EventEmitter<IPosition>();\n\n isDragging = false;\n @ViewChild('saturation', { static: true }) saturation!: ElementRef<HTMLDivElement>;\n @ViewChild('thumb', { static: true }) thumb!: ElementRef<HTMLDivElement>;\n x = 0;\n y = 0;\n myControl = new FormControl<IPosition | null>(null);\n isDisabled = false;\n protected _onChange = (value: any) => {};\n protected _onTouched = () => {};\n protected _validatorOnChange = () => {};\n\n private saturationRect?: DOMRect;\n private thumbRect?: DOMRect;\n private stopDrag?: () => void;\n\n constructor() {}\n\n ngOnDestroy(): void {\n // اگه کامپوننت درست وسط یه درگ نابود بشه (مثلاً پیکر بسته بشه)، باید\n // listenerهای document رو دستی پاک کنیم؛ برخلاف @HostListener که\n // انگیولار خودش موقع destroy پاکش می‌کرد، این‌جا چون addEventListener\n // دستیه، خودمون مسئول پاک‌سازی‌شیم.\n this.stopDrag?.();\n }\n\n private updateRects() {\n this.saturationRect = this.saturation.nativeElement.getBoundingClientRect();\n this.thumbRect = this.thumb.nativeElement.getBoundingClientRect();\n }\n\n writeValue(val?: IPosition | null): void {\n if (!val) val = { x: 0, y: 0 };\n let value: IPosition = val;\n this.myControl.setValue(value, { emitEvent: false });\n this.updateRects();\n const saturationRec = this.saturationRect!;\n const thumbRec = this.thumbRect!;\n this.x =\n ((value.x - this.min.x) * (saturationRec.width - thumbRec.width / 2)) /\n (this.max.x - this.min.x);\n this.y =\n ((value.y - this.min.y) * (saturationRec.height - thumbRec.height / 2)) /\n (this.max.y - this.min.y);\n if (val !== value) {\n this.valueChanged(value);\n }\n }\n validate(control: AbstractControl): ValidationErrors | null {\n return this.myControl.errors;\n }\n registerOnValidatorChange?(fn: () => void): void {\n this._validatorOnChange = fn;\n }\n\n registerOnChange(fn: any): void {\n this._onChange = fn;\n }\n registerOnTouched(fn: any): void {\n this._onTouched = fn;\n }\n setDisabledState?(disabled: boolean): void {\n this.isDisabled = disabled;\n if (disabled) this.myControl.disable();\n else this.myControl.enable();\n }\n\n dragStart(ev: MouseEvent | TouchEvent) {\n ev.stopPropagation();\n ev.preventDefault();\n this.isDragging = true;\n this.updateRects();\n this.updatePosition(ev);\n this.stopDrag?.();\n this.stopDrag = startDragSession({\n onMove: (moveEv) => this.updatePosition(moveEv),\n onEnd: () => {\n this.isDragging = false;\n this.stopDrag = undefined;\n },\n });\n }\n\n @HostListener('window:resize')\n onResize() {\n this.writeValue(this.myControl.value);\n }\n\n private updatePosition(ev: MouseEvent | TouchEvent) {\n if (!this.isDragging) return;\n if (!this.saturationRect || !this.thumbRect) this.updateRects();\n let position = getOffsetPosition(ev, this.saturation.nativeElement);\n let thumbRec = this.thumbRect!;\n let saturationRec = this.saturationRect!;\n if (position.x < 0) {\n this.x = 0;\n } else if (position.x > saturationRec.width - (thumbRec.width / 2 - 3)) {\n this.x = saturationRec.width - (thumbRec.width / 2 - 3);\n } else {\n this.x = position.x;\n }\n // this.x = this.x - thumbRec.width / 2;\n\n if (position.y < 0) {\n this.y = 0;\n } else if (position.y > saturationRec.height - (thumbRec.height / 2 - 3)) {\n this.y = saturationRec.height - (thumbRec.height / 2 - 3);\n } else {\n this.y = position.y;\n }\n // this.y = this.y - thumbRec.height / 2;\n this.setValueByPosition(thumbRec, saturationRec);\n }\n\n setValueByPosition(thumbRec: DOMRect, saturationRec: DOMRect) {\n const percentageX = this.x / (saturationRec.width - thumbRec.width);\n let newValueX = this.min.x + percentageX * (this.max.x - this.min.x);\n newValueX = Math.round(newValueX / this.step) * this.step;\n let valueX = Math.min(Math.max(newValueX, this.min.x), this.max.x);\n //-----------------------------\n const percentageY = this.y / (saturationRec.height - thumbRec.height);\n let newValueY = this.min.y + percentageY * (this.max.y - this.min.y);\n newValueY = Math.round(newValueY / this.step) * this.step;\n let valueY = Math.min(Math.max(newValueY, this.min.y), this.max.y);\n const newValue = { x: valueX, y: valueY };\n if (\n !this.myControl.value ||\n this.myControl.value.x !== valueX ||\n this.myControl.value.y !== valueY\n ) {\n this.valueChanged(newValue);\n }\n }\n\n valueChanged(value: IPosition) {\n this.myControl.setValue(value, { emitEvent: false });\n this._onChange(value);\n this.change.emit(value);\n }\n}\n","<div\n class=\"saturation-container\"\n [style.width.px]=\"width\"\n [style.height.px]=\"height\"\n (mousedown)=\"dragStart($event)\"\n (touchstart)=\"dragStart($event)\">\n <div class=\"saturation\" #saturation>\n <div class=\"s-bg\" [style.background]=\"color\"></div>\n <div class=\"s-white\"></div>\n <div class=\"s-black\"></div>\n </div>\n <div class=\"thumb\" #thumb [style.left.px]=\"x\" [style.top.px]=\"y\"></div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnDestroy,\n Output,\n ViewChild,\n forwardRef,\n inject,\n type OnInit,\n} from '@angular/core';\nimport { getOffsetPosition } from '../utils/get-offset-position';\nimport { startDragSession } from '../utils/drag-session';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormControl,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n Validators,\n} from '@angular/forms';\n\n@Component({\n selector: 'slider',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './slider.component.html',\n styleUrls: ['./slider.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SliderComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => SliderComponent),\n multi: true,\n },\n ],\n})\nexport class SliderComponent implements OnInit, OnDestroy, ControlValueAccessor, Validator {\n @Input() step = 1;\n @Input() min = 0;\n @Input() max = 100;\n @Input() background?: string;\n @Input() isBgTransparent = false;\n @Output() change = new EventEmitter<number>();\n isDragging = false;\n @ViewChild('slider', { static: true }) slider!: ElementRef<HTMLDivElement>;\n @ViewChild('thumb', { static: true }) thumb!: ElementRef<HTMLDivElement>;\n x = 0;\n myControl = new FormControl<number | null>(null);\n isDisabled = false;\n protected _onChange = (value: any) => {};\n protected _onTouched = () => {};\n protected _validatorOnChange = () => {};\n private sliderRect?: DOMRect;\n private thumbRect?: DOMRect;\n private stopDrag?: () => void;\n private readonly cd = inject(ChangeDetectorRef);\n constructor() {}\n ngOnInit(): void {\n this.myControl.setValidators([Validators.min(this.min), Validators.max(this.max)]);\n }\n\n ngOnDestroy(): void {\n this.stopDrag?.();\n }\n\n private updateRects() {\n this.sliderRect = this.slider.nativeElement.getBoundingClientRect();\n this.thumbRect = this.thumb.nativeElement.getBoundingClientRect();\n }\n\n writeValue(val?: number | string | null): void {\n let value = 0;\n if (!val) value = 0;\n else if (+val < +this.min) value = +this.min;\n else if (+val > +this.max) value = +this.max;\n else value = +val;\n this.myControl.setValue(value, { emitEvent: false });\n this.updateRects();\n const sliderRec = this.sliderRect!;\n const thumbRec = this.thumbRect!;\n this.x = ((value - this.min) * (sliderRec.width - thumbRec.width)) / (this.max - this.min);\n if (val !== value) {\n this.valueChanged(value);\n }\n }\n validate(control: AbstractControl): ValidationErrors | null {\n return this.myControl.errors;\n }\n registerOnValidatorChange?(fn: () => void): void {\n this._validatorOnChange = fn;\n }\n\n registerOnChange(fn: any): void {\n this._onChange = fn;\n }\n registerOnTouched(fn: any): void {\n this._onTouched = fn;\n }\n setDisabledState?(disabled: boolean): void {\n this.isDisabled = disabled;\n if (disabled) this.myControl.disable();\n else this.myControl.enable();\n }\n\n dragStart(ev: MouseEvent | TouchEvent) {\n ev.stopPropagation();\n ev.preventDefault();\n this.isDragging = true;\n this.updateRects();\n this.updatePosition(ev);\n this.stopDrag?.();\n this.stopDrag = startDragSession({\n onMove: (moveEv) => this.updatePosition(moveEv),\n onEnd: () => {\n this.isDragging = false;\n this.stopDrag = undefined;\n this.cd.markForCheck();\n },\n });\n }\n\n @HostListener('window:resize')\n onResize() {\n this.writeValue(this.myControl.value);\n }\n\n private updatePosition(ev: MouseEvent | TouchEvent) {\n if (!this.isDragging) return;\n if (!this.sliderRect || !this.thumbRect) this.updateRects();\n let position = getOffsetPosition(ev, this.slider.nativeElement);\n let thumbRec = this.thumbRect!;\n position.x -= thumbRec.width / 2;\n let sliderRec = this.sliderRect!;\n if (position.x < 0) {\n this.x = 0;\n } else if (position.x > sliderRec.width - thumbRec.width) {\n this.x = sliderRec.width - thumbRec.width;\n } else {\n this.x = position.x;\n }\n this.setValueByPosition(thumbRec, sliderRec);\n // OnPush + addEventListener دستی (به‌جای HostListener) یعنی خودمون باید\n // view رو dirty کنیم، وگرنه thumb حین درگ روی صفحه آپدیت نمی‌شه.\n this.cd.markForCheck();\n }\n\n setValueByPosition(thumbRec: DOMRect, sliderRec: DOMRect) {\n const percentage = this.x / (sliderRec.width - thumbRec.width);\n let newValue = this.min + percentage * (this.max - this.min);\n const stepDecimalPlaces = (this.step.toString().split('.')[1] || '').length;\n newValue = parseFloat(\n (Math.round(newValue / this.step) * this.step).toFixed(stepDecimalPlaces),\n );\n let value = Math.min(Math.max(newValue, this.min), this.max);\n if (this.myControl.value !== value) {\n this.valueChanged(value);\n }\n }\n\n valueChanged(value: number) {\n this.myControl.setValue(value, { emitEvent: false });\n this._onChange(value);\n this.change.emit(value);\n }\n}\n","<div class=\"slider-container\">\n <ng-content></ng-content>\n <div\n #slider\n class=\"slider\"\n (mousedown)=\"dragStart($event)\"\n (touchstart)=\"dragStart($event)\"\n [ngStyle]=\"{ '--ngx-slider-bg': background }\"\n [class.bg-transparent]=\"isBgTransparent\">\n <div class=\"thumb\" #thumb [style.left.px]=\"x\" [title]=\"myControl.value\"></div>\n </div>\n</div>\n","function isPlainObject(value: unknown): value is Record<string, any> {\n return (\n value !== null && typeof value === 'object' && Object.getPrototypeOf(value) === Object.prototype\n );\n}\n\nexport function mergeConfig<T>(base: T, override?: Partial<T>): T {\n if (override == null) {\n return structuredClone(base);\n }\n\n return merge(base, override) as T;\n}\n\nfunction merge(base: any, override: any): any {\n if (override === undefined) {\n return base;\n }\n\n if (base === undefined) {\n return override;\n }\n\n if (Array.isArray(base) && Array.isArray(override)) {\n return [...override];\n }\n\n if (isPlainObject(base) && isPlainObject(override)) {\n const result: Record<string, any> = {};\n\n const keys = new Set([...Object.keys(base), ...Object.keys(override)]);\n\n for (const key of keys) {\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n continue;\n }\n\n result[key] = merge(base[key], override[key]);\n }\n\n return result;\n }\n\n // Primitive / Function / Class / Date / RegExp ...\n return override;\n}\n","import { inject, InjectionToken } from '@angular/core';\n\nexport const WINDOW = new InjectionToken<Window | null>('WINDOW', {\n factory: () => (typeof window !== 'undefined' ? window : null),\n});\n","export function randomStrnig(extraLength = 4, useNumeric = false) {\n const len = Math.max(0, Math.floor(extraLength));\n if (len === 0) return '';\n\n let charset = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\n if (useNumeric) {\n charset += '0123456789';\n }\n const cryptoObj =\n typeof globalThis !== 'undefined'\n ? (globalThis as unknown as { crypto?: Crypto }).crypto\n : undefined;\n const out: string[] = new Array(len);\n\n if (cryptoObj?.getRandomValues) {\n const bytes = new Uint8Array(len);\n cryptoObj.getRandomValues(bytes);\n for (let i = 0; i < len; i++) {\n out[i] = charset[bytes[i] % charset.length];\n }\n } else {\n for (let i = 0; i < len; i++) {\n out[i] = charset[Math.floor(Math.random() * charset.length)];\n }\n }\n\n return `${Date.now().toString(36)}-${out.join('')}`;\n}\n","export function makeConfetti(doc: Document, wrap: HTMLElement) {\n wrap.innerHTML = '';\n const colors = ['#3ee08f', '#43e0d8', '#8b7bff', '#ffc45c'];\n for (let i = 0; i < 24; i++) {\n const s = doc.createElement('span');\n s.style.left = Math.random() * 100 + '%';\n s.style.background = colors[i % colors.length];\n s.style.animationDelay = Math.random() * 0.4 + 's';\n s.style.animationDuration = 1.2 + Math.random() * 0.8 + 's';\n s.style.borderRadius = Math.random() > 0.5 ? '50%' : '2px';\n wrap.appendChild(s);\n }\n}\n","export function generateSequentialGuid(): string {\n // تولید 10 بایت تصادفی\n const randomBytes = new Uint8Array(10);\n crypto.getRandomValues(randomBytes);\n\n // زمان بر حسب میلی‌ثانیه از epoch (1970)\n const now = Date.now();\n\n // 6 بایت از زمان (به big-endian)\n const timeBytes = new Uint8Array(6);\n const timeBig = BigInt(now);\n for (let i = 0; i < 6; i++) {\n timeBytes[5 - i] = Number((timeBig >> BigInt(i * 8)) & 0xffn);\n }\n\n // ترکیب: 10 بایت تصادفی + 6 بایت زمان\n const allBytes = new Uint8Array(16);\n allBytes.set(randomBytes, 0);\n allBytes.set(timeBytes, 10);\n\n // تبدیل به فرمت استاندارد GUID\n const hex = Array.from(allBytes)\n .map((b) => b.toString(16).padStart(2, '0'))\n .join('');\n\n // اضافه کردن خط تیره‌ها در مکان‌های استاندارد UUID\n return `${hex.substring(0, 8)}-${hex.substring(8, 12)}-${hex.substring(12, 16)}-${hex.substring(\n 16,\n 20,\n )}-${hex.substring(20)}`;\n}\n","/**\n * Performs a deep merge of objects and returns new object. Does not modify\n * objects (immutable) and merges arrays via concatenation.\n *\n * @param {...object} objects - Objects to merge\n * @returns {object} New object with merged key/values\n */\nexport function mergeDeep(...objects: any[]) {\n const isObject = (obj: any) => obj && typeof obj === 'object';\n\n return objects.reduce((prev, obj) => {\n Object.keys(obj).forEach((key) => {\n const pVal = prev[key];\n const oVal = obj[key];\n\n if (Array.isArray(pVal) && Array.isArray(oVal)) {\n prev[key] = pVal.concat(...oVal);\n } else if (isObject(pVal) && isObject(oVal)) {\n prev[key] = mergeDeep(pVal, oVal);\n } else {\n prev[key] = oVal;\n }\n });\n\n return prev;\n }, {});\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { Inject, Injectable, PLATFORM_ID } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class BrowserService {\n constructor(@Inject(PLATFORM_ID) private platformId: object) {}\n\n get isBrowser(): boolean {\n return isPlatformBrowser(this.platformId);\n }\n\n get prefersDarkMode(): boolean {\n if (!this.isBrowser) return false;\n return window.matchMedia('(prefers-color-scheme: dark)').matches;\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { computed, DestroyRef, inject, Injectable, signal } from '@angular/core';\n\nexport type Direction = 'ltr' | 'rtl';\n\n/**\n * جهت واقعیِ سند را تشخیص می‌دهد: اول dir روی <body>، بعد dir روی <html>،\n * و در نهایت مقدار محاسبه‌شده‌ی CSS (getComputedStyle) به‌عنوان fallback\n * (برای وقتی جهت با استایل/کلاس تنظیم شده، نه attribute مستقیم).\n */\nfunction resolveDirection(doc: Document): Direction {\n const bodyDir = doc.body?.dir;\n if (bodyDir === 'rtl' || bodyDir === 'ltr') return bodyDir;\n\n const htmlDir = doc.documentElement.dir;\n if (htmlDir === 'rtl' || htmlDir === 'ltr') return htmlDir;\n\n return getComputedStyle(doc.documentElement).direction === 'rtl' ? 'rtl' : 'ltr';\n}\n\n/**\n * جهت صفحه را به‌صورت خودکار و زنده تشخیص می‌دهد — بدون این‌که کاربرِ این\n * سرویس مجبور باشد چیزی به آن بدهد. هر تغییری در attribute های dir/class\n * روی <html> یا <body> (چه از طریق Angular، چه با یک تم‌سوییچر خارج از\n * Angular) بلافاصله signal را آپدیت می‌کند.\n *\n * نکته: effect() اینجا جواب نمی‌دهد چون هیچ‌کدام از این مقادیر (attribute\n * روی DOM) یک Signal نیستند؛ effect فقط به تغییر Signalها reactive است، نه\n * به تغییرات دلخواه DOM. برای گوش‌دادن به تغییرات DOM باید از MutationObserver\n * استفاده کرد و مقدار را دستی داخل یک Signal نوشت (که دقیقاً کاری است که\n * این سرویس انجام می‌دهد).\n */\n@Injectable({ providedIn: 'root' })\nexport class DirectionService {\n private readonly doc = inject(DOCUMENT);\n private readonly destroyRef = inject(DestroyRef);\n\n private readonly _direction = signal<Direction>(resolveDirection(this.doc));\n\n /** جهت جاری، به‌صورت Signal فقط-خواندنی. */\n readonly direction = this._direction.asReadonly();\n readonly isRtl = computed(() => this._direction() === 'rtl');\n\n constructor() {\n const observer = new MutationObserver(() => {\n const next = resolveDirection(this.doc);\n if (next !== this._direction()) {\n this._direction.set(next);\n }\n });\n\n const options: MutationObserverInit = { attributes: true, attributeFilter: ['dir', 'class'] };\n observer.observe(this.doc.documentElement, options);\n if (this.doc.body) observer.observe(this.doc.body, options);\n\n this.destroyRef.onDestroy(() => observer.disconnect());\n }\n}\n","import { ComponentRef, TemplateRef } from '@angular/core';\n\nexport class OverlayRef<T> {\n constructor(\n private readonly dialogEl: HTMLDialogElement,\n private readonly teardownFn: () => void,\n public readonly componentRef?: ComponentRef<T>,\n public readonly templateRef?: TemplateRef<T>,\n ) {}\n\n close(): void {\n this.teardownFn();\n }\n\n get nativeElement(): HTMLElement {\n return this.dialogEl;\n }\n}\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';\nimport { DirectionService } from '../services/direction.service';\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 listenersAttached = false;\n private resizeRafPending = false;\n\n private readonly doc = inject(DOCUMENT);\n private readonly abortController = new AbortController();\n private readonly directionService = inject(DirectionService);\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 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 // قبل از remove()، دیالوگ رو با متد استاندارد close() می‌بندیم؛ این کار دو\n // فایده داره که با remove() ساده به دست نمی‌اومدن:\n // ۱) فوکوس به‌صورت خودکار به همون المنتی که قبل از باز شدن دیالوگ فوکوس\n // داشت برمی‌گرده (رفتار استاندارد close() روی <dialog>) — با remove()\n // ساده این اتفاق نمی‌افته و فوکوس معمولاً روی body گم می‌شه.\n // ۲) رویداد 'close' استاندارد شلیک می‌شه، برای کدی که ممکنه به اون گوش بده.\n // در try/catch گذاشتیمش چون در محیط تست (jsdom) این متدها mock هستن و ممکنه\n // رفتار متفاوتی داشته باشن.\n try {\n if (instance.element.open) instance.element.close();\n } catch {\n /* noop */\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 = this.directionService.isRtl();\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 if (alignment === 'end') {\n // انتهای دیالوگ باید با انتهای anchor یکی باشه؛ با استفاده از پراپرتی\n // CSS «right» (به‌جای کم‌کردن دستیِ عرض از «left») این کار درست و مستقل\n // از این‌که عرض دیالوگ چقدره انجام می‌شه (قبلاً این خط باگ داشت و دیالوگ\n // رو بعد از anchor می‌ذاشت، نه هم‌تراز با لبه‌ی انتهاییِ آن).\n if (isRTL) {\n left = anchorRect.left;\n } else {\n right = vw - anchorRect.right;\n }\n }\n if (left !== 'auto') {\n left = Math.min(Math.max(left, margin), vw - dialogRect.width - margin);\n }\n if (right !== 'auto') {\n right = Math.min(Math.max(right, margin), vw - dialogRect.width - margin);\n }\n\n if (top < 0) {\n top = 0;\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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"}
1
+ {"version":3,"file":"ngx-kit-shared.mjs","sources":["../../../projects/libs/shared/utils/get-offset-position.ts","../../../projects/libs/shared/utils/drag-session.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/merge-config.ts","../../../projects/libs/shared/utils/window.ts","../../../projects/libs/shared/utils/string.ts","../../../projects/libs/shared/utils/confetti.ts","../../../projects/libs/shared/utils/sequential-guid.ts","../../../projects/libs/shared/utils/merge-deep.ts","../../../projects/libs/shared/services/browser.service.ts","../../../projects/libs/shared/services/direction.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(evt: MouseEvent | TouchEvent, parent: HTMLElement) {\n let position = {\n x: 0,\n y: 0,\n };\n\n if (evt instanceof MouseEvent) {\n position.x = evt.pageX;\n position.y = evt.pageY;\n } else if (evt.touches && evt.touches.length > 0) {\n position.x = evt.touches[0].pageX;\n position.y = evt.touches[0].pageY;\n }\n\n // Adjust for the parent's offset\n let parentRect = parent.getBoundingClientRect();\n position.x -= parentRect.left + window.scrollX;\n position.y -= parentRect.top + window.scrollY;\n\n return position;\n}\n","/**\n * تمام کامپوننت‌های قابل‌درگ کتابخانه (saturation، slider، range-slider،\n * box-shadow) قبلاً یک الگوی تکراری داشتن:\n *\n * @HostListener('document:mousemove', ['$event'])\n * @HostListener('document:touchmove', ['$event'])\n * onDrag(ev) { if (!this.isDragging) return; ... }\n *\n * مشکل: این listenerها برای کل عمر کامپوننت روی `document` باقی می‌مونن —\n * حتی وقتی اصلاً دراگی در حال انجام نیست. یعنی روی صفحه‌ای با چند تا\n * color-picker/slider، هر حرکت موس/انگشت روی کل صفحه (نه فقط روی خودِ\n * اسلایدر) باعث اجرای N تابع (به تعداد اینستنس‌ها) می‌شه که هرکدوم هم چرخه‌ی\n * زون انگیولار رو تریگر می‌کنن — یک مشکل واقعی پرفورمنس، مخصوصاً در صفحاتی\n * با چند نمونه هم‌زمان یا حرکت زیاد موس.\n *\n * این تابع جایگزین اون الگو می‌شه: listenerها فقط در طول یک دراگِ واقعی\n * (بین mousedown/touchstart تا mouseup/touchend) روی document اضافه می‌شن و\n * بلافاصله بعدش پاک می‌شن.\n *\n * یه فایده‌ی جانبیِ مهم دیگه هم داره: روی touchmove مقدار `{ passive: false }`\n * ست می‌شه و preventDefault صدا زده می‌شه، پس در حین درگ کردنِ thumb روی\n * موبایل، صفحه اسکرول نمی‌خوره (باگی که با @HostListener قبلی وجود داشت،\n * چون هیچ‌جا preventDefault روی touchmove صدا زده نمی‌شد).\n */\nexport interface DragSessionCallbacks {\n onMove: (ev: MouseEvent | TouchEvent) => void;\n onEnd?: (ev: MouseEvent | TouchEvent) => void;\n}\n\n/** با فراخوانی این تابع (مثلاً داخل dragStart) یک نشست‌ درگ شروع می‌شه. */\nexport function startDragSession({ onMove, onEnd }: DragSessionCallbacks): () => void {\n const handleMove = (ev: MouseEvent | TouchEvent) => {\n if (ev.type === 'touchmove') {\n // جلوگیری از اسکرول شدن صفحه هم‌زمان با درگ کردن روی موبایل/تاچ\n ev.preventDefault();\n }\n onMove(ev);\n };\n\n const handleEnd = (ev: MouseEvent | TouchEvent) => {\n stop();\n onEnd?.(ev);\n };\n\n const stop = (): void => {\n document.removeEventListener('mousemove', handleMove);\n document.removeEventListener('touchmove', handleMove);\n document.removeEventListener('mouseup', handleEnd);\n document.removeEventListener('touchend', handleEnd);\n document.removeEventListener('touchcancel', handleEnd);\n };\n\n document.addEventListener('mousemove', handleMove);\n document.addEventListener('touchmove', handleMove, { passive: false });\n document.addEventListener('mouseup', handleEnd);\n document.addEventListener('touchend', handleEnd);\n document.addEventListener('touchcancel', handleEnd);\n\n // تابع stop برگردونده می‌شه تا هم بشه دستی صداش زد (مثلاً در ngOnDestroy،\n // اگه کامپوننت درست وسط یه درگ نابود بشه) و هم به‌صورت خودکار روی\n // mouseup/touchend صدا زده می‌شه.\n return stop;\n}\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnDestroy,\n Output,\n ViewChild,\n forwardRef,\n type OnInit,\n} from '@angular/core';\nimport { getOffsetPosition } from '../utils/get-offset-position';\nimport { startDragSession } from '../utils/drag-session';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\n\nexport interface IValue {\n id?: string;\n value: number;\n}\nexport class ValueModel {\n id!: string;\n value!: number;\n x?: number;\n thumb?: HTMLElement;\n color?: string;\n}\n\n@Component({\n selector: 'range-slider',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule],\n templateUrl: './range-slider.component.html',\n styleUrls: ['./range-slider.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RangeSliderComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => RangeSliderComponent),\n multi: true,\n },\n ],\n})\nexport class RangeSliderComponent implements OnInit, OnDestroy, ControlValueAccessor, Validator {\n /**\n * The step value for the slider\n */\n @Input() step = 1;\n /**\n * The minimum value for the slider\n */\n @Input() min = 0;\n /**\n * The maximum value for the slider\n */\n @Input() max = 100;\n /**\n * The background color of the slider\n * - can use css like `background: linear-gradient(to right, red, blue);`\n * - or a solid color like `background: red;`\n */\n @Input() background?: string;\n /**\n * If true, the background will be transparent\n */\n @Input() isBgTransparent = false;\n /**\n * If true, clicking on the slider will add a new range at that position\n */\n @Input() addNewRangeOnClick = false;\n\n /**\n * The current value of the slider\n */\n @Output() change = new EventEmitter<IValue[]>();\n @Input() selectedIndex?: number;\n @Output() selectedIndexChange = new EventEmitter<number>();\n\n private isDragging = false;\n\n @ViewChild('slider', { static: true }) slider!: ElementRef<HTMLDivElement>;\n @ViewChild('thumb', { static: false }) thumb?: ElementRef<HTMLDivElement>;\n\n values: ValueModel[] = [];\n isDisabled = false;\n protected _onChange = (value: IValue[]) => {};\n protected _onTouched = () => {};\n protected _validatorOnChange = () => {};\n private sliderRect?: DOMRect;\n private thumbRect?: DOMRect;\n private stopDrag?: () => void;\n\n constructor(private changeDetectorRef: ChangeDetectorRef) {}\n ngOnInit(): void {}\n ngOnDestroy(): void {\n this.stopDrag?.();\n }\n\n private generateId(): string {\n let id = 'ngx-thumb-' + Math.random().toString(36).substring(2, 9);\n if (this.values.findIndex((x) => x.id == id) >= 0) {\n return this.generateId();\n }\n return id;\n }\n\n writeValue(items?: IValue[]): void {\n this.values = [];\n if (!items || !Array.isArray(items)) {\n items = [];\n }\n if (items.length === 0) {\n items.push({ id: this.generateId(), value: this.min });\n }\n for (let val of items) {\n if (typeof val.value !== 'number' || isNaN(val.value)) {\n throw new Error('RangeSliderComponent: value must be an array of numbers');\n }\n let newVal = +val.value;\n if (newVal < +this.min) newVal = +this.min;\n else if (newVal > +this.max) newVal = +this.max;\n this.values.push({\n ...val,\n id: val.id ?? this.generateId(),\n value: newVal,\n });\n }\n this.updateAllThumbPositions();\n }\n validate(control: AbstractControl): ValidationErrors | null {\n return null; // TODO: return errors if any;\n }\n registerOnValidatorChange?(fn: () => void): void {\n this._validatorOnChange = fn;\n }\n\n registerOnChange(fn: any): void {\n this._onChange = fn;\n }\n registerOnTouched(fn: any): void {\n this._onTouched = fn;\n }\n setDisabledState?(disabled: boolean): void {\n this.isDisabled = disabled;\n }\n private updateRects() {\n this.sliderRect = this.slider.nativeElement.getBoundingClientRect();\n if (this.thumb) {\n this.thumbRect = this.thumb.nativeElement.getBoundingClientRect();\n }\n }\n @HostListener('window:resize')\n onResize() {\n this.writeValue(this.values);\n }\n dragStart(ev: MouseEvent | TouchEvent, index: number) {\n ev.stopPropagation();\n ev.preventDefault();\n this.isDragging = true;\n this.selectedIndex = index;\n this.updateRects();\n this.updateThumbPosition(ev);\n this.selectedIndexChange.emit(this.selectedIndex);\n\n this.stopDrag?.();\n this.stopDrag = startDragSession({\n onMove: (moveEv) => this.updateThumbPosition(moveEv),\n onEnd: () => {\n this.isDragging = false;\n this.stopDrag = undefined;\n this.changeDetectorRef.markForCheck();\n },\n });\n }\n\n addnewRangeOnSliderClick(event: MouseEvent | TouchEvent) {\n if (!this.addNewRangeOnClick) return;\n const position = getOffsetPosition(event, this.slider.nativeElement);\n const newValue = this.min + (position.x / this.sliderRect!.width) * (this.max - this.min);\n // must be add with order by position\n const indexByOrderValue = this.values.findIndex((item) => item.value > newValue);\n const insertIndex = indexByOrderValue >= 0 ? indexByOrderValue : this.values.length;\n this.values.splice(insertIndex, 0, {\n id: this.generateId(),\n value: newValue,\n });\n this.dragStart(event, insertIndex);\n // this.updateAllThumbPositions();\n // this.valueChanged();\n }\n\n private updateThumbPosition(ev: MouseEvent | TouchEvent) {\n if (!this.isDragging || this.selectedIndex == undefined) return;\n if (!this.sliderRect || !this.thumbRect) this.updateRects();\n let position = getOffsetPosition(ev, this.slider.nativeElement);\n let thumbRec = this.thumbRect!;\n position.x -= thumbRec.width / 2;\n let sliderRec = this.sliderRect!;\n const thumb = this.values[this.selectedIndex];\n if (position.x < 0) {\n thumb.x = 0;\n } else if (position.x > sliderRec.width - thumbRec.width) {\n thumb.x = sliderRec.width - thumbRec.width;\n } else {\n thumb.x = position.x;\n }\n this.setValueByPosition(thumb, thumbRec, sliderRec);\n this.changeDetectorRef.markForCheck();\n }\n\n updateAllThumbPositions() {\n // wait to add thumbs\n setTimeout(() => {\n this.updateRects();\n const sliderRec = this.sliderRect!;\n const thumbRec = this.thumbRect!;\n for (let item of this.values) {\n item.x =\n ((item.value - this.min) * (sliderRec.width - thumbRec.width)) / (this.max - this.min);\n }\n this.changeDetectorRef.detectChanges();\n });\n }\n setValueByPosition(thumb: ValueModel, thumbRec: DOMRect, sliderRec: DOMRect) {\n const percentage = (thumb.x ?? 0) / (sliderRec.width - thumbRec.width);\n let newValue = this.min + percentage * (this.max - this.min);\n const stepDecimalPlaces = (this.step.toString().split('.')[1] || '').length;\n newValue = parseFloat(\n (Math.round(newValue / this.step) * this.step).toFixed(stepDecimalPlaces),\n );\n let value = Math.min(Math.max(newValue, this.min), this.max);\n if (thumb.value !== value) {\n thumb.value = value;\n this.valueChanged();\n }\n }\n\n valueChanged() {\n const v = this.values; // this.values.map(({ x, thumb, ...rest }) => ({ ...rest }));\n this._onChange(v);\n this.change.emit(v);\n }\n}\n","<div class=\"slider-container\">\n <ng-content></ng-content>\n <div\n #slider\n class=\"slider\"\n [class.add-range-cursor]=\"addNewRangeOnClick\"\n [ngStyle]=\"{ '--ngx-slider-bg': background }\"\n [class.bg-transparent]=\"isBgTransparent\"\n (mousedown)=\"addnewRangeOnSliderClick($event)\"\n (touchstart)=\"addnewRangeOnSliderClick($event)\">\n @for (item of values; track $index; let i = $index) {\n <div\n class=\"thumb\"\n [class.is-active]=\"selectedIndex == i\"\n #thumb\n [style.left.px]=\"item.x\"\n [style.background]=\"item.color\"\n [title]=\"item.value\"\n (mousedown)=\"dragStart($event, i)\"\n (touchstart)=\"dragStart($event, i)\"></div>\n }\n </div>\n</div>\n\n<!-- {{ selectedIndex }}\n<pre dir=\"ltr\" style=\"text-align: left\">{{ values | json }}</pre> -->\n","import {\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnDestroy,\n Output,\n ViewChild,\n forwardRef,\n} from '@angular/core';\nimport { getOffsetPosition } from '../utils/get-offset-position';\nimport {\n NG_VALUE_ACCESSOR,\n ControlValueAccessor,\n FormControl,\n AbstractControl,\n ValidationErrors,\n} from '@angular/forms';\nimport { IPosition } from '../contracts/IPosition';\nimport { startDragSession } from '../utils/drag-session';\n\n@Component({\n selector: 'saturation',\n standalone: true,\n imports: [],\n templateUrl: './saturation.component.html',\n styleUrl: './saturation.component.scss',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SaturationComponent),\n multi: true,\n },\n ],\n})\nexport class SaturationComponent implements ControlValueAccessor, OnDestroy {\n @Input() width?: number;\n @Input() height?: number;\n @Input() color = 'red';\n @Input() step = 1;\n @Input() min: IPosition = { x: 0, y: 0 };\n @Input() max = { x: 100, y: 100 };\n @Output() change = new EventEmitter<IPosition>();\n\n isDragging = false;\n @ViewChild('saturation', { static: true }) saturation!: ElementRef<HTMLDivElement>;\n @ViewChild('thumb', { static: true }) thumb!: ElementRef<HTMLDivElement>;\n x = 0;\n y = 0;\n myControl = new FormControl<IPosition | null>(null);\n isDisabled = false;\n protected _onChange = (value: any) => {};\n protected _onTouched = () => {};\n protected _validatorOnChange = () => {};\n\n private saturationRect?: DOMRect;\n private thumbRect?: DOMRect;\n private stopDrag?: () => void;\n\n constructor() {}\n\n ngOnDestroy(): void {\n // اگه کامپوننت درست وسط یه درگ نابود بشه (مثلاً پیکر بسته بشه)، باید\n // listenerهای document رو دستی پاک کنیم؛ برخلاف @HostListener که\n // انگیولار خودش موقع destroy پاکش می‌کرد، این‌جا چون addEventListener\n // دستیه، خودمون مسئول پاک‌سازی‌شیم.\n this.stopDrag?.();\n }\n\n private updateRects() {\n this.saturationRect = this.saturation.nativeElement.getBoundingClientRect();\n this.thumbRect = this.thumb.nativeElement.getBoundingClientRect();\n }\n\n writeValue(val?: IPosition | null): void {\n if (!val) val = { x: 0, y: 0 };\n let value: IPosition = val;\n this.myControl.setValue(value, { emitEvent: false });\n this.updateRects();\n const saturationRec = this.saturationRect!;\n const thumbRec = this.thumbRect!;\n this.x =\n ((value.x - this.min.x) * (saturationRec.width - thumbRec.width / 2)) /\n (this.max.x - this.min.x);\n this.y =\n ((value.y - this.min.y) * (saturationRec.height - thumbRec.height / 2)) /\n (this.max.y - this.min.y);\n if (val !== value) {\n this.valueChanged(value);\n }\n }\n validate(control: AbstractControl): ValidationErrors | null {\n return this.myControl.errors;\n }\n registerOnValidatorChange?(fn: () => void): void {\n this._validatorOnChange = fn;\n }\n\n registerOnChange(fn: any): void {\n this._onChange = fn;\n }\n registerOnTouched(fn: any): void {\n this._onTouched = fn;\n }\n setDisabledState?(disabled: boolean): void {\n this.isDisabled = disabled;\n if (disabled) this.myControl.disable();\n else this.myControl.enable();\n }\n\n dragStart(ev: MouseEvent | TouchEvent) {\n ev.stopPropagation();\n ev.preventDefault();\n this.isDragging = true;\n this.updateRects();\n this.updatePosition(ev);\n this.stopDrag?.();\n this.stopDrag = startDragSession({\n onMove: (moveEv) => this.updatePosition(moveEv),\n onEnd: () => {\n this.isDragging = false;\n this.stopDrag = undefined;\n },\n });\n }\n\n @HostListener('window:resize')\n onResize() {\n this.writeValue(this.myControl.value);\n }\n\n private updatePosition(ev: MouseEvent | TouchEvent) {\n if (!this.isDragging) return;\n if (!this.saturationRect || !this.thumbRect) this.updateRects();\n let position = getOffsetPosition(ev, this.saturation.nativeElement);\n let thumbRec = this.thumbRect!;\n let saturationRec = this.saturationRect!;\n if (position.x < 0) {\n this.x = 0;\n } else if (position.x > saturationRec.width - (thumbRec.width / 2 - 3)) {\n this.x = saturationRec.width - (thumbRec.width / 2 - 3);\n } else {\n this.x = position.x;\n }\n // this.x = this.x - thumbRec.width / 2;\n\n if (position.y < 0) {\n this.y = 0;\n } else if (position.y > saturationRec.height - (thumbRec.height / 2 - 3)) {\n this.y = saturationRec.height - (thumbRec.height / 2 - 3);\n } else {\n this.y = position.y;\n }\n // this.y = this.y - thumbRec.height / 2;\n this.setValueByPosition(thumbRec, saturationRec);\n }\n\n setValueByPosition(thumbRec: DOMRect, saturationRec: DOMRect) {\n const percentageX = this.x / (saturationRec.width - thumbRec.width);\n let newValueX = this.min.x + percentageX * (this.max.x - this.min.x);\n newValueX = Math.round(newValueX / this.step) * this.step;\n let valueX = Math.min(Math.max(newValueX, this.min.x), this.max.x);\n //-----------------------------\n const percentageY = this.y / (saturationRec.height - thumbRec.height);\n let newValueY = this.min.y + percentageY * (this.max.y - this.min.y);\n newValueY = Math.round(newValueY / this.step) * this.step;\n let valueY = Math.min(Math.max(newValueY, this.min.y), this.max.y);\n const newValue = { x: valueX, y: valueY };\n if (\n !this.myControl.value ||\n this.myControl.value.x !== valueX ||\n this.myControl.value.y !== valueY\n ) {\n this.valueChanged(newValue);\n }\n }\n\n valueChanged(value: IPosition) {\n this.myControl.setValue(value, { emitEvent: false });\n this._onChange(value);\n this.change.emit(value);\n }\n}\n","<div\n class=\"saturation-container\"\n [style.width.px]=\"width\"\n [style.height.px]=\"height\"\n (mousedown)=\"dragStart($event)\"\n (touchstart)=\"dragStart($event)\">\n <div class=\"saturation\" #saturation>\n <div class=\"s-bg\" [style.background]=\"color\"></div>\n <div class=\"s-white\"></div>\n <div class=\"s-black\"></div>\n </div>\n <div class=\"thumb\" #thumb [style.left.px]=\"x\" [style.top.px]=\"y\"></div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnDestroy,\n Output,\n ViewChild,\n forwardRef,\n inject,\n type OnInit,\n} from '@angular/core';\nimport { getOffsetPosition } from '../utils/get-offset-position';\nimport { startDragSession } from '../utils/drag-session';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormControl,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n Validators,\n} from '@angular/forms';\n\n@Component({\n selector: 'slider',\n standalone: true,\n imports: [CommonModule],\n templateUrl: './slider.component.html',\n styleUrls: ['./slider.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SliderComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => SliderComponent),\n multi: true,\n },\n ],\n})\nexport class SliderComponent implements OnInit, OnDestroy, ControlValueAccessor, Validator {\n @Input() step = 1;\n @Input() min = 0;\n @Input() max = 100;\n @Input() background?: string;\n @Input() isBgTransparent = false;\n @Output() change = new EventEmitter<number>();\n isDragging = false;\n @ViewChild('slider', { static: true }) slider!: ElementRef<HTMLDivElement>;\n @ViewChild('thumb', { static: true }) thumb!: ElementRef<HTMLDivElement>;\n x = 0;\n myControl = new FormControl<number | null>(null);\n isDisabled = false;\n protected _onChange = (value: any) => {};\n protected _onTouched = () => {};\n protected _validatorOnChange = () => {};\n private sliderRect?: DOMRect;\n private thumbRect?: DOMRect;\n private stopDrag?: () => void;\n private readonly cd = inject(ChangeDetectorRef);\n constructor() {}\n ngOnInit(): void {\n this.myControl.setValidators([Validators.min(this.min), Validators.max(this.max)]);\n }\n\n ngOnDestroy(): void {\n this.stopDrag?.();\n }\n\n private updateRects() {\n this.sliderRect = this.slider.nativeElement.getBoundingClientRect();\n this.thumbRect = this.thumb.nativeElement.getBoundingClientRect();\n }\n\n writeValue(val?: number | string | null): void {\n let value = 0;\n if (!val) value = 0;\n else if (+val < +this.min) value = +this.min;\n else if (+val > +this.max) value = +this.max;\n else value = +val;\n this.myControl.setValue(value, { emitEvent: false });\n this.updateRects();\n const sliderRec = this.sliderRect!;\n const thumbRec = this.thumbRect!;\n this.x = ((value - this.min) * (sliderRec.width - thumbRec.width)) / (this.max - this.min);\n if (val !== value) {\n this.valueChanged(value);\n }\n }\n validate(control: AbstractControl): ValidationErrors | null {\n return this.myControl.errors;\n }\n registerOnValidatorChange?(fn: () => void): void {\n this._validatorOnChange = fn;\n }\n\n registerOnChange(fn: any): void {\n this._onChange = fn;\n }\n registerOnTouched(fn: any): void {\n this._onTouched = fn;\n }\n setDisabledState?(disabled: boolean): void {\n this.isDisabled = disabled;\n if (disabled) this.myControl.disable();\n else this.myControl.enable();\n }\n\n dragStart(ev: MouseEvent | TouchEvent) {\n ev.stopPropagation();\n ev.preventDefault();\n this.isDragging = true;\n this.updateRects();\n this.updatePosition(ev);\n this.stopDrag?.();\n this.stopDrag = startDragSession({\n onMove: (moveEv) => this.updatePosition(moveEv),\n onEnd: () => {\n this.isDragging = false;\n this.stopDrag = undefined;\n this.cd.markForCheck();\n },\n });\n }\n\n @HostListener('window:resize')\n onResize() {\n this.writeValue(this.myControl.value);\n }\n\n private updatePosition(ev: MouseEvent | TouchEvent) {\n if (!this.isDragging) return;\n if (!this.sliderRect || !this.thumbRect) this.updateRects();\n let position = getOffsetPosition(ev, this.slider.nativeElement);\n let thumbRec = this.thumbRect!;\n position.x -= thumbRec.width / 2;\n let sliderRec = this.sliderRect!;\n if (position.x < 0) {\n this.x = 0;\n } else if (position.x > sliderRec.width - thumbRec.width) {\n this.x = sliderRec.width - thumbRec.width;\n } else {\n this.x = position.x;\n }\n this.setValueByPosition(thumbRec, sliderRec);\n // OnPush + addEventListener دستی (به‌جای HostListener) یعنی خودمون باید\n // view رو dirty کنیم، وگرنه thumb حین درگ روی صفحه آپدیت نمی‌شه.\n this.cd.markForCheck();\n }\n\n setValueByPosition(thumbRec: DOMRect, sliderRec: DOMRect) {\n const percentage = this.x / (sliderRec.width - thumbRec.width);\n let newValue = this.min + percentage * (this.max - this.min);\n const stepDecimalPlaces = (this.step.toString().split('.')[1] || '').length;\n newValue = parseFloat(\n (Math.round(newValue / this.step) * this.step).toFixed(stepDecimalPlaces),\n );\n let value = Math.min(Math.max(newValue, this.min), this.max);\n if (this.myControl.value !== value) {\n this.valueChanged(value);\n }\n }\n\n valueChanged(value: number) {\n this.myControl.setValue(value, { emitEvent: false });\n this._onChange(value);\n this.change.emit(value);\n }\n}\n","<div class=\"slider-container\">\n <ng-content></ng-content>\n <div\n #slider\n class=\"slider\"\n (mousedown)=\"dragStart($event)\"\n (touchstart)=\"dragStart($event)\"\n [ngStyle]=\"{ '--ngx-slider-bg': background }\"\n [class.bg-transparent]=\"isBgTransparent\">\n <div class=\"thumb\" #thumb [style.left.px]=\"x\" [title]=\"myControl.value\"></div>\n </div>\n</div>\n","function isPlainObject(value: unknown): value is Record<string, any> {\n return (\n value !== null && typeof value === 'object' && Object.getPrototypeOf(value) === Object.prototype\n );\n}\n\nexport function mergeConfig<T>(base: T, override?: Partial<T>): T {\n if (override == null) {\n return structuredClone(base);\n }\n\n return merge(base, override) as T;\n}\n\nfunction merge(base: any, override: any): any {\n if (override === undefined) {\n return base;\n }\n\n if (base === undefined) {\n return override;\n }\n\n if (Array.isArray(base) && Array.isArray(override)) {\n return [...override];\n }\n\n if (isPlainObject(base) && isPlainObject(override)) {\n const result: Record<string, any> = {};\n\n const keys = new Set([...Object.keys(base), ...Object.keys(override)]);\n\n for (const key of keys) {\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n continue;\n }\n\n result[key] = merge(base[key], override[key]);\n }\n\n return result;\n }\n\n // Primitive / Function / Class / Date / RegExp ...\n return override;\n}\n","import { inject, InjectionToken } from '@angular/core';\n\nexport const WINDOW = new InjectionToken<Window | null>('WINDOW', {\n factory: () => (typeof window !== 'undefined' ? window : null),\n});\n","export function randomStrnig(extraLength = 4, useNumeric = false) {\n const len = Math.max(0, Math.floor(extraLength));\n if (len === 0) return '';\n\n let charset = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\n if (useNumeric) {\n charset += '0123456789';\n }\n const cryptoObj =\n typeof globalThis !== 'undefined'\n ? (globalThis as unknown as { crypto?: Crypto }).crypto\n : undefined;\n const out: string[] = new Array(len);\n\n if (cryptoObj?.getRandomValues) {\n const bytes = new Uint8Array(len);\n cryptoObj.getRandomValues(bytes);\n for (let i = 0; i < len; i++) {\n out[i] = charset[bytes[i] % charset.length];\n }\n } else {\n for (let i = 0; i < len; i++) {\n out[i] = charset[Math.floor(Math.random() * charset.length)];\n }\n }\n\n return `${Date.now().toString(36)}-${out.join('')}`;\n}\n","export function makeConfetti(doc: Document, wrap: HTMLElement) {\n wrap.innerHTML = '';\n const colors = ['#3ee08f', '#43e0d8', '#8b7bff', '#ffc45c'];\n for (let i = 0; i < 24; i++) {\n const s = doc.createElement('span');\n s.style.left = Math.random() * 100 + '%';\n s.style.background = colors[i % colors.length];\n s.style.animationDelay = Math.random() * 0.4 + 's';\n s.style.animationDuration = 1.2 + Math.random() * 0.8 + 's';\n s.style.borderRadius = Math.random() > 0.5 ? '50%' : '2px';\n wrap.appendChild(s);\n }\n}\n","export function generateSequentialGuid(): string {\r\n // تولید 10 بایت تصادفی\r\n const randomBytes = new Uint8Array(10);\r\n crypto.getRandomValues(randomBytes);\r\n\r\n // زمان بر حسب میلی‌ثانیه از epoch (1970)\r\n const now = Date.now();\r\n\r\n // 6 بایت از زمان (به big-endian)\r\n const timeBytes = new Uint8Array(6);\r\n const timeBig = BigInt(now);\r\n for (let i = 0; i < 6; i++) {\r\n timeBytes[5 - i] = Number((timeBig >> BigInt(i * 8)) & 0xffn);\r\n }\r\n\r\n // ترکیب: 10 بایت تصادفی + 6 بایت زمان\r\n const allBytes = new Uint8Array(16);\r\n allBytes.set(randomBytes, 0);\r\n allBytes.set(timeBytes, 10);\r\n\r\n // تبدیل به فرمت استاندارد GUID\r\n const hex = Array.from(allBytes)\r\n .map((b) => b.toString(16).padStart(2, '0'))\r\n .join('');\r\n\r\n // اضافه کردن خط تیره‌ها در مکان‌های استاندارد UUID\r\n return `${hex.substring(0, 8)}-${hex.substring(8, 12)}-${hex.substring(12, 16)}-${hex.substring(\r\n 16,\r\n 20,\r\n )}-${hex.substring(20)}`;\r\n}\r\n","/**\r\n * Performs a deep merge of objects and returns new object. Does not modify\r\n * objects (immutable) and merges arrays via concatenation.\r\n *\r\n * @param {...object} objects - Objects to merge\r\n * @returns {object} New object with merged key/values\r\n */\r\nexport function mergeDeep(...objects: any[]) {\r\n const isObject = (obj: any) => obj && typeof obj === 'object';\r\n\r\n return objects.reduce((prev, obj) => {\r\n Object.keys(obj).forEach((key) => {\r\n const pVal = prev[key];\r\n const oVal = obj[key];\r\n\r\n if (Array.isArray(pVal) && Array.isArray(oVal)) {\r\n prev[key] = pVal.concat(...oVal);\r\n } else if (isObject(pVal) && isObject(oVal)) {\r\n prev[key] = mergeDeep(pVal, oVal);\r\n } else {\r\n prev[key] = oVal;\r\n }\r\n });\r\n\r\n return prev;\r\n }, {});\r\n}\r\n","import { isPlatformBrowser } from '@angular/common';\nimport { Inject, Injectable, PLATFORM_ID } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class BrowserService {\n constructor(@Inject(PLATFORM_ID) private platformId: object) {}\n\n get isBrowser(): boolean {\n return isPlatformBrowser(this.platformId);\n }\n\n get prefersDarkMode(): boolean {\n if (!this.isBrowser) return false;\n return window.matchMedia('(prefers-color-scheme: dark)').matches;\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { computed, DestroyRef, inject, Injectable, signal } from '@angular/core';\n\nexport type Direction = 'ltr' | 'rtl';\n\n/**\n * جهت واقعیِ سند را تشخیص می‌دهد: اول dir روی <body>، بعد dir روی <html>،\n * و در نهایت مقدار محاسبه‌شده‌ی CSS (getComputedStyle) به‌عنوان fallback\n * (برای وقتی جهت با استایل/کلاس تنظیم شده، نه attribute مستقیم).\n */\nfunction resolveDirection(doc: Document): Direction {\n const bodyDir = doc.body?.dir;\n if (bodyDir === 'rtl' || bodyDir === 'ltr') return bodyDir;\n\n const htmlDir = doc.documentElement.dir;\n if (htmlDir === 'rtl' || htmlDir === 'ltr') return htmlDir;\n\n return getComputedStyle(doc.documentElement).direction === 'rtl' ? 'rtl' : 'ltr';\n}\n\n/**\n * جهت صفحه را به‌صورت خودکار و زنده تشخیص می‌دهد — بدون این‌که کاربرِ این\n * سرویس مجبور باشد چیزی به آن بدهد. هر تغییری در attribute های dir/class\n * روی <html> یا <body> (چه از طریق Angular، چه با یک تم‌سوییچر خارج از\n * Angular) بلافاصله signal را آپدیت می‌کند.\n *\n * نکته: effect() اینجا جواب نمی‌دهد چون هیچ‌کدام از این مقادیر (attribute\n * روی DOM) یک Signal نیستند؛ effect فقط به تغییر Signalها reactive است، نه\n * به تغییرات دلخواه DOM. برای گوش‌دادن به تغییرات DOM باید از MutationObserver\n * استفاده کرد و مقدار را دستی داخل یک Signal نوشت (که دقیقاً کاری است که\n * این سرویس انجام می‌دهد).\n */\n@Injectable({ providedIn: 'root' })\nexport class DirectionService {\n private readonly doc = inject(DOCUMENT);\n private readonly destroyRef = inject(DestroyRef);\n\n private readonly _direction = signal<Direction>(resolveDirection(this.doc));\n\n /** جهت جاری، به‌صورت Signal فقط-خواندنی. */\n readonly direction = this._direction.asReadonly();\n readonly isRtl = computed(() => this._direction() === 'rtl');\n\n constructor() {\n const observer = new MutationObserver(() => {\n const next = resolveDirection(this.doc);\n if (next !== this._direction()) {\n this._direction.set(next);\n }\n });\n\n const options: MutationObserverInit = { attributes: true, attributeFilter: ['dir', 'class'] };\n observer.observe(this.doc.documentElement, options);\n if (this.doc.body) observer.observe(this.doc.body, options);\n\n this.destroyRef.onDestroy(() => observer.disconnect());\n }\n}\n","import { ComponentRef, TemplateRef } from '@angular/core';\n\nexport class OverlayRef<T> {\n constructor(\n private readonly dialogEl: HTMLDialogElement,\n private readonly teardownFn: () => void,\n public readonly componentRef?: ComponentRef<T>,\n public readonly templateRef?: TemplateRef<T>,\n ) {}\n\n close(): void {\n this.teardownFn();\n }\n\n get nativeElement(): HTMLElement {\n return this.dialogEl;\n }\n}\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';\nimport { DirectionService } from '../services/direction.service';\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 listenersAttached = false;\n private resizeRafPending = false;\n\n private readonly doc = inject(DOCUMENT);\n private readonly abortController = new AbortController();\n private readonly directionService = inject(DirectionService);\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 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 // قبل از remove()، دیالوگ رو با متد استاندارد close() می‌بندیم؛ این کار دو\n // فایده داره که با remove() ساده به دست نمی‌اومدن:\n // ۱) فوکوس به‌صورت خودکار به همون المنتی که قبل از باز شدن دیالوگ فوکوس\n // داشت برمی‌گرده (رفتار استاندارد close() روی <dialog>) — با remove()\n // ساده این اتفاق نمی‌افته و فوکوس معمولاً روی body گم می‌شه.\n // ۲) رویداد 'close' استاندارد شلیک می‌شه، برای کدی که ممکنه به اون گوش بده.\n // در try/catch گذاشتیمش چون در محیط تست (jsdom) این متدها mock هستن و ممکنه\n // رفتار متفاوتی داشته باشن.\n try {\n if (instance.element.open) instance.element.close();\n } catch {\n /* noop */\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 = this.directionService.isRtl();\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 if (alignment === 'end') {\n // انتهای دیالوگ باید با انتهای anchor یکی باشه؛ با استفاده از پراپرتی\n // CSS «right» (به‌جای کم‌کردن دستیِ عرض از «left») این کار درست و مستقل\n // از این‌که عرض دیالوگ چقدره انجام می‌شه (قبلاً این خط باگ داشت و دیالوگ\n // رو بعد از anchor می‌ذاشت، نه هم‌تراز با لبه‌ی انتهاییِ آن).\n if (isRTL) {\n left = anchorRect.left;\n } else {\n right = vw - anchorRect.right;\n }\n }\n if (left !== 'auto') {\n left = Math.min(Math.max(left, margin), vw - dialogRect.width - margin);\n }\n if (right !== 'auto') {\n right = Math.min(Math.max(right, margin), vw - dialogRect.width - margin);\n }\n\n if (top < 0) {\n top = 0;\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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"}
@@ -370,14 +370,14 @@ class NgxVirtualScrollViewport {
370
370
  }
371
371
  }
372
372
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: NgxVirtualScrollViewport, deps: [], target: i0.ɵɵFactoryTarget.Component });
373
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.0.4", type: NgxVirtualScrollViewport, isStandalone: true, selector: "ngx-virtual-scroll-viewport, ngx-virtual-scroll", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, minBufferPx: { classPropertyName: "minBufferPx", publicName: "minBufferPx", isSignal: true, isRequired: false, transformFunction: null }, maxBufferPx: { classPropertyName: "maxBufferPx", publicName: "maxBufferPx", isSignal: true, isRequired: false, transformFunction: null }, measureFn: { classPropertyName: "measureFn", publicName: "measureFn", isSignal: true, isRequired: false, transformFunction: null }, maxAxisSizePx: { classPropertyName: "maxAxisSizePx", publicName: "maxAxisSizePx", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { scrolledIndexChange: "scrolledIndexChange", rangeChange: "rangeChange" }, host: { properties: { "class.ngx-virtual-scroll-viewport-host--scrolling": "isScrolling()" }, classAttribute: "ngx-virtual-scroll-viewport-host" }, viewQueries: [{ propertyName: "scrollableRef", first: true, predicate: ["scrollable"], descendants: true, isSignal: true }, { propertyName: "wrapperRef", first: true, predicate: ["wrapper"], descendants: true, isSignal: true }], exportAs: ["ngxVirtualScrollViewport"], ngImport: i0, template: "<div #scrollable class=\"ngx-virtual-scroll-viewport__scrollable\">\n <div\n class=\"ngx-virtual-scroll-viewport__spacer\"\n [style.width.px]=\"spacerWidth()\"\n [style.height.px]=\"spacerHeight()\"\n aria-hidden=\"true\"></div>\n <div #wrapper class=\"ngx-virtual-scroll-viewport__wrapper\" [style.transform]=\"wrapperTransform()\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [":host.ngx-virtual-scroll-viewport-host{display:block;position:relative;overflow:hidden;contain:strict}.ngx-virtual-scroll-viewport__scrollable{position:relative;width:100%;height:100%;overflow:auto;-webkit-overflow-scrolling:touch;contain:strict}.ngx-virtual-scroll-viewport__spacer{position:absolute;top:0;left:0;pointer-events:none;visibility:hidden}.ngx-virtual-scroll-viewport__wrapper{position:absolute;top:0;left:0;min-width:100%;contain:layout style}:host.ngx-virtual-scroll-viewport-host--scrolling .ngx-virtual-scroll-viewport__wrapper{will-change:transform}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
373
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.0.4", type: NgxVirtualScrollViewport, isStandalone: true, selector: "ngx-virtual-scroll-viewport, ngx-virtual-scroll", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, minBufferPx: { classPropertyName: "minBufferPx", publicName: "minBufferPx", isSignal: true, isRequired: false, transformFunction: null }, maxBufferPx: { classPropertyName: "maxBufferPx", publicName: "maxBufferPx", isSignal: true, isRequired: false, transformFunction: null }, measureFn: { classPropertyName: "measureFn", publicName: "measureFn", isSignal: true, isRequired: false, transformFunction: null }, maxAxisSizePx: { classPropertyName: "maxAxisSizePx", publicName: "maxAxisSizePx", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { scrolledIndexChange: "scrolledIndexChange", rangeChange: "rangeChange" }, host: { properties: { "class.ngx-virtual-scroll-viewport-host--scrolling": "isScrolling()" }, classAttribute: "ngx-virtual-scroll-viewport-host" }, viewQueries: [{ propertyName: "scrollableRef", first: true, predicate: ["scrollable"], descendants: true, isSignal: true }, { propertyName: "wrapperRef", first: true, predicate: ["wrapper"], descendants: true, isSignal: true }], exportAs: ["ngxVirtualScrollViewport"], ngImport: i0, template: "<div #scrollable class=\"ngx-virtual-scroll-viewport__scrollable\">\r\n <div\r\n class=\"ngx-virtual-scroll-viewport__spacer\"\r\n [style.width.px]=\"spacerWidth()\"\r\n [style.height.px]=\"spacerHeight()\"\r\n aria-hidden=\"true\"></div>\r\n <div #wrapper class=\"ngx-virtual-scroll-viewport__wrapper\" [style.transform]=\"wrapperTransform()\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n", styles: [":host.ngx-virtual-scroll-viewport-host{display:block;position:relative;overflow:hidden;contain:strict}.ngx-virtual-scroll-viewport__scrollable{position:relative;width:100%;height:100%;overflow:auto;-webkit-overflow-scrolling:touch;contain:strict}.ngx-virtual-scroll-viewport__spacer{position:absolute;top:0;left:0;pointer-events:none;visibility:hidden}.ngx-virtual-scroll-viewport__wrapper{position:absolute;top:0;left:0;min-width:100%;contain:layout style}:host.ngx-virtual-scroll-viewport-host--scrolling .ngx-virtual-scroll-viewport__wrapper{will-change:transform}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
374
374
  }
375
375
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: NgxVirtualScrollViewport, decorators: [{
376
376
  type: Component,
377
377
  args: [{ selector: 'ngx-virtual-scroll-viewport, ngx-virtual-scroll', standalone: true, exportAs: 'ngxVirtualScrollViewport', changeDetection: ChangeDetectionStrategy.OnPush, host: {
378
378
  class: 'ngx-virtual-scroll-viewport-host',
379
379
  '[class.ngx-virtual-scroll-viewport-host--scrolling]': 'isScrolling()',
380
- }, template: "<div #scrollable class=\"ngx-virtual-scroll-viewport__scrollable\">\n <div\n class=\"ngx-virtual-scroll-viewport__spacer\"\n [style.width.px]=\"spacerWidth()\"\n [style.height.px]=\"spacerHeight()\"\n aria-hidden=\"true\"></div>\n <div #wrapper class=\"ngx-virtual-scroll-viewport__wrapper\" [style.transform]=\"wrapperTransform()\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [":host.ngx-virtual-scroll-viewport-host{display:block;position:relative;overflow:hidden;contain:strict}.ngx-virtual-scroll-viewport__scrollable{position:relative;width:100%;height:100%;overflow:auto;-webkit-overflow-scrolling:touch;contain:strict}.ngx-virtual-scroll-viewport__spacer{position:absolute;top:0;left:0;pointer-events:none;visibility:hidden}.ngx-virtual-scroll-viewport__wrapper{position:absolute;top:0;left:0;min-width:100%;contain:layout style}:host.ngx-virtual-scroll-viewport-host--scrolling .ngx-virtual-scroll-viewport__wrapper{will-change:transform}\n"] }]
380
+ }, template: "<div #scrollable class=\"ngx-virtual-scroll-viewport__scrollable\">\r\n <div\r\n class=\"ngx-virtual-scroll-viewport__spacer\"\r\n [style.width.px]=\"spacerWidth()\"\r\n [style.height.px]=\"spacerHeight()\"\r\n aria-hidden=\"true\"></div>\r\n <div #wrapper class=\"ngx-virtual-scroll-viewport__wrapper\" [style.transform]=\"wrapperTransform()\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n", styles: [":host.ngx-virtual-scroll-viewport-host{display:block;position:relative;overflow:hidden;contain:strict}.ngx-virtual-scroll-viewport__scrollable{position:relative;width:100%;height:100%;overflow:auto;-webkit-overflow-scrolling:touch;contain:strict}.ngx-virtual-scroll-viewport__spacer{position:absolute;top:0;left:0;pointer-events:none;visibility:hidden}.ngx-virtual-scroll-viewport__wrapper{position:absolute;top:0;left:0;min-width:100%;contain:layout style}:host.ngx-virtual-scroll-viewport-host--scrolling .ngx-virtual-scroll-viewport__wrapper{will-change:transform}\n"] }]
381
381
  }], ctorParameters: () => [], propDecorators: { items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: false }] }], minBufferPx: [{ type: i0.Input, args: [{ isSignal: true, alias: "minBufferPx", required: false }] }], maxBufferPx: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxBufferPx", required: false }] }], measureFn: [{ type: i0.Input, args: [{ isSignal: true, alias: "measureFn", required: false }] }], maxAxisSizePx: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxAxisSizePx", required: false }] }], scrolledIndexChange: [{ type: i0.Output, args: ["scrolledIndexChange"] }], rangeChange: [{ type: i0.Output, args: ["rangeChange"] }], scrollableRef: [{ type: i0.ViewChild, args: ['scrollable', { isSignal: true }] }], wrapperRef: [{ type: i0.ViewChild, args: ['wrapper', { isSignal: true }] }] } });
382
382
 
383
383
  /*