@libs-ui/components-drag-drop 0.2.158 → 0.2.160

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.
@@ -8,7 +8,7 @@ export declare class LibsUiComponentsDragContainerDirective extends LibsUiCompon
8
8
  readonly disableDragContainer: import("@angular/core").InputSignal<boolean | undefined>;
9
9
  readonly mode: import("@angular/core").InputSignalWithTransform<string, "move" | "copy" | "deepCopy">;
10
10
  readonly directionDrag: import("@angular/core").InputSignal<"horizontal" | "vertical" | undefined>;
11
- readonly viewEncapsulation: import("@angular/core").InputSignalWithTransform<"none" | "emulated", "none" | "emulated" | undefined>;
11
+ readonly viewEncapsulation: import("@angular/core").InputSignalWithTransform<"emulated" | "none", "emulated" | "none" | undefined>;
12
12
  readonly acceptDragSameGroup: import("@angular/core").InputSignalWithTransform<boolean, boolean | undefined>;
13
13
  readonly placeholder: import("@angular/core").InputSignalWithTransform<boolean, boolean | undefined>;
14
14
  readonly groupName: import("@angular/core").InputSignalWithTransform<string, string | undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"libs-ui-components-drag-drop.mjs","sources":["../../../../../libs-ui/components/drag-drop/src/defines/css.define.ts","../../../../../libs-ui/components/drag-drop/src/drag-drop.service.ts","../../../../../libs-ui/components/drag-drop/src/drag-scroll.directive.ts","../../../../../libs-ui/components/drag-drop/src/drag-drop.directive.ts","../../../../../libs-ui/components/drag-drop/src/drag-item-in-container-virtual-scroll.directive.ts","../../../../../libs-ui/components/drag-drop/src/drag-item.directive.ts","../../../../../libs-ui/components/drag-drop/src/libs-ui-components-drag-drop.ts"],"sourcesContent":["export const styleContainer = (config: Array<{ className: string, styles: string }>, viewEncapsulation: 'emulated' | 'none', groupID: string): string => {\n const defaultConfig = [{\n className: 'libs-ui-drag-drop-container',\n styles: `display:block;`\n },\n {\n className: 'libs-ui-drag-drop-item',\n styles: `\n cursor:move;`\n },\n {\n className: 'libs-ui-drag-drop-item-placeholder',\n styles: `visibility: hidden;`\n },\n {\n className: 'libs-ui-drag-drop-item-origin-placeholder',\n styles: `visibility: hidden;`\n },\n {\n className: 'libs-ui-drag-drop-item-drop-placeholder',\n styles: `visibility: hidden;`\n },\n {\n className: 'libs-ui-drag-drop-item-dragging',\n styles: `cursor:move; user-select: none; `\n },\n {\n className: 'libs-ui-drag-drop-item-disable',\n styles: ` cursor:not-allowed;`\n },\n {\n className: 'libs-ui-drag-drop-item-translate-bottom',\n styles: `position:relative;animation: translateBottom 0.35s 1 ease;`\n },\n {\n className: 'libs-ui-drag-drop-item-translate-top',\n styles: `position:relative;animation: translateTop 0.35s 1 ease;`\n },\n {\n className: 'libs-ui-drag-drop-item-translate-left',\n styles: `position:relative;animation: translateLeft 0.35s 1 ease;`\n },\n {\n className: 'libs-ui-drag-drop-item-translate-right',\n styles: `position:relative;animation: translateRight 0.35s 1 ease;`\n }];\n\n config.forEach(item => {\n const itemExits = defaultConfig.find(defaultItem => defaultItem.className === item.className);\n\n if (itemExits) {\n itemExits.styles = item.styles;\n\n return;\n }\n defaultConfig.push(item);\n });\n const groupAttr = viewEncapsulation ? `[groupID~=\"${groupID}\"]` : '';\n let styles = '';\n\n defaultConfig.forEach((item) => {\n const style = `${groupAttr}.${item.className}{${item.styles}}`;\n\n styles = `${styles}${style}\\n`;\n });\n\n styles = ` @keyframes translateTop {\n 0% {\n transform: translateY(30px);\n }\n \n 100% {\n transform: translateX(0);\n }\n }\n \n @keyframes translateBottom {\n 0% {\n transform: translateY(-30px);\n }\n \n 100% {\n transform: translateX(0px);\n }\n }\n @keyframes translateLeft {\n 0% {\n transform: translateX(30px);\n }\n \n 100% {\n transform: translateX(0);\n }\n }\n \n @keyframes translateRight {\n 0% {\n transform: translateX(-30px);\n }\n \n 100% {\n transform: translateX(0px);\n }\n }\n ${styles}`.replace(/\\n+/g, '');\n\n return styles;\n};","import { Injectable, WritableSignal, signal } from \"@angular/core\";\nimport { Subject } from \"rxjs\";\nimport { IDragEnd, IDragItemInContainerVirtualScroll, IDragLeave, IDragOver, IDragStart, IDragging, IDrop, IItemDragInfo } from \"./interfaces/event.interface\";\n@Injectable({\n providedIn: 'any'\n})\n\nexport class MoLibsSharedDragDropService {\n private itemsClick = new Array<HTMLElement>();\n private onDragItemInContainerVirtualScroll = new Subject<IDragItemInContainerVirtualScroll>();\n private itemDragInfo?: IItemDragInfo;\n private container = signal(new Map<string, { element: HTMLElement; elementScroll?: HTMLElement }>());\n private targetItemDragFlag = 'item-drag-target';\n private classContainerDefine = 'libs-ui-drag-drop-container';\n private classItemDefine = 'libs-ui-drag-drop-item';\n private onDragging = new Subject<IDragging>();\n private onDragStart = new Subject<IDragStart>();\n private onDragEnd = new Subject<IDragEnd>();\n private onDragOver = new Subject<IDragOver>();\n private onDragLeave = new Subject<IDragLeave>();\n private onDrop = new Subject<IDrop>();\n private onDropContainer = new Subject<IDrop>();\n private onItemInit = new Subject<string>();\n\n public get OnDragItemInContainerVirtualScroll(): Subject<IDragItemInContainerVirtualScroll> {\n return this.onDragItemInContainerVirtualScroll;\n }\n\n public set ItemDragInfo(data: IItemDragInfo | undefined) {\n this.itemDragInfo = data;\n }\n\n public get ItemDragInfo(): IItemDragInfo | undefined {\n return this.itemDragInfo;\n }\n\n public get Container(): WritableSignal<Map<string, { element: HTMLElement; elementScroll?: HTMLElement }>> {\n return this.container;\n }\n\n public get TargetItemDragFlag() {\n return this.targetItemDragFlag;\n }\n\n public get ClassContainerDefine() {\n return this.classContainerDefine;\n }\n\n public get ClassItemDefine() {\n return this.classItemDefine;\n }\n\n public get OnDragging() {\n return this.onDragging;\n }\n\n public get OnDragOver() {\n return this.onDragOver;\n }\n\n public get OnDragLeave() {\n return this.onDragLeave;\n }\n\n public get OnDragStart() {\n return this.onDragStart;\n }\n\n public get OnDragEnd() {\n return this.onDragEnd;\n }\n\n public get OnDropContainer() {\n return this.onDropContainer;\n }\n\n public get OnDrop() {\n return this.onDrop;\n }\n\n public get OnItemInit() {\n return this.onItemInit;\n }\n\n public get ItemClick(): Array<HTMLElement> {\n return [...this.itemsClick];\n }\n\n public set ItemClick(item: HTMLElement) {\n this.itemsClick.push(item);\n }\n\n public resetItemClick() {\n this.itemsClick.length = 0;\n }\n\n public checkElementOverAcceptElementDrag(groupNameOfContainer: string | null, groupNameOfElementDrag: string | null, groupNameOfDropTo: string | null): boolean {\n if (groupNameOfContainer !== groupNameOfElementDrag && !groupNameOfDropTo) {\n return false;\n }\n\n if (groupNameOfDropTo !== null && !groupNameOfDropTo.toString().split(';').includes(groupNameOfContainer || 'undefinedName')) {\n return false;\n }\n\n return true;\n }\n}","import { AfterViewInit, Directive, ElementRef, OnDestroy, inject, input, signal } from \"@angular/core\";\nimport { IPageInfo, VirtualScrollerComponent } from \"@iharbeck/ngx-virtual-scroller\";\nimport { IBoundingClientRect } from \"@libs-ui/interfaces-types\";\nimport { checkMouseOverInContainer, cloneIBoundingClientRect, get } from \"@libs-ui/utils\";\nimport { Subject, takeUntil } from \"rxjs\";\nimport { MoLibsSharedDragDropService } from \"./drag-drop.service\";\nimport { IDragging } from \"./interfaces/event.interface\";\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: \"[LibsUiComponentsDragScrollDirective]\",\n standalone: true\n})\nexport class LibsUiComponentsDragScrollDirective implements AfterViewInit, OnDestroy {\n // #region PROPERTY\n private stopScroll = signal<boolean>(false);\n private virtualScrollPageInfo = signal<IPageInfo | undefined>(undefined);\n protected intervalScrollToElement = signal<number | undefined>(undefined);\n protected onDestroy = new Subject<void>();\n\n // #region INPUT\n readonly ignoreAutoScroll = input<boolean>();\n readonly widthZoneDetect = input<number, number | undefined>(16, { transform: value => value ?? 16 });\n readonly movementLength = input<number, number | undefined>(6, { transform: value => value ?? 6 });\n readonly rootElementScroll = input<HTMLElement>();\n readonly virtualScrollerComponent = input<VirtualScrollerComponent>();\n\n // #region INJECT\n protected elementRef = inject(ElementRef);\n protected dragDropService = inject(MoLibsSharedDragDropService);\n\n ngAfterViewInit(): void {\n this.dragDropService.OnDragging.pipe(takeUntil(this.onDestroy)).subscribe((eventDragging) => this.checkAndScrollElementToPosition(eventDragging, this.ignoreAutoScroll()));\n this.dragDropService.OnDragEnd.pipe(takeUntil(this.onDestroy)).subscribe(() => {\n clearInterval(this.intervalScrollToElement());\n if (this.virtualScrollPageInfo()) {\n const firstElement = get(this.virtualScrollerComponent(), 'element')?.nativeElement.firstElementChild;\n const isHorizontal = get(this.virtualScrollerComponent(), '_horizontal');\n if (isHorizontal) {\n firstElement.style.transform = `scaleX(${this.virtualScrollPageInfo()?.scrollEndPosition})`;\n }\n if (!isHorizontal) {\n firstElement.style.transform = `scaleY(${this.virtualScrollPageInfo()?.scrollEndPosition})`;\n }\n this.virtualScrollPageInfo.set(undefined);\n }\n this.stopScroll.set(false);\n });\n this.dragDropService.OnDragStart.pipe(takeUntil(this.onDestroy)).subscribe(() => {\n if (this.virtualScrollerComponent) {\n this.virtualScrollerComponent()?.scrollToIndex(0);\n }\n });\n if (!this.virtualScrollerComponent) {\n return;\n }\n this.virtualScrollerComponent()?.vsChange.pipe(takeUntil(this.onDestroy)).subscribe(pageInfo => {\n const items = get(this.virtualScrollerComponent, '_items');\n\n if (items && items.length === pageInfo.endIndex) {\n this.virtualScrollPageInfo.set(pageInfo);\n const elementSetScroll = this.rootElementScroll() || this.elementRef.nativeElement;\n const isHorizontal = get(this.virtualScrollerComponent, '_horizontal');\n\n if (isHorizontal && pageInfo.scrollEndPosition < elementSetScroll.offsetWidth + elementSetScroll.scrollLeft + 3) {\n this.stopScroll.set(true);\n clearInterval(this.intervalScrollToElement());\n\n return;\n }\n\n if (!isHorizontal && pageInfo.scrollEndPosition < elementSetScroll.offsetHeight + elementSetScroll.scrollTop + 3) {\n this.stopScroll.set(true);\n clearInterval(this.intervalScrollToElement());\n\n return;\n }\n }\n this.stopScroll.set(false);\n });\n }\n\n /* FUNCTIONS */\n protected checkAndScrollElementToPosition(eventDragging: IDragging, ignoreAutoScroll?: boolean) {\n let elementSetScroll = this.rootElementScroll() || this.elementRef.nativeElement;\n\n if (ignoreAutoScroll || !checkMouseOverInContainer(eventDragging.mousePosition, elementSetScroll)) {\n return;\n }\n const rectElement = cloneIBoundingClientRect(this.elementRef.nativeElement.getBoundingClientRect());\n\n if (this.rootElementScroll()) {\n const rectElementScroll = this.rootElementScroll()?.getBoundingClientRect() as IBoundingClientRect;\n\n rectElement.left = rectElementScroll.left;\n rectElement.top = rectElementScroll.top;\n }\n\n const { width, height, top, left } = rectElement;\n const { clientX, clientY } = eventDragging.mousePosition;\n const limitLeft = left + elementSetScroll.offsetWidth;\n const limitTop = top + elementSetScroll.offsetHeight;\n\n clearInterval(this.intervalScrollToElement());\n if ((clientX < left || clientX > left + width) && (clientY < top || clientY > top + height)) {\n return;\n }\n\n this.intervalScrollToElement.set(setInterval(() => {\n elementSetScroll = (this.rootElementScroll() || this.elementRef.nativeElement);\n let directionTop = 0;\n let directionLeft = 0;\n\n if (top <= clientY && clientY <= top + this.widthZoneDetect()) {\n elementSetScroll.scrollTop -= this.movementLength();\n directionTop = -1;\n }\n\n if (limitTop - this.widthZoneDetect() <= clientY && clientY <= limitTop) {\n if (this.stopScroll()) {\n return;\n }\n elementSetScroll.scrollTop += this.movementLength();\n directionTop = 1;\n }\n\n if ((limitLeft - this.widthZoneDetect() <= clientX) && (clientX <= limitLeft)) {\n if (this.stopScroll()) {\n return;\n }\n elementSetScroll.scrollLeft += this.movementLength();\n directionLeft = +1;\n\n }\n if (left <= clientX && clientX <= left + this.widthZoneDetect()) {\n elementSetScroll.scrollLeft -= this.movementLength();\n directionLeft = -1;\n }\n\n if (elementSetScroll.scrollLeft && (elementSetScroll.scrollLeft + elementSetScroll.offsetWidth >= elementSetScroll.scrollWidth)) {\n elementSetScroll.scrollLeft -= elementSetScroll.scrollLeft + elementSetScroll.offsetWidth - elementSetScroll.scrollWidth;\n }\n\n if (elementSetScroll.scrollTop && (elementSetScroll.scrollTop + elementSetScroll.offsetHeight >= elementSetScroll.scrollHeight)) {\n elementSetScroll.scrollTop -= elementSetScroll.scrollTop + elementSetScroll.offsetHeight - elementSetScroll.scrollHeight;\n }\n\n if ((directionTop < 0 && !elementSetScroll.scrollTop) || (!elementSetScroll.scrollLeft && directionLeft < 0) || (directionTop && elementSetScroll.scrollHeight <= elementSetScroll.scrollTop + elementSetScroll.offsetHeight + 3) || (directionLeft && elementSetScroll.scrollWidth <= elementSetScroll.scrollLeft + elementSetScroll.offsetWidth + 3)) {\n return clearInterval(this.intervalScrollToElement());\n }\n }, 10));\n }\n\n ngOnDestroy(): void {\n this.onDestroy.next();\n this.onDestroy.complete();\n }\n}\n","import { AfterViewInit, Directive, OnDestroy, effect, input, model, output, signal, untracked } from \"@angular/core\";\nimport { checkMouseOverInContainer, cloneDeep, get, set, uuid } from \"@libs-ui/utils\";\nimport { Observable, debounceTime, filter, takeUntil } from \"rxjs\";\nimport { styleContainer } from \"./defines/css.define\";\nimport { LibsUiComponentsDragScrollDirective } from \"./drag-scroll.directive\";\nimport { IDragDropFunctionControlEvent, IDragEnd, IDragLeave, IDragOver, IDragStart, IDragging, IDrop } from \"./interfaces/event.interface\";\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: \"[LibsUiComponentsDragContainerDirective]\",\n standalone: true,\n})\nexport class LibsUiComponentsDragContainerDirective extends LibsUiComponentsDragScrollDirective implements AfterViewInit, OnDestroy {\n // #region PROPERTY\n private groupID = signal<string>(uuid());\n private isDragOver = signal<boolean>(false);\n\n // #region INPUT\n readonly disableDragContainer = input<boolean>();\n readonly mode = input<string, 'move' | 'copy' | 'deepCopy'>('move', { transform: value => value ?? 'move' });\n readonly directionDrag = input<'horizontal' | 'vertical'>();\n readonly viewEncapsulation = input<'emulated' | 'none', 'emulated' | 'none' | undefined>('emulated', { transform: value => value ?? 'emulated' });\n readonly acceptDragSameGroup = input<boolean, boolean | undefined>(false, { transform: value => value ?? false });\n readonly placeholder = input<boolean, boolean | undefined>(true, { transform: value => value ?? true });\n readonly groupName = input<string, string | undefined>('groupDragAndDropDefault', { transform: value => value ?? 'groupDragAndDropDefault' }); // nếu các group có tên trùng nhau sẽ được drop\n readonly dropToGroupName = input<Array<string> | null>(null); // nếu item trong các group A được drop vào group B nhưng group B không được drop vào group A\n readonly items = model.required<Array<unknown>>();\n readonly stylesOverride = input<Array<{ className: string, styles: string }>>();\n\n // #region OUTPUT\n readonly outDragStartContainer = output<IDragStart>();\n readonly outDragOverContainer = output<IDragOver>();\n readonly outDragLeaveContainer = output<IDragLeave>();\n readonly outDragEndContainer = output<IDragEnd>();\n readonly outDroppedContainer = output<IDrop>();\n readonly outDroppedContainerEmpty = output<IDrop>();\n readonly outFunctionControl = output<IDragDropFunctionControlEvent>();\n\n constructor() {\n super();\n const element = this.elementRef.nativeElement as HTMLElement;\n\n const container = { element };\n\n this.dragDropService.Container.update(data => {\n data.set(this.groupID(), container);\n return data;\n });\n\n effect(() => {\n if (!this.rootElementScroll()) {\n return;\n }\n untracked(() => {\n set(container, 'elementScroll', this.rootElementScroll());\n this.dragDropService.Container.update(containerMap => new Map(containerMap));\n });\n });\n\n effect(() => {\n if (this.directionDrag() && this.elementRef.nativeElement) {\n this.setAttributeElementAndItemDrag(this.elementRef.nativeElement);\n }\n });\n effect(() => {\n if (this.disableDragContainer() && this.elementRef.nativeElement) {\n this.setAttributeElementAndItemDrag(this.elementRef.nativeElement);\n }\n });\n }\n\n override ngAfterViewInit(): void {\n this.outFunctionControl.emit({ setAttributeElementAndItemDrag: () => this.setAttributeElementAndItemDrag(this.elementRef.nativeElement) });\n\n this.outDroppedContainer.subscribe(eventDropped => {\n this.dragDropService.OnDropContainer.next(eventDropped);\n });\n this.onDestroy.subscribe(() => {\n if (indexSpliceListTo > -1) {\n this.items.update(items => {\n items.splice(indexSpliceListTo, 1);\n return [...items];\n });\n }\n\n this.dragDropService.Container().delete(this.groupID());\n });\n const elementContainer = this.elementRef.nativeElement as HTMLElement;\n\n this.initStyleAndAttribute(elementContainer, true);\n this.dragDropService.OnItemInit.pipe(debounceTime(250), filter(groupName => groupName === this.groupName()), takeUntil(this.onDestroy)).subscribe(() => this.initStyleAndAttribute(elementContainer));\n const styleTag = document.createElement(\"style\");\n\n styleTag.textContent = styleContainer((this.stylesOverride() || []), this.viewEncapsulation(), this.groupID());\n elementContainer.appendChild(styleTag);\n elementContainer.classList.add(this.dragDropService.ClassContainerDefine);\n\n const handlerDragStart = (eventDragStart: IDragStart) => {\n\n this.setAttributeElementAndItemDrag(elementContainer, true);\n if (this.groupID() === eventDragStart.elementDrag.getAttribute('groupID')) {\n this.outDragStartContainer.emit({ ...eventDragStart, itemDragInfo: this.dragDropService.ItemDragInfo });\n }\n };\n\n const storeIndex = { indexDrag: -1, indexDragOver: -1 };\n let indexSpliceListTo = -1;\n const handlerDragOver = (eventDragOver: IDragOver) => {\n const { elementDrag, elementDragOver } = eventDragOver;\n\n if (this.disableDragContainer() || !this.dragDropService.checkElementOverAcceptElementDrag(this.groupName(), elementDrag.getAttribute('groupName'), elementDrag.getAttribute('dropToGroupName'))) {\n return;\n }\n const indexDrag = Number(elementDrag.getAttribute('index')).valueOf();\n const indexDragOver = Number(elementDragOver.getAttribute('index')).valueOf();\n const idGroupElementDrag = elementDrag.getAttribute('groupID');\n const idGroupElementDragOver = elementDragOver.getAttribute('groupID');\n\n if ((this.groupID() !== idGroupElementDrag) || (idGroupElementDrag !== idGroupElementDragOver)) { // xử lý cho item drag over qua 1 item khác container\n if (idGroupElementDragOver === this.groupID() && this.placeholder()) {\n const item = this.mode() === 'deepCopy' ? cloneDeep(this.dragDropService.ItemDragInfo?.item) : this.dragDropService.ItemDragInfo?.item;\n\n this.items.update(items => {\n if (indexSpliceListTo >= 0) {\n items.splice(indexSpliceListTo, 1);\n }\n items.splice(indexDragOver, 0, item);\n return [...items];\n });\n indexSpliceListTo = indexDragOver;\n this.setAttributeElementAndItemDrag(elementContainer, false, indexSpliceListTo);\n }\n\n return;\n }\n\n if (!this.acceptDragSameGroup() || indexDrag < 0 || indexDragOver < 0 || !this.items().length || indexDrag > this.items().length || indexDragOver > this.items().length || (storeIndex.indexDrag === indexDrag && storeIndex.indexDragOver === indexDragOver)) {\n return;\n }\n // xử lý cho item drag over qua 1 item cùng container\n const itemDrag = this.items()[indexDrag];\n\n this.setAnimationElementDragOver(indexDrag, indexDragOver, elementDragOver);\n storeIndex.indexDrag = indexDrag;\n storeIndex.indexDragOver = indexDragOver;\n this.items.update(items => {\n items.splice(indexDrag, 1);\n items.splice(indexDragOver, 0, itemDrag);\n return [...items];\n });\n\n elementDrag.setAttribute('index', indexDragOver.toString());\n this.setAttributeElementAndItemDrag(elementContainer);\n };\n\n const removePlaceholderDrag = (eventDrag: IDragEnd, isDragging?: boolean) => {\n clearInterval(this.intervalScrollToElement());\n storeIndex.indexDrag = -1;\n storeIndex.indexDragOver = -1;\n const childrenElement = elementContainer.getElementsByClassName(this.dragDropService.ClassItemDefine) as unknown as Array<HTMLElement>;\n\n if (!checkMouseOverInContainer(eventDrag.mousePosition, (this.rootElementScroll() || elementContainer))) {\n const childElementIndex = Array.from<HTMLElement>(childrenElement).findIndex((child) => child.classList.contains('libs-ui-drag-drop-item-drop-placeholder'));\n\n if (childElementIndex >= 0 && this.groupID() !== eventDrag.elementDrag.getAttribute('groupID')) {\n this.items.update(items => {\n items.splice(childElementIndex, 1);\n return [...items];\n });\n }\n indexSpliceListTo = -1;\n\n this.removeAttributes(elementContainer, isDragging);\n this.setIndexElement(elementContainer);\n\n return;\n }\n if (indexSpliceListTo >= 0) {\n this.items.update(items => {\n items.splice(indexSpliceListTo, 1);\n return [...items];\n });\n }\n indexSpliceListTo = -1;\n };\n\n const handlerDragging = (eventDragging: IDragging) => {\n this.setAttributeElementAndItemDrag(elementContainer);\n const { elementDrag } = eventDragging;\n const fieldIdItem = elementDrag.getAttribute('field_id');\n const idItemDrag = elementDrag.getAttribute('item_id');\n\n if (fieldIdItem && idItemDrag && this.items().find(item => get(item, fieldIdItem) === idItemDrag)) {\n const childrenElement = elementContainer.getElementsByClassName(this.dragDropService.ClassItemDefine) as unknown as Array<HTMLElement>;\n const childElement = Array.from<HTMLElement>(childrenElement).find((child) => child.getAttribute('item_id') === idItemDrag);\n\n if (this.items() === eventDragging.itemDragInfo?.itemsDrag() && childElement && !childElement.classList.contains('libs-ui-drag-drop-item-drop-placeholder') && !childElement.getAttribute(this.dragDropService.TargetItemDragFlag)) {\n childElement.setAttribute(this.dragDropService.TargetItemDragFlag, 'true');\n this.groupID.set(elementDrag.getAttribute('groupID') || '');\n styleTag.remove();\n styleTag.textContent = styleContainer((this.stylesOverride() || []), this.viewEncapsulation(), this.groupID());\n elementContainer.appendChild(styleTag);\n this.setAttributeElementAndItemDrag(elementContainer, true);\n }\n }\n\n if (this.disableDragContainer()) {\n return;\n }\n\n if (this.groupID() === elementDrag.getAttribute('groupID') && !this.acceptDragSameGroup()) {\n this.checkAndScrollElementToPosition(eventDragging, this.ignoreAutoScroll() || !this.acceptDragSameGroup());\n return;\n }\n\n if (!checkMouseOverInContainer(eventDragging.mousePosition, (this.rootElementScroll() || elementContainer))) {\n if (this.isDragOver()) {\n this.isDragOver.set(false);\n this.outDragLeaveContainer.emit({ ...eventDragging, elementDragLeave: elementContainer });\n }\n\n return removePlaceholderDrag(eventDragging, true);\n }\n this.checkAndScrollElementToPosition(eventDragging, this.ignoreAutoScroll());\n\n // Đoạn code xử lý cho việc kéo một element vào 1 container nhưng container không có item hoặc item drag không over qua item trong container\n if (!this.isDragOver()) {\n elementContainer.classList.add('libs-ui-drag-drop-container-dragover');\n this.isDragOver.set(true);\n this.outDragOverContainer.emit({ ...eventDragging, elementDragOver: elementContainer });\n }\n const eventDragOver = { ...eventDragging, elementDragOver: elementContainer };\n\n if (!this.items().length) {\n eventDragOver.elementDragOver = {\n getAttribute: (name: string) => {\n if (name === 'groupID') {\n return this.groupID();\n }\n if (name !== 'index') {\n return null;\n }\n\n return 0;\n }\n } as unknown as HTMLElement;\n this.dragDropService.OnDragOver.next(eventDragOver);\n\n return;\n }\n\n const childrenElement = elementContainer.getElementsByClassName(this.dragDropService.ClassItemDefine) as unknown as Array<HTMLElement>;\n let childElement = Array.from<HTMLElement>(childrenElement).find((child) => checkMouseOverInContainer(eventDragging.mousePosition, child));\n\n if (childElement) { // nếu tìm thấy thì sẽ nhận qua sự kiện của drag-item.directive emit\n return;\n }\n childElement = Array.from<HTMLElement>(childrenElement).pop();\n\n if (childElement) {\n eventDragOver.elementDragOver = childElement;\n this.dragDropService.OnDragOver.next(eventDragOver);\n }\n };\n\n const handlerDragEnd = (eventDragEnd: IDragEnd) => {\n if (this.disableDragContainer()) {\n return;\n }\n let rect = undefined;\n\n if (this.rootElementScroll() || elementContainer) {\n rect = (this.rootElementScroll() || elementContainer)?.getBoundingClientRect();\n }\n removePlaceholderDrag(eventDragEnd);\n const { elementDrag, mousePosition, itemDragInfo } = eventDragEnd;\n\n if (this.groupID() === elementDrag.getAttribute('groupID')) {\n this.outDragEndContainer.emit({ ...eventDragEnd });\n }\n if (!checkMouseOverInContainer(mousePosition, this.rootElementScroll() || elementContainer, rect)) {\n return;\n }\n const eventDrop = { elementDrag: elementDrag, elementDrop: elementContainer, itemDragInfo: itemDragInfo };\n\n if (this.disableDragContainer() || !this.dragDropService.checkElementOverAcceptElementDrag(this.groupName(), elementDrag.getAttribute('groupName'), elementDrag.getAttribute('dropToGroupName'))) {\n return;\n }\n\n const childrenElement = elementContainer.getElementsByClassName(this.dragDropService.ClassItemDefine) as unknown as Array<HTMLElement>;\n const childElement = Array.from<HTMLElement>(childrenElement).find((child) => checkMouseOverInContainer(mousePosition, child));\n\n if (childElement) {\n eventDrop.elementDrop = childElement;\n this.dragDropService.OnDrop.next(eventDrop);\n\n return;\n }\n eventDrop.elementDrop = {\n getAttribute: (name: string) => {\n if (name === 'dropContainer') {\n return true;\n }\n if (name === 'groupID') {\n return this.groupID();\n }\n if (name !== 'index') {\n return null;\n }\n\n return childrenElement.length;\n }\n } as unknown as HTMLElement;\n this.dragDropService.OnDrop.next(eventDrop);\n };\n\n const handlerDrop = (eventDrop: IDrop) => {\n if (this.disableDragContainer()) {\n return;\n }\n const { elementDrag, elementDrop, itemDragInfo } = eventDrop;\n\n if (this.groupID() === elementDrag.getAttribute('groupID') && this.groupID() === elementDrop.getAttribute('groupID')) {\n if (itemDragInfo) {\n itemDragInfo.indexDrop = Number(elementDrop.getAttribute('index')).valueOf();\n itemDragInfo.itemsDrop = this.items;\n itemDragInfo.containerDrop = elementContainer;\n }\n if (this.acceptDragSameGroup()) {\n this.outDroppedContainer.emit(eventDrop);\n }\n this.removeAttributes(elementContainer);\n this.setIndexElement(elementContainer);\n return;\n }\n\n if (this.groupID() !== elementDrop.getAttribute('groupID') || elementDrag.getAttribute('groupID') === elementDrop.getAttribute('groupID')) {\n return;\n }\n const indexDragOver = Number(elementDrop.getAttribute('index')).valueOf() - (elementDrop.getAttribute('dropContainer') ? 0 : 1);\n const item = this.mode() === 'deepCopy' ? cloneDeep(itemDragInfo?.item) : itemDragInfo?.item;\n\n if (itemDragInfo) {\n itemDragInfo.indexDrop = indexDragOver;\n itemDragInfo.itemsDrop = this.items;\n itemDragInfo.containerDrop = elementContainer;\n }\n\n if (!this.items().length) {\n this.outDroppedContainerEmpty.emit(eventDrop);\n }\n\n this.items.update(items => {\n items.splice(indexDragOver, 0, item);\n return [...items];\n });\n\n if (itemDragInfo && itemDragInfo.itemsMove && itemDragInfo.itemsMove()) {\n itemDragInfo.itemsDrag.set([...itemDragInfo.itemsMove()]);\n this.setAttributeElementAndItemDrag(elementContainer);\n }\n\n this.outDroppedContainer.emit(eventDrop);\n this.removeAttributes(elementContainer);\n this.setIndexElement(elementContainer);\n };\n\n [{\n name: 'OnDragStart',\n event: this.dragDropService.OnDragStart,\n functionCall: handlerDragStart\n }, {\n name: 'OnDragOver',\n event: this.dragDropService.OnDragOver,\n functionCall: handlerDragOver\n }, {\n name: 'OnDragging',\n event: this.dragDropService.OnDragging,\n functionCall: handlerDragging\n }, {\n name: 'OnDragEnd',\n event: this.dragDropService.OnDragEnd,\n functionCall: handlerDragEnd\n }, {\n name: 'OnDrop',\n event: this.dragDropService.OnDrop,\n functionCall: handlerDrop\n }].forEach((item: { name: string; event: Observable<unknown>; functionCall: object }) => (item.event.pipe(takeUntil(this.onDestroy)).subscribe(item.functionCall)));\n\n }\n\n /* */\n private async setAttributeElementAndItemDrag(elementContainer: HTMLElement, setItemDrag?: boolean, indexInsert?: number) {\n const childrenElement = elementContainer.getElementsByClassName(this.dragDropService.ClassItemDefine) as unknown as Array<HTMLElement>;\n let index = -1;\n\n elementContainer.setAttribute('groupID', this.groupID());\n elementContainer.removeAttribute('disableDragContainer');\n\n if (this.disableDragContainer()) {\n elementContainer.setAttribute('disableDragContainer', `${this.disableDragContainer()}`);\n }\n if (this.groupName()) {\n elementContainer.setAttribute('groupName', this.groupName() || '');\n }\n Array.from<HTMLElement>(childrenElement).forEach((childElement) => {\n if (!childElement.hasAttribute('groupName') || childElement.getAttribute('groupName') === this.groupName()) {\n childElement.setAttribute('groupID', this.groupID());\n }\n if (childElement.getAttribute('groupID') !== this.groupID()) {\n return;\n }\n index += 1;\n childElement.setAttribute('index', `${index}`);\n childElement.removeAttribute('disableDragContainer');\n if (this.disableDragContainer()) {\n childElement.setAttribute('disableDragContainer', `${this.disableDragContainer()}`);\n }\n if (this.groupName() && !childElement.hasAttribute('groupName')) {\n childElement.setAttribute('groupName', this.groupName() || '');\n }\n if (this.placeholder()) {\n childElement.setAttribute('placeholder', `${this.placeholder()}`);\n }\n if (this.dropToGroupName()) {\n childElement.setAttribute('dropToGroupName', `${this.dropToGroupName()?.join(';')}`);\n }\n if (indexInsert === index && this.placeholder()) {\n if (!childElement.classList.contains('libs-ui-drag-drop-item-placeholder')) {\n childElement.classList.add('libs-ui-drag-drop-item-placeholder');\n }\n if (!childElement.classList.contains('libs-ui-drag-drop-item-drop-placeholder')) {\n childElement.classList.add('libs-ui-drag-drop-item-drop-placeholder');\n }\n }\n\n if (setItemDrag && childElement.getAttribute(this.dragDropService.TargetItemDragFlag) && this.items().length >= index) {\n if (this.placeholder()) {\n if (!childElement.classList.contains('libs-ui-drag-drop-item-placeholder')) {\n childElement.classList.add('libs-ui-drag-drop-item-placeholder');\n }\n if (!childElement.classList.contains('libs-ui-drag-drop-item-origin-placeholder')) {\n childElement.classList.add('libs-ui-drag-drop-item-origin-placeholder');\n }\n }\n\n this.dragDropService.ItemDragInfo = { item: this.items()[index] as object, indexDrag: index, itemsDrag: this.items, containerDrag: elementContainer, itemsMove: signal([...this.items()]) };\n if (this.mode() === 'move') {\n this.dragDropService.ItemDragInfo.itemsMove?.update(items => {\n items.splice(index, 1);\n return [...items]\n });\n }\n }\n });\n }\n\n private initStyleAndAttribute(elementContainer: HTMLElement, hasRemoveAttribute = false,) {\n this.setAttributeElementAndItemDrag(elementContainer);\n if (hasRemoveAttribute) {\n this.removeAttributes(elementContainer);\n }\n this.setIndexElement(elementContainer);\n };\n\n private setAnimationElementDragOver(indexDrag: number, indexDragOver: number, elementDragOver: HTMLElement) {\n if (!this.directionDrag() || !elementDragOver) {\n return;\n }\n if (this.directionDrag() === 'vertical') {\n elementDragOver.classList.remove('libs-ui-drag-drop-item-translate-bottom');\n elementDragOver.classList.remove('libs-ui-drag-drop-item-translate-top');\n if (indexDrag > indexDragOver) {\n elementDragOver.classList.add('libs-ui-drag-drop-item-translate-bottom');\n }\n if (indexDrag < indexDragOver) {\n elementDragOver.classList.add('libs-ui-drag-drop-item-translate-top');\n }\n\n return;\n }\n\n elementDragOver.classList.remove('libs-ui-drag-drop-item-translate-left');\n elementDragOver.classList.remove('libs-ui-drag-drop-item-translate-right');\n if (indexDrag > indexDragOver) {\n elementDragOver.classList.add('libs-ui-drag-drop-item-translate-right');\n }\n if (indexDrag < indexDragOver) {\n elementDragOver.classList.add('libs-ui-drag-drop-item-translate-left');\n }\n\n }\n\n private setIndexElement(elementContainer: HTMLElement) {\n const childrenElement = elementContainer.getElementsByClassName(this.dragDropService.ClassItemDefine) as unknown as Array<HTMLElement>;\n let index = -1;\n\n Array.from<HTMLElement>(childrenElement).forEach((childElement) => {\n if (childElement.getAttribute('groupID') !== this.groupID()) {\n return;\n }\n index += 1;\n childElement.setAttribute('index', `${index}`);\n });\n\n }\n\n private removeAttributes(elementContainer: HTMLElement, ignoreRemoveClassItemOriginPlaceholder?: boolean) {\n const childrenElement = elementContainer.getElementsByClassName(this.dragDropService.ClassItemDefine) as unknown as Array<HTMLElement>;\n\n elementContainer.classList.remove('libs-ui-drag-drop-container-dragover');\n Array.from<HTMLElement>(childrenElement).forEach((childElement) => {\n if (childElement.getAttribute('groupID') !== this.groupID()) {\n return;\n }\n childElement.removeAttribute('index');\n if (!this.dropToGroupName() || !this.dropToGroupName()?.length) {\n childElement.removeAttribute('dropToGroupName');\n }\n if (!this.placeholder()) {\n childElement.removeAttribute('placeholder');\n }\n if (this.placeholder()) {\n childElement.classList.remove('libs-ui-drag-drop-item-placeholder');\n if (!ignoreRemoveClassItemOriginPlaceholder) {\n\n childElement.classList.remove('libs-ui-drag-drop-item-origin-placeholder');\n }\n childElement.classList.remove('libs-ui-drag-drop-item-drop-placeholder');\n }\n });\n\n }\n}\n","import { AfterViewInit, Directive, OnDestroy, inject, output } from \"@angular/core\";\nimport { IBoundingClientRect } from \"@libs-ui/interfaces-types\";\nimport { cloneIBoundingClientRect, getViewport } from \"@libs-ui/utils\";\nimport { Subject, fromEvent, takeUntil, tap } from \"rxjs\";\nimport { MoLibsSharedDragDropService } from \"./drag-drop.service\";\nimport { IDragEnd } from \"./interfaces/event.interface\";\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: \"[LibsUiDragItemInContainerVirtualScrollDirective]\",\n standalone: true,\n\n})\nexport class LibsUiDragItemInContainerVirtualScrollDirective implements AfterViewInit, OnDestroy {\n // #region PROPERTY\n protected onDestroy = new Subject<void>();\n\n // #region OUTPUT\n readonly outDragEndContainer = output<IDragEnd>();\n\n // #region INJECT\n protected dragDropService = inject(MoLibsSharedDragDropService);\n\n ngAfterViewInit(): void {\n const addClass = ()=>{\n document.body.classList.remove('!select-none');\n document.body.classList.remove('!cursor-move');\n };\n const removeClass = ()=>{\n document.body.classList.add('!select-none');\n document.body.classList.add('!cursor-move');\n };\n this.dragDropService.OnDragEnd.pipe(takeUntil(this.onDestroy)).subscribe(e => {\n this.outDragEndContainer.emit(e);\n });\n this.dragDropService.OnDragItemInContainerVirtualScroll.pipe(takeUntil(this.onDestroy)).subscribe(dragItemInContainerVirtualScrollEvent => {\n addClass();\n const stopEventMouse = (mouseEvent: MouseEvent) => {\n if (!dragItemInContainerVirtualScrollEvent.ignoreStopEvent) {\n mouseEvent.preventDefault();\n mouseEvent.stopPropagation();\n }\n };\n const documentMouseUp = fromEvent<MouseEvent>(document, 'mouseup')\n .pipe(tap((eventMouseUp) => {\n this.updateMouseEventsWhenMoveOverIframe('auto');\n stopEventMouse(eventMouseUp);\n const mousePosition = { clientX: eventMouseUp.clientX, clientY: eventMouseUp.clientY };\n\n if (dragItemInContainerVirtualScrollEvent.dragBoundary && dragItemInContainerVirtualScrollEvent.dragBoundaryAcceptMouseLeaveContainer) {\n const result = this.getClientPosition(dragItemInContainerVirtualScrollEvent.elementDrag, mousePosition, dragItemInContainerVirtualScrollEvent.distanceStartElementAndMouseLeft, dragItemInContainerVirtualScrollEvent.distanceStartElementAndMouseTop, dragItemInContainerVirtualScrollEvent.dragBoundary, dragItemInContainerVirtualScrollEvent.elementContainer);\n\n mousePosition.clientX = result.clientX;\n mousePosition.clientY = result.clientY;\n }\n const dragEndEvent = { mousePosition, elementDrag: dragItemInContainerVirtualScrollEvent.elementDrag, itemDragInfo: this.dragDropService.ItemDragInfo };\n\n this.dragDropService.ItemDragInfo = undefined;\n this.dragDropService.OnDragEnd.next(dragEndEvent);\n dragItemInContainerVirtualScrollEvent.elementDrag.remove();\n removeClass();\n }));\n\n fromEvent<MouseEvent>(document, 'mousemove').pipe(tap((eventMousemove) => {\n stopEventMouse(eventMousemove);\n const { clientX, clientY } = eventMousemove;\n const mousePosition = { clientX, clientY };\n\n const result = this.getClientPosition(dragItemInContainerVirtualScrollEvent.elementDrag, mousePosition, dragItemInContainerVirtualScrollEvent.distanceStartElementAndMouseLeft, dragItemInContainerVirtualScrollEvent.distanceStartElementAndMouseTop, dragItemInContainerVirtualScrollEvent.dragBoundary, dragItemInContainerVirtualScrollEvent.elementContainer);\n const elementKeepContainer = result.elementKeepContainer;\n const left = result.clientX - dragItemInContainerVirtualScrollEvent.distanceStartElementAndMouseLeft;\n const top = result.clientY - dragItemInContainerVirtualScrollEvent.distanceStartElementAndMouseTop;\n\n if (dragItemInContainerVirtualScrollEvent.dragBoundary && dragItemInContainerVirtualScrollEvent.dragBoundaryAcceptMouseLeaveContainer) {\n if (clientX < result.viewport.left) {\n mousePosition.clientX = result.viewport.left;\n }\n if (clientX > result.viewport.width) {\n mousePosition.clientX = result.viewport.width;\n }\n if (clientY < result.viewport.top) {\n mousePosition.clientY = result.viewport.top;\n }\n if (clientY > result.viewport.height) {\n mousePosition.clientY = result.viewport.height;\n }\n }\n dragItemInContainerVirtualScrollEvent.elementDrag.style.left = `${left}px`;\n dragItemInContainerVirtualScrollEvent.elementDrag.style.top = `${top}px`;\n\n this.dragDropService.OnDragging.next({ mousePosition, elementDrag: dragItemInContainerVirtualScrollEvent.elementDrag, elementKeepContainer, itemDragInfo: this.dragDropService.ItemDragInfo });\n }), takeUntil((documentMouseUp)), takeUntil(this.onDestroy)).subscribe();\n\n });\n }\n\n /* FUNCTIONS */\n\n protected getClientPosition(element: HTMLElement, mousePosition: { clientX: number; clientY: number; }, distanceStartElementAndMouseLeft: number, distanceStartElementAndMouseTop: number, dragBoundary?: boolean, elementContainer?: HTMLElement): { clientX: number; clientY: number; elementKeepContainer: boolean; viewport: IBoundingClientRect } {\n let viewport = getViewport() as IBoundingClientRect;\n const rectElement = element.getBoundingClientRect();\n const containerById = this.dragDropService.Container().get(element.getAttribute('groupID') || '');\n const containerItem = elementContainer || containerById?.elementScroll || containerById?.element || document.body;\n let { clientX, clientY } = mousePosition;\n\n viewport.left = 0;\n viewport.top = 0;\n if (dragBoundary) {\n viewport = cloneIBoundingClientRect(containerItem.getBoundingClientRect());\n viewport.height = viewport.top + viewport.height;\n viewport.width = viewport.left + viewport.width;\n }\n let elementKeepContainer = false;\n\n if (clientX > viewport.width && clientY > viewport.height || clientX < viewport.left && clientY < viewport.top) {\n elementKeepContainer = true;\n }\n\n if ((clientX + (rectElement.width - distanceStartElementAndMouseLeft)) > viewport.width) {\n clientX -= (clientX + (rectElement.width - distanceStartElementAndMouseLeft) - viewport.width);\n }\n if ((clientY + (rectElement.height - distanceStartElementAndMouseTop)) > viewport.height) {\n clientY -= (clientY + (rectElement.height - distanceStartElementAndMouseTop) - viewport.height);\n }\n if ((clientX - distanceStartElementAndMouseLeft) < (dragBoundary && containerItem ? viewport.left : 0)) {\n clientX = (dragBoundary && containerItem ? viewport.left : 0) + distanceStartElementAndMouseLeft;\n }\n if ((clientY - distanceStartElementAndMouseTop) < (dragBoundary && containerItem ? viewport.top : 0)) {\n clientY = (dragBoundary && containerItem ? viewport.top : 0) + distanceStartElementAndMouseTop;\n }\n\n return { clientX, clientY, elementKeepContainer, viewport };\n }\n\n protected updateMouseEventsWhenMoveOverIframe(pointerEvents: 'none' | 'auto') {\n const frames = document.getElementsByTagName(\"iframe\");\n\n if (!frames?.length) {\n return;\n }\n\n for (let i = 0; i < frames.length; ++i) {\n frames[i].style.pointerEvents = pointerEvents;\n }\n }\n\n ngOnDestroy(): void {\n this.onDestroy.next();\n this.onDestroy.complete();\n }\n}","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { AfterViewInit, Directive, ElementRef, OnDestroy, effect, inject, input, output, signal } from \"@angular/core\";\nimport { IBoundingClientRect } from \"@libs-ui/interfaces-types\";\nimport { checkMouseOverInContainer, checkViewInScreen, get, getDragEventByElement, getViewport } from \"@libs-ui/utils\";\nimport { fromEvent, takeUntil, tap, throttleTime } from \"rxjs\";\nimport { LibsUiDragItemInContainerVirtualScrollDirective } from \"./drag-item-in-container-virtual-scroll.directive\";\nimport { IDragEnd, IDragLeave, IDragOver, IDragStart, IDrop } from \"./interfaces/event.interface\";\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: \"[LibsUiDragItemDirective]\",\n standalone: true\n})\nexport class LibsUiDragItemDirective extends LibsUiDragItemInContainerVirtualScrollDirective implements AfterViewInit, OnDestroy {\n // #region PROPERTY\n private isDragOver = signal<boolean>(false);\n private isDragging = signal<boolean>(false);\n\n // #region INPUT\n //setup 3 field phía dưới nếu đang sử dụng item trong virtual-scroll \n readonly fieldId = input<string>('');\n readonly item = input<any>(undefined);\n readonly itemInContainerVirtualScroll = input<boolean>();\n //----------------------------------\n readonly throttleTimeHandlerDraggingEvent = input<number, number | undefined>(0, { transform: value => value || 0 });\n readonly ignoreStopEvent = input<boolean>();\n readonly onlyMouseDownStopEvent = input<boolean>();\n readonly dragRootElement = input<boolean>();\n readonly groupName = input<string, string | undefined>('groupDragAndDropDefault', { transform: value => value ?? 'groupDragAndDropDefault' });\n readonly dragBoundary = input<boolean>();\n readonly dragBoundaryAcceptMouseLeaveContainer = input<boolean>();\n readonly elementContainer = input<HTMLElement>();\n readonly zIndex = input<number, number | undefined>(1300, { transform: value => value ?? 1300 });\n readonly disable = input<boolean>();\n\n // #region OUTPUT\n readonly outDragStart = output<IDragStart>();\n readonly outDragOver = output<IDragOver>();\n readonly outDragLeave = output<IDragLeave>();\n readonly outDragEnd = output<IDragEnd>();\n readonly outDropped = output<IDrop>();\n\n // #region INJECT\n private elementRef = inject(ElementRef);\n\n constructor() {\n super();\n effect(() => {\n if (!this.elementRef?.nativeElement) {\n return;\n }\n const element = this.elementRef.nativeElement as HTMLElement;\n\n element.classList.remove(`${this.dragDropService.ClassItemDefine}-disable`);\n if (this.disable() && !element.classList.contains(`${this.dragDropService.ClassItemDefine}-disable`)) {\n element.classList.add(`${this.dragDropService.ClassItemDefine}-disable`);\n }\n });\n }\n\n override ngAfterViewInit() {\n const element = this.elementRef.nativeElement as HTMLElement;\n if (this.fieldId()) {\n element.setAttribute('field_id', this.fieldId());\n if (this.item()) {\n element.setAttribute('item_id', get(this.item(), this.fieldId()));\n }\n }\n element.setAttribute('groupName', this.groupName());\n element.classList.add(this.dragDropService.ClassItemDefine);\n this.dragDropService.OnDragging.pipe(throttleTime(this.throttleTimeHandlerDraggingEvent()), takeUntil(this.onDestroy)).subscribe((eventDragging) => {\n if (this.disable() || element.getAttribute('disableDragContainer') || (this.fieldId() && this.item() && eventDragging.elementDrag.getAttribute('item_id') === get(this.item(), this.fieldId()))) {\n return;\n }\n const containerById = this.dragDropService.Container().get(element.getAttribute('groupID') || '');\n\n if (containerById) {\n if (eventDragging.elementKeepContainer || !this.dragDropService.checkElementOverAcceptElementDrag(containerById.element.getAttribute('groupName'), eventDragging.elementDrag.getAttribute('groupName'), eventDragging.elementDrag.getAttribute('dropToGroupName'))) {\n return;\n }\n }\n if (checkMouseOverInContainer(eventDragging.mousePosition, element) && element !== eventDragging.elementDrag && containerById && checkViewInScreen(containerById.element, element, containerById.elementScroll)) {\n if (this.isDragOver()) {\n return;\n }\n const eventDragOver = { ...eventDragging, elementDragOver: element };\n\n this.dragDropService.OnDragOver.next(eventDragOver);\n this.outDragOver.emit(eventDragOver);\n this.isDragOver.set(true);\n\n return;\n }\n\n if (this.isDragOver()) {\n const eventDragLeave = { ...eventDragging, elementDragLeave: element };\n this.isDragOver.set(false);\n this.dragDropService.OnDragLeave.next(eventDragLeave);\n this.outDragLeave.emit(eventDragLeave);\n }\n });\n\n this.dragDropService.OnDropContainer.pipe(takeUntil(this.onDestroy)).subscribe((eventDrop) => {\n if (eventDrop.elementDrop !== element) {\n return;\n }\n const dropEvent = { elementDrag: eventDrop.elementDrag, elementDrop: element, itemDragInfo: eventDrop.itemDragInfo };\n\n this.outDropped.emit(dropEvent);\n });\n const styleTag = document.createElement(\"style\");\n\n styleTag.textContent = `.libs-ui-drag-drop-item-dragging{cursor:move}`;\n let nodeClone = element;\n let distanceStartElementAndMouseLeft = -1;\n let distanceStartElementAndMouseTop = -1;\n let contextMenu = false;\n const stopEventMouse = (mouseEvent: MouseEvent) => {\n if (!this.ignoreStopEvent()) {\n mouseEvent.preventDefault();\n mouseEvent.stopPropagation();\n }\n };\n const updatePositionElementRootAndRemoveNodeClone = () => {\n if (this.dragRootElement()) {\n const containerById = this.dragDropService.Container().get(element.getAttribute('groupID') || '');\n\n const containerItem = this.elementContainer() || containerById?.elementScroll || containerById?.element || document.body;\n const rectContainer = containerItem.getBoundingClientRect();\n const rectNodeClone = nodeClone.getBoundingClientRect();\n const numberSub = Number((getComputedStyle(containerItem).border.match(/\\d+px/gi) || ['0'])[0].replace(/\\D+/ig, '')).valueOf();\n\n element.style.left = (rectNodeClone.left - rectContainer.left - numberSub) + 'px';\n element.style.top = (rectNodeClone.top - rectContainer.top - numberSub) + 'px';\n element.classList.remove('opacity-0');\n }\n distanceStartElementAndMouseLeft = -1;\n distanceStartElementAndMouseTop = -1;\n nodeClone.remove();\n };\n\n fromEvent(document, 'contextmenu').pipe(\n tap(() => {\n if (this.isDragging()) {\n updatePositionElementRootAndRemoveNodeClone();\n }\n contextMenu = true;\n\n }),\n takeUntil(this.onDestroy)\n ).subscribe();\n\n let ignoreMousedown = false;\n\n getDragEventByElement({\n elementMouseDown: element,\n functionMouseDown: (event: MouseEvent) => {\n this.dragDropService.ItemClick = element;\n contextMenu = false;\n this.updateMouseEventsWhenMoveOverIframe('none');\n if ((this.disable() || element.getAttribute('disableDragContainer') || !this.isDragging() || this.itemInContainerVirtualScroll()) && !this.onlyMouseDownStopEvent()) {\n return;\n }\n stopEventMouse(event);\n },\n functionMouseMove:(event: MouseEvent) =>{\n stopEventMouse(event);\n },\n functionMouseUp:(event: MouseEvent) =>{\n this.updateMouseEventsWhenMoveOverIframe('auto');\n this.dragDropService.resetItemClick();\n stopEventMouse(event);\n if (this.disable() || element.getAttribute('disableDragContainer') || contextMenu || !this.isDragging()) {\n contextMenu = false;\n\n return;\n }\n contextMenu = false;\n this.isDragging.set(false);\n element.removeAttribute(this.dragDropService.TargetItemDragFlag);\n if (this.itemInContainerVirtualScroll()) {\n return;\n }\n const mousePosition = { clientX: event.clientX, clientY: event.clientY };\n\n if (this.dragBoundary() && this.dragBoundaryAcceptMouseLeaveContainer()) {\n const result = this.getClientPosition(element, mousePosition, distanceStartElementAndMouseLeft, distanceStartElementAndMouseTop, this.dragBoundary(), this.elementContainer());\n\n mousePosition.clientX = result.clientX;\n mousePosition.clientY = result.clientY;\n }\n const dragEndEvent = { mousePosition, elementDrag: element, itemDragInfo: this.dragDropService.ItemDragInfo };\n\n this.dragDropService.ItemDragInfo = undefined;\n this.dragDropService.OnDragEnd.next(dragEndEvent);\n this.outDragEnd.emit(dragEndEvent);\n\n nodeClone.classList.remove('libs-ui-drag-drop-item-dragging');\n styleTag.remove();\n\n updatePositionElementRootAndRemoveNodeClone();\n },\n onDestroy: this.onDestroy\n }).pipe(tap((dragMouseEvent: MouseEvent) => {\n const rectElement = element.getBoundingClientRect();\n const viewport = getViewport() as IBoundingClientRect;\n\n if (this.disable() || element.getAttribute('disableDragContainer') || !dragMouseEvent.clientX || (!ignoreMousedown && dragMouseEvent.type === 'mousedown' && rectElement.height + rectElement.top >= viewport.height)) {\n\n return;\n }\n const { clientX, clientY } = dragMouseEvent;\n\n if (distanceStartElementAndMouseLeft === -1) {\n distanceStartElementAndMouseLeft = clientX - rectElement.left;\n }\n\n if (distanceStartElementAndMouseTop === -1) {\n distanceStartElementAndMouseTop = clientY - rectElement.top;\n }\n })).subscribe(dragMouseEvent => {\n if (this.dragDropService.ItemClick.filter(item => item !== element).some(item => element.contains(item))) {\n return;\n }\n if (this.disable() || element.getAttribute('disableDragContainer') || !dragMouseEvent.clientX || dragMouseEvent.type === 'mousedown' || contextMenu || (this.itemInContainerVirtualScroll() && this.isDragging())) {\n return;\n }\n ignoreMousedown = true;\n const { clientX, clientY } = dragMouseEvent;\n const mousePosition = { clientX, clientY };\n const rectElement = element.getBoundingClientRect();\n\n if (!this.isDragging()) {\n this.isDragging.set(true);\n const eventDragStart = { mousePosition, elementDrag: element, itemDragInfo: this.dragDropService.ItemDragInfo };\n\n element.setAttribute(this.dragDropService.TargetItemDragFlag, 'true');\n this.dragDropService.OnDragStart.next(eventDragStart);\n eventDragStart.itemDragInfo = this.dragDropService.ItemDragInfo;\n this.outDragStart.emit(eventDragStart);\n\n nodeClone = element.cloneNode(true) as HTMLElement;\n nodeClone.style.zIndex = `${this.zIndex()}`;\n nodeClone.classList.add('!fixed');\n nodeClone.classList.remove('libs-ui-drag-drop-item-origin-placeholder');\n nodeClone.classList.remove('libs-ui-drag-drop-item-placeholder');\n nodeClone.appendChild(styleTag);\n nodeClone.classList.add('libs-ui-drag-drop-item-dragging');\n nodeClone.style.width = `${rectElement.width}px`;\n nodeClone.style.height = `${rectElement.height}px`;\n nodeClone.style.left = `${-999}px`;\n nodeClone.style.top = `${-999}px`;\n document.body.append(nodeClone);\n if (this.dragRootElement()) {\n element.classList.add('opacity-0');\n }\n\n if (this.itemInContainerVirtualScroll()) {\n this.dragDropService.OnDragItemInContainerVirtualScroll.next({\n itemDragInfo: this.dragDropService.ItemDragInfo,\n elementDrag: nodeClone,\n distanceStartElementAndMouseTop,\n distanceStartElementAndMouseLeft,\n elementContainer: this.elementContainer(),\n dragBoundary: this.dragBoundary(),\n dragBoundaryAcceptMouseLeaveContainer: this.dragBoundaryAcceptMouseLeaveContainer(),\n ignoreStopEvent: this.ignoreStopEvent()\n });\n\n return;\n }\n }\n const result = this.getClientPosition(nodeClone, mousePosition, distanceStartElementAndMouseLeft, distanceStartElementAndMouseTop, this.dragBoundary(), this.elementContainer());\n\n const elementKeepContainer = result.elementKeepContainer;\n const left = result.clientX - distanceStartElementAndMouseLeft;\n const top = result.clientY - distanceStartElementAndMouseTop;\n\n if (this.dragBoundary() && this.dragBoundaryAcceptMouseLeaveContainer()) {\n if (clientX < result.viewport.left) {\n mousePosition.clientX = result.viewport.left;\n }\n if (clientX > result.viewport.width) {\n mousePosition.clientX = result.viewport.width;\n }\n if (clientY < result.viewport.top) {\n mousePosition.clientY = result.viewport.top;\n }\n if (clientY > result.viewport.height) {\n mousePosition.clientY = result.viewport.height;\n }\n }\n nodeClone.style.left = `${left}px`;\n nodeClone.style.top = `${top}px`;\n\n const eventDragging = { mousePosition, elementDrag: nodeClone, elementKeepContainer, itemDragInfo: this.dragDropService.ItemDragInfo };\n\n this.dragDropService.OnDragging.next(eventDragging);\n });\n }\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAAO,MAAM,cAAc,GAAG,CAAC,MAAoD,EAAE,iBAAsC,EAAE,OAAe,KAAY;IACtJ,MAAM,aAAa,GAAG,CAAC;AACrB,YAAA,SAAS,EAAE,6BAA6B;AACxC,YAAA,MAAM,EAAE,CAAgB,cAAA,CAAA;AACzB,SAAA;AACD,QAAA;AACE,YAAA,SAAS,EAAE,wBAAwB;AACnC,YAAA,MAAM,EAAE,CAAA;AACK,gBAAA,CAAA;AACd,SAAA;AACD,QAAA;AACE,YAAA,SAAS,EAAE,oCAAoC;AAC/C,YAAA,MAAM,EAAE,CAAqB,mBAAA,CAAA;AAC9B,SAAA;AACD,QAAA;AACE,YAAA,SAAS,EAAE,2CAA2C;AACtD,YAAA,MAAM,EAAE,CAAqB,mBAAA,CAAA;AAC9B,SAAA;AACD,QAAA;AACE,YAAA,SAAS,EAAE,yCAAyC;AACpD,YAAA,MAAM,EAAE,CAAqB,mBAAA,CAAA;AAC9B,SAAA;AACD,QAAA;AACE,YAAA,SAAS,EAAE,iCAAiC;AAC5C,YAAA,MAAM,EAAE,CAAmC,iCAAA,CAAA;AAC5C,SAAA;AACD,QAAA;AACE,YAAA,SAAS,EAAE,gCAAgC;AAC3C,YAAA,MAAM,EAAE,CAAsB,oBAAA,CAAA;AAC/B,SAAA;AACD,QAAA;AACE,YAAA,SAAS,EAAE,yCAAyC;AACpD,YAAA,MAAM,EAAE,CAA4D,0DAAA,CAAA;AACrE,SAAA;AACD,QAAA;AACE,YAAA,SAAS,EAAE,sCAAsC;AACjD,YAAA,MAAM,EAAE,CAAyD,uDAAA,CAAA;AAClE,SAAA;AACD,QAAA;AACE,YAAA,SAAS,EAAE,uCAAuC;AAClD,YAAA,MAAM,EAAE,CAA0D,wDAAA,CAAA;AACnE,SAAA;AACD,QAAA;AACE,YAAA,SAAS,EAAE,wCAAwC;AACnD,YAAA,MAAM,EAAE,CAA2D,yDAAA,CAAA;AACpE,SAAA,CAAC,CAAC;AAEH,IAAA,MAAM,CAAC,OAAO,CAAC,IAAI,IAAG;AACpB,QAAA,MAAM,SAAS,GAAG,aAAa,CAAC,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,SAAS,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC;QAE9F,IAAI,SAAS,EAAE;AACb,YAAA,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YAE/B,OAAO;SACR;AACD,QAAA,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,KAAC,CAAC,CAAC;AACH,IAAA,MAAM,SAAS,GAAG,iBAAiB,GAAG,CAAc,WAAA,EAAA,OAAO,CAAI,EAAA,CAAA,GAAG,EAAE,CAAC;IACrE,IAAI,MAAM,GAAG,EAAE,CAAC;AAEhB,IAAA,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AAC7B,QAAA,MAAM,KAAK,GAAG,CAAG,EAAA,SAAS,CAAI,CAAA,EAAA,IAAI,CAAC,SAAS,CAAI,CAAA,EAAA,IAAI,CAAC,MAAM,GAAG,CAAC;AAE/D,QAAA,MAAM,GAAG,CAAG,EAAA,MAAM,CAAG,EAAA,KAAK,IAAI,CAAC;AACjC,KAAC,CAAC,CAAC;AAEH,IAAA,MAAM,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAsCP,MAAM,CAAA,CAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAE/B,IAAA,OAAO,MAAM,CAAC;AAChB,CAAC;;MCpGY,2BAA2B,CAAA;AAC9B,IAAA,UAAU,GAAG,IAAI,KAAK,EAAe,CAAC;AACtC,IAAA,kCAAkC,GAAG,IAAI,OAAO,EAAqC,CAAC;AACtF,IAAA,YAAY,CAAiB;AAC7B,IAAA,SAAS,GAAG,MAAM,CAAC,IAAI,GAAG,EAAiE,CAAC,CAAC;IAC7F,kBAAkB,GAAG,kBAAkB,CAAC;IACxC,oBAAoB,GAAG,6BAA6B,CAAC;IACrD,eAAe,GAAG,wBAAwB,CAAC;AAC3C,IAAA,UAAU,GAAG,IAAI,OAAO,EAAa,CAAC;AACtC,IAAA,WAAW,GAAG,IAAI,OAAO,EAAc,CAAC;AACxC,IAAA,SAAS,GAAG,IAAI,OAAO,EAAY,CAAC;AACpC,IAAA,UAAU,GAAG,IAAI,OAAO,EAAa,CAAC;AACtC,IAAA,WAAW,GAAG,IAAI,OAAO,EAAc,CAAC;AACxC,IAAA,MAAM,GAAG,IAAI,OAAO,EAAS,CAAC;AAC9B,IAAA,eAAe,GAAG,IAAI,OAAO,EAAS,CAAC;AACvC,IAAA,UAAU,GAAG,IAAI,OAAO,EAAU,CAAC;AAE3C,IAAA,IAAW,kCAAkC,GAAA;QAC3C,OAAO,IAAI,CAAC,kCAAkC,CAAC;KAChD;IAED,IAAW,YAAY,CAAC,IAA+B,EAAA;AACrD,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;KAC1B;AAED,IAAA,IAAW,YAAY,GAAA;QACrB,OAAO,IAAI,CAAC,YAAY,CAAC;KAC1B;AAED,IAAA,IAAW,SAAS,GAAA;QAClB,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;AAED,IAAA,IAAW,kBAAkB,GAAA;QAC3B,OAAO,IAAI,CAAC,kBAAkB,CAAC;KAChC;AAED,IAAA,IAAW,oBAAoB,GAAA;QAC7B,OAAO,IAAI,CAAC,oBAAoB,CAAC;KAClC;AAED,IAAA,IAAW,eAAe,GAAA;QACxB,OAAO,IAAI,CAAC,eAAe,CAAC;KAC7B;AAED,IAAA,IAAW,UAAU,GAAA;QACnB,OAAO,IAAI,CAAC,UAAU,CAAC;KACxB;AAED,IAAA,IAAW,UAAU,GAAA;QACnB,OAAO,IAAI,CAAC,UAAU,CAAC;KACxB;AAED,IAAA,IAAW,WAAW,GAAA;QACpB,OAAO,IAAI,CAAC,WAAW,CAAC;KACzB;AAED,IAAA,IAAW,WAAW,GAAA;QACpB,OAAO,IAAI,CAAC,WAAW,CAAC;KACzB;AAED,IAAA,IAAW,SAAS,GAAA;QAClB,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;AAED,IAAA,IAAW,eAAe,GAAA;QACxB,OAAO,IAAI,CAAC,eAAe,CAAC;KAC7B;AAED,IAAA,IAAW,MAAM,GAAA;QACf,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;AAED,IAAA,IAAW,UAAU,GAAA;QACnB,OAAO,IAAI,CAAC,UAAU,CAAC;KACxB;AAED,IAAA,IAAW,SAAS,GAAA;AAClB,QAAA,OAAO,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;KAC7B;IAED,IAAW,SAAS,CAAC,IAAiB,EAAA;AACpC,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC5B;IAEM,cAAc,GAAA;AACnB,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;KAC5B;AAEM,IAAA,iCAAiC,CAAC,oBAAmC,EAAE,sBAAqC,EAAE,iBAAgC,EAAA;AACnJ,QAAA,IAAI,oBAAoB,KAAK,sBAAsB,IAAI,CAAC,iBAAiB,EAAE;AACzE,YAAA,OAAO,KAAK,CAAC;SACd;QAED,IAAI,iBAAiB,KAAK,IAAI,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,oBAAoB,IAAI,eAAe,CAAC,EAAE;AAC5H,YAAA,OAAO,KAAK,CAAC;SACd;AAED,QAAA,OAAO,IAAI,CAAC;KACb;wGAnGU,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,cAH1B,KAAK,EAAA,CAAA,CAAA;;4FAGN,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAJvC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,KAAK;AAClB,iBAAA,CAAA;;;MCOY,mCAAmC,CAAA;;AAEtC,IAAA,UAAU,GAAG,MAAM,CAAU,KAAK,CAAC,CAAC;AACpC,IAAA,qBAAqB,GAAG,MAAM,CAAwB,SAAS,CAAC,CAAC;AAC/D,IAAA,uBAAuB,GAAG,MAAM,CAAqB,SAAS,CAAC,CAAC;AAChE,IAAA,SAAS,GAAG,IAAI,OAAO,EAAQ,CAAC;;IAGjC,gBAAgB,GAAG,KAAK,EAAW,CAAC;AACpC,IAAA,eAAe,GAAG,KAAK,CAA6B,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC,CAAC;AAC7F,IAAA,cAAc,GAAG,KAAK,CAA6B,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1F,iBAAiB,GAAG,KAAK,EAAe,CAAC;IACzC,wBAAwB,GAAG,KAAK,EAA4B,CAAC;;AAG5D,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAChC,IAAA,eAAe,GAAG,MAAM,CAAC,2BAA2B,CAAC,CAAC;IAEhE,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,aAAa,KAAK,IAAI,CAAC,+BAA+B,CAAC,aAAa,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;AAC3K,QAAA,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;AAC5E,YAAA,aAAa,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC;AAC9C,YAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE,EAAE;AAChC,gBAAA,MAAM,YAAY,GAAG,GAAG,CAAC,IAAI,CAAC,wBAAwB,EAAE,EAAE,SAAS,CAAC,EAAE,aAAa,CAAC,iBAAiB,CAAC;gBACtG,MAAM,YAAY,GAAG,GAAG,CAAC,IAAI,CAAC,wBAAwB,EAAE,EAAE,aAAa,CAAC,CAAC;gBACzE,IAAI,YAAY,EAAE;AAChB,oBAAA,YAAY,CAAC,KAAK,CAAC,SAAS,GAAG,CAAA,OAAA,EAAU,IAAI,CAAC,qBAAqB,EAAE,EAAE,iBAAiB,GAAG,CAAC;iBAC7F;gBACD,IAAI,CAAC,YAAY,EAAE;AACjB,oBAAA,YAAY,CAAC,KAAK,CAAC,SAAS,GAAG,CAAA,OAAA,EAAU,IAAI,CAAC,qBAAqB,EAAE,EAAE,iBAAiB,GAAG,CAAC;iBAC7F;AACD,gBAAA,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;aAC3C;AACD,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC7B,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;AAC9E,YAAA,IAAI,IAAI,CAAC,wBAAwB,EAAE;gBACjC,IAAI,CAAC,wBAAwB,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;aACnD;AACH,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE;YAClC,OAAO;SACR;QACD,IAAI,CAAC,wBAAwB,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,IAAG;YAC7F,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,wBAAwB,EAAE,QAAQ,CAAC,CAAC;YAE3D,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,QAAQ,EAAE;AAC/C,gBAAA,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACzC,gBAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;gBACnF,MAAM,YAAY,GAAG,GAAG,CAAC,IAAI,CAAC,wBAAwB,EAAE,aAAa,CAAC,CAAC;AAEvE,gBAAA,IAAI,YAAY,IAAI,QAAQ,CAAC,iBAAiB,GAAG,gBAAgB,CAAC,WAAW,GAAG,gBAAgB,CAAC,UAAU,GAAG,CAAC,EAAE;AAC/G,oBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1B,oBAAA,aAAa,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC;oBAE9C,OAAO;iBACR;AAED,gBAAA,IAAI,CAAC,YAAY,IAAI,QAAQ,CAAC,iBAAiB,GAAG,gBAAgB,CAAC,YAAY,GAAG,gBAAgB,CAAC,SAAS,GAAG,CAAC,EAAE;AAChH,oBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1B,oBAAA,aAAa,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC;oBAE9C,OAAO;iBACR;aACF;AACD,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC7B,SAAC,CAAC,CAAC;KACJ;;IAGS,+BAA+B,CAAC,aAAwB,EAAE,gBAA0B,EAAA;AAC5F,QAAA,IAAI,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;AAEjF,QAAA,IAAI,gBAAgB,IAAI,CAAC,yBAAyB,CAAC,aAAa,CAAC,aAAa,EAAE,gBAAgB,CAAC,EAAE;YACjG,OAAO;SACR;AACD,QAAA,MAAM,WAAW,GAAG,wBAAwB,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,CAAC;AAEpG,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE;YAC5B,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,EAAE,EAAE,qBAAqB,EAAyB,CAAC;AAEnG,YAAA,WAAW,CAAC,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC;AAC1C,YAAA,WAAW,CAAC,GAAG,GAAG,iBAAiB,CAAC,GAAG,CAAC;SACzC;QAED,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,WAAW,CAAC;QACjD,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,aAAa,CAAC,aAAa,CAAC;AACzD,QAAA,MAAM,SAAS,GAAG,IAAI,GAAG,gBAAgB,CAAC,WAAW,CAAC;AACtD,QAAA,MAAM,QAAQ,GAAG,GAAG,GAAG,gBAAgB,CAAC,YAAY,CAAC;AAErD,QAAA,aAAa,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC;QAC9C,IAAI,CAAC,OAAO,GAAG,IAAI,IAAI,OAAO,GAAG,IAAI,GAAG,KAAK,MAAM,OAAO,GAAG,GAAG,IAAI,OAAO,GAAG,GAAG,GAAG,MAAM,CAAC,EAAE;YAC3F,OAAO;SACR;QAED,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,WAAW,CAAC,MAAK;AAChD,YAAA,gBAAgB,IAAI,IAAI,CAAC,iBAAiB,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;YAC/E,IAAI,YAAY,GAAG,CAAC,CAAC;YACrB,IAAI,aAAa,GAAG,CAAC,CAAC;AAEtB,YAAA,IAAI,GAAG,IAAI,OAAO,IAAI,OAAO,IAAI,GAAG,GAAG,IAAI,CAAC,eAAe,EAAE,EAAE;AAC7D,gBAAA,gBAAgB,CAAC,SAAS,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpD,YAAY,GAAG,CAAC,CAAC,CAAC;aACnB;AAED,YAAA,IAAI,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE,IAAI,OAAO,IAAI,OAAO,IAAI,QAAQ,EAAE;AACvE,gBAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;oBACrB,OAAO;iBACR;AACD,gBAAA,gBAAgB,CAAC,SAAS,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpD,YAAY,GAAG,CAAC,CAAC;aAClB;AAED,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,eAAe,EAAE,IAAI,OAAO,MAAM,OAAO,IAAI,SAAS,CAAC,EAAE;AAC7E,gBAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;oBACrB,OAAO;iBACR;AACD,gBAAA,gBAAgB,CAAC,UAAU,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;gBACrD,aAAa,GAAG,CAAC,CAAC,CAAC;aAEpB;AACD,YAAA,IAAI,IAAI,IAAI,OAAO,IAAI,OAAO,IAAI,IAAI,GAAG,IAAI,CAAC,eAAe,EAAE,EAAE;AAC/D,gBAAA,gBAAgB,CAAC,UAAU,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;gBACrD,aAAa,GAAG,CAAC,CAAC,CAAC;aACpB;AAED,YAAA,IAAI,gBAAgB,CAAC,UAAU,KAAK,gBAAgB,CAAC,UAAU,GAAG,gBAAgB,CAAC,WAAW,IAAI,gBAAgB,CAAC,WAAW,CAAC,EAAE;AAC/H,gBAAA,gBAAgB,CAAC,UAAU,IAAI,gBAAgB,CAAC,UAAU,GAAG,gBAAgB,CAAC,WAAW,GAAG,gBAAgB,CAAC,WAAW,CAAC;aAC1H;AAED,YAAA,IAAI,gBAAgB,CAAC,SAAS,KAAK,gBAAgB,CAAC,SAAS,GAAG,gBAAgB,CAAC,YAAY,IAAI,gBAAgB,CAAC,YAAY,CAAC,EAAE;AAC/H,gBAAA,gBAAgB,CAAC,SAAS,IAAI,gBAAgB,CAAC,SAAS,GAAG,gBAAgB,CAAC,YAAY,GAAG,gBAAgB,CAAC,YAAY,CAAC;aAC1H;YAED,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,MAAM,CAAC,gBAAgB,CAAC,UAAU,IAAI,aAAa,GAAG,CAAC,CAAC,KAAK,YAAY,IAAI,gBAAgB,CAAC,YAAY,IAAI,gBAAgB,CAAC,SAAS,GAAG,gBAAgB,CAAC,YAAY,GAAG,CAAC,CAAC,KAAK,aAAa,IAAI,gBAAgB,CAAC,WAAW,IAAI,gBAAgB,CAAC,UAAU,GAAG,gBAAgB,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;AACtV,gBAAA,OAAO,aAAa,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC;aACtD;AACH,SAAC,EAAE,EAAE,CAAC,CAAC,CAAC;KACT;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KAC3B;wGA/IU,mCAAmC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4FAAnC,mCAAmC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,wBAAA,EAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,UAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAnC,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAL/C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;;AAET,oBAAA,QAAQ,EAAE,uCAAuC;AACjD,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;;;ACAK,MAAO,sCAAuC,SAAQ,mCAAmC,CAAA;;AAErF,IAAA,OAAO,GAAG,MAAM,CAAS,IAAI,EAAE,CAAC,CAAC;AACjC,IAAA,UAAU,GAAG,MAAM,CAAU,KAAK,CAAC,CAAC;;IAGnC,oBAAoB,GAAG,KAAK,EAAW,CAAC;AACxC,IAAA,IAAI,GAAG,KAAK,CAAuC,MAAM,EAAE,EAAE,SAAS,EAAE,KAAK,IAAI,KAAK,IAAI,MAAM,EAAE,CAAC,CAAC;IACpG,aAAa,GAAG,KAAK,EAA6B,CAAC;AACnD,IAAA,iBAAiB,GAAG,KAAK,CAAuD,UAAU,EAAE,EAAE,SAAS,EAAE,KAAK,IAAI,KAAK,IAAI,UAAU,EAAE,CAAC,CAAC;AACzI,IAAA,mBAAmB,GAAG,KAAK,CAA+B,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC,CAAC;AACzG,IAAA,WAAW,GAAG,KAAK,CAA+B,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC,CAAC;AAC/F,IAAA,SAAS,GAAG,KAAK,CAA6B,yBAAyB,EAAE,EAAE,SAAS,EAAE,KAAK,IAAI,KAAK,IAAI,yBAAyB,EAAE,CAAC,CAAC;AACrI,IAAA,eAAe,GAAG,KAAK,CAAuB,IAAI,CAAC,CAAC;AACpD,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAkB,CAAC;IACzC,cAAc,GAAG,KAAK,EAAgD,CAAC;;IAGvE,qBAAqB,GAAG,MAAM,EAAc,CAAC;IAC7C,oBAAoB,GAAG,MAAM,EAAa,CAAC;IAC3C,qBAAqB,GAAG,MAAM,EAAc,CAAC;IAC7C,mBAAmB,GAAG,MAAM,EAAY,CAAC;IACzC,mBAAmB,GAAG,MAAM,EAAS,CAAC;IACtC,wBAAwB,GAAG,MAAM,EAAS,CAAC;IAC3C,kBAAkB,GAAG,MAAM,EAAiC,CAAC;AAEtE,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAA4B,CAAC;AAE7D,QAAA,MAAM,SAAS,GAAG,EAAE,OAAO,EAAE,CAAC;QAE9B,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,IAAG;YAC3C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;AACpC,YAAA,OAAO,IAAI,CAAC;AACd,SAAC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE;gBAC7B,OAAO;aACR;YACD,SAAS,CAAC,MAAK;gBACb,GAAG,CAAC,SAAS,EAAE,eAAe,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;AAC1D,gBAAA,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,IAAI,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;AAC/E,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAK;YACV,IAAI,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE;gBACzD,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;aACpE;AACH,SAAC,CAAC,CAAC;QACH,MAAM,CAAC,MAAK;YACV,IAAI,IAAI,CAAC,oBAAoB,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE;gBAChE,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;aACpE;AACH,SAAC,CAAC,CAAC;KACJ;IAEQ,eAAe,GAAA;QACtB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,8BAA8B,EAAE,MAAM,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;AAE3I,QAAA,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,YAAY,IAAG;YAChD,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC1D,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAK;AAC5B,YAAA,IAAI,iBAAiB,GAAG,CAAC,CAAC,EAAE;AAC1B,gBAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,IAAG;AACxB,oBAAA,KAAK,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;AACnC,oBAAA,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;AACpB,iBAAC,CAAC,CAAC;aACJ;AAED,YAAA,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AAC1D,SAAC,CAAC,CAAC;AACH,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,aAA4B,CAAC;AAEtE,QAAA,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,SAAS,IAAI,SAAS,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACtM,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAEjD,QAAQ,CAAC,WAAW,GAAG,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,iBAAiB,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AAC/G,QAAA,gBAAgB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QACvC,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,CAAC;AAE1E,QAAA,MAAM,gBAAgB,GAAG,CAAC,cAA0B,KAAI;AAEtD,YAAA,IAAI,CAAC,8BAA8B,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;AAC5D,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,cAAc,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE;AACzE,gBAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,GAAG,cAAc,EAAE,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC,CAAC;aACzG;AACH,SAAC,CAAC;AAEF,QAAA,MAAM,UAAU,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,EAAE,CAAC;AACxD,QAAA,IAAI,iBAAiB,GAAG,CAAC,CAAC,CAAC;AAC3B,QAAA,MAAM,eAAe,GAAG,CAAC,aAAwB,KAAI;AACnD,YAAA,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,GAAG,aAAa,CAAC;AAEvD,YAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,iCAAiC,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,WAAW,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC,EAAE;gBAChM,OAAO;aACR;AACD,YAAA,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;AACtE,YAAA,MAAM,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YAC9E,MAAM,kBAAkB,GAAG,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAC/D,MAAM,sBAAsB,GAAG,eAAe,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;AAEvE,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,kBAAkB,MAAM,kBAAkB,KAAK,sBAAsB,CAAC,EAAE;AAC9F,gBAAA,IAAI,sBAAsB,KAAK,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACnE,oBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,IAAI,CAAC;AAEvI,oBAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,IAAG;AACxB,wBAAA,IAAI,iBAAiB,IAAI,CAAC,EAAE;AAC1B,4BAAA,KAAK,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;yBACpC;wBACD,KAAK,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;AACrC,wBAAA,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;AACpB,qBAAC,CAAC,CAAC;oBACH,iBAAiB,GAAG,aAAa,CAAC;oBAClC,IAAI,CAAC,8BAA8B,CAAC,gBAAgB,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC;iBACjF;gBAED,OAAO;aACR;YAED,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,SAAS,GAAG,CAAC,IAAI,aAAa,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,IAAI,aAAa,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,KAAK,UAAU,CAAC,SAAS,KAAK,SAAS,IAAI,UAAU,CAAC,aAAa,KAAK,aAAa,CAAC,EAAE;gBAC7P,OAAO;aACR;;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,CAAC;YAEzC,IAAI,CAAC,2BAA2B,CAAC,SAAS,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;AAC5E,YAAA,UAAU,CAAC,SAAS,GAAG,SAAS,CAAC;AACjC,YAAA,UAAU,CAAC,aAAa,GAAG,aAAa,CAAC;AACzC,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,IAAG;AACxB,gBAAA,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;gBAC3B,KAAK,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;AACzC,gBAAA,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;AACpB,aAAC,CAAC,CAAC;YAEH,WAAW,CAAC,YAAY,CAAC,OAAO,EAAE,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC5D,YAAA,IAAI,CAAC,8BAA8B,CAAC,gBAAgB,CAAC,CAAC;AACxD,SAAC,CAAC;AAEF,QAAA,MAAM,qBAAqB,GAAG,CAAC,SAAmB,EAAE,UAAoB,KAAI;AAC1E,YAAA,aAAa,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC;AAC9C,YAAA,UAAU,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;AAC1B,YAAA,UAAU,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC;AAC9B,YAAA,MAAM,eAAe,GAAG,gBAAgB,CAAC,sBAAsB,CAAC,IAAI,CAAC,eAAe,CAAC,eAAe,CAAkC,CAAC;AAEvI,YAAA,IAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC,iBAAiB,EAAE,IAAI,gBAAgB,EAAE,EAAE;gBACvG,MAAM,iBAAiB,GAAG,KAAK,CAAC,IAAI,CAAc,eAAe,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,yCAAyC,CAAC,CAAC,CAAC;AAE7J,gBAAA,IAAI,iBAAiB,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,SAAS,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE;AAC9F,oBAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,IAAG;AACxB,wBAAA,KAAK,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;AACnC,wBAAA,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;AACpB,qBAAC,CAAC,CAAC;iBACJ;gBACD,iBAAiB,GAAG,CAAC,CAAC,CAAC;AAEvB,gBAAA,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;AACpD,gBAAA,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;gBAEvC,OAAO;aACR;AACD,YAAA,IAAI,iBAAiB,IAAI,CAAC,EAAE;AAC1B,gBAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,IAAG;AACxB,oBAAA,KAAK,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;AACnC,oBAAA,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;AACpB,iBAAC,CAAC,CAAC;aACJ;YACD,iBAAiB,GAAG,CAAC,CAAC,CAAC;AACzB,SAAC,CAAC;AAEF,QAAA,MAAM,eAAe,GAAG,CAAC,aAAwB,KAAI;AACnD,YAAA,IAAI,CAAC,8BAA8B,CAAC,gBAAgB,CAAC,CAAC;AACtD,YAAA,MAAM,EAAE,WAAW,EAAE,GAAG,aAAa,CAAC;YACtC,MAAM,WAAW,GAAG,WAAW,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;YACzD,MAAM,UAAU,GAAG,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAEvD,IAAI,WAAW,IAAI,UAAU,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC,KAAK,UAAU,CAAC,EAAE;AACjG,gBAAA,MAAM,eAAe,GAAG,gBAAgB,CAAC,sBAAsB,CAAC,IAAI,CAAC,eAAe,CAAC,eAAe,CAAkC,CAAC;gBACvI,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAc,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,UAAU,CAAC,CAAC;AAE5H,gBAAA,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,aAAa,CAAC,YAAY,EAAE,SAAS,EAAE,IAAI,YAAY,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,yCAAyC,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,EAAE;oBAClO,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;AAC3E,oBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;oBAC5D,QAAQ,CAAC,MAAM,EAAE,CAAC;oBAClB,QAAQ,CAAC,WAAW,GAAG,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,iBAAiB,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AAC/G,oBAAA,gBAAgB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AACvC,oBAAA,IAAI,CAAC,8BAA8B,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;iBAC7D;aACF;AAED,YAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE,EAAE;gBAC/B,OAAO;aACR;AAED,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE;AACzF,gBAAA,IAAI,CAAC,+BAA+B,CAAC,aAAa,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;gBAC5G,OAAO;aACR;AAED,YAAA,IAAI,CAAC,yBAAyB,CAAC,aAAa,CAAC,aAAa,GAAG,IAAI,CAAC,iBAAiB,EAAE,IAAI,gBAAgB,EAAE,EAAE;AAC3G,gBAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AACrB,oBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC3B,oBAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,GAAG,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAC,CAAC;iBAC3F;AAED,gBAAA,OAAO,qBAAqB,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;aACnD;YACD,IAAI,CAAC,+BAA+B,CAAC,aAAa,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;;AAG7E,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE;AACtB,gBAAA,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;AACvE,gBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1B,gBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,GAAG,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,CAAC,CAAC;aACzF;YACD,MAAM,aAAa,GAAG,EAAE,GAAG,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,CAAC;YAE9E,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE;gBACxB,aAAa,CAAC,eAAe,GAAG;AAC9B,oBAAA,YAAY,EAAE,CAAC,IAAY,KAAI;AAC7B,wBAAA,IAAI,IAAI,KAAK,SAAS,EAAE;AACtB,4BAAA,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;yBACvB;AACD,wBAAA,IAAI,IAAI,KAAK,OAAO,EAAE;AACpB,4BAAA,OAAO,IAAI,CAAC;yBACb;AAED,wBAAA,OAAO,CAAC,CAAC;qBACV;iBACwB,CAAC;gBAC5B,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAEpD,OAAO;aACR;AAED,YAAA,MAAM,eAAe,GAAG,gBAAgB,CAAC,sBAAsB,CAAC,IAAI,CAAC,eAAe,CAAC,eAAe,CAAkC,CAAC;YACvI,IAAI,YAAY,GAAG,KAAK,CAAC,IAAI,CAAc,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,yBAAyB,CAAC,aAAa,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC;AAE3I,YAAA,IAAI,YAAY,EAAE;gBAChB,OAAO;aACR;YACD,YAAY,GAAG,KAAK,CAAC,IAAI,CAAc,eAAe,CAAC,CAAC,GAAG,EAAE,CAAC;YAE9D,IAAI,YAAY,EAAE;AAChB,gBAAA,aAAa,CAAC,eAAe,GAAG,YAAY,CAAC;gBAC7C,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aACrD;AACH,SAAC,CAAC;AAEF,QAAA,MAAM,cAAc,GAAG,CAAC,YAAsB,KAAI;AAChD,YAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE,EAAE;gBAC/B,OAAO;aACR;YACD,IAAI,IAAI,GAAG,SAAS,CAAC;AAErB,YAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,IAAI,gBAAgB,EAAE;AAChD,gBAAA,IAAI,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,gBAAgB,GAAG,qBAAqB,EAAE,CAAC;aAChF;YACD,qBAAqB,CAAC,YAAY,CAAC,CAAC;YACpC,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,GAAG,YAAY,CAAC;AAElE,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE;gBAC1D,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,GAAG,YAAY,EAAE,CAAC,CAAC;aACpD;AACD,YAAA,IAAI,CAAC,yBAAyB,CAAC,aAAa,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,gBAAgB,EAAE,IAAI,CAAC,EAAE;gBACjG,OAAO;aACR;AACD,YAAA,MAAM,SAAS,GAAG,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC;AAE1G,YAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,iCAAiC,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,WAAW,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC,EAAE;gBAChM,OAAO;aACR;AAED,YAAA,MAAM,eAAe,GAAG,gBAAgB,CAAC,sBAAsB,CAAC,IAAI,CAAC,eAAe,CAAC,eAAe,CAAkC,CAAC;YACvI,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAc,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,yBAAyB,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC;YAE/H,IAAI,YAAY,EAAE;AAChB,gBAAA,SAAS,CAAC,WAAW,GAAG,YAAY,CAAC;gBACrC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAE5C,OAAO;aACR;YACD,SAAS,CAAC,WAAW,GAAG;AACtB,gBAAA,YAAY,EAAE,CAAC,IAAY,KAAI;AAC7B,oBAAA,IAAI,IAAI,KAAK,eAAe,EAAE;AAC5B,wBAAA,OAAO,IAAI,CAAC;qBACb;AACD,oBAAA,IAAI,IAAI,KAAK,SAAS,EAAE;AACtB,wBAAA,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;qBACvB;AACD,oBAAA,IAAI,IAAI,KAAK,OAAO,EAAE;AACpB,wBAAA,OAAO,IAAI,CAAC;qBACb;oBAED,OAAO,eAAe,CAAC,MAAM,CAAC;iBAC/B;aACwB,CAAC;YAC5B,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC9C,SAAC,CAAC;AAEF,QAAA,MAAM,WAAW,GAAG,CAAC,SAAgB,KAAI;AACvC,YAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE,EAAE;gBAC/B,OAAO;aACR;YACD,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,SAAS,CAAC;YAE7D,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE;gBACpH,IAAI,YAAY,EAAE;AAChB,oBAAA,YAAY,CAAC,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;AAC7E,oBAAA,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;AACpC,oBAAA,YAAY,CAAC,aAAa,GAAG,gBAAgB,CAAC;iBAC/C;AACD,gBAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE,EAAE;AAC9B,oBAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;iBAC1C;AACD,gBAAA,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;AACxC,gBAAA,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;gBACvC,OAAO;aACR;YAED,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE;gBACzI,OAAO;aACR;AACD,YAAA,MAAM,aAAa,GAAG,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,WAAW,CAAC,YAAY,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;YAChI,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,UAAU,GAAG,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,YAAY,EAAE,IAAI,CAAC;YAE7F,IAAI,YAAY,EAAE;AAChB,gBAAA,YAAY,CAAC,SAAS,GAAG,aAAa,CAAC;AACvC,gBAAA,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;AACpC,gBAAA,YAAY,CAAC,aAAa,GAAG,gBAAgB,CAAC;aAC/C;YAED,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE;AACxB,gBAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aAC/C;AAED,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,IAAG;gBACxB,KAAK,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;AACrC,gBAAA,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;AACpB,aAAC,CAAC,CAAC;YAEH,IAAI,YAAY,IAAI,YAAY,CAAC,SAAS,IAAI,YAAY,CAAC,SAAS,EAAE,EAAE;AACtE,gBAAA,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAC1D,gBAAA,IAAI,CAAC,8BAA8B,CAAC,gBAAgB,CAAC,CAAC;aACvD;AAED,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACzC,YAAA,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;AACxC,YAAA,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;AACzC,SAAC,CAAC;QAEF,CAAC;AACC,gBAAA,IAAI,EAAE,aAAa;AACnB,gBAAA,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,WAAW;AACvC,gBAAA,YAAY,EAAE,gBAAgB;aAC/B,EAAE;AACD,gBAAA,IAAI,EAAE,YAAY;AAClB,gBAAA,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,UAAU;AACtC,gBAAA,YAAY,EAAE,eAAe;aAC9B,EAAE;AACD,gBAAA,IAAI,EAAE,YAAY;AAClB,gBAAA,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,UAAU;AACtC,gBAAA,YAAY,EAAE,eAAe;aAC9B,EAAE;AACD,gBAAA,IAAI,EAAE,WAAW;AACjB,gBAAA,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,SAAS;AACrC,gBAAA,YAAY,EAAE,cAAc;aAC7B,EAAE;AACD,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM;AAClC,gBAAA,YAAY,EAAE,WAAW;AAC1B,aAAA,CAAC,CAAC,OAAO,CAAC,CAAC,IAAwE,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;KAErK;;AAGO,IAAA,MAAM,8BAA8B,CAAC,gBAA6B,EAAE,WAAqB,EAAE,WAAoB,EAAA;AACrH,QAAA,MAAM,eAAe,GAAG,gBAAgB,CAAC,sBAAsB,CAAC,IAAI,CAAC,eAAe,CAAC,eAAe,CAAkC,CAAC;AACvI,QAAA,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;QAEf,gBAAgB,CAAC,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AACzD,QAAA,gBAAgB,CAAC,eAAe,CAAC,sBAAsB,CAAC,CAAC;AAEzD,QAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE,EAAE;AAC/B,YAAA,gBAAgB,CAAC,YAAY,CAAC,sBAAsB,EAAE,CAAA,EAAG,IAAI,CAAC,oBAAoB,EAAE,CAAE,CAAA,CAAC,CAAC;SACzF;AACD,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;AACpB,YAAA,gBAAgB,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;SACpE;QACD,KAAK,CAAC,IAAI,CAAc,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC,YAAY,KAAI;YAChE,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,YAAY,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,SAAS,EAAE,EAAE;gBAC1G,YAAY,CAAC,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;aACtD;AACD,YAAA,IAAI,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,OAAO,EAAE,EAAE;gBAC3D,OAAO;aACR;YACD,KAAK,IAAI,CAAC,CAAC;YACX,YAAY,CAAC,YAAY,CAAC,OAAO,EAAE,CAAG,EAAA,KAAK,CAAE,CAAA,CAAC,CAAC;AAC/C,YAAA,YAAY,CAAC,eAAe,CAAC,sBAAsB,CAAC,CAAC;AACrD,YAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE,EAAE;AAC/B,gBAAA,YAAY,CAAC,YAAY,CAAC,sBAAsB,EAAE,CAAA,EAAG,IAAI,CAAC,oBAAoB,EAAE,CAAE,CAAA,CAAC,CAAC;aACrF;AACD,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE;AAC/D,gBAAA,YAAY,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;aAChE;AACD,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,gBAAA,YAAY,CAAC,YAAY,CAAC,aAAa,EAAE,CAAA,EAAG,IAAI,CAAC,WAAW,EAAE,CAAE,CAAA,CAAC,CAAC;aACnE;AACD,YAAA,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;AAC1B,gBAAA,YAAY,CAAC,YAAY,CAAC,iBAAiB,EAAE,GAAG,IAAI,CAAC,eAAe,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA,CAAE,CAAC,CAAC;aACtF;YACD,IAAI,WAAW,KAAK,KAAK,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;gBAC/C,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,oCAAoC,CAAC,EAAE;AAC1E,oBAAA,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;iBAClE;gBACD,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,yCAAyC,CAAC,EAAE;AAC/E,oBAAA,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;iBACvE;aACF;YAED,IAAI,WAAW,IAAI,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,IAAI,KAAK,EAAE;AACrH,gBAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;oBACtB,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,oCAAoC,CAAC,EAAE;AAC1E,wBAAA,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;qBAClE;oBACD,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,2CAA2C,CAAC,EAAE;AACjF,wBAAA,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;qBACzE;iBACF;AAED,gBAAA,IAAI,CAAC,eAAe,CAAC,YAAY,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAW,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC;AAC5L,gBAAA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,MAAM,EAAE;oBAC1B,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,IAAG;AAC1D,wBAAA,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACvB,wBAAA,OAAO,CAAC,GAAG,KAAK,CAAC,CAAA;AACnB,qBAAC,CAAC,CAAC;iBACJ;aACF;AACH,SAAC,CAAC,CAAC;KACJ;AAEO,IAAA,qBAAqB,CAAC,gBAA6B,EAAE,kBAAkB,GAAG,KAAK,EAAA;AACrF,QAAA,IAAI,CAAC,8BAA8B,CAAC,gBAAgB,CAAC,CAAC;QACtD,IAAI,kBAAkB,EAAE;AACtB,YAAA,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;SACzC;AACD,QAAA,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;KACxC;;AAEO,IAAA,2BAA2B,CAAC,SAAiB,EAAE,aAAqB,EAAE,eAA4B,EAAA;QACxG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,eAAe,EAAE;YAC7C,OAAO;SACR;AACD,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,KAAK,UAAU,EAAE;AACvC,YAAA,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,yCAAyC,CAAC,CAAC;AAC5E,YAAA,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,sCAAsC,CAAC,CAAC;AACzE,YAAA,IAAI,SAAS,GAAG,aAAa,EAAE;AAC7B,gBAAA,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;aAC1E;AACD,YAAA,IAAI,SAAS,GAAG,aAAa,EAAE;AAC7B,gBAAA,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;aACvE;YAED,OAAO;SACR;AAED,QAAA,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,uCAAuC,CAAC,CAAC;AAC1E,QAAA,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,wCAAwC,CAAC,CAAC;AAC3E,QAAA,IAAI,SAAS,GAAG,aAAa,EAAE;AAC7B,YAAA,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;SACzE;AACD,QAAA,IAAI,SAAS,GAAG,aAAa,EAAE;AAC7B,YAAA,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;SACxE;KAEF;AAEO,IAAA,eAAe,CAAC,gBAA6B,EAAA;AACnD,QAAA,MAAM,eAAe,GAAG,gBAAgB,CAAC,sBAAsB,CAAC,IAAI,CAAC,eAAe,CAAC,eAAe,CAAkC,CAAC;AACvI,QAAA,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;QAEf,KAAK,CAAC,IAAI,CAAc,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC,YAAY,KAAI;AAChE,YAAA,IAAI,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,OAAO,EAAE,EAAE;gBAC3D,OAAO;aACR;YACD,KAAK,IAAI,CAAC,CAAC;YACX,YAAY,CAAC,YAAY,CAAC,OAAO,EAAE,CAAG,EAAA,KAAK,CAAE,CAAA,CAAC,CAAC;AACjD,SAAC,CAAC,CAAC;KAEJ;IAEO,gBAAgB,CAAC,gBAA6B,EAAE,sCAAgD,EAAA;AACtG,QAAA,MAAM,eAAe,GAAG,gBAAgB,CAAC,sBAAsB,CAAC,IAAI,CAAC,eAAe,CAAC,eAAe,CAAkC,CAAC;AAEvI,QAAA,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,sCAAsC,CAAC,CAAC;QAC1E,KAAK,CAAC,IAAI,CAAc,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC,YAAY,KAAI;AAChE,YAAA,IAAI,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,OAAO,EAAE,EAAE;gBAC3D,OAAO;aACR;AACD,YAAA,YAAY,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;AACtC,YAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,MAAM,EAAE;AAC9D,gBAAA,YAAY,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAC;aACjD;AACD,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;AACvB,gBAAA,YAAY,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;aAC7C;AACD,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AACtB,gBAAA,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,oCAAoC,CAAC,CAAC;gBACpE,IAAI,CAAC,sCAAsC,EAAE;AAE3C,oBAAA,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,2CAA2C,CAAC,CAAC;iBAC5E;AACD,gBAAA,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,yCAAyC,CAAC,CAAC;aAC1E;AACH,SAAC,CAAC,CAAC;KAEJ;wGAxgBU,sCAAsC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4FAAtC,sCAAsC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0CAAA,EAAA,MAAA,EAAA,EAAA,oBAAA,EAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAtC,sCAAsC,EAAA,UAAA,EAAA,CAAA;kBALlD,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;;AAET,oBAAA,QAAQ,EAAE,0CAA0C;AACpD,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;;;MCGY,+CAA+C,CAAA;;AAEhD,IAAA,SAAS,GAAG,IAAI,OAAO,EAAQ,CAAC;;IAGjC,mBAAmB,GAAG,MAAM,EAAY,CAAC;;AAGxC,IAAA,eAAe,GAAG,MAAM,CAAC,2BAA2B,CAAC,CAAC;IAEhE,eAAe,GAAA;QACb,MAAM,QAAQ,GAAG,MAAI;YACnB,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YAC/C,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;AACnD,SAAC,CAAC;QACF,MAAM,WAAW,GAAG,MAAI;YACtB,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAC5C,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AAC9C,SAAC,CAAC;AACA,QAAA,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAG;AAC3E,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACnC,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,eAAe,CAAC,kCAAkC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,qCAAqC,IAAG;AACxI,YAAA,QAAQ,EAAE,CAAC;AACX,YAAA,MAAM,cAAc,GAAG,CAAC,UAAsB,KAAI;AAChD,gBAAA,IAAI,CAAC,qCAAqC,CAAC,eAAe,EAAE;oBAC1D,UAAU,CAAC,cAAc,EAAE,CAAC;oBAC5B,UAAU,CAAC,eAAe,EAAE,CAAC;iBAC9B;AACH,aAAC,CAAC;AACF,YAAA,MAAM,eAAe,GAAG,SAAS,CAAa,QAAQ,EAAE,SAAS,CAAC;AAC/D,iBAAA,IAAI,CAAC,GAAG,CAAC,CAAC,YAAY,KAAI;AACzB,gBAAA,IAAI,CAAC,mCAAmC,CAAC,MAAM,CAAC,CAAC;gBACjD,cAAc,CAAC,YAAY,CAAC,CAAC;AAC7B,gBAAA,MAAM,aAAa,GAAG,EAAE,OAAO,EAAE,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,OAAO,EAAE,CAAC;gBAEvF,IAAI,qCAAqC,CAAC,YAAY,IAAI,qCAAqC,CAAC,qCAAqC,EAAE;AACrI,oBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,qCAAqC,CAAC,WAAW,EAAE,aAAa,EAAE,qCAAqC,CAAC,gCAAgC,EAAE,qCAAqC,CAAC,+BAA+B,EAAE,qCAAqC,CAAC,YAAY,EAAE,qCAAqC,CAAC,gBAAgB,CAAC,CAAC;AAEnW,oBAAA,aAAa,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AACvC,oBAAA,aAAa,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;iBACxC;AACD,gBAAA,MAAM,YAAY,GAAG,EAAE,aAAa,EAAE,WAAW,EAAE,qCAAqC,CAAC,WAAW,EAAE,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;AAExJ,gBAAA,IAAI,CAAC,eAAe,CAAC,YAAY,GAAG,SAAS,CAAC;gBAC9C,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAClD,gBAAA,qCAAqC,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;AAC3D,gBAAA,WAAW,EAAE,CAAC;aACf,CAAC,CAAC,CAAC;AAEN,YAAA,SAAS,CAAa,QAAQ,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,cAAc,KAAI;gBACvE,cAAc,CAAC,cAAc,CAAC,CAAC;AAC/B,gBAAA,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,cAAc,CAAC;AAC5C,gBAAA,MAAM,aAAa,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAE3C,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,qCAAqC,CAAC,WAAW,EAAE,aAAa,EAAE,qCAAqC,CAAC,gCAAgC,EAAE,qCAAqC,CAAC,+BAA+B,EAAE,qCAAqC,CAAC,YAAY,EAAE,qCAAqC,CAAC,gBAAgB,CAAC,CAAC;AACnW,gBAAA,MAAM,oBAAoB,GAAG,MAAM,CAAC,oBAAoB,CAAC;gBACzD,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,GAAG,qCAAqC,CAAC,gCAAgC,CAAC;gBACrG,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,GAAG,qCAAqC,CAAC,+BAA+B,CAAC;gBAEnG,IAAI,qCAAqC,CAAC,YAAY,IAAI,qCAAqC,CAAC,qCAAqC,EAAE;oBACrI,IAAI,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE;wBAClC,aAAa,CAAC,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;qBAC9C;oBACD,IAAI,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE;wBACnC,aAAa,CAAC,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;qBAC/C;oBACD,IAAI,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE;wBACjC,aAAa,CAAC,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;qBAC7C;oBACD,IAAI,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;wBACpC,aAAa,CAAC,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;qBAChD;iBACF;gBACD,qCAAqC,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,GAAG,CAAA,EAAG,IAAI,CAAA,EAAA,CAAI,CAAC;gBAC3E,qCAAqC,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,GAAG,CAAA,EAAG,GAAG,CAAA,EAAA,CAAI,CAAC;gBAEzE,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,WAAW,EAAE,qCAAqC,CAAC,WAAW,EAAE,oBAAoB,EAAE,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC,CAAC;AACjM,aAAC,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;AAE3E,SAAC,CAAC,CAAC;KACJ;;IAIS,iBAAiB,CAAC,OAAoB,EAAE,aAAoD,EAAE,gCAAwC,EAAE,+BAAuC,EAAE,YAAsB,EAAE,gBAA8B,EAAA;AAC/O,QAAA,IAAI,QAAQ,GAAG,WAAW,EAAyB,CAAC;AACpD,QAAA,MAAM,WAAW,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;QACpD,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;AAClG,QAAA,MAAM,aAAa,GAAG,gBAAgB,IAAI,aAAa,EAAE,aAAa,IAAI,aAAa,EAAE,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC;AAClH,QAAA,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,aAAa,CAAC;AAEzC,QAAA,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC;AAClB,QAAA,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC;QACjB,IAAI,YAAY,EAAE;YAChB,QAAQ,GAAG,wBAAwB,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,CAAC;YAC3E,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC;YACjD,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC;SACjD;QACD,IAAI,oBAAoB,GAAG,KAAK,CAAC;QAEjC,IAAI,OAAO,GAAG,QAAQ,CAAC,KAAK,IAAI,OAAO,GAAG,QAAQ,CAAC,MAAM,IAAI,OAAO,GAAG,QAAQ,CAAC,IAAI,IAAI,OAAO,GAAG,QAAQ,CAAC,GAAG,EAAE;YAC9G,oBAAoB,GAAG,IAAI,CAAC;SAC7B;AAED,QAAA,IAAI,CAAC,OAAO,IAAI,WAAW,CAAC,KAAK,GAAG,gCAAgC,CAAC,IAAI,QAAQ,CAAC,KAAK,EAAE;AACvF,YAAA,OAAO,KAAK,OAAO,IAAI,WAAW,CAAC,KAAK,GAAG,gCAAgC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;SAChG;AACD,QAAA,IAAI,CAAC,OAAO,IAAI,WAAW,CAAC,MAAM,GAAG,+BAA+B,CAAC,IAAI,QAAQ,CAAC,MAAM,EAAE;AACxF,YAAA,OAAO,KAAK,OAAO,IAAI,WAAW,CAAC,MAAM,GAAG,+BAA+B,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;SACjG;QACD,IAAI,CAAC,OAAO,GAAG,gCAAgC,KAAK,YAAY,IAAI,aAAa,GAAG,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE;AACtG,YAAA,OAAO,GAAG,CAAC,YAAY,IAAI,aAAa,GAAG,QAAQ,CAAC,IAAI,GAAG,CAAC,IAAI,gCAAgC,CAAC;SAClG;QACD,IAAI,CAAC,OAAO,GAAG,+BAA+B,KAAK,YAAY,IAAI,aAAa,GAAG,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE;AACpG,YAAA,OAAO,GAAG,CAAC,YAAY,IAAI,aAAa,GAAG,QAAQ,CAAC,GAAG,GAAG,CAAC,IAAI,+BAA+B,CAAC;SAChG;QAED,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,CAAC;KAC7D;AAES,IAAA,mCAAmC,CAAC,aAA8B,EAAA;QAC1E,MAAM,MAAM,GAAG,QAAQ,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;AAEvD,QAAA,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE;YACnB,OAAO;SACR;AAED,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;YACtC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,GAAG,aAAa,CAAC;SAC/C;KACF;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KAC3B;wGAxIU,+CAA+C,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4FAA/C,+CAA+C,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mDAAA,EAAA,OAAA,EAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAA/C,+CAA+C,EAAA,UAAA,EAAA,CAAA;kBAN3D,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;;AAET,oBAAA,QAAQ,EAAE,mDAAmD;AAC7D,oBAAA,UAAU,EAAE,IAAI;AAEjB,iBAAA,CAAA;;;ACZD;AAaM,MAAO,uBAAwB,SAAQ,+CAA+C,CAAA;;AAElF,IAAA,UAAU,GAAG,MAAM,CAAU,KAAK,CAAC,CAAC;AACpC,IAAA,UAAU,GAAG,MAAM,CAAU,KAAK,CAAC,CAAC;;;AAInC,IAAA,OAAO,GAAG,KAAK,CAAS,EAAE,CAAC,CAAC;AAC5B,IAAA,IAAI,GAAG,KAAK,CAAM,SAAS,CAAC,CAAC;IAC7B,4BAA4B,GAAG,KAAK,EAAW,CAAC;;AAEhD,IAAA,gCAAgC,GAAG,KAAK,CAA6B,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5G,eAAe,GAAG,KAAK,EAAW,CAAC;IACnC,sBAAsB,GAAG,KAAK,EAAW,CAAC;IAC1C,eAAe,GAAG,KAAK,EAAW,CAAC;AACnC,IAAA,SAAS,GAAG,KAAK,CAA6B,yBAAyB,EAAE,EAAE,SAAS,EAAE,KAAK,IAAI,KAAK,IAAI,yBAAyB,EAAE,CAAC,CAAC;IACrI,YAAY,GAAG,KAAK,EAAW,CAAC;IAChC,qCAAqC,GAAG,KAAK,EAAW,CAAC;IACzD,gBAAgB,GAAG,KAAK,EAAe,CAAC;AACxC,IAAA,MAAM,GAAG,KAAK,CAA6B,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC,CAAC;IACxF,OAAO,GAAG,KAAK,EAAW,CAAC;;IAG3B,YAAY,GAAG,MAAM,EAAc,CAAC;IACpC,WAAW,GAAG,MAAM,EAAa,CAAC;IAClC,YAAY,GAAG,MAAM,EAAc,CAAC;IACpC,UAAU,GAAG,MAAM,EAAY,CAAC;IAChC,UAAU,GAAG,MAAM,EAAS,CAAC;;AAG9B,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;AAExC,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE,CAAC;QACR,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE;gBACnC,OAAO;aACR;AACD,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAA4B,CAAC;AAE7D,YAAA,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA,EAAG,IAAI,CAAC,eAAe,CAAC,eAAe,CAAA,QAAA,CAAU,CAAC,CAAC;YAC5E,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA,EAAG,IAAI,CAAC,eAAe,CAAC,eAAe,CAAA,QAAA,CAAU,CAAC,EAAE;AACpG,gBAAA,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,eAAe,CAAC,eAAe,CAAA,QAAA,CAAU,CAAC,CAAC;aAC1E;AACH,SAAC,CAAC,CAAC;KACJ;IAEQ,eAAe,GAAA;AACtB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAA4B,CAAC;AAC7D,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;YAClB,OAAO,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AACjD,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;AACf,gBAAA,OAAO,CAAC,YAAY,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;aACnE;SACF;QACD,OAAO,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QACpD,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;AAC5D,QAAA,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,gCAAgC,EAAE,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,aAAa,KAAI;YACjJ,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,OAAO,CAAC,YAAY,CAAC,sBAAsB,CAAC,KAAK,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,aAAa,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE;gBAC/L,OAAO;aACR;YACD,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;YAElG,IAAI,aAAa,EAAE;AACjB,gBAAA,IAAI,aAAa,CAAC,oBAAoB,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,iCAAiC,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,aAAa,CAAC,WAAW,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,aAAa,CAAC,WAAW,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC,EAAE;oBAClQ,OAAO;iBACR;aACF;AACD,YAAA,IAAI,yBAAyB,CAAC,aAAa,CAAC,aAAa,EAAE,OAAO,CAAC,IAAI,OAAO,KAAK,aAAa,CAAC,WAAW,IAAI,aAAa,IAAI,iBAAiB,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC,aAAa,CAAC,EAAE;AAC/M,gBAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;oBACrB,OAAO;iBACR;gBACD,MAAM,aAAa,GAAG,EAAE,GAAG,aAAa,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC;gBAErE,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACpD,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACrC,gBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAE1B,OAAO;aACR;AAED,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;gBACrB,MAAM,cAAc,GAAG,EAAE,GAAG,aAAa,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC;AACvE,gBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAC3B,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACtD,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;aACxC;AACH,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,KAAI;AAC3F,YAAA,IAAI,SAAS,CAAC,WAAW,KAAK,OAAO,EAAE;gBACrC,OAAO;aACR;AACD,YAAA,MAAM,SAAS,GAAG,EAAE,WAAW,EAAE,SAAS,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,CAAC,YAAY,EAAE,CAAC;AAErH,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAClC,SAAC,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAEjD,QAAA,QAAQ,CAAC,WAAW,GAAG,CAAA,6CAAA,CAA+C,CAAC;QACvE,IAAI,SAAS,GAAG,OAAO,CAAC;AACxB,QAAA,IAAI,gCAAgC,GAAG,CAAC,CAAC,CAAC;AAC1C,QAAA,IAAI,+BAA+B,GAAG,CAAC,CAAC,CAAC;QACzC,IAAI,WAAW,GAAG,KAAK,CAAC;AACxB,QAAA,MAAM,cAAc,GAAG,CAAC,UAAsB,KAAI;AAChD,YAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE;gBAC3B,UAAU,CAAC,cAAc,EAAE,CAAC;gBAC5B,UAAU,CAAC,eAAe,EAAE,CAAC;aAC9B;AACH,SAAC,CAAC;QACF,MAAM,2CAA2C,GAAG,MAAK;AACvD,YAAA,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;gBAC1B,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;AAElG,gBAAA,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE,IAAI,aAAa,EAAE,aAAa,IAAI,aAAa,EAAE,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC;AACzH,gBAAA,MAAM,aAAa,GAAG,aAAa,CAAC,qBAAqB,EAAE,CAAC;AAC5D,gBAAA,MAAM,aAAa,GAAG,SAAS,CAAC,qBAAqB,EAAE,CAAC;AACxD,gBAAA,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;AAE/H,gBAAA,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,aAAa,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI,GAAG,SAAS,IAAI,IAAI,CAAC;AAClF,gBAAA,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,aAAa,CAAC,GAAG,GAAG,aAAa,CAAC,GAAG,GAAG,SAAS,IAAI,IAAI,CAAC;AAC/E,gBAAA,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;aACvC;YACD,gCAAgC,GAAG,CAAC,CAAC,CAAC;YACtC,+BAA+B,GAAG,CAAC,CAAC,CAAC;YACrC,SAAS,CAAC,MAAM,EAAE,CAAC;AACrB,SAAC,CAAC;QAEF,SAAS,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,IAAI,CACrC,GAAG,CAAC,MAAK;AACP,YAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;AACrB,gBAAA,2CAA2C,EAAE,CAAC;aAC/C;YACD,WAAW,GAAG,IAAI,CAAC;AAErB,SAAC,CAAC,EACF,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC1B,CAAC,SAAS,EAAE,CAAC;QAEd,IAAI,eAAe,GAAG,KAAK,CAAC;AAE5B,QAAA,qBAAqB,CAAC;AACpB,YAAA,gBAAgB,EAAE,OAAO;AACzB,YAAA,iBAAiB,EAAE,CAAC,KAAiB,KAAI;AACvC,gBAAA,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,OAAO,CAAC;gBACzC,WAAW,GAAG,KAAK,CAAC;AACpB,gBAAA,IAAI,CAAC,mCAAmC,CAAC,MAAM,CAAC,CAAC;AACjD,gBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,OAAO,CAAC,YAAY,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,4BAA4B,EAAE,KAAK,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAE;oBACnK,OAAO;iBACR;gBACD,cAAc,CAAC,KAAK,CAAC,CAAC;aACvB;AACD,YAAA,iBAAiB,EAAC,CAAC,KAAiB,KAAI;gBACtC,cAAc,CAAC,KAAK,CAAC,CAAC;aACvB;AACD,YAAA,eAAe,EAAC,CAAC,KAAiB,KAAI;AACpC,gBAAA,IAAI,CAAC,mCAAmC,CAAC,MAAM,CAAC,CAAC;AAC/C,gBAAA,IAAI,CAAC,eAAe,CAAC,cAAc,EAAE,CAAC;gBACtC,cAAc,CAAC,KAAK,CAAC,CAAC;gBACtB,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,OAAO,CAAC,YAAY,CAAC,sBAAsB,CAAC,IAAI,WAAW,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE;oBACvG,WAAW,GAAG,KAAK,CAAC;oBAEpB,OAAO;iBACR;gBACD,WAAW,GAAG,KAAK,CAAC;AACpB,gBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAC3B,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC;AACjE,gBAAA,IAAI,IAAI,CAAC,4BAA4B,EAAE,EAAE;oBACvC,OAAO;iBACR;AACD,gBAAA,MAAM,aAAa,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;gBAEzE,IAAI,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,qCAAqC,EAAE,EAAE;oBACvE,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,aAAa,EAAE,gCAAgC,EAAE,+BAA+B,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;AAE/K,oBAAA,aAAa,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AACvC,oBAAA,aAAa,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;iBACxC;AACD,gBAAA,MAAM,YAAY,GAAG,EAAE,aAAa,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;AAE9G,gBAAA,IAAI,CAAC,eAAe,CAAC,YAAY,GAAG,SAAS,CAAC;gBAC9C,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAClD,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAEnC,gBAAA,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,iCAAiC,CAAC,CAAC;gBAC9D,QAAQ,CAAC,MAAM,EAAE,CAAC;AAElB,gBAAA,2CAA2C,EAAE,CAAC;aACjD;YACD,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,cAA0B,KAAI;AACzC,YAAA,MAAM,WAAW,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;AACpD,YAAA,MAAM,QAAQ,GAAG,WAAW,EAAyB,CAAC;AAEtD,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,OAAO,CAAC,YAAY,CAAC,sBAAsB,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,KAAK,CAAC,eAAe,IAAI,cAAc,CAAC,IAAI,KAAK,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,WAAW,CAAC,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;gBAErN,OAAO;aACR;AACD,YAAA,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,cAAc,CAAC;AAE5C,YAAA,IAAI,gCAAgC,KAAK,CAAC,CAAC,EAAE;AAC3C,gBAAA,gCAAgC,GAAG,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC;aAC/D;AAED,YAAA,IAAI,+BAA+B,KAAK,CAAC,CAAC,EAAE;AAC1C,gBAAA,+BAA+B,GAAG,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC;aAC7D;AACH,SAAC,CAAC,CAAC,CAAC,SAAS,CAAC,cAAc,IAAG;AAC7B,YAAA,IAAI,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,KAAK,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE;gBACxG,OAAO;aACR;AACD,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,OAAO,CAAC,YAAY,CAAC,sBAAsB,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,IAAI,cAAc,CAAC,IAAI,KAAK,WAAW,IAAI,WAAW,KAAK,IAAI,CAAC,4BAA4B,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE;gBACjN,OAAO;aACR;YACD,eAAe,GAAG,IAAI,CAAC;AACvB,YAAA,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,cAAc,CAAC;AAC5C,YAAA,MAAM,aAAa,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAC3C,YAAA,MAAM,WAAW,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;AAEpD,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE;AACtB,gBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC1B,gBAAA,MAAM,cAAc,GAAG,EAAE,aAAa,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;gBAEhH,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;gBACtE,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBACtD,cAAc,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC;AAChE,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAEvC,gBAAA,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAgB,CAAC;gBACnD,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,CAAG,EAAA,IAAI,CAAC,MAAM,EAAE,CAAA,CAAE,CAAC;AAC5C,gBAAA,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAClC,gBAAA,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,2CAA2C,CAAC,CAAC;AACxE,gBAAA,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,oCAAoC,CAAC,CAAC;AACjE,gBAAA,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AAChC,gBAAA,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;gBAC3D,SAAS,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,WAAW,CAAC,KAAK,CAAA,EAAA,CAAI,CAAC;gBACjD,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,WAAW,CAAC,MAAM,CAAA,EAAA,CAAI,CAAC;gBACnD,SAAS,CAAC,KAAK,CAAC,IAAI,GAAG,CAAG,EAAA,CAAC,GAAG,CAAA,EAAA,CAAI,CAAC;gBACnC,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,CAAG,EAAA,CAAC,GAAG,CAAA,EAAA,CAAI,CAAC;AAClC,gBAAA,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAChC,gBAAA,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;AAC1B,oBAAA,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;iBACpC;AAED,gBAAA,IAAI,IAAI,CAAC,4BAA4B,EAAE,EAAE;AACvC,oBAAA,IAAI,CAAC,eAAe,CAAC,kCAAkC,CAAC,IAAI,CAAC;AAC3D,wBAAA,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC,YAAY;AAC/C,wBAAA,WAAW,EAAE,SAAS;wBACtB,+BAA+B;wBAC/B,gCAAgC;AAChC,wBAAA,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE;AACzC,wBAAA,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE;AACjC,wBAAA,qCAAqC,EAAE,IAAI,CAAC,qCAAqC,EAAE;AACnF,wBAAA,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE;AACxC,qBAAA,CAAC,CAAC;oBAEH,OAAO;iBACR;aACF;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,aAAa,EAAE,gCAAgC,EAAE,+BAA+B,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;AAEjL,YAAA,MAAM,oBAAoB,GAAG,MAAM,CAAC,oBAAoB,CAAC;AACzD,YAAA,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,GAAG,gCAAgC,CAAC;AAC/D,YAAA,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,GAAG,+BAA+B,CAAC;YAE7D,IAAI,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,qCAAqC,EAAE,EAAE;gBACvE,IAAI,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE;oBAClC,aAAa,CAAC,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;iBAC9C;gBACD,IAAI,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE;oBACnC,aAAa,CAAC,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;iBAC/C;gBACD,IAAI,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE;oBACjC,aAAa,CAAC,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;iBAC7C;gBACD,IAAI,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;oBACpC,aAAa,CAAC,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;iBAChD;aACF;YACD,SAAS,CAAC,KAAK,CAAC,IAAI,GAAG,CAAG,EAAA,IAAI,IAAI,CAAC;YACnC,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,CAAG,EAAA,GAAG,IAAI,CAAC;AAEjC,YAAA,MAAM,aAAa,GAAG,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,oBAAoB,EAAE,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;YAEvI,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACtD,SAAC,CAAC,CAAC;KACJ;wGA9RU,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4FAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,4BAAA,EAAA,EAAA,iBAAA,EAAA,8BAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gCAAA,EAAA,EAAA,iBAAA,EAAA,kCAAA,EAAA,UAAA,EAAA,kCAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,sBAAA,EAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,qCAAA,EAAA,EAAA,iBAAA,EAAA,uCAAA,EAAA,UAAA,EAAA,uCAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,cAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;;AAET,oBAAA,QAAQ,EAAE,2BAA2B;AACrC,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;;;ACZD;;AAEG;;;;"}
1
+ {"version":3,"file":"libs-ui-components-drag-drop.mjs","sources":["../../../../../libs-ui/components/drag-drop/src/defines/css.define.ts","../../../../../libs-ui/components/drag-drop/src/drag-drop.service.ts","../../../../../libs-ui/components/drag-drop/src/drag-scroll.directive.ts","../../../../../libs-ui/components/drag-drop/src/drag-drop.directive.ts","../../../../../libs-ui/components/drag-drop/src/drag-item-in-container-virtual-scroll.directive.ts","../../../../../libs-ui/components/drag-drop/src/drag-item.directive.ts","../../../../../libs-ui/components/drag-drop/src/libs-ui-components-drag-drop.ts"],"sourcesContent":["export const styleContainer = (config: Array<{ className: string, styles: string }>, viewEncapsulation: 'emulated' | 'none', groupID: string): string => {\n const defaultConfig = [{\n className: 'libs-ui-drag-drop-container',\n styles: `display:block;`\n },\n {\n className: 'libs-ui-drag-drop-item',\n styles: `\n cursor:move;`\n },\n {\n className: 'libs-ui-drag-drop-item-placeholder',\n styles: `visibility: hidden;`\n },\n {\n className: 'libs-ui-drag-drop-item-origin-placeholder',\n styles: `visibility: hidden;`\n },\n {\n className: 'libs-ui-drag-drop-item-drop-placeholder',\n styles: `visibility: hidden;`\n },\n {\n className: 'libs-ui-drag-drop-item-dragging',\n styles: `cursor:move; user-select: none; `\n },\n {\n className: 'libs-ui-drag-drop-item-disable',\n styles: ` cursor:not-allowed;`\n },\n {\n className: 'libs-ui-drag-drop-item-translate-bottom',\n styles: `position:relative;animation: translateBottom 0.35s 1 ease;`\n },\n {\n className: 'libs-ui-drag-drop-item-translate-top',\n styles: `position:relative;animation: translateTop 0.35s 1 ease;`\n },\n {\n className: 'libs-ui-drag-drop-item-translate-left',\n styles: `position:relative;animation: translateLeft 0.35s 1 ease;`\n },\n {\n className: 'libs-ui-drag-drop-item-translate-right',\n styles: `position:relative;animation: translateRight 0.35s 1 ease;`\n }];\n\n config.forEach(item => {\n const itemExits = defaultConfig.find(defaultItem => defaultItem.className === item.className);\n\n if (itemExits) {\n itemExits.styles = item.styles;\n\n return;\n }\n defaultConfig.push(item);\n });\n const groupAttr = viewEncapsulation ? `[groupID~=\"${groupID}\"]` : '';\n let styles = '';\n\n defaultConfig.forEach((item) => {\n const style = `${groupAttr}.${item.className}{${item.styles}}`;\n\n styles = `${styles}${style}\\n`;\n });\n\n styles = ` @keyframes translateTop {\n 0% {\n transform: translateY(30px);\n }\n \n 100% {\n transform: translateX(0);\n }\n }\n \n @keyframes translateBottom {\n 0% {\n transform: translateY(-30px);\n }\n \n 100% {\n transform: translateX(0px);\n }\n }\n @keyframes translateLeft {\n 0% {\n transform: translateX(30px);\n }\n \n 100% {\n transform: translateX(0);\n }\n }\n \n @keyframes translateRight {\n 0% {\n transform: translateX(-30px);\n }\n \n 100% {\n transform: translateX(0px);\n }\n }\n ${styles}`.replace(/\\n+/g, '');\n\n return styles;\n};","import { Injectable, WritableSignal, signal } from \"@angular/core\";\nimport { Subject } from \"rxjs\";\nimport { IDragEnd, IDragItemInContainerVirtualScroll, IDragLeave, IDragOver, IDragStart, IDragging, IDrop, IItemDragInfo } from \"./interfaces/event.interface\";\n@Injectable({\n providedIn: 'any'\n})\n\nexport class MoLibsSharedDragDropService {\n private itemsClick = new Array<HTMLElement>();\n private onDragItemInContainerVirtualScroll = new Subject<IDragItemInContainerVirtualScroll>();\n private itemDragInfo?: IItemDragInfo;\n private container = signal(new Map<string, { element: HTMLElement; elementScroll?: HTMLElement }>());\n private targetItemDragFlag = 'item-drag-target';\n private classContainerDefine = 'libs-ui-drag-drop-container';\n private classItemDefine = 'libs-ui-drag-drop-item';\n private onDragging = new Subject<IDragging>();\n private onDragStart = new Subject<IDragStart>();\n private onDragEnd = new Subject<IDragEnd>();\n private onDragOver = new Subject<IDragOver>();\n private onDragLeave = new Subject<IDragLeave>();\n private onDrop = new Subject<IDrop>();\n private onDropContainer = new Subject<IDrop>();\n private onItemInit = new Subject<string>();\n\n public get OnDragItemInContainerVirtualScroll(): Subject<IDragItemInContainerVirtualScroll> {\n return this.onDragItemInContainerVirtualScroll;\n }\n\n public set ItemDragInfo(data: IItemDragInfo | undefined) {\n this.itemDragInfo = data;\n }\n\n public get ItemDragInfo(): IItemDragInfo | undefined {\n return this.itemDragInfo;\n }\n\n public get Container(): WritableSignal<Map<string, { element: HTMLElement; elementScroll?: HTMLElement }>> {\n return this.container;\n }\n\n public get TargetItemDragFlag() {\n return this.targetItemDragFlag;\n }\n\n public get ClassContainerDefine() {\n return this.classContainerDefine;\n }\n\n public get ClassItemDefine() {\n return this.classItemDefine;\n }\n\n public get OnDragging() {\n return this.onDragging;\n }\n\n public get OnDragOver() {\n return this.onDragOver;\n }\n\n public get OnDragLeave() {\n return this.onDragLeave;\n }\n\n public get OnDragStart() {\n return this.onDragStart;\n }\n\n public get OnDragEnd() {\n return this.onDragEnd;\n }\n\n public get OnDropContainer() {\n return this.onDropContainer;\n }\n\n public get OnDrop() {\n return this.onDrop;\n }\n\n public get OnItemInit() {\n return this.onItemInit;\n }\n\n public get ItemClick(): Array<HTMLElement> {\n return [...this.itemsClick];\n }\n\n public set ItemClick(item: HTMLElement) {\n this.itemsClick.push(item);\n }\n\n public resetItemClick() {\n this.itemsClick.length = 0;\n }\n\n public checkElementOverAcceptElementDrag(groupNameOfContainer: string | null, groupNameOfElementDrag: string | null, groupNameOfDropTo: string | null): boolean {\n if (groupNameOfContainer !== groupNameOfElementDrag && !groupNameOfDropTo) {\n return false;\n }\n\n if (groupNameOfDropTo !== null && !groupNameOfDropTo.toString().split(';').includes(groupNameOfContainer || 'undefinedName')) {\n return false;\n }\n\n return true;\n }\n}","import { AfterViewInit, Directive, ElementRef, OnDestroy, inject, input, signal } from \"@angular/core\";\nimport { IPageInfo, VirtualScrollerComponent } from \"@iharbeck/ngx-virtual-scroller\";\nimport { IBoundingClientRect } from \"@libs-ui/interfaces-types\";\nimport { checkMouseOverInContainer, cloneIBoundingClientRect, get } from \"@libs-ui/utils\";\nimport { Subject, takeUntil } from \"rxjs\";\nimport { MoLibsSharedDragDropService } from \"./drag-drop.service\";\nimport { IDragging } from \"./interfaces/event.interface\";\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: \"[LibsUiComponentsDragScrollDirective]\",\n standalone: true\n})\nexport class LibsUiComponentsDragScrollDirective implements AfterViewInit, OnDestroy {\n // #region PROPERTY\n private stopScroll = signal<boolean>(false);\n private virtualScrollPageInfo = signal<IPageInfo | undefined>(undefined);\n protected intervalScrollToElement = signal<number | undefined>(undefined);\n protected onDestroy = new Subject<void>();\n\n // #region INPUT\n readonly ignoreAutoScroll = input<boolean>();\n readonly widthZoneDetect = input<number, number | undefined>(16, { transform: value => value ?? 16 });\n readonly movementLength = input<number, number | undefined>(6, { transform: value => value ?? 6 });\n readonly rootElementScroll = input<HTMLElement>();\n readonly virtualScrollerComponent = input<VirtualScrollerComponent>();\n\n // #region INJECT\n protected elementRef = inject(ElementRef);\n protected dragDropService = inject(MoLibsSharedDragDropService);\n\n ngAfterViewInit(): void {\n this.dragDropService.OnDragging.pipe(takeUntil(this.onDestroy)).subscribe((eventDragging) => this.checkAndScrollElementToPosition(eventDragging, this.ignoreAutoScroll()));\n this.dragDropService.OnDragEnd.pipe(takeUntil(this.onDestroy)).subscribe(() => {\n clearInterval(this.intervalScrollToElement());\n if (this.virtualScrollPageInfo()) {\n const firstElement = get(this.virtualScrollerComponent(), 'element')?.nativeElement.firstElementChild;\n const isHorizontal = get(this.virtualScrollerComponent(), '_horizontal');\n if (isHorizontal) {\n firstElement.style.transform = `scaleX(${this.virtualScrollPageInfo()?.scrollEndPosition})`;\n }\n if (!isHorizontal) {\n firstElement.style.transform = `scaleY(${this.virtualScrollPageInfo()?.scrollEndPosition})`;\n }\n this.virtualScrollPageInfo.set(undefined);\n }\n this.stopScroll.set(false);\n });\n this.dragDropService.OnDragStart.pipe(takeUntil(this.onDestroy)).subscribe(() => {\n if (this.virtualScrollerComponent) {\n this.virtualScrollerComponent()?.scrollToIndex(0);\n }\n });\n if (!this.virtualScrollerComponent) {\n return;\n }\n this.virtualScrollerComponent()?.vsChange.pipe(takeUntil(this.onDestroy)).subscribe(pageInfo => {\n const items = get(this.virtualScrollerComponent, '_items');\n\n if (items && items.length === pageInfo.endIndex) {\n this.virtualScrollPageInfo.set(pageInfo);\n const elementSetScroll = this.rootElementScroll() || this.elementRef.nativeElement;\n const isHorizontal = get(this.virtualScrollerComponent, '_horizontal');\n\n if (isHorizontal && pageInfo.scrollEndPosition < elementSetScroll.offsetWidth + elementSetScroll.scrollLeft + 3) {\n this.stopScroll.set(true);\n clearInterval(this.intervalScrollToElement());\n\n return;\n }\n\n if (!isHorizontal && pageInfo.scrollEndPosition < elementSetScroll.offsetHeight + elementSetScroll.scrollTop + 3) {\n this.stopScroll.set(true);\n clearInterval(this.intervalScrollToElement());\n\n return;\n }\n }\n this.stopScroll.set(false);\n });\n }\n\n /* FUNCTIONS */\n protected checkAndScrollElementToPosition(eventDragging: IDragging, ignoreAutoScroll?: boolean) {\n let elementSetScroll = this.rootElementScroll() || this.elementRef.nativeElement;\n\n if (ignoreAutoScroll || !checkMouseOverInContainer(eventDragging.mousePosition, elementSetScroll)) {\n return;\n }\n const rectElement = cloneIBoundingClientRect(this.elementRef.nativeElement.getBoundingClientRect());\n\n if (this.rootElementScroll()) {\n const rectElementScroll = this.rootElementScroll()?.getBoundingClientRect() as IBoundingClientRect;\n\n rectElement.left = rectElementScroll.left;\n rectElement.top = rectElementScroll.top;\n }\n\n const { width, height, top, left } = rectElement;\n const { clientX, clientY } = eventDragging.mousePosition;\n const limitLeft = left + elementSetScroll.offsetWidth;\n const limitTop = top + elementSetScroll.offsetHeight;\n\n clearInterval(this.intervalScrollToElement());\n if ((clientX < left || clientX > left + width) && (clientY < top || clientY > top + height)) {\n return;\n }\n\n this.intervalScrollToElement.set(setInterval(() => {\n elementSetScroll = (this.rootElementScroll() || this.elementRef.nativeElement);\n let directionTop = 0;\n let directionLeft = 0;\n\n if (top <= clientY && clientY <= top + this.widthZoneDetect()) {\n elementSetScroll.scrollTop -= this.movementLength();\n directionTop = -1;\n }\n\n if (limitTop - this.widthZoneDetect() <= clientY && clientY <= limitTop) {\n if (this.stopScroll()) {\n return;\n }\n elementSetScroll.scrollTop += this.movementLength();\n directionTop = 1;\n }\n\n if ((limitLeft - this.widthZoneDetect() <= clientX) && (clientX <= limitLeft)) {\n if (this.stopScroll()) {\n return;\n }\n elementSetScroll.scrollLeft += this.movementLength();\n directionLeft = +1;\n\n }\n if (left <= clientX && clientX <= left + this.widthZoneDetect()) {\n elementSetScroll.scrollLeft -= this.movementLength();\n directionLeft = -1;\n }\n\n if (elementSetScroll.scrollLeft && (elementSetScroll.scrollLeft + elementSetScroll.offsetWidth >= elementSetScroll.scrollWidth)) {\n elementSetScroll.scrollLeft -= elementSetScroll.scrollLeft + elementSetScroll.offsetWidth - elementSetScroll.scrollWidth;\n }\n\n if (elementSetScroll.scrollTop && (elementSetScroll.scrollTop + elementSetScroll.offsetHeight >= elementSetScroll.scrollHeight)) {\n elementSetScroll.scrollTop -= elementSetScroll.scrollTop + elementSetScroll.offsetHeight - elementSetScroll.scrollHeight;\n }\n\n if ((directionTop < 0 && !elementSetScroll.scrollTop) || (!elementSetScroll.scrollLeft && directionLeft < 0) || (directionTop && elementSetScroll.scrollHeight <= elementSetScroll.scrollTop + elementSetScroll.offsetHeight + 3) || (directionLeft && elementSetScroll.scrollWidth <= elementSetScroll.scrollLeft + elementSetScroll.offsetWidth + 3)) {\n return clearInterval(this.intervalScrollToElement());\n }\n }, 10));\n }\n\n ngOnDestroy(): void {\n this.onDestroy.next();\n this.onDestroy.complete();\n }\n}\n","import { AfterViewInit, Directive, OnDestroy, effect, input, model, output, signal, untracked } from \"@angular/core\";\nimport { checkMouseOverInContainer, cloneDeep, get, set, uuid } from \"@libs-ui/utils\";\nimport { Observable, debounceTime, filter, takeUntil } from \"rxjs\";\nimport { styleContainer } from \"./defines/css.define\";\nimport { LibsUiComponentsDragScrollDirective } from \"./drag-scroll.directive\";\nimport { IDragDropFunctionControlEvent, IDragEnd, IDragLeave, IDragOver, IDragStart, IDragging, IDrop } from \"./interfaces/event.interface\";\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: \"[LibsUiComponentsDragContainerDirective]\",\n standalone: true,\n})\nexport class LibsUiComponentsDragContainerDirective extends LibsUiComponentsDragScrollDirective implements AfterViewInit, OnDestroy {\n // #region PROPERTY\n private groupID = signal<string>(uuid());\n private isDragOver = signal<boolean>(false);\n\n // #region INPUT\n readonly disableDragContainer = input<boolean>();\n readonly mode = input<string, 'move' | 'copy' | 'deepCopy'>('move', { transform: value => value ?? 'move' });\n readonly directionDrag = input<'horizontal' | 'vertical'>();\n readonly viewEncapsulation = input<'emulated' | 'none', 'emulated' | 'none' | undefined>('emulated', { transform: value => value ?? 'emulated' });\n readonly acceptDragSameGroup = input<boolean, boolean | undefined>(false, { transform: value => value ?? false });\n readonly placeholder = input<boolean, boolean | undefined>(true, { transform: value => value ?? true });\n readonly groupName = input<string, string | undefined>('groupDragAndDropDefault', { transform: value => value ?? 'groupDragAndDropDefault' }); // nếu các group có tên trùng nhau sẽ được drop\n readonly dropToGroupName = input<Array<string> | null>(null); // nếu item trong các group A được drop vào group B nhưng group B không được drop vào group A\n readonly items = model.required<Array<unknown>>();\n readonly stylesOverride = input<Array<{ className: string, styles: string }>>();\n\n // #region OUTPUT\n readonly outDragStartContainer = output<IDragStart>();\n readonly outDragOverContainer = output<IDragOver>();\n readonly outDragLeaveContainer = output<IDragLeave>();\n readonly outDragEndContainer = output<IDragEnd>();\n readonly outDroppedContainer = output<IDrop>();\n readonly outDroppedContainerEmpty = output<IDrop>();\n readonly outFunctionControl = output<IDragDropFunctionControlEvent>();\n\n constructor() {\n super();\n const element = this.elementRef.nativeElement as HTMLElement;\n\n const container = { element };\n\n this.dragDropService.Container.update(data => {\n data.set(this.groupID(), container);\n return data;\n });\n\n effect(() => {\n if (!this.rootElementScroll()) {\n return;\n }\n untracked(() => {\n set(container, 'elementScroll', this.rootElementScroll());\n this.dragDropService.Container.update(containerMap => new Map(containerMap));\n });\n });\n\n effect(() => {\n if (this.directionDrag() && this.elementRef.nativeElement) {\n this.setAttributeElementAndItemDrag(this.elementRef.nativeElement);\n }\n });\n effect(() => {\n if (this.disableDragContainer() && this.elementRef.nativeElement) {\n this.setAttributeElementAndItemDrag(this.elementRef.nativeElement);\n }\n });\n }\n\n override ngAfterViewInit(): void {\n this.outFunctionControl.emit({ setAttributeElementAndItemDrag: () => this.setAttributeElementAndItemDrag(this.elementRef.nativeElement) });\n\n this.outDroppedContainer.subscribe(eventDropped => {\n this.dragDropService.OnDropContainer.next(eventDropped);\n });\n this.onDestroy.subscribe(() => {\n if (indexSpliceListTo > -1) {\n this.items.update(items => {\n items.splice(indexSpliceListTo, 1);\n return [...items];\n });\n }\n\n this.dragDropService.Container().delete(this.groupID());\n });\n const elementContainer = this.elementRef.nativeElement as HTMLElement;\n\n this.initStyleAndAttribute(elementContainer, true);\n this.dragDropService.OnItemInit.pipe(debounceTime(250), filter(groupName => groupName === this.groupName()), takeUntil(this.onDestroy)).subscribe(() => this.initStyleAndAttribute(elementContainer));\n const styleTag = document.createElement(\"style\");\n\n styleTag.textContent = styleContainer((this.stylesOverride() || []), this.viewEncapsulation(), this.groupID());\n elementContainer.appendChild(styleTag);\n elementContainer.classList.add(this.dragDropService.ClassContainerDefine);\n\n const handlerDragStart = (eventDragStart: IDragStart) => {\n\n this.setAttributeElementAndItemDrag(elementContainer, true);\n if (this.groupID() === eventDragStart.elementDrag.getAttribute('groupID')) {\n this.outDragStartContainer.emit({ ...eventDragStart, itemDragInfo: this.dragDropService.ItemDragInfo });\n }\n };\n\n const storeIndex = { indexDrag: -1, indexDragOver: -1 };\n let indexSpliceListTo = -1;\n const handlerDragOver = (eventDragOver: IDragOver) => {\n const { elementDrag, elementDragOver } = eventDragOver;\n\n if (this.disableDragContainer() || !this.dragDropService.checkElementOverAcceptElementDrag(this.groupName(), elementDrag.getAttribute('groupName'), elementDrag.getAttribute('dropToGroupName'))) {\n return;\n }\n const indexDrag = Number(elementDrag.getAttribute('index')).valueOf();\n const indexDragOver = Number(elementDragOver.getAttribute('index')).valueOf();\n const idGroupElementDrag = elementDrag.getAttribute('groupID');\n const idGroupElementDragOver = elementDragOver.getAttribute('groupID');\n\n if ((this.groupID() !== idGroupElementDrag) || (idGroupElementDrag !== idGroupElementDragOver)) { // xử lý cho item drag over qua 1 item khác container\n if (idGroupElementDragOver === this.groupID() && this.placeholder()) {\n const item = this.mode() === 'deepCopy' ? cloneDeep(this.dragDropService.ItemDragInfo?.item) : this.dragDropService.ItemDragInfo?.item;\n\n this.items.update(items => {\n if (indexSpliceListTo >= 0) {\n items.splice(indexSpliceListTo, 1);\n }\n items.splice(indexDragOver, 0, item);\n return [...items];\n });\n indexSpliceListTo = indexDragOver;\n this.setAttributeElementAndItemDrag(elementContainer, false, indexSpliceListTo);\n }\n\n return;\n }\n\n if (!this.acceptDragSameGroup() || indexDrag < 0 || indexDragOver < 0 || !this.items().length || indexDrag > this.items().length || indexDragOver > this.items().length || (storeIndex.indexDrag === indexDrag && storeIndex.indexDragOver === indexDragOver)) {\n return;\n }\n // xử lý cho item drag over qua 1 item cùng container\n const itemDrag = this.items()[indexDrag];\n\n this.setAnimationElementDragOver(indexDrag, indexDragOver, elementDragOver);\n storeIndex.indexDrag = indexDrag;\n storeIndex.indexDragOver = indexDragOver;\n this.items.update(items => {\n items.splice(indexDrag, 1);\n items.splice(indexDragOver, 0, itemDrag);\n return [...items];\n });\n\n elementDrag.setAttribute('index', indexDragOver.toString());\n this.setAttributeElementAndItemDrag(elementContainer);\n };\n\n const removePlaceholderDrag = (eventDrag: IDragEnd, isDragging?: boolean) => {\n clearInterval(this.intervalScrollToElement());\n storeIndex.indexDrag = -1;\n storeIndex.indexDragOver = -1;\n const childrenElement = elementContainer.getElementsByClassName(this.dragDropService.ClassItemDefine) as unknown as Array<HTMLElement>;\n\n if (!checkMouseOverInContainer(eventDrag.mousePosition, (this.rootElementScroll() || elementContainer))) {\n const childElementIndex = Array.from<HTMLElement>(childrenElement).findIndex((child) => child.classList.contains('libs-ui-drag-drop-item-drop-placeholder'));\n\n if (childElementIndex >= 0 && this.groupID() !== eventDrag.elementDrag.getAttribute('groupID')) {\n this.items.update(items => {\n items.splice(childElementIndex, 1);\n return [...items];\n });\n }\n indexSpliceListTo = -1;\n\n this.removeAttributes(elementContainer, isDragging);\n this.setIndexElement(elementContainer);\n\n return;\n }\n if (indexSpliceListTo >= 0) {\n this.items.update(items => {\n items.splice(indexSpliceListTo, 1);\n return [...items];\n });\n }\n indexSpliceListTo = -1;\n };\n\n const handlerDragging = (eventDragging: IDragging) => {\n this.setAttributeElementAndItemDrag(elementContainer);\n const { elementDrag } = eventDragging;\n const fieldIdItem = elementDrag.getAttribute('field_id');\n const idItemDrag = elementDrag.getAttribute('item_id');\n\n if (fieldIdItem && idItemDrag && this.items().find(item => get(item, fieldIdItem) === idItemDrag)) {\n const childrenElement = elementContainer.getElementsByClassName(this.dragDropService.ClassItemDefine) as unknown as Array<HTMLElement>;\n const childElement = Array.from<HTMLElement>(childrenElement).find((child) => child.getAttribute('item_id') === idItemDrag);\n\n if (this.items() === eventDragging.itemDragInfo?.itemsDrag() && childElement && !childElement.classList.contains('libs-ui-drag-drop-item-drop-placeholder') && !childElement.getAttribute(this.dragDropService.TargetItemDragFlag)) {\n childElement.setAttribute(this.dragDropService.TargetItemDragFlag, 'true');\n this.groupID.set(elementDrag.getAttribute('groupID') || '');\n styleTag.remove();\n styleTag.textContent = styleContainer((this.stylesOverride() || []), this.viewEncapsulation(), this.groupID());\n elementContainer.appendChild(styleTag);\n this.setAttributeElementAndItemDrag(elementContainer, true);\n }\n }\n\n if (this.disableDragContainer()) {\n return;\n }\n\n if (this.groupID() === elementDrag.getAttribute('groupID') && !this.acceptDragSameGroup()) {\n this.checkAndScrollElementToPosition(eventDragging, this.ignoreAutoScroll() || !this.acceptDragSameGroup());\n return;\n }\n\n if (!checkMouseOverInContainer(eventDragging.mousePosition, (this.rootElementScroll() || elementContainer))) {\n if (this.isDragOver()) {\n this.isDragOver.set(false);\n this.outDragLeaveContainer.emit({ ...eventDragging, elementDragLeave: elementContainer });\n }\n\n return removePlaceholderDrag(eventDragging, true);\n }\n this.checkAndScrollElementToPosition(eventDragging, this.ignoreAutoScroll());\n\n // Đoạn code xử lý cho việc kéo một element vào 1 container nhưng container không có item hoặc item drag không over qua item trong container\n if (!this.isDragOver()) {\n elementContainer.classList.add('libs-ui-drag-drop-container-dragover');\n this.isDragOver.set(true);\n this.outDragOverContainer.emit({ ...eventDragging, elementDragOver: elementContainer });\n }\n const eventDragOver = { ...eventDragging, elementDragOver: elementContainer };\n\n if (!this.items().length) {\n eventDragOver.elementDragOver = {\n getAttribute: (name: string) => {\n if (name === 'groupID') {\n return this.groupID();\n }\n if (name !== 'index') {\n return null;\n }\n\n return 0;\n }\n } as unknown as HTMLElement;\n this.dragDropService.OnDragOver.next(eventDragOver);\n\n return;\n }\n\n const childrenElement = elementContainer.getElementsByClassName(this.dragDropService.ClassItemDefine) as unknown as Array<HTMLElement>;\n let childElement = Array.from<HTMLElement>(childrenElement).find((child) => checkMouseOverInContainer(eventDragging.mousePosition, child));\n\n if (childElement) { // nếu tìm thấy thì sẽ nhận qua sự kiện của drag-item.directive emit\n return;\n }\n childElement = Array.from<HTMLElement>(childrenElement).pop();\n\n if (childElement) {\n eventDragOver.elementDragOver = childElement;\n this.dragDropService.OnDragOver.next(eventDragOver);\n }\n };\n\n const handlerDragEnd = (eventDragEnd: IDragEnd) => {\n if (this.disableDragContainer()) {\n return;\n }\n let rect = undefined;\n\n if (this.rootElementScroll() || elementContainer) {\n rect = (this.rootElementScroll() || elementContainer)?.getBoundingClientRect();\n }\n removePlaceholderDrag(eventDragEnd);\n const { elementDrag, mousePosition, itemDragInfo } = eventDragEnd;\n\n if (this.groupID() === elementDrag.getAttribute('groupID')) {\n this.outDragEndContainer.emit({ ...eventDragEnd });\n }\n if (!checkMouseOverInContainer(mousePosition, this.rootElementScroll() || elementContainer, rect)) {\n return;\n }\n const eventDrop = { elementDrag: elementDrag, elementDrop: elementContainer, itemDragInfo: itemDragInfo };\n\n if (this.disableDragContainer() || !this.dragDropService.checkElementOverAcceptElementDrag(this.groupName(), elementDrag.getAttribute('groupName'), elementDrag.getAttribute('dropToGroupName'))) {\n return;\n }\n\n const childrenElement = elementContainer.getElementsByClassName(this.dragDropService.ClassItemDefine) as unknown as Array<HTMLElement>;\n const childElement = Array.from<HTMLElement>(childrenElement).find((child) => checkMouseOverInContainer(mousePosition, child));\n\n if (childElement) {\n eventDrop.elementDrop = childElement;\n this.dragDropService.OnDrop.next(eventDrop);\n\n return;\n }\n eventDrop.elementDrop = {\n getAttribute: (name: string) => {\n if (name === 'dropContainer') {\n return true;\n }\n if (name === 'groupID') {\n return this.groupID();\n }\n if (name !== 'index') {\n return null;\n }\n\n return childrenElement.length;\n }\n } as unknown as HTMLElement;\n this.dragDropService.OnDrop.next(eventDrop);\n };\n\n const handlerDrop = (eventDrop: IDrop) => {\n if (this.disableDragContainer()) {\n return;\n }\n const { elementDrag, elementDrop, itemDragInfo } = eventDrop;\n\n if (this.groupID() === elementDrag.getAttribute('groupID') && this.groupID() === elementDrop.getAttribute('groupID')) {\n if (itemDragInfo) {\n itemDragInfo.indexDrop = Number(elementDrop.getAttribute('index')).valueOf();\n itemDragInfo.itemsDrop = this.items;\n itemDragInfo.containerDrop = elementContainer;\n }\n if (this.acceptDragSameGroup()) {\n this.outDroppedContainer.emit(eventDrop);\n }\n this.removeAttributes(elementContainer);\n this.setIndexElement(elementContainer);\n return;\n }\n\n if (this.groupID() !== elementDrop.getAttribute('groupID') || elementDrag.getAttribute('groupID') === elementDrop.getAttribute('groupID')) {\n return;\n }\n const indexDragOver = Number(elementDrop.getAttribute('index')).valueOf() - (elementDrop.getAttribute('dropContainer') ? 0 : 1);\n const item = this.mode() === 'deepCopy' ? cloneDeep(itemDragInfo?.item) : itemDragInfo?.item;\n\n if (itemDragInfo) {\n itemDragInfo.indexDrop = indexDragOver;\n itemDragInfo.itemsDrop = this.items;\n itemDragInfo.containerDrop = elementContainer;\n }\n\n if (!this.items().length) {\n this.outDroppedContainerEmpty.emit(eventDrop);\n }\n\n this.items.update(items => {\n items.splice(indexDragOver, 0, item);\n return [...items];\n });\n\n if (itemDragInfo && itemDragInfo.itemsMove && itemDragInfo.itemsMove()) {\n itemDragInfo.itemsDrag.set([...itemDragInfo.itemsMove()]);\n this.setAttributeElementAndItemDrag(elementContainer);\n }\n\n this.outDroppedContainer.emit(eventDrop);\n this.removeAttributes(elementContainer);\n this.setIndexElement(elementContainer);\n };\n\n [{\n name: 'OnDragStart',\n event: this.dragDropService.OnDragStart,\n functionCall: handlerDragStart\n }, {\n name: 'OnDragOver',\n event: this.dragDropService.OnDragOver,\n functionCall: handlerDragOver\n }, {\n name: 'OnDragging',\n event: this.dragDropService.OnDragging,\n functionCall: handlerDragging\n }, {\n name: 'OnDragEnd',\n event: this.dragDropService.OnDragEnd,\n functionCall: handlerDragEnd\n }, {\n name: 'OnDrop',\n event: this.dragDropService.OnDrop,\n functionCall: handlerDrop\n }].forEach((item: { name: string; event: Observable<unknown>; functionCall: object }) => (item.event.pipe(takeUntil(this.onDestroy)).subscribe(item.functionCall)));\n\n }\n\n /* */\n private async setAttributeElementAndItemDrag(elementContainer: HTMLElement, setItemDrag?: boolean, indexInsert?: number) {\n const childrenElement = elementContainer.getElementsByClassName(this.dragDropService.ClassItemDefine) as unknown as Array<HTMLElement>;\n let index = -1;\n\n elementContainer.setAttribute('groupID', this.groupID());\n elementContainer.removeAttribute('disableDragContainer');\n\n if (this.disableDragContainer()) {\n elementContainer.setAttribute('disableDragContainer', `${this.disableDragContainer()}`);\n }\n if (this.groupName()) {\n elementContainer.setAttribute('groupName', this.groupName() || '');\n }\n Array.from<HTMLElement>(childrenElement).forEach((childElement) => {\n if (!childElement.hasAttribute('groupName') || childElement.getAttribute('groupName') === this.groupName()) {\n childElement.setAttribute('groupID', this.groupID());\n }\n if (childElement.getAttribute('groupID') !== this.groupID()) {\n return;\n }\n index += 1;\n childElement.setAttribute('index', `${index}`);\n childElement.removeAttribute('disableDragContainer');\n if (this.disableDragContainer()) {\n childElement.setAttribute('disableDragContainer', `${this.disableDragContainer()}`);\n }\n if (this.groupName() && !childElement.hasAttribute('groupName')) {\n childElement.setAttribute('groupName', this.groupName() || '');\n }\n if (this.placeholder()) {\n childElement.setAttribute('placeholder', `${this.placeholder()}`);\n }\n if (this.dropToGroupName()) {\n childElement.setAttribute('dropToGroupName', `${this.dropToGroupName()?.join(';')}`);\n }\n if (indexInsert === index && this.placeholder()) {\n if (!childElement.classList.contains('libs-ui-drag-drop-item-placeholder')) {\n childElement.classList.add('libs-ui-drag-drop-item-placeholder');\n }\n if (!childElement.classList.contains('libs-ui-drag-drop-item-drop-placeholder')) {\n childElement.classList.add('libs-ui-drag-drop-item-drop-placeholder');\n }\n }\n\n if (setItemDrag && childElement.getAttribute(this.dragDropService.TargetItemDragFlag) && this.items().length >= index) {\n if (this.placeholder()) {\n if (!childElement.classList.contains('libs-ui-drag-drop-item-placeholder')) {\n childElement.classList.add('libs-ui-drag-drop-item-placeholder');\n }\n if (!childElement.classList.contains('libs-ui-drag-drop-item-origin-placeholder')) {\n childElement.classList.add('libs-ui-drag-drop-item-origin-placeholder');\n }\n }\n\n this.dragDropService.ItemDragInfo = { item: this.items()[index] as object, indexDrag: index, itemsDrag: this.items, containerDrag: elementContainer, itemsMove: signal([...this.items()]) };\n if (this.mode() === 'move') {\n this.dragDropService.ItemDragInfo.itemsMove?.update(items => {\n items.splice(index, 1);\n return [...items]\n });\n }\n }\n });\n }\n\n private initStyleAndAttribute(elementContainer: HTMLElement, hasRemoveAttribute = false,) {\n this.setAttributeElementAndItemDrag(elementContainer);\n if (hasRemoveAttribute) {\n this.removeAttributes(elementContainer);\n }\n this.setIndexElement(elementContainer);\n };\n\n private setAnimationElementDragOver(indexDrag: number, indexDragOver: number, elementDragOver: HTMLElement) {\n if (!this.directionDrag() || !elementDragOver) {\n return;\n }\n if (this.directionDrag() === 'vertical') {\n elementDragOver.classList.remove('libs-ui-drag-drop-item-translate-bottom');\n elementDragOver.classList.remove('libs-ui-drag-drop-item-translate-top');\n if (indexDrag > indexDragOver) {\n elementDragOver.classList.add('libs-ui-drag-drop-item-translate-bottom');\n }\n if (indexDrag < indexDragOver) {\n elementDragOver.classList.add('libs-ui-drag-drop-item-translate-top');\n }\n\n return;\n }\n\n elementDragOver.classList.remove('libs-ui-drag-drop-item-translate-left');\n elementDragOver.classList.remove('libs-ui-drag-drop-item-translate-right');\n if (indexDrag > indexDragOver) {\n elementDragOver.classList.add('libs-ui-drag-drop-item-translate-right');\n }\n if (indexDrag < indexDragOver) {\n elementDragOver.classList.add('libs-ui-drag-drop-item-translate-left');\n }\n\n }\n\n private setIndexElement(elementContainer: HTMLElement) {\n const childrenElement = elementContainer.getElementsByClassName(this.dragDropService.ClassItemDefine) as unknown as Array<HTMLElement>;\n let index = -1;\n\n Array.from<HTMLElement>(childrenElement).forEach((childElement) => {\n if (childElement.getAttribute('groupID') !== this.groupID()) {\n return;\n }\n index += 1;\n childElement.setAttribute('index', `${index}`);\n });\n\n }\n\n private removeAttributes(elementContainer: HTMLElement, ignoreRemoveClassItemOriginPlaceholder?: boolean) {\n const childrenElement = elementContainer.getElementsByClassName(this.dragDropService.ClassItemDefine) as unknown as Array<HTMLElement>;\n\n elementContainer.classList.remove('libs-ui-drag-drop-container-dragover');\n Array.from<HTMLElement>(childrenElement).forEach((childElement) => {\n if (childElement.getAttribute('groupID') !== this.groupID()) {\n return;\n }\n childElement.removeAttribute('index');\n if (!this.dropToGroupName() || !this.dropToGroupName()?.length) {\n childElement.removeAttribute('dropToGroupName');\n }\n if (!this.placeholder()) {\n childElement.removeAttribute('placeholder');\n }\n if (this.placeholder()) {\n childElement.classList.remove('libs-ui-drag-drop-item-placeholder');\n if (!ignoreRemoveClassItemOriginPlaceholder) {\n\n childElement.classList.remove('libs-ui-drag-drop-item-origin-placeholder');\n }\n childElement.classList.remove('libs-ui-drag-drop-item-drop-placeholder');\n }\n });\n\n }\n}\n","import { AfterViewInit, Directive, OnDestroy, inject, output } from \"@angular/core\";\nimport { IBoundingClientRect } from \"@libs-ui/interfaces-types\";\nimport { cloneIBoundingClientRect, getViewport } from \"@libs-ui/utils\";\nimport { Subject, fromEvent, takeUntil, tap } from \"rxjs\";\nimport { MoLibsSharedDragDropService } from \"./drag-drop.service\";\nimport { IDragEnd } from \"./interfaces/event.interface\";\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: \"[LibsUiDragItemInContainerVirtualScrollDirective]\",\n standalone: true,\n\n})\nexport class LibsUiDragItemInContainerVirtualScrollDirective implements AfterViewInit, OnDestroy {\n // #region PROPERTY\n protected onDestroy = new Subject<void>();\n\n // #region OUTPUT\n readonly outDragEndContainer = output<IDragEnd>();\n\n // #region INJECT\n protected dragDropService = inject(MoLibsSharedDragDropService);\n\n ngAfterViewInit(): void {\n const addClass = ()=>{\n document.body.classList.remove('!select-none');\n document.body.classList.remove('!cursor-move');\n };\n const removeClass = ()=>{\n document.body.classList.add('!select-none');\n document.body.classList.add('!cursor-move');\n };\n this.dragDropService.OnDragEnd.pipe(takeUntil(this.onDestroy)).subscribe(e => {\n this.outDragEndContainer.emit(e);\n });\n this.dragDropService.OnDragItemInContainerVirtualScroll.pipe(takeUntil(this.onDestroy)).subscribe(dragItemInContainerVirtualScrollEvent => {\n addClass();\n const stopEventMouse = (mouseEvent: MouseEvent) => {\n if (!dragItemInContainerVirtualScrollEvent.ignoreStopEvent) {\n mouseEvent.preventDefault();\n mouseEvent.stopPropagation();\n }\n };\n const documentMouseUp = fromEvent<MouseEvent>(document, 'mouseup')\n .pipe(tap((eventMouseUp) => {\n this.updateMouseEventsWhenMoveOverIframe('auto');\n stopEventMouse(eventMouseUp);\n const mousePosition = { clientX: eventMouseUp.clientX, clientY: eventMouseUp.clientY };\n\n if (dragItemInContainerVirtualScrollEvent.dragBoundary && dragItemInContainerVirtualScrollEvent.dragBoundaryAcceptMouseLeaveContainer) {\n const result = this.getClientPosition(dragItemInContainerVirtualScrollEvent.elementDrag, mousePosition, dragItemInContainerVirtualScrollEvent.distanceStartElementAndMouseLeft, dragItemInContainerVirtualScrollEvent.distanceStartElementAndMouseTop, dragItemInContainerVirtualScrollEvent.dragBoundary, dragItemInContainerVirtualScrollEvent.elementContainer);\n\n mousePosition.clientX = result.clientX;\n mousePosition.clientY = result.clientY;\n }\n const dragEndEvent = { mousePosition, elementDrag: dragItemInContainerVirtualScrollEvent.elementDrag, itemDragInfo: this.dragDropService.ItemDragInfo };\n\n this.dragDropService.ItemDragInfo = undefined;\n this.dragDropService.OnDragEnd.next(dragEndEvent);\n dragItemInContainerVirtualScrollEvent.elementDrag.remove();\n removeClass();\n }));\n\n fromEvent<MouseEvent>(document, 'mousemove').pipe(tap((eventMousemove) => {\n stopEventMouse(eventMousemove);\n const { clientX, clientY } = eventMousemove;\n const mousePosition = { clientX, clientY };\n\n const result = this.getClientPosition(dragItemInContainerVirtualScrollEvent.elementDrag, mousePosition, dragItemInContainerVirtualScrollEvent.distanceStartElementAndMouseLeft, dragItemInContainerVirtualScrollEvent.distanceStartElementAndMouseTop, dragItemInContainerVirtualScrollEvent.dragBoundary, dragItemInContainerVirtualScrollEvent.elementContainer);\n const elementKeepContainer = result.elementKeepContainer;\n const left = result.clientX - dragItemInContainerVirtualScrollEvent.distanceStartElementAndMouseLeft;\n const top = result.clientY - dragItemInContainerVirtualScrollEvent.distanceStartElementAndMouseTop;\n\n if (dragItemInContainerVirtualScrollEvent.dragBoundary && dragItemInContainerVirtualScrollEvent.dragBoundaryAcceptMouseLeaveContainer) {\n if (clientX < result.viewport.left) {\n mousePosition.clientX = result.viewport.left;\n }\n if (clientX > result.viewport.width) {\n mousePosition.clientX = result.viewport.width;\n }\n if (clientY < result.viewport.top) {\n mousePosition.clientY = result.viewport.top;\n }\n if (clientY > result.viewport.height) {\n mousePosition.clientY = result.viewport.height;\n }\n }\n dragItemInContainerVirtualScrollEvent.elementDrag.style.left = `${left}px`;\n dragItemInContainerVirtualScrollEvent.elementDrag.style.top = `${top}px`;\n\n this.dragDropService.OnDragging.next({ mousePosition, elementDrag: dragItemInContainerVirtualScrollEvent.elementDrag, elementKeepContainer, itemDragInfo: this.dragDropService.ItemDragInfo });\n }), takeUntil((documentMouseUp)), takeUntil(this.onDestroy)).subscribe();\n\n });\n }\n\n /* FUNCTIONS */\n\n protected getClientPosition(element: HTMLElement, mousePosition: { clientX: number; clientY: number; }, distanceStartElementAndMouseLeft: number, distanceStartElementAndMouseTop: number, dragBoundary?: boolean, elementContainer?: HTMLElement): { clientX: number; clientY: number; elementKeepContainer: boolean; viewport: IBoundingClientRect } {\n let viewport = getViewport() as IBoundingClientRect;\n const rectElement = element.getBoundingClientRect();\n const containerById = this.dragDropService.Container().get(element.getAttribute('groupID') || '');\n const containerItem = elementContainer || containerById?.elementScroll || containerById?.element || document.body;\n let { clientX, clientY } = mousePosition;\n\n viewport.left = 0;\n viewport.top = 0;\n if (dragBoundary) {\n viewport = cloneIBoundingClientRect(containerItem.getBoundingClientRect());\n viewport.height = viewport.top + viewport.height;\n viewport.width = viewport.left + viewport.width;\n }\n let elementKeepContainer = false;\n\n if (clientX > viewport.width && clientY > viewport.height || clientX < viewport.left && clientY < viewport.top) {\n elementKeepContainer = true;\n }\n\n if ((clientX + (rectElement.width - distanceStartElementAndMouseLeft)) > viewport.width) {\n clientX -= (clientX + (rectElement.width - distanceStartElementAndMouseLeft) - viewport.width);\n }\n if ((clientY + (rectElement.height - distanceStartElementAndMouseTop)) > viewport.height) {\n clientY -= (clientY + (rectElement.height - distanceStartElementAndMouseTop) - viewport.height);\n }\n if ((clientX - distanceStartElementAndMouseLeft) < (dragBoundary && containerItem ? viewport.left : 0)) {\n clientX = (dragBoundary && containerItem ? viewport.left : 0) + distanceStartElementAndMouseLeft;\n }\n if ((clientY - distanceStartElementAndMouseTop) < (dragBoundary && containerItem ? viewport.top : 0)) {\n clientY = (dragBoundary && containerItem ? viewport.top : 0) + distanceStartElementAndMouseTop;\n }\n\n return { clientX, clientY, elementKeepContainer, viewport };\n }\n\n protected updateMouseEventsWhenMoveOverIframe(pointerEvents: 'none' | 'auto') {\n const frames = document.getElementsByTagName(\"iframe\");\n\n if (!frames?.length) {\n return;\n }\n\n for (let i = 0; i < frames.length; ++i) {\n frames[i].style.pointerEvents = pointerEvents;\n }\n }\n\n ngOnDestroy(): void {\n this.onDestroy.next();\n this.onDestroy.complete();\n }\n}","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { AfterViewInit, Directive, ElementRef, OnDestroy, effect, inject, input, output, signal } from \"@angular/core\";\nimport { IBoundingClientRect } from \"@libs-ui/interfaces-types\";\nimport { checkMouseOverInContainer, checkViewInScreen, get, getDragEventByElement, getViewport } from \"@libs-ui/utils\";\nimport { fromEvent, takeUntil, tap, throttleTime } from \"rxjs\";\nimport { LibsUiDragItemInContainerVirtualScrollDirective } from \"./drag-item-in-container-virtual-scroll.directive\";\nimport { IDragEnd, IDragLeave, IDragOver, IDragStart, IDrop } from \"./interfaces/event.interface\";\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: \"[LibsUiDragItemDirective]\",\n standalone: true\n})\nexport class LibsUiDragItemDirective extends LibsUiDragItemInContainerVirtualScrollDirective implements AfterViewInit, OnDestroy {\n // #region PROPERTY\n private isDragOver = signal<boolean>(false);\n private isDragging = signal<boolean>(false);\n\n // #region INPUT\n //setup 3 field phía dưới nếu đang sử dụng item trong virtual-scroll \n readonly fieldId = input<string>('');\n readonly item = input<any>(undefined);\n readonly itemInContainerVirtualScroll = input<boolean>();\n //----------------------------------\n readonly throttleTimeHandlerDraggingEvent = input<number, number | undefined>(0, { transform: value => value || 0 });\n readonly ignoreStopEvent = input<boolean>();\n readonly onlyMouseDownStopEvent = input<boolean>();\n readonly dragRootElement = input<boolean>();\n readonly groupName = input<string, string | undefined>('groupDragAndDropDefault', { transform: value => value ?? 'groupDragAndDropDefault' });\n readonly dragBoundary = input<boolean>();\n readonly dragBoundaryAcceptMouseLeaveContainer = input<boolean>();\n readonly elementContainer = input<HTMLElement>();\n readonly zIndex = input<number, number | undefined>(1300, { transform: value => value ?? 1300 });\n readonly disable = input<boolean>();\n\n // #region OUTPUT\n readonly outDragStart = output<IDragStart>();\n readonly outDragOver = output<IDragOver>();\n readonly outDragLeave = output<IDragLeave>();\n readonly outDragEnd = output<IDragEnd>();\n readonly outDropped = output<IDrop>();\n\n // #region INJECT\n private elementRef = inject(ElementRef);\n\n constructor() {\n super();\n effect(() => {\n if (!this.elementRef?.nativeElement) {\n return;\n }\n const element = this.elementRef.nativeElement as HTMLElement;\n\n element.classList.remove(`${this.dragDropService.ClassItemDefine}-disable`);\n if (this.disable() && !element.classList.contains(`${this.dragDropService.ClassItemDefine}-disable`)) {\n element.classList.add(`${this.dragDropService.ClassItemDefine}-disable`);\n }\n });\n }\n\n override ngAfterViewInit() {\n const element = this.elementRef.nativeElement as HTMLElement;\n if (this.fieldId()) {\n element.setAttribute('field_id', this.fieldId());\n if (this.item()) {\n element.setAttribute('item_id', get(this.item(), this.fieldId()));\n }\n }\n element.setAttribute('groupName', this.groupName());\n element.classList.add(this.dragDropService.ClassItemDefine);\n this.dragDropService.OnDragging.pipe(throttleTime(this.throttleTimeHandlerDraggingEvent()), takeUntil(this.onDestroy)).subscribe((eventDragging) => {\n if (this.disable() || element.getAttribute('disableDragContainer') || (this.fieldId() && this.item() && eventDragging.elementDrag.getAttribute('item_id') === get(this.item(), this.fieldId()))) {\n return;\n }\n const containerById = this.dragDropService.Container().get(element.getAttribute('groupID') || '');\n\n if (containerById) {\n if (eventDragging.elementKeepContainer || !this.dragDropService.checkElementOverAcceptElementDrag(containerById.element.getAttribute('groupName'), eventDragging.elementDrag.getAttribute('groupName'), eventDragging.elementDrag.getAttribute('dropToGroupName'))) {\n return;\n }\n }\n if (checkMouseOverInContainer(eventDragging.mousePosition, element) && element !== eventDragging.elementDrag && containerById && checkViewInScreen(containerById.element, element, containerById.elementScroll)) {\n if (this.isDragOver()) {\n return;\n }\n const eventDragOver = { ...eventDragging, elementDragOver: element };\n\n this.dragDropService.OnDragOver.next(eventDragOver);\n this.outDragOver.emit(eventDragOver);\n this.isDragOver.set(true);\n\n return;\n }\n\n if (this.isDragOver()) {\n const eventDragLeave = { ...eventDragging, elementDragLeave: element };\n this.isDragOver.set(false);\n this.dragDropService.OnDragLeave.next(eventDragLeave);\n this.outDragLeave.emit(eventDragLeave);\n }\n });\n\n this.dragDropService.OnDropContainer.pipe(takeUntil(this.onDestroy)).subscribe((eventDrop) => {\n if (eventDrop.elementDrop !== element) {\n return;\n }\n const dropEvent = { elementDrag: eventDrop.elementDrag, elementDrop: element, itemDragInfo: eventDrop.itemDragInfo };\n\n this.outDropped.emit(dropEvent);\n });\n const styleTag = document.createElement(\"style\");\n\n styleTag.textContent = `.libs-ui-drag-drop-item-dragging{cursor:move}`;\n let nodeClone = element;\n let distanceStartElementAndMouseLeft = -1;\n let distanceStartElementAndMouseTop = -1;\n let contextMenu = false;\n const stopEventMouse = (mouseEvent: MouseEvent) => {\n if (!this.ignoreStopEvent()) {\n mouseEvent.preventDefault();\n mouseEvent.stopPropagation();\n }\n };\n const updatePositionElementRootAndRemoveNodeClone = () => {\n if (this.dragRootElement()) {\n const containerById = this.dragDropService.Container().get(element.getAttribute('groupID') || '');\n\n const containerItem = this.elementContainer() || containerById?.elementScroll || containerById?.element || document.body;\n const rectContainer = containerItem.getBoundingClientRect();\n const rectNodeClone = nodeClone.getBoundingClientRect();\n const numberSub = Number((getComputedStyle(containerItem).border.match(/\\d+px/gi) || ['0'])[0].replace(/\\D+/ig, '')).valueOf();\n\n element.style.left = (rectNodeClone.left - rectContainer.left - numberSub) + 'px';\n element.style.top = (rectNodeClone.top - rectContainer.top - numberSub) + 'px';\n element.classList.remove('opacity-0');\n }\n distanceStartElementAndMouseLeft = -1;\n distanceStartElementAndMouseTop = -1;\n nodeClone.remove();\n };\n\n fromEvent(document, 'contextmenu').pipe(\n tap(() => {\n if (this.isDragging()) {\n updatePositionElementRootAndRemoveNodeClone();\n }\n contextMenu = true;\n\n }),\n takeUntil(this.onDestroy)\n ).subscribe();\n\n let ignoreMousedown = false;\n\n getDragEventByElement({\n elementMouseDown: element,\n functionMouseDown: (event: MouseEvent) => {\n this.dragDropService.ItemClick = element;\n contextMenu = false;\n this.updateMouseEventsWhenMoveOverIframe('none');\n if ((this.disable() || element.getAttribute('disableDragContainer') || !this.isDragging() || this.itemInContainerVirtualScroll()) && !this.onlyMouseDownStopEvent()) {\n return;\n }\n stopEventMouse(event);\n },\n functionMouseMove:(event: MouseEvent) =>{\n stopEventMouse(event);\n },\n functionMouseUp:(event: MouseEvent) =>{\n this.updateMouseEventsWhenMoveOverIframe('auto');\n this.dragDropService.resetItemClick();\n stopEventMouse(event);\n if (this.disable() || element.getAttribute('disableDragContainer') || contextMenu || !this.isDragging()) {\n contextMenu = false;\n\n return;\n }\n contextMenu = false;\n this.isDragging.set(false);\n element.removeAttribute(this.dragDropService.TargetItemDragFlag);\n if (this.itemInContainerVirtualScroll()) {\n return;\n }\n const mousePosition = { clientX: event.clientX, clientY: event.clientY };\n\n if (this.dragBoundary() && this.dragBoundaryAcceptMouseLeaveContainer()) {\n const result = this.getClientPosition(element, mousePosition, distanceStartElementAndMouseLeft, distanceStartElementAndMouseTop, this.dragBoundary(), this.elementContainer());\n\n mousePosition.clientX = result.clientX;\n mousePosition.clientY = result.clientY;\n }\n const dragEndEvent = { mousePosition, elementDrag: element, itemDragInfo: this.dragDropService.ItemDragInfo };\n\n this.dragDropService.ItemDragInfo = undefined;\n this.dragDropService.OnDragEnd.next(dragEndEvent);\n this.outDragEnd.emit(dragEndEvent);\n\n nodeClone.classList.remove('libs-ui-drag-drop-item-dragging');\n styleTag.remove();\n\n updatePositionElementRootAndRemoveNodeClone();\n },\n onDestroy: this.onDestroy\n }).pipe(tap((dragMouseEvent: MouseEvent) => {\n const rectElement = element.getBoundingClientRect();\n const viewport = getViewport() as IBoundingClientRect;\n\n if (this.disable() || element.getAttribute('disableDragContainer') || !dragMouseEvent.clientX || (!ignoreMousedown && dragMouseEvent.type === 'mousedown' && rectElement.height + rectElement.top >= viewport.height)) {\n\n return;\n }\n const { clientX, clientY } = dragMouseEvent;\n\n if (distanceStartElementAndMouseLeft === -1) {\n distanceStartElementAndMouseLeft = clientX - rectElement.left;\n }\n\n if (distanceStartElementAndMouseTop === -1) {\n distanceStartElementAndMouseTop = clientY - rectElement.top;\n }\n })).subscribe(dragMouseEvent => {\n if (this.dragDropService.ItemClick.filter(item => item !== element).some(item => element.contains(item))) {\n return;\n }\n if (this.disable() || element.getAttribute('disableDragContainer') || !dragMouseEvent.clientX || dragMouseEvent.type === 'mousedown' || contextMenu || (this.itemInContainerVirtualScroll() && this.isDragging())) {\n return;\n }\n ignoreMousedown = true;\n const { clientX, clientY } = dragMouseEvent;\n const mousePosition = { clientX, clientY };\n const rectElement = element.getBoundingClientRect();\n\n if (!this.isDragging()) {\n this.isDragging.set(true);\n const eventDragStart = { mousePosition, elementDrag: element, itemDragInfo: this.dragDropService.ItemDragInfo };\n\n element.setAttribute(this.dragDropService.TargetItemDragFlag, 'true');\n this.dragDropService.OnDragStart.next(eventDragStart);\n eventDragStart.itemDragInfo = this.dragDropService.ItemDragInfo;\n this.outDragStart.emit(eventDragStart);\n\n nodeClone = element.cloneNode(true) as HTMLElement;\n nodeClone.style.zIndex = `${this.zIndex()}`;\n nodeClone.classList.add('!fixed');\n nodeClone.classList.remove('libs-ui-drag-drop-item-origin-placeholder');\n nodeClone.classList.remove('libs-ui-drag-drop-item-placeholder');\n nodeClone.appendChild(styleTag);\n nodeClone.classList.add('libs-ui-drag-drop-item-dragging');\n nodeClone.style.width = `${rectElement.width}px`;\n nodeClone.style.height = `${rectElement.height}px`;\n nodeClone.style.left = `${-999}px`;\n nodeClone.style.top = `${-999}px`;\n document.body.append(nodeClone);\n if (this.dragRootElement()) {\n element.classList.add('opacity-0');\n }\n\n if (this.itemInContainerVirtualScroll()) {\n this.dragDropService.OnDragItemInContainerVirtualScroll.next({\n itemDragInfo: this.dragDropService.ItemDragInfo,\n elementDrag: nodeClone,\n distanceStartElementAndMouseTop,\n distanceStartElementAndMouseLeft,\n elementContainer: this.elementContainer(),\n dragBoundary: this.dragBoundary(),\n dragBoundaryAcceptMouseLeaveContainer: this.dragBoundaryAcceptMouseLeaveContainer(),\n ignoreStopEvent: this.ignoreStopEvent()\n });\n\n return;\n }\n }\n const result = this.getClientPosition(nodeClone, mousePosition, distanceStartElementAndMouseLeft, distanceStartElementAndMouseTop, this.dragBoundary(), this.elementContainer());\n\n const elementKeepContainer = result.elementKeepContainer;\n const left = result.clientX - distanceStartElementAndMouseLeft;\n const top = result.clientY - distanceStartElementAndMouseTop;\n\n if (this.dragBoundary() && this.dragBoundaryAcceptMouseLeaveContainer()) {\n if (clientX < result.viewport.left) {\n mousePosition.clientX = result.viewport.left;\n }\n if (clientX > result.viewport.width) {\n mousePosition.clientX = result.viewport.width;\n }\n if (clientY < result.viewport.top) {\n mousePosition.clientY = result.viewport.top;\n }\n if (clientY > result.viewport.height) {\n mousePosition.clientY = result.viewport.height;\n }\n }\n nodeClone.style.left = `${left}px`;\n nodeClone.style.top = `${top}px`;\n\n const eventDragging = { mousePosition, elementDrag: nodeClone, elementKeepContainer, itemDragInfo: this.dragDropService.ItemDragInfo };\n\n this.dragDropService.OnDragging.next(eventDragging);\n });\n }\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@libs-ui/components-drag-drop",
3
- "version": "0.2.158",
3
+ "version": "0.2.160",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^18.2.0",
6
6
  "@angular/core": "^18.2.0"